|
|
@ -1,60 +1,106 @@ |
|
|
|
<!doctype html> |
|
|
|
<!DOCTYPE html> |
|
|
|
<html> |
|
|
|
<head> |
|
|
|
<title>Network | Basic usage</title> |
|
|
|
<script src="../dist/vis.js"></script> |
|
|
|
<link type="text/css" rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/vis/4.9.0/vis.min.css"> |
|
|
|
|
|
|
|
<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; |
|
|
|
<style> |
|
|
|
#network { |
|
|
|
width: 100%; |
|
|
|
height: 400px; |
|
|
|
border: 1px solid lightgray; |
|
|
|
border: 1px solid gray; |
|
|
|
} |
|
|
|
</style> |
|
|
|
<script type="text/javascript"> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function addChild(Parent){ |
|
|
|
|
|
|
|
var newNodes = 5; |
|
|
|
var angle = 2* Math.PI / newNodes; |
|
|
|
var r = 150; |
|
|
|
var shift = Math.random() * Math.PI; |
|
|
|
|
|
|
|
for(i=0; i< newNodes; i++) { |
|
|
|
|
|
|
|
var xnew = network.getPositions(Parent)[Parent].x + Math.cos(angle * i + shift) * r; |
|
|
|
var ynew = network.getPositions(Parent)[Parent].y + Math.sin(angle * i + shift) * r; |
|
|
|
|
|
|
|
var newId = guid(); |
|
|
|
|
|
|
|
try { |
|
|
|
nodes.add( |
|
|
|
{id: newId, |
|
|
|
label: "New Node", |
|
|
|
x: xnew, |
|
|
|
y: ynew }) |
|
|
|
} |
|
|
|
|
|
|
|
catch (err) {} |
|
|
|
|
|
|
|
var edgeId = guid(); |
|
|
|
|
|
|
|
try { |
|
|
|
edges.add( |
|
|
|
{id: edgeId, |
|
|
|
from: Parent, |
|
|
|
to: newId}) |
|
|
|
} |
|
|
|
|
|
|
|
catch (err) {} |
|
|
|
|
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
function guid() { |
|
|
|
function s4() { |
|
|
|
return Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1); |
|
|
|
} |
|
|
|
return s4() + s4() + '-' + s4() + '-' + s4() + '-' + |
|
|
|
s4() + '-' + s4() + s4() + s4(); |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var nodes, edges, network; |
|
|
|
|
|
|
|
function draw() { |
|
|
|
nodes = new vis.DataSet([ |
|
|
|
{"id": "1", |
|
|
|
"label": "Start"}]); |
|
|
|
|
|
|
|
edges = new vis.DataSet([]); |
|
|
|
|
|
|
|
var container = document.getElementById('network'); |
|
|
|
var data = { |
|
|
|
nodes: nodes, |
|
|
|
edges: edges |
|
|
|
}; |
|
|
|
var options = { |
|
|
|
"edges": {arrows:'to', "smooth": {"type": 'dynamic'}}, |
|
|
|
"physics": { |
|
|
|
"forceAtlas2Based": { |
|
|
|
"gravitationalConstant": -514, |
|
|
|
"springLength": 150, |
|
|
|
"springConstant": 0.1, |
|
|
|
"damping": 0.9}, |
|
|
|
"maxVelocity": 15, |
|
|
|
"minVelocity": 1, |
|
|
|
"timestep": 0.9, |
|
|
|
"solver": "forceAtlas2Based"}}; |
|
|
|
network = new vis.Network(container, data, options); |
|
|
|
network.fit(); |
|
|
|
|
|
|
|
network.on("click", function (params) { |
|
|
|
if(params.nodes[0]!=null){addChild(params.nodes[0])}}); |
|
|
|
} |
|
|
|
|
|
|
|
</script> |
|
|
|
</head> |
|
|
|
<body> |
|
|
|
|
|
|
|
<p> |
|
|
|
Create a simple network with some nodes and edges. |
|
|
|
</p> |
|
|
|
|
|
|
|
<div id="mynetwork"></div> |
|
|
|
|
|
|
|
<script type="text/javascript"> |
|
|
|
// create an array with nodes |
|
|
|
var nodes = new vis.DataSet([ |
|
|
|
{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'} |
|
|
|
]); |
|
|
|
|
|
|
|
// create an array with edges |
|
|
|
var edges = new vis.DataSet([ |
|
|
|
{from: 1, to: 3}, |
|
|
|
{from: 1, to: 2}, |
|
|
|
{from: 2, to: 4}, |
|
|
|
{from: 2, to: 5} |
|
|
|
]); |
|
|
|
|
|
|
|
// create a network |
|
|
|
var container = document.getElementById('mynetwork'); |
|
|
|
var data = { |
|
|
|
nodes: nodes, |
|
|
|
edges: edges |
|
|
|
}; |
|
|
|
var options = {manipulation:{ |
|
|
|
initiallyActive:true, |
|
|
|
addNode: false, |
|
|
|
// addEdge: false |
|
|
|
// editNode: true |
|
|
|
}}; |
|
|
|
var network = new vis.Network(container, data, options); |
|
|
|
</script> |
|
|
|
|
|
|
|
<script src="../googleAnalytics.js"></script> |
|
|
|
<body onload="draw();"> |
|
|
|
<div id="network"></div> |
|
|
|
</body> |
|
|
|
</html> |