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

LogicFlow-前端流程图开发

LogicFlow-前端流程图开发

一、安装使用

1、安装logicflow

通过npm安装logicflow

npm install @logicflow/core --save

# 插件包(不使用插件时不需要引入)
npm install @logicflow/extension --save
2、创建实例
  import LogicFlow from "@logicflow/core";
  import "@logicflow/core/lib/style/index.css"; 
  // 初始化实例
  const lf = new LogicFlow({
    container: document.querySelector('#container'),
    // 其他配置
  })
  // 渲染数据
  lf.render({
    // 渲染的数据
  })

渲染数据如下:

{
    // 节点数据
    nodes: [
        {
            id: '21', // 节点ID,需要全局唯一,不传入内部会自动生成一个ID
            type: 'rect', // 节点类型,可以传入LogicFlow内置的7种节点类型,也可以注册自定义节点后传入自定义类型
            x: 100, // 节点形状中心在x轴位置
            y: 100, // 节点形状中心在y轴的位置
            text: 'Origin Usage-rect', // 节点文本
            properties: { // 自定义属性,用于存储需要这个节点携带的信息,可以传入宽高以重设节点的宽高
                width: 160,
                height: 80,
            }
        },
        {
            id: '50',
            type: 'circle',
            x: 300,
            y: 300,
            text: 'Origin Usage-circle',
            properties: {
                r: 60,
            }
        },
    ],
    // 边数据
    edges: [
        {
            id: 'rect-2-circle', // 边ID,性质与节点ID一样
            type: 'polyline', // 边类型
            sourceNodeId: '50', // 起始节点Id
            targetNodeId: '21', // 目标节点Id
        },
    ],
}

效果如下:

请添加图片描述

二、插件安装使用

如果需要使用插件,开发者需要引入@logicflow/extension依赖包,并根据自己的诉求引入插件。

主要使用的插件提供了放大缩小或者自适应画布的能力,同时也内置了 redoundo 的功能。

使用npm安装后如下引用:

import LogicFlow from "@logicflow/core";
import { Control } from "@logicflow/extension";

// 全局使用 每一个lf实例都具备 Control
LogicFlow.use(Control);

效果如下:

请添加图片描述

三、自定义节点

LogicFlow提供了7种类型的节点供继承之后进行重写,这边主要讲解html节点的自定义,因为html节点的可定制性比较高。

自定义节点需要返回三个东西,view、model和type。

1、view重写

继承HtmlNode,重写setHtml方法。这边Component是定义在同文件中的vue组件,可以直接导入一个开发好的组件,这个组件即节点的最终样式。

class CustomNode extends HtmlNode {
  setHtml(rootEl: any) {
    const { properties } = this.props.model;
    const node = document.createElement('div');
    node.className = 'logic-flow-node-customnode';
    render(
      <Component properties={properties} props={this.props} key={new Date().getTime()} />,
      node,
    );
    rootEl.innerHTML = '';
    rootEl.appendChild(node);
  }
}
2、model重写

继承HtmlNodeModel,重写setAttributes方法。

class NodeModel extends HtmlNodeModel {
  setAttributes() {
    // this.draggable = false
    this.width = NODE_WIDTH;
    this.height = 120;
    this.text.editable = false;
  }
}
3、导出属性
export default {
  type: 'custom-node-mc',
  view: CustomNode,
  model: NodeModel,
};
4、注册自定义节点

在创建实例的地方导入自定义的节点,并通过this.lf.batchRegister批量注册。注册后的节点,就可以addNode函数增添节点,在type中填入自定义的type即可。

相关文章:

  • 使用成员函数指针数组简化C++类中的操作
  • WebGL数学手记:矩阵基础
  • 安防监控/视频集中存储平台EasyCVR赋能养老院:构建多维度智能安防新生态
  • flink 增量快照同步文件引用关系和恢复分析
  • 中国金属通报杂志社中国金属通报编辑部2024年第12期目录
  • 一个开源的 VS Code 大模型聊天插件:Light-at
  • 搭建docker registry私服,并且支持https推送
  • 使用人工智能大模型腾讯元宝,如何快速编写活动记录?
  • ZKmall开源商城服务端验证:Jakarta Validation 详解
  • C++学习day7
  • Linux学习笔记(2) 命令基础:从概念到实践(期末,期中复习笔记全)
  • 从零开始学Python游戏编程13-整数3
  • 【LangChain Agent 】详解,构建自主决策的 LLM 应用
  • Django信号使用完全指南示例
  • 视频插帧EMAVFI:extracting motion and appearance via inter-frame attention for video
  • 虚拟世界的AI魔法:AIGC引领元宇宙创作革命
  • 【数据结构】排序算法(下篇·开端)·深剖数据难点
  • 高等数学同步测试卷 同济7版 试卷部分 上 做题记录
  • Spring Boot嵌入前端静态资源:从原理到实战的完整指南
  • 编译器优化技术解析
  • 东莞网站建设服务公司/哈尔滨企业网站seo
  • 哪个网站可以做日语题/如何写好软文
  • wordpress 网址导航页/整站关键词排名优化
  • 网站建设综合实训/巩义网络推广公司
  • 上海建网站方案/百度写一篇文章多少钱
  • 泰安哪家做网站好/快速网站seo效果