<!DOCTYPE HTML>
|
|
<html>
|
|
<head>
|
|
<script src="../dist/vis.js"></script>
|
|
<link href="../dist/vis.css" rel="stylesheet" type="text/css" />
|
|
<style type="text/css">
|
|
.graph {
|
|
width: 100%;
|
|
height: 500px;
|
|
} </style>
|
|
</head>
|
|
<body>
|
|
|
|
Visjs does not recognize fixing of nodes after drag & drop of a node; nodes jump back to original position.
|
|
|
|
<pre></pre>
|
|
|
|
<div class="graph" id="visualization1"></div>
|
|
<div id="config"></div>
|
|
|
|
<script type="text/javascript">
|
|
|
|
var graph = {
|
|
"edges": [
|
|
{
|
|
"id": "2ef44388-2d14-4db0-a2c7-9bd27235a17f",
|
|
"from": "8044e455-d507-432e-bbc7-0d0308d29516",
|
|
"to": "80f69421-1bc0-4ea2-8eed-b9df6caac6a6",
|
|
"type": "tmap:unknown",
|
|
"title": "Automatically assigned to an edge that does not have a type assigned",
|
|
"color": "#f43bb1"
|
|
},
|
|
{
|
|
"id": "181f6f8f-f170-4e92-8dcb-01504d864102",
|
|
"from": "8044e455-d507-432e-bbc7-0d0308d29516",
|
|
"to": "67942477-eb7b-43c0-a9f9-7cc0d46664ca",
|
|
"type": "tmap:unknown",
|
|
"title": "Automatically assigned to an edge that does not have a type assigned",
|
|
"color": "#f43bb1"
|
|
},
|
|
{
|
|
"id": "aef8b80b-d072-4c6b-bb73-c892f1cb6feb",
|
|
"from": "80f69421-1bc0-4ea2-8eed-b9df6caac6a6",
|
|
"to": "1b678c21-fc88-46c8-9a96-b3fbe22ecef0",
|
|
"type": "tmap:unknown",
|
|
"title": "Automatically assigned to an edge that does not have a type assigned",
|
|
"color": "#f43bb1"
|
|
},
|
|
{
|
|
"id": "919f7789-500b-45d7-a129-4f29141155b9",
|
|
"from": "67942477-eb7b-43c0-a9f9-7cc0d46664ca",
|
|
"to": "ecfbe4b8-fa35-40ec-94e6-ed859a4c8f0f",
|
|
"type": "tmap:unknown",
|
|
"title": "Automatically assigned to an edge that does not have a type assigned",
|
|
"color": "#f43bb1"
|
|
},
|
|
{
|
|
"id": "992cf67b-4f05-4ec7-9f90-9723f829a051",
|
|
"from": "ed61cb00-8e20-4c5f-a3ee-fe7417b6b08b",
|
|
"to": "eeea9c37-3335-41b6-a9e3-47b44438d0d5",
|
|
"type": "tmap:unknown",
|
|
"title": "Automatically assigned to an edge that does not have a type assigned",
|
|
"color": "#f43bb1"
|
|
},
|
|
{
|
|
"id": "e70fd8ed-231e-4608-869a-846c1b3264b0",
|
|
"from": "eeea9c37-3335-41b6-a9e3-47b44438d0d5",
|
|
"to": "8044e455-d507-432e-bbc7-0d0308d29516",
|
|
"type": "tmap:unknown",
|
|
"title": "Automatically assigned to an edge that does not have a type assigned",
|
|
"color": "#f43bb1"
|
|
}
|
|
],
|
|
"nodes": [
|
|
{
|
|
"id": "8044e455-d507-432e-bbc7-0d0308d29516",
|
|
"label": "Temple of Ihola",
|
|
"x": 409,
|
|
"y": 170,
|
|
"fixed": {
|
|
"x": true,
|
|
"y": true
|
|
},
|
|
"color": {},
|
|
"shape": "icon",
|
|
"icon": {
|
|
"shape": "icon",
|
|
"face": "FontAwesome",
|
|
"code": ""
|
|
},
|
|
"font": {
|
|
"color": "black"
|
|
}
|
|
},
|
|
{
|
|
"id": "ecfbe4b8-fa35-40ec-94e6-ed859a4c8f0f",
|
|
"label": "Temple of Sar",
|
|
"x": 763,
|
|
"y": 320,
|
|
"fixed": {
|
|
"x": true,
|
|
"y": true
|
|
},
|
|
"color": {},
|
|
"shape": "icon",
|
|
"icon": {
|
|
"shape": "icon",
|
|
"face": "FontAwesome",
|
|
"code": ""
|
|
},
|
|
"font": {
|
|
"color": "black"
|
|
}
|
|
},
|
|
{
|
|
"id": "80f69421-1bc0-4ea2-8eed-b9df6caac6a6",
|
|
"label": "Diamond mine",
|
|
"x": 331,
|
|
"y": 458,
|
|
"fixed": {
|
|
"x": true,
|
|
"y": true
|
|
},
|
|
"color": {},
|
|
"shape": "icon",
|
|
"icon": {
|
|
"shape": "icon",
|
|
"face": "FontAwesome",
|
|
"code": ""
|
|
},
|
|
"font": {
|
|
"color": "black"
|
|
}
|
|
},
|
|
{
|
|
"id": "67942477-eb7b-43c0-a9f9-7cc0d46664ca",
|
|
"label": "Castle of the Winds",
|
|
"x": 664,
|
|
"y": 132,
|
|
"fixed": {
|
|
"x": true,
|
|
"y": true
|
|
},
|
|
"color": {},
|
|
"shape": "icon",
|
|
"icon": {
|
|
"shape": "icon",
|
|
"face": "FontAwesome",
|
|
"code": ""
|
|
},
|
|
"font": {
|
|
"color": "black"
|
|
}
|
|
},
|
|
{
|
|
"id": "ed61cb00-8e20-4c5f-a3ee-fe7417b6b08b",
|
|
"label": "Start",
|
|
"x": 94,
|
|
"y": 314,
|
|
"fixed": {
|
|
"x": true,
|
|
"y": true
|
|
},
|
|
"color": {},
|
|
"font": {}
|
|
},
|
|
{
|
|
"id": "eeea9c37-3335-41b6-a9e3-47b44438d0d5",
|
|
"label": "Black forest",
|
|
"x": 266,
|
|
"y": 107,
|
|
"fixed": {
|
|
"x": true,
|
|
"y": true
|
|
},
|
|
"color": {},
|
|
"shape": "icon",
|
|
"icon": {
|
|
"shape": "icon",
|
|
"face": "FontAwesome",
|
|
"code": ""
|
|
},
|
|
"font": {
|
|
"color": "black"
|
|
}
|
|
},
|
|
{
|
|
"id": "1b678c21-fc88-46c8-9a96-b3fbe22ecef0",
|
|
"label": "Dragonland",
|
|
"x": 527,
|
|
"y": 444,
|
|
"fixed": {
|
|
"x": true,
|
|
"y": true
|
|
},
|
|
"color": {},
|
|
"shape": "icon",
|
|
"icon": {
|
|
"shape": "icon",
|
|
"face": "FontAwesome",
|
|
"code": ""
|
|
},
|
|
"font": {
|
|
"color": "black"
|
|
}
|
|
}
|
|
]
|
|
};
|
|
|
|
var data = {
|
|
nodes: new vis.DataSet(graph.nodes),
|
|
edges: new vis.DataSet(graph.edges)
|
|
};
|
|
|
|
var options = {
|
|
autoResize: true,
|
|
height: '100%',
|
|
width: '100%',
|
|
physics: {
|
|
barnesHut: {
|
|
centralGravity: 0
|
|
}
|
|
}
|
|
}
|
|
;
|
|
|
|
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.fit();
|
|
}
|
|
|
|
});
|
|
|
|
network.on("dragStart", function(properties) {
|
|
|
|
if(!properties.nodes.length) return;
|
|
setNodesMoveable(properties.nodes, true);
|
|
|
|
});
|
|
|
|
network.on("dragEnd", function(properties) {
|
|
|
|
if(!properties.nodes.length) return;
|
|
setNodesMoveable(properties.nodes, false);
|
|
|
|
});
|
|
|
|
setNodesMoveable = function(nodeIds, isMoveable) {
|
|
|
|
// it only works if network.storePositions() is called before
|
|
// setting moved nodes to fixed state. In visjs v4.9 this was
|
|
// not required.
|
|
// network.storePositions();
|
|
|
|
var updates = [];
|
|
var isFixed = !isMoveable;
|
|
for(var i = nodeIds.length; i--;) {
|
|
|
|
updates.push({
|
|
id: nodeIds[i],
|
|
fixed: { x: isFixed, y: isFixed }
|
|
});
|
|
|
|
}
|
|
|
|
data.nodes.update(updates);
|
|
|
|
};
|
|
|
|
</script>
|
|
</body>
|
|
</html>
|