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

上一篇已经了解到了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流程图”即可自动下载安装,自动将整个案例插入到你当前项目中来。其中内置的常用函数都以封装好,测试案例已经写好,直接用即可。无需再向我一样耗费好几天的研究,省时省力。

相关推荐

  1. react经验15:排序组件dnd-kit的使用经验

    2024-03-15 05:20:05       35 阅读
  2. vue3组件vuedraggable

    2024-03-15 05:20:05       67 阅读
  3. react列表排序组件

    2024-03-15 05:20:05       65 阅读
  4. css实现悬浮球组件

    2024-03-15 05:20:05       41 阅读
  5. canvas实现画布内元素的(下)

    2024-03-15 05:20:05       70 阅读
  6. UnityThree.js(画线组件line)

    2024-03-15 05:20:05       58 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-15 05:20:05       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-15 05:20:05       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-15 05:20:05       87 阅读
  4. Python语言-面向对象

    2024-03-15 05:20:05       96 阅读

热门阅读

  1. 用代码生成流程图Code Chart

    2024-03-15 05:20:05       41 阅读
  2. C++多态

    2024-03-15 05:20:05       42 阅读
  3. vue form表单验证

    2024-03-15 05:20:05       40 阅读
  4. 微调大型语言模型(LLM):应用案例示例

    2024-03-15 05:20:05       41 阅读
  5. 自然语言处理NLP:姓名相似度

    2024-03-15 05:20:05       38 阅读
  6. Windows开发环境搭建指南

    2024-03-15 05:20:05       43 阅读
  7. Lucene查询语法,适用于 ELk Kibana 查询

    2024-03-15 05:20:05       42 阅读
  8. 基于grafana+elk等开源组件的 云服务监控大屏架构

    2024-03-15 05:20:05       44 阅读
  9. 前端打包工具

    2024-03-15 05:20:05       41 阅读
  10. C语言(指针)单元练习

    2024-03-15 05:20:05       30 阅读
  11. 知识点总结,c,c++的各种知识点

    2024-03-15 05:20:05       36 阅读