import { BezierEdge, BezierEdgeModel } from '@logicflow/core'; class CustomEdge2 extends BezierEdge { } class CustomEdgeModel2 extends BezierEdgeModel { getEdgeStyle() { const style = super.getEdgeStyle(); // svg属性 style.strokeWidth = 1; style.stroke = '#ababac'; return style; } /** * 重写此方法,使保存数据是能带上锚点数据。 */ getData() { const data = super.getData(); data.sourceAnchorId = this.sourceAnchorId; data.targetAnchorId = this.targetAnchorId; return data; } /** * 给边自定义方案,使其支持基于锚点的位置更新边的路径 */ updatePathByAnchor() { // TODO const sourceNodeModel = this.graphModel.getNodeModelById(this.sourceNodeId); const sourceAnchor = sourceNodeModel .getDefaultAnchor() .find((anchor) => anchor.id === this.sourceAnchorId); const targetNodeModel = this.graphModel.getNodeModelById(this.targetNodeId); const targetAnchor = targetNodeModel .getDefaultAnchor() .find((anchor) => anchor.id === this.targetAnchorId); const startPoint = { x: sourceAnchor.x, y: sourceAnchor.y, }; this.updateStartPoint(startPoint); const endPoint = { x: targetAnchor.x, y: targetAnchor.y, }; this.updateEndPoint(endPoint); // 这里需要将原有的pointsList设置为空,才能触发bezier的自动计算control点。 this.pointsList = []; this.initPoints(); } } export default { type: 'edge-sql', view: CustomEdge2, model: CustomEdgeModel2, };