##// END OF EJS Templates
Removed tag v0.1.0
Removed tag v0.1.0

File last commit:

r509:b50e79b4 default
r515:4d8d04b0 default
Show More
summary.html
568 lines | 17.4 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>
fixed lock decorator bug which didn't release the lock after func execution and rewrote the pidlock a little with Ask Solem suggestions!...
r506
<div class="field">
<div class="label">
<label>${_('Trending languages')}:</label>
</div>
<div class="input-short">
<div id="lang_stats">
</div>
<script type="text/javascript">
var data = ${c.trending_languages|n};
var total = 0;
var no_data = true;
for (k in data){
total += data[k];
no_data = false;
}
var tbl = document.createElement('table');
tbl.setAttribute('class','trending_language_tbl');
for (k in data){
var tr = document.createElement('tr');
var percentage = Math.round((data[k]/total*100),2);
var value = data[k];
var td1 = document.createElement('td');
td1.width=150;
var trending_language_label = document.createElement('div');
trending_language_label.innerHTML = k;
td1.appendChild(trending_language_label);
var td2 = document.createElement('td');
var trending_language = document.createElement('div');
trending_language.title = k;
trending_language.innerHTML = "<b>"+value+" ${_('files')} - "+percentage+" %</b>";
trending_language.setAttribute("class", 'trending_language');
trending_language.style.width=percentage+"%";
td2.appendChild(trending_language);
tr.appendChild(td1);
tr.appendChild(td2);
tbl.appendChild(tr);
//YAHOO.util.Dom.get('lang_stats').appendChild(trending_language_label);
}
if(no_data){
var tr = document.createElement('tr');
var td1 = document.createElement('td');
fixes to pidlock, to not raise unneded execptions...
r509 td1.innerHTML = "${_('No data loaded yet')}";
fixed lock decorator bug which didn't release the lock after func execution and rewrote the pidlock a little with Ask Solem suggestions!...
r506 tr.appendChild(td1);
tbl.appendChild(tr);
}
YAHOO.util.Dom.get('lang_stats').appendChild(tbl);
</script>
</div>
</div>
version bump to 0.8...
r362 <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 to pidlock, to not raise unneded execptions...
r509 %if c.repo_changesets:
${h.link_to(_('show more'),h.url('changelog_home',repo_name=c.repo_name))}
%endif
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 to pidlock, to not raise unneded execptions...
r509 %if c.repo_changesets:
${h.link_to(_('show more'),h.url('tags_home',repo_name=c.repo_name))}
%endif
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 to pidlock, to not raise unneded execptions...
r509 %if c.repo_changesets:
${h.link_to(_('show more'),h.url('branches_home',repo_name=c.repo_name))}
%endif
version bump to 0.8...
r362 </div>
</div>
moved summary page to its own folder
r183
</%def>