didi / didi/LogicFlow

[Bug Report]: 更新节点宽高时边路径不跟随变化

Open
#2,011 1 comment 0 reactions 1 assignee Claimed by @DymoneLewis View on GitHub
core: edge core: node type:bug
Dominant language
TypeScript
Stars
11.7k
Forks
1.4k
PR merge metrics
No merged PRs in 30d

Description

### 发生了什么?

排查了一下1.0版本的demo里也复现了这个问题,应该是个陈年bug
https://codesandbox.io/p/devbox/logicflowdemo-g3nc5g
初步定位到问题的原因主要在于节点宽高变化后,对应的锚点坐标没有更新,从而导致边的起终点没变化的现象出现
核心只要解决锚点坐标不更新就行

目前尝试了一下比较可行的临时解决方案是手动删除再新增边:

const { nodes } = lfRef.current?.graphModel
nodes.forEach((node) => {
const {
incoming: { edges: incomingEdges },
outgoing: { edges: outgoingEdges },
} = node;
node.setProperties({
width: 20,
height: 100,
});
incomingEdges.forEach((edge) => {
const edgeInfo = edge.getData();
lfRef.current?.deleteEdge(edgeInfo.id);
lfRef.current?.addEdge({
sourceNodeId: edgeInfo.sourceNodeId,
targetNodeId: edgeInfo.targetNodeId,
sourceAnchorId: edgeInfo.sourceAnchorId,
targetAnchorId: edgeInfo.targetAnchorId,
type: edgeInfo.type,
properties: edgeInfo.properties,
})
});
outgoingEdges.forEach((edge) => {
const edgeInfo = edge.getData();
lfRef.current?.deleteEdge(edgeInfo.id);
lfRef.current?.addEdge({
sourceNodeId: edgeInfo.sourceNodeId,
targetNodeId: edgeInfo.targetNodeId,
sourceAnchorId: edgeInfo.sourceAnchorId,
targetAnchorId: edgeInfo.targetAnchorId,
type: edgeInfo.type,
properties: edgeInfo.properties,
})
});

修复方案。。。暂时还没有想的特别清楚,也欢迎看到的朋友一起讨论

### logicflow/core版本

1.x + 2.x

### logicflow/extension版本

-

### logicflow/engine版本

_No response_

### 浏览器&环境

Chrome

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.