前端绘制流程图、泳道图

这篇具有很好参考价值的文章主要介绍了前端绘制流程图、泳道图。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

技术栈

使用logicFlow插件绘制。
原生HTML页面也可以,vue或react前端框架也可以,官网有详细安装方法,本文章后面也会详细说明。
官网链接: logicFlow官网地址

需求

前端绘制泳道图结合流程图,达到如下效果
前端泳道图,具体业务专栏,流程图,前端
当然如果仅仅只是长成这样,想必大家用canvas或者svg画图都能解决一大半。
还需要页面能够识别节点所在的泳道,可能节点拖拽拉长后会跨多个泳道,要能知道每个节点移动后从属于哪些泳道(即节点权限问题)。

安装LogicFlow

直接用script引入

在原生html中直接通过script标签引入

<!--LogicFlow core包css-->
<link
  rel="stylesheet"
  href="https://cdn.jsdelivr.net/npm/@logicflow/core/dist/style/index.css"
/>
<!--LogicFlow extension包css-->
<link
  rel="stylesheet"
  href="https://cdn.jsdelivr.net/npm/@logicflow/extension/lib/style/index.css"
/>
<!--LogicFlow core包js-->
<script src="https://cdn.jsdelivr.net/npm/@logicflow/core/dist/logic-flow.js"></script>
<!--LogicFlow的插件支持单个引入,这里以菜单插件为例-->
<script src="https://cdn.jsdelivr.net/npm/@logicflow/extension/lib/Menu.js"></script>

这些都是通过官网cdn引入文件,也可以将文件下载到本地引入。

使用 npm 引入

npm install @logicflow/core
npm install @logicflow/extension

绘制一个简单的流程图

import LogicFlow from "@logicflow/core";
import "@logicflow/core/dist/style/index.css";

const lf = new LogicFlow({
  container: document.querySelector("#app"),
  grid: true,
});
lf.render({
  nodes: [
    {
      id: "1",
      type: "rect",
      x: 100,
      y: 100,
      text: "节点1",
    },
    {
      id: "2",
      type: "circle",
      x: 300,
      y: 200,
      text: "节点2",
    },
  ],
  edges: [
    {
      sourceNodeId: "1",
      targetNodeId: "2",
      type: "polyline",
      text: "连线",
    },
  ],
});

绘制泳道

泳道可以用svg或canvas绘制,或者简单点也可以直接用div布局绘制
前端泳道图,具体业务专栏,流程图,前端

前端泳道图,具体业务专栏,流程图,前端
多行多列就可以了。

逻辑交互

最后,如何判断节点从属于哪些泳道呢?
没错,没有简单地办法,就是自己写个小方法用坐标去和泳道的宽高对比
小技巧:logicFlow中lf.getDataById(id)可以获取节点或者连线的具体数据,lf.getNodeDataById(id)也可以获取节点的具体数据,id是节点的id。

// 获取节点的具体数据
console.log(lf.getNodeDataById('1')) 
// { "id": "1", "type": "rect", "x": 75, "y": 68, "properties": { "nodeSize": { "width": 90, "height": 60 } }, "text": { "x": 75, "y": 68, "value": "任务节点1" } }

注意,如果初始化时没有写入"properties": { “nodeSize”: { “width”: 90, “height”: 60 } }时,上面方法获取到的properties字段是空的,可以在初始化节点时就写入默认的properties: { nodeSize: { width: 90, height: 60 } }

上面的x和y就是当前节点的坐标,注意,是以画布左上角点为原点,节点的中心点的坐标。nodesize中的就是节点的宽和高
我们将左边列的表头最上面和画布对齐,上面表头的下边和画布对齐,就可以根据表头的宽高来计算节点的泳道位置了

testNodeBelong(id) {
			// 测试节点从属的泳道
          let nodeYData = this.lf.getDataById(id);
          //测试节点从属    81为每个泳道的高
          start = Math.floor(
            (nodeYData?.y - nodeYData?.properties?.nodeSize?.height / 2) /
              swim.height
          );
          end = Math.floor(
            (nodeYData?.y + nodeYData?.properties?.nodeSize?.height / 2) /
              swim.height
          );
          let Arr = [];
          for (let i in this.columns) {
            if (i >= start && i <= end) {
              Arr.push(this.columns[i].value);
            }
          }
          window.alert(Arr);
        },

columns是竖表头的内容,包含表头的值和表头的高文章来源地址https://www.toymoban.com/news/detail-820806.html

columns: [
            { value: "产品经理", height: "80px" },
            { value: "泳道图1", height: "80px" },
            { value: "泳道图2", height: "80px" },
            { value: "泳道图3", height: "80px" },
            { value: "泳道图4", height: "80px" },
            { value: "泳道图5", height: "80px" },
            { value: "泳道图6", height: "80px" },
            { value: "泳道图7", height: "80px" },
            { value: "泳道图8", height: "80px" },
          ],

到了这里,关于前端绘制流程图、泳道图的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 优秀的流程图应该怎样绘制呢?

    优秀的流程图应该怎么绘制呢? 本文将带大家学习优秀流程图的绘制要点和技巧,以及讲解流程图与UML活动图、BPMN图之间的关系和区别。 1、认识流程图流程图简单讲就是用图描述流程,这种流程可以是一种有先后顺序的操作组成,可以是系统的输入到输出的整个环节的描述

    2024年02月06日
    浏览(46)
  • 如何在 XMind 中绘制流程图

    XMind 是专业强大的思维导图软件,由于其结构没有任何限制,很多朋友特别喜欢用它来绘制流程图。禁不住大家的多次询问,今天 XMind 酱就将这简单的流程图绘图方法分享给大家。 在 XMind 中,绘制流程图的主角是「自由主题」和「联系」。它们可以打破思维导图的限制,让

    2024年02月10日
    浏览(36)
  • 论文的技术路线流程图如何绘制?

      本文介绍基于 Visio 软件绘制 技术路线图 、 流程图 、 工作步骤图 等的方法。   首先打开 Visio 。我们可以直接选择“ 基本框图 ”进行绘制。   也可以选用一些模板。   本次我们就以“流程图”为例来绘制。   因为要绘制论文的技术路线图,因此各种形状简

    2024年02月05日
    浏览(30)
  • markdown绘制流程图相关代码片段记录

    有时候会使用typora来绘制一些流程图,进行编码之类的工作,在网络搜集了一些笔记,做个记录,方便日后进行复习,相关的记录如下: 每次作图时,代码以「graph 布局方向」开头,如: TB(Top Bottom)表示从上向下布局,另外三种是 BT LR(Left Right) RL 不同种类的括号对应不

    2024年02月19日
    浏览(36)
  • 推荐两款开源的绘制流程图软件

            目前流程图绘制软件非常多,包括本机安装的、web端的都有,如Visio、Graphviz、processOn等等。但是几乎都是收费的。本文给大家介绍两款优秀的开源免费的流程图绘制软件。 目录 一句话导读 一、draw.io 二、Meta2d.js ​1.为什么使用 2.开发文档 官网:draw.io (drawio.com) 开源

    2024年02月10日
    浏览(39)
  • Springboot +Flowable,通过代码绘制流程图并设置高亮

    通过代码绘制一张流程图,并设置成高亮。 首先先来看一下绘制出来的效果图,截图如下: 已经执行的节点和连线用红色标记出来,大致上就是这么一个效果。 将一个流程图绘制成图片,相关的 API 在 flowable 中其实都是有提供的,流程图片的绘制,是根据流程的定义来绘制

    2024年02月02日
    浏览(34)
  • BPMNJS插件使用及汉化(Activiti绘制流程图插件)

    BPMNJS插件运行最重要的就是需要安装nodejs插件,这 一定要安装和测试好 。 主要是使用npm命令 1.1.1、下载nodejs 下载地址:https://nodejs.org/en  1.1.2、安装nodejs,傻瓜式安装 安装之后在安装目录下创建node_cache和node_global两个目录 如果目录已经存在可以不创建 node_cache:作为缓存路

    2024年02月14日
    浏览(28)
  • Vue使用AntV X6绘制流程图(组态呈现)

    先上几个网址 AntV | 蚂蚁数据可视化 AntV X6 图编辑引擎 AntV X6文档 AntV X6 API AntV X6图表示例 上面是一些用到的网址,先说下我项目中的需求,就是要自己绘制出一个我们想要的图,组态化呈现出来,然后这个图中会有很多节点,每个节点都会有自己的状态 ,状态会实时改变,

    2024年02月06日
    浏览(42)
  • Selenium 学习(0.17)——软件测试之流程图绘制方法

            病假5天,出去野20天,成功错过了慕课网上的期末考试。         害,都怪玩乐太开心了……         反正咱又不指着全靠这个行当来吃饭,错过也就错过了,立的Flag能抢救一下还是要抢救一下吧。【这个其实早都会画了,而且基本也正确,既然是学习,还

    2024年02月03日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包