view templates/gitweb/graph.tmpl @ 8235:89bc3946c8f3

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.
author Rocco Rutte <pdmef@gmx.net>
date Mon, 20 Apr 2009 12:10:04 +0200
parents 29c6e71b1c73
children 9f53e203a09b
line wrap: on
line source

#header#
<title>#repo|escape#: Graph</title>
<link rel="alternate" type="application/atom+xml"
   href="{url}atom-log" title="Atom feed for #repo|escape#"/>
<link rel="alternate" type="application/rss+xml"
   href="{url}rss-log" title="RSS feed for #repo|escape#"/>
<!--[if IE]><script type="text/javascript" src="{staticurl}excanvas.js"></script><![endif]-->
</head>
<body>

<div class="page_header">
<a href="http://www.selenic.com/mercurial/" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">#repo|escape#</a> / graph
</div>

<form action="{url}log">
{sessionvars%hiddenformentry}
<div class="search">
<input type="text" name="rev"  />
</div>
</form>
<div class="page_nav">
<a href="{url}summary{sessionvars%urlparameter}">summary</a> |
<a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a> |
<a href="{url}log/#rev#{sessionvars%urlparameter}">changelog</a> |
graph |
<a href="{url}tags{sessionvars%urlparameter}">tags</a> |
<a href="{url}file/#node|short#{sessionvars%urlparameter}">files</a>
<br/>
<a href="{url}graph/{rev}{lessvars%urlparameter}">less</a>
<a href="{url}graph/{rev}{morevars%urlparameter}">more</a>
| #changenav%navgraphentry#<br/>
</div>

<div class="title">&nbsp;</div>

<noscript>The revision graph only works with JavaScript-enabled browsers.</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>
<!-- 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 class="list" href="{url}rev/_NODEID{sessionvars%urlparameter}" title="_NODEID"><b>_DESC</b></a>';
revlink += '</span> _TAGS';
revlink += '<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="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 class="page_nav">
<a href="{url}graph/{rev}{lessvars%urlparameter}">less</a>
<a href="{url}graph/{rev}{morevars%urlparameter}">more</a>
| {changenav%navgraphentry}
</div>

#footer#