hgweb: Fix up non-coal styles to support graph.
authorAugie Fackler <durin42@gmail.com>
Wed, 18 Jun 2008 10:05:43 +0200
changeset 6693 7f58dec6aeb7
parent 6691 0dba955c2636
child 6694 b3602c98c686
hgweb: Fix up non-coal styles to support graph.
templates/changelog.tmpl
templates/changeset.tmpl
templates/fileannotate.tmpl
templates/filediff.tmpl
templates/filelog.tmpl
templates/filerevision.tmpl
templates/gitweb/changelog.tmpl
templates/gitweb/changeset.tmpl
templates/gitweb/fileannotate.tmpl
templates/gitweb/filediff.tmpl
templates/gitweb/filelog.tmpl
templates/gitweb/filerevision.tmpl
templates/gitweb/graph.tmpl
templates/gitweb/manifest.tmpl
templates/gitweb/map
templates/gitweb/search.tmpl
templates/gitweb/shortlog.tmpl
templates/gitweb/summary.tmpl
templates/gitweb/tags.tmpl
templates/graph.tmpl
templates/manifest.tmpl
templates/map
templates/paper/map
templates/search.tmpl
templates/shortlog.tmpl
templates/static/style-gitweb.css
templates/static/style-paper.css
templates/static/style.css
templates/tags.tmpl
--- a/templates/changelog.tmpl	Wed Jun 18 07:06:41 2008 +0200
+++ b/templates/changelog.tmpl	Wed Jun 18 10:05:43 2008 +0200
@@ -9,6 +9,7 @@
 
 <div class="buttons">
 <a href="#url#shortlog/#rev#{sessionvars%urlparameter}">shortlog</a>
+<a href="#url#graph{sessionvars%urlparameter}">graph</a>
 <a href="#url#tags{sessionvars%urlparameter}">tags</a>
 <a href="#url#file/#node|short#{sessionvars%urlparameter}">files</a>
 #archives%archiveentry#
--- a/templates/changeset.tmpl	Wed Jun 18 07:06:41 2008 +0200
+++ b/templates/changeset.tmpl	Wed Jun 18 10:05:43 2008 +0200
@@ -6,6 +6,7 @@
 <div class="buttons">
 <a href="#url#log/#rev#{sessionvars%urlparameter}">changelog</a>
 <a href="#url#shortlog/#rev#{sessionvars%urlparameter}">shortlog</a>
+<a href="#url#graph{sessionvars%urlparameter}">graph</a>
 <a href="#url#tags{sessionvars%urlparameter}">tags</a>
 <a href="#url#file/#node|short#{sessionvars%urlparameter}">files</a>
 <a href="#url#raw-rev/#node|short#">raw</a>
--- a/templates/fileannotate.tmpl	Wed Jun 18 07:06:41 2008 +0200
+++ b/templates/fileannotate.tmpl	Wed Jun 18 10:05:43 2008 +0200
@@ -6,6 +6,7 @@
 <div class="buttons">
 <a href="#url#log/#rev#{sessionvars%urlparameter}">changelog</a>
 <a href="#url#shortlog/#rev#{sessionvars%urlparameter}">shortlog</a>
+<a href="#url#graph{sessionvars%urlparameter}">graph</a>
 <a href="#url#tags{sessionvars%urlparameter}">tags</a>
 <a href="#url#rev/#node|short#{sessionvars%urlparameter}">changeset</a>
 <a href="#url#file/#node|short##path|urlescape#{sessionvars%urlparameter}">files</a>
--- a/templates/filediff.tmpl	Wed Jun 18 07:06:41 2008 +0200
+++ b/templates/filediff.tmpl	Wed Jun 18 10:05:43 2008 +0200
@@ -6,6 +6,7 @@
 <div class="buttons">
 <a href="#url#log/#rev#{sessionvars%urlparameter}">changelog</a>
 <a href="#url#shortlog/#rev#{sessionvars%urlparameter}">shortlog</a>
+<a href="#url#graph{sessionvars%urlparameter}">graph</a>
 <a href="#url#tags{sessionvars%urlparameter}">tags</a>
 <a href="#url#rev/#node|short#{sessionvars%urlparameter}">changeset</a>
 <a href="#url#file/#node|short#/#file|urlescape#{sessionvars%urlparameter}">file</a>
--- a/templates/filelog.tmpl	Wed Jun 18 07:06:41 2008 +0200
+++ b/templates/filelog.tmpl	Wed Jun 18 10:05:43 2008 +0200
@@ -11,6 +11,7 @@
 <div class="buttons">
 <a href="#url#log{sessionvars%urlparameter}">changelog</a>
 <a href="#url#shortlog{sessionvars%urlparameter}">shortlog</a>
+<a href="#url#graph{sessionvars%urlparameter}">graph</a>
 <a href="#url#tags{sessionvars%urlparameter}">tags</a>
 <a href="#url#file/#node|short#/#file|urlescape#{sessionvars%urlparameter}">file</a>
 <a href="#url#annotate/#node|short#/#file|urlescape#{sessionvars%urlparameter}">annotate</a>
--- a/templates/filerevision.tmpl	Wed Jun 18 07:06:41 2008 +0200
+++ b/templates/filerevision.tmpl	Wed Jun 18 10:05:43 2008 +0200
@@ -6,6 +6,7 @@
 <div class="buttons">
 <a href="#url#log/#rev#{sessionvars%urlparameter}">changelog</a>
 <a href="#url#shortlog/#rev#{sessionvars%urlparameter}">shortlog</a>
+<a href="#url#graph{sessionvars%urlparameter}">graph</a>
 <a href="#url#tags{sessionvars%urlparameter}">tags</a>
 <a href="#url#rev/#node|short#{sessionvars%urlparameter}">changeset</a>
 <a href="#url#file/#node|short##path|urlescape#{sessionvars%urlparameter}">files</a>
--- a/templates/gitweb/changelog.tmpl	Wed Jun 18 07:06:41 2008 +0200
+++ b/templates/gitweb/changelog.tmpl	Wed Jun 18 10:05:43 2008 +0200
@@ -19,7 +19,12 @@
 </form>
 
 <div class="page_nav">
-<a href="{url}summary{sessionvars%urlparameter}">summary</a> | <a href="{url}shortlog/#rev#{sessionvars%urlparameter}">shortlog</a> | changelog | <a href="{url}tags{sessionvars%urlparameter}">tags</a> | <a href="{url}file/#node|short#{sessionvars%urlparameter}">files</a>#archives%archiveentry#
+<a href="{url}summary{sessionvars%urlparameter}">summary</a> |
+<a href="{url}shortlog/#rev#{sessionvars%urlparameter}">shortlog</a> |
+changelog |
+<a href="{url}graph{sessionvars%urlparameter}">graph</a> |
+<a href="{url}tags{sessionvars%urlparameter}">tags</a> |
+<a href="{url}file/#node|short#{sessionvars%urlparameter}">files</a>#archives%archiveentry#
 <br/>
 #changenav%naventry#<br/>
 </div>
--- a/templates/gitweb/changeset.tmpl	Wed Jun 18 07:06:41 2008 +0200
+++ b/templates/gitweb/changeset.tmpl	Wed Jun 18 10:05:43 2008 +0200
@@ -12,7 +12,7 @@
 </div>
 
 <div class="page_nav">
-<a href="{url}summary{sessionvars%urlparameter}">summary</a> | <a href="{url}shortlog/#rev#{sessionvars%urlparameter}">shortlog</a> | <a href="{url}log/#rev#{sessionvars%urlparameter}">changelog</a> | <a href="{url}tags{sessionvars%urlparameter}">tags</a> | <a href="{url}file/#node|short#{sessionvars%urlparameter}">files</a> | changeset | <a href="{url}raw-rev/#node|short#">raw</a> #archives%archiveentry#<br/>
+<a href="{url}summary{sessionvars%urlparameter}">summary</a> | <a href="{url}shortlog/#rev#{sessionvars%urlparameter}">shortlog</a> | <a href="{url}log/#rev#{sessionvars%urlparameter}">changelog</a> | <a href="{url}graph{sessionvars%urlparameter}">graph</a> | <a href="{url}tags{sessionvars%urlparameter}">tags</a> | <a href="{url}file/#node|short#{sessionvars%urlparameter}">files</a> | changeset | <a href="{url}raw-rev/#node|short#">raw</a> #archives%archiveentry#<br/>
 </div>
 
 <div>
--- a/templates/gitweb/fileannotate.tmpl	Wed Jun 18 07:06:41 2008 +0200
+++ b/templates/gitweb/fileannotate.tmpl	Wed Jun 18 10:05:43 2008 +0200
@@ -15,6 +15,7 @@
 <a href="{url}summary{sessionvars%urlparameter}">summary</a> |
 <a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a> |
 <a href="{url}log{sessionvars%urlparameter}">changelog</a> |
+<a href="{url}graph{sessionvars%urlparameter}">graph</a> |
 <a href="{url}tags{sessionvars%urlparameter}">tags</a> |
 <a href="{url}file/#node|short##path|urlescape#{sessionvars%urlparameter}">files</a> |
 <a href="{url}rev/#node|short#{sessionvars%urlparameter}">changeset</a> |
--- a/templates/gitweb/filediff.tmpl	Wed Jun 18 07:06:41 2008 +0200
+++ b/templates/gitweb/filediff.tmpl	Wed Jun 18 10:05:43 2008 +0200
@@ -15,6 +15,7 @@
 <a href="{url}summary{sessionvars%urlparameter}">summary</a> |
 <a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a> |
 <a href="{url}log{sessionvars%urlparameter}">changelog</a> |
+<a href="{url}graph{sessionvars%urlparameter}">graph</a> |
 <a href="{url}tags{sessionvars%urlparameter}">tags</a> |
 <a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a> |
 <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
--- a/templates/gitweb/filelog.tmpl	Wed Jun 18 07:06:41 2008 +0200
+++ b/templates/gitweb/filelog.tmpl	Wed Jun 18 10:05:43 2008 +0200
@@ -15,6 +15,7 @@
 <a href="{url}summary{sessionvars%urlparameter}">summary</a> |
 <a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a> |
 <a href="{url}log{sessionvars%urlparameter}">changelog</a> |
+<a href="{url}graph{sessionvars%urlparameter}">graph</a> |
 <a href="{url}tags{sessionvars%urlparameter}">tags</a> |
 <a href="{url}file/{node|short}/#file|urlescape#{sessionvars%urlparameter}">file</a> |
 revisions |
--- a/templates/gitweb/filerevision.tmpl	Wed Jun 18 07:06:41 2008 +0200
+++ b/templates/gitweb/filerevision.tmpl	Wed Jun 18 10:05:43 2008 +0200
@@ -15,6 +15,7 @@
 <a href="{url}summary{sessionvars%urlparameter}">summary</a> |
 <a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a> |
 <a href="{url}log{sessionvars%urlparameter}">changelog</a> |
+<a href="{url}graph{sessionvars%urlparameter}">graph</a> |
 <a href="{url}tags{sessionvars%urlparameter}">tags</a> |
 <a href="{url}file/#node|short##path|urlescape#{sessionvars%urlparameter}">files</a> |
 <a href="{url}rev/#node|short#{sessionvars%urlparameter}">changeset</a> |
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/templates/gitweb/graph.tmpl	Wed Jun 18 10:05:43 2008 +0200
@@ -0,0 +1,113 @@
+#header#
+<title>#repo|escape#: Shortlog</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#"/>
+</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> / shortlog
+</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/{uprev}{sessionvars%urlparameter}?revcount={revcountless}">less</a>
+<a href="{url}graph/{uprev}{sessionvars%urlparameter}?revcount={revcountmore}">more</a>
+| #changenav%navshortentry#<br/>
+</div>
+
+<div class="title">&nbsp;</div>
+
+<div id="noscript">The revision graph only works with JavaScript-enabled browsers.</div>
+
+<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>
+
+document.getElementById('noscript').style.visibility = 'hidden';
+
+data = {jsdata|json};
+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 nodes = document.getElementById('graphnodes');
+var nodebgs = document.getElementById('nodebgs');
+
+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>';
+	nodebgs.innerHTML += bg;
+	
+	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]);
+	if (cur[6].length) {
+		var tagspan = '<span class="logtags">';
+		for (var t in cur[6]) {
+			var tag = cur[6][t];
+			tagspan += '<span class="tagtag">' + tag + '</span> ';
+		}
+		tagspan += '</span>';
+	} else {
+		tagspan = '';
+	}
+	item = item.replace(/_TAGS/, tagspan);
+	nodes.innerHTML += item;
+	
+}
+
+graph.render(data);
+</script>
+
+<div class="page_nav">
+<a href="{url}graph/{uprev}{sessionvars%urlparameter}?revcount={revcountless}">less</a>
+<a href="{url}graph/{uprev}{sessionvars%urlparameter}?revcount={revcountmore}">more</a>
+| {changenav%navshortentry}
+</div>
+
+#footer#
--- a/templates/gitweb/manifest.tmpl	Wed Jun 18 07:06:41 2008 +0200
+++ b/templates/gitweb/manifest.tmpl	Wed Jun 18 10:05:43 2008 +0200
@@ -15,6 +15,7 @@
 <a href="{url}summary{sessionvars%urlparameter}">summary</a> |
 <a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a> |
 <a href="{url}log{sessionvars%urlparameter}">changelog</a> |
+<a href="{url}graph{sessionvars%urlparameter}">graph</a> |
 <a href="{url}tags{sessionvars%urlparameter}">tags</a> |
 files |
 <a href="{url}rev/#node|short#{sessionvars%urlparameter}">changeset</a> #archives%archiveentry#<br/>
--- a/templates/gitweb/map	Wed Jun 18 07:06:41 2008 +0200
+++ b/templates/gitweb/map	Wed Jun 18 10:05:43 2008 +0200
@@ -50,6 +50,7 @@
 filediffchild = '<tr><td>child {rev}</td><td style="font-family:monospace"><a class="list" href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td></tr>'
 filelogchild = '<tr><td align="right">child #rev#:&nbsp;</td><td><a href="{url}file{node|short}/#file|urlescape#{sessionvars%urlparameter}">#node|short#</a></td></tr>'
 shortlog = shortlog.tmpl
+graph = graph.tmpl
 tagtag = '<span class="tagtag" title="{name}">{name}</span> '
 branchtag = '<span class="branchtag" title="{name}">{name}</span> '
 inbranchtag = '<span class="inbranchtag" title="{name}">{name}</span> '
--- a/templates/gitweb/search.tmpl	Wed Jun 18 07:06:41 2008 +0200
+++ b/templates/gitweb/search.tmpl	Wed Jun 18 10:05:43 2008 +0200
@@ -22,6 +22,7 @@
 <a href="{url}summary{sessionvars%urlparameter}">summary</a> |
 <a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a> |
 <a href="{url}log{sessionvars%urlparameter}">changelog</a> |
+<a href="{url}graph{sessionvars%urlparameter}">graph</a> |
 <a href="{url}tags{sessionvars%urlparameter}">tags</a> |
 <a href="{url}file/#node|short#{sessionvars%urlparameter}">files</a>#archives%archiveentry#
 <br/>
--- a/templates/gitweb/shortlog.tmpl	Wed Jun 18 07:06:41 2008 +0200
+++ b/templates/gitweb/shortlog.tmpl	Wed Jun 18 10:05:43 2008 +0200
@@ -21,6 +21,7 @@
 <a href="{url}summary{sessionvars%urlparameter}">summary</a> |
 shortlog |
 <a href="{url}log/#rev#{sessionvars%urlparameter}">changelog</a> |
+<a href="{url}graph{sessionvars%urlparameter}">graph</a> |
 <a href="{url}tags{sessionvars%urlparameter}">tags</a> |
 <a href="{url}file/#node|short#{sessionvars%urlparameter}">files</a>#archives%archiveentry#
 <br/>
--- a/templates/gitweb/summary.tmpl	Wed Jun 18 07:06:41 2008 +0200
+++ b/templates/gitweb/summary.tmpl	Wed Jun 18 10:05:43 2008 +0200
@@ -22,6 +22,7 @@
 summary |
 <a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a> |
 <a href="{url}log{sessionvars%urlparameter}">changelog</a> |
+<a href="{url}graph{sessionvars%urlparameter}">graph</a> |
 <a href="{url}tags{sessionvars%urlparameter}">tags</a> |
 <a href="{url}file/#node|short#{sessionvars%urlparameter}">files</a>#archives%archiveentry#
 <br/>
--- a/templates/gitweb/tags.tmpl	Wed Jun 18 07:06:41 2008 +0200
+++ b/templates/gitweb/tags.tmpl	Wed Jun 18 10:05:43 2008 +0200
@@ -15,6 +15,7 @@
 <a href="{url}summary{sessionvars%urlparameter}">summary</a> |
 <a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a> |
 <a href="{url}log{sessionvars%urlparameter}">changelog</a> |
+<a href="{url}graph{sessionvars%urlparameter}">graph</a> |
 tags |
 <a href="{url}file/#node|short#{sessionvars%urlparameter}">files</a>
 <br/>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/templates/graph.tmpl	Wed Jun 18 10:05:43 2008 +0200
@@ -0,0 +1,95 @@
+#header#
+<title>#repo|escape#: graph</title>
+<link rel="alternate" type="application/atom+xml"
+   href="#url#atom-tags" title="Atom feed for #repo|escape#: tags">
+<link rel="alternate" type="application/rss+xml"
+   href="#url#rss-tags" title="RSS feed for #repo|escape#: tags">
+</head>
+<body>
+
+<div class="buttons">
+<a href="#url#log{sessionvars%urlparameter}">changelog</a>
+<a href="#url#shortlog{sessionvars%urlparameter}">shortlog</a>
+<a href="#url#tags{sessionvars%urlparameter}">tags</a>
+<a href="#url#file/#node|short#/{sessionvars%urlparameter}">files</a>
+</div>
+
+<h2>graph</h2>
+
+<form action="#url#log">
+{sessionvars%hiddenformentry}
+<p>
+<label for="search1">search:</label>
+<input name="rev" id="search1" type="text" size="30">
+navigate: <small class="navigate">#changenav%navshortentry#</small>
+</p>
+</form>
+
+<div id="noscript">The revision graph only works with JavaScript-enabled browsers.</div>
+
+<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>
+
+document.getElementById('noscript').style.visibility = 'hidden';
+
+data = {jsdata|json};
+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 nodes = document.getElementById('graphnodes');
+var nodebgs = document.getElementById('nodebgs');
+
+var revlink = '<li style="_STYLE"><span class="desc">';
+revlink += '<a href="{url}rev/_NODEID{sessionvars%urlparameter}" title="_NODEID">_DESC</a>';
+revlink += '</span><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>';
+	nodebgs.innerHTML += bg;
+	
+	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]);
+	nodes.innerHTML += item;
+	
+}
+
+graph.render(data);
+</script>
+
+<br />
+<small class="navigate">
+<a href="{url}graph/{uprev}{sessionvars%urlparameter}?revcount={revcountless}">less</a>
+<a href="{url}graph/{uprev}{sessionvars%urlparameter}?revcount={revcountmore}">more</a>
+| {changenav%navshortentry}
+</small>
+
+#footer#
--- a/templates/manifest.tmpl	Wed Jun 18 07:06:41 2008 +0200
+++ b/templates/manifest.tmpl	Wed Jun 18 10:05:43 2008 +0200
@@ -6,6 +6,7 @@
 <div class="buttons">
 <a href="#url#log/#rev#{sessionvars%urlparameter}">changelog</a>
 <a href="#url#shortlog/#rev#{sessionvars%urlparameter}">shortlog</a>
+<a href="#url#graph{sessionvars%urlparameter}">graph</a>
 <a href="#url#tags{sessionvars%urlparameter}">tags</a>
 <a href="#url#rev/#node|short#{sessionvars%urlparameter}">changeset</a>
 #archives%archiveentry#
--- a/templates/map	Wed Jun 18 07:06:41 2008 +0200
+++ b/templates/map	Wed Jun 18 10:05:43 2008 +0200
@@ -6,6 +6,7 @@
 changelog = changelog.tmpl
 shortlog = shortlog.tmpl
 shortlogentry = shortlogentry.tmpl
+graph = graph.tmpl
 naventry = '<a href="{url}log/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
 navshortentry = '<a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
 filenaventry = '<a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{label|escape}</a> '
--- a/templates/paper/map	Wed Jun 18 07:06:41 2008 +0200
+++ b/templates/paper/map	Wed Jun 18 10:05:43 2008 +0200
@@ -8,6 +8,7 @@
 changelog = ../coal/shortlog.tmpl
 shortlog = ../coal/shortlog.tmpl
 shortlogentry = ../coal/shortlogentry.tmpl
+graph = ../coal/graph.tmpl
 
 naventry = '<a href="{url}log/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
 navshortentry = '<a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
--- a/templates/search.tmpl	Wed Jun 18 07:06:41 2008 +0200
+++ b/templates/search.tmpl	Wed Jun 18 10:05:43 2008 +0200
@@ -6,6 +6,7 @@
 <div class="buttons">
 <a href="#url#log{sessionvars%urlparameter}">changelog</a>
 <a href="#url#shortlog{sessionvars%urlparameter}">shortlog</a>
+<a href="#url#graph{sessionvars%urlparameter}">graph</a>
 <a href="#url#tags{sessionvars%urlparameter}">tags</a>
 <a href="#url#file/#node|short#{sessionvars%urlparameter}">files</a>
 #archives%archiveentry#
--- a/templates/shortlog.tmpl	Wed Jun 18 07:06:41 2008 +0200
+++ b/templates/shortlog.tmpl	Wed Jun 18 10:05:43 2008 +0200
@@ -9,6 +9,7 @@
 
 <div class="buttons">
 <a href="#url#log/#rev#{sessionvars%urlparameter}">changelog</a>
+<a href="#url#graph{sessionvars%urlparameter}">graph</a>
 <a href="#url#tags{sessionvars%urlparameter}">tags</a>
 <a href="#url#file/#node|short#/{sessionvars%urlparameter}">files</a>
 #archives%archiveentry#
--- a/templates/static/style-gitweb.css	Wed Jun 18 07:06:41 2008 +0200
+++ b/templates/static/style-gitweb.css	Wed Jun 18 10:05:43 2008 +0200
@@ -79,3 +79,44 @@
 	background-color: #d5dde6;
 	border-color: #e3ecf4 #9398f4 #9398f4 #e3ecf4;
 }
+
+/* Graph */
+div#wrapper {
+	position: relative;
+	margin: 0;
+	padding: 0;
+}
+
+canvas {
+	position: absolute;
+	z-index: 5;
+	top: -0.9em;
+	margin: 0;
+}
+
+ul#nodebgs {
+	list-style: none inside none;
+	padding: 0;
+	margin: 0;
+	top: -0.7em;
+}
+ 
+ul#graphnodes li, ul#nodebgs li {
+	height: 39px;
+}
+
+ul#graphnodes {
+	position: absolute;
+	z-index: 10;
+	top: -0.8em;
+	list-style: none inside none;
+	padding: 0;
+}
+
+ul#graphnodes li .info {
+	display: block;
+	font-size: 100%;
+	position: relative;
+	top: -3px;
+	font-style: italic;
+}
--- a/templates/static/style-paper.css	Wed Jun 18 07:06:41 2008 +0200
+++ b/templates/static/style-paper.css	Wed Jun 18 10:05:43 2008 +0200
@@ -150,3 +150,45 @@
   margin: 1em 0 1em 0;
   padding: .3em;
 }
+
+/* Graph */
+div#wrapper {
+	position: relative;
+	border-top: 1px solid black;
+	border-bottom: 1px solid black;
+	margin: 0;
+	padding: 0;
+}
+
+canvas {
+	position: absolute;
+	z-index: 5;
+	top: -0.7em;
+	margin: 0;
+}
+
+ul#nodebgs {
+	list-style: none inside none;
+	padding: 0;
+	margin: 0;
+	top: -0.7em;
+}
+ 
+ul#graphnodes li, ul#nodebgs li {
+	height: 39px;
+}
+
+ul#graphnodes {
+	position: absolute;
+	z-index: 10;
+	top: -1.0em;
+	list-style: none inside none;
+	padding: 0;
+}
+
+ul#graphnodes li .info {
+	display: block;
+	font-size: 70%;
+	position: relative;
+	top: -3px;
+}
--- a/templates/static/style.css	Wed Jun 18 07:06:41 2008 +0200
+++ b/templates/static/style.css	Wed Jun 18 10:05:43 2008 +0200
@@ -64,3 +64,42 @@
 #filediffEntry { }
 #filediffEntry th { font-weight: normal; background-color: #888; color: #fff; text-align: right; }
 
+/* Graph */
+div#wrapper {
+	position: relative;
+	margin: 0;
+	padding: 0;
+}
+
+canvas {
+	position: absolute;
+	z-index: 5;
+	top: -0.6em;
+	margin: 0;
+}
+
+ul#nodebgs {
+	list-style: none inside none;
+	padding: 0;
+	margin: 0;
+	top: -0.7em;
+}
+ 
+ul#graphnodes li, ul#nodebgs li {
+	height: 39px;
+}
+
+ul#graphnodes {
+	position: absolute;
+	z-index: 10;
+	top: -0.85em;
+	list-style: none inside none;
+	padding: 0;
+}
+
+ul#graphnodes li .info {
+	display: block;
+	font-size: 70%;
+	position: relative;
+	top: -1px;
+}
--- a/templates/tags.tmpl	Wed Jun 18 07:06:41 2008 +0200
+++ b/templates/tags.tmpl	Wed Jun 18 10:05:43 2008 +0200
@@ -10,6 +10,7 @@
 <div class="buttons">
 <a href="#url#log{sessionvars%urlparameter}">changelog</a>
 <a href="#url#shortlog{sessionvars%urlparameter}">shortlog</a>
+<a href="#url#graph{sessionvars%urlparameter}">graph</a>
 <a href="#url#file/#node|short#/{sessionvars%urlparameter}">files</a>
 <a type="application/rss+xml" href="#url#rss-tags">rss</a>
 <a type="application/atom+xml" href="#url#atom-tags">atom</a>