[TASK] Add zoom limit for drawing clients in forcegraph

This commit is contained in:
Xaver Maierhofer 2017-02-08 00:14:48 +01:00 committed by Geno
parent cd0e59ffa9
commit d2090225c5
1 changed files with 26 additions and 25 deletions

View File

@ -395,33 +395,34 @@ define(['d3', 'helper'], function (d3, helper) {
// -- draw clients -- // -- draw clients --
ctx.save(); ctx.save();
ctx.beginPath(); ctx.beginPath();
nodes.filter(visibleNodes).forEach(function (d) { if (scale > 0.9) {
var clients = d.o.node.statistics.clients; nodes.filter(visibleNodes).forEach(function (d) {
if (clients === 0) { var clients = d.o.node.statistics.clients;
return; if (clients === 0) {
} return;
var startDistance = 16;
var radius = 3;
var a = 1.2;
var startAngle = Math.PI;
for (var orbit = 0, i = 0; i < clients; orbit++) {
var di = startDistance + orbit * 2 * radius * a;
var n = Math.floor((Math.PI * di) / (a * radius));
var delta = clients - i;
for (var j = 0; j < Math.min(delta, n); i++, j++) {
var angle = 2 * Math.PI / n * j;
var x = d.x + di * Math.cos(angle + startAngle);
var y = d.y + di * Math.sin(angle + startAngle);
ctx.moveTo(x, y);
ctx.arc(x, y, radius, 0, 2 * Math.PI);
} }
}
});
var startDistance = 16;
var radius = 3;
var a = 1.2;
var startAngle = Math.PI;
for (var orbit = 0, i = 0; i < clients; orbit++) {
var di = startDistance + orbit * 2 * radius * a;
var n = Math.floor((Math.PI * di) / (a * radius));
var delta = clients - i;
for (var j = 0; j < Math.min(delta, n); i++, j++) {
var angle = 2 * Math.PI / n * j;
var x = d.x + di * Math.cos(angle + startAngle);
var y = d.y + di * Math.sin(angle + startAngle);
ctx.moveTo(x, y);
ctx.arc(x, y, radius, 0, 2 * Math.PI);
}
}
});
}
ctx.fillStyle = clientColor; ctx.fillStyle = clientColor;
ctx.fill(); ctx.fill();
ctx.restore(); ctx.restore();