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

news/2025/2/25 9:20:36

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

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

javascript">const { updateEdge, addEdges, addNodes} = useVueFlow()
javascript">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实现可变流程图

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

javascript">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>

接下来定义查询坐标方法

javascript">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>


http://www.niftyadmin.cn/n/5865312.html

相关文章

2 算法1-2 明明的随机数

题目描述 明明想在学校中请一些同学一起做一项问卷调查&#xff0c;为了实验的客观性&#xff0c;他先用计算机生成了 N 个 1 到 1000 之间的随机整数 (N≤100)&#xff0c;对于其中重复的数字&#xff0c;只保留一个&#xff0c;把其余相同的数去掉&#xff0c;不同的数对应着…

互联网上门洗衣洗鞋小程序

洗衣洗鞋小程序必备功能&#xff1a; 1. 在线下单上门取送&#xff1a;用户随时下单&#xff0c;享受上门取送服务&#xff0c;方便快捷。 2. 拼团洗鞋&#xff1a;拼团享优惠&#xff0c;吸引更多订单。 3. 抽奖砍价&#xff1a;通过抽奖、砍价等活动&#xff0c;提升用户参与…

1.适配器模式

概述 适配器模式&#xff1a;将一个类的接口转换成客户希望的另一个接口&#xff0c;使得原本不兼容的类可以一起工作。 适配器模式在业务场景中非常有用&#xff0c;尤其是在系统集成、接口兼容性处理以及代码复用等场景。以下是一个实际的业务场景示例&#xff1a; 业务场景…

【Rust中级教程】2.9. API设计原则之显然性(obvious) :文档与类型系统、语义化类型、使用“零大小”类型

喜欢的话别忘了点赞、收藏加关注哦&#xff08;加关注即可阅读全文&#xff09;&#xff0c;对接下来的教程有兴趣的可以关注专栏。谢谢喵&#xff01;(&#xff65;ω&#xff65;) 2.9.1. 文档与类型系统 用户可能不会完全理解API的所有规则和限制。所以你写的API应该让你…

双指针1:283. 移动零

双指针的基本思想&#xff1a; 首先根据异地操作确定指针的基本步骤&#xff0c;再将异地操作优化成原地操作的双指针解法 链接&#xff1a;283. 移动零 - 力扣&#xff08;LeetCode&#xff09; 题解&#xff1a; 异地操作&#xff1a;fast指针指向原数组&#xff0c;slow指…

tableau之人口金字塔、漏斗图、箱线图

一、人口金字塔 人口金字塔在本质上就是成对的条形图 人口金字塔是一种特殊的旋风图 1、数据处理 对异常数据进行处理 2、创建人口金字塔图 将年龄进行分桶 将男女人数数据隔离开 分别绘制两个条形图 双击男性条形图底部&#xff0c;将数据进行翻转&#xff08;倒序&a…

本周行情——250222

本周A股行情展望与策略 结合近期盘面特征及市场主线演化&#xff0c;本周A股预计延续结构性分化行情&#xff0c;科技成长与政策催化板块仍是资金主战场&#xff0c;但需警惕高标股分歧带来的波动。以下是具体分析与策略建议&#xff1a; 1. 行情核心驱动因素 主线延续性&…

JavaScript系列(86)--现代构建工具详解

JavaScript 现代构建工具详解 &#x1f528; 现代前端开发离不开构建工具&#xff0c;它们帮助我们处理模块打包、代码转换、资源优化等任务。让我们深入了解主流的构建工具及其应用。 构建工具概述 &#x1f31f; &#x1f4a1; 小知识&#xff1a;构建工具主要解决代码转换…