LogicFlow icon indicating copy to clipboard operation
LogicFlow copied to clipboard

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

Open ProgrammerLrk opened this issue 2 years ago • 2 comments

问题背景

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

提案

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

相关信息

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

ProgrammerLrk avatar Oct 08 '23 02:10 ProgrammerLrk

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

wumail avatar Oct 08 '23 03:10 wumail

@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上进行调整。

ProgrammerLrk avatar Oct 08 '23 03:10 ProgrammerLrk