| | |
| | | let dragNodeType = dragNode.getData().nodeType |
| | | let offHeight = 50 |
| | | if (dragNodeType === 'node') { |
| | | offHeight = 50 |
| | | offHeight = 60 |
| | | } else if (dragNodeType === 'bridgeConnection') { |
| | | offHeight = 230 |
| | | offHeight = 175 |
| | | } else { |
| | | offHeight = 70 |
| | | } |
| | | let centerX = 0, centerY = 0; |
| | | |
| | | if (graphNodeType === 'dashedBox') { //虚框 |
| | | const edges = this.graph.getConnectedEdges(graphNode); // 获取画布上原有的节点所有进来的线 |
| | | let inEdges = edges.filter(edge => edge.target.cell === graphNode.id) |
| | |
| | | endNode = this.graph.getCellById(endNodeId) |
| | | } |
| | | if (startNode && endNode) { |
| | | let centerY = graphNode.position().y |
| | | let result = this.addNodeAndConnect(graphNode, dragNode, dragNode.position().x - dragNode.size().width/2, centerY) |
| | | 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'}) |
| | |
| | | let maxY = graphNode.position().y + graphNode.getBBox().height |
| | | |
| | | const edges = this.graph.getConnectedEdges(graphNode); // 获取画布上原有的节点所有进来的线 |
| | | // 获取连接线的路径数据 |
| | | let inEdges = edges.filter(edge => edge.target.cell === graphNode.id) |
| | | //遍历这个组合里面所有节点, 修改minY,maxY |
| | | |
| | | let pointXY = {minY: minY, maxY: maxY} |
| | | console.log(pointXY, 'old') |
| | | this.getYRange(inEdges, graphNodeStartNode, pointXY) |
| | | console.log(pointXY, 'new') |
| | | |
| | | let minX = graphNodeStartNode.position().x + graphNodeStartNode.getBBox().width |
| | | let minX = graphNodeStartNode.position().x + graphNode.getBBox().width+15 |
| | | let maxX = graphNode.position().x |
| | | let centerX = minX + (maxX - minX) / 2 |
| | | let centerY = graphNodeY - pointXY.minY > pointXY.maxY - graphNodeY ? pointXY.maxY + 30 : pointXY.minY - offHeight - 30 |
| | | let centerY = graphNodeY+ graphNode.getBBox().height/2 - pointXY.minY > pointXY.maxY - (graphNodeY+ graphNode.getBBox().height/2) ? |
| | | pointXY.maxY + offHeight/2 + 30 : pointXY.minY - offHeight/2 - 30 |
| | | |
| | | let result = this.addNodeAndConnect(null, dragNode, minX, centerY) |
| | | if (!result){ |
| | |
| | | }) |
| | | } |
| | | }, |
| | | addNodeAndConnect(targetNode, dragNode, leftX, centerY) { // graphCell是画布上原有的节点。dragNode是当前拖拽的节点 |
| | | let width =100, height = 80, leftTopX = leftX , leftTopY = centerY |
| | | addNodeAndConnect(targetNode, dragNode, centerX, centerY) { // graphCell是画布上原有的节点。dragNode是当前拖拽的节点 |
| | | let width =100, |
| | | height = 80, |
| | | leftTopX = centerX , |
| | | leftTopY = centerY |
| | | let dragNodeType = dragNode.getData().nodeType |
| | | if (dragNodeType === 'node') { |
| | | width =60 |
| | |
| | | height = 60 |
| | | } else if (dragNodeType === 'bridgeConnection') { |
| | | width =550 |
| | | height = 115 |
| | | leftTopX = leftX - width/2 |
| | | leftTopY = centerY - height/2 |
| | | // leftTopY = 240/2 |
| | | height = 175 |
| | | } else { |
| | | width =270 |
| | | height = 60 |
| | | } |
| | | |
| | | leftTopX = centerX - width/2 |
| | | leftTopY = centerY - height/2 |
| | | if (!this.canPlace(targetNode,dragNode,{leftTopX, leftTopY, width, height})){ |
| | | return false |
| | | } |
| | | |
| | | if (dragNodeType === 'node' || dragNodeType === 'dashedBox') { |
| | | dragNode.position(leftX, centerY) |
| | | dragNode.position(leftTopX, leftTopY) |
| | | return {newStartNode: dragNode, newEndNode: dragNode} |
| | | } else if (dragNodeType === 'bridgeConnection') { |
| | | return this.createBridgeConnection(leftTopX, leftTopY, dragNode) |
| | | } else { |
| | | return this.createParallelBrach(leftTopX, leftTopY, dragNode) |
| | | return this.createParallelBrach(leftTopX, centerY, dragNode) |
| | | } |
| | | }, |
| | | // 相交的边 |
| | | addNodeAndInsertEdge(graphEdge, dragNode) { |
| | | const Source = graphEdge.getSourceCell() |
| | | const Target = graphEdge.getTargetCell() |
| | | |
| | | let centerY = Source.position().y + Source.getBBox().height/2 |
| | | if (Target.getData().nodeType === 'node'){ |
| | | centerY = Target.position().y + Target.getBBox().height/2 |
| | | } |
| | | |
| | | console.log(Source,'Source 起始点信息') |
| | | console.log(Target,'Target 终止点信息') |
| | | console.log(Source.position().y,'起始点的Y坐标') |
| | | console.log(Target.position().y,'终止点的Y坐标') |
| | | let startNodeId = graphEdge.source.cell |
| | | let startNode = this.graph.getCellById(startNodeId) |
| | | let endNodeId = graphEdge.target.cell |
| | | let endNode = this.graph.getCellById(endNodeId) |
| | | if (startNode && endNode) { |
| | | let centerY = dragNode.position().y |
| | | let isRight = true; |
| | | let startPort = 'right1' |
| | | let endPort = 'left1' |
| | |
| | | router: {name: 'manhattan'}, |
| | | connector: {name: 'rounded'} |
| | | }) |
| | | |
| | | } else { |
| | | this.graph.addEdge({ |
| | | source: {cell: startNode, port: startPort}, |