共计 1775 个字符,预计需要花费 5 分钟才能阅读完成。
这个项目采用的是 G6(阿里开源),由于现在已经没有维护了,导致很多的配置,参数,方法示例 demo 等都是自己摸索的,大概介绍下本案例中使用到的以及一些后续维护可能会用到的。
Editor 该类是整个编辑器的主控类,其主要职责是将编辑器的各个组件协同起来。
// 实例化:import G6Editor from '@antv/g6-editor'
const editor = new G6Editor()
// 实例方法:add // 可以理解为 vue 的添加组件
editor.add(this.flow)
save // 保存数据(Object 类型,里面存放 nodes 以及 edges,对应节点和连线)let data = this.flow.save()
read // 读取数据
this.data && this.flow.read(this.data)
getGraph // 获取流图示例
this.graph = this.flow.getGraph()
getCurrentPage // 获取当前页面
this.page = editor.getCurrentPage()
hideGrid // 背景以网格的形式呈现
this.page.hideGrid()
on // 事件监听
this.page.on('afteritemselected', e => { // 处理数据})
Destory // 销毁(相当于 vue 的 destoryed 生命周期)this.page.destory()
Flow 继承自 Editor 的 page,专用于构建有向流程图编辑器。
实例化:
new Editor.flow()
配置项
主要介绍下配置项,也是项目中用到最多的。
Graph G6 图的配置项,语雀上可以搜到。
Align 文本对齐。
Grid 网格线的配置
Shortcut 快捷键的配置
this.flow = new G6Editor.Flow({graph: { container: this.$refs.flow},
align: {grid: true},// 网格对齐
grid: {cell: 10},// 网孔尺寸
shortcut: {
zoomIn: true, // 开启放大快捷键
zoomOut: true // 开启视口缩小快捷键
}
})
节点的配置项
this.graph.node({
id: 'node1', // id 必须唯一
color: '#333', // 颜色
size: 10 || [10, 10], // 尺寸 || [宽, 高]
shape: 'circle', // 所用图形
style: { // 关键形样式(优先级高于 color)fill: 'red',
stroke: 'blue'
},
label: '文本标签' || { // 文本标签 || 文本图形配置
text: '文本标签',
fill: 'green'
},
parent: 'group1', // 所属组
index: 1, // 渲染层级
})
线的配置项
this.graph.edge({ id: 'edge1', // id 必须唯一
source: 'node1', // 源节点 id
target: 'node2', // 目标节点 id
controlPoints: [{ // 控制点
x: 10, y: 10
}],
sourceAnchor: 0, // 源节点锚点
targetAnchor: 2, // 目标节点锚点
shape: 'line', // 所用图形
style: { // 关键形样式(优先级高于 color)fill: 'red',
stroke: 'blue'
},
label: '文本标签' || { // 文本标签 || 文本图形配置
text: '文本标签',
fill: 'green'
},
labelRectStyle: { // 文本矩形底的样式
fill: 'blue'
},
parent: 'group1', // 所属组
index: 1, // 渲染层级
}),
状态改变触发的事件
flow.on('beforeitemselected', e=>{}); // 选中前
flow.on('afteritemselected', e=>{}); // 选中后
flow.on('beforeitemunselected', e=>{}); // 取消选中前
flow.on('afteritemunselected', e=>{}); // 取消选中后
数据改变触发的事件
flow.on('beforechange', e=>{}); // 图数据变更前
flow.on('afterchange', e=>{}); // 图数据变更后
正文完
发表至: javascript
2019-08-20