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

[Feature Request]希望增加edgeGenerator、addEdge等API中对锚点的支持; #1358

Open
ProgrammerLrk opened this issue Oct 8, 2023 · 2 comments

Comments

@ProgrammerLrk
Copy link

问题背景

如果同一个节点有多个锚点,并且不同锚点用于连接不同类型边时,目前的API无法支持;
比如在一种路线图中,节点上黑色锚点拖出默认类型的边(没有属性),橙色锚点拖出故障类型的边,故障类型的边在连接完成后需要维护故障类型、故障原因等。

提案

希望可以在edgeGenerator、addEdge等API的入参中增加锚点信息;

相关信息

我尝试过写了一个代理边,能用但是有点别扭。
现在是在edge:add回调里调用changeEdgeType,也很别扭。

@wumail
Copy link
Collaborator

wumail commented Oct 8, 2023

可以监听anchor:drop事件(会透传开始节点的model、锚点信息、生成边的model),在回调中处理边相关的内容

@ProgrammerLrk
Copy link
Author

ProgrammerLrk commented Oct 8, 2023

@wumail
你好,这样跟我现在用edge:add事件的思路类似,还是要在edge创建完成后,通过changeEdgeType去切换类型,省掉了中间获取锚点信息的步骤;这是我现在的写法:

  // edge:add事件中,将默认边类型根据锚点类型切换为对应的边类型
  logicFlowInst.on('edge:add', ({data}) => {
    // 将临时连接改为目标连接
    if (data.type !== EDGE_TYPE.TEMPORARY) {
      return;
    }
    const tempEdge = logicFlowInst.graphModel.getEdgeModelById(data.id);
    const actualEdgeType = tempEdge.targetAnchorId.split('@')[1];
    logicFlowInst.graphModel.changeEdgeType(data.id, actualEdgeType);
  });

希望增加的对锚点的支持不仅于此,还有比如说在多锚点的节点上通过addEdge添加边的时候也没办法指定锚点,部分情况回显的时候会出现问题。导致我在遇到这种情况的时候,只能导出整个json保存。
所以还是希望能在api上进行调整。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants