diff --git a/lib/forcegraph.js b/lib/forcegraph.js index 0a95e09..be701f2 100644 --- a/lib/forcegraph.js +++ b/lib/forcegraph.js @@ -1,6 +1,7 @@ define(["d3"], function (d3) { return function (linkScale, sidebar, router) { var self = this + var nodes, links var svg, vis, link, node, label var nodesDict, linksDict var zoomBehavior @@ -8,6 +9,8 @@ define(["d3"], function (d3) { var el var doAnimation = false + var LINK_DISTANCE = 70 + function nodeName(d) { if (d.node && d.node.nodeinfo) return d.node.nodeinfo.hostname @@ -117,7 +120,7 @@ define(["d3"], function (d3) { force = d3.layout.force() .charge(-70) .gravity(0.05) - .linkDistance(70) + .linkDistance(LINK_DISTANCE) .on("tick", tickEvent) panzoom() @@ -130,7 +133,7 @@ define(["d3"], function (d3) { window.addEventListener("resize", resize) self.setData = function (data) { - var links = data.graph.links.filter( function (d) { + links = data.graph.links.filter( function (d) { return !d.vpn }) @@ -160,7 +163,7 @@ define(["d3"], function (d3) { linksDict[linkId(d)] = d }) - var nodes = data.graph.nodes + nodes = data.graph.nodes node = vis.select("g.nodes") .selectAll(".node") @@ -240,7 +243,13 @@ define(["d3"], function (d3) { node.classed("highlight", false) link.classed("highlight", false) - animatePanzoom([sidebar.getWidth(), 0], 1) + var size = force.size() + var diameter = Math.sqrt(nodes.length / Math.PI) * LINK_DISTANCE + var x = (size[0] - diameter) / 2 + var y = (size[1] - diameter) / 2 + console.log(x, y) + + panzoomTo([x, y], [x + diameter, y + diameter]) doAnimation = true }