Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Bug report] 自定义边 pointsList,当保存的数据,再次拖动分组的大小时,连接线位置异常 #1269

Closed
xjikun opened this issue Aug 8, 2023 · 6 comments
Labels
bug Something isn't working

Comments

@xjikun
Copy link

xjikun commented Aug 8, 2023

问题描述

请用简洁的语言描述你遇到的 bug,至少包括以下部分,如提供截图请尽量完整:

  1. 问题触发的条件,如何复现
    自定义边 pointsList,回显的数据,再次拖动分组的大小时,连接线位置异常
  2. 期望的表现
    点的位置不变
  3. 实际的表现
    连接线的位置发生异常

最简复现

一般来说通过文字和截图的描述我们很难定位到问题,为了帮助我们快速定位问题并修复,请选择以下方式编写并上传最简复现 demo:

  1. 复现demo: https://codesandbox.io/s/logicflow-base24-forked-q26t2w?file=/step_24_group/index.js

  2. 截图:
    image
    image

  3. 视频:

2023-08-08.13.53.25.mov
2023-08-08.15.09.48.mov

相关信息 context

LogicFlow Version:
Node Version:
Platform:

@boyongjiong boyongjiong added the bug Something isn't working label Aug 8, 2023
@xjikun
Copy link
Author

xjikun commented Aug 8, 2023

应该是框架计算了最短连接路径导致的,但是这样就改变了 连接线的箭头走向,导致业务表达有误,怎么可以禁止这个默认事件呢

@wumail
Copy link
Collaborator

wumail commented Aug 8, 2023

应该是框架计算了最短连接路径导致的,但是这样就改变了 连接线的箭头走向,导致业务表达有误,怎么可以禁止这个默认事件呢

分组大小改变前的线是用的mock初始化数据中的pointsList,分组Resize之后用的是自定义的pointsList

解决:
1、将logicflow/core和logicflow/extension版本升级至1.2.10,可以解决外部连线startPoint和endPoint位置错误的问题
2、自定义pointsList的时候因为你需要在内部进行连线,所以endPoint和startPoint 你需要自己考虑一下,用logicflow内部计算出来的endPoint和startPoint是不符合你预期的

@xjikun
Copy link
Author

xjikun commented Aug 8, 2023

应该是框架计算了最短连接路径导致的,但是这样就改变了 连接线的箭头走向,导致业务表达有误,怎么可以禁止这个默认事件呢

分组大小改变前的线是用的mock初始化数据中的pointsList,分组Resize之后用的是自定义的pointsList

解决: 1、将logicflow/core和logicflow/extension版本升级至1.2.10,可以解决外部连线startPoint和endPoint位置错误的问题 2、自定义pointsList的时候因为你需要在内部进行连线,所以endPoint和startPoint 你需要自己考虑一下,用logicflow内部计算出来的endPoint和startPoint是不符合你预期的

第二个视频的场景:

  1. 自定义了边组件
  2. 根据updatePoints来更新pointsList
    image
    当画线的时候 用上面的更新没有问题,但是当分组Resize,不太明白该怎么去处理endPoint 和 startPoint

@wumail
Copy link
Collaborator

wumail commented Aug 8, 2023

应该是框架计算了最短连接路径导致的,但是这样就改变了 连接线的箭头走向,导致业务表达有误,怎么可以禁止这个默认事件呢

分组大小改变前的线是用的mock初始化数据中的pointsList,分组Resize之后用的是自定义的pointsList
解决: 1、将logicflow/core和logicflow/extension版本升级至1.2.10,可以解决外部连线startPoint和endPoint位置错误的问题 2、自定义pointsList的时候因为你需要在内部进行连线,所以endPoint和startPoint 你需要自己考虑一下,用logicflow内部计算出来的endPoint和startPoint是不符合你预期的

第二个视频的场景:

  1. 自定义了边组件
  2. 根据updatePoints来更新pointsList
    image
    当画线的时候 用上面的更新没有问题,但是当分组Resize,不太明白该怎么去处理endPoint 和 startPoint

给的demo里有两种连线嘛,一种连接节点外部,另外一种连接节点外部
提供的demo里面logicflow版本是1.2.3,在我使用默认Polyline的情况下连线startPoint和endPoint位置仍然会出现错乱,但是升级到1.2.10之后消失了
初始化的时候直接使用的mock数据中的pointsList,就是没有resize时候的样子,resize时会走updatePoints的逻辑。正如你看到的,锚点会通过计算最短直线距离获得,这个逻辑是不符合你预期的,暂时需要做的是根据开始节点和结束节点的位置关系,计算得到符合预期的开始锚点、结束锚点的位置

@wumail wumail closed this as completed Aug 8, 2023
@wumail wumail reopened this Aug 8, 2023
@xjikun
Copy link
Author

xjikun commented Aug 9, 2023

应该是框架计算了最短连接路径导致的,但是这样就改变了 连接线的箭头走向,导致业务表达有误,怎么可以禁止这个默认事件呢

分组大小改变前的线是用的mock初始化数据中的pointsList,分组Resize之后用的是自定义的pointsList
解决: 1、将logicflow/core和logicflow/extension版本升级至1.2.10,可以解决外部连线startPoint和endPoint位置错误的问题 2、自定义pointsList的时候因为你需要在内部进行连线,所以endPoint和startPoint 你需要自己考虑一下,用logicflow内部计算出来的endPoint和startPoint是不符合你预期的

第二个视频的场景:

  1. 自定义了边组件
  2. 根据updatePoints来更新pointsList
    image
    当画线的时候 用上面的更新没有问题,但是当分组Resize,不太明白该怎么去处理endPoint 和 startPoint

给的demo里有两种连线嘛,一种连接节点外部,另外一种连接节点外部 提供的demo里面logicflow版本是1.2.3,在我使用默认Polyline的情况下连线startPoint和endPoint位置仍然会出现错乱,但是升级到1.2.10之后消失了 初始化的时候直接使用的mock数据中的pointsList,就是没有resize时候的样子,resize时会走updatePoints的逻辑。正如你看到的,锚点会通过计算最短直线距离获得,这个逻辑是不符合你预期的,暂时需要做的是根据开始节点和结束节点的位置关系,计算得到符合预期的开始锚点、结束锚点的位置

通过保存锚点信息的方式解决了,感谢解答🙏
https://site.logic-flow.cn/docs/#/zh/guide/basic/edge?id=%e4%bf%9d%e5%ad%98%e9%94%9a%e7%82%b9%e4%bf%a1%e6%81%af

@wumail
Copy link
Collaborator

wumail commented Aug 9, 2023

应该是框架计算了最短连接路径导致的,但是这样就改变了 连接线的箭头走向,导致业务表达有误,怎么可以禁止这个默认事件呢

分组大小改变前的线是用的mock初始化数据中的pointsList,分组Resize之后用的是自定义的pointsList
解决: 1、将logicflow/core和logicflow/extension版本升级至1.2.10,可以解决外部连线startPoint和endPoint位置错误的问题 2、自定义pointsList的时候因为你需要在内部进行连线,所以endPoint和startPoint 你需要自己考虑一下,用logicflow内部计算出来的endPoint和startPoint是不符合你预期的

第二个视频的场景:

  1. 自定义了边组件
  2. 根据updatePoints来更新pointsList
    image
    当画线的时候 用上面的更新没有问题,但是当分组Resize,不太明白该怎么去处理endPoint 和 startPoint

给的demo里有两种连线嘛,一种连接节点外部,另外一种连接节点外部 提供的demo里面logicflow版本是1.2.3,在我使用默认Polyline的情况下连线startPoint和endPoint位置仍然会出现错乱,但是升级到1.2.10之后消失了 初始化的时候直接使用的mock数据中的pointsList,就是没有resize时候的样子,resize时会走updatePoints的逻辑。正如你看到的,锚点会通过计算最短直线距离获得,这个逻辑是不符合你预期的,暂时需要做的是根据开始节点和结束节点的位置关系,计算得到符合预期的开始锚点、结束锚点的位置

通过保存锚点信息的方式解决了,感谢解答🙏 https://site.logic-flow.cn/docs/#/zh/guide/basic/edge?id=%e4%bf%9d%e5%ad%98%e9%94%9a%e7%82%b9%e4%bf%a1%e6%81%af

这样确实更好

@wumail wumail closed this as completed Aug 9, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

3 participants