Browse Source

- Fixed #1358: Fixed example for clustering on zoom. Also removed private keyword from public methods. Let physics listen to data updates instead of being called from network.

fixDataView
Alex de Mulder 9 years ago
parent
commit
410f83aa38
8 changed files with 17 additions and 35 deletions
  1. +1
    -0
      HISTORY.md
  2. +5
    -17
      dist/vis.js
  3. +5
    -1
      examples/network/other/clusteringByZoom.html
  4. +0
    -1
      lib/network/Network.js
  5. +0
    -1
      lib/network/modules/Clustering.js
  6. +0
    -10
      lib/network/modules/ManipulationSystem.js
  7. +6
    -1
      lib/network/modules/PhysicsEngine.js
  8. +0
    -4
      lib/network/modules/SelectionHandler.js

+ 1
- 0
HISTORY.md View File

@ -19,6 +19,7 @@ http://visjs.org
- Fixed #1362: Layout of hierarchicaly systems no longer overlaps NODES. - Fixed #1362: Layout of hierarchicaly systems no longer overlaps NODES.
- Fixed #1414: Fixed color references for nodes and edges. - Fixed #1414: Fixed color references for nodes and edges.
- Fixed #1408: Unclustering without release function respects fixed positions now. - Fixed #1408: Unclustering without release function respects fixed positions now.
- Fixed #1358: Fixed example for clustering on zoom.
### Timeline ### Timeline

+ 5
- 17
dist/vis.js View File

@ -27312,7 +27312,6 @@ return /******/ (function(modules) { // webpackBootstrap
this.body.emitter.on("_dataChanged", function () { this.body.emitter.on("_dataChanged", function () {
// update shortcut lists // update shortcut lists
_this3._updateVisibleIndices(); _this3._updateVisibleIndices();
_this3.physics.updatePhysicsData();
_this3.body.emitter.emit("_requestRedraw"); _this3.body.emitter.emit("_requestRedraw");
// call the dataUpdated event because the only difference between the two is the updating of the indices // call the dataUpdated event because the only difference between the two is the updating of the indices
_this3.body.emitter.emit("_dataUpdated"); _this3.body.emitter.emit("_dataUpdated");
@ -33394,6 +33393,11 @@ return /******/ (function(modules) { // webpackBootstrap
_this.stopSimulation(false); _this.stopSimulation(false);
_this.body.emitter.off(); _this.body.emitter.off();
}); });
// this event will trigger a rebuilding of the cache everything. Used when nodes or edges have been added or removed.
this.body.emitter.on("_dataChanged", function () {
// update shortcut lists
_this.updatePhysicsData();
});
} }
/** /**
@ -33886,7 +33890,6 @@ return /******/ (function(modules) { // webpackBootstrap
/** /**
* Find a stable position for all nodes * Find a stable position for all nodes
* @private
*/ */
}, { }, {
key: 'stabilize', key: 'stabilize',
@ -35887,7 +35890,6 @@ return /******/ (function(modules) { // webpackBootstrap
* Get the stack clusterId's that a certain node resides in. cluster A -> cluster B -> cluster C -> node * Get the stack clusterId's that a certain node resides in. cluster A -> cluster B -> cluster C -> node
* @param nodeId * @param nodeId
* @returns {Array} * @returns {Array}
* @private
*/ */
}, { }, {
key: 'findNode', key: 'findNode',
@ -38711,7 +38713,6 @@ return /******/ (function(modules) { // webpackBootstrap
* *
* @param {{x: Number, y: Number}} pointer * @param {{x: Number, y: Number}} pointer
* @return {Node | undefined} node * @return {Node | undefined} node
* @private
*/ */
}, { }, {
key: "getNodeAt", key: "getNodeAt",
@ -38772,7 +38773,6 @@ return /******/ (function(modules) { // webpackBootstrap
* *
* @param pointer * @param pointer
* @returns {undefined} * @returns {undefined}
* @private
*/ */
}, { }, {
key: "getEdgeAt", key: "getEdgeAt",
@ -38844,8 +38844,6 @@ return /******/ (function(modules) { // webpackBootstrap
/** /**
* Unselect all. The selectionObj is useful for this. * Unselect all. The selectionObj is useful for this.
*
* @private
*/ */
}, { }, {
key: "unselectAll", key: "unselectAll",
@ -40167,8 +40165,6 @@ return /******/ (function(modules) { // webpackBootstrap
/** /**
* Create the toolbar for adding Nodes * Create the toolbar for adding Nodes
*
* @private
*/ */
}, { }, {
key: 'addNodeMode', key: 'addNodeMode',
@ -40198,8 +40194,6 @@ return /******/ (function(modules) { // webpackBootstrap
/** /**
* call the bound function to handle the editing of the node. The node has to be selected. * call the bound function to handle the editing of the node. The node has to be selected.
*
* @private
*/ */
}, { }, {
key: 'editNode', key: 'editNode',
@ -40246,8 +40240,6 @@ return /******/ (function(modules) { // webpackBootstrap
/** /**
* create the toolbar to connect nodes * create the toolbar to connect nodes
*
* @private
*/ */
}, { }, {
key: 'addEdgeMode', key: 'addEdgeMode',
@ -40284,8 +40276,6 @@ return /******/ (function(modules) { // webpackBootstrap
/** /**
* create the toolbar to edit edges * create the toolbar to edit edges
*
* @private
*/ */
}, { }, {
key: 'editEdgeMode', key: 'editEdgeMode',
@ -40361,8 +40351,6 @@ return /******/ (function(modules) { // webpackBootstrap
/** /**
* delete everything in the selection * delete everything in the selection
*
* @private
*/ */
}, { }, {
key: 'deleteSelected', key: 'deleteSelected',

+ 5
- 1
examples/network/other/clusteringByZoom.html View File

@ -72,7 +72,7 @@ Stabilize when clustering:
nodes: nodes, nodes: nodes,
edges: edges edges: edges
}; };
var options = {layout: {randomSeed: 8}};
var options = {layout: {randomSeed: 8}, physics:{adaptiveTimestep:false}};
var network = new vis.Network(container, data, options); var network = new vis.Network(container, data, options);
// set the first initial zoom level // set the first initial zoom level
@ -125,6 +125,8 @@ Stabilize when clustering:
} }
network.clusterOutliers(clusterOptionsByData); network.clusterOutliers(clusterOptionsByData);
if (document.getElementById('stabilizeCheckbox').checked === true) { if (document.getElementById('stabilizeCheckbox').checked === true) {
// since we use the scale as a unique identifier, we do NOT want to fit after the stabilization
network.setOptions({physics:{stabilization:{fit: false}}});
network.stabilize(); network.stabilize();
} }
} }
@ -145,6 +147,8 @@ Stabilize when clustering:
} }
clusters = newClusters; clusters = newClusters;
if (declustered === true && document.getElementById('stabilizeCheckbox').checked === true) { if (declustered === true && document.getElementById('stabilizeCheckbox').checked === true) {
// since we use the scale as a unique identifier, we do NOT want to fit after the stabilization
network.setOptions({physics:{stabilization:{fit: false}}});
network.stabilize(); network.stabilize();
} }
} }

+ 0
- 1
lib/network/Network.js View File

@ -270,7 +270,6 @@ Network.prototype.bindEventListeners = function () {
this.body.emitter.on("_dataChanged", () => { this.body.emitter.on("_dataChanged", () => {
// update shortcut lists // update shortcut lists
this._updateVisibleIndices(); this._updateVisibleIndices();
this.physics.updatePhysicsData();
this.body.emitter.emit("_requestRedraw"); this.body.emitter.emit("_requestRedraw");
// call the dataUpdated event because the only difference between the two is the updating of the indices // call the dataUpdated event because the only difference between the two is the updating of the indices
this.body.emitter.emit("_dataUpdated"); this.body.emitter.emit("_dataUpdated");

+ 0
- 1
lib/network/modules/Clustering.js View File

@ -686,7 +686,6 @@ class ClusterEngine {
* Get the stack clusterId's that a certain node resides in. cluster A -> cluster B -> cluster C -> node * Get the stack clusterId's that a certain node resides in. cluster A -> cluster B -> cluster C -> node
* @param nodeId * @param nodeId
* @returns {Array} * @returns {Array}
* @private
*/ */
findNode(nodeId) { findNode(nodeId) {
let stack = []; let stack = [];

+ 0
- 10
lib/network/modules/ManipulationSystem.js View File

@ -221,8 +221,6 @@ class ManipulationSystem {
/** /**
* Create the toolbar for adding Nodes * Create the toolbar for adding Nodes
*
* @private
*/ */
addNodeMode() { addNodeMode() {
// when using the gui, enable edit mode if it wasnt already. // when using the gui, enable edit mode if it wasnt already.
@ -250,8 +248,6 @@ class ManipulationSystem {
/** /**
* call the bound function to handle the editing of the node. The node has to be selected. * call the bound function to handle the editing of the node. The node has to be selected.
*
* @private
*/ */
editNode() { editNode() {
// when using the gui, enable edit mode if it wasnt already. // when using the gui, enable edit mode if it wasnt already.
@ -298,8 +294,6 @@ class ManipulationSystem {
/** /**
* create the toolbar to connect nodes * create the toolbar to connect nodes
*
* @private
*/ */
addEdgeMode() { addEdgeMode() {
// when using the gui, enable edit mode if it wasnt already. // when using the gui, enable edit mode if it wasnt already.
@ -334,8 +328,6 @@ class ManipulationSystem {
/** /**
* create the toolbar to edit edges * create the toolbar to edit edges
*
* @private
*/ */
editEdgeMode() { editEdgeMode() {
// when using the gui, enable edit mode if it wasnt already. // when using the gui, enable edit mode if it wasnt already.
@ -406,8 +398,6 @@ class ManipulationSystem {
/** /**
* delete everything in the selection * delete everything in the selection
*
* @private
*/ */
deleteSelected() { deleteSelected() {
// when using the gui, enable edit mode if it wasnt already. // when using the gui, enable edit mode if it wasnt already.

+ 6
- 1
lib/network/modules/PhysicsEngine.js View File

@ -112,6 +112,12 @@ class PhysicsEngine {
this.stopSimulation(false); this.stopSimulation(false);
this.body.emitter.off(); this.body.emitter.off();
}); });
// this event will trigger a rebuilding of the cache everything. Used when nodes or edges have been added or removed.
this.body.emitter.on("_dataChanged", () => {
// update shortcut lists
this.updatePhysicsData();
});
} }
@ -587,7 +593,6 @@ class PhysicsEngine {
/** /**
* Find a stable position for all nodes * Find a stable position for all nodes
* @private
*/ */
stabilize(iterations = this.options.stabilization.iterations) { stabilize(iterations = this.options.stabilization.iterations) {
if (typeof iterations !== 'number') { if (typeof iterations !== 'number') {

+ 0
- 4
lib/network/modules/SelectionHandler.js View File

@ -159,7 +159,6 @@ class SelectionHandler {
* *
* @param {{x: Number, y: Number}} pointer * @param {{x: Number, y: Number}} pointer
* @return {Node | undefined} node * @return {Node | undefined} node
* @private
*/ */
getNodeAt(pointer, returnNode = true) { getNodeAt(pointer, returnNode = true) {
// we first check if this is an navigation controls element // we first check if this is an navigation controls element
@ -217,7 +216,6 @@ class SelectionHandler {
* *
* @param pointer * @param pointer
* @returns {undefined} * @returns {undefined}
* @private
*/ */
getEdgeAt(pointer, returnEdge = true) { getEdgeAt(pointer, returnEdge = true) {
let positionObject = this._pointerToPositionObject(pointer); let positionObject = this._pointerToPositionObject(pointer);
@ -286,8 +284,6 @@ class SelectionHandler {
/** /**
* Unselect all. The selectionObj is useful for this. * Unselect all. The selectionObj is useful for this.
*
* @private
*/ */
unselectAll() { unselectAll() {
for(let nodeId in this.selectionObj.nodes) { for(let nodeId in this.selectionObj.nodes) {

Loading…
Cancel
Save