wiki/editor/src/graph.js

60 lines
1.9 KiB
JavaScript

import {DataSet} from "vis-data/peer";
import {Network} from "vis-network/peer";
import $ from 'jquery';
function wikiGraph(selector, options) {
$(selector).each(function (i, el) {
let $el = $(el)
var nodeName = $el.data('name')
fetch('/api/graph?name=' + nodeName)
.then(res => res.json())
.then(graph => {
var nodes = new DataSet(graph.nodes)
var edges = new DataSet(graph.edges)
var data = {
nodes: nodes,
edges: edges
};
var options = {
edges: {
arrows: 'to',
color: {
highlight: 'green'
},
chosen: {
edge: function (values, id, selected, hovering) {
if (this.from === 1) {
values.color = 'blue';
}
}
}
},
nodes: {
shape: 'dot',
size: 15,
font: {
background: 'white'
}
},
layout: {
improvedLayout: true
}
};
var network = new Network(el, data, options);
network.on('doubleClick', function (props) {
if (props.nodes.length) {
let nodeId = props.nodes[0]
let node = nodes.get(nodeId)
window.location.href = '/edit/' + node.label
}
})
})
})
}
export default wikiGraph