|
@ -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> |