const findIntersectsEdge = (node) => {
const edges = graph.getEdges()
const bbox = node.getBBox()
const lines = [
bbox.leftLine,
bbox.rightLine,
bbox.topLine,
bbox.bottomLine
]
let res = null
edges.forEach((edge) => {
const view = graph.findViewByCell(edge)
lines.forEach((line) => {
if (view) {
if (view.path.intersectsWithLine(line)) {
res = edge
}
}
})
})
return res
}
- 获取到该节点后,在节点创建/移动(根据需求进行修改)时进行插入
graph.on('node:added', ({ node }) => {
const e = findIntersectsEdge(node)
if (e) {
if (e.store.data.source.cell) {
const sourceNode = e.getSourceNode()
const targetNode = e.getTargetNode()
if (sourceNode && targetNode) {
e.clone().setSource({
cell: sourceNode.id
}).setTarget({
cell: node.id
}).addTo(graph)
e.clone().setSource({
cell: node.id
}).setTarget({
cell: targetNode.id
}).addTo(graph)
graph.removeEdge(e)
}
}
}
})