From 683dad09df7c5237a93114cc0c50df74e4b8cf23 Mon Sep 17 00:00:00 2001 From: Alex de Mulder Date: Wed, 26 Feb 2014 10:48:24 +0100 Subject: [PATCH] added click and doubleclick events and extended events documentation --- dist/vis.js | 13 ++++- docs/graph.html | 71 +++++++++++++++++++++++++ src/graph/graphMixins/SelectionMixin.js | 11 ++++ 3 files changed, 94 insertions(+), 1 deletion(-) diff --git a/dist/vis.js b/dist/vis.js index cb85c454..a8095a0e 100644 --- a/dist/vis.js +++ b/dist/vis.js @@ -5,7 +5,7 @@ * A dynamic, browser-based visualization library. * * @version 0.6.0-SNAPSHOT - * @date 2014-02-25 + * @date 2014-02-26 * * @license * Copyright (C) 2011-2014 Almende B.V, http://almende.com @@ -14920,16 +14920,19 @@ var SelectionMixin = { var node = this._getNodeAt(pointer); if (node != null) { this._selectObject(node,false); + this.emit("clickNode", this.getSelection()); } else { var edge = this._getEdgeAt(pointer); if (edge != null) { this._selectObject(edge,false); + this.emit("clickEdge", this.getSelection()); } else { this._unselectAll(); } } + this.emit("click", this.getSelection()); this._redraw(); }, @@ -14942,12 +14945,20 @@ var SelectionMixin = { */ _handleDoubleTap : function(pointer) { var node = this._getNodeAt(pointer); + var selection = this.getSelection(); if (node != null && node !== undefined) { // we reset the areaCenter here so the opening of the node will occur this.areaCenter = {"x" : this._canvasToX(pointer.x), "y" : this._canvasToY(pointer.y)}; this.openCluster(node); + this.emit("doubleClickNode", selection); } + else { + if (this._getSelectedEdgeCount() == 1) { + this.emit("doubleClickEdge", selection); + } + } + this.emit("doubleClick", selection); }, diff --git a/docs/graph.html b/docs/graph.html index bf2594e5..e8d4e4ba 100644 --- a/docs/graph.html +++ b/docs/graph.html @@ -1857,9 +1857,80 @@ graph.off('select', onSelect); + + click + Fired after the user clicks or taps on a touchscreen. + + + + + + clickNode + Fired after the user clicks on a node or taps a node on a touchscreen. + + + + + + clickEdge + Fired after the user clicks on an edge or taps an edge on a touchscreen. + + + + + + doubleClick + Fired after the user double clicks or double taps on a touchscreen. + + + + + + doubleClickEdge + Fired after the user double clicks on an edge or double taps an edge on a touchscreen. + + + + + + doubleClickNode + Fired after the user double clicks on a node or double taps a node on a touchscreen. + + + + + + frameResize + Fired when the size of the canvas has been updated (not neccecarily changed) by the setSize() function or by the setOptions() function. + + + + diff --git a/src/graph/graphMixins/SelectionMixin.js b/src/graph/graphMixins/SelectionMixin.js index 7420348a..bdb3ffb0 100644 --- a/src/graph/graphMixins/SelectionMixin.js +++ b/src/graph/graphMixins/SelectionMixin.js @@ -392,16 +392,19 @@ var SelectionMixin = { var node = this._getNodeAt(pointer); if (node != null) { this._selectObject(node,false); + this.emit("clickNode", this.getSelection()); } else { var edge = this._getEdgeAt(pointer); if (edge != null) { this._selectObject(edge,false); + this.emit("clickEdge", this.getSelection()); } else { this._unselectAll(); } } + this.emit("click", this.getSelection()); this._redraw(); }, @@ -414,12 +417,20 @@ var SelectionMixin = { */ _handleDoubleTap : function(pointer) { var node = this._getNodeAt(pointer); + var selection = this.getSelection(); if (node != null && node !== undefined) { // we reset the areaCenter here so the opening of the node will occur this.areaCenter = {"x" : this._canvasToX(pointer.x), "y" : this._canvasToY(pointer.y)}; this.openCluster(node); + this.emit("doubleClickNode", selection); } + else { + if (this._getSelectedEdgeCount() == 1) { + this.emit("doubleClickEdge", selection); + } + } + this.emit("doubleClick", selection); },