| <!doctype html> | |
| <html> | |
| <head> | |
|   <title>Network | Random nodes</title> | |
| 
 | |
|   <style type="text/css"> | |
|     body { | |
|       font: 10pt sans; | |
|     } | |
|     #mynetwork { | |
|         width: 600px; | |
|         height: 600px; | |
|       border: 1px solid lightgray; | |
|     } | |
|   </style> | |
| 
 | |
|   <script type="text/javascript" src="../../dist/vis.js"></script> | |
|   <link href="../../dist/vis.css" rel="stylesheet" type="text/css" /> | |
| 
 | |
|   <script type="text/javascript"> | |
|       var nodes = null; | |
|       var edges = null; | |
|       var network = null; | |
| 
 | |
|       function draw() { | |
|       nodes = new vis.DataSet([{ | |
|           id: '1001', | |
|           value: '1' | |
|       }, { | |
|           id: '1009', | |
|           value: '2' | |
|       }, { | |
|           id: '1061', | |
|           value: '3' | |
|       }, { | |
|           id: '1226', | |
|           value: '4' | |
|       }]); | |
|       edges = new vis.DataSet([{ | |
|           id: '1001_1061', | |
|           from: '1001', | |
|           to: '1061', | |
|           value: '1' | |
|       }, { | |
|           id: '1001_1226', | |
|           from: '1001', | |
|           to: '1226', | |
|           value: '1' | |
|       }, { | |
|           id: '1009_1061', | |
|           from: '1009', | |
|           to: '1061', | |
|           value: '2' | |
|       }, { | |
|           id: '1009_1226', | |
|           from: '1009', | |
|           to: '1226', | |
|           value: '1' | |
|       }, { | |
|           id: '1061_1226', | |
|           from: '1061', | |
|           to: '1226', | |
|           value: '1' | |
|       }]); | |
|       var container = document.getElementById('mynetwork'); | |
|       var data = { | |
|           nodes: nodes, | |
|           edges: edges | |
|       }; | |
|       var nodeNormalColor = { // For 'normal' nodes | |
|           background: '#92bbc7', | |
|           border: '#5d93a6', | |
|           borderWidth: 2, | |
|           highlight: { | |
|               background: '#5d93a6', | |
|               border: '#537286' | |
|           } | |
|       }; | |
|       var nodeBlurColor = { // For 'blurred' nodes | |
|           background: '#f0f0f0', | |
|           border: '#f0f0f0' | |
|       }; | |
| 
 | |
|       var edgeNormalColor = { | |
|           color: '#5d93a6', | |
|           highlight: '#28132b' | |
|       }; | |
|       var edgeBlurColor = { | |
|           color: '#f0f0f0', | |
|           highlight: '#f0f0f0' | |
|       }; | |
| 
 | |
|       var options = { | |
|           nodes: { | |
|               shape: 'dot', | |
|               color: nodeNormalColor | |
|           }, | |
|           edges: { | |
|               inheritColor: false, | |
|               color: edgeNormalColor, | |
|               widthSelectionMultiplier: 1 | |
|           }, | |
|           physics: { | |
|               'barnesHut': { | |
|                   centralGravity: 0.5, | |
|                   springLength: 150, | |
|                   springConstant: 0.03, | |
|                   damping: 0.2 | |
|               } | |
|           } | |
|       }; | |
|       network = new vis.Network(container, data, options); | |
| 
 | |
|       // add event listeners | |
|       network.on('select', function (params) { | |
|           console.log(params.edges); | |
| 
 | |
|           var nodesData = {}; | |
|           var edgesData = {}; | |
|           var nodeResetQuery = []; | |
|           var edgeResetQuery = []; | |
| 
 | |
|           var allEdges = edges.get(); | |
|           var allNodes = nodes.get(); | |
|           for (var i = 0; i < allNodes.length; i++) { | |
|               nodesData[allNodes[i].id] = {id:allNodes[i].id, color: nodeBlurColor}; | |
|               nodeResetQuery.push({id:allNodes[i].id, color: nodeNormalColor}); | |
| 
 | |
|           } | |
|           for (var i = 0; i < allEdges.length; i++) { | |
|               edgesData[allEdges[i].id] = {id:allEdges[i].id, color: edgeBlurColor}; | |
|               edgeResetQuery.push({id:allEdges[i].id, color: edgeNormalColor}); | |
|           } | |
| 
 | |
|           // deselect | |
|           if (params.nodes.length == 0 && params.edges.length == 0) { | |
|              nodes.update(nodeResetQuery); | |
|              edges.update(edgeResetQuery); | |
|              return; | |
|           } | |
| 
 | |
|           // paint nodes and edges. | |
|           for (var i = 0; i < params.nodes.length; i++) { | |
|               nodesData[params.nodes[i]].color = nodeNormalColor; | |
|           } | |
|           for (var i = 0; i < params.edges.length; i++) { | |
|               edgesData[params.edges[i]].color = edgeNormalColor; | |
|               var selEdge = edges.get(params.edges[i]); | |
|               nodesData[selEdge.to].color = nodeNormalColor; | |
|               nodesData[selEdge.from].color = nodeNormalColor; | |
|           } | |
| 
 | |
|           var nodeUpdateQuery = []; | |
|           var edgeUpdateQuery = []; | |
|           for (var nodeId in nodesData) { | |
|               if (nodesData.hasOwnProperty(nodeId)) { | |
|                   nodeUpdateQuery.push(nodesData[nodeId]); | |
|               } | |
|           } | |
|           for (var edgeId in edgesData) { | |
|               if (edgesData.hasOwnProperty(edgeId)) { | |
|                   edgeUpdateQuery.push(edgesData[edgeId]); | |
|               } | |
|           } | |
| 
 | |
|           nodes.update(nodeUpdateQuery); | |
|           edges.update(edgeUpdateQuery); | |
| //          nodes.update(nodeResetQuery); | |
| //          edges.update(edgeResetQuery); | |
| //          nodes.update(nodeUpdateQuery); | |
| //          edges.update(edgeUpdateQuery); | |
|           });} | |
| 
 | |
| 
 | |
|   </script> | |
| </head> | |
| 
 | |
| <body onload="draw();"> | |
| <br> | |
| <div id="mynetwork"></div> | |
| 
 | |
| <p id="selection"></p> | |
| </body> | |
| </html>
 |