##// END OF EJS Templates
simplified task locking, and fixed some bugs for keyworded arguments
simplified task locking, and fixed some bugs for keyworded arguments

File last commit:

r493:2256c78a celery
r502:ac32a026 default
Show More
summary.html
507 lines | 15.5 KiB | text/html | HtmlLexer
moved summary page to its own folder
r183 <%inherit file="/base/base.html"/>
version bump to 0.8...
r362
moved summary page to its own folder
r183 <%def name="title()">
version bump to 0.8...
r362 ${_('Mercurial Repository Overview')}
moved summary page to its own folder
r183 </%def>
version bump to 0.8...
r362
<%def name="breadcrumbs_links()">
moved summary page to its own folder
r183 ${h.link_to(u'Home',h.url('/'))}
version bump to 0.8...
r362 &raquo;
moved summary page to its own folder
r183 ${h.link_to(c.repo_name,h.url('summary_home',repo_name=c.repo_name))}
version bump to 0.8...
r362 &raquo;
moved summary page to its own folder
r183 ${_('summary')}
</%def>
version bump to 0.8...
r362
moved summary page to its own folder
r183 <%def name="page_nav()">
removed search field from templates
r189 ${self.menu('summary')}
moved summary page to its own folder
r183 </%def>
html + css changes, added icons and etc.
r219
version bump to 0.8...
r362 <%def name="main()">
html + css changes, added icons and etc.
r219 <script type="text/javascript">
var E = YAHOO.util.Event;
var D = YAHOO.util.Dom;
E.onDOMReady(function(e){
id = 'clone_url';
version bump to 0.8...
r362 E.addListener(id,'click',function(e){
D.get('clone_url').select();
})
html + css changes, added icons and etc.
r219 })
</script>
version bump to 0.8...
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">
rewrote sorting on main page, to clickable headers....
r447 <span style="font-size: 1.6em;font-weight: bold">${c.repo_info.name}</span>
version bump to 0.8...
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">
webhelpers import bugfix for gravatar...
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>
version bump to 0.8...
r362 </div>
</div>
<div class="field">
<div class="label">
<label>${_('Last change')}:</label>
</div>
<div class="input-short">
Some fixes to summary, and total rewrite of summary graphs implemented more interactive graph....
r487 ${h.age(c.repo_info.last_change)} - ${h.rfc822date(c.repo_info.last_change)}
fixed bug when new repo had no last commiter,...
r489 ${_('by')} ${h.get_changeset_safe(c.repo_info,'tip').author}
Some fixes to summary, and total rewrite of summary graphs implemented more interactive graph....
r487
version bump to 0.8...
r362 </div>
</div>
<div class="field">
<div class="label">
<label>${_('Clone url')}:</label>
</div>
<div class="input-short">
some small template fixes
r409 <input type="text" id="clone_url" readonly="readonly" value="hg clone ${c.clone_repo_url}" size="70"/>
version bump to 0.8...
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>
fixes translations, style updates....
r410 <div class="box box-right" style="min-height:455px">
version bump to 0.8...
r362 <!-- box / title -->
<div class="title">
implemented basic autoupdating statistics fetched from database
r493 <h5>${_('Commit activity by day / author')}</h5>
version bump to 0.8...
r362 </div>
<div class="table">
fixes translations, style updates....
r410 <div id="commit_history" style="width:560px;height:300px;float:left"></div>
rewrote graph plotting, added zooming and json dump insted of stupid string formating.
r486 <div style="clear: both;height: 10px"></div>
<div id="overview" style="width:560px;height:100px;float:left"></div>
<div id="legend_data" style="clear:both;margin-top:10px;">
version bump to 0.8...
r362 <div id="legend_container"></div>
<div id="legend_choices">
fixed min width set....
r379 <table id="legend_choices_tables" style="font-size:smaller;color:#545454"></table>
version bump to 0.8...
r362 </div>
</div>
<script type="text/javascript">
Some fixes to summary, and total rewrite of summary graphs implemented more interactive graph....
r487 /**
* 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];
version bump to 0.8...
r362 var choiceContainer = YAHOO.util.Dom.get("legend_choices");
var choiceContainerTable = YAHOO.util.Dom.get("legend_choices_tables");
Some fixes to summary, and total rewrite of summary graphs implemented more interactive graph....
r487 var plotContainer = YAHOO.util.Dom.get('commit_history');
var overviewContainer = YAHOO.util.Dom.get('overview');
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: {
mode: "time",
timeformat: "%d/%m",
min:from,
max:to,
},
grid: {
hoverable: true,
clickable: true,
autoHighlight:true,
color: "#999"
},
//selection: {mode: "x"}
version bump to 0.8...
r362 };
Some fixes to summary, and total rewrite of summary graphs implemented more interactive graph....
r487 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,},
grid: {color: "#999",},
selection: {mode: "x"}
};
fixes translations, style updates....
r410
Some fixes to summary, and total rewrite of summary graphs implemented more interactive graph....
r487 /**
*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',
}
}
/**
* generate checkboxes accordindly to data
* @param keys
* @returns
*/
function generateCheckboxes(data) {
//append checkboxes
var i = 0;
choiceContainerTable.innerHTML = '';
for(var pos in data) {
data[pos].color = i;
i++;
if(data[pos].label != ''){
choiceContainerTable.innerHTML += '<tr><td>'+
'<input type="checkbox" name="' + data[pos].label +'" checked="checked" />'
+data[pos].label+
'</td></tr>';
}
}
}
/**
* 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);
}
YAHOO.util.Dom.setStyle(div, 'opacity', 0);
div.innerHTML = contents;
div.style.top=(y + 5) + "px";
div.style.left=(x + 5) + "px";
rewrote graph plotting, added zooming and json dump insted of stupid string formating.
r486
Some fixes to summary, and total rewrite of summary graphs implemented more interactive graph....
r487 var anim = new YAHOO.util.Anim(div, {opacity: {to: 0.8}}, 0.2);
anim.animate();
}
/**
* This function will detect if selected period has some changesets 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) {
var data = [];
var keys = [];
for(var key in dataset){
var push = false;
//method1 slow !!
///*
for(var ds in dataset[key].data){
commit_data = dataset[key].data[ds];
//console.log(key);
//console.log(new Date(commit_data.time*1000));
//console.log(new Date(ranges.xaxis.from*1000));
//console.log(new Date(ranges.xaxis.to*1000));
if (commit_data.time >= ranges.xaxis.from && commit_data.time <= ranges.xaxis.to){
push = true;
break;
}
version bump to 0.8...
r362 }
Some fixes to summary, and total rewrite of summary graphs implemented more interactive graph....
r487 //*/
/*//method2 sorted commit data !!!
var first_commit = dataset[key].data[0].time;
var last_commit = dataset[key].data[dataset[key].data.length-1].time;
rewrote graph plotting, added zooming and json dump insted of stupid string formating.
r486
Some fixes to summary, and total rewrite of summary graphs implemented more interactive graph....
r487 console.log(first_commit);
console.log(last_commit);
if (first_commit >= ranges.xaxis.from && last_commit <= ranges.xaxis.to){
push = true;
}
*/
if(push){
data.push(dataset[key]);
}
}
if(data.length >= 1){
return data;
}
else{
//just return dummy data for graph to plot itself
return [getDummyData('')];
}
}
/**
* redraw using new checkbox data
*/
function plotchoiced(e,args){
var cur_data = args[0];
var cur_ranges = args[1];
var new_data = [];
var inputs = choiceContainer.getElementsByTagName("input");
rewrote graph plotting, added zooming and json dump insted of stupid string formating.
r486
Some fixes to summary, and total rewrite of summary graphs implemented more interactive graph....
r487 //show only checked labels
for(var i=0; i<inputs.length; i++) {
var checkbox_key = inputs[i].name;
if(inputs[i].checked){
for(var d in cur_data){
if(cur_data[d].label == checkbox_key){
new_data.push(cur_data[d]);
}
}
}
else{
//push dummy data to not hide the label
new_data.push(getDummyData(checkbox_key));
}
}
var new_options = YAHOO.lang.merge(plot_options, {
xaxis: {
min: cur_ranges.xaxis.from,
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);
plot.subscribe("plotselected", plotselected);
//resubscribe plothover
plot.subscribe("plothover", plothover);
// don't fire event on the overview to prevent eternal loop
overview.setSelection(cur_ranges, true);
}
/**
* plot only selected items from overview
* @param ranges
* @returns
*/
function plotselected(ranges,cur_data) {
//updates the data for new plot
data = getDataAccordingToRanges(ranges);
generateCheckboxes(data);
var new_options = YAHOO.lang.merge(plot_options, {
xaxis: {
min: ranges.xaxis.from,
max: ranges.xaxis.to,
mode:"time",
timeformat: "%d/%m",
}
});
// do the zooming
plot = YAHOO.widget.Flot(plotContainer, data, new_options);
plot.subscribe("plotselected", plotselected);
//resubscribe plothover
plot.subscribe("plothover", plothover);
// don't fire event on the overview to prevent eternal loop
overview.setSelection(ranges, true);
//resubscribe choiced
YAHOO.util.Event.on(choiceContainer.getElementsByTagName("input"), "click", plotchoiced, [data, ranges]);
}
var previousPoint = null;
fixes translations, style updates....
r410
Some fixes to summary, and total rewrite of summary graphs implemented more interactive graph....
r487 function plothover(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);
version bump to 0.8...
r362 }
Some fixes to summary, and total rewrite of summary graphs implemented more interactive graph....
r487 var x = item.datapoint.x.toFixed(2);
var y = item.datapoint.y.toFixed(2);
if (!item.series.label){
item.series.label = 'commits';
version bump to 0.8...
r362 }
Some fixes to summary, and total rewrite of summary graphs implemented more interactive graph....
r487 var d = new Date(x*1000);
var fd = d.toDateString()
var nr_commits = parseInt(y);
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;
var nr_commits_suffix = " ${_('commits')} ";
var added_suffix = " ${_('files added')} ";
var changed_suffix = " ${_('files changed')} ";
var removed_suffix = " ${_('files removed')} ";
moved summary page to its own folder
r183
Some fixes to summary, and total rewrite of summary graphs implemented more interactive graph....
r487
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/>');
}
}
else {
var tooltip = YAHOO.util.Dom.get("tooltip");
if(tooltip) {
tooltip.parentNode.removeChild(tooltip);
}
previousPoint = null;
}
version bump to 0.8...
r362 }
Some fixes to summary, and total rewrite of summary graphs implemented more interactive graph....
r487
/**
* MAIN EXECUTION
*/
var data = getDataAccordingToRanges(initial_ranges);
generateCheckboxes(data);
//main plot
var plot = YAHOO.widget.Flot(plotContainer,data,plot_options);
//overview
var overview = YAHOO.widget.Flot(overviewContainer, overview_dataset, overview_options);
//show initial selection on overview
overview.setSelection(initial_ranges);
plot.subscribe("plotselected", plotselected);
overview.subscribe("plotselected", function (ranges) {
plot.setSelection(ranges);
});
plot.subscribe("plothover", plothover);
version bump to 0.8...
r362
Some fixes to summary, and total rewrite of summary graphs implemented more interactive graph....
r487 YAHOO.util.Event.on(choiceContainer.getElementsByTagName("input"), "click", plotchoiced, [data, initial_ranges]);
}
SummaryPlot(${c.ts_min},${c.ts_max},${c.commit_data|n},${c.overview_data|n});
</script>
version bump to 0.8...
r362
</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'/>
fixes translations, style updates....
r410 ${h.link_to(_('show more'),h.url('changelog_home',repo_name=c.repo_name))}
version bump to 0.8...
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'/>
fixes translations, style updates....
r410 ${h.link_to(_('show more'),h.url('tags_home',repo_name=c.repo_name))}
version bump to 0.8...
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'/>
fixes translations, style updates....
r410 ${h.link_to(_('show more'),h.url('branches_home',repo_name=c.repo_name))}
version bump to 0.8...
r362 </div>
</div>
moved summary page to its own folder
r183
</%def>