| <!doctype html> | |
| <html> | |
| <head> | |
|     <title>Network | Dynamic Data</title> | |
| 
 | |
|     <script type="text/javascript" src="../../../dist/vis.js"></script> | |
|     <link href="../../../dist/vis-network.min.css" rel="stylesheet" type="text/css" /> | |
| 
 | |
|     <style type="text/css"> | |
|         #mynetwork { | |
|             width: 600px; | |
|             height: 400px; | |
|             border: 1px solid lightgray; | |
|         } | |
| 
 | |
|         p { | |
|             max-width:600px; | |
|         } | |
| 
 | |
|         h4 { | |
|             margin-bottom:3px; | |
|         } | |
|     </style> | |
| </head> | |
| 
 | |
| <p> | |
|     You can change any settings you want while the network is initialized using the vis Dataset, setOptions and setData. Finally you can destroy the network and completely reinitialize it. | |
| </p> | |
| 
 | |
| <h4>DataSet (change the data while it's loaded and initialzed):</h4> | |
| <input type="button" onclick="addNode()" value="add node dynamically"> <br /> | |
| <input type="button" onclick="changeNode1()" value="change node 1's color dynamically"> <br /> | |
| <input type="button" onclick="removeRandomNode()" value="remove a random Node"> <br /> | |
| <input type="button" onclick="resetAllNodes()" value="reload all nodes"> <br /> | |
| <input type="button" onclick="resetAllNodesStabilize()" value="reload all nodes and stabilize"> <br /> | |
| 
 | |
| <h4>setOptions (change the global options):</h4> | |
| <input type="button" onclick="changeOptions()" value="change the global options"><br /> | |
| 
 | |
| <h4>setData (reinitialize the data): </h4> | |
| <input type="button" onclick="setTheData()" value="setData. This stabilizes again if stabilization is true."><br /> | |
| 
 | |
| <h4>Cleanly destroy the network and restart it:</h4> | |
| <input type="button" onclick="resetAll()" value="Destroy the network and restart it."><br /> | |
| <div id="mynetwork"></div> | |
| 
 | |
| <script type="text/javascript"> | |
|     var nodeIds, shadowState, nodesArray, nodes, edgesArray, edges, network; | |
| 
 | |
|     function startNetwork() { | |
|         // this list is kept to remove a random node.. we do not add node 1 here because it's used for changes | |
|         nodeIds = [2, 3, 4, 5]; | |
|         shadowState = false; | |
| 
 | |
| 
 | |
|         // create an array with nodes | |
|         nodesArray = [ | |
|             {id: 1, label: 'Node 1'}, | |
|             {id: 2, label: 'Node 2'}, | |
|             {id: 3, label: 'Node 3'}, | |
|             {id: 4, label: 'Node 4'}, | |
|             {id: 5, label: 'Node 5'} | |
|         ]; | |
|         nodes = new vis.DataSet(nodesArray); | |
| 
 | |
|         // create an array with edges | |
|         edgesArray = [ | |
|             {from: 1, to: 3}, | |
|             {from: 1, to: 2}, | |
|             {from: 2, to: 4}, | |
|             {from: 2, to: 5} | |
|         ]; | |
|         edges = new vis.DataSet(edgesArray); | |
| 
 | |
|         // create a network | |
|         var container = document.getElementById('mynetwork'); | |
|         var data = { | |
|             nodes: nodes, | |
|             edges: edges | |
|         }; | |
|         var options = {}; | |
|         network = new vis.Network(container, data, options); | |
|     } | |
| 
 | |
|     function addNode() { | |
|         var newId = (Math.random() * 1e7).toString(32); | |
|         nodes.add({id:newId, label:"I'm new!"}); | |
|         nodeIds.push(newId); | |
|     } | |
| 
 | |
|     function changeNode1() { | |
|         var newColor = '#' + Math.floor((Math.random() * 255 * 255 * 255)).toString(16); | |
|         nodes.update([{id:1, color:{background:newColor}}]); | |
|     } | |
| 
 | |
|     function removeRandomNode() { | |
|         var randomNodeId = nodeIds[Math.floor(Math.random() * nodeIds.length)]; | |
|         nodes.remove({id:randomNodeId}); | |
| 
 | |
|         var index = nodeIds.indexOf(randomNodeId); | |
|         nodeIds.splice(index,1); | |
|     } | |
| 
 | |
|     function changeOptions() { | |
|         shadowState = !shadowState; | |
|         network.setOptions({nodes:{shadow:shadowState},edges:{shadow:shadowState}}); | |
|     } | |
| 
 | |
|     function resetAllNodes() { | |
|         nodes.clear(); | |
|         edges.clear(); | |
|         nodes.add(nodesArray); | |
|         edges.add(edgesArray); | |
|     } | |
| 
 | |
|     function resetAllNodesStabilize() { | |
|         resetAllNodes(); | |
|         network.stabilize(); | |
|     } | |
| 
 | |
|     function setTheData() { | |
|         nodes = new vis.DataSet(nodesArray); | |
|         edges = new vis.DataSet(edgesArray); | |
|         network.setData({nodes:nodes, edges:edges}) | |
|     } | |
| 
 | |
|     function resetAll() { | |
|         if (network !== null) { | |
|             network.destroy(); | |
|             network = null; | |
|         } | |
|         startNetwork(); | |
|     } | |
| 
 | |
|     startNetwork(); | |
| </script> | |
| 
 | |
| 
 | |
| </body> | |
| </html>
 |