[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 --
ctx.save();
ctx.beginPath();
nodes.filter(visibleNodes).forEach(function (d) {
var clients = d.o.node.statistics.clients;
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);
if (scale > 0.9) {
nodes.filter(visibleNodes).forEach(function (d) {
var clients = d.o.node.statistics.clients;
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);
}
}
});
}
ctx.fillStyle = clientColor;
ctx.fill();
ctx.restore();