| @ -0,0 +1,184 @@ | |||||
| <!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> | |||||