<!DOCTYPE HTML>
|
|
<html>
|
|
<head>
|
|
<script src="../dist/vis.js"></script>
|
|
<link href="http://visjs.org/dist/vis.css" rel="stylesheet" type="text/css" />
|
|
<style type="text/css">
|
|
.graph {
|
|
width: 600px;
|
|
height: 500px;
|
|
} </style>
|
|
</head>
|
|
<body>
|
|
|
|
Reset causes crash
|
|
|
|
<pre>
|
|
|
|
When you press the button, the nodes dataset will receive an update which shall reset the font and color properties, instead, vis crashes :(
|
|
|
|
(The browser console shows the details)
|
|
|
|
</pre>
|
|
|
|
<button onclick="javascript:action()">Click me!</button>
|
|
|
|
<div class="graph" id="visualization1"></div>
|
|
|
|
|
|
<script type="text/javascript">
|
|
|
|
var action = function() {
|
|
nodes.update([
|
|
{
|
|
"id": "35b99ac8-aa07-4834-b508-6e9435f573cb",
|
|
"label": "Adam",
|
|
"x": -96,
|
|
"y": -382,
|
|
"fixed": {
|
|
"x": true,
|
|
"y": true
|
|
},
|
|
"color": null,
|
|
"font": null
|
|
},
|
|
{
|
|
"id": "38d37e10-3c8b-487c-9757-1061d2bbbd07",
|
|
"label": "Betsy",
|
|
"x": -19,
|
|
"y": -548,
|
|
"fixed": {
|
|
"x": true,
|
|
"y": true
|
|
},
|
|
"color": null,
|
|
"font": null
|
|
},
|
|
{
|
|
"id": "4762501a-6bcb-4d35-acfd-f2e9d6310389",
|
|
"label": "Carol",
|
|
"x": -243,
|
|
"y": -378,
|
|
"fixed": {
|
|
"x": true,
|
|
"y": true
|
|
},
|
|
"color": null,
|
|
"font": null
|
|
},
|
|
{
|
|
"id": "7e17b617-b7a4-4f70-937b-f45ec8dc0a9d",
|
|
"label": "Catherine",
|
|
"x": -551,
|
|
"y": -214,
|
|
"fixed": {
|
|
"x": true,
|
|
"y": true
|
|
},
|
|
"color": null,
|
|
"font": null
|
|
},
|
|
{
|
|
"id": "e017a09b-4526-4b4d-b097-f70e56f20ab4",
|
|
"label": "Craig",
|
|
"x": 155,
|
|
"y": -381,
|
|
"fixed": {
|
|
"x": true,
|
|
"y": true
|
|
},
|
|
"color": null,
|
|
"font": null
|
|
},
|
|
{
|
|
"id": "8ec7f3ee-35f9-4c56-a57b-12d91c0c372e",
|
|
"label": "George",
|
|
"x": -302,
|
|
"y": -536,
|
|
"fixed": {
|
|
"x": true,
|
|
"y": true
|
|
},
|
|
"color": null,
|
|
"font": null
|
|
},
|
|
{
|
|
"id": "8d2a0469-bb6a-4e40-ab1f-3d5edc620415",
|
|
"label": "Jessica",
|
|
"x": -4,
|
|
"y": -379,
|
|
"fixed": {
|
|
"x": true,
|
|
"y": true
|
|
},
|
|
"color": null,
|
|
"font": null
|
|
},
|
|
{
|
|
"id": "afd75e95-e45a-4dea-848a-e16ca735bc57",
|
|
"label": "John",
|
|
"x": -531,
|
|
"y": -543,
|
|
"fixed": {
|
|
"x": true,
|
|
"y": true
|
|
},
|
|
"color": null,
|
|
"font": null
|
|
},
|
|
{
|
|
"id": "9c050064-d805-48b3-80a6-181d3599daff",
|
|
"label": "Mary",
|
|
"x": -280,
|
|
"y": -210,
|
|
"fixed": {
|
|
"x": true,
|
|
"y": true
|
|
},
|
|
"color": null,
|
|
"font": null
|
|
},
|
|
{
|
|
"id": "f24ab062-62a1-4555-a57f-dfcd597c3515",
|
|
"label": "Michael",
|
|
"x": -98,
|
|
"y": -211,
|
|
"fixed": {
|
|
"x": true,
|
|
"y": true
|
|
},
|
|
"color": null,
|
|
"font": null
|
|
},
|
|
{
|
|
"id": "59d10b18-1c9e-4dcb-ba4f-988ebd7a3efb",
|
|
"label": "Michelle",
|
|
"x": -630,
|
|
"y": -387,
|
|
"fixed": {
|
|
"x": true,
|
|
"y": true
|
|
},
|
|
"color": null,
|
|
"font": null
|
|
},
|
|
{
|
|
"id": "b11149a2-9050-4632-b095-d9d233319b91",
|
|
"label": "Robert",
|
|
"x": -360,
|
|
"y": -380,
|
|
"fixed": {
|
|
"x": true,
|
|
"y": true
|
|
},
|
|
"color": null,
|
|
"font": null
|
|
},
|
|
{
|
|
"id": "a1485262-99fe-4b1e-a246-cc70fbb1859a",
|
|
"label": "Sharon",
|
|
"x": -532,
|
|
"y": -384,
|
|
"fixed": {
|
|
"x": true,
|
|
"y": true
|
|
},
|
|
"color": null,
|
|
"font": null
|
|
}
|
|
]);
|
|
}
|
|
|
|
var nodes = new vis.DataSet([
|
|
{
|
|
"id": "35b99ac8-aa07-4834-b508-6e9435f573cb",
|
|
"label": "Adam",
|
|
"color": {
|
|
"background": "rgba(252,245,170,1)",
|
|
"border": "rgba(183,148,134,1)"
|
|
},
|
|
"x": -96,
|
|
"y": -382,
|
|
"fixed": {
|
|
"x": true,
|
|
"y": true
|
|
},
|
|
"font": {
|
|
"color": "#000000"
|
|
}
|
|
},
|
|
{
|
|
"id": "38d37e10-3c8b-487c-9757-1061d2bbbd07",
|
|
"label": "Betsy",
|
|
"color": {
|
|
"background": "rgba(252,245,170,1)",
|
|
"border": "rgba(183,148,134,1)"
|
|
},
|
|
"x": -19,
|
|
"y": -548,
|
|
"fixed": {
|
|
"x": true,
|
|
"y": true
|
|
},
|
|
"font": {
|
|
"color": "#000000"
|
|
}
|
|
},
|
|
{
|
|
"id": "4762501a-6bcb-4d35-acfd-f2e9d6310389",
|
|
"label": "Carol",
|
|
"color": {
|
|
"background": "rgba(252,245,170,1)",
|
|
"border": "rgba(183,148,134,1)"
|
|
},
|
|
"x": -243,
|
|
"y": -378,
|
|
"fixed": {
|
|
"x": true,
|
|
"y": true
|
|
},
|
|
"font": {
|
|
"color": "#000000"
|
|
}
|
|
},
|
|
{
|
|
"id": "7e17b617-b7a4-4f70-937b-f45ec8dc0a9d",
|
|
"label": "Catherine",
|
|
"color": {
|
|
"background": "rgba(252,245,170,1)",
|
|
"border": "rgba(183,148,134,1)"
|
|
},
|
|
"x": -551,
|
|
"y": -214,
|
|
"fixed": {
|
|
"x": true,
|
|
"y": true
|
|
},
|
|
"font": {
|
|
"color": "#000000"
|
|
}
|
|
},
|
|
{
|
|
"id": "e017a09b-4526-4b4d-b097-f70e56f20ab4",
|
|
"label": "Craig",
|
|
"color": {
|
|
"background": "rgba(252,245,170,1)",
|
|
"border": "rgba(183,148,134,1)"
|
|
},
|
|
"x": 155,
|
|
"y": -381,
|
|
"fixed": {
|
|
"x": true,
|
|
"y": true
|
|
},
|
|
"font": {
|
|
"color": "#000000"
|
|
}
|
|
},
|
|
{
|
|
"id": "8ec7f3ee-35f9-4c56-a57b-12d91c0c372e",
|
|
"label": "George",
|
|
"color": {
|
|
"background": "rgba(252,245,170,1)",
|
|
"border": "rgba(183,148,134,1)"
|
|
},
|
|
"x": -302,
|
|
"y": -536,
|
|
"fixed": {
|
|
"x": true,
|
|
"y": true
|
|
},
|
|
"font": {
|
|
"color": "#000000"
|
|
}
|
|
},
|
|
{
|
|
"id": "8d2a0469-bb6a-4e40-ab1f-3d5edc620415",
|
|
"label": "Jessica",
|
|
"color": {
|
|
"background": "rgba(252,245,170,1)",
|
|
"border": "rgba(183,148,134,1)"
|
|
},
|
|
"x": -4,
|
|
"y": -379,
|
|
"fixed": {
|
|
"x": true,
|
|
"y": true
|
|
},
|
|
"font": {
|
|
"color": "#000000"
|
|
}
|
|
},
|
|
{
|
|
"id": "afd75e95-e45a-4dea-848a-e16ca735bc57",
|
|
"label": "John",
|
|
"color": {
|
|
"background": "rgba(252,245,170,1)",
|
|
"border": "rgba(183,148,134,1)"
|
|
},
|
|
"x": -531,
|
|
"y": -543,
|
|
"fixed": {
|
|
"x": true,
|
|
"y": true
|
|
},
|
|
"font": {
|
|
"color": "#000000"
|
|
}
|
|
},
|
|
{
|
|
"id": "9c050064-d805-48b3-80a6-181d3599daff",
|
|
"label": "Mary",
|
|
"color": {
|
|
"background": "rgba(252,245,170,1)",
|
|
"border": "rgba(183,148,134,1)"
|
|
},
|
|
"x": -280,
|
|
"y": -210,
|
|
"fixed": {
|
|
"x": true,
|
|
"y": true
|
|
},
|
|
"font": {
|
|
"color": "#000000"
|
|
}
|
|
},
|
|
{
|
|
"id": "f24ab062-62a1-4555-a57f-dfcd597c3515",
|
|
"label": "Michael",
|
|
"color": {
|
|
"background": "rgba(252,245,170,1)",
|
|
"border": "rgba(183,148,134,1)"
|
|
},
|
|
"x": -98,
|
|
"y": -211,
|
|
"fixed": {
|
|
"x": true,
|
|
"y": true
|
|
},
|
|
"font": {
|
|
"color": "#000000"
|
|
}
|
|
},
|
|
{
|
|
"id": "59d10b18-1c9e-4dcb-ba4f-988ebd7a3efb",
|
|
"label": "Michelle",
|
|
"color": {
|
|
"background": "rgba(252,245,170,1)",
|
|
"border": "rgba(183,148,134,1)"
|
|
},
|
|
"x": -630,
|
|
"y": -387,
|
|
"fixed": {
|
|
"x": true,
|
|
"y": true
|
|
},
|
|
"font": {
|
|
"color": "#000000"
|
|
}
|
|
},
|
|
{
|
|
"id": "b11149a2-9050-4632-b095-d9d233319b91",
|
|
"label": "Robert",
|
|
"color": {
|
|
"background": "rgba(252,245,170,1)",
|
|
"border": "rgba(183,148,134,1)"
|
|
},
|
|
"x": -360,
|
|
"y": -380,
|
|
"fixed": {
|
|
"x": true,
|
|
"y": true
|
|
},
|
|
"font": {
|
|
"color": "#000000"
|
|
}
|
|
},
|
|
{
|
|
"id": "a1485262-99fe-4b1e-a246-cc70fbb1859a",
|
|
"label": "Sharon",
|
|
"color": {
|
|
"background": "rgba(252,245,170,1)",
|
|
"border": "rgba(183,148,134,1)"
|
|
},
|
|
"x": -532,
|
|
"y": -384,
|
|
"fixed": {
|
|
"x": true,
|
|
"y": true
|
|
},
|
|
"font": {
|
|
"color": "#000000"
|
|
}
|
|
}
|
|
]);
|
|
|
|
var edges = new vis.DataSet([
|
|
{
|
|
"id": "62b28c2f-c6dc-4b6b-b108-722eb47d5972",
|
|
"from": "35b99ac8-aa07-4834-b508-6e9435f573cb",
|
|
"to": "f24ab062-62a1-4555-a57f-dfcd597c3515",
|
|
"type": "family:father of",
|
|
"label": "father of",
|
|
"color": "#bc960d",
|
|
"labelAlignment": "line-above"
|
|
},
|
|
{
|
|
"id": "4ae8de41-ef1a-400a-b51b-05662ce24597",
|
|
"from": "38d37e10-3c8b-487c-9757-1061d2bbbd07",
|
|
"to": "e017a09b-4526-4b4d-b097-f70e56f20ab4",
|
|
"type": "family:mother of",
|
|
"label": "mother of",
|
|
"color": "#eec75b",
|
|
"labelAlignment": "line-above"
|
|
},
|
|
{
|
|
"id": "70f6e36a-ce9a-47b4-97e1-14b2df17d204",
|
|
"from": "38d37e10-3c8b-487c-9757-1061d2bbbd07",
|
|
"to": "8d2a0469-bb6a-4e40-ab1f-3d5edc620415",
|
|
"type": "family:mother of",
|
|
"label": "mother of",
|
|
"color": "#eec75b",
|
|
"labelAlignment": "line-above"
|
|
},
|
|
{
|
|
"id": "c32a86ce-ab9a-49b6-a202-e93a37265fda",
|
|
"from": "38d37e10-3c8b-487c-9757-1061d2bbbd07",
|
|
"to": "b11149a2-9050-4632-b095-d9d233319b91",
|
|
"type": "family:mother of",
|
|
"label": "mother of",
|
|
"color": "#eec75b",
|
|
"labelAlignment": "line-above"
|
|
},
|
|
{
|
|
"id": "bbce9cc0-0353-45cd-bfa6-a13834ff7218",
|
|
"from": "4762501a-6bcb-4d35-acfd-f2e9d6310389",
|
|
"to": "f24ab062-62a1-4555-a57f-dfcd597c3515",
|
|
"type": "family:mother of",
|
|
"label": "mother of",
|
|
"color": "#eec75b",
|
|
"labelAlignment": "line-above"
|
|
},
|
|
{
|
|
"id": "deb7eb05-f667-496b-aeda-205c37b2484b",
|
|
"from": "8ec7f3ee-35f9-4c56-a57b-12d91c0c372e",
|
|
"to": "afd75e95-e45a-4dea-848a-e16ca735bc57",
|
|
"type": "family:brother of",
|
|
"label": "brother of",
|
|
"color": "green",
|
|
"labelAlignment": "line-above"
|
|
},
|
|
{
|
|
"id": "3c8c7947-6c82-4f98-978a-26bbb372bfbb",
|
|
"from": "afd75e95-e45a-4dea-848a-e16ca735bc57",
|
|
"to": "a1485262-99fe-4b1e-a246-cc70fbb1859a",
|
|
"type": "family:father of",
|
|
"label": "father of",
|
|
"color": "#bc960d",
|
|
"labelAlignment": "line-above"
|
|
},
|
|
{
|
|
"id": "cd4e71e7-9735-4a42-8632-e88cc01ab64f",
|
|
"from": "f24ab062-62a1-4555-a57f-dfcd597c3515",
|
|
"to": "9c050064-d805-48b3-80a6-181d3599daff",
|
|
"type": "family:brother of",
|
|
"label": "brother of",
|
|
"color": "green",
|
|
"labelAlignment": "line-above"
|
|
},
|
|
{
|
|
"id": "b4499f60-04f9-4306-9c57-3d73b72f37c0",
|
|
"from": "59d10b18-1c9e-4dcb-ba4f-988ebd7a3efb",
|
|
"to": "7e17b617-b7a4-4f70-937b-f45ec8dc0a9d",
|
|
"type": "family:mother of",
|
|
"label": "mother of",
|
|
"color": "#eec75b",
|
|
"labelAlignment": "line-above"
|
|
},
|
|
{
|
|
"id": "16562853-b597-44f6-9c55-2ce8a1fe4f83",
|
|
"from": "b11149a2-9050-4632-b095-d9d233319b91",
|
|
"to": "7e17b617-b7a4-4f70-937b-f45ec8dc0a9d",
|
|
"type": "family:father of",
|
|
"label": "father of",
|
|
"color": "#bc960d",
|
|
"labelAlignment": "line-above"
|
|
},
|
|
{
|
|
"id": "599dd644-e61f-401e-8b17-dfdd340c125e",
|
|
"from": "b11149a2-9050-4632-b095-d9d233319b91",
|
|
"to": "9c050064-d805-48b3-80a6-181d3599daff",
|
|
"type": "family:father of",
|
|
"label": "father of",
|
|
"color": "#bc960d",
|
|
"labelAlignment": "line-above"
|
|
},
|
|
{
|
|
"id": "961f7f2b-5abe-4036-a155-aa9b30ae1260",
|
|
"from": "b11149a2-9050-4632-b095-d9d233319b91",
|
|
"to": "a1485262-99fe-4b1e-a246-cc70fbb1859a",
|
|
"type": "family:married to",
|
|
"title": "Does not need to be a christian marriage though...",
|
|
"label": "married to",
|
|
"color": "#17bba3",
|
|
"labelAlignment": "line-above"
|
|
}
|
|
]);
|
|
|
|
var data = {
|
|
nodes: nodes,
|
|
edges: edges
|
|
};
|
|
|
|
var options = {
|
|
"autoResize": true,
|
|
"height": "100%",
|
|
"width": "100%",
|
|
"interaction": {
|
|
"dragNodes":true,
|
|
"dragView": true,
|
|
"hideEdgesOnDrag": false,
|
|
"hideNodesOnDrag": false,
|
|
"hover": false,
|
|
"navigationButtons": true,
|
|
"selectable": true,
|
|
"selectConnectedEdges": true,
|
|
"tooltipDelay": 300,
|
|
"zoomView": true,
|
|
"keyboard": {
|
|
"enabled": false,
|
|
"speed": {
|
|
"x": 10,
|
|
"y": 10,
|
|
"zoom": 0.02
|
|
},
|
|
"bindToWindow": true
|
|
}
|
|
},
|
|
"nodes": {
|
|
"shape": "box",
|
|
font: {color:"#ff0000"},
|
|
"color": {
|
|
"border" : "#2B7CE9",
|
|
"background" : "#97C2FC",
|
|
"highlight": {
|
|
"border": "#2B7CE9",
|
|
"background": "#D2E5FF"
|
|
},
|
|
"hover": {
|
|
"border": "white",
|
|
"background": "white"
|
|
}
|
|
}
|
|
},
|
|
"physics": {
|
|
"barnesHut": {
|
|
"centralGravity": 0,
|
|
"springLength": 240
|
|
}
|
|
},
|
|
"groups": {
|
|
"neighbours": {
|
|
"color": "#E6E6E6"
|
|
},
|
|
"matches": {
|
|
"color": "#97C2FC"
|
|
}
|
|
},
|
|
|
|
"locale": "en_EN"
|
|
}
|
|
;
|
|
|
|
var container = document.getElementById("visualization1");
|
|
|
|
var network = new vis.Network(container, data, options);
|
|
|
|
var hasNetworkStabilized = false;
|
|
network.on("stabilized", function(properties) {
|
|
|
|
if(!hasNetworkStabilized) {
|
|
hasNetworkStabilized = true;
|
|
|
|
network.storePositions();
|
|
setNodesMoveable(data.nodes.get(), false);
|
|
|
|
network.fit();
|
|
}
|
|
|
|
});
|
|
|
|
network.on("dragStart", function(properties) {
|
|
if(properties.nodes.length) {
|
|
var node = data.nodes.get(properties.nodes[0]);
|
|
setNodesMoveable([ node ], true);
|
|
}
|
|
});
|
|
|
|
network.on("dragEnd", function(properties) {
|
|
if(properties.nodes.length) {
|
|
var node = data.nodes.get(properties.nodes[0]);
|
|
setNodesMoveable([ node ], false);
|
|
}
|
|
});
|
|
|
|
setNodesMoveable = function(nodes, isMoveable) {
|
|
|
|
// first store positions
|
|
network.storePositions();
|
|
|
|
var updates = [];
|
|
var keys = Object.keys(nodes);
|
|
|
|
for(var i = 0; i < keys.length; i++) {
|
|
|
|
var id = nodes[keys[i]].id;
|
|
|
|
var update = {
|
|
id: id,
|
|
fixed: { // v4: formerly allowToMoveX, allowToMoveY
|
|
x: !isMoveable,
|
|
y: !isMoveable
|
|
}
|
|
};
|
|
|
|
updates.push(update);
|
|
|
|
}
|
|
|
|
data.nodes.update(updates);
|
|
|
|
console.log(updates);
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
</script>
|
|
</body>
|
|
</html>
|