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

使用Vue-Flow创建一个流程图可视化节点坐标查询器

在开发中遇到这样一个需求,需要后端返回数据前端网页生成流程图,由于流程图使用了Vue-Flow,所以需要坐标来辅助后端生成数据。

首先引入方法并定义添加节点数据

const { updateEdge, addEdges, addNodes} = useVueFlow()
const add_nodes = () => {
    const id = nodes.length + 1
    const newNode = {
        id: `${id}`,
        label: `Node ${id}`,
        position: { x: 100, y: 100 },
        sourcePosition: Position.Right,
        targetPosition: Position.Left,
    }
    addNodes([newNode])
    nodes.push(newNode)
}

nodes的数据结构请看这篇文章:基于Vue-Flow实现可变流程图

第二步将节点改为可连接节点

function onEdgeUpdateStart(edge) {
    console.log('start update', edge)
}

function onEdgeUpdateEnd(edge) {
    console.log('end update', edge)
}

function onEdgeUpdate({ edge, connection }) {
    updateEdge(edge, connection)
}

function onConnect(params) {
    addEdges([params])
}
<VueFlow 
    :nodes="nodes" 
    :edges="edges" 
    class="test" 
    ref="vue_flow" 
    @edge-update="onEdgeUpdate"
    @connect="onConnect"
    @edge-update-start="onEdgeUpdateStart" 
    @edge-update-end="onEdgeUpdateEnd">
</VueFlow>

接下来定义查询坐标方法

let position_data = reactive([])
let edge_position_data = reactive([])
const get_position = () => {
    position_data.splice(0, position_data.length)
    edge_position_data.splice(0, edge_position_data.length)
    for (let i = 0; i < vue_flow.value.nodes.length; i++) {
        let obj = {
            id: vue_flow.value.nodes[i].id,
            label: vue_flow.value.nodes[i].data.label,
            type: vue_flow.value.nodes[i].type,
            position: vue_flow.value.nodes[i].position
        }
        let edge_obg={
            id: vue_flow.value.edges[i].id,
            source: vue_flow.value.edges[i].source,
            target: vue_flow.value.edges[i].target,
            type: vue_flow.value.edges[i].type,
        }
        position_data.push(obj)
        edge_position_data.push(edge_obg)
    }
}

使用pre标签展示数据

<div id="show_node_msg_box">
    <pre><span>nodes:</span>{{position_data }}</pre>
    <pre><span>edges:</span>{{edge_position_data }}</pre>
</div>

相关文章:

  • SikuliX使用
  • java泛型是对范型参数类型的擦除
  • 自然语言处理:文本规范化
  • GDidees CMS v3.9.1本地文件泄露漏洞(CVE-2023-27179)
  • MSSQL2022的一个错误:未在本地计算机上注册“Microsoft.ACE.OLEDB.16.0”提供程序
  • 笔记二:整数和浮点数在内存中存储
  • 建模软件Blender与Blender GIS插件安装教程
  • spring-boot-starter和spring-boot-starter-web的关联
  • 如何搭建Web自动化测试框架?
  • MySQL 的索引类型有哪些?
  • SQLark 数据迁移|断点续迁已上线(Oracle-达梦)
  • 【JAVAEE】多线程
  • Day8、Vue3常见的几种API
  • MySQL保存超字段长度信息时如何正确截取
  • 【运维】SSH使用私钥打开隧道
  • 第一天vue学习
  • 《Effective Objective-C》阅读笔记(下)
  • staruml绘制时序图和用例图
  • 常用的AI文本大语言模型汇总
  • 【HarmonyOS Next】鸿蒙应用折叠屏设备适配方案
  • java 视频网站开发/域名备案查询系统
  • 国外代码开源网站/seo报告
  • 都有哪些js素材网站/培训师资格证怎么考
  • 免费微信小程序开店/河北网站seo地址
  • 手机网站开发注意/百度搜索风云榜明星
  • 传奇大气网站模板免费下载/如何推广一个项目