【数据流图】用JointJs实现数据流图(一)

一、效果图

2022-06-22 10.34.32.gif

二、为什么选用JointJs?

  • 节点是动态绘制的
  • JointJs绘制流向线条时不会遮挡住下方的节点元素,方便绑定事件做拓展
  • JointJs提供丰富的API,虽然比较底层但是拓展灵活
  • 连线不仅可以通过坐标点连接,还可直接根据节点连接

三、什么是JointJs?

JointJS: Visualize and interact with diagrams and graphs.

创建静态图表或完全交互式图表工具,例如工作流编辑器、流程管理工具、IVR 系统、API 集成器、演示应用程序等等。

  • demo网址:https://resources.jointjs.com/demos#jointjs
  • API文档:https://resources.jointjs.com/docs/jointjs/v3.5/joint.html

四、绘制流图方式

1. 绘制带箭头的连线

箭头link由joint.shapes.standard.Link实现

// 创建一个线条元素
let link = new joint.shapes.standard.Link(linkInfo);
// 设置线条属性-颜色
link.attr('line/stroke', '#FF620C');
// 设置线条属性-粗细
link.attr('line/strokeWidth', 1.5);
// 设置线条属性-箭头样式
link.attr({line: {targetMarker: {type: 'path','stroke-width': 1,fill: '#FF620C',d: 'M 8 -4 0 0 8 4 Z'}}
});
// 将线条添加至画布
link.addTo(this.graph);

2. 绘制流动点

圆点的播放动画由joint.dia.Link与linkView实现

// 创建Link元素(linkInfo为自定义)
let paperLink = new joint.dia.Link(linkInfo);
// 隐藏Link线条
paperLink.attr({'.connection': { stroke: 'none' }
});
// 添加Link到画布
paperLink.addTo(this.graph);
// 定义流动点样式
let vCircle = V('circle', {r: 5,fill: color
});
// 找到Link对应的LinkView
let paperLinkView = paperLink.findView(this.paper);
// 将点与LinkView绑定
paperLinkView.sendToken(vCircle, 4000);

3. 绘制流动动画

通过interval来循环播放动画

// 定时器循环播放
this.dataInterval = setInterval(() => {paperLinkView.sendToken(vCircle, 4000);
}, 5000);

4. 自定义连线信息

其中linkInfo为自定义,可以使用起点元素id与终点元素id,也可使用起点元素坐标与终点元素坐标,以官方文档link的使用为准

  • 使用节点连接
let linkInfo={source: node1,target: node2
}
  • 使用坐标连接
let linkInfo={source:{x:0,y:0},target: {x: 100,y: 100}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/9591.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何使用Vite快速构建vue项目

1、在自己定义的目录下打开cmd命令窗口:如文件夹目录上面输入cmd回车就可以打开 2、检查 node环境:通过node --version看版本号表示安装好了 3、 使用Vite 快速构建Vue项目 npm init vitelatest qiuqiu.admin 注意:如何你电脑没有装vite首…

PCIE协议-2-事务层规范---事务描述符

2.2.6.1 概览 事务描述符是请求者和完成器之间传输事务信息的机制。事务描述符由三个字段组成: 事务ID:标识未完成的事务属性字段:定义事务的特征流量类别(TC)字段:将事务与所需的服务类型关联起来 图2-…

EasyHPC - PyTorch入门教程【笔记】

内容来源:超算习堂 (easyhpc.net) 文章目录 01 Tensors环境要求1.1 Tensors1.1.1 直接创建tensor1.1.2 在现有tensor中创建tensor1.1.3 从NumPy中创建tensor 1.2 基本运算1.2.1 使用运算符1.2.2 调用方法 1.3 CUDA Tensors 02 Autograd2.1 Tensor2.2 Gradient 03 Ne…

实现流程化办公,可了解一下可视化报表开源

当前,实现流程化办公早已成为众多中小企业的发展目标和趋势。可以借助什么样的软件平台实现这一目标?低代码技术平台拥有可视化操作界面、够灵活、易维护等优势特点,在助力企业实现流程化办公、数字化转型方面具有重要的应用价值和推动作用。…

[华为OD] C卷 田忌赛马 DFS 200

题目: 给定两个只包含数字的数组a, b,调整数组a里面数字的顺序,使得尽可能多的a[i] >b[i]。 数组a和b中的数字各不相同。 输出所有可以达到最优结果的a数组的数量 输入描述 输入的第一行是数组a中的数字,其中只包含数字,每…

【0002day】HistCite的使用

HistCite是一个很好的软件,可以找出一个领域中具有代表性的几篇文章。同时使用也比较方便,因而我学习了一下它,并做一下记录。 分析过程 首先,需要选择核心数据库,然后依据关键字进行检索。 检索出来后,将…

Secure Transformer Inference Made Non-interactive

目录 1.概述2.Attention2.1 Matrix multiplication (ciphertext-plaintext).2.2 Matrix multiplication (ciphertext-ciphertext)2.3 Placement of bootstrapping3.SIMD密文压缩和解压缩4.SIMD槽折叠5.实验结果 1.概述 我们提出了NEXUS,这是第一个用于安全变压器推…

变老相机app

变老相机app 在手机上使用“变老相机”app,其中的时光穿梭功能可以生成10岁、20岁、50岁、70岁的照片 目的 得到未来自己的照片,能够更有效地督促我们为老年的自己存款。

记录minio的bug(Object name contains unsupported characters.)

场景是我将后端服务从121.xxx.xxx.xxx服务器上转移到了另一台服务器10.xxx.xxx.xxx 但图片都还在121.xxx.xxx.xxx服务器上,同样我10.xxx.xxx.xxx也安装了minio并且我的后端服务配置的minio地址也是10.xxx.xxx.xxx 此时有一个业务通过minio客户端获取图片&#xf…

矩阵和空间变换理解

矩阵和空间变换 把向量和矩阵相乘看作是空间变换,是其中一种看法 代数角度:向量的一行和矩阵的一列逐项相乘再相加等于新向量的一项 w代表原来坐标轴和新坐标轴之间的变换关系,而a和b体现的是原来向量的关系 矩阵代表的是旧坐标和新坐标之间…

Wireshark明文抓取

目录 原理 配置 1、配置环境变量 2、Wireshark配置 原理 SSLKEYLOGFILE是一个用于记录SSL/TLS会话中使用的密钥的文件。它主要用于调试和分析SSL/TLS协议。当启用了SSLKEYLOGFILE配置,系统会将所有SSL/TLS会话中使用的密钥记录到指定的文件中。这些密钥可以用来…

day04—java基础之方法详解

方法概述 方法是具有特定功能的代码集合,由于我们是把重复的代码写到方法当中,以后要用直接调用方法即可,不需要再写一遍了。代码相当于只写了一遍。所以可以提高代码的复用性。如果要修改代码,我们也只要修改一处即可&#xff0…

Qt常用基础控件总结

一、按钮部件 按钮部件共同特性 Qt 用于描述按钮部件的类、继承关系、各按钮的名称和样式,如下图: 助记符:使用字符"&“可在为按钮指定文本标签时设置快捷键,在&之后的字符将作为快捷键。比如 “A&BC” 则 Alt+B 将成为该按钮的快捷键,使用”&&qu…

springcloud整合网关(springcloud-gateway)

pom引入依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependency><!-- 服务注册 --><dependency><groupId>com.alibaba.cloud</groupId&…

Linux增加硬盘分区并挂载(各个云平台操作)

第一部分&#xff0c;增加硬盘 1.购买硬盘并选择云服务器 输入lsblk 命令后即可看到刚刚添加的硬盘了 vdb就是新添加的硬盘名称了 第二部分 对硬盘进行分区处理 然后对新建磁盘进行分区 输入命令fdisk /dev/vdb 输入lsblk -f 命令查看刚刚建好的分区(看到多余的sdc不用在意…

设计模式Java实现-工厂模式

✨这里是第七人格的博客✨小七&#xff0c;欢迎您的到来~✨ &#x1f345;系列专栏&#xff1a;设计模式&#x1f345; ✈️本篇内容: 工厂模式✈️ &#x1f371;本篇收录完整代码地址&#xff1a;https://gitee.com/diqirenge/design-pattern &#x1f371; 楔子 记得刚…

WAGO系统 远程代码执行漏洞复现(CVE-2023-1698)

0x01 产品简介 WAGO是一家专业从事电气互连、自动化和接口电子技术的公司。 0x02 漏洞概述 在 WAGO 的多个产品中,一个漏洞允许未经身份验证的远程攻击者创建新用户并更改设备配置,可导致远程RCE、拒绝服务等使整个系统受损。 0x03 影响范围 751-9301 Compact Controll…

2W,3KVDC隔离 定电压输入,稳压单、双路输出DC-DC模块电源——TPI-2W 系列

TPI-2W系列产品是专门针对PCB上需要与输入电源隔离的电源应用场合而设计的。该产品适用于&#xff1a;1&#xff09;输入电源的电压变化≤5%&#xff1b;2&#xff09;输入输出之间要求隔离电压≥3000VDC&#xff1b;3&#xff09;对输出电压稳定和输出纹波噪声要求高.

达梦数据刷盘测试

达梦数据库为了保证数据故障恢复的一致性&#xff0c;REDO 日志的刷盘必须在数据页刷盘之前进行。 下面我们通过测试来验证是不是这样 执行我们事先准备的SHELL脚本 可以看到第一次strings文件没有输出&#xff0c;说明刚写的数据在数据库的BUFFER缓冲区内&#xff0c;还没有刷…