<!doctype html>
							 | 
						|
								<html>
							 | 
						|
								<head>
							 | 
						|
								    <title>Network | Dynamic Data</title>
							 | 
						|
								
							 | 
						|
								    <script type="text/javascript" src="../../../dist/vis.js"></script>
							 | 
						|
								    <link href="../../../dist/vis.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>
							 | 
						|
								
							 | 
						|
								<script src="../../googleAnalytics.js"></script>
							 | 
						|
								</body>
							 | 
						|
								</html>
							 |