##// END OF EJS Templates
bring back cached Repo() instance due to some other issues it generated
bring back cached Repo() instance due to some other issues it generated

File last commit:

r2948:bd97aba2 beta
r3046:be781af4 beta
Show More
graph.js
123 lines | 3.1 KiB | application/javascript | JavascriptLexer
renamed project to rhodecode
r547 // branch_renderer.js - Rendering of branch DAGs on the client side
//
// Copyright 2010 Marcin Kuzminski <marcin AT python-works DOT com>
// Copyright 2008 Jesper Noehr <jesper AT noehr DOT org>
// Copyright 2008 Dirkjan Ochtman <dirkjan AT ochtman DOT nl>
// Copyright 2006 Alexander Schremmer <alex AT alexanderweb DOT de>
//
// derived from code written by Scott James Remnant <scott@ubuntu.com>
// Copyright 2005 Canonical Ltd.
//
// This software may be used and distributed according to the terms
// of the GNU General Public License, incorporated herein by reference.
var colors = [
[ 1.0, 0.0, 0.0 ],
[ 1.0, 1.0, 0.0 ],
[ 0.0, 1.0, 0.0 ],
[ 0.0, 1.0, 1.0 ],
[ 0.0, 0.0, 1.0 ],
[ 1.0, 0.0, 1.0 ],
[ 1.0, 1.0, 0.0 ],
[ 0.0, 0.0, 0.0 ]
];
function BranchRenderer() {
this.canvas = document.getElementById("graph_canvas");
if (navigator.userAgent.indexOf('MSIE') >= 0)
this.canvas = window.G_vmlCanvasManager.initElement(this.canvas);
this.ctx = this.canvas.getContext('2d');
this.ctx.strokeStyle = 'rgb(0, 0, 0)';
this.ctx.fillStyle = 'rgb(0, 0, 0)';
this.cur = [0, 0];
Aras Pranckevicius
graph: thinner lines/circles
r2948 this.line_width = 2.0;
this.dot_radius = 3.5;
renamed project to rhodecode
r547
this.setColor = function(color, bg, fg) {
color %= colors.length;
var red = (colors[color][0] * fg) || bg;
var green = (colors[color][1] * fg) || bg;
var blue = (colors[color][2] * fg) || bg;
red = Math.round(red * 255);
green = Math.round(green * 255);
blue = Math.round(blue * 255);
var s = 'rgb(' + red + ', ' + green + ', ' + blue + ')';
this.ctx.strokeStyle = s;
this.ctx.fillStyle = s;
}
Aras Pranckevicius
graph: fix counting of "heads" for graph, condense graph into more narrow lines instead of trying to increase its width (past certain width produces really bad html layout)
r2924 this.render = function(data,canvasWidth,lineCount) {
renamed project to rhodecode
r547 var idx = 1;
var rela = document.getElementById('graph');
Aras Pranckevicius
graph: replaced some super complicated looking math with something that tries to make sense
r2923
Aras Pranckevicius
graph: fix counting of "heads" for graph, condense graph into more narrow lines instead of trying to increase its width (past certain width produces really bad html layout)
r2924 if (lineCount == 0)
lineCount = 1;
var edge_pad = this.dot_radius + 2;
var box_size = Math.min(18, Math.floor((canvasWidth - edge_pad*2)/(lineCount)));
var base_x = canvasWidth - edge_pad;
UI fixes...
r1865
renamed project to rhodecode
r547 for (var i in data) {
UI fixes...
r1865
renamed project to rhodecode
r547 var row = document.getElementById("chg_"+idx);
Aras Pranckevicius
graph: fix null check lost in last merge
r1880 if (row == null)
continue;
Aras Pranckevicius
graph: make it handle different row heights while still doing dots in the middle of each row
r1873 var next = document.getElementById("chg_"+(idx+1));
renamed project to rhodecode
r547 var extra = 0;
cur = data[i];
node = cur[1];
in_l = cur[2];
UI fixes...
r1865
Aras Pranckevicius
graph: make it handle different row heights while still doing dots in the middle of each row
r1873 var rowY = row.offsetTop + row.offsetHeight/2 - rela.offsetTop;
var nextY = (next == null) ? rowY + row.offsetHeight/2 : next.offsetTop + next.offsetHeight/2 - rela.offsetTop;
UI fixes...
r1865
renamed project to rhodecode
r547 for (var j in in_l) {
line = in_l[j];
Aras Pranckevicius
graph: fix counting of "heads" for graph, condense graph into more narrow lines instead of trying to increase its width (past certain width produces really bad html layout)
r2924 start = line[0];
end = line[1];
renamed project to rhodecode
r547 color = line[2];
this.setColor(color, 0.0, 0.65);
Aras Pranckevicius
merge upstream (keeping my graph.js changes)
r1877
renamed project to rhodecode
r547
Aras Pranckevicius
graph: fix counting of "heads" for graph, condense graph into more narrow lines instead of trying to increase its width (past certain width produces really bad html layout)
r2924 x = base_x - box_size * start;
fixed chrome DAG graph rendering issue - simplified graph.js
r1464
renamed project to rhodecode
r547 this.ctx.lineWidth=this.line_width;
this.ctx.beginPath();
Aras Pranckevicius
graph: make it handle different row heights while still doing dots in the middle of each row
r1873 this.ctx.moveTo(x, rowY);
fixed chrome DAG graph rendering issue - simplified graph.js
r1464
Aras Pranckevicius
graph: bezier curve for curved merge lines
r1863 if (start == end)
{
Aras Pranckevicius
graph: make it handle different row heights while still doing dots in the middle of each row
r1873 this.ctx.lineTo(x,nextY+extra,3);
Aras Pranckevicius
graph: bezier curve for curved merge lines
r1863 }
else
{
Aras Pranckevicius
graph: fix counting of "heads" for graph, condense graph into more narrow lines instead of trying to increase its width (past certain width produces really bad html layout)
r2924 var x2 = base_x - box_size * end;
Aras Pranckevicius
graph: make it handle different row heights while still doing dots in the middle of each row
r1873 var ymid = (rowY+nextY) / 2;
this.ctx.bezierCurveTo (x,ymid,x2,ymid,x2,nextY);
Aras Pranckevicius
graph: bezier curve for curved merge lines
r1863 }
renamed project to rhodecode
r547 this.ctx.stroke();
}
Aras Pranckevicius
graph: fix counting of "heads" for graph, condense graph into more narrow lines instead of trying to increase its width (past certain width produces really bad html layout)
r2924 column = node[0];
Aras Pranckevicius
graph: replaced some super complicated looking math with something that tries to make sense
r2923 color = node[1];
renamed project to rhodecode
r547
radius = this.dot_radius;
Aras Pranckevicius
merge upstream (keeping my graph.js changes)
r1877
Aras Pranckevicius
graph: fix counting of "heads" for graph, condense graph into more narrow lines instead of trying to increase its width (past certain width produces really bad html layout)
r2924 x = base_x - box_size * column;
renamed project to rhodecode
r547
this.ctx.beginPath();
this.setColor(color, 0.25, 0.75);
Aras Pranckevicius
graph: make it handle different row heights while still doing dots in the middle of each row
r1873 this.ctx.arc(x, rowY, radius, 0, Math.PI * 2, true);
renamed project to rhodecode
r547 this.ctx.fill();
idx++;
}
}
}