|
|
<%inherit file="/base/base.html"/>
|
|
|
|
|
|
<%def name="title()">
|
|
|
${_('Repository managment')}
|
|
|
</%def>
|
|
|
<%def name="breadcrumbs()">
|
|
|
${h.link_to(u'Home',h.url('/'))}
|
|
|
/
|
|
|
${h.link_to(c.repo_name,h.url('graph_home',repo_name=c.repo_name))}
|
|
|
/
|
|
|
${_('graph')}
|
|
|
</%def>
|
|
|
<%def name="page_nav()">
|
|
|
<form action="log">
|
|
|
<dl class="search">
|
|
|
<dt><label>Search: </label></dt>
|
|
|
<dd><input type="text" name="rev" /></dd>
|
|
|
</dl>
|
|
|
</form>
|
|
|
|
|
|
${self.menu('graph')}
|
|
|
</%def>
|
|
|
|
|
|
<%def name="main()">
|
|
|
|
|
|
<h2 class="no-link no-border">${_('Graph')} - ${_('showing ')} ${c.size} ${_('revisions')}</h2>
|
|
|
<noscript>${_('The revision graph only works with JavaScript-enabled browsers.')}</noscript>
|
|
|
<div>
|
|
|
${h.form(h.url.current(),method='get')}
|
|
|
${_('Show')}: ${h.text('size',size=10,value=c.size)} ${_('revisions')}
|
|
|
${h.submit('','set')}
|
|
|
${h.end_form()}
|
|
|
</div>
|
|
|
<div id="wrapper">
|
|
|
<ul id="nodebgs"></ul>
|
|
|
<canvas id="graph" width="224" height="${c.canvasheight}"></canvas>
|
|
|
<ul id="graphnodes"></ul>
|
|
|
</div>
|
|
|
|
|
|
<script type="text/javascript" src="/js/graph.js"></script>
|
|
|
<script>
|
|
|
<!-- hide script content
|
|
|
|
|
|
var data = ${c.jsdata|n};
|
|
|
var graph = new Graph();
|
|
|
graph.scale(39);
|
|
|
|
|
|
graph.edge = function(x0, y0, x1, y1, color) {
|
|
|
|
|
|
this.setColor(color, 0.0, 0.65);
|
|
|
this.ctx.beginPath();
|
|
|
this.ctx.moveTo(x0, y0);
|
|
|
this.ctx.lineTo(x1, y1);
|
|
|
this.ctx.stroke();
|
|
|
|
|
|
}
|
|
|
|
|
|
var revlink = '<li style="_STYLE"><span class="desc">';
|
|
|
revlink += '<a class="list" href="/${c.repo_name}/changeset/_NODEID" title="_NODEID"><b>_DESC</b></a>';
|
|
|
revlink += '</span> _TAGS';
|
|
|
revlink += '<span class="info">_DATE, by _USER</span></li>';
|
|
|
|
|
|
graph.vertex = function(x, y, color, parity, cur) {
|
|
|
|
|
|
this.ctx.beginPath();
|
|
|
color = this.setColor(color, 0.25, 0.75);
|
|
|
this.ctx.arc(x, y, radius, 0, Math.PI * 2, true);
|
|
|
this.ctx.fill();
|
|
|
|
|
|
var bg = '<li class="bg parity' + parity + '"></li>';
|
|
|
var left = (this.columns + 1) * this.bg_height;
|
|
|
var nstyle = 'padding-left: ' + left + 'px;';
|
|
|
var item = revlink.replace(/_STYLE/, nstyle);
|
|
|
item = item.replace(/_PARITY/, 'parity' + parity);
|
|
|
item = item.replace(/_NODEID/, cur[0]);
|
|
|
item = item.replace(/_NODEID/, cur[0]);
|
|
|
item = item.replace(/_DESC/, cur[3]);
|
|
|
item = item.replace(/_USER/, cur[4]);
|
|
|
item = item.replace(/_DATE/, cur[5]);
|
|
|
|
|
|
var tagspan = '';
|
|
|
if (cur[7].length || (cur[6][0] != 'default' || cur[6][1])) {
|
|
|
tagspan = '<span class="logtags">';
|
|
|
if (cur[6][1]) {
|
|
|
tagspan += '<span class="branchtag" title="' + cur[6][0] + '">';
|
|
|
tagspan += cur[6][0] + '</span> ';
|
|
|
} else if (!cur[6][1] && cur[6][0] != 'default') {
|
|
|
tagspan += '<span class="inbranchtag" title="' + cur[6][0] + '">';
|
|
|
tagspan += cur[6][0] + '</span> ';
|
|
|
}
|
|
|
if (cur[7].length) {
|
|
|
for (var t in cur[7]) {
|
|
|
var tag = cur[7][t];
|
|
|
tagspan += '<span class="tagtag">' + tag + '</span> ';
|
|
|
}
|
|
|
}
|
|
|
tagspan += '</span>';
|
|
|
}
|
|
|
|
|
|
item = item.replace(/_TAGS/, tagspan);
|
|
|
return [bg, item];
|
|
|
|
|
|
}
|
|
|
|
|
|
graph.render(data);
|
|
|
|
|
|
// stop hiding script -->
|
|
|
</script>
|
|
|
<div>
|
|
|
<h2>${c.pagination.pager('$link_previous ~2~ $link_next')}</h2>
|
|
|
</div>
|
|
|
</%def>
|