Browse Source

finalized docs and zoom

css_transitions
Alex de Mulder 10 years ago
parent
commit
9d225542b9
3 changed files with 24 additions and 19 deletions
  1. +2
    -1
      docs/graph.html
  2. +21
    -17
      src/graph/Graph.js
  3. +1
    -1
      src/graph/graphMixins/ClusterMixin.js

+ 2
- 1
docs/graph.html View File

@ -1305,7 +1305,8 @@ var options: {
for the add and edit functions. The data the user is supplied with in these functions has been described in the code below. for the add and edit functions. The data the user is supplied with in these functions has been described in the code below.
For the add data, you can add any and all options that are accepted for node creation as described above. The same goes for edit, however only the fields described For the add data, you can add any and all options that are accepted for node creation as described above. The same goes for edit, however only the fields described
in the code below contain information on the selected node. The callback for connect accepts any options that are used for edge creation. Only the callback for delete selected in the code below contain information on the selected node. The callback for connect accepts any options that are used for edge creation. Only the callback for delete selected
requires the same data structure that is supplied to the user.
requires the same data structure that is supplied to the user. <br /><br />
<b>If there is no injected function supplied for the edit operation, the button will not be shown in the toolbar.</b>
</p> </p>
<pre class="prettyprint"> <pre class="prettyprint">
// If a variable is not supplied, the default value is used. // If a variable is not supplied, the default value is used.

+ 21
- 17
src/graph/Graph.js View File

@ -216,7 +216,7 @@ function Graph (container, data, options) {
}; };
// properties for the animation // properties for the animation
this.moving = false; // True if any of the nodes have an undefined position
this.moving = true;
this.timer = undefined; // Scheduling function. Is definded in this.start(); this.timer = undefined; // Scheduling function. Is definded in this.start();
// load data (the disable start variable will be the same as the enabled clustering) // load data (the disable start variable will be the same as the enabled clustering)
@ -305,7 +305,7 @@ Graph.prototype._centerGraph = function(range) {
* *
* @param {Boolean} [initialZoom] | zoom based on fitted formula or range, true = fitted, default = false; * @param {Boolean} [initialZoom] | zoom based on fitted formula or range, true = fitted, default = false;
*/ */
Graph.prototype.zoomToFit = function(initialZoom, doNotStart) {
Graph.prototype.zoomToFit = function(initialZoom, disableStart) {
if (initialZoom === undefined) { if (initialZoom === undefined) {
initialZoom = false; initialZoom = false;
} }
@ -315,12 +315,23 @@ Graph.prototype.zoomToFit = function(initialZoom, doNotStart) {
var zoomLevel; var zoomLevel;
if (initialZoom == true) { if (initialZoom == true) {
if (this.constants.clustering.enabled == true &&
if (this.constants.smoothCurves == true) {
if (this.constants.clustering.enabled == true &&
numberOfNodes >= this.constants.clustering.initialMaxNodes) { numberOfNodes >= this.constants.clustering.initialMaxNodes) {
zoomLevel = 77.5271985 / (numberOfNodes + 187.266146) + 4.76710517e-05; // this is obtained from fitting a dataset from 5 points with scale levels that looked good.
zoomLevel = 49.07548 / (numberOfNodes + 142.05338) + 9.1444e-04; // this is obtained from fitting a dataset from 5 points with scale levels that looked good.
}
else {
zoomLevel = 12.662 / (numberOfNodes + 7.4147) + 0.0964822; // this is obtained from fitting a dataset from 5 points with scale levels that looked good.
}
} }
else { else {
zoomLevel = 30.5062972 / (numberOfNodes + 19.93597763) + 0.08413486; // this is obtained from fitting a dataset from 5 points with scale levels that looked good.
if (this.constants.clustering.enabled == true &&
numberOfNodes >= this.constants.clustering.initialMaxNodes) {
zoomLevel = 77.5271985 / (numberOfNodes + 187.266146) + 4.76710517e-05; // this is obtained from fitting a dataset from 5 points with scale levels that looked good.
}
else {
zoomLevel = 30.5062972 / (numberOfNodes + 19.93597763) + 0.08413486; // this is obtained from fitting a dataset from 5 points with scale levels that looked good.
}
} }
} }
else { else {
@ -340,7 +351,7 @@ Graph.prototype.zoomToFit = function(initialZoom, doNotStart) {
this.pinch.mousewheelScale = zoomLevel; this.pinch.mousewheelScale = zoomLevel;
this._setScale(zoomLevel); this._setScale(zoomLevel);
this._centerGraph(range); this._centerGraph(range);
if (doNotStart == false || doNotStart === undefined) {
if (disableStart == false || disableStart === undefined) {
this.start(); this.start();
} }
}; };
@ -404,7 +415,6 @@ Graph.prototype.setData = function(data, disableStart) {
if (this.stabilize) { if (this.stabilize) {
this._doStabilize(); this._doStabilize();
} }
this.moving = true;
this.start(); this.start();
} }
}; };
@ -579,7 +589,6 @@ Graph.prototype.setOptions = function (options) {
this.setSize(this.width, this.height); this.setSize(this.width, this.height);
this._setTranslation(this.frame.clientWidth / 2, this.frame.clientHeight / 2); this._setTranslation(this.frame.clientWidth / 2, this.frame.clientHeight / 2);
this._setScale(1); this._setScale(1);
this.zoomToFit();
this._redraw(); this._redraw();
}; };
@ -1679,19 +1688,14 @@ Graph.prototype._drawEdges = function(ctx) {
* @private * @private
*/ */
Graph.prototype._doStabilize = function() { Graph.prototype._doStabilize = function() {
//var start = new Date();
// find stable position // find stable position
var count = 0; var count = 0;
var vmin = this.constants.minVelocity;
var stable = false;
while (!stable && count < this.constants.maxIterations) {
this._initializeForceCalculation();
this._discreteStepNodes();
stable = !this._isMoving(vmin);
while (this.moving && count < this.constants.maxIterations) {
this._physicsTick();
count++; count++;
} }
this.zoomToFit();
this.zoomToFit(false,true);
}; };

+ 1
- 1
src/graph/graphMixins/ClusterMixin.js View File

@ -1045,7 +1045,7 @@ var ClusterMixin = {
for (var i = 0; i < this.nodeIndices.length; i++) { for (var i = 0; i < this.nodeIndices.length; i++) {
var node = this.nodes[this.nodeIndices[i]]; var node = this.nodes[this.nodeIndices[i]];
if ((node.xFixed == false || node.yFixed == false) && this.createNodeOnClick != true) { if ((node.xFixed == false || node.yFixed == false) && this.createNodeOnClick != true) {
var radius = this.constants.physics.springLength * node.mass;
var radius = this.constants.physics.springLength * Math.min(100,node.mass);
var angle = 2 * Math.PI * Math.random(); var angle = 2 * Math.PI * Math.random();
if (node.xFixed == false) {node.x = radius * Math.cos(angle);} if (node.xFixed == false) {node.x = radius * Math.cos(angle);}
if (node.yFixed == false) {node.y = radius * Math.sin(angle);} if (node.yFixed == false) {node.y = radius * Math.sin(angle);}

Loading…
Cancel
Save