##// END OF EJS Templates
Hide add/delete pull request members when you don't have permission for it
Hide add/delete pull request members when you don't have permission for it

File last commit:

r2674:a221706d beta
r2770:74364824 beta
Show More
summary.html
710 lines | 24.3 KiB | text/html | HtmlLexer
renamed project to rhodecode
r547 <%inherit file="/base/base.html"/>
<%def name="title()">
Vincent Duvert
Better i18n for page titles.
r2417 ${_('%s Summary') % c.repo_name} - ${c.rhodecode_name}
renamed project to rhodecode
r547 </%def>
<%def name="breadcrumbs_links()">
Takumi IINO
i18n 'Home' in breadcrumbs
r2492 ${h.link_to(_(u'Home'),h.url('/'))}
White-space cleanup
r1888 &raquo;
changes for #56
r1171 ${h.link_to(c.dbrepo.just_name,h.url('summary_home',repo_name=c.repo_name))}
renamed project to rhodecode
r547 &raquo;
${_('summary')}
</%def>
<%def name="page_nav()">
White-space cleanup
r1888 ${self.menu('summary')}
renamed project to rhodecode
r547 </%def>
added discoverable rss/atom links in pages
r2413 <%def name="head_extra()">
<link href="${h.url('atom_feed_home',repo_name=c.dbrepo.repo_name,api_key=c.rhodecode_user.api_key)}" rel="alternate" title="${_('repo %s ATOM feed') % c.repo_name}" type="application/atom+xml" />
<link href="${h.url('rss_feed_home',repo_name=c.dbrepo.repo_name,api_key=c.rhodecode_user.api_key)}" rel="alternate" title="${_('repo %s RSS feed') % c.repo_name}" type="application/rss+xml" />
</%def>
renamed project to rhodecode
r547 <%def name="main()">
- fixes celery sqlalchemy session issues for async forking...
r1728 <%
summary = lambda n:{False:'summary-short'}.get(n)
%>
optimized summary page for disabled stats
r1719 %if c.show_stats:
<div class="box box-left">
%else:
<div class="box">
%endif
renamed project to rhodecode
r547 <!-- box / title -->
<div class="title">
${self.breadcrumbs()}
</div>
<!-- end box / title -->
<div class="form">
fixed white-space formatting for description in summary page
r1310 <div id="summary" class="fields">
White-space cleanup
r1888
renamed project to rhodecode
r547 <div class="field">
css fixes for new summary page
r1721 <div class="label-summary">
renamed project to rhodecode
r547 <label>${_('Name')}:</label>
</div>
- fixes celery sqlalchemy session issues for async forking...
r1728 <div class="input ${summary(c.show_stats)}">
White-space cleanup
r1888 <div style="float:right;padding:5px 0px 0px 5px">
optimized summary page for disabled stats
r1719 %if c.rhodecode_user.username != 'default':
${h.link_to(_('RSS'),h.url('rss_feed_home',repo_name=c.dbrepo.repo_name,api_key=c.rhodecode_user.api_key),class_='rss_icon')}
${h.link_to(_('ATOM'),h.url('atom_feed_home',repo_name=c.dbrepo.repo_name,api_key=c.rhodecode_user.api_key),class_='atom_icon')}
%else:
${h.link_to(_('RSS'),h.url('rss_feed_home',repo_name=c.dbrepo.repo_name),class_='rss_icon')}
White-space cleanup
r1888 ${h.link_to(_('ATOM'),h.url('atom_feed_home',repo_name=c.dbrepo.repo_name),class_='atom_icon')}
%endif
optimized summary page for disabled stats
r1719 </div>
changes for #56
r1171 %if c.rhodecode_user.username != 'default':
%if c.following:
<span id="follow_toggle" class="following" title="${_('Stop following this repository')}"
onclick="javascript:toggleFollowingRepo(this,${c.dbrepo.repo_id},'${str(h.get_token())}')">
White-space cleanup
r1888 </span>
changes for #56
r1171 %else:
<span id="follow_toggle" class="follow" title="${_('Start following this repository')}"
onclick="javascript:toggleFollowingRepo(this,${c.dbrepo.repo_id},'${str(h.get_token())}')">
</span>
%endif
White-space cleanup
r1888 %endif:
small fixes to summary page
r1180 ##REPO TYPE
optimized speed for browsing git changesets
r1959 %if h.is_hg(c.dbrepo):
unified generation of repo groups choices...
r1547 <img style="margin-bottom:2px" class="icon" title="${_('Mercurial repository')}" alt="${_('Mercurial repository')}" src="${h.url('/images/icons/hgicon.png')}"/>
removed shortlog from main menu, as duplicated functionality of changelog,...
r637 %endif
optimized speed for browsing git changesets
r1959 %if h.is_git(c.dbrepo):
unified generation of repo groups choices...
r1547 <img style="margin-bottom:2px" class="icon" title="${_('Git repository')}" alt="${_('Git repository')}" src="${h.url('/images/icons/giticon.png')}"/>
White-space cleanup
r1888 %endif
##PUBLIC/PRIVATE
another major code rafactor, reimplemented (almost from scratch)...
r1038 %if c.dbrepo.private:
unified generation of repo groups choices...
r1547 <img style="margin-bottom:2px" class="icon" title="${_('private repository')}" alt="${_('private repository')}" src="${h.url('/images/icons/lock.png')}"/>
renamed project to rhodecode
r547 %else:
unified generation of repo groups choices...
r1547 <img style="margin-bottom:2px" class="icon" title="${_('public repository')}" alt="${_('public repository')}" src="${h.url('/images/icons/lock_open.png')}"/>
renamed project to rhodecode
r547 %endif
White-space cleanup
r1888
small fixes to summary page
r1180 ##REPO NAME
implements #285: Implemented non changeable urls for clone url, and web views
r1813 <span class="repo_name" title="${_('Non changable ID %s') % c.dbrepo.repo_id}">${h.repo_link(c.dbrepo.groups_and_repo)}</span>
White-space cleanup
r1888
small fixes to summary page
r1180 ##FORK
%if c.dbrepo.fork:
<div style="margin-top:5px;clear:both"">
implements #215 Repository view uses a README (text/markdown + rst)
r1605 <a href="${h.url('summary_home',repo_name=c.dbrepo.fork.repo_name)}"><img class="icon" alt="${_('public')}" title="${_('Fork of')} ${c.dbrepo.fork.repo_name}" src="${h.url('/images/icons/arrow_divide.png')}"/>
${_('Fork of')} ${c.dbrepo.fork.repo_name}
small fixes to summary page
r1180 </a>
</div>
%endif
##REMOTE
%if c.dbrepo.clone_uri:
<div style="margin-top:5px;clear:both">
implements #215 Repository view uses a README (text/markdown + rst)
r1605 <a href="${h.url(str(h.hide_credentials(c.dbrepo.clone_uri)))}"><img class="icon" alt="${_('remote clone')}" title="${_('Clone from')} ${h.hide_credentials(c.dbrepo.clone_uri)}" src="${h.url('/images/icons/connect.png')}"/>
${_('Clone from')} ${h.hide_credentials(c.dbrepo.clone_uri)}
small fixes to summary page
r1180 </a>
White-space cleanup
r1888 </div>
%endif
renamed project to rhodecode
r547 </div>
</div>
White-space cleanup
r1888
renamed project to rhodecode
r547 <div class="field">
css fixes for new summary page
r1721 <div class="label-summary">
renamed project to rhodecode
r547 <label>${_('Description')}:</label>
</div>
merged + fixed pull request #62: Implemented metatags and visualisation options....
r2674 %if c.visual.stylify_metatags:
<div class="input ${summary(c.show_stats)} desc">${h.urlify_text(h.desc_stylize(c.dbrepo.description))}</div>
%else:
<div class="input ${summary(c.show_stats)} desc">${h.urlify_text(c.dbrepo.description)}</div>
%endif
renamed project to rhodecode
r547 </div>
White-space cleanup
r1888
renamed project to rhodecode
r547 <div class="field">
css fixes for new summary page
r1721 <div class="label-summary">
renamed project to rhodecode
r547 <label>${_('Contact')}:</label>
</div>
- fixes celery sqlalchemy session issues for async forking...
r1728 <div class="input ${summary(c.show_stats)}">
renamed project to rhodecode
r547 <div class="gravatar">
another major code rafactor, reimplemented (almost from scratch)...
r1038 <img alt="gravatar" src="${h.gravatar_url(c.dbrepo.user.email)}"/>
renamed project to rhodecode
r547 </div>
another major code rafactor, reimplemented (almost from scratch)...
r1038 ${_('Username')}: ${c.dbrepo.user.username}<br/>
${_('Name')}: ${c.dbrepo.user.name} ${c.dbrepo.user.lastname}<br/>
${_('Email')}: <a href="mailto:${c.dbrepo.user.email}">${c.dbrepo.user.email}</a>
renamed project to rhodecode
r547 </div>
</div>
White-space cleanup
r1888
renamed project to rhodecode
r547 <div class="field">
css fixes for new summary page
r1721 <div class="label-summary">
renamed project to rhodecode
r547 <label>${_('Clone url')}:</label>
</div>
- fixes celery sqlalchemy session issues for async forking...
r1728 <div class="input ${summary(c.show_stats)}">
implements #285: Implemented non changeable urls for clone url, and web views
r1813 <div style="display:none" id="clone_by_name" class="ui-btn clone">${_('Show by Name')}</div>
<div id="clone_by_id" class="ui-btn clone">${_('Show by ID')}</div>
<input style="width:80%;margin-left:105px" type="text" id="clone_url" readonly="readonly" value="${c.clone_repo_url}"/>
<input style="display:none;width:80%;margin-left:105px" type="text" id="clone_url_id" readonly="readonly" value="${c.clone_repo_url_id}"/>
renamed project to rhodecode
r547 </div>
</div>
White-space cleanup
r1888
renamed project to rhodecode
r547 <div class="field">
css fixes for new summary page
r1721 <div class="label-summary">
some small optimizations on summary page
r1724 <label>${_('Trending files')}:</label>
renamed project to rhodecode
r547 </div>
- fixes celery sqlalchemy session issues for async forking...
r1728 <div class="input ${summary(c.show_stats)}">
optimized summary page for disabled stats
r1719 %if c.show_stats:
<div id="lang_stats"></div>
%else:
White-space cleanup
r1888 ${_('Statistics are disabled for this repository')}
optimized summary page for disabled stats
r1719 %if h.HasPermissionAll('hg.admin')('enable stats on from summary'):
UI !
r1756 ${h.link_to(_('enable'),h.url('edit_repo',repo_name=c.repo_name),class_="ui-btn")}
- fixes celery sqlalchemy session issues for async forking...
r1728 %endif
White-space cleanup
r1888 %endif
added branch/tag options to download links in summary
r942 </div>
</div>
White-space cleanup
r1888
added branch/tag options to download links in summary
r942 <div class="field">
css fixes for new summary page
r1721 <div class="label-summary">
added branch/tag options to download links in summary
r942 <label>${_('Download')}:</label>
</div>
- fixes celery sqlalchemy session issues for async forking...
r1728 <div class="input ${summary(c.show_stats)}">
changes for #56
r1171 %if len(c.rhodecode_repo.revisions) == 0:
fixed error when trying to make download on empty repository
r945 ${_('There are no downloads yet')}
implemented #84 downloads can be enabled/disabled per each repository from now.
r962 %elif c.enable_downloads is False:
${_('Downloads are disabled for this repository')}
optimized summary page for disabled stats
r1719 %if h.HasPermissionAll('hg.admin')('enable downloads on from summary'):
UI !
r1756 ${h.link_to(_('enable'),h.url('edit_repo',repo_name=c.repo_name),class_="ui-btn")}
White-space cleanup
r1888 %endif
fixed error when trying to make download on empty repository
r945 %else:
changes for #56
r1171 ${h.select('download_options',c.rhodecode_repo.get_changeset().raw_id,c.download_options)}
Vincent Duvert
Small addition to render the Download button translatable.
r2415 <span id="${'zip_link'}">${h.link_to(_('Download as zip'), h.url('files_archive_home',repo_name=c.dbrepo.repo_name,fname='tip.zip'),class_="archive_icon ui-btn")}</span>
fixes #214 added support for downloading subrepos in download menu.
r1450 <span style="vertical-align: bottom">
Vladislav Poluhin
label for "with subrepos" checkbox
r1920 <input id="archive_subrepos" type="checkbox" name="subrepos" />
Added h.tooltip to all places that tooltip_title is used....
r2427 <label for="archive_subrepos" class="tooltip" title="${h.tooltip(_('Check this to download archive with subrepos'))}" >${_('with subrepos')}</label>
fixes #214 added support for downloading subrepos in download menu.
r1450 </span>
fixed error when trying to make download on empty repository
r945 %endif
added branch/tag options to download links in summary
r942 </div>
White-space cleanup
r1888 </div>
</div>
added branch/tag options to download links in summary
r942 </div>
renamed project to rhodecode
r547 </div>
optimized summary page for disabled stats
r1719
White-space cleanup
r1888 %if c.show_stats:
renamed project to rhodecode
r547 <div class="box box-right" style="min-height:455px">
<!-- box / title -->
<div class="title">
<h5>${_('Commit activity by day / author')}</h5>
</div>
White-space cleanup
r1888
made rhodecode compatible with 1024px displays
r1247 <div class="graph">
Aras Pranckevicius
UI: percentage of stats gathered doesn't seem like important enough to need a large font
r1981 <div style="padding:0 10px 10px 17px;">
small fixes for summary graph, added message about no data for the graph, when empty
r800 %if c.no_data:
added percentage of progress of gathered commit activity statistics
r1181 ${c.no_data_msg}
enabled quick link to enabling statistics in admin page, for admins
r917 %if h.HasPermissionAll('hg.admin')('enable stats on from summary'):
UI !
r1756 ${h.link_to(_('enable'),h.url('edit_repo',repo_name=c.repo_name),class_="ui-btn")}
White-space cleanup
r1888 %endif
added percentage of progress of gathered commit activity statistics
r1181 %else:
Aras Pranckevicius
UI: percentage of stats gathered doesn't seem like important enough to need a large font
r1981 ${_('Stats gathered: ')} ${c.stats_percentage}%
added percentage of progress of gathered commit activity statistics
r1181 %endif
White-space cleanup
r1888 </div>
made rhodecode compatible with 1024px displays
r1247 <div id="commit_history" style="width:450px;height:300px;float:left"></div>
renamed project to rhodecode
r547 <div style="clear: both;height: 10px"></div>
made rhodecode compatible with 1024px displays
r1247 <div id="overview" style="width:450px;height:100px;float:left"></div>
White-space cleanup
r1888
renamed project to rhodecode
r547 <div id="legend_data" style="clear:both;margin-top:10px;">
<div id="legend_container"></div>
<div id="legend_choices">
implements #215 Repository view uses a README (text/markdown + rst)
r1605 <table id="legend_choices_tables" class="noborder" style="font-size:smaller;color:#545454"></table>
renamed project to rhodecode
r547 </div>
</div>
</div>
White-space cleanup
r1888 </div>
optimized summary page for disabled stats
r1719 %endif
renamed project to rhodecode
r547
White-space cleanup
r1888 <div class="box">
renamed project to rhodecode
r547 <div class="title">
added quickstart page for new repos
r1736 <div class="breadcrumbs">
%if c.repo_changesets:
${h.link_to(_('Shortlog'),h.url('shortlog_home',repo_name=c.repo_name))}
%else:
${_('Quick start')}
%endif
</div>
White-space cleanup
r1888 </div>
renamed project to rhodecode
r547 <div class="table">
removed shortlog from main menu, as duplicated functionality of changelog,...
r637 <div id="shortlog_data">
<%include file='../shortlog/shortlog_data.html'/>
</div>
implements #215 Repository view uses a README (text/markdown + rst)
r1605 </div>
</div>
%if c.readme_data:
added #readme anchor link
r2366 <div id="readme" class="box header-pos-fix" style="background-color: #FAFAFA">
Readme renderer now uses landing_rev parameter to render the readme based on...
r2603 <div id="readme" class="title" title="${_("Readme file at revision '%s'" % c.rhodecode_db_repo.landing_rev)}">
added readme permalink
r2606 <div class="breadcrumbs">
<a href="${h.url('files_home',repo_name=c.repo_name,revision='tip',f_path=c.readme_file)}">${c.readme_file}</a>
<a class="permalink" href="#readme" title="${_('Permalink to this readme')}">&para;</a>
</div>
White-space cleanup
r1888 </div>
added #readme anchor link
r2366 <div id="readme" class="readme">
implements #215 Repository view uses a README (text/markdown + rst)
r1605 <div class="readme_box">
${c.readme_data|n}
</div>
renamed project to rhodecode
r547 </div>
</div>
implements #215 Repository view uses a README (text/markdown + rst)
r1605 %endif
<script type="text/javascript">
optimized summary page for disabled stats
r1719 var clone_url = 'clone_url';
YUE.on(clone_url,'click',function(e){
if(YUD.hasClass(clone_url,'selected')){
return
}
else{
YUD.addClass(clone_url,'selected');
White-space cleanup
r1888 YUD.get(clone_url).select();
optimized summary page for disabled stats
r1719 }
})
implements #285: Implemented non changeable urls for clone url, and web views
r1813 YUE.on('clone_by_name','click',function(e){
// show url by name and hide name button
YUD.setStyle('clone_url','display','');
YUD.setStyle('clone_by_name','display','none');
White-space cleanup
r1888
implements #285: Implemented non changeable urls for clone url, and web views
r1813 // hide url by id and show name button
YUD.setStyle('clone_by_id','display','');
White-space cleanup
r1888 YUD.setStyle('clone_url_id','display','none');
implements #285: Implemented non changeable urls for clone url, and web views
r1813 })
YUE.on('clone_by_id','click',function(e){
White-space cleanup
r1888
implements #285: Implemented non changeable urls for clone url, and web views
r1813 // show url by id and hide id button
YUD.setStyle('clone_by_id','display','none');
YUD.setStyle('clone_url_id','display','');
White-space cleanup
r1888
implements #285: Implemented non changeable urls for clone url, and web views
r1813 // hide url by name and show id button
YUD.setStyle('clone_by_name','display','');
YUD.setStyle('clone_url','display','none');
})
optimized summary page for disabled stats
r1719 var tmpl_links = {};
%for cnt,archive in enumerate(c.rhodecode_repo._get_archives()):
UI !
r1756 tmpl_links["${archive['type']}"] = '${h.link_to('__NAME__', h.url('files_archive_home',repo_name=c.dbrepo.repo_name, fname='__CS__'+archive['extension'],subrepos='__SUB__'),class_='archive_icon ui-btn')}';
optimized summary page for disabled stats
r1719 %endfor
implements #215 Repository view uses a README (text/markdown + rst)
r1605
optimized summary page for disabled stats
r1719 YUE.on(['download_options','archive_subrepos'],'change',function(e){
var sm = YUD.get('download_options');
var new_cs = sm.options[sm.selectedIndex];
White-space cleanup
r1888
optimized summary page for disabled stats
r1719 for(k in tmpl_links){
var s = YUD.get(k+'_link');
Summary page downloads limited to zip....
r1751 if(s){
var title_tmpl = "${_('Download %s as %s') % ('__CS_NAME__','__CS_EXT__')}";
title_tmpl= title_tmpl.replace('__CS_NAME__',new_cs.text);
title_tmpl = title_tmpl.replace('__CS_EXT__',k);
White-space cleanup
r1888
Summary page downloads limited to zip....
r1751 var url = tmpl_links[k].replace('__CS__',new_cs.value);
var subrepos = YUD.get('archive_subrepos').checked;
url = url.replace('__SUB__',subrepos);
url = url.replace('__NAME__',title_tmpl);
s.innerHTML = url
}
optimized summary page for disabled stats
r1719 }
});
</script>
%if c.show_stats:
<script type="text/javascript">
var data = ${c.trending_languages|n};
var total = 0;
var no_data = true;
var tbl = document.createElement('table');
tbl.setAttribute('class','trending_language_tbl');
var cnt = 0;
fixes issue #271...
r1890 for (var i=0;i<data.length;i++){
fixed percentage in stats...
r1940 total+= data[i][1].count;
}
for (var i=0;i<data.length;i++){
optimized summary page for disabled stats
r1719 cnt += 1;
fixes issue #271...
r1890 no_data = false;
code garden
r1908
optimized summary page for disabled stats
r1719 var hide = cnt>2;
var tr = document.createElement('tr');
if (hide){
tr.setAttribute('style','display:none');
tr.setAttribute('class','stats_hidden');
}
fixes issue #271...
r1890 var k = data[i][0];
var obj = data[i][1];
var percentage = Math.round((obj.count/total*100),2);
code garden
r1908
optimized summary page for disabled stats
r1719 var td1 = document.createElement('td');
td1.width = 150;
var trending_language_label = document.createElement('div');
fixes issue #271...
r1890 trending_language_label.innerHTML = obj.desc+" ("+k+")";
optimized summary page for disabled stats
r1719 td1.appendChild(trending_language_label);
implements #215 Repository view uses a README (text/markdown + rst)
r1605
optimized summary page for disabled stats
r1719 var td2 = document.createElement('td');
td2.setAttribute('style','padding-right:14px !important');
var trending_language = document.createElement('div');
fixes issue #271...
r1890 var nr_files = obj.count+" ${_('files')}";
White-space cleanup
r1888
optimized summary page for disabled stats
r1719 trending_language.title = k+" "+nr_files;
White-space cleanup
r1888
optimized summary page for disabled stats
r1719 if (percentage>22){
White-space cleanup
r1888 trending_language.innerHTML = "<b style='font-size:0.8em'>"+percentage+"% "+nr_files+ "</b>";
optimized summary page for disabled stats
r1719 }
else{
trending_language.innerHTML = "<b style='font-size:0.8em'>"+percentage+"%</b>";
}
White-space cleanup
r1888
optimized summary page for disabled stats
r1719 trending_language.setAttribute("class", 'trending_language top-right-rounded-corner bottom-right-rounded-corner');
trending_language.style.width=percentage+"%";
td2.appendChild(trending_language);
White-space cleanup
r1888
optimized summary page for disabled stats
r1719 tr.appendChild(td1);
tr.appendChild(td2);
tbl.appendChild(tr);
if(cnt == 3){
var show_more = document.createElement('tr');
var td = document.createElement('td');
lnk = document.createElement('a');
White-space cleanup
r1888
optimized summary page for disabled stats
r1719 lnk.href='#';
lnk.innerHTML = "${_('show more')}";
lnk.id='code_stats_show_more';
td.appendChild(lnk);
White-space cleanup
r1888
optimized summary page for disabled stats
r1719 show_more.appendChild(td);
show_more.appendChild(document.createElement('td'));
tbl.appendChild(show_more);
}
White-space cleanup
r1888
optimized summary page for disabled stats
r1719 }
YUD.get('lang_stats').appendChild(tbl);
YUE.on('code_stats_show_more','click',function(){
l = YUD.getElementsByClassName('stats_hidden')
for (e in l){
YUD.setStyle(l[e],'display','');
};
YUD.setStyle(YUD.get('code_stats_show_more'),
'display','none');
});
White-space cleanup
r1888 </script>
optimized summary page for disabled stats
r1719 <script type="text/javascript">
/**
* Plots summary graph
*
* @class SummaryPlot
* @param {from} initial from for detailed graph
* @param {to} initial to for detailed graph
* @param {dataset}
* @param {overview_dataset}
*/
function SummaryPlot(from,to,dataset,overview_dataset) {
var initial_ranges = {
"xaxis":{
"from":from,
"to":to,
},
};
var dataset = dataset;
var overview_dataset = [overview_dataset];
var choiceContainer = YUD.get("legend_choices");
var choiceContainerTable = YUD.get("legend_choices_tables");
var plotContainer = YUD.get('commit_history');
var overviewContainer = YUD.get('overview');
White-space cleanup
r1888
optimized summary page for disabled stats
r1719 var plot_options = {
bars: {show:true,align:'center',lineWidth:4},
legend: {show:true, container:"legend_container"},
points: {show:true,radius:0,fill:false},
yaxis: {tickDecimals:0,},
xaxis: {
White-space cleanup
r1888 mode: "time",
optimized summary page for disabled stats
r1719 timeformat: "%d/%m",
min:from,
White-space cleanup
r1888 max:to,
},
optimized summary page for disabled stats
r1719 grid: {
White-space cleanup
r1888 hoverable: true,
optimized summary page for disabled stats
r1719 clickable: true,
autoHighlight:true,
color: "#999"
},
//selection: {mode: "x"}
};
var overview_options = {
legend:{show:false},
bars: {show:true,barWidth: 2,},
shadowSize: 0,
xaxis: {mode: "time", timeformat: "%d/%m/%y",},
yaxis: {ticks: 3, min: 0,tickDecimals:0,},
grid: {color: "#999",},
selection: {mode: "x"}
};
/**
*get dummy data needed in few places
*/
function getDummyData(label){
return {"label":label,
"data":[{"time":0,
"commits":0,
"added":0,
"changed":0,
"removed":0,
}],
"schema":["commits"],
"color":'#ffffff',
implements #215 Repository view uses a README (text/markdown + rst)
r1605 }
optimized summary page for disabled stats
r1719 }
White-space cleanup
r1888
optimized summary page for disabled stats
r1719 /**
* generate checkboxes accordindly to data
* @param keys
* @returns
*/
function generateCheckboxes(data) {
//append checkboxes
var i = 0;
choiceContainerTable.innerHTML = '';
for(var pos in data) {
White-space cleanup
r1888
optimized summary page for disabled stats
r1719 data[pos].color = i;
i++;
if(data[pos].label != ''){
Vladislav Poluhin
labels "commit activity" using format
r1922 choiceContainerTable.innerHTML +=
'<tr><td><input type="checkbox" id="id_user_{0}" name="{0}" checked="checked" /> \
<label for="id_user_{0}">{0}</label></td></tr>'.format(data[pos].label);
optimized summary page for disabled stats
r1719 }
White-space cleanup
r1888 }
optimized summary page for disabled stats
r1719 }
White-space cleanup
r1888
optimized summary page for disabled stats
r1719 /**
* ToolTip show
*/
function showTooltip(x, y, contents) {
var div=document.getElementById('tooltip');
if(!div) {
div = document.createElement('div');
div.id="tooltip";
div.style.position="absolute";
div.style.border='1px solid #fdd';
div.style.padding='2px';
div.style.backgroundColor='#fee';
document.body.appendChild(div);
}
YUD.setStyle(div, 'opacity', 0);
div.innerHTML = contents;
div.style.top=(y + 5) + "px";
div.style.left=(x + 5) + "px";
var anim = new YAHOO.util.Anim(div, {opacity: {to: 0.8}}, 0.2);
anim.animate();
}
White-space cleanup
r1888
optimized summary page for disabled stats
r1719 /**
White-space cleanup
r1888 * This function will detect if selected period has some changesets
optimized summary page for disabled stats
r1719 for this user if it does this data is then pushed for displaying
Additionally it will only display users that are selected by the checkbox
*/
function getDataAccordingToRanges(ranges) {
White-space cleanup
r1888
optimized summary page for disabled stats
r1719 var data = [];
var new_dataset = {};
var keys = [];
var max_commits = 0;
for(var key in dataset){
White-space cleanup
r1888
optimized summary page for disabled stats
r1719 for(var ds in dataset[key].data){
commit_data = dataset[key].data[ds];
if (commit_data.time >= ranges.xaxis.from && commit_data.time <= ranges.xaxis.to){
implements #215 Repository view uses a README (text/markdown + rst)
r1605
optimized summary page for disabled stats
r1719 if(new_dataset[key] === undefined){
White-space cleanup
r1888 new_dataset[key] = {data:[],schema:["commits"],label:key};
optimized summary page for disabled stats
r1719 }
new_dataset[key].data.push(commit_data);
implements #215 Repository view uses a README (text/markdown + rst)
r1605 }
}
optimized summary page for disabled stats
r1719 if (new_dataset[key] !== undefined){
White-space cleanup
r1888 data.push(new_dataset[key]);
implements #215 Repository view uses a README (text/markdown + rst)
r1605 }
optimized summary page for disabled stats
r1719 }
implements #215 Repository view uses a README (text/markdown + rst)
r1605
optimized summary page for disabled stats
r1719 if (data.length > 0){
White-space cleanup
r1888 return data;
optimized summary page for disabled stats
r1719 }
else{
//just return dummy data for graph to plot itself
White-space cleanup
r1888 return [getDummyData('')];
optimized summary page for disabled stats
r1719 }
}
White-space cleanup
r1888
optimized summary page for disabled stats
r1719 /**
* redraw using new checkbox data
*/
function plotchoiced(e,args){
var cur_data = args[0];
var cur_ranges = args[1];
White-space cleanup
r1888
optimized summary page for disabled stats
r1719 var new_data = [];
var inputs = choiceContainer.getElementsByTagName("input");
implements #215 Repository view uses a README (text/markdown + rst)
r1605
optimized summary page for disabled stats
r1719 //show only checked labels
for(var i=0; i<inputs.length; i++) {
var checkbox_key = inputs[i].name;
White-space cleanup
r1888
optimized summary page for disabled stats
r1719 if(inputs[i].checked){
for(var d in cur_data){
if(cur_data[d].label == checkbox_key){
new_data.push(cur_data[d]);
implements #215 Repository view uses a README (text/markdown + rst)
r1605 }
White-space cleanup
r1888 }
optimized summary page for disabled stats
r1719 }
else{
//push dummy data to not hide the label
new_data.push(getDummyData(checkbox_key));
implements #215 Repository view uses a README (text/markdown + rst)
r1605 }
optimized summary page for disabled stats
r1719 }
White-space cleanup
r1888
optimized summary page for disabled stats
r1719 var new_options = YAHOO.lang.merge(plot_options, {
White-space cleanup
r1888 xaxis: {
min: cur_ranges.xaxis.from,
optimized summary page for disabled stats
r1719 max: cur_ranges.xaxis.to,
mode:"time",
timeformat: "%d/%m",
},
});
if (!new_data){
new_data = [[0,1]];
}
// do the zooming
plot = YAHOO.widget.Flot(plotContainer, new_data, new_options);
White-space cleanup
r1888
optimized summary page for disabled stats
r1719 plot.subscribe("plotselected", plotselected);
implements #215 Repository view uses a README (text/markdown + rst)
r1605
optimized summary page for disabled stats
r1719 //resubscribe plothover
plot.subscribe("plothover", plothover);
White-space cleanup
r1888
// don't fire event on the overview to prevent eternal loop
optimized summary page for disabled stats
r1719 overview.setSelection(cur_ranges, true);
}
White-space cleanup
r1888
optimized summary page for disabled stats
r1719 /**
* plot only selected items from overview
* @param ranges
* @returns
*/
function plotselected(ranges,cur_data) {
//updates the data for new plot
var data = getDataAccordingToRanges(ranges);
generateCheckboxes(data);
White-space cleanup
r1888
optimized summary page for disabled stats
r1719 var new_options = YAHOO.lang.merge(plot_options, {
White-space cleanup
r1888 xaxis: {
min: ranges.xaxis.from,
optimized summary page for disabled stats
r1719 max: ranges.xaxis.to,
mode:"time",
timeformat: "%d/%m",
},
});
White-space cleanup
r1888 // do the zooming
optimized summary page for disabled stats
r1719 plot = YAHOO.widget.Flot(plotContainer, data, new_options);
plot.subscribe("plotselected", plotselected);
//resubscribe plothover
plot.subscribe("plothover", plothover);
White-space cleanup
r1888
optimized summary page for disabled stats
r1719 // don't fire event on the overview to prevent eternal loop
overview.setSelection(ranges, true);
White-space cleanup
r1888 //resubscribe choiced
optimized summary page for disabled stats
r1719 YUE.on(choiceContainer.getElementsByTagName("input"), "click", plotchoiced, [data, ranges]);
}
White-space cleanup
r1888
optimized summary page for disabled stats
r1719 var previousPoint = null;
function plothover(o) {
var pos = o.pos;
var item = o.item;
White-space cleanup
r1888
optimized summary page for disabled stats
r1719 //YUD.get("x").innerHTML = pos.x.toFixed(2);
//YUD.get("y").innerHTML = pos.y.toFixed(2);
if (item) {
if (previousPoint != item.datapoint) {
previousPoint = item.datapoint;
White-space cleanup
r1888
optimized summary page for disabled stats
r1719 var tooltip = YUD.get("tooltip");
if(tooltip) {
tooltip.parentNode.removeChild(tooltip);
}
var x = item.datapoint.x.toFixed(2);
var y = item.datapoint.y.toFixed(2);
White-space cleanup
r1888
optimized summary page for disabled stats
r1719 if (!item.series.label){
item.series.label = 'commits';
}
var d = new Date(x*1000);
var fd = d.toDateString()
var nr_commits = parseInt(y);
White-space cleanup
r1888
optimized summary page for disabled stats
r1719 var cur_data = dataset[item.series.label].data[item.dataIndex];
var added = cur_data.added;
var changed = cur_data.changed;
var removed = cur_data.removed;
White-space cleanup
r1888
optimized summary page for disabled stats
r1719 var nr_commits_suffix = " ${_('commits')} ";
var added_suffix = " ${_('files added')} ";
var changed_suffix = " ${_('files changed')} ";
var removed_suffix = " ${_('files removed')} ";
implements #215 Repository view uses a README (text/markdown + rst)
r1605
White-space cleanup
r1888
optimized summary page for disabled stats
r1719 if(nr_commits == 1){nr_commits_suffix = " ${_('commit')} ";}
if(added==1){added_suffix=" ${_('file added')} ";}
if(changed==1){changed_suffix=" ${_('file changed')} ";}
if(removed==1){removed_suffix=" ${_('file removed')} ";}
White-space cleanup
r1888
optimized summary page for disabled stats
r1719 showTooltip(item.pageX, item.pageY, item.series.label + " on " + fd
+'<br/>'+
nr_commits + nr_commits_suffix+'<br/>'+
added + added_suffix +'<br/>'+
changed + changed_suffix + '<br/>'+
removed + removed_suffix + '<br/>');
implements #215 Repository view uses a README (text/markdown + rst)
r1605 }
optimized summary page for disabled stats
r1719 }
else {
var tooltip = YUD.get("tooltip");
White-space cleanup
r1888
optimized summary page for disabled stats
r1719 if(tooltip) {
tooltip.parentNode.removeChild(tooltip);
}
previousPoint = null;
}
}
White-space cleanup
r1888
optimized summary page for disabled stats
r1719 /**
* MAIN EXECUTION
*/
White-space cleanup
r1888
var data = getDataAccordingToRanges(initial_ranges);
optimized summary page for disabled stats
r1719 generateCheckboxes(data);
White-space cleanup
r1888
//main plot
optimized summary page for disabled stats
r1719 var plot = YAHOO.widget.Flot(plotContainer,data,plot_options);
White-space cleanup
r1888
//overview
var overview = YAHOO.widget.Flot(overviewContainer,
optimized summary page for disabled stats
r1719 overview_dataset, overview_options);
White-space cleanup
r1888
//show initial selection on overview
overview.setSelection(initial_ranges);
optimized summary page for disabled stats
r1719 plot.subscribe("plotselected", plotselected);
plot.subscribe("plothover", plothover)
White-space cleanup
r1888
optimized summary page for disabled stats
r1719 overview.subscribe("plotselected", function (ranges) {
plot.setSelection(ranges);
White-space cleanup
r1888 });
implements #215 Repository view uses a README (text/markdown + rst)
r1605
optimized summary page for disabled stats
r1719 // user choices on overview
YUE.on(choiceContainer.getElementsByTagName("input"), "click", plotchoiced, [data, initial_ranges]);
}
White-space cleanup
r1888 SummaryPlot(${c.ts_min},${c.ts_max},${c.commit_data|n},${c.overview_data|n});
optimized summary page for disabled stats
r1719 </script>
%endif
renamed project to rhodecode
r547
White-space cleanup
r1888 </%def>