summary.html
300 lines
| 10.0 KiB
| text/html
|
HtmlLexer
r183 | <%inherit file="/base/base.html"/> | ||
r362 | |||
r183 | <%def name="title()"> | ||
r362 | ${_('Mercurial Repository Overview')} | ||
r183 | </%def> | ||
r362 | |||
<%def name="breadcrumbs_links()"> | |||
r183 | ${h.link_to(u'Home',h.url('/'))} | ||
r362 | » | ||
r183 | ${h.link_to(c.repo_name,h.url('summary_home',repo_name=c.repo_name))} | ||
r362 | » | ||
r183 | ${_('summary')} | ||
</%def> | |||
r362 | |||
r183 | <%def name="page_nav()"> | ||
r189 | ${self.menu('summary')} | ||
r183 | </%def> | ||
r219 | |||
r362 | <%def name="main()"> | ||
r219 | <script type="text/javascript"> | ||
var E = YAHOO.util.Event; | |||
var D = YAHOO.util.Dom; | |||
E.onDOMReady(function(e){ | |||
id = 'clone_url'; | |||
r362 | E.addListener(id,'click',function(e){ | ||
D.get('clone_url').select(); | |||
}) | |||
r219 | }) | ||
</script> | |||
r362 | <div class="box box-left"> | ||
<!-- box / title --> | |||
<div class="title"> | |||
${self.breadcrumbs()} | |||
</div> | |||
<!-- end box / title --> | |||
<div class="form"> | |||
<div class="fields"> | |||
<div class="field"> | |||
<div class="label"> | |||
<label>${_('Name')}:</label> | |||
</div> | |||
<div class="input-short"> | |||
r447 | <span style="font-size: 1.6em;font-weight: bold">${c.repo_info.name}</span> | ||
r362 | </div> | ||
</div> | |||
<div class="field"> | |||
<div class="label"> | |||
<label>${_('Description')}:</label> | |||
</div> | |||
<div class="input-short"> | |||
${c.repo_info.description} | |||
</div> | |||
</div> | |||
<div class="field"> | |||
<div class="label"> | |||
<label>${_('Contact')}:</label> | |||
</div> | |||
<div class="input-short"> | |||
r400 | <div class="gravatar"> | ||
<img alt="gravatar" src="${h.gravatar_url(c.repo_info.dbrepo.user.email)}"/> | |||
</div> | |||
${_('Username')}: ${c.repo_info.dbrepo.user.username}<br/> | |||
${_('Name')}: ${c.repo_info.dbrepo.user.name} ${c.repo_info.dbrepo.user.lastname}<br/> | |||
${_('Email')}: <a href="mailto:${c.repo_info.dbrepo.user.email}">${c.repo_info.dbrepo.user.email}</a> | |||
r362 | </div> | ||
</div> | |||
<div class="field"> | |||
<div class="label"> | |||
<label>${_('Last change')}:</label> | |||
</div> | |||
<div class="input-short"> | |||
${h.age(c.repo_info.last_change)} - ${h.rfc822date(c.repo_info.last_change)} | |||
</div> | |||
</div> | |||
<div class="field"> | |||
<div class="label"> | |||
<label>${_('Clone url')}:</label> | |||
</div> | |||
<div class="input-short"> | |||
r409 | <input type="text" id="clone_url" readonly="readonly" value="hg clone ${c.clone_repo_url}" size="70"/> | ||
r362 | </div> | ||
</div> | |||
<div class="field"> | |||
<div class="label"> | |||
<label>${_('Download')}:</label> | |||
</div> | |||
<div class="input-short"> | |||
%for cnt,archive in enumerate(c.repo_info._get_archives()): | |||
%if cnt >=1: | |||
| | |||
%endif | |||
${h.link_to(c.repo_info.name+'.'+archive['type'], | |||
h.url('files_archive_home',repo_name=c.repo_info.name, | |||
revision='tip',fileformat=archive['extension']),class_="archive_icon")} | |||
%endfor | |||
</div> | |||
</div> | |||
<div class="field"> | |||
<div class="label"> | |||
<label>${_('Feeds')}:</label> | |||
</div> | |||
<div class="input-short"> | |||
${h.link_to(_('RSS'),h.url('rss_feed_home',repo_name=c.repo_info.name),class_='rss_icon')} | |||
${h.link_to(_('Atom'),h.url('atom_feed_home',repo_name=c.repo_info.name),class_='atom_icon')} | |||
</div> | |||
</div> | |||
</div> | |||
</div> | |||
</div> | |||
r410 | <div class="box box-right" style="min-height:455px"> | ||
r362 | <!-- box / title --> | ||
<div class="title"> | |||
<h5>${_('Last month commit activity')}</h5> | |||
</div> | |||
<div class="table"> | |||
r410 | <div id="commit_history" style="width:560px;height:300px;float:left"></div> | ||
r362 | <div id="legend_data"> | ||
<div id="legend_container"></div> | |||
<div id="legend_choices"> | |||
r379 | <table id="legend_choices_tables" style="font-size:smaller;color:#545454"></table> | ||
r362 | </div> | ||
</div> | |||
<script type="text/javascript"> | |||
(function () { | |||
var datasets = {${c.commit_data|n}}; | |||
var i = 0; | |||
var choiceContainer = YAHOO.util.Dom.get("legend_choices"); | |||
var choiceContainerTable = YAHOO.util.Dom.get("legend_choices_tables"); | |||
for(var key in datasets) { | |||
datasets[key].color = i; | |||
i++; | |||
r410 | choiceContainerTable.innerHTML += '<tr><td>'+ | ||
'<input type="checkbox" name="' + key +'" checked="checked" />' | |||
+datasets[key].label+ | |||
'</td></tr>'; | |||
r362 | }; | ||
r219 | |||
r362 | function plotAccordingToChoices() { | ||
var data = []; | |||
var inputs = choiceContainer.getElementsByTagName("input"); | |||
for(var i=0; i<inputs.length; i++) { | |||
var key = inputs[i].name; | |||
r422 | if (key && datasets[key]){ | ||
if(!inputs[i].checked){ | |||
data.push({label:key,data:[[0,1],]}); | |||
} | |||
else{ | |||
data.push(datasets[key]); | |||
} | |||
} | |||
r362 | }; | ||
if (data.length > 0){ | |||
r410 | |||
r362 | var plot = YAHOO.widget.Flot("commit_history", data, | ||
r390 | { bars: { show: true, align:'center',lineWidth:4 }, | ||
r362 | points: { show: true, radius:0,fill:true }, | ||
legend:{show:true, container:"legend_container"}, | |||
selection: { mode: "xy" }, | |||
r405 | yaxis: {tickDecimals:0}, | ||
r362 | xaxis: { mode: "time", timeformat: "%d",tickSize:[1, "day"],min:${c.ts_min},max:${c.ts_max} }, | ||
grid: { hoverable: true, clickable: true,autoHighlight:true }, | |||
}); | |||
r405 | |||
r362 | 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); | |||
} | |||
YAHOO.util.Dom.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(); | |||
} | |||
r183 | |||
r362 | var previousPoint = null; | ||
plot.subscribe("plothover", function (o) { | |||
var pos = o.pos; | |||
var item = o.item; | |||
//YAHOO.util.Dom.get("x").innerHTML = pos.x.toFixed(2); | |||
//YAHOO.util.Dom.get("y").innerHTML = pos.y.toFixed(2); | |||
if (item) { | |||
if (previousPoint != item.datapoint) { | |||
previousPoint = item.datapoint; | |||
var tooltip = YAHOO.util.Dom.get("tooltip"); | |||
if(tooltip) { | |||
tooltip.parentNode.removeChild(tooltip); | |||
} | |||
var x = item.datapoint.x.toFixed(2); | |||
var y = item.datapoint.y.toFixed(2); | |||
r410 | |||
r362 | if (!item.series.label){ | ||
item.series.label = 'commits'; | |||
} | |||
var d = new Date(x*1000); | |||
var fd = d.getFullYear()+'-'+(d.getMonth()+1)+'-'+d.getDate(); | |||
var nr_commits = parseInt(y); | |||
r410 | |||
var cur_data = datasets[item.series.label].data[item.dataIndex]; | |||
var added = cur_data.added; | |||
var changed = cur_data.changed; | |||
var removed = cur_data.removed; | |||
var nr_commits_suffix = " ${_('commits')} "; | |||
var added_suffix = " ${_('files added')} "; | |||
var changed_suffix = " ${_('files changed')} "; | |||
var removed_suffix = " ${_('files removed')} "; | |||
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')} ";} | |||
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/>'); | |||
r362 | } | ||
} | |||
else { | |||
var tooltip = YAHOO.util.Dom.get("tooltip"); | |||
if(tooltip) { | |||
tooltip.parentNode.removeChild(tooltip); | |||
} | |||
previousPoint = null; | |||
} | |||
}); | |||
r183 | |||
r362 | } | ||
} | |||
YAHOO.util.Event.on(choiceContainer.getElementsByTagName("input"), "click", plotAccordingToChoices); | |||
plotAccordingToChoices(); | |||
})(); | |||
</script> | |||
</div> | |||
</div> | |||
<div class="box"> | |||
<div class="title"> | |||
<div class="breadcrumbs">${h.link_to(_('Last ten changes'),h.url('changelog_home',repo_name=c.repo_name))}</div> | |||
</div> | |||
<div class="table"> | |||
<%include file='../shortlog/shortlog_data.html'/> | |||
r410 | ${h.link_to(_('show more'),h.url('changelog_home',repo_name=c.repo_name))} | ||
r362 | </div> | ||
</div> | |||
<div class="box"> | |||
<div class="title"> | |||
<div class="breadcrumbs">${h.link_to(_('Last ten tags'),h.url('tags_home',repo_name=c.repo_name))}</div> | |||
</div> | |||
<div class="table"> | |||
<%include file='../tags/tags_data.html'/> | |||
r410 | ${h.link_to(_('show more'),h.url('tags_home',repo_name=c.repo_name))} | ||
r362 | </div> | ||
</div> | |||
<div class="box"> | |||
<div class="title"> | |||
<div class="breadcrumbs">${h.link_to(_('Last ten branches'),h.url('branches_home',repo_name=c.repo_name))}</div> | |||
</div> | |||
<div class="table"> | |||
<%include file='../branches/branches_data.html'/> | |||
r410 | ${h.link_to(_('show more'),h.url('branches_home',repo_name=c.repo_name))} | ||
r362 | </div> | ||
</div> | |||
r183 | |||
</%def> |