antv x6 连接桩
定义:
链接桩是节点上的固定连接点,很多图应用都有链接桩,并且有些应用还将链接桩分为输入链接桩和输出连接桩。
创建连接桩
(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)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 连接桩相关推荐
- AntV X6流程图绘制程序(官方示例纯javascript+html+css)
直接拷贝可用,需要引入官方的x6.js(AntV X6) antvx6-flow: antv x6实现流程画图 (gitee.com) <!DOCTYPE html> <html ...
- 【VUE3+AntV X6】 引入ANTV X6 的流程图编辑器应用(一)
ANTV X6 流程图编辑器应用 唠唠叨叨 事发背景 实现效果 实现思路 总结 参考资料 唠唠叨叨 唉!最近感觉非常忙,要学的东西太多,要实现的方法变幻莫测,层出不穷,越学越觉得自己不会的实在太多.项 ...
- antv x6 v2 使用笔记
基础 注意版本,x6不同版本对React的要求是不同的,也需要注意插件版本,不同版本的x6的api可能是不同的 x6 是一个图引擎,多用来画多节点关系的图 最重要的概念就是 节点 Node 和 边 E ...
- 在 Vue3 中使用 AntV X6
在 Vue3 中使用 AntV X6 图编辑引擎 <script setup lang="ts"> import { onMounted, ref } from 'vu ...
- 记录--VUE使用antv X6实现流程图
安装npm install @antv/x6 --save 引入import { Graph, Addon } from "@antv/x6"; 说明:如果没有自定义拖拽到画布的需 ...
- AntV X6流程图绘制程序
(官方示例纯javascript+html+css) 直接拷贝可用,需要引入官方的x6.js(AntV X6) antvx6-flow: antv x6实现流程画图 <!DOCTYPE html ...
- Vue项目中使用AntV X6绘制流程图
Vue项目中使用AntV X6绘制流程图 一.需求 在Vue2.x(Vue3.x项目同理)项目中使用AntV X6组件库绘制流程图,需要实现以下需求: 需求1:左侧菜单中的模块可以拖拽进入画布中生成对 ...
- Vue3 项目中使用 AntV X6 绘制流程图
X6 是 AntV 旗下的图编辑引擎,提供了一系列开箱即用的交互组件和简单易用的节点定制能力,方便我们快速搭建流程图.DAG 图.ER 图等图应用. 参考一些网站的写法,然后自己加上了撤销操作. 节点 ...
- Antv X6 画布平移
Antv x6想要实现鼠标拖拽时平移画布,需要加上以下属性即可: panning: true // 拖拽平移 代码布局: 文档地址 效果图如下:
最新文章
- Java后端WebSocket的Tomcat实现
- Oracle数据库 之 删除RMAN备份
- 13 vue学习 package.json
- 罗永浩直播带货观后感!首秀破纪录,罗永浩直播带货清单及感受
- fprintf与fwrite的区别
- Android Git 常用命令和规范
- tkmybatis 子查询_日均20亿流量:携程机票查询系统的架构升级
- MacOS/MacBook设置短语快捷键
- 进程控制1--fork vfork函数
- 嵌入式Linux入门13:应用层调试
- 《Ray Tracing in One Weekend》——Chapter 11: Defocus Blur
- redis各种数据结构在项目中的应用场景
- [DELPHI] 使用mod函数换行
- 【软件相关】Multisim完整教程
- vnr懒人版教程_【转载】Galgame老司机实用工具:VNR使用教程
- 今天的骑行路线。。。
- [bzoj4134]ljw和lzr的hack比赛
- 5.24 通过高级筛选功能将筛选结果放置在其它位置 [原创Excel教程]
- jar a java exception has occured_Java Virtual Machine报错:A Java Exception has occured
- 进入fastboot模式后,一连接刷机助手就变成press any key to shutdown