diff --git a/docs/network/index.html b/docs/network/index.html index 788b342f..4878c6aa 100644 --- a/docs/network/index.html +++ b/docs/network/index.html @@ -953,6 +953,7 @@ function releaseFunction (clusterPosition, containedNodesPositions) { nodes: [Array of nodeIds], edges: [Array of edgeIds] } + You can also pass only nodes or edges in selection object. Available options are:
 {
diff --git a/lib/network/modules/SelectionHandler.js b/lib/network/modules/SelectionHandler.js
index 9fc83efd..15d43547 100644
--- a/lib/network/modules/SelectionHandler.js
+++ b/lib/network/modules/SelectionHandler.js
@@ -609,32 +609,35 @@ class SelectionHandler {
   setSelection(selection, options = {}) {
     let i, id;
 
-    if (!selection || !selection.nodes || !selection.edges)
-      throw 'Selection must be an object with nodes and edges properties';
-    // first unselect any selected node
+    if (!selection || (!selection.nodes && !selection.edges))
+      throw 'Selection must be an object with nodes and/or edges properties';
+    // first unselect any selected node, if option is true or undefined
     if (options.unselectAll || options.unselectAll === undefined) {
       this.unselectAll();
     }
+    if (selection.nodes) {
+      for (i = 0; i < selection.nodes.length; i++) {
+        id = selection.nodes[i];
 
-    for (i = 0; i < selection.nodes.length; i++) {
-      id = selection.nodes[i];
-
-      let node = this.body.nodes[id];
-      if (!node) {
-        throw new RangeError('Node with id "' + id + '" not found');
+        let node = this.body.nodes[id];
+        if (!node) {
+          throw new RangeError('Node with id "' + id + '" not found');
+        }
+        // don't select edges with it
+        this.selectObject(node, options.highlightEdges);
       }
-      // don't select edges with it
-      this.selectObject(node, options.highlightEdges);
     }
 
-    for (i = 0; i < selection.edges.length; i++) {
-      id = selection.edges[i];
+    if (selection.edges) {
+      for (i = 0; i < selection.edges.length; i++) {
+        id = selection.edges[i];
 
-      let edge = this.body.edges[id];
-      if (!edge) {
-        throw new RangeError('Edge with id "' + id + '" not found');
+        let edge = this.body.edges[id];
+        if (!edge) {
+          throw new RangeError('Edge with id "' + id + '" not found');
+        }
+        this.selectObject(edge);
       }
-      this.selectObject(edge);
     }
     this.body.emitter.emit('_requestRedraw');
   }
@@ -647,12 +650,10 @@ class SelectionHandler {
    * @param {boolean} [highlightEdges]
    */
   selectNodes(selection, highlightEdges = true) {
-    let i, id;
-
     if (!selection || (selection.length === undefined))
       throw 'Selection must be an array with ids';
 
-    this.setSelection({nodes: selection, edges: []}, {highlightEdges: highlightEdges});
+    this.setSelection({nodes: selection}, {highlightEdges: highlightEdges});
   }
 
 
@@ -662,12 +663,10 @@ class SelectionHandler {
    *                                            selected nodes.
    */
   selectEdges(selection) {
-    let i, id;
-
     if (!selection || (selection.length === undefined))
       throw 'Selection must be an array with ids';
 
-    this.setSelection({nodes: [], edges: selection});
+    this.setSelection({edges: selection});
   }
 
   /**