vue 基于antV 实现流程图编辑器代码

news2024/11/26 2:31:43

最近在做流程图功能开发,发现阿里antV 有对应的可视化引擎,于是自己做了一个简单vue 基于antV 实现流程图编辑器代码

部分代码如下:

<template>
  <div id="flowEditorContent">
    <header>
      <h3>antv X6 流程编辑器</h3>
      <div class="right">
        <el-button type="primary" size="min" @click="save">保存</el-button>
        <el-button type="warning" size="min" @click="show">回显</el-button>
      </div>
    </header>
    <div class="flowEditor" id="container"></div>
  </div>
</template>
<style lang="scss" scoped>
  header {
    display: flex;
    justify-content: space-between;
    position: relative;
    z-index: 1;
    padding: 0 20px;
    height: 50px;
    line-height: 50px;
    margin-bottom: 2px;
    box-shadow: 0 2px 5px #ccc;
    background: #5f95ff;
    h3 {
      text-align: left;
      color: #fff;
      font-size: 23px;
      font-weight: bolder;
    }
    ::v-deep.el-button {
      height: 30px;
      line-height: 30px;
      padding: 0 10px;
      span {
        color: #fff;
      }
    }
  }
  #container {
    min-width: 400px;
    height: calc(100vh - 50px);
    display: flex;
    border: 1px solid #dfe3e8;
  }
</style>
const graph = new Graph({
        container: document.getElementById('graph-container'),
        grid: true,
        mousewheel: {
          enabled: true,
          zoomAtMousePosition: true,
          modifiers: 'ctrl',
          minScale: 0.5,
          maxScale: 3,
        },
        connecting: {
          router: 'manhattan',
          connector: {
            name: 'rounded',
            args: {
              radius: 8,
            },
          },
          anchor: 'center',
          connectionPoint: 'anchor',
          allowBlank: false,
          snap: {
            radius: 20,
          },
          createEdge () {
            return new Shape.Edge({
              attrs: {
                line: {
                  stroke: '#A2B1C3',
                  strokeWidth: 2,
                  targetMarker: {
                    name: 'block',
                    width: 12,
                    height: 8,
                  },
                },
              },
              zIndex: 0,
            });
          },
          validateConnection ({ targetMagnet }) {
            return !!targetMagnet;
          },
        },
        highlighting: {
          magnetAdsorbed: {
            name: 'stroke',
            args: {
              attrs: {
                fill: '#5F95FF',
                stroke: '#5F95FF',
              },
            },
          },
        },
      });
// delete
      graph.bindKey('backspace', () => {
        const cells = graph.getSelectedCells();
        if (cells.length) {
          graph.removeCells(cells);
        }
      });

      // zoom
      graph.bindKey(['ctrl+1', 'meta+1'], () => {
        const zoom = graph.zoom();
        if (zoom < 1.5) {
          graph.zoom(0.1);
        }
      });
      graph.bindKey(['ctrl+2', 'meta+2'], () => {
        const zoom = graph.zoom();
        if (zoom > 0.5) {
          graph.zoom(-0.1);
        }
      });
const showPorts = (ports, show) => {
        for (let i = 0, len = ports.length; i < len; i += 1) {
          ports[i].style.visibility = show ? 'visible' : 'hidden';
        }
      };
      graph.on('node:mouseenter', () => {
        const container = document.getElementById('graph-container');
        const ports = container.querySelectorAll(
          '.x6-port-body',
        );
        showPorts(ports, true);
      });
      graph.on('node:mouseleave', () => {
        const container = document.getElementById('graph-container');
        const ports = container.querySelectorAll(
          '.x6-port-body',
        );
        showPorts(ports, false);
      });

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

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

相关文章

iptables(4)规则匹配条件

简介 前面我们已经介绍了iptables的基本原理,表、链,数据包处理流程。如何查询各种表的信息。还有基本的增、删、改、保存的基础操作。 经过前文介绍,我们已经能够熟练的管理规则了,但是我们只使用过一种匹配条件,就是将”源地址”作为匹配条件。那么这篇文章中,我们就来…

搞IT需不需要考个软考中级?

如果你是在事业单位、银行、国企等体制内工作&#xff0c;建议考虑参加软考。通过软考评职称后&#xff0c;可以获得加薪和晋升的机会&#xff0c;而且晋升时也会更看重你的职称等级。我就是通过软考评定了中级职称&#xff0c;薪水涨了500元。 评职称并不仅仅是拿到证书就行&…

Talk|北京大学张嘉曌:NaVid - 视觉语言导航大模型

本期为TechBeat人工智能社区第602期线上Talk。 北京时间6月20日(周四)20:00&#xff0c;北京大学博士生—张嘉曌的Talk已经准时在TechBeat人工智能社区开播&#xff01; 他与大家分享的主题是: “NaVid - 视觉语言导航大模型”&#xff0c;NaVid是首个专为视觉语言导航&#xf…

在华为服务器上编译C++工程的若干错误以及排查方法和解决方法记录

目录 1 报错 2 查找错误原因 2.1 方法一&#xff1a;ldd命令 2.2 方法二&#xff1a;警告信息里面 3 解决错误 3.1 libpng16.so.16 和 libbrotlidec.so.1 问题 3.2 libdevmmap.so 和 libslog.so库问题 3.3 剩余错误 3.3.1 libacllite.so错误解决 3.3.2 libtaclstream…

方舟云康亏损收窄:三年近10亿销售成本,平均付费及月活仍大幅承压

《港湾商业观察》施子夫 三度递表后&#xff0c;终于通过聆讯&#xff0c;方舟云康控股有限公司(以下简称&#xff0c;方舟云康)有望近期内挂牌港交所。方舟云康的国内运营主体为广州方舟云康信息科技集团有限公司、广州方舟医药有限公司。 值得关注的是&#xff0c;亏损的难…

【Hadoop大数据技术】——期末复习(冲刺篇)

&#x1f4d6; 前言&#xff1a;快考试了&#xff0c;做篇期末总结&#xff0c;都是重点与必考点。 题型&#xff1a;简答题、编程题&#xff08;Java与Shell操作&#xff09;、看图分析题。题目大概率会从课后习题、实验里出。 课本&#xff1a; 目录 &#x1f552; 1. HDF…

基于YOLOv5的火焰烟雾检测系统

基于YOLOv5的火焰烟雾检测系统 通过PYQT构建UI界面&#xff0c;包含图片检测&#xff0c;视频检测&#xff0c;摄像头实时检测。 &#xff08;该系统可以根据数据训练出的yolov5的权重文件&#xff0c;运用在其他检测系统上&#xff0c;如吸烟检测&#xff0c;口罩检测等等&…

常用快捷键-快速开发-mac idea 查看侧边栏tool window project+新建文件快捷键

背景&#xff1a;来到公司后&#xff0c;换了mac系统&#xff0c;有点不习惯&#xff0c;于是自己重新设置了开发的快捷键 1、mac idea 查看侧边侧栏&#xff08;专业说法是Tool Window Project&#xff09;&#xff1a; 每次我们都要点击一下左上角的这个类似于文件夹的图标…

简单高效的盈利策略,昂首资本推荐价格行为交易

有没有这样一种简单高效的盈利策略&#xff0c;不仅易于新手掌握&#xff0c;也是专业人士的常用利器?当然有了&#xff0c;就是Anzo Capital昂首资本今天推荐的价格行为交易。价格行为交易以其透明清晰的市场视角受到交易员的青睐&#xff0c;它如实反映了市场的真实动态&…

stm32学习笔记---STM32基础介绍

目录 STM32介绍 STM32家族系列 ARM介绍 ARM内核型号种类 我们学习用的STM32 片上资源/外设&#xff08;Peripheral&#xff09; 命名规则 系统结构 引脚定义 STM32的启动配置 STM32最小系统电路和其他部分电路 最小系统板的实物图 附&#xff1a;安装软件准备 声明…

netcore 生成验证码

安装依赖 Install-Package Lazy.Captcha.Core 注册服务 builder.Services.AddCaptcha(); 自定义注册服务 // 注册服务的时候增加配置 services.AddCaptcha(Configuration, option > {option.CaptchaType CaptchaType.WORD; // 验证码类型option.CodeLength 6; // 验证…

ARM32开发--FreeRTOS-事件组

系列文章目录 知不足而奋进 望远山而前行 目录 系列文章目录 文章目录 前言 目标 内容 概念 事件标志位 开发流程 功能介绍 创建事件组 触发事件 等待事件触发 同步 清理事件 案例 总结 前言 在嵌入式系统开发中&#xff0c;任务之间的同步和通信是至关重要的…

性价比高的洗地机推荐,测评员精选四款热门洗地机分享

家庭清洁新升级&#xff0c;家用洗地机可以让家里打扫变得轻松高效。面对众多品牌和型号&#xff0c;朋友们常犯难&#xff1a;到底应该怎么选家用洗地机&#xff1f;别急&#xff0c;我这回的普及知识可不含糊&#xff0c;亲测超十款热门洗地机&#xff0c;从中精挑细选了四款…

从0开始C++(三):构造函数与析构函数详解

目录 构造函数 构造函数的基本使用 构造函数也支持函数重载 构造函数也支持函数参数默认值 构造初始化列表 拷贝构造函数 浅拷贝和深拷贝 析构函数 总结 练习一下ヽ(&#xffe3;▽&#xffe3;)&#xff89; 构造函数 构造函数的基本使用 构造函数是一种特殊的成…

二叉树的这五种遍历方法你们都会了吗?

说在前面 &#x1f388;二叉树大家应该都很熟了吧&#xff0c;那二叉树的这五种遍历方式你们都会了吗&#xff1f; 以这一二叉树为例子&#xff0c;我们来看看不同遍历方式返回的结果都是怎样的。 前序遍历 前序遍历的顺序是&#xff1a;首先访问根节点&#xff0c;然后递归地…

Power BI 连接数据源/获取数据(Excel表、文件夹、数据库、网页等)

一、Power BI 支持的数据源类型 Power BI支持广泛的数据源类型&#xff0c;包括文件、数据库、云服务和其他来源。 文件&#xff1a;Excel、文本/CSV、XML、JSON、文件夹、PDF等。数据库&#xff1a;SQL Server, Oracle, IBM DB2, MySQL, PostgreSQL等。云服务&#xff1a;Azur…

怎么学习PMP才是最正确的?

每个人的学习方式各不相同&#xff0c;不能一概而论说某种学习方式就是错误的。学习方式并没有绝对的对错之分&#xff0c;只能说是否适合自己&#xff0c;是否能够达到预期的学习效果。并不是别人的学习方式就一定适合自己&#xff0c;也不是不适合自己的学习方式就一定是错误…

简单好用的远程软件推荐? 内网端口映射工具快解析

最近有一些小伙伴求推荐一款简单好用的远程软件&#xff0c;经过多方对比试用&#xff0c;还是推荐快解析。通过快解析内网端口映射&#xff0c;可以让主机电脑自带远程桌面连接直接提供跨网访问控制&#xff0c;外网访问端无需再安装客户端软件&#xff01; 1.目标服务器本地…

【QCustomPlot实战系列】QCPGraph堆叠图

将一个QCPGraph叠加到另一个QCPGraph上显示&#xff0c;就得到了折线堆叠图 static QCPScatterStyle GetScatterStyle(const QColor& color) {QPen pen(color, 2);return QCPScatterStyle(QCPScatterStyle::ssCircle,pen,Qt::white, 5); }static QCPGraph* AddGraph(QCus…

ADI Trinamic TMC2300 完美用于相机镜头的马达驱动芯片方案

TMC2300-LA是一款用于高达 1.2A RMS 的两相步进电机的低压驱动芯片&#xff0c;低电压的步进电机驱动器是用于电池供电的、空间和待机功率临界驱动器应用。它的静音驱动技术StealthChop™能够为便携式&#xff0c;家庭和办公应用程序的非窃听运动控制&#xff0c;确保安静&…