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