|  |  |  | 
|---|
|  |  |  | "shape": "edge", | 
|---|
|  |  |  | "id": "66c81c68-0827-4a3c-8343-e2c453d3e9e7", | 
|---|
|  |  |  | "router": { | 
|---|
|  |  |  | "name": "manhattan", | 
|---|
|  |  |  | args: { | 
|---|
|  |  |  | startDirections: ['top','bottom'], // 从下方开始 | 
|---|
|  |  |  | endDirections: ['left'],      // 向左方结束 | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | "name": "manhattan" | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | "connector": { | 
|---|
|  |  |  | "name": "rounded" | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | "source": { | 
|---|
|  |  |  | "cell": "10000", | 
|---|
|  |  |  | "port": "right1" | 
|---|
|  |  |  | "cell": "10000" | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | "target": { | 
|---|
|  |  |  | "cell": 15000, | 
|---|
|  |  |  | "port": "left1" | 
|---|
|  |  |  | "cell": 15000 | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | "zIndex": 4 | 
|---|
|  |  |  | "zIndex": -1 | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | { | 
|---|
|  |  |  | "shape": "edge", | 
|---|
|  |  |  | "id": "a0f3cf90-6d37-4ee0-a254-90b4ec2b6a7f", | 
|---|
|  |  |  | "router": { | 
|---|
|  |  |  | "name": "manhattan", | 
|---|
|  |  |  | args: { | 
|---|
|  |  |  | startDirections: ['top','bottom'], // 从下方开始 | 
|---|
|  |  |  | endDirections: ['left'],      // 向左方结束 | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | "name": "manhattan" | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | "connector": { | 
|---|
|  |  |  | "name": "rounded" | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | "source": { | 
|---|
|  |  |  | "cell": 15000, | 
|---|
|  |  |  | "port": "right1" | 
|---|
|  |  |  | "cell": 15000 | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | "target": { | 
|---|
|  |  |  | "cell": "20000", | 
|---|
|  |  |  | "port": "left1" | 
|---|
|  |  |  | "cell": "20000" | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | "zIndex": 5 | 
|---|
|  |  |  | "zIndex": -1 | 
|---|
|  |  |  | } | 
|---|
|  |  |  | ] | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | router: { | 
|---|
|  |  |  | name: 'manhattan', | 
|---|
|  |  |  | args: { | 
|---|
|  |  |  | startDirections: ['top','bottom'], // 从下方开始 | 
|---|
|  |  |  | startDirections: ['top', 'bottom'], // 从下方开始 | 
|---|
|  |  |  | endDirections: ['left'],      // 向左方结束 | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | 
|---|
|  |  |  | router: { | 
|---|
|  |  |  | name: 'manhattan', | 
|---|
|  |  |  | args: { | 
|---|
|  |  |  | startDirections: ['top','bottom'], // 从下方开始 | 
|---|
|  |  |  | startDirections: ['top', 'bottom'], // 从下方开始 | 
|---|
|  |  |  | endDirections: ['left'],      // 向左方结束 | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | }) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | this.graph.on('node:mouseenter', ({node}) => { | 
|---|
|  |  |  | const container = document.getElementById('containerImg') | 
|---|
|  |  |  | const ports = container.querySelectorAll( | 
|---|
|  |  |  | '.x6-port-body', | 
|---|
|  |  |  | ) | 
|---|
|  |  |  | this.showPorts(ports, true) | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | // this.graph.on('node:mouseenter', ({node}) => { | 
|---|
|  |  |  | //   const container = document.getElementById('containerImg') | 
|---|
|  |  |  | //   const ports = container.querySelectorAll( | 
|---|
|  |  |  | //     '.x6-port-body', | 
|---|
|  |  |  | //   ) | 
|---|
|  |  |  | //   this.showPorts(ports, true) | 
|---|
|  |  |  | // }) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | this.graph.on('node:mouseleave', ({node}) => { | 
|---|
|  |  |  | // if (node.hasTool('button-remove')) { | 
|---|
|  |  |  | //   node.removeTool('button-remove') | 
|---|
|  |  |  | // } | 
|---|
|  |  |  | const container = document.getElementById('containerImg') | 
|---|
|  |  |  | const ports = container.querySelectorAll( | 
|---|
|  |  |  | '.x6-port-body', | 
|---|
|  |  |  | ) | 
|---|
|  |  |  | this.showPorts(ports, false) | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | // this.graph.on('node:mouseleave', ({node}) => { | 
|---|
|  |  |  | //   // if (node.hasTool('button-remove')) { | 
|---|
|  |  |  | //   //   node.removeTool('button-remove') | 
|---|
|  |  |  | //   // } | 
|---|
|  |  |  | //   const container = document.getElementById('containerImg') | 
|---|
|  |  |  | //   const ports = container.querySelectorAll( | 
|---|
|  |  |  | //     '.x6-port-body', | 
|---|
|  |  |  | //   ) | 
|---|
|  |  |  | //   this.showPorts(ports, false) | 
|---|
|  |  |  | // }) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | this.graph.on('edge:mouseenter', ({cell}) => { | 
|---|
|  |  |  | // alert(123) | 
|---|
|  |  |  | cell.addTools([ | 
|---|
|  |  |  | { | 
|---|
|  |  |  | name: 'source-arrowhead', | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | { | 
|---|
|  |  |  | name: 'target-arrowhead', | 
|---|
|  |  |  | args: { | 
|---|
|  |  |  | attrs: { | 
|---|
|  |  |  | fill: 'red', | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | { | 
|---|
|  |  |  | name: 'segments', | 
|---|
|  |  |  | args: {snapRadius: 20, attrs: {fill: '#444'}} | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | ]) | 
|---|
|  |  |  | }) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | this.graph.on('edge:mouseleave', ({cell}) => { | 
|---|
|  |  |  | cell.removeTools() | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | // this.graph.on('edge:mouseenter', ({cell}) => { | 
|---|
|  |  |  | //   // alert(123) | 
|---|
|  |  |  | //   cell.addTools([ | 
|---|
|  |  |  | //     { | 
|---|
|  |  |  | //       name: 'source-arrowhead', | 
|---|
|  |  |  | //     }, | 
|---|
|  |  |  | //     { | 
|---|
|  |  |  | //       name: 'target-arrowhead', | 
|---|
|  |  |  | //       args: { | 
|---|
|  |  |  | //         attrs: { | 
|---|
|  |  |  | //           fill: 'red', | 
|---|
|  |  |  | //         }, | 
|---|
|  |  |  | //       }, | 
|---|
|  |  |  | //     }, | 
|---|
|  |  |  | //     { | 
|---|
|  |  |  | //       name: 'segments', | 
|---|
|  |  |  | //       args: {snapRadius: 20, attrs: {fill: '#444'}} | 
|---|
|  |  |  | //     }, | 
|---|
|  |  |  | //   ]) | 
|---|
|  |  |  | // }) | 
|---|
|  |  |  | // | 
|---|
|  |  |  | // this.graph.on('edge:mouseleave', ({cell}) => { | 
|---|
|  |  |  | //   cell.removeTools() | 
|---|
|  |  |  | // }) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | await this.getDiagram(this.dataForm.id) | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | showPorts(ports, show) { | 
|---|
|  |  |  | for (let i = 0, len = ports.length; i < len; i = i + 1) { | 
|---|
|  |  |  | ports[i].style.visibility = show ? 'visible' : 'hidden' | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // showPorts(ports, show) { | 
|---|
|  |  |  | //   for (let i = 0, len = ports.length; i < len; i = i + 1) { | 
|---|
|  |  |  | //     ports[i].style.visibility = show ? 'visible' : 'hidden' | 
|---|
|  |  |  | //   } | 
|---|
|  |  |  | // }, | 
|---|
|  |  |  | reset() { | 
|---|
|  |  |  | this.graph.drawBackground({color: '#fff'}) | 
|---|
|  |  |  | const nodes = this.graph.getNodes() | 
|---|
|  |  |  | 
|---|
|  |  |  | centerX = graphNode.position().x + graphNode.getBBox().width / 2 | 
|---|
|  |  |  | centerY = graphNode.position().y + graphNode.getBBox().height / 2 | 
|---|
|  |  |  | let result = this.addNodeAndConnect(graphNode, dragNode, centerX, centerY) | 
|---|
|  |  |  | if (!result) { | 
|---|
|  |  |  | dragNode.remove() | 
|---|
|  |  |  | this.$message({message: '没有足够的空间放置该节点,请扩大剩余空间', type: 'warning'}) | 
|---|
|  |  |  | return | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | let startPort = 'right1' | 
|---|
|  |  |  | let endPort = 'left1' | 
|---|
|  |  |  | 
|---|
|  |  |  | endPort = 'top1' | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | inEdges[0].target = {cell: result.newStartNode.id, port: endPort} | 
|---|
|  |  |  | outEdges[0].source = {cell: result.newEndNode.id, port: startPort} | 
|---|
|  |  |  | inEdges[0].target = {cell: result.newStartNode.id} | 
|---|
|  |  |  | outEdges[0].source = {cell: result.newEndNode.id} | 
|---|
|  |  |  | graphNode.remove() | 
|---|
|  |  |  | if (!result.canPlace) { | 
|---|
|  |  |  | //调用自动排版 | 
|---|
|  |  |  | this.layoutDiagram() | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } else { //并行结构 | 
|---|
|  |  |  | const graphNodeStartNodeId = graphNode.getData().startNodeId  // 获取画布上原有节点的开始ID | 
|---|
|  |  |  | 
|---|
|  |  |  | pointXY.maxY + offHeight / 2 + 30 : pointXY.minY - offHeight / 2 - 30 | 
|---|
|  |  |  |  | 
|---|
|  |  |  | let result = this.addNodeAndConnect(null, dragNode, minX, centerY) | 
|---|
|  |  |  | if (!result) { | 
|---|
|  |  |  | dragNode.remove() | 
|---|
|  |  |  | this.$message({message: '没有足够的空间放置该节点,请扩大剩余空间', type: 'warning'}) | 
|---|
|  |  |  | return | 
|---|
|  |  |  | console.log(result, 'result111') | 
|---|
|  |  |  | this.graph.addEdge({ | 
|---|
|  |  |  | source: {cell: graphNodeStartNode}, | 
|---|
|  |  |  | target: {cell: result.newStartNode}, | 
|---|
|  |  |  | router: { | 
|---|
|  |  |  | name: 'manhattan', | 
|---|
|  |  |  | args: { | 
|---|
|  |  |  | startDirections: ['top', 'bottom'], // 从下方开始 | 
|---|
|  |  |  | endDirections: ['left'],      // 向左方结束 | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | connector: {name: 'rounded'}, | 
|---|
|  |  |  | zIndex: -1 | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | this.graph.addEdge({ | 
|---|
|  |  |  | source: {cell: result.newEndNode}, | 
|---|
|  |  |  | target: {cell: graphNode}, | 
|---|
|  |  |  | router: { | 
|---|
|  |  |  | name: 'manhattan', | 
|---|
|  |  |  | args: { | 
|---|
|  |  |  | startDirections: ['right'], // 从下方开始 | 
|---|
|  |  |  | endDirections: ['top', 'bottom'],      // 向左方结束 | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | connector: {name: 'rounded'}, | 
|---|
|  |  |  | zIndex: -1 | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | if (!result.canPlace) { | 
|---|
|  |  |  | //调用自动排版 | 
|---|
|  |  |  | this.layoutDiagram() | 
|---|
|  |  |  | } | 
|---|
|  |  |  | this.graph.addEdge({ | 
|---|
|  |  |  | source: {cell: graphNodeStartNode, port: 'right1'}, | 
|---|
|  |  |  | target: {cell: result.newStartNode, port: 'left1'}, | 
|---|
|  |  |  | router: { | 
|---|
|  |  |  | name: 'manhattan', | 
|---|
|  |  |  | args: { | 
|---|
|  |  |  | startDirections: ['top','bottom'], // 从下方开始 | 
|---|
|  |  |  | endDirections: ['left'],      // 向左方结束 | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | connector: {name: 'rounded'} | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | this.graph.addEdge({ | 
|---|
|  |  |  | source: {cell: result.newEndNode, port: 'right1'}, | 
|---|
|  |  |  | target: {cell: graphNode, port: 'left1'}, | 
|---|
|  |  |  | router: { | 
|---|
|  |  |  | name: 'manhattan', | 
|---|
|  |  |  | args: { | 
|---|
|  |  |  | startDirections: ['top','bottom'], // 从下方开始 | 
|---|
|  |  |  | endDirections: ['left'],      // 向左方结束 | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | connector: {name: 'rounded'} | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | addNodeAndConnect(targetNode, dragNode, centerX, centerY) { // graphCell是画布上原有的节点。dragNode是当前拖拽的节点 | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | leftTopX = centerX - width / 2 | 
|---|
|  |  |  | leftTopY = centerY - height / 2 | 
|---|
|  |  |  | let canPlace = true; | 
|---|
|  |  |  | if (!this.canPlace(targetNode, dragNode, {leftTopX, leftTopY, width, height})) { | 
|---|
|  |  |  | return false | 
|---|
|  |  |  | canPlace = false | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (dragNodeType === 'node' || dragNodeType === 'dashedBox') { | 
|---|
|  |  |  | dragNode.position(leftTopX, leftTopY) | 
|---|
|  |  |  | return {newStartNode: dragNode, newEndNode: dragNode} | 
|---|
|  |  |  | return {newStartNode: dragNode, newEndNode: dragNode, canPlace: canPlace} | 
|---|
|  |  |  | } else if (dragNodeType === 'bridgeConnection') { | 
|---|
|  |  |  | return this.createBridgeConnection(leftTopX, leftTopY, dragNode) | 
|---|
|  |  |  | return { | 
|---|
|  |  |  | ...this.createBridgeConnection(leftTopX, leftTopY, dragNode), | 
|---|
|  |  |  | ...{canPlace: canPlace} | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | return this.createParallelBrach(leftTopX, centerY, dragNode) | 
|---|
|  |  |  | return { | 
|---|
|  |  |  | ...this.createParallelBrach(leftTopX, centerY, dragNode), | 
|---|
|  |  |  | ...{canPlace: canPlace} | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // 相交的边 | 
|---|
|  |  |  | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | centerX = dragNode.position().x + dragNode.getBBox().width / 2 | 
|---|
|  |  |  | centerY = source.position().y + source.getBBox().height / 2 | 
|---|
|  |  |  | if (target.getData().nodeType === 'node') { | 
|---|
|  |  |  | if (target.getData().nodeType === 'node' || target.getData().nodeType === 'dashedBox') { | 
|---|
|  |  |  | centerY = target.position().y + target.getBBox().height / 2 | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | let endNode = this.graph.getCellById(endNodeId) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (startNode && endNode) { | 
|---|
|  |  |  | let isRight = true; | 
|---|
|  |  |  | let startPort = 'right1' | 
|---|
|  |  |  | let endPort = 'left1' | 
|---|
|  |  |  | let routerStart = ['right']; | 
|---|
|  |  |  | let routerEnd = ['left']; | 
|---|
|  |  |  | if (this.isTopBottom(graphEdge)) { | 
|---|
|  |  |  | startPort = 'bottom1' | 
|---|
|  |  |  | endPort = 'top1' | 
|---|
|  |  |  | routerStart = ['top', 'bottom']; | 
|---|
|  |  |  | routerEnd = ['top', 'bottom']; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | let isRight = true; | 
|---|
|  |  |  | if (this.hasOtherLineToMyLine(graphEdge.id)) { | 
|---|
|  |  |  | let leftX = startNode.position().x + startNode.getBBox().width | 
|---|
|  |  |  | let rightX = endNode.position().x | 
|---|
|  |  |  | 
|---|
|  |  |  | isRight = false | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | let result = this.addNodeAndConnect(null, dragNode, centerX, centerY) | 
|---|
|  |  |  | if (!result) { | 
|---|
|  |  |  | dragNode.remove() | 
|---|
|  |  |  | this.$message({message: '没有足够的空间放置该节点,请扩大剩余空间', type: 'warning'}) | 
|---|
|  |  |  | return | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (isRight) { | 
|---|
|  |  |  | graphEdge.target = {cell: result.newStartNode.id, port: endPort} | 
|---|
|  |  |  | if (endNode.getData()) { | 
|---|
|  |  |  | if ("parallel,vote,bridge".indexOf(endNode.getData().nodeType) > -1) { | 
|---|
|  |  |  | isRight = false | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | let result = this.addNodeAndConnect(null, dragNode, centerX, centerY) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (isRight) { | 
|---|
|  |  |  | graphEdge.target = {cell: result.newStartNode.id} | 
|---|
|  |  |  | this.graph.addEdge({ | 
|---|
|  |  |  | source: {cell: result.newEndNode, port: startPort}, | 
|---|
|  |  |  | target: {cell: endNode, port: endPort}, | 
|---|
|  |  |  | source: {cell: result.newEndNode}, | 
|---|
|  |  |  | target: {cell: endNode}, | 
|---|
|  |  |  | router: { | 
|---|
|  |  |  | name: 'manhattan', | 
|---|
|  |  |  | args: { | 
|---|
|  |  |  | startDirections: ['top','bottom'], // 从下方开始 | 
|---|
|  |  |  | endDirections: ['left'],      // 向左方结束 | 
|---|
|  |  |  | startDirections: routerStart, // 从下方开始 | 
|---|
|  |  |  | endDirections: routerEnd,      // 向左方结束 | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | connector: {name: 'rounded'} | 
|---|
|  |  |  | connector: {name: 'rounded'}, | 
|---|
|  |  |  | zIndex: -1 | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | this.graph.addEdge({ | 
|---|
|  |  |  | source: {cell: startNode, port: startPort}, | 
|---|
|  |  |  | target: {cell: result.newStartNode, port: endPort}, | 
|---|
|  |  |  | source: {cell: startNode}, | 
|---|
|  |  |  | target: {cell: result.newStartNode}, | 
|---|
|  |  |  | router: { | 
|---|
|  |  |  | name: 'manhattan', | 
|---|
|  |  |  | args: { | 
|---|
|  |  |  | startDirections: ['top','bottom'], // 从下方开始 | 
|---|
|  |  |  | endDirections: ['left'],      // 向左方结束 | 
|---|
|  |  |  | startDirections: routerStart, // 从下方开始 | 
|---|
|  |  |  | endDirections: routerEnd,      // 向左方结束 | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | connector: {name: 'rounded'} | 
|---|
|  |  |  | connector: {name: 'rounded'}, | 
|---|
|  |  |  | zIndex: -1 | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | graphEdge.source = {cell: result.newEndNode.id, port: startPort} | 
|---|
|  |  |  | graphEdge.source = {cell: result.newEndNode.id} | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (!result.canPlace) { | 
|---|
|  |  |  | this.layoutDiagram() | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // graphEdge.remove() | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | dragNode.setData({startNodeId: connectNode.id}) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | this.graph.addEdge({ | 
|---|
|  |  |  | source: {cell: connectNode, port: 'right1'}, | 
|---|
|  |  |  | target: {cell: dashedBox, port: 'left1'}, | 
|---|
|  |  |  | source: {cell: connectNode}, | 
|---|
|  |  |  | target: {cell: dashedBox}, | 
|---|
|  |  |  | router: { | 
|---|
|  |  |  | name: 'manhattan', | 
|---|
|  |  |  | args: { | 
|---|
|  |  |  | startDirections: ['top','bottom'], // 从下方开始 | 
|---|
|  |  |  | startDirections: ['right'], // 从下方开始 | 
|---|
|  |  |  | endDirections: ['left'],      // 向左方结束 | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | connector: {name: 'rounded'} | 
|---|
|  |  |  | connector: {name: 'rounded'}, | 
|---|
|  |  |  | zIndex: -1 | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | this.graph.addEdge({ | 
|---|
|  |  |  | source: {cell: dashedBox, port: 'right1'}, | 
|---|
|  |  |  | target: {cell: dragNode, port: 'left1'}, | 
|---|
|  |  |  | source: {cell: dashedBox}, | 
|---|
|  |  |  | target: {cell: dragNode}, | 
|---|
|  |  |  | router: { | 
|---|
|  |  |  | name: 'manhattan', | 
|---|
|  |  |  | args: { | 
|---|
|  |  |  | startDirections: ['top','bottom'], // 从下方开始 | 
|---|
|  |  |  | startDirections: ['right'], // 从下方开始 | 
|---|
|  |  |  | endDirections: ['left'],      // 向左方结束 | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | connector: {name: 'rounded'} | 
|---|
|  |  |  | connector: {name: 'rounded'}, | 
|---|
|  |  |  | zIndex: -1 | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | return {newStartNode: connectNode, newEndNode: dragNode} | 
|---|
|  |  |  | /*        this.graph.addEdge({ | 
|---|
|  |  |  | 
|---|
|  |  |  | connector: {name: 'rounded'} | 
|---|
|  |  |  | })*/ | 
|---|
|  |  |  | this.graph.addEdge({ | 
|---|
|  |  |  | source: {cell: leftConnectNode, port: 'right1'}, | 
|---|
|  |  |  | target: {cell: leftTopDashedBox, port: 'left1'}, | 
|---|
|  |  |  | source: {cell: leftConnectNode}, | 
|---|
|  |  |  | target: {cell: leftTopDashedBox}, | 
|---|
|  |  |  | router: { | 
|---|
|  |  |  | name: 'manhattan', | 
|---|
|  |  |  | args: { | 
|---|
|  |  |  | startDirections: ['top','bottom'], // 从下方开始 | 
|---|
|  |  |  | endDirections: ['left'],      // 向左方结束 | 
|---|
|  |  |  | startDirections: ['top', 'bottom'], | 
|---|
|  |  |  | endDirections: ['left'], | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | connector: {name: 'rounded'}, | 
|---|
|  |  |  | zIndex: -1 | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | this.graph.addEdge({ | 
|---|
|  |  |  | source: {cell: leftConnectNode, port: 'right1'}, | 
|---|
|  |  |  | target: {cell: leftBottomDashedBox, port: 'left1'}, | 
|---|
|  |  |  | source: {cell: leftConnectNode}, | 
|---|
|  |  |  | target: {cell: leftBottomDashedBox}, | 
|---|
|  |  |  | router: { | 
|---|
|  |  |  | name: 'manhattan', | 
|---|
|  |  |  | args: { | 
|---|
|  |  |  | startDirections: ['top','bottom'], // 从下方开始 | 
|---|
|  |  |  | startDirections: ['top', 'bottom'], // 从下方开始 | 
|---|
|  |  |  | endDirections: ['left'],      // 向左方结束 | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | connector: {name: 'rounded'}, | 
|---|
|  |  |  | zIndex: -1 | 
|---|
|  |  |  | }) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | let edgeTop = this.graph.addEdge({ | 
|---|
|  |  |  | source: {cell: leftTopDashedBox, port: 'right1'}, | 
|---|
|  |  |  | target: {cell: rightTopDashedBox, port: 'left1'}, | 
|---|
|  |  |  | source: {cell: leftTopDashedBox}, | 
|---|
|  |  |  | target: {cell: rightTopDashedBox}, | 
|---|
|  |  |  | router: { | 
|---|
|  |  |  | name: 'manhattan', | 
|---|
|  |  |  | args: { | 
|---|
|  |  |  | startDirections: ['top','bottom'], // 从下方开始 | 
|---|
|  |  |  | startDirections: ['right'], // 从下方开始 | 
|---|
|  |  |  | endDirections: ['left'],      // 向左方结束 | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | connector: {name: 'rounded'}, | 
|---|
|  |  |  | zIndex: -1 | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | let edgeBottom = this.graph.addEdge({ | 
|---|
|  |  |  | source: {cell: leftBottomDashedBox, port: 'right1'}, | 
|---|
|  |  |  | target: {cell: rightBottomDashedBox, port: 'left1'}, | 
|---|
|  |  |  | source: {cell: leftBottomDashedBox}, | 
|---|
|  |  |  | target: {cell: rightBottomDashedBox}, | 
|---|
|  |  |  | router: { | 
|---|
|  |  |  | name: 'manhattan', | 
|---|
|  |  |  | args: { | 
|---|
|  |  |  | startDirections: ['top','bottom'], // 从下方开始 | 
|---|
|  |  |  | startDirections: ['right'], // 从下方开始 | 
|---|
|  |  |  | endDirections: ['left'],      // 向左方结束 | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | connector: {name: 'rounded'}, | 
|---|
|  |  |  | zIndex: -1 | 
|---|
|  |  |  | }) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | this.graph.addEdge({ | 
|---|
|  |  |  | source: {cell: rightTopDashedBox, port: 'right1'}, | 
|---|
|  |  |  | target: {cell: rightConnectNode, port: 'left1'}, | 
|---|
|  |  |  | source: {cell: rightTopDashedBox}, | 
|---|
|  |  |  | target: {cell: rightConnectNode}, | 
|---|
|  |  |  | router: { | 
|---|
|  |  |  | name: 'manhattan', | 
|---|
|  |  |  | args: { | 
|---|
|  |  |  | startDirections: ['top','bottom'], // 从下方开始 | 
|---|
|  |  |  | endDirections: ['left'],      // 向左方结束 | 
|---|
|  |  |  | startDirections: ['right'], // 从下方开始 | 
|---|
|  |  |  | endDirections: ['top', 'bottom'],      // 向左方结束 | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | connector: {name: 'rounded'}, | 
|---|
|  |  |  | zIndex: -1 | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | this.graph.addEdge({ | 
|---|
|  |  |  | source: {cell: rightBottomDashedBox, port: 'right1'}, | 
|---|
|  |  |  | target: {cell: rightConnectNode, port: 'left1'}, | 
|---|
|  |  |  | source: {cell: rightBottomDashedBox}, | 
|---|
|  |  |  | target: {cell: rightConnectNode}, | 
|---|
|  |  |  | router: { | 
|---|
|  |  |  | name: 'manhattan', | 
|---|
|  |  |  | args: { | 
|---|
|  |  |  | startDirections: ['top','bottom'], // 从下方开始 | 
|---|
|  |  |  | endDirections: ['left'],      // 向左方结束 | 
|---|
|  |  |  | startDirections: ['right'], | 
|---|
|  |  |  | endDirections: ['top', 'bottom'], | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | connector: {name: 'rounded'}, | 
|---|
|  |  |  | zIndex: -1 | 
|---|
|  |  |  | }) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | this.graph.addEdge({ | 
|---|
|  |  |  | source: {cell: edgeTop}, | 
|---|
|  |  |  | target: {cell: alignCenterDashedBox, port: 'top1'}, | 
|---|
|  |  |  | target: {cell: alignCenterDashedBox}, | 
|---|
|  |  |  | router: { | 
|---|
|  |  |  | name: 'manhattan', | 
|---|
|  |  |  | args: { | 
|---|
|  |  |  | startDirections: ['top','bottom'], // 从下方开始 | 
|---|
|  |  |  | endDirections: ['left'],      // 向左方结束 | 
|---|
|  |  |  | startDirections: ['top', 'bottom'], // 从下方开始 | 
|---|
|  |  |  | endDirections: ['top', 'bottom'],      // 向左方结束 | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | connector: {name: 'rounded'}, | 
|---|
|  |  |  | zIndex: -1 | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | this.graph.addEdge({ | 
|---|
|  |  |  | source: {cell: alignCenterDashedBox, port: 'bottom1'}, | 
|---|
|  |  |  | source: {cell: alignCenterDashedBox}, | 
|---|
|  |  |  | target: {cell: edgeBottom}, | 
|---|
|  |  |  | router: { | 
|---|
|  |  |  | name: 'manhattan', | 
|---|
|  |  |  | args: { | 
|---|
|  |  |  | startDirections: ['top','bottom'], // 从下方开始 | 
|---|
|  |  |  | endDirections: ['left'],      // 向左方结束 | 
|---|
|  |  |  | startDirections: ['top', 'bottom'], // 从下方开始 | 
|---|
|  |  |  | endDirections: ['top', 'bottom'],      // 向左方结束 | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | connector: {name: 'rounded'}, | 
|---|
|  |  |  | zIndex: -1 | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | dragNode.remove() | 
|---|
|  |  |  | return {newStartNode: leftConnectNode, newEndNode: rightConnectNode} | 
|---|
|  |  |  | 
|---|
|  |  |  | return false | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | isTopBottom(edge) { | 
|---|
|  |  |  | if (edge.source.port === 'top1' || edge.source.port === 'bottom1' || edge.target.port === 'top1' || edge.target.port === 'bottom1') { | 
|---|
|  |  |  | if (this.hasTopBottom(edge.getRouter().args.startDirections) && this.hasTopBottom(edge.getRouter().args.endDirections)) { | 
|---|
|  |  |  | return true | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return false | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | hasTopBottom(object) { | 
|---|
|  |  |  | let result = false | 
|---|
|  |  |  | for (let a of object) { | 
|---|
|  |  |  | if (a == "top" || a == "bottom") { | 
|---|
|  |  |  | result = true | 
|---|
|  |  |  | break | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return result | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | isMultipleBrach(node) { | 
|---|
|  |  |  | let outEdges = this.getOutLinesOfNode(node) | 
|---|