乐趣区

关于前端:LogicFlow更多配置选项

🎄Hi~ 大家好,我是小鑫同学,一位长期从事前端开发的编程爱好者,我将应用更为实用的案例输入更多的编程常识,同时我崇奉分享是成长的惟一捷径,在这里也心愿我的每一篇文章都能成为你技术落地的参考~

🚀技术 & 代码分享

  • 我在 IT200 总结技术学习;
  • 我在 1024Code 在线编写代码;
  • 我在 掘金 分享技术文章;
  • 我在 Github 参加开源学习;

😇举荐几个好用的工具

  • var-conv 实用于 VSCode IDE 的代码变量名称疾速转换工具
  • generator-vite-plugin 疾速生成 Vite 插件模板我的项目
  • generator-babel-plugin 疾速生成 Babel 插件模板我的项目

进入正题

LogicFlow 是一款流程图编辑框架,提供了一系列流程图交互、编辑所必须的性能和灵便的节点自定义、插件等拓展机制。LogicFlow 反对前端研发自定义开发各种逻辑编排场景,如流程图、ER 图、BPMN 流程等。在工作审批配置、机器人逻辑编排、无代码平台流程配置都有较好的利用。

这一节将解说疾速上手 LogicFlow 流程图编辑框架的更多配置选项,我的项目整体基于 Vue3+Vite3+Ts4 开发,为帮忙还为纯熟应用 Vue3 和 Typescript 语法的小伙伴提供便当,如果你曾经很纯熟在 Vue3 中的开发习惯,倡议间接拜访 LogicFlow 将获取残缺的入门指南。

1. 设置主题 Theme:

LF 设置主题时提供了两种形式的实现,别离是在实例化 LF 对象时通过 style 选项进行配置,另一种形式是在实例化 LF 对象后应用内置的 lf.setTheme({}) 函数进行配置

设置主题的罕用属性列表(残缺的选项列表参见 ThemeApi):

属性名 阐明
stroke 属性定义了给定图形元素的外轮廓的色彩
stroke-dasharray 属性可管制用来描边的点划线的图案范式
stroke-width 属性指定了以后对象的轮廓的宽度
fill 属性用来定义给定图形元素外部的色彩
fill-opacity 属性指定了填色的不透明度或以后对象的内容物的不透明度
font-size 属性定义文本字体大小
color 属性定义文本色彩
  • 实例化 LF 时配置:
const styleConfig = {} // 主题配置项

lf.value = new LogicFlow({
  container: container.value,
  grid: true,
  // 实例化 LF 时配置主题
  style: styleConfig,
})
  • 实例化 LF 后配置:
const styleConfig = {} // 主题配置项

lf.value.setTheme(styleConfig);

PS:节点的 widthheightr 等相似属性对立归类为形态属性,因其会对锚点地位、连线计算产生影响,顾不能通过主题进行设置,仅反对在自定义时调整。

2. 设置网格 Gird:

网格在 LF 中次要起到的作用是对节点的中心点和挪动时的定位,默认网格选项敞开,中心点和挪动的最小单位为1px,当开启网格选项后,渲染的中心点和挪动时的最小单位将调整为20px。在自定义节点的宽高时为了更好的与网格对齐,倡议设置为网格最小单位的整数倍。

const gridConfig = {
  size: 20,
  visible: true,
  type: 'mesh',
  config: {
    color: '#ababab',
    thickness: 1,
  },
}

lf.value = new LogicFlow({
  container: container.value,
  grid: gridConfig,
})

3. 设置对齐线 Snapline:

网格解决了一个节点的中心点和挪动时的定位对齐问题,那么多个节点的地位调整就须要用到对齐线辅助进行了,该 snapline 选项默认开启,对齐线的款式能够通过设置主题中的选项来自定义;

const styleConfig = {
  snapline: {
    stroke: '#1E90FF', // 对齐线色彩
    strokeWidth: 1, // 对齐线宽度
  },
}

lf.value.setTheme(styleConfig);

4. 设置背景 Background:

在后面的示例中始终是启用了 Gird 来充当着背景的角色,LF 对象在实例化的时候同样能够通过选项来管制背景,默认是敞开的状态,批改的选项是background

lf.value = new LogicFlow({
  container: container.value,
  // grid: true, // 敞开网格
  background: {backgroundImage: "url(../grid.svg)",
    backgroundRepeat: "repeat"
  }
})

5. 设置键盘快捷键 Keyboard:

快捷键在流程图产品中也是比不可少的一块性能,能够大大不便使用者的体验,在 LF 中默认敞开了快捷键的应用,能够在实例化 LF 时通过启用 enabled 选项来反对;LF 除内置的快捷键外也反对自定义来扩大快捷键的应用;

  • 内置快捷键
快捷键 性能
cmd + c 或 ctrl + c 复制节点
cmd + v 或 ctrl + v 粘贴节点
cmd + z 或 ctrl + z 撤销操作
cmd + y 或 ctrl + y 回退操作
backspace 删除操作
  • 启用快捷键
lf.value = new LogicFlow({
  container: container.value,
  keyboard: {enabled: true},
})
  • 自定义快捷键:快捷键 keys 的定义规定同mousetrap;上面应用官网的示例来演示自义定删除节点的快捷键触发时减少二次确认的揭示;
lf.value = new LogicFlow({
  container: container.value,
  keyboard: {
    enabled: true,
    shortcuts: [
      {keys: ["backspace"],
        callback: () => {const r = window.confirm("确定要删除吗?");
          if (r) {const elements = lf.value!.getSelectElements(true);
            lf.value?.clearSelectElements();
            elements.edges.forEach((edge: EdgeConfig) => lf.value!.deleteEdge(edge.id || ''));
            elements.nodes.forEach((node: NodeConfig) => lf.value!.deleteNode(node.id || ''));
          }
        }
      }
    ]
  },
})

6. 设置图编辑形式:

LF 提供了更多不便管制图编辑形式的选项,同样是能够在实例化 LF 时通过选项初始化,也反对实例化 LF 后通过 lf.updateEditConfig 函数进行调整;

图编辑模式反对的选项列举(残缺的选项列表详见 editConfigModelApi):

属性名 默认值 阐明
isSilentMode false 是否为静默模式
stopZoomGraph false 禁止缩放画布
stopScrollGraph false 禁止鼠标滚动挪动画布
stopMoveGraph false 禁止拖动画布
  • 如下启用了只读的静默模式、禁止缩放、禁止鼠标滚动挪动画布、禁止拖动画布:
lf.value = new LogicFlow({
  container: container.value,
  isSilentMode: true, // 静默模式
  stopZoomGraph: true, // 禁止缩放
  stopScrollGraph: true, // 禁止鼠标滚动挪动画布
  stopMoveGraph: true, // 禁止拖动画布
})
  • 通过 lf.updateEditConfig 更灵便的调整:
lf.value.updateEditConfig({isSilentMode: false});

总结

这一节的内容就到此结束了,当初对主题、网格、对齐线、背景、快捷键和图编辑形式都理解了吗?这些选项并非是必须的,然而在须要的时候要晓得怎么配置,下一节开始要着手筹备插件局部的学习了,加油~


如果看完感觉有播种,欢送点赞、评论、分享反对一下。你的反对和必定,是我保持写作的能源~

本文转自 https://juejin.cn/post/7187535095392600121,如有侵权,请分割删除。

退出移动版