[TASK] Add zoom limit for drawing clients in forcegraph
This commit is contained in:
parent
cd0e59ffa9
commit
d2090225c5
@ -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();
|
||||
|
Loading…
Reference in New Issue
Block a user