当前位置: 首页 > news >正文

【前端】跟着maxkb学习logicflow流程图画法

文章目录

  • 背景
    • 1. 选定学习对象-maxkb应用逻辑编排
    • 2. 确定实现框架
    • 3. 关键逻辑:查看app-node.js
    • 4. 学习开始节点绘制
      • 流程数据形式
    • 5. 给节点增加表单输入框
    • 遇到过的问题

背景

看看前端如何绘制流程图,界面好看点。

  • "@logicflow/core": "1.2.27",
    
  • "@logicflow/extension": "1.2.27",
    

1. 选定学习对象-maxkb应用逻辑编排

在这里插入图片描述

2. 确定实现框架

maxkb采用vue3 + ts + logicflow实现上面的界面,我们选择vue2 + js跟着学。

3. 关键逻辑:查看app-node.js

import { HtmlResize } from '@logicflow/extension'

app-node.js是maxkb的基础节点, 所有的节点基本都是由此扩展而来,以开始节点为例,其定义的js为:

import StartNodeVue from './index.vue'
import { AppNode, AppNodeModel } from '@/workflow/common/app-node'
class StartNode extends AppNode {constructor (props) {super(props, StartNodeVue)}
}
export default {type: 'start-node',model: AppNodeModel,view: StartNode
}

而配置开始节点的属性字段、通过表单录入的逻辑则是在startNode/index.vue中编写。

4. 学习开始节点绘制

我们绘制一个demo级别的开始节点,通过logicflow
在这里插入图片描述
可以看到很简陋,那么我们尝试自定义节点样式,通过logicflow提供的html节点方法。
在这里插入图片描述

流程数据形式

{"nodes": [{"id": "1","type": "start-node","x": 580,"y": 160,"properties": {"name": "Default Node","body": "Node content"}},{"id": "2","type": "end-node","x": 1160,"y": 160,"properties": {"name": "Default Node","body": "Node content"}}],"edges": [{"id": "0cc6a7da-1a06-4f7e-b792-dc11c8c91c97","type": "bezier","sourceNodeId": "1","targetNodeId": "2","startPoint": {"x": 730,"y": 160},"endPoint": {"x": 1010,"y": 160},"properties": {},"pointsList": [{"x": 730,"y": 160},{"x": 830,"y": 160},{"x": 910,"y": 160},{"x": 1010,"y": 160}]}]
}

5. 给节点增加表单输入框

vue节点组件中,emit回传数据, 然后通过this.lf.on处理属性更新。
需要注意input框使用@blur监听, 如果是@input可能需要防抖处理。

this.lf.on("update:properties", (model) => { // 处理节点emit回来的事件数据this.lf.setProperties(model.id, model.properties);
});

在这里插入图片描述

遇到过的问题

  • 节点有几个锚点,以及锚点坐标位置定义 ok
  • 通过vue + js 定义一个自定义节点 ok
  • 拖拽生成节点 no
  • 点击锚点上的加号, 选择下一步节点 no

http://www.mrgr.cn/news/99183.html

相关文章:

  • UWP特性分析
  • 第七节:React HooksReact 18+新特性-并发模式(Concurrent Mode)解决了什么问题?
  • Golang 的 GMP 协程模型详解
  • 32-工艺品商城小程序
  • 33-公交车司机管理系统
  • 嵌入式硬件常用总线接口知识体系总结和对比
  • (二)mac中Grafana监控Linux上的MySQL(Mysqld_exporter)
  • 线性代数 | 知识点整理 Ref 1
  • Redis 事件循环(Event Loop)
  • RV1126网络环境TFTPNFS搭建(四)
  • 系统与网络安全------弹性交换网络(1)
  • 大数据应用开发——大数据平台集群部署(三)
  • 用Python玩转倒排索引:从原理到实战的趣味之旅
  • Semaphore的核心机制
  • Webview+Python:用HTML打造跨平台桌面应用的创新方案
  • 云梦数据平台
  • 小红书爬虫,小红书api,小红书数据挖掘
  • 滑动时间窗口实现重试限流
  • Linux 入门:基础开发工具(下)git,cgdb操作指南
  • ZYNQ笔记(十):XADC (PS XDAC 接口)