changeset 35264:ad0de63e1d6a

hgweb: move common vertex code to Graph.prototype Just to give some context to the return values: vertex() needs to return two HTML elements as strings, <li> to be used as a background and a <li> to be shown in foreground. The latter was made obsolete recently when changesets started to be rendered server-side, but background elements are still useful for now.
author Anton Shestakov <av6@dwimlabs.net>
date Wed, 06 Dec 2017 12:10:16 +0800
parents 9c99541e3d56
children 8fbb2678d8e8
files mercurial/templates/gitweb/graph.tmpl mercurial/templates/monoblue/graph.tmpl mercurial/templates/paper/graph.tmpl mercurial/templates/spartan/graph.tmpl mercurial/templates/static/mercurial.js tests/test-hgweb-commands.t tests/test-hgweb-empty.t
diffstat 7 files changed, 27 insertions(+), 95 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/templates/gitweb/graph.tmpl	Wed Dec 06 12:01:07 2017 +0800
+++ b/mercurial/templates/gitweb/graph.tmpl	Wed Dec 06 12:10:16 2017 +0800
@@ -50,22 +50,8 @@
 graph.scale({bg_height});
 
 graph.vertex = function(x, y, radius, 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.bg_height - this.box_size) + (this.columns + 1) * this.box_size;
-	
-	var item = document.querySelector('[data-node="' + cur.node + '"]');
-	if (item) \{
-		item.style.paddingLeft = left + 'px';
-	}
-	
-	return [bg, ''];
-	
+	Graph.prototype.vertex.apply(this, arguments);
+	return ['<li class="bg parity' + parity + '"></li>', ''];
 }
 
 graph.render(data);
--- a/mercurial/templates/monoblue/graph.tmpl	Wed Dec 06 12:01:07 2017 +0800
+++ b/mercurial/templates/monoblue/graph.tmpl	Wed Dec 06 12:10:16 2017 +0800
@@ -44,22 +44,8 @@
     graph.scale({bg_height});
 
     graph.vertex = function(x, y, radius, 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.bg_height - this.box_size) + (this.columns + 1) * this.box_size;
-
-        var item = document.querySelector('[data-node="' + cur.node + '"]');
-        if (item) \{
-            item.style.paddingLeft = left + 'px';
-        }
-
-        return [bg, ''];
-
+        Graph.prototype.vertex.apply(this, arguments);
+        return ['<li class="bg parity' + parity + '"></li>', ''];
     }
 
     graph.render(data);
--- a/mercurial/templates/paper/graph.tmpl	Wed Dec 06 12:01:07 2017 +0800
+++ b/mercurial/templates/paper/graph.tmpl	Wed Dec 06 12:10:16 2017 +0800
@@ -63,22 +63,8 @@
 graph.scale({bg_height});
 
 graph.vertex = function(x, y, radius, 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"></li>';
-	var left = (this.bg_height - this.box_size) + (this.columns + 1) * this.box_size;
-
-	var item = document.querySelector('[data-node="' + cur.node + '"]');
-	if (item) \{
-		item.style.paddingLeft = left + 'px';
-	}
-	
-	return [bg, ''];
-	
+	Graph.prototype.vertex.apply(this, arguments);
+	return ['<li class="bg"></li>', ''];
 }
 
 graph.render(data);
--- a/mercurial/templates/spartan/graph.tmpl	Wed Dec 06 12:01:07 2017 +0800
+++ b/mercurial/templates/spartan/graph.tmpl	Wed Dec 06 12:10:16 2017 +0800
@@ -44,21 +44,8 @@
 graph.scale({bg_height});
 
 graph.vertex = function(x, y, radius, 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.bg_height - this.box_size) + (this.columns + 1) * this.box_size;
-	var item = document.querySelector('[data-node="' + cur.node + '"]');
-	if (item) \{
-		item.style.paddingLeft = left + 'px';
-	}
-
-	return [bg, ''];
-	
+	Graph.prototype.vertex.apply(this, arguments);
+	return ['<li class="bg parity' + parity + '"></li>', ''];
 }
 
 graph.render(data);
--- a/mercurial/templates/static/mercurial.js	Wed Dec 06 12:01:07 2017 +0800
+++ b/mercurial/templates/static/mercurial.js	Wed Dec 06 12:10:16 2017 +0800
@@ -92,6 +92,21 @@
 
 	},
 
+	vertex: function(x, y, radius, color, parity, cur) {
+		this.ctx.beginPath();
+		this.setColor(color, 0.25, 0.75);
+		this.ctx.arc(x, y, radius, 0, Math.PI * 2, true);
+		this.ctx.fill();
+
+		var left = (this.bg_height - this.box_size) + (this.columns + 1) * this.box_size;
+		var item = document.querySelector('[data-node="' + cur.node + '"]');
+		if (item) {
+			item.style.paddingLeft = left + 'px';
+		}
+
+		return ['', ''];
+	},
+
 	render: function(data) {
 
 		var backgrounds = '';
--- a/tests/test-hgweb-commands.t	Wed Dec 06 12:01:07 2017 +0800
+++ b/tests/test-hgweb-commands.t	Wed Dec 06 12:10:16 2017 +0800
@@ -1821,22 +1821,8 @@
   graph.scale(39);
   
   graph.vertex = function(x, y, radius, 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.bg_height - this.box_size) + (this.columns + 1) * this.box_size;
-  	
-  	var item = document.querySelector('[data-node="' + cur.node + '"]');
-  	if (item) {
-  		item.style.paddingLeft = left + 'px';
-  	}
-  	
-  	return [bg, ''];
-  	
+  	Graph.prototype.vertex.apply(this, arguments);
+  	return ['<li class="bg parity' + parity + '"></li>', ''];
   }
   
   graph.render(data);
--- a/tests/test-hgweb-empty.t	Wed Dec 06 12:01:07 2017 +0800
+++ b/tests/test-hgweb-empty.t	Wed Dec 06 12:10:16 2017 +0800
@@ -307,22 +307,8 @@
   graph.scale(39);
   
   graph.vertex = function(x, y, radius, 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"></li>';
-  	var left = (this.bg_height - this.box_size) + (this.columns + 1) * this.box_size;
-  
-  	var item = document.querySelector('[data-node="' + cur.node + '"]');
-  	if (item) {
-  		item.style.paddingLeft = left + 'px';
-  	}
-  	
-  	return [bg, ''];
-  	
+  	Graph.prototype.vertex.apply(this, arguments);
+  	return ['<li class="bg"></li>', ''];
   }
   
   graph.render(data);