1. 定义:

链接桩是节点上的固定连接点,很多图应用都有链接桩,并且有些应用还将链接桩分为输入链接桩和输出连接桩。

  1. 创建连接桩

(1)默认样式

{tagName: 'circle',selector: 'circle',attrs: {r: 10,fill: '#fff',stroke: '#000',},
}

(2)自定义样式

使用链接桩分组来定义链接桩样式,使该组中的链接桩具有相同的行为和样式。具体的属性及参数配置见官网:https://antv-x6.gitee.io/zh/docs/tutorial/basic/port

graph.addNode({id: item.id || "",shape: "custom-vue-node", // 指定用何种图形,默认值 'rect',这里使用的vue自定义节点x: 0,y: 0,width: 165,height: 370,angle: 0,zIndex: 99,ports: {groups: {// 输入链接桩群组定义inPort: {position: {name: "line", //连接桩位置按照指定线分布,其他取值还有//1、left,right,top,bottom//2、line:沿着指定线//3、.ellipse:沿椭圆弧分布//4、ellipseSpread:沿椭圆均匀分布args: {start: { x: 0, y: 28 + 169 + 25 + 10 },end: { x: 0, y: 28 + 169 + 25 + 10 + 140 },},},label: {position: "right",},zIndex: 9999,attrs: {text: {fill: "#bcc9d4",fontSize: 12,},circle: {r: 3,magnet: true,stroke: "#fff",strokeWidth: 2,fill: "#4c4f55",},},},//输出连接桩定义outPort: {position: {name: "line",args: {start: { x: 165, y: 60 },end: { x: 165, y: 140 },},},zIndex: 9999,attrs: {text: {fill: "#bcc9d4",fontSize: 12,},circle: {r: 3,magnet: true,stroke: "#fff",strokeWidth: 2,fill: "4c4f55",},},},},items: [{id: "action-1",group: "inPort",attrs: {text: {text: "请求数据接口",},},},{id: "action-2",group: "inPort",attrs: {text: {text: "导入数据接口",},},},{id: "action-3",group: "inPort",attrs: {text: {text: "移动",},},},{id: "action-4",group: "inPort",attrs: {text: {text: "显示",},},},{id: "action-5",group: "inPort",attrs: {text: {text: "隐藏",},},},{id: "action-6",group: "inPort",attrs: {text: {text: "切换显隐状态",},},},{id: "event-1",group: "outPort",attrs: {text: {text: "当数据接口请求完成时",},},},{id: "event-2",group: "outPort",attrs: {text: {text: "当数据接口请求失败时",},},},{id: "event-3",group: "outPort",attrs: {text: {text: "当被点击时",},},},],},});

效果图如下:

  1. 连接桩交互

官网没有提供属性来设置连接桩分类为输入桩和输出桩,但是提供了几个方法来进行连线限制,如下:

(1)validateMagnet

点击 magnet 时 根据 validateMagnet 返回值来判断是否新增边,触发时机是 magnet 被按下,如果返回 false,则没有任何反应,如果返回 true,会在当前 magnet 创建一条新的边。

validateMagnet({ e, magnet, view, cell }) {console.log(magnet, 'validateMagnet----');if (!magnet) return false;const port = magnet.getAttribute('port-group');if (!['outPort'].includes(port)) {return false;}return true},

(2)validateConnection

在移动边的时候判断连接是否有效,如果返回 false,当鼠标放开的时候,不会连接到当前元素,否则会连接到当前元素。

validateConnection({sourceMagnet, targetMagnet}) {console.log(sourceMagnet, targetMagnet, 'validateConnection----')if (!targetMagnet || !sourceMagnet) return false;//输入桩限制const inPort = targetMagnet.getAttribute('port-group');if (!['inPort'].includes(inPort)) {return false;}//输出桩限制const outPort = sourceMagnet.getAttribute('port-group');if (['outPort'].includes(outPort)) {return true} else {return false}}

(3)validateEdge

当停止拖动边的时候根据 validateEdge 返回值来判断边是否生效,如果返回 false, 该边会被清除。

validateEdge({ edge, type, previous }) {return false
}

antv x6 连接桩相关推荐

  1. AntV X6流程图绘制程序(官方示例纯javascript+html+css)

    直接拷贝可用,需要引入官方的x6.js(AntV X6)  antvx6-flow: antv x6实现流程画图 (gitee.com) <!DOCTYPE html> <html ...

  2. 【VUE3+AntV X6】 引入ANTV X6 的流程图编辑器应用(一)

    ANTV X6 流程图编辑器应用 唠唠叨叨 事发背景 实现效果 实现思路 总结 参考资料 唠唠叨叨 唉!最近感觉非常忙,要学的东西太多,要实现的方法变幻莫测,层出不穷,越学越觉得自己不会的实在太多.项 ...

  3. antv x6 v2 使用笔记

    基础 注意版本,x6不同版本对React的要求是不同的,也需要注意插件版本,不同版本的x6的api可能是不同的 x6 是一个图引擎,多用来画多节点关系的图 最重要的概念就是 节点 Node 和 边 E ...

  4. 在 Vue3 中使用 AntV X6

    在 Vue3 中使用 AntV X6 图编辑引擎 <script setup lang="ts"> import { onMounted, ref } from 'vu ...

  5. 记录--VUE使用antv X6实现流程图

    安装npm install @antv/x6 --save 引入import { Graph, Addon } from "@antv/x6"; 说明:如果没有自定义拖拽到画布的需 ...

  6. AntV X6流程图绘制程序

    (官方示例纯javascript+html+css) 直接拷贝可用,需要引入官方的x6.js(AntV X6) antvx6-flow: antv x6实现流程画图 <!DOCTYPE html ...

  7. Vue项目中使用AntV X6绘制流程图

    Vue项目中使用AntV X6绘制流程图 一.需求 在Vue2.x(Vue3.x项目同理)项目中使用AntV X6组件库绘制流程图,需要实现以下需求: 需求1:左侧菜单中的模块可以拖拽进入画布中生成对 ...

  8. Vue3 项目中使用 AntV X6 绘制流程图

    X6 是 AntV 旗下的图编辑引擎,提供了一系列开箱即用的交互组件和简单易用的节点定制能力,方便我们快速搭建流程图.DAG 图.ER 图等图应用. 参考一些网站的写法,然后自己加上了撤销操作. 节点 ...

  9. Antv X6 画布平移

    Antv x6想要实现鼠标拖拽时平移画布,需要加上以下属性即可: panning: true // 拖拽平移 代码布局: 文档地址 效果图如下:

最新文章

  1. Java后端WebSocket的Tomcat实现
  2. Oracle数据库 之 删除RMAN备份
  3. 13 vue学习 package.json
  4. 罗永浩直播带货观后感!首秀破纪录,罗永浩直播带货清单及感受
  5. fprintf与fwrite的区别
  6. Android Git 常用命令和规范
  7. tkmybatis 子查询_日均20亿流量:携程机票查询系统的架构升级
  8. MacOS/MacBook设置短语快捷键
  9. 进程控制1--fork vfork函数
  10. 嵌入式Linux入门13:应用层调试
  11. 《Ray Tracing in One Weekend》——Chapter 11: Defocus Blur
  12. redis各种数据结构在项目中的应用场景
  13. [DELPHI] 使用mod函数换行
  14. 【软件相关】Multisim完整教程
  15. vnr懒人版教程_【转载】Galgame老司机实用工具:VNR使用教程
  16. 今天的骑行路线。。。
  17. [bzoj4134]ljw和lzr的hack比赛
  18. 5.24 通过高级筛选功能将筛选结果放置在其它位置 [原创Excel教程]
  19. jar a java exception has occured_Java Virtual Machine报错:A Java Exception has occured
  20. 进入fastboot模式后,一连接刷机助手就变成press any key to shutdown

热门文章

  1. C语言数组fun函数逆置数组元素,C语言
  2. Reflective反射机制解析
  3. Linux的基础配置
  4. android p支持三星吗,三星 Note 9 配置曝光,或预装 Android P
  5. 情绪分析,词性分析和词义消歧
  6. 薄荷英语10月26(心理学百科)
  7. 《hadoop进阶》web日志系统 KPI指标的分析与实现
  8. 几个获取英文单词发音的链接
  9. 海康威视错误代码0xf_海康威视设备网络SDK编程指南(报 警主机).pdf
  10. Alamofire学习(一)网络基础