@@ -78,10 +78,37 @@ export class ProximityConnect {
78
78
} ,
79
79
)
80
80
// 节点、锚点拖拽结束事件
81
- this . lf . graphModel . eventCenter . on ( 'node:drop,anchor:dragend ' , ( ) => {
81
+ this . lf . graphModel . eventCenter . on ( 'node:drop' , ( ) => {
82
82
if ( ! this . enable ) return
83
83
this . handleDrop ( )
84
84
} )
85
+ // 锚点拖拽需要单独判断一下当前拖拽终点是否在某个锚点上,如果是,就不触发插件的连线,以免出现创建了两条连线的问题,表现见 issue 2140
86
+ this . lf . graphModel . eventCenter . on ( 'anchor:dragend' , ( { e, edgeModel } ) => {
87
+ if ( ! this . enable ) return
88
+ const {
89
+ canvasOverlayPosition : { x : eventX , y : eventY } ,
90
+ } = this . lf . graphModel . getPointByClient ( {
91
+ x : e . clientX ,
92
+ y : e . clientY ,
93
+ } )
94
+
95
+ if ( edgeModel && this . virtualEdge ) {
96
+ const { id : virtualEdgeId } = this . virtualEdge as BaseEdgeModel
97
+ const { targetNodeId } = edgeModel as BaseEdgeModel
98
+ const targetNodeModel =
99
+ this . lf . graphModel . getNodeModelById ( targetNodeId )
100
+ const dropPointIsAnchor = targetNodeModel ?. anchors . some ( ( anchor ) => {
101
+ const { x, y } = anchor
102
+ return Math . abs ( eventX - x ) <= 10 && Math . abs ( eventY - y ) <= 10
103
+ } )
104
+ if ( dropPointIsAnchor ) {
105
+ this . lf . deleteEdge ( virtualEdgeId )
106
+ return
107
+ }
108
+ }
109
+
110
+ this . handleDrop ( )
111
+ } )
85
112
}
86
113
87
114
// 节点拖拽动作
@@ -335,6 +362,7 @@ export class ProximityConnect {
335
362
336
363
// 增加实体边
337
364
addActualEdge ( ) {
365
+ console . log ( 'addActualEdge' )
338
366
if ( isNil ( this . virtualEdge ) ) return
339
367
const {
340
368
type,
@@ -346,6 +374,7 @@ export class ProximityConnect {
346
374
endPoint,
347
375
pointsList,
348
376
} = this . virtualEdge
377
+ this . lf . deleteEdge ( this . virtualEdge . id )
349
378
this . lf . addEdge ( {
350
379
type,
351
380
sourceNodeId,
@@ -356,7 +385,6 @@ export class ProximityConnect {
356
385
endPoint,
357
386
pointsList,
358
387
} )
359
- this . lf . deleteEdge ( this . virtualEdge . id )
360
388
}
361
389
362
390
// 设置虚拟边样式
0 commit comments