Невозможно создать ребро между двумя вершинами при загрузке графа через XML. Хотя он отлично работает при создании его с начала. Я хочу создать ребро между двумя вершинами при удалении узла. Тот же код работает нормально, если я создал график с нуля. Мой код ниже.
var graph;var parent;
function main(container) {
// Checks if the browser is supported
if (!mxClient.isBrowserSupported()) {
// Displays an error message if the browser is not supported.
mxUtils.error('Browser is not supported!', 200, false);
} else {
// Creates the graph inside the given container
graph = new mxGraph(container);
// Enables rubberband selection
new mxRubberband(graph);
parent = graph.getDefaultParent();
var keyHandler = new mxKeyHandler(graph);
keyHandler.bindKey(46, function (evt) {
console.log('key')
if (graph.isEnabled()) {
const selectedCell = graph.getSelectionCell();
let source = graph.getIncomingEdges(selectedCell)[0].source;
if (graph.getOutgoingEdges(selectedCell)[0]) {
let target = graph.getOutgoingEdges(selectedCell)[0].target;
graph.removeCells();
graph.insertEdge(parent, null, '', source, target); // this line is not executing.
} else {
graph.removeCells();
}
}
});
graph.addListener(mxEvent.DOUBLE_CLICK, function (sender, evt) {
evt.consume();
});
graph.addListener(mxEvent.CELL_CONNECTED, function(sender, evt)
{
console.log('cell connected------------------------')
});
addXml();
}
};
function addXml() {
parent = graph.getDefaultParent();
let xml = "<mxGraphModel><root><mxCell id=\"0\"/><mxCell id=\"1\" parent=\"0\"/><mxCell id=\"2\" value=\"Hello,\" vertex=\"1\" parent=\"1\"><mxGeometry x=\"20\" y=\"20\" width=\"80\" height=\"30\" as=\"geometry\"/></mxCell><mxCell id=\"3\" value=\"World!\" vertex=\"1\" parent=\"1\"><mxGeometry x=\"160\" y=\"20\" width=\"80\" height=\"30\" as=\"geometry\"/></mxCell><mxCell id=\"4\" value=\"World!\" vertex=\"1\" parent=\"1\"><mxGeometry x=\"320\" y=\"20\" width=\"80\" height=\"30\" as=\"geometry\"/></mxCell><mxCell id=\"5\" value=\"World!\" vertex=\"1\" parent=\"1\"><mxGeometry x=\"480\" y=\"20\" width=\"80\" height=\"30\" as=\"geometry\"/></mxCell><mxCell id=\"6\" value=\"\" edge=\"1\" parent=\"1\" source=\"2\" target=\"3\"><mxGeometry relative=\"1\" as=\"geometry\"/></mxCell><mxCell id=\"7\" value=\"\" edge=\"1\" parent=\"1\" source=\"3\" target=\"4\"><mxGeometry relative=\"1\" as=\"geometry\"/></mxCell><mxCell id=\"8\" value=\"\" edge=\"1\" parent=\"1\" source=\"4\" target=\"5\"><mxGeometry relative=\"1\" as=\"geometry\"/></mxCell></root></mxGraphModel>"
var xmlDocument = mxUtils.parseXml(xml);
// console.log(xmlDocument);
if (xmlDocument.documentElement != null && xmlDocument.documentElement.nodeName == 'mxGraphModel') {
var decoder = new mxCodec(xmlDocument);
var node = xmlDocument.documentElement;
decoder.decode(node, graph.getModel());
}
}