##// END OF EJS Templates
fixed git diff function when initial revision had no parents to compare with
fixed git diff function when initial revision had no parents to compare with

File last commit:

r1880:e2b6bc77 beta
r2499:c919d8c4 beta
Show More
graph.js
143 lines | 3.5 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];
this.max_column = 1;
this.line_width = 2.5;
this.dot_radius = 5.5;
this.bg = [0, 4];
this.cell = [2, 0];
this.revlink = '';
this.scale = function(height) {
this.box_size = Math.floor(height/1.2);
this.cell_height = this.box_size;
this.bg_height = height;
}
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;
}
improved rendering of dag (they are not trimmed anymore when number of heads exceeds 5)
r1429 this.render = function(data,pad) {
renamed project to rhodecode
r547 var idx = 1;
var rela = document.getElementById('graph');
improved rendering of dag (they are not trimmed anymore when number of heads exceeds 5)
r1429 var pad = pad;
renamed project to rhodecode
r547 var scale = 22;
UI fixes...
r1865
renamed project to rhodecode
r547 for (var i in data) {
this.scale(scale);
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;
this.cell[1] += row.clientWidth;
this.bg[1] += this.bg_height;
cur = data[i];
nodeid = cur[0];
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];
start = line[0];
end = line[1];
color = line[2];
if (start > this.max_column) {
this.max_column = start;
}
if (end > this.max_column) {
this.max_column = end;
}
this.setColor(color, 0.0, 0.65);
Aras Pranckevicius
merge upstream (keeping my graph.js changes)
r1877
renamed project to rhodecode
r547
x = pad-((this.cell[0] + this.box_size * start - 1) + this.bg_height-2);
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
fixes for DAG renderer on chrome
r1655
Aras Pranckevicius
graph: bezier curve for curved merge lines
r1863 if (start == end)
{
x = pad-((1 + this.box_size * end) + this.bg_height-2);
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
{
var x2 = pad-((1 + this.box_size * end) + this.bg_height-2);
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();
}
column = node[0]
color = node[1]
radius = this.dot_radius;
Aras Pranckevicius
merge upstream (keeping my graph.js changes)
r1877
renamed project to rhodecode
r547 x = pad-(Math.round(this.cell[0] * scale/2 * column + radius) + 15 - (column*4));
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++;
}
}
}