Skip to content

Commit cb6759b

Browse files
authored
Merge pull request #1542 from wuchenguang1998/selection-edge-drag
fix:修复polyline调整后,被框选拖动而出现回退的问题
2 parents bc553cb + 317ba22 commit cb6759b

File tree

2 files changed

+24
-7
lines changed

2 files changed

+24
-7
lines changed

packages/core/src/model/GraphModel.ts

+15-7
Original file line numberDiff line numberDiff line change
@@ -1013,16 +1013,24 @@ class GraphModel {
10131013
const edgeModel = this.edges[i];
10141014
const { x, y } = edgeModel.textPosition;
10151015
const sourceMoveDistance = nodeIdMap[edgeModel.sourceNodeId];
1016+
const targetMoveDistance = nodeIdMap[edgeModel.targetNodeId];
10161017
let textDistanceX;
10171018
let textDistanceY;
1018-
if (sourceMoveDistance) {
1019+
if (sourceMoveDistance
1020+
&& targetMoveDistance
1021+
&& edgeModel.modelType === ModelType.POLYLINE_EDGE) {
1022+
// 移动框选区时,如果边polyline在框选范围内,则边的轨迹pointsList也要整体移动
10191023
[textDistanceX, textDistanceY] = sourceMoveDistance;
1020-
edgeModel.moveStartPoint(textDistanceX, textDistanceY);
1021-
}
1022-
const targetMoveDistance = nodeIdMap[edgeModel.targetNodeId];
1023-
if (targetMoveDistance) {
1024-
[textDistanceX, textDistanceY] = targetMoveDistance;
1025-
edgeModel.moveEndPoint(textDistanceX, textDistanceY);
1024+
edgeModel.updatePointsList(textDistanceX, textDistanceY);
1025+
} else {
1026+
if (sourceMoveDistance) {
1027+
[textDistanceX, textDistanceY] = sourceMoveDistance;
1028+
edgeModel.moveStartPoint(textDistanceX, textDistanceY);
1029+
}
1030+
if (targetMoveDistance) {
1031+
[textDistanceX, textDistanceY] = targetMoveDistance;
1032+
edgeModel.moveEndPoint(textDistanceX, textDistanceY);
1033+
}
10261034
}
10271035
if (sourceMoveDistance || targetMoveDistance) {
10281036
// https://github.com/didi/LogicFlow/issues/1191

packages/core/src/model/edge/PolylineEdgeModel.ts

+9
Original file line numberDiff line numberDiff line change
@@ -297,6 +297,15 @@ export default class PolylineEdgeModel extends BaseEdgeModel {
297297
this.updatePoints();
298298
}
299299

300+
@action
301+
updatePointsList(deltaX, deltaY): void {
302+
this.pointsList.forEach(item => {
303+
item.x += deltaX;
304+
item.y += deltaY;
305+
});
306+
this.initPoints();
307+
}
308+
300309
@action
301310
dragAppendStart() {
302311
// mobx observer 对象被iterator处理会有问题

0 commit comments

Comments
 (0)