##// END OF EJS Templates
top menu: make 'alt' texts / tool tips more descriptive
top menu: make 'alt' texts / tool tips more descriptive

File last commit:

r3286:e267b8e9 beta
r3287:171ec11e beta
Show More
summary.html
727 lines | 25.9 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;
#551 show breadcrumbs in summary view for repositories inside a group
r2811 ${h.repo_link(c.dbrepo.groups_and_repo)}
renamed project to rhodecode
r547 &raquo;
${_('summary')}
</%def>
<%def name="page_nav()">
Mads Kiilerich
html: don't use tabs
r3197 ${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 -->
Mads Kiilerich
html: don't use tabs
r3197 <div class="form">
<div id="summary" class="fields">
White-space cleanup
r1888
Mads Kiilerich
html: don't use tabs
r3197 <div class="field">
<div class="label-summary">
<label>${_('Name')}:</label>
</div>
<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:
add locking state icon into summary page
r2932 <span id="follow_toggle" class="following tooltip" title="${_('Stop following this repository')}"
changes for #56
r1171 onclick="javascript:toggleFollowingRepo(this,${c.dbrepo.repo_id},'${str(h.get_token())}')">
White-space cleanup
r1888 </span>
changes for #56
r1171 %else:
add locking state icon into summary page
r2932 <span id="follow_toggle" class="follow tooltip" title="${_('Start following this repository')}"
changes for #56
r1171 onclick="javascript:toggleFollowingRepo(this,${c.dbrepo.repo_id},'${str(h.get_token())}')">
</span>
%endif
implemented #83 show repo size on summary page
r3246 <div style="float:right;padding:0px 0px 0px 0px">
<span class="reposize tooltip" title="${_('Click to show size of repository')}"
onclick="javascript:showRepoSize('repo_size','${c.dbrepo.repo_name}','${str(h.get_token())}')">
</span>
<span id="repo_size"></span>
Mads Kiilerich
coding style: fix trailing and leading spaces and tabs
r3267 </div>
White-space cleanup
r1888 %endif:
whitespace cleanup
r2973
add locking state icon into summary page
r2932 ## locking icon
%if c.rhodecode_db_repo.enable_locking:
%if c.rhodecode_db_repo.locked[0]:
whitespace cleanup
r2973 <span class="locking_locked tooltip" title="${_('Repository locked by %s') % h.person_by_id(c.rhodecode_db_repo.locked[0])}"></span>
add locking state icon into summary page
r2932 %else:
<span class="locking_unlocked tooltip" title="${_('Repository unlocked')}"></span>
%endif
whitespace cleanup
r2973 %endif
small fixes to summary page
r1180 ##REPO TYPE
Mads Kiilerich
html: don't use tabs
r3197 %if h.is_hg(c.dbrepo):
<img style="margin-bottom:2px" class="icon" title="${_('Mercurial repository')}" alt="${_('Mercurial repository')}" src="${h.url('/images/icons/hgicon.png')}"/>
%endif
%if h.is_git(c.dbrepo):
<img style="margin-bottom:2px" class="icon" title="${_('Git repository')}" alt="${_('Git repository')}" src="${h.url('/images/icons/giticon.png')}"/>
%endif
White-space cleanup
r1888
##PUBLIC/PRIVATE
Mads Kiilerich
html: don't use tabs
r3197 %if c.dbrepo.private:
<img style="margin-bottom:2px" class="icon" title="${_('private repository')}" alt="${_('private repository')}" src="${h.url('/images/icons/lock.png')}"/>
%else:
<img style="margin-bottom:2px" class="icon" title="${_('public repository')}" alt="${_('public repository')}" src="${h.url('/images/icons/lock_open.png')}"/>
%endif
White-space cleanup
r1888
Mads Kiilerich
html: don't use tabs
r3197 ##REPO NAME
<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
Mads Kiilerich
html: don't use tabs
r3197 %if c.dbrepo.fork:
<div style="margin-top:5px;clear:both"">
<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}
</a>
</div>
%endif
##REMOTE
%if c.dbrepo.clone_uri:
small fixes to summary page
r1180 <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>
Mads Kiilerich
html: don't use tabs
r3197 %endif
</div>
</div>
White-space cleanup
r1888
Mads Kiilerich
html: don't use tabs
r3197 <div class="field">
<div class="label-summary">
<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>
White space cleanup
r2815 %endif
Mads Kiilerich
html: don't use tabs
r3197 </div>
White-space cleanup
r1888
Mads Kiilerich
html: don't use tabs
r3197 <div class="field">
<div class="label-summary">
<label>${_('Contact')}:</label>
</div>
<div class="input ${summary(c.show_stats)}">
<div class="gravatar">
<img alt="gravatar" src="${h.gravatar_url(c.dbrepo.user.email)}"/>
</div>
${_('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>
</div>
</div>
White-space cleanup
r1888
Mads Kiilerich
html: don't use tabs
r3197 <div class="field">
<div class="label-summary">
<label>${_('Clone url')}:</label>
</div>
<div class="input ${summary(c.show_stats)}">
Mads Kiilerich
summary: show "Show by ID" toggler after the clone url...
r3286 <input style="width:80%" type="text" id="clone_url" readonly="readonly" value="${c.clone_repo_url}"/>
<input style="display:none;width:80%" type="text" id="clone_url_id" readonly="readonly" value="${c.clone_repo_url_id}"/>
<div style="display:none" id="clone_by_name" class="ui-btn clone">${_('Show by Name')}</div>
implements #285: Implemented non changeable urls for clone url, and web views
r1813 <div id="clone_by_id" class="ui-btn clone">${_('Show by ID')}</div>
Mads Kiilerich
html: don't use tabs
r3197 </div>
</div>
White-space cleanup
r1888
Mads Kiilerich
html: don't use tabs
r3197 <div class="field">
<div class="label-summary">
<label>${_('Trending files')}:</label>
</div>
<div class="input ${summary(c.show_stats)}">
optimized summary page for disabled stats
r1719 %if c.show_stats:
Mads Kiilerich
html: don't use tabs
r3197 <div id="lang_stats"></div>
optimized summary page for disabled stats
r1719 %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
Mads Kiilerich
html: don't use tabs
r3197 </div>
</div>
White-space cleanup
r1888
Mads Kiilerich
html: don't use tabs
r3197 <div class="field">
<div class="label-summary">
<label>${_('Download')}:</label>
</div>
<div class="input ${summary(c.show_stats)}">
%if len(c.rhodecode_repo.revisions) == 0:
${_('There are no downloads yet')}
%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
Mads Kiilerich
html: don't use tabs
r3197 %else:
${h.select('download_options',c.rhodecode_repo.get_changeset().raw_id,c.download_options)}
<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>
Mads Kiilerich
html: don't use tabs
r3197 %endif
</div>
</div>
</div>
</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
Mads Kiilerich
html: don't use tabs
r3197 <div id="legend_data" style="clear:both;margin-top:10px;">
<div id="legend_container"></div>
<div id="legend_choices">
<table id="legend_choices_tables" class="noborder" style="font-size:smaller;color:#545454"></table>
</div>
</div>
renamed project to rhodecode
r547 </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:
Mads Kiilerich
summary: "shortlog" is not a word ... and the changelog is always better
r3285 ${h.link_to(_('Latest changes'),h.url('changelog_home',repo_name=c.repo_name))}
added quickstart page for new repos
r1736 %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:
small anchor cleanup...
r2990 <div id="readme" class="anchor">
<div class="box" style="background-color: #FAFAFA">
<div 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>
small anchor cleanup...
r2990 <div 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>
small anchor cleanup...
r2990 </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
Mads Kiilerich
html: don't use tabs
r3197 // show url by id and hide id button
YUD.setStyle('clone_by_id','display','none');
implements #285: Implemented non changeable urls for clone url, and web views
r1813 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
Mads Kiilerich
html: don't use tabs
r3197 YUD.setStyle('clone_by_name','display','');
YUD.setStyle('clone_url','display','none');
implements #285: Implemented non changeable urls for clone url, and web views
r1813 })
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++){
Mads Kiilerich
html: don't use tabs
r3197 total+= data[i][1].count;
fixed percentage in stats...
r1940 }
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>