JavaScript is required

虚拟连线与目标(RGFakeLine + RGConnectTarget

FakeLine 用于连线端点不是普通节点的场景。

它可以让线条连接到:

  • RGConnectTarget 包裹的自定义元素
  • 画布上的连接目标
  • 指定 id 的 HTML 元素
  • 通过自定义解析器提供几何信息的业务对象

1. 与普通连线的区别

普通连线(RGLine):

  • from/to 必须是节点 id。

虚拟连线(RGFakeLine):

  • from/to 可指向非节点目标。
  • 支持 fromType/toType 定义端点类型。
  • 不像普通结构线那样参与节点布局关系。

2. FakeLine 的增删改查

const fakeLine = {
  id: 'f1',
  from: 'node-a',
  to: 'target-element-1',
  text: 'A -> Target'
};

graphInstance.addFakeLines([fakeLine]);
const f1 = graphInstance.getFakeLineById('f1');

更新与删除:

graphInstance.updateLine('f1', { text: 'Updated FakeLine' });
graphInstance.removeFakeLineById('f1');

3. 配合 RGConnectTarget 使用

React 示例:

<RGConnectTarget targetId="target-element-1">
  <div style={{ width: '80px', height: '30px' }}>可连接目标</div>
</RGConnectTarget>

当 FakeLine 的 from/to 指向该 targetId 时,线条可连接到该元素。

4. 端点类型(fromType / toType

内置支持的端点类型包括:

  • 普通节点
  • 节点内部连接点
  • 画布连接点
  • HTML 元素 id

对于自定义业务对象类型,需要使用 setFakeLineTargetRender

5. 通过 setFakeLineTargetRender 连接任意对象

graphInstance.setFakeLineTargetRender((targetType, targetId, fakeLine) => {
  if (targetType === 'myGroup') {
    return {
      x: 200,
      y: 150,
      nodeShape: 0, // rect/circle 枚举值
      el_W: 100,
      el_H: 50
    };
  }
  return null;
});

该函数返回目标对象的几何信息,图谱据此渲染 FakeLine。

6. 实践建议

  • 在初始化 FakeLine 数据前先注册自定义 target render。
  • target id 必须稳定可追踪。
  • FakeLine 非常适合编辑器中的分组、泳道、面板锚点等场景。
  • 无法解析目标几何信息时,FakeLine 无法正确渲染。

7. 下一步阅读