Permalink
Browse files

fixes #2100 and issues with edges when clustering (#2229)

* Should fix issue #2100 and fix another issue we discovered around clusterByConnection leaving phantom edges.
* fixed a wrong variable name
* fixed DataView.test.js assert
* Update Canvas.js
* remove whitespace; remove end of file newline on Canvas.js
* strip end of file newlines
* fixed styling. spacing, semicolons, line length
  • Loading branch information...
1 parent 1d8a182 commit 91c96ba38c3ce093573f6946f6f1e0a8d327dec4 @CapitanMorgan CapitanMorgan committed with mojoaxel Oct 25, 2016
@@ -18,6 +18,7 @@ class Canvas {
this.resizeFunction = this._onResize.bind(this);
this.cameraState = {};
this.initialized = false;
+ this.canvasViewCenter = {};
this.options = {};
this.defaultOptions = {
@@ -284,6 +285,11 @@ class Canvas {
this.options.width = width;
this.options.height = height;
+ this.canvasViewCenter = {
+ x: 0.5 * this.frame.clientWidth,
+ y: 0.5 * this.frame.clientHeight
+ };
+
emitEvent = true;
}
else {
@@ -235,7 +235,19 @@ class ClusterEngine {
}
}
}
-
+ var childNodeIDs = Object.keys(childNodesObj).map(function(childNode){
+ return childNodesObj[childNode].id;
+ })
+
+ for (childNode in childNodesObj) {
+ var childNode = childNodesObj[childNode];
+ for (var y=0; y < childNode.edges.length; y++){
+ var childEdge = childNode.edges[y];
+ if (childNodeIDs.indexOf(this._getConnectedId(childEdge,childNode.id)) > -1){
+ childEdgesObj[childEdge.id] = childEdge;
+ }
+ }
+ }
this._cluster(childNodesObj, childEdgesObj, options, refreshData);
}
@@ -723,7 +735,7 @@ class ClusterEngine {
let allEdgeIds = this.getClusteredEdges(startEdgeId);
for (let i = 0; i < allEdgeIds.length; i++) {
var edge = this.body.edges[allEdgeIds[i]];
- edge.setOptions(newOptions);
+ edge.setOptions(newOptions);
}
this.body.emitter.emit('_dataChanged');
}
@@ -150,12 +150,29 @@ class NavigationHandler {
_moveDown() {this.body.view.translation.y -= this.options.keyboard.speed.y;}
_moveLeft() {this.body.view.translation.x += this.options.keyboard.speed.x;}
_moveRight(){this.body.view.translation.x -= this.options.keyboard.speed.x;}
- _zoomIn() {
- this.body.view.scale *= 1+this.options.keyboard.speed.zoom;
- this.body.emitter.emit('zoom', {direction: '+', scale: this.body.view.scale});}
+ _zoomIn() {
+ var scaleOld = this.body.view.scale;
+ var scale = this.body.view.scale * (1 + this.options.keyboard.speed.zoom);
+ var translation = this.body.view.translation;
+ var scaleFrac = scale / scaleOld;
+ var tx = (1 - scaleFrac) * this.canvas.canvasViewCenter.x + translation.x * scaleFrac;
+ var ty = (1 - scaleFrac) * this.canvas.canvasViewCenter.y + translation.y * scaleFrac;
+
+ this.body.view.scale = scale;
+ this.body.view.translation = { x: tx, y: ty };
+ this.body.emitter.emit('zoom', { direction: '+', scale: this.body.view.scale });
+ }
_zoomOut() {
- this.body.view.scale /= 1+this.options.keyboard.speed.zoom;
- this.body.emitter.emit('zoom', {direction: '-', scale: this.body.view.scale});
+ var scaleOld = this.body.view.scale;
+ var scale = this.body.view.scale / (1 + this.options.keyboard.speed.zoom);
+ var translation = this.body.view.translation;
+ var scaleFrac = scale / scaleOld;
+ var tx = (1 - scaleFrac) * this.canvas.canvasViewCenter.x + translation.x * scaleFrac;
+ var ty = (1 - scaleFrac) * this.canvas.canvasViewCenter.y + translation.y * scaleFrac;
+
+ this.body.view.scale = scale;
+ this.body.view.translation = { x: tx, y: ty };
+ this.body.emitter.emit('zoom', { direction: '-', scale: this.body.view.scale });
}
@@ -200,7 +200,8 @@ describe('DataView', function () {
}]
]);
assert.deepEqual(viewUpdates, [
- ['update', {items: [2], data: [{id: 2, title: 'Item 2 (changed)'}]}]
+ ['update', {items: [2], data: [{id: 2, title: 'Item 2 (changed)'}],
+ oldData: [{"group": 2, "id": 2, "title": "Item 2"}]}]
]);
});

0 comments on commit 91c96ba

Please sign in to comment.