##// END OF EJS Templates
hgweb: use "nonempty" filter in templates for the changelog message...
hgweb: use "nonempty" filter in templates for the changelog message At least subversion allows empty commit logs which, after conversion, show up as empty fields in hgweb and don't allow selecting the changeset. Using "nonempty" as filter, "(none)" is used to get clickable links for empty commit messages.

File last commit:

r8235:89bc3946 default
r8235:89bc3946 default
Show More
graph.tmpl
134 lines | 3.9 KiB | application/x-cheetah | CheetahLexer
{header}
<title>{repo|escape}: revision graph</title>
<link rel="alternate" type="application/atom+xml"
href="{url}atom-log" title="Atom feed for {repo|escape}: log" />
<link rel="alternate" type="application/rss+xml"
href="{url}rss-log" title="RSS feed for {repo|escape}: log" />
<!--[if IE]><script type="text/javascript" src="{staticurl}excanvas.js"></script><![endif]-->
</head>
<body>
<div class="container">
<div class="menu">
<div class="logo">
<a href="http://www.selenic.com/mercurial/">
<img src="{staticurl}hglogo.png" alt="mercurial" /></a>
</div>
<ul>
<li><a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">log</a></li>
<li class="active">graph</li>
<li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
</ul>
<ul>
<li><a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a></li>
<li><a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">browse</a></li>
</ul>
</div>
<div class="main">
<h2><a href="{url}{sessionvars%urlparameter}">{repo|escape}</a></h2>
<h3>graph</h3>
<form class="search" action="{url}log">
{sessionvars%hiddenformentry}
<p><input name="rev" id="search1" type="text" size="30" /></p>
<div id="hint">find changesets by author, revision,
files, or words in the commit message</div>
</form>
<div class="navigate">
<a href="{url}graph/{rev}{lessvars%urlparameter}">less</a>
<a href="{url}graph/{rev}{morevars%urlparameter}">more</a>
| rev {rev}: {changenav%navgraphentry}
</div>
<noscript><p>The revision graph only works with JavaScript-enabled browsers.</p></noscript>
<div id="wrapper">
<ul id="nodebgs"></ul>
<canvas id="graph" width="224" height="{canvasheight}"></canvas>
<ul id="graphnodes"></ul>
</div>
<script type="text/javascript" src="{staticurl}graph.js"></script>
<script type="text/javascript">
<!-- hide script content
var data = {jsdata|json};
var graph = new Graph();
graph.scale({bg_height});
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 href="{url}rev/_NODEID{sessionvars%urlparameter}" title="_NODEID">_DESC</a>';
revlink += '</span>_TAGS<span class="info">_DATE ago, 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]);
if (cur[3] != '')
item = item.replace(/_DESC/, cur[3]);
else
item = item.replace(/_DESC/, '(none)');
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="branchhead" title="' + cur[6][0] + '">';
tagspan += cur[6][0] + '</span> ';
} else if (!cur[6][1] && cur[6][0] != 'default') {
tagspan += '<span class="branchname" 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="tag">' + tag + '</span> ';
}
}
tagspan += '</span>';
}
item = item.replace(/_TAGS/, tagspan);
return [bg, item];
}
graph.render(data);
// stop hiding script -->
</script>
<div class="navigate">
<a href="{url}graph/{rev}{lessvars%urlparameter}">less</a>
<a href="{url}graph/{rev}{morevars%urlparameter}">more</a>
| rev {rev}: {changenav%navgraphentry}
</div>
</div>
</div>
{footer}