x6.js 从流程图组件库中拖拽组件到画布dnd使用

news/2024/5/18 22:37:58 标签: 流程图

上一篇已经了解到了x6.js常用功能以及使用方法。但我们使用流程图的时候还少不了一个非常重要的功能那就是拖拽组件库里的组件进来。如下图:

首先是布局这块,拖拽组件库的视图中布局无需我们去写,我们只需把界面搭建好。

添加组件库

1.搭建布局界面

这里以guiplan可视化开发工具搭建的界面效果如下:

分为左右布局排版,左边用来放组件库视图,右边用来放画布视图。

2.设置相对定位

这里一定要注意除了排版这样设计以外,组件库部分需要设置定位方式为相对定位。因为自带的组件库视图是绝对定位排版

position:relative;

3.创建可拖拽容器

代码如下:

this.guiAddon = new Addon.Stencil({
    title: 'Components',
    target: this.guiX6,
    search(cell, keyword) {
        return cell.shape.indexOf(keyword) !== -1
    },
    placeholder: 'Search by shape name',
    notFoundText: 'Not Found',
    collapsable: true,
    stencilGraphWidth: 200,
    stencilGraphHeight: 180,
    groups: [
        {
            name: 'group1',
            title: 'Group(Collapsable)',
        },
        {
            name: 'group2',
            title: 'Group',
            collapsable: false,
        },
    ],
})

4.容器加入到页面中

将容器放到界面里,也就是上图左边部分,addon是左边部分的元素id

document.querySelector('#addon').appendChild(this.guiAddon.container)

这样我们的组件库就做好了 

组件库里添加组件

好组件库虽然做好了,但是组件又如何添加进来了?

1.创建组件

这里以圆组件为例

let node = new Shape.Circle({
      width: 60,
      height: 60,
      attrs: {
        circle: { fill: '#FE854F', strokeWidth: 6, stroke: '#4B4A67' },
        text: { text: 'ellipse', fill: 'white' },
      },
    })

2.加入组件

将组件加入到对应的分组中即可

this.guiAddon.load([node], 'group1')

3.改初始化配置

注意:这里虽然创建了组件但并不能拖拽到画布中。

我们还需要改改画布的配置,也就是创建画布的时候需要给它权限,可拖入节点进来的权限。

this.guiX6 = new Graph({
    container: document.querySelector('.guix6'),
    snapline: {
        enabled: true,
        sharp: true,
    },
    scroller: {
        enabled: true,
        pageVisible: false,
        pageBreak: false,
        pannable: true,
    },....

案例下载与导入

目前整个案例都在guiplan中,找到插件库。然后点击“x6流程图”即可自动下载安装,自动将整个案例插入到你当前项目中来。其中内置的常用函数都以封装好,测试案例已经写好,直接用即可。无需再向我一样耗费好几天的研究,省时省力。


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

相关文章

排序算法:快速排序(递归)

文章目录 一、创始人托尼霍尔的快速排序二、挖坑法三、前后指针法 所属专栏:C初阶 引言:这里所说的快速排序有三种,第一种是霍尔大佬自创的,还有一种叫做挖坑法,另外一种叫前后指针法 一、创始人托尼霍尔的快速排序 1.这里我们先…

Find My游戏机|苹果Find My技术与游戏机结合,智能防丢,全球定位

游戏机,又名电子游乐器是使用游戏软件进行玩乐的机器。依照进行游戏的方式的不同,又分为家用游戏机及掌上游戏机。游戏机也可以说是属于电脑的一种,电子游戏机针对影像、音效与操作机能进行特别的强化,也有各种的软件和硬件可供安…

交换机/路由器的存储介质-华为

交换机/路由器的存储介质-华为 本文主要介绍网络设备的存储介质组成。 SDRAM(同步动态随机存取内存) 系统运行内存,相当于电脑的内存; NVRAM(Non-Volatile Random Access Memory,非易失性随机访问存储器…

《系统架构设计师教程(第2版)》第6章-数据库设计基础知识-04-应用程序与数据库的交互

文章目录 1. 库函数级别访问接口2. 嵌入SQL访问接口2.1 概述2.2 数据库厂商 3. 通用数据接口标准3.1 开放数据库连接 (ODBC)3.2 一些数据库接口1)数据库访问对象 (DAO)2)远程数据库对象 (RDO)3)ActiveX数据对象 (ADO)4)Java数据库…

Spring Boot 集成 WebSocket 实例 | 前端持续打印远程日志文件更新内容(模拟 tail 命令)

这个是我在 CSDN 的第一百篇原则博文,留念😎 #1 需求说明 先说下项目结构,后端基于 Spring Boot 3,前端为 node.js 开发的控制台程序。现在希望能够在前端模拟 tail 命令,持续输出后端的日志文件。 #2 技术方案 #2.…

ChatGPT的核心技术

ChatGPT的核心技术主要包括以下几个方面: 语言模型:ChatGPT使用的是基于Transformer架构的语言模型,这种模型具有强大的处理能力和较低的学习成本,能够更好地处理自然语言中的语法和语义。预训练模型:ChatGPT采用了预…

VSCode 写Markdown数学公式,随时补充

分段函数 第一种&#xff1a; $$ f(x) \begin{cases} 0, & \text z < 0 \\ 0.5, & \text z 0 \\ 1, & \text z > 0 \end{cases} $$f ( x ) { 0 , z < 0 0.5 , z 0 1 , z > 0 f(x) \begin{cases} 0, & \text z < 0 \\ 0.5, & …

集群保持集群负载均衡和hash一致性

集群保持负载均衡和一致性哈希是在构建分布式系统时经常涉及的两个重要概念。 负载均衡&#xff1a; - 在集群中&#xff0c;负载均衡是指将传入的请求有效地分发到不同的服务器上&#xff0c;以确保每台服务器都能够处理适量的流量&#xff0c;避免某些服务器过载而造成性能问…