@logicflow/core 2.2.1 → 2.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +32 -0
- package/dist/docs/api/logicflow-constructor/index.en.md +106 -0
- package/dist/docs/api/logicflow-constructor/index.zh.md +106 -0
- package/dist/docs/api/logicflow-constructor/use.en.md +61 -0
- package/dist/docs/api/logicflow-constructor/use.zh.md +61 -0
- package/dist/docs/api/logicflow-instance/canvas.en.md +197 -0
- package/dist/docs/api/logicflow-instance/canvas.zh.md +199 -0
- package/dist/docs/api/logicflow-instance/edge.en.md +273 -0
- package/dist/docs/api/logicflow-instance/edge.zh.md +273 -0
- package/dist/docs/api/logicflow-instance/edit-config.en.md +59 -0
- package/dist/docs/api/logicflow-instance/edit-config.zh.md +59 -0
- package/dist/docs/api/logicflow-instance/element.en.md +375 -0
- package/dist/docs/api/logicflow-instance/element.zh.md +379 -0
- package/dist/docs/api/logicflow-instance/event.en.md +326 -0
- package/dist/docs/api/logicflow-instance/event.zh.md +406 -0
- package/dist/docs/api/logicflow-instance/history.en.md +38 -0
- package/dist/docs/api/logicflow-instance/history.zh.md +38 -0
- package/dist/docs/api/logicflow-instance/index.en.md +41 -0
- package/dist/docs/api/logicflow-instance/index.zh.md +41 -0
- package/dist/docs/api/logicflow-instance/node.en.md +308 -0
- package/dist/docs/api/logicflow-instance/node.zh.md +308 -0
- package/dist/docs/api/logicflow-instance/register.en.md +76 -0
- package/dist/docs/api/logicflow-instance/register.zh.md +76 -0
- package/dist/docs/api/logicflow-instance/render-and-data.en.md +179 -0
- package/dist/docs/api/logicflow-instance/render-and-data.zh.md +181 -0
- package/dist/docs/api/logicflow-instance/text.en.md +60 -0
- package/dist/docs/api/logicflow-instance/text.zh.md +60 -0
- package/dist/docs/api/logicflow-instance/theme.en.md +179 -0
- package/dist/docs/api/logicflow-instance/theme.zh.md +179 -0
- package/dist/docs/api/runtime-model/edgeModel.en.md +29 -0
- package/dist/docs/api/runtime-model/edgeModel.zh.md +325 -0
- package/dist/docs/api/runtime-model/graphModel.en.md +275 -0
- package/dist/docs/api/runtime-model/graphModel.zh.md +1153 -0
- package/dist/docs/api/runtime-model/nodeModel.en.md +37 -0
- package/dist/docs/api/runtime-model/nodeModel.zh.md +644 -0
- package/dist/docs/api/type/MainTypes.en.md +598 -0
- package/dist/docs/api/type/MainTypes.zh.md +867 -0
- package/dist/docs/api/type/Theme.en.md +187 -0
- package/dist/docs/api/type/Theme.zh.md +187 -0
- package/dist/docs/api/type/canvas-types.en.md +25 -0
- package/dist/docs/api/type/canvas-types.zh.md +25 -0
- package/dist/docs/api/type/index.en.md +96 -0
- package/dist/docs/api/type/index.zh.md +99 -0
- package/dist/docs/api/type/node-types.en.md +21 -0
- package/dist/docs/api/type/node-types.zh.md +21 -0
- package/dist/docs/api/type/plugin-types.en.md +24 -0
- package/dist/docs/api/type/plugin-types.zh.md +24 -0
- package/dist/docs/index.md +11 -0
- package/dist/docs/tutorial/about.en.md +38 -0
- package/dist/docs/tutorial/about.zh.md +65 -0
- package/dist/docs/tutorial/advanced/dnd.en.md +62 -0
- package/dist/docs/tutorial/advanced/dnd.zh.md +52 -0
- package/dist/docs/tutorial/advanced/edge.en.md +64 -0
- package/dist/docs/tutorial/advanced/edge.zh.md +66 -0
- package/dist/docs/tutorial/advanced/keyboard.en.md +70 -0
- package/dist/docs/tutorial/advanced/keyboard.zh.md +67 -0
- package/dist/docs/tutorial/advanced/node.en.md +338 -0
- package/dist/docs/tutorial/advanced/node.zh.md +338 -0
- package/dist/docs/tutorial/advanced/react.en.md +106 -0
- package/dist/docs/tutorial/advanced/react.zh.md +114 -0
- package/dist/docs/tutorial/advanced/silent-mode.en.md +75 -0
- package/dist/docs/tutorial/advanced/silent-mode.zh.md +71 -0
- package/dist/docs/tutorial/advanced/snapline.en.md +54 -0
- package/dist/docs/tutorial/advanced/vue.en.md +249 -0
- package/dist/docs/tutorial/advanced/vue.zh.md +248 -0
- package/dist/docs/tutorial/ai.en.md +64 -0
- package/dist/docs/tutorial/ai.zh.md +64 -0
- package/dist/docs/tutorial/basic/background.en.md +50 -0
- package/dist/docs/tutorial/basic/canvas.en.md +164 -0
- package/dist/docs/tutorial/basic/canvas.zh.md +183 -0
- package/dist/docs/tutorial/basic/class.en.md +106 -0
- package/dist/docs/tutorial/basic/class.zh.md +103 -0
- package/dist/docs/tutorial/basic/edge.en.md +151 -0
- package/dist/docs/tutorial/basic/edge.zh.md +152 -0
- package/dist/docs/tutorial/basic/event.en.md +70 -0
- package/dist/docs/tutorial/basic/event.zh.md +66 -0
- package/dist/docs/tutorial/basic/grid.en.md +77 -0
- package/dist/docs/tutorial/basic/node.en.md +358 -0
- package/dist/docs/tutorial/basic/node.zh.md +318 -0
- package/dist/docs/tutorial/basic/theme.en.md +154 -0
- package/dist/docs/tutorial/basic/theme.zh.md +157 -0
- package/dist/docs/tutorial/extension/adapter.en.md +446 -0
- package/dist/docs/tutorial/extension/adapter.zh.md +429 -0
- package/dist/docs/tutorial/extension/bpmn-element.en.md +1427 -0
- package/dist/docs/tutorial/extension/bpmn-element.zh.md +1472 -0
- package/dist/docs/tutorial/extension/control.en.md +117 -0
- package/dist/docs/tutorial/extension/control.zh.md +118 -0
- package/dist/docs/tutorial/extension/curved-edge.en.md +46 -0
- package/dist/docs/tutorial/extension/curved-edge.zh.md +46 -0
- package/dist/docs/tutorial/extension/custom.en.md +142 -0
- package/dist/docs/tutorial/extension/custom.zh.md +138 -0
- package/dist/docs/tutorial/extension/dnd-panel.en.md +109 -0
- package/dist/docs/tutorial/extension/dnd-panel.zh.md +109 -0
- package/dist/docs/tutorial/extension/dynamic-group.en.md +606 -0
- package/dist/docs/tutorial/extension/dynamic-group.zh.md +606 -0
- package/dist/docs/tutorial/extension/group.en.md +217 -0
- package/dist/docs/tutorial/extension/group.zh.md +209 -0
- package/dist/docs/tutorial/extension/highlight.en.md +50 -0
- package/dist/docs/tutorial/extension/highlight.zh.md +50 -0
- package/dist/docs/tutorial/extension/insert-node-in-polyline.en.md +52 -0
- package/dist/docs/tutorial/extension/insert-node-in-polyline.zh.md +47 -0
- package/dist/docs/tutorial/extension/intro.en.md +72 -0
- package/dist/docs/tutorial/extension/intro.zh.md +95 -0
- package/dist/docs/tutorial/extension/label.en.md +136 -0
- package/dist/docs/tutorial/extension/label.zh.md +135 -0
- package/dist/docs/tutorial/extension/layout.en.md +156 -0
- package/dist/docs/tutorial/extension/layout.zh.md +156 -0
- package/dist/docs/tutorial/extension/menu.en.md +319 -0
- package/dist/docs/tutorial/extension/menu.zh.md +377 -0
- package/dist/docs/tutorial/extension/minimap.en.md +164 -0
- package/dist/docs/tutorial/extension/minimap.zh.md +180 -0
- package/dist/docs/tutorial/extension/node-resize.en.md +199 -0
- package/dist/docs/tutorial/extension/node-resize.zh.md +221 -0
- package/dist/docs/tutorial/extension/pool.en.md +227 -0
- package/dist/docs/tutorial/extension/pool.zh.md +227 -0
- package/dist/docs/tutorial/extension/proximity-connect.en.md +104 -0
- package/dist/docs/tutorial/extension/proximity-connect.zh.md +107 -0
- package/dist/docs/tutorial/extension/selection.en.md +166 -0
- package/dist/docs/tutorial/extension/selection.zh.md +150 -0
- package/dist/docs/tutorial/extension/snapshot.en.md +276 -0
- package/dist/docs/tutorial/extension/snapshot.zh.md +276 -0
- package/dist/docs/tutorial/get-started.en.md +501 -0
- package/dist/docs/tutorial/get-started.zh.md +139 -0
- package/dist/docs/tutorial/update.en.md +213 -0
- package/dist/docs/tutorial/update.zh.md +212 -0
- package/package.json +5 -3
- package/scripts/postinstall-ai-prompt.js +67 -0
|
@@ -0,0 +1,1153 @@
|
|
|
1
|
+
---
|
|
2
|
+
nav: API
|
|
3
|
+
group:
|
|
4
|
+
title: 运行时 Model
|
|
5
|
+
order: 3
|
|
6
|
+
title: graphModel
|
|
7
|
+
toc: content
|
|
8
|
+
order: 12
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
<style>
|
|
12
|
+
table td:first-of-type {
|
|
13
|
+
word-break: normal;
|
|
14
|
+
}
|
|
15
|
+
</style>
|
|
16
|
+
|
|
17
|
+
graphModel 是 LogicFlow 中整个画布对应的 `model`。
|
|
18
|
+
|
|
19
|
+
LogicFlow 实例上的大多方法都是在 graphModel 上进行的简单封装。
|
|
20
|
+
|
|
21
|
+
可以通过以下几种方法获取到 graphModel
|
|
22
|
+
|
|
23
|
+
- 直接从 lf 属性中获取。`lf.graphModel`
|
|
24
|
+
- 自定义`model`的时候,从构造函数中获取,也可以在方法中从`this`中获取。
|
|
25
|
+
|
|
26
|
+
```tsx | pure
|
|
27
|
+
class CustomModel extends RectNodeModel {
|
|
28
|
+
getNodeStyle() {
|
|
29
|
+
const graphModel = this.graphModel
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
- 自定义`view`的时候,从`props`中获取。
|
|
35
|
+
|
|
36
|
+
```tsx | pure
|
|
37
|
+
class CustomNode extends RectNode {
|
|
38
|
+
getShape() {
|
|
39
|
+
const { model, graphModel } = this.props
|
|
40
|
+
// ...
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
:::info{title=提示}
|
|
46
|
+
**注意**graphModel 上所有的属性都是只读,要想修改,请使用提供的对应方法进行修改。
|
|
47
|
+
:::
|
|
48
|
+
|
|
49
|
+
## 属性
|
|
50
|
+
|
|
51
|
+
| 属性 | 类型 | 默认值 | 描述 |
|
|
52
|
+
| :-------------------------- | :-------------------------------------------- | :----- | :----------------------------------------------------------------------------------------------- |
|
|
53
|
+
| width | `number` | | LogicFlow 画布宽度 |
|
|
54
|
+
| height | `number` | | LogicFlow 画布高度 |
|
|
55
|
+
| theme | `LogicFlow.Theme` | | [详细 API](../logicflow-instance/theme.zh.md) |
|
|
56
|
+
| animation | `boolean \| LFOptions.AnimationConfig` | false | 动画状态配置,是否已打开对应的动画 |
|
|
57
|
+
| [eventCenter](#eventcenter) | `EventEmitter` | | 事件中心, 可以通过这个对象向外部抛出事件 |
|
|
58
|
+
| modelMap | `Map<string, BaseNodeModel \| BaseEdgeModel>` | | 维护所有节点和边类型对应的 model |
|
|
59
|
+
| [topElement](#topElement) | `BaseNodeModel \| BaseEdgeModel` | | 位于当前画布顶部的元素 |
|
|
60
|
+
| idGenerator | `(type?: string) => string \| undefined` | | 自定义全局 id 生成器 |
|
|
61
|
+
| nodeMoveRules | `Model.NodeMoveRule[]` | [] | 节点移动规则, 在节点移动的时候,会触发此数组中的所有规则判断 |
|
|
62
|
+
| customTrajectory | `LFOptions.CustomAnchorLineProps` | | 获取自定义连线轨迹 |
|
|
63
|
+
| customTargetAnchor | `LFOptions.customTargetAnchorType` | | 自定义锚点连接规则(手动连线落到节点时,决定使用哪个锚点) |
|
|
64
|
+
| edgeGenerator | `LFOptions.EdgeGeneratorType` | | 节点间连线、连线变更时边的生成规则 |
|
|
65
|
+
| edgeType | `string` | | 在图上操作创建边时,默认使用的边类型 |
|
|
66
|
+
| nodes | `BaseNodeModel[]` | [] | 画布所有的节点对象 |
|
|
67
|
+
| edges | `BaseEdgeModel[]` | [] | 画布所有的连线对象 |
|
|
68
|
+
| fakeNode | `BaseNodeModel \| null` | null | 外部拖入节点进入画布的过程中,用 fakeNode 来和画布上正式的节点区分开 |
|
|
69
|
+
| [overlapMode](#overlapmode) | `OverlapMode` | | 元素重合时堆叠模式;支持 静态模式: -1、默认模式(节点层级优先): 0、递增模式: 1、边层级优先模式: 2 |
|
|
70
|
+
| background | `false \| LFOptions.BackgroundConfig` | | 画布背景配置 |
|
|
71
|
+
| transformModel | `TransformModel` | | 当前画布平移、缩放矩阵 `model`,API 见下文 [transformModel](#transformmodel) |
|
|
72
|
+
| editConfigModel | `EditConfigModel` | | 页面编辑基本配置对象,API 见下文 [editConfigModel](#editconfigmodel);实例上的封装见 [编辑控制](../logicflow-instance/edit-config.zh.md) |
|
|
73
|
+
| gridSize | `number` | 1 | 网格大小 |
|
|
74
|
+
| partial | `boolean` | false | 是否开启局部渲染,当页面元素数量过多的时候,开启局部渲染会提高页面渲染性能 |
|
|
75
|
+
| nodesMap | `GraphModel.NodesMapType` | | 画布所有节点的构成的 `map` |
|
|
76
|
+
| edgesMap | `GraphModel.EdgesMapType` | | 画布所有边构成的 `map` |
|
|
77
|
+
| modelsMap | `GraphModel.ModelsMapType` | | 画布所有节点和边共同构成的 `map` |
|
|
78
|
+
| selectNodes | `BaseNodeModel[]` | | 画布中所有选中节点对象 |
|
|
79
|
+
| sortElements | `array` | | 按照 zIndex 排序后的元素,基于zIndex对元素进行排序 |
|
|
80
|
+
| textEditElement | `BaseNodeModel \| BaseEdgeModel` | | 当前被编辑的元素 |
|
|
81
|
+
| selectElements | `Map<string, BaseNodeModel \| BaseEdgeModel>` | | 当前画布所有被选中的元素 |
|
|
82
|
+
|
|
83
|
+
### eventCenter<Badge>属性</Badge>
|
|
84
|
+
|
|
85
|
+
logicflow 内部的事件中心,可以通过这个对象向外部抛出事件。
|
|
86
|
+
|
|
87
|
+
示例
|
|
88
|
+
|
|
89
|
+
```tsx | pure
|
|
90
|
+
class UserTaskModel extends RectNodeModel {
|
|
91
|
+
setAttributes() {
|
|
92
|
+
this.menu = [
|
|
93
|
+
{
|
|
94
|
+
text: "详情",
|
|
95
|
+
callback: (res) => {
|
|
96
|
+
this.graphModel.eventCenter.emit("user:detail", res);
|
|
97
|
+
},
|
|
98
|
+
},
|
|
99
|
+
];
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
// 监听
|
|
104
|
+
lf.on("user:detail", (res) => {});
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### topElement<Badge>属性</Badge>
|
|
108
|
+
|
|
109
|
+
位于当前画布顶部的元素。<br>
|
|
110
|
+
此元素只在堆叠模式为默认模式下存在。
|
|
111
|
+
用于在默认模式下将之前的顶部元素恢复初始顺序。
|
|
112
|
+
|
|
113
|
+
### overlapMode<Badge>属性</Badge>
|
|
114
|
+
|
|
115
|
+
元素重合时堆叠模式<br>
|
|
116
|
+
|
|
117
|
+
- 值为 `-1`(STATIC):选中不改变层级,`toFront` 无效;通过元素自身的 `zIndex` 控制顺序。
|
|
118
|
+
- 值为 `0`(DEFAULT):节点始终位于边之上,渲染顺序为“先边后节点”。选中元素临时置顶,取消选中后恢复原有层级。
|
|
119
|
+
- 值为 `1`(INCREASE):每次 `toFront` 都提升元素 zIndex,取消选中后仍保留提升的层级。
|
|
120
|
+
- 值为 `2`(EDGE_TOP):边始终位于节点之上,渲染顺序为“先节点后边”。`toFront` 行为与默认模式一致(临时置顶,取消选中恢复)。
|
|
121
|
+
|
|
122
|
+
说明:只有在 `INCREASE` 与 `STATIC` 模式下,元素的 `zIndex` 才会持久化到图数据;`DEFAULT` 与 `EDGE_TOP` 模式下的层级由渲染时规则决定。
|
|
123
|
+
|
|
124
|
+
## transformModel
|
|
125
|
+
|
|
126
|
+
`graphModel.transformModel` 为 `TransformModel` 实例,控制画布的放大、缩小、平移。一般通过 `lf.graphModel.transformModel` 访问。
|
|
127
|
+
|
|
128
|
+
### zoom(zoomSize, point)
|
|
129
|
+
|
|
130
|
+
放大缩小画布。放大缩小的刻度是 `transformModel.ZOOM_SIZE`。
|
|
131
|
+
|
|
132
|
+
| 名称 | 类型 | 默认值 | 说明 |
|
|
133
|
+
| ---------- | -------------------------------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
134
|
+
| zoomSize | `TransformModel.ZoomParamType` | false | 放大缩小的值,支持传入 0-n 之间的数字。小于 1 表示缩小,大于 1 表示放大。也支持传入 `true` 和 `false`,按内置刻度放大缩小 `number \| boolean` |
|
|
135
|
+
| point | [`PointTuple`](../type/MainTypes.zh.md#pointtuple点坐标组) | 无 | 放大缩小基准点,可以理解为 transform-origin |
|
|
136
|
+
|
|
137
|
+
```tsx | pure
|
|
138
|
+
const { transformModel } = lf.graphModel;
|
|
139
|
+
transformModel.zoom(true);
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
### resetZoom
|
|
143
|
+
|
|
144
|
+
重置 zoom。
|
|
145
|
+
|
|
146
|
+
```tsx | pure
|
|
147
|
+
const { transformModel } = lf.graphModel;
|
|
148
|
+
transformModel.resetZoom();
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
### translate(x, y)
|
|
152
|
+
|
|
153
|
+
移动画布。
|
|
154
|
+
|
|
155
|
+
| 名称 | 类型 | 默认值 | 说明 |
|
|
156
|
+
| ---- | ------ | ------ | ------------- |
|
|
157
|
+
| x | number | 无 | 移动的 X 轴距离 |
|
|
158
|
+
| y | number | 无 | 移动的 Y 轴距离 |
|
|
159
|
+
|
|
160
|
+
```tsx | pure
|
|
161
|
+
const { transformModel } = lf.graphModel;
|
|
162
|
+
transformModel.translate(100, 100);
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
### focusOn(targetX, targetY, width, height)
|
|
166
|
+
|
|
167
|
+
将图形移动到画布中心。
|
|
168
|
+
|
|
169
|
+
| 名称 | 类型 | 默认值 | 说明 |
|
|
170
|
+
| ------- | ------ | ------ | --------------- |
|
|
171
|
+
| targetX | number | 无 | 图形当前 x 坐标 |
|
|
172
|
+
| targetY | number | 无 | 图形当前 y 坐标 |
|
|
173
|
+
| width | number | 无 | 画布宽 |
|
|
174
|
+
| height | number | 无 | 画布高 |
|
|
175
|
+
|
|
176
|
+
```tsx | pure
|
|
177
|
+
const { transformModel, width, height } = lf.graphModel;
|
|
178
|
+
transformModel.focusOn(100, 100, width, height);
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
### HtmlPointToCanvasPoint <Badge>方法</Badge>
|
|
182
|
+
|
|
183
|
+
将 toolOverlay 点基于缩放转换为 canvasOverlay 层上的点。
|
|
184
|
+
|
|
185
|
+
参数:
|
|
186
|
+
|
|
187
|
+
| 名称 | 类型 | 必传 | 默认值 | 描述 |
|
|
188
|
+
| ----- | ---------- | ---- | ------ | ---- |
|
|
189
|
+
| point | PointTuple | true | 无 | 坐标 |
|
|
190
|
+
|
|
191
|
+
返回值: `PointTuple`
|
|
192
|
+
|
|
193
|
+
```js
|
|
194
|
+
const { transformModel } = lf.graphModel;
|
|
195
|
+
const point = transformModel.HtmlPointToCanvasPoint([100, 100]);
|
|
196
|
+
// 如果画布 x 轴平移了 +100,那么返回的值为 [0, 100]
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
### CanvasPointToHtmlPoint <Badge>方法</Badge>
|
|
200
|
+
|
|
201
|
+
将 canvasOverlay 层上的点基于缩放转换为 toolOverlay 上的点。
|
|
202
|
+
|
|
203
|
+
参数:
|
|
204
|
+
|
|
205
|
+
| 名称 | 类型 | 必传 | 默认值 | 描述 |
|
|
206
|
+
| ----- | ---------- | ---- | ------ | ---- |
|
|
207
|
+
| point | PointTuple | true | 无 | 坐标 |
|
|
208
|
+
|
|
209
|
+
返回值: `PointTuple`
|
|
210
|
+
|
|
211
|
+
```js
|
|
212
|
+
const { transformModel } = lf.graphModel;
|
|
213
|
+
const point = transformModel.CanvasPointToHtmlPoint([100, 100]);
|
|
214
|
+
// 如果画布 x 轴平移了 +100,那么返回的值为 [200, 100]
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
### updateTranslateLimits <Badge>方法</Badge>
|
|
218
|
+
|
|
219
|
+
更新画布可以移动范围。
|
|
220
|
+
|
|
221
|
+
入参:`limit: boolean | "vertical" | "horizontal" | [number, number, number, number]`
|
|
222
|
+
|
|
223
|
+
## editConfigModel
|
|
224
|
+
|
|
225
|
+
`graphModel.editConfigModel` 为 `EditConfigModel` 实例,维护画布编辑相关开关(缩放与滚轮、画布拖动、节点/边调整、锚点与选中外框、文本编辑与拖拽、多选键等)。一般通过 `lf.graphModel.editConfigModel` 访问。
|
|
226
|
+
|
|
227
|
+
LogicFlow 实例上的 `updateEditConfig`、`getEditConfig` 是对该 model 的封装,用法与示例见 [编辑控制](../logicflow-instance/edit-config.zh.md)。
|
|
228
|
+
|
|
229
|
+
各配置字段的含义与类型以 [IEditConfigType(编辑控制配置)](../type/MainTypes.zh.md#ieditconfigtype编辑控制配置) 为准;本节仅描述 `EditConfigModel` 上的方法。
|
|
230
|
+
|
|
231
|
+
### updateEditConfig(config)
|
|
232
|
+
|
|
233
|
+
按传入对象合并更新编辑配置。内部会经过 `computeConfig` 做静默模式、文本相关字段的联动合并。传入 `isSilentMode: true` 时会进入静默模式并暂存当前配置;传入 `isSilentMode: false` 时在退出静默模式时恢复暂存配置。
|
|
234
|
+
|
|
235
|
+
**签名**
|
|
236
|
+
|
|
237
|
+
```ts
|
|
238
|
+
updateEditConfig(config: Partial<IEditConfigType>): void
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
**参数**
|
|
242
|
+
|
|
243
|
+
| 名称 | 类型 | 说明 |
|
|
244
|
+
| ------ | ---------------------------- | ---- |
|
|
245
|
+
| config | `Partial<IEditConfigType>` | 需要更新的键值,字段说明见类型字典 |
|
|
246
|
+
|
|
247
|
+
```ts
|
|
248
|
+
lf.graphModel.editConfigModel.updateEditConfig({ stopZoomGraph: true });
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
### getConfig()
|
|
252
|
+
|
|
253
|
+
返回当前生效的完整编辑配置(与 `IEditConfigType` 结构一致)。
|
|
254
|
+
|
|
255
|
+
**签名**
|
|
256
|
+
|
|
257
|
+
```ts
|
|
258
|
+
getConfig(): IEditConfigType
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
```ts
|
|
262
|
+
const cfg = lf.graphModel.editConfigModel.getConfig();
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
### updateTextMode(textMode)
|
|
266
|
+
|
|
267
|
+
更新全局 `textMode`,并同步节点、边的 `nodeTextMode` 与 `edgeTextMode`。
|
|
268
|
+
|
|
269
|
+
**签名**
|
|
270
|
+
|
|
271
|
+
```ts
|
|
272
|
+
updateTextMode(textMode: TextMode): void
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
**参数**
|
|
276
|
+
|
|
277
|
+
| 名称 | 类型 | 说明 |
|
|
278
|
+
| -------- | ---------- | ---- |
|
|
279
|
+
| textMode | `TextMode` | 文本模式,与构造选项中的 `textMode` 含义一致 |
|
|
280
|
+
|
|
281
|
+
```ts
|
|
282
|
+
import { TextMode } from '@logicflow/core';
|
|
283
|
+
|
|
284
|
+
lf.graphModel.editConfigModel.updateTextMode(TextMode.LABEL);
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
## 方法
|
|
288
|
+
|
|
289
|
+
### getAreaElement<Badge>方法</Badge>
|
|
290
|
+
|
|
291
|
+
获取指定区域内的所有元素
|
|
292
|
+
|
|
293
|
+
入参:
|
|
294
|
+
|
|
295
|
+
| 名称 | 类型 | 默认值 | 说明 |
|
|
296
|
+
| ----------------- | ---------- | ------ | -------------------------- |
|
|
297
|
+
| leftTopPoint | PointTuple | 无 | 区域左上方的点 |
|
|
298
|
+
| rightBottomPoint | PointTuple | 无 | 区域右下角的点 |
|
|
299
|
+
| wholeEdge | boolean | 无 | 是否要整个边都在区域内部 |
|
|
300
|
+
| wholeNode | boolean | 无 | 是否要整个节点都在区域内部 |
|
|
301
|
+
| ignoreHideElement | boolean | 无 | 是否忽略隐藏的节点 |
|
|
302
|
+
|
|
303
|
+
```tsx | pure
|
|
304
|
+
graphModel.getAreaElement([100, 100], [800, 800]);
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
### getModel<Badge>方法</Badge>
|
|
308
|
+
|
|
309
|
+
获取指定类型的 Model 构造函数
|
|
310
|
+
|
|
311
|
+
入参:
|
|
312
|
+
|
|
313
|
+
| 名称 | 类型 | 默认值 | 说明 |
|
|
314
|
+
| ---- | ------ | ------ | ---- |
|
|
315
|
+
| type | string | 无 | 类型 |
|
|
316
|
+
|
|
317
|
+
返回值: [NodeModel](./nodeModel.zh.md) 或 [EdgeModel](./edgeModel.zh.md)
|
|
318
|
+
|
|
319
|
+
```tsx | pure
|
|
320
|
+
graphModel.getModel("rect");
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
### getNodeModelById<Badge>方法</Badge>
|
|
324
|
+
|
|
325
|
+
根据节点 id 获取节点 model。
|
|
326
|
+
|
|
327
|
+
入参:
|
|
328
|
+
|
|
329
|
+
| 名称 | 类型 | 默认值 | 说明 |
|
|
330
|
+
| ---- | ------ | ------ | ---- |
|
|
331
|
+
| id | string | 无 | 节点 id |
|
|
332
|
+
|
|
333
|
+
返回值: [NodeModel](./nodeModel.zh.md)
|
|
334
|
+
|
|
335
|
+
```tsx | pure
|
|
336
|
+
graphModel.getNodeModelById("node_1");
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
### getPointByClient<Badge>方法</Badge>
|
|
340
|
+
|
|
341
|
+
获取鼠标点击的位置在画布上的坐标
|
|
342
|
+
|
|
343
|
+
> 因为流程图所在的位置可以是页面任何地方,当内部事件需要获取触发事件时,其相对于画布左上角的位置需要事件触发位置减去画布相对于
|
|
344
|
+
> client 的位置。
|
|
345
|
+
|
|
346
|
+
入参:
|
|
347
|
+
|
|
348
|
+
| 名称 | 类型 | 默认值 | 说明 |
|
|
349
|
+
| ----- | -------- | ------ | --------- |
|
|
350
|
+
| point | Position | 无 | HTML 坐标 |
|
|
351
|
+
|
|
352
|
+
返回值:
|
|
353
|
+
|
|
354
|
+
| 名称 | 类型 | 默认值 | 说明 |
|
|
355
|
+
| --------------------- | -------- | ------ | ----------------------------------------------- |
|
|
356
|
+
| domOverlayPosition | Position | 无 | HTML 层坐标,一般控制组件的位置时使用此坐标 |
|
|
357
|
+
| canvasOverlayPosition | Position | 无 | Canvas 层坐标,一般节点、边的坐标是这一层的坐标 |
|
|
358
|
+
|
|
359
|
+
为什么要这个方法,为什么鼠标点击的同一个位置会产生两个不同的坐标?
|
|
360
|
+
|
|
361
|
+
因为画布存在缩放和平移。当移动了画布,在视觉上看起来,画布上的元素位置变了,但是在数据层面,画布上的节点和边位置是没有变化的。反过来举个例子:在一个宽高为
|
|
362
|
+
1000px \* 1000px 的画布中间有一个节点,这个节点的位置很可能是`{x: -999,y: -999}`,
|
|
363
|
+
因为平移过来的。但是当双击这个节点,我们需要在节点位置显示一个文本输入框的时候,因为输入框是在`domOverlay`
|
|
364
|
+
层,这一层不像`CanvasOverlay`
|
|
365
|
+
一样有缩放和平移,其宽高和画布宽高一致。所以这个文本输入框坐标应该是`{x: 500, y: 500}`。
|
|
366
|
+
|
|
367
|
+
我们再来看为什么要这个方法?
|
|
368
|
+
|
|
369
|
+
假设这个画布距离浏览器顶部距离为 100,左侧距离也为 100. 那么当用户点击画布中心的时候,js
|
|
370
|
+
监听点击函数拿到的位置应该是`{x: 600, y: 600}`,
|
|
371
|
+
这个时候调用这个方法,就可以得到 `canvasOverlayPosition` 为`{x: -999,y: -999}`,`domOverlayPosition`
|
|
372
|
+
为 `{x: 500, y: 500}`。开发者就可以基于这两个坐标进行自己需要的开发。比如在`domOverlayPosition`
|
|
373
|
+
位置显示一个菜单之类的。
|
|
374
|
+
|
|
375
|
+
```tsx | pure
|
|
376
|
+
graphModel.getPointByClient({ x: 200, y: 200 });
|
|
377
|
+
```
|
|
378
|
+
|
|
379
|
+
### isElementInArea<Badge>方法</Badge>
|
|
380
|
+
|
|
381
|
+
判断一个元素是否在指定矩形区域内。
|
|
382
|
+
|
|
383
|
+
入参:
|
|
384
|
+
|
|
385
|
+
| 名称 | 类型 | 默认值 | 说明 |
|
|
386
|
+
| --------- | ---------------------- | ------ | ---------------------------- |
|
|
387
|
+
| element | NodeModel 或 EdgeModel | 无 | 元素的 model |
|
|
388
|
+
| lt | PointTuple | 无 | 左上角点 |
|
|
389
|
+
| rb | PointTuple | 无 | 右下角点 |
|
|
390
|
+
| wholeEdge | boolean | true | 边的起点和终点都在区域内才算 |
|
|
391
|
+
| wholeNode | boolean | true | 节点的box都在区域内才算 |
|
|
392
|
+
|
|
393
|
+
返回值: `boolean`
|
|
394
|
+
|
|
395
|
+
```tsx | pure
|
|
396
|
+
const node = {
|
|
397
|
+
type: "rect",
|
|
398
|
+
x: 300,
|
|
399
|
+
y: 300,
|
|
400
|
+
};
|
|
401
|
+
graphModel.isElementInArea(node, [200, 200], [400, 400]);
|
|
402
|
+
```
|
|
403
|
+
|
|
404
|
+
### getAreaElements<Badge>方法</Badge>
|
|
405
|
+
|
|
406
|
+
获取指定区域内的所有元素
|
|
407
|
+
|
|
408
|
+
入参:
|
|
409
|
+
|
|
410
|
+
| 名称 | 类型 | 默认值 | 说明 |
|
|
411
|
+
| ----------------- | ---------- | ------ | ---------------------------- |
|
|
412
|
+
| leftTopPoint | PointTuple | 无 | 左上角点 |
|
|
413
|
+
| rightBottomPoint | PointTuple | 无 | 右下角点 |
|
|
414
|
+
| ignoreHideElement | boolean | false | 忽略隐藏元素 |
|
|
415
|
+
| wholeEdge | boolean | true | 边的起点和终点都在区域内才算 |
|
|
416
|
+
| wholeNode | boolean | true | 节点的box都在区域内才算 |
|
|
417
|
+
|
|
418
|
+
返回值: `LogicFlow.GraphElement[]`
|
|
419
|
+
|
|
420
|
+
### graphDataToModel<Badge>方法</Badge>
|
|
421
|
+
|
|
422
|
+
使用新的数据重新设置整个画布的元素
|
|
423
|
+
|
|
424
|
+
注意:将会清除画布上所有已有的节点和边
|
|
425
|
+
|
|
426
|
+
入参:
|
|
427
|
+
|
|
428
|
+
| 名称 | 类型 | 默认值 | 说明 |
|
|
429
|
+
| --------- | --------------- | ------ | ------------ |
|
|
430
|
+
| graphData | GraphConfigData | 无 | 图的基本数据 |
|
|
431
|
+
|
|
432
|
+
```tsx | pure
|
|
433
|
+
const graphData = {
|
|
434
|
+
nodes: [
|
|
435
|
+
{
|
|
436
|
+
id: "node_id_1",
|
|
437
|
+
type: "rect",
|
|
438
|
+
x: 100,
|
|
439
|
+
y: 100,
|
|
440
|
+
text: { x: 100, y: 100, value: "节点1" },
|
|
441
|
+
properties: {},
|
|
442
|
+
},
|
|
443
|
+
{
|
|
444
|
+
id: "node_id_2",
|
|
445
|
+
type: "circle",
|
|
446
|
+
x: 200,
|
|
447
|
+
y: 300,
|
|
448
|
+
text: { x: 200, y: 300, value: "节点2" },
|
|
449
|
+
properties: {},
|
|
450
|
+
},
|
|
451
|
+
],
|
|
452
|
+
edges: [
|
|
453
|
+
{
|
|
454
|
+
id: "edge_id",
|
|
455
|
+
type: "polyline",
|
|
456
|
+
sourceNodeId: "node_id_1",
|
|
457
|
+
targetNodeId: "node_id_2",
|
|
458
|
+
text: { x: 139, y: 200, value: "连线" },
|
|
459
|
+
startPoint: { x: 100, y: 140 },
|
|
460
|
+
endPoint: { x: 200, y: 250 },
|
|
461
|
+
pointsList: [
|
|
462
|
+
{ x: 100, y: 140 },
|
|
463
|
+
{ x: 100, y: 200 },
|
|
464
|
+
{ x: 200, y: 200 },
|
|
465
|
+
{ x: 200, y: 250 },
|
|
466
|
+
],
|
|
467
|
+
properties: {},
|
|
468
|
+
},
|
|
469
|
+
],
|
|
470
|
+
};
|
|
471
|
+
|
|
472
|
+
graphModel.graphDataToModel(graphData);
|
|
473
|
+
```
|
|
474
|
+
|
|
475
|
+
### modelToGraphData<Badge>方法</Badge>
|
|
476
|
+
|
|
477
|
+
获取 graphModel 对应的原始数据
|
|
478
|
+
|
|
479
|
+
返回值: `GraphConfigData`
|
|
480
|
+
|
|
481
|
+
```tsx | pure
|
|
482
|
+
const graphData = graphModel.modelToGraphData();
|
|
483
|
+
console.log(graphData)
|
|
484
|
+
```
|
|
485
|
+
|
|
486
|
+
### modelToHistoryData<Badge>方法</Badge>
|
|
487
|
+
|
|
488
|
+
获取 history 记录的数据
|
|
489
|
+
|
|
490
|
+
返回值:false | HistoryData
|
|
491
|
+
|
|
492
|
+
```tsx | pure
|
|
493
|
+
const historyData = graphModel.modelToHistoryData();
|
|
494
|
+
console.log(historyData)
|
|
495
|
+
```
|
|
496
|
+
|
|
497
|
+
### getEdgeModelById<Badge>方法</Badge>
|
|
498
|
+
|
|
499
|
+
获取边的 Model
|
|
500
|
+
|
|
501
|
+
入参:
|
|
502
|
+
|
|
503
|
+
| 名称 | 类型 | 默认值 | 说明 |
|
|
504
|
+
| ------ | ------ | ------ | ----- |
|
|
505
|
+
| edgeId | string | 无 | 边 Id |
|
|
506
|
+
|
|
507
|
+
返回值: [EdgeModel](./edgeModel.zh.md)
|
|
508
|
+
|
|
509
|
+
```tsx | pure
|
|
510
|
+
const edgeModel = graphModel.getEdgeModelById('edge_id');
|
|
511
|
+
console.log(edgeModel)
|
|
512
|
+
```
|
|
513
|
+
|
|
514
|
+
### getElement<Badge>方法</Badge>
|
|
515
|
+
|
|
516
|
+
获取节点或者边的 Model
|
|
517
|
+
|
|
518
|
+
入参:
|
|
519
|
+
|
|
520
|
+
| 名称 | 类型 | 默认值 | 说明 |
|
|
521
|
+
| ---- | ------ | ------ | ----------------- |
|
|
522
|
+
| id | string | 无 | 边 Id 或者节点 Id |
|
|
523
|
+
|
|
524
|
+
返回值: [EdgeModel](./edgeModel.zh.md) 或者 [NodeModel](nodeModel.zh.md)
|
|
525
|
+
|
|
526
|
+
```tsx | pure
|
|
527
|
+
const edgeModel = graphModel.getElement('edge_id');
|
|
528
|
+
console.log(edgeModel)
|
|
529
|
+
```
|
|
530
|
+
|
|
531
|
+
### getNodeEdges<Badge>方法</Badge>
|
|
532
|
+
|
|
533
|
+
获取指定节点上所有的边
|
|
534
|
+
|
|
535
|
+
入参:
|
|
536
|
+
|
|
537
|
+
| 名称 | 类型 | 默认值 | 说明 |
|
|
538
|
+
| ------ | ------ | ------ | ------- |
|
|
539
|
+
| nodeId | string | 无 | 节点 Id |
|
|
540
|
+
|
|
541
|
+
返回值: [EdgeModel](./edgeModel.zh.md)
|
|
542
|
+
|
|
543
|
+
```tsx | pure
|
|
544
|
+
const edgeModels = graphModel.getNodeEdges('node_id_1');
|
|
545
|
+
console.log(edgeModels)
|
|
546
|
+
```
|
|
547
|
+
|
|
548
|
+
### getSelectElements<Badge>方法</Badge>
|
|
549
|
+
|
|
550
|
+
获取选中的元素数据
|
|
551
|
+
|
|
552
|
+
入参:
|
|
553
|
+
|
|
554
|
+
| 名称 | 类型 | 默认值 | 说明 |
|
|
555
|
+
| ------------- | ------- | ------ | ------------------------------------------------------------------------------------------------------------------ |
|
|
556
|
+
| isIgnoreCheck | boolean | true | 是否包括 sourceNode 和 targetNode 没有被选中的边,默认包括。 复制的时候不能包括此类边, 因为复制的时候不允许悬空的边 |
|
|
557
|
+
|
|
558
|
+
```tsx | pure
|
|
559
|
+
const elements = graphModel.getSelectElements(true);
|
|
560
|
+
console.log(elements)
|
|
561
|
+
```
|
|
562
|
+
|
|
563
|
+
### updateAttributes<Badge>方法</Badge>
|
|
564
|
+
|
|
565
|
+
修改对应元素 model 中的属性
|
|
566
|
+
|
|
567
|
+
:::warning{title=警告}
|
|
568
|
+
注意:此方法慎用,除非您对 logicflow 内部有足够的了解。<br>
|
|
569
|
+
大多数情况下,请使用 setProperties、updateText、changeNodeId 等方法。<br>
|
|
570
|
+
例如:直接使用此方法修改节点的 id,那么就是会导致连接到此节点的边的 sourceNodeId 出现找不到的情况。
|
|
571
|
+
:::
|
|
572
|
+
|
|
573
|
+
入参:
|
|
574
|
+
|
|
575
|
+
| 名称 | 类型 | 默认值 | 说明 |
|
|
576
|
+
| ---------- | ------ | ------ | -------- |
|
|
577
|
+
| id | string | 无 | 节点 Id |
|
|
578
|
+
| attributes | object | 无 | 元素属性 |
|
|
579
|
+
|
|
580
|
+
```tsx | pure
|
|
581
|
+
graphModel.updateAttributes("node_id_1", {
|
|
582
|
+
radius: 4,
|
|
583
|
+
});
|
|
584
|
+
```
|
|
585
|
+
|
|
586
|
+
### getVirtualRectSize<Badge>方法</Badge>
|
|
587
|
+
|
|
588
|
+
获取图形区域虚拟矩形的大小及其中心位置
|
|
589
|
+
|
|
590
|
+
参数 `includeEdge: boolean = false`
|
|
591
|
+
返回值 `GraphModel.VirtualRectProps`
|
|
592
|
+
|
|
593
|
+
```tsx | pure
|
|
594
|
+
const virtualdata = graphModel.getVirtualRectSize();
|
|
595
|
+
console.log(virtualdata);
|
|
596
|
+
// virtualdata输出内容 : { width, height, x, y }
|
|
597
|
+
```
|
|
598
|
+
|
|
599
|
+
### changeNodeId<Badge>方法</Badge>
|
|
600
|
+
|
|
601
|
+
修改节点的 id, 如果不传新的 id,会内部自动创建一个。
|
|
602
|
+
|
|
603
|
+
入参:
|
|
604
|
+
|
|
605
|
+
| 名称 | 类型 | 默认值 | 说明 |
|
|
606
|
+
| ----- | ------ | ------ | ------- |
|
|
607
|
+
| oldId | string | 无 | 节点 Id |
|
|
608
|
+
| newId | string | 无 | 新的 Id |
|
|
609
|
+
|
|
610
|
+
```tsx | pure
|
|
611
|
+
graphModel.changeNodeId("node_id_1", "node_id_2");
|
|
612
|
+
```
|
|
613
|
+
|
|
614
|
+
### changeEdgeId<Badge>方法</Badge>
|
|
615
|
+
|
|
616
|
+
修改边的 id, 如果不传新的 id,会内部自动创建一个。
|
|
617
|
+
|
|
618
|
+
入参:
|
|
619
|
+
|
|
620
|
+
| 名称 | 类型 | 默认值 | 说明 |
|
|
621
|
+
| ----- | ------ | ------ | ------- |
|
|
622
|
+
| oldId | string | 无 | 节点 Id |
|
|
623
|
+
| newId | string | 无 | 新的 Id |
|
|
624
|
+
|
|
625
|
+
```tsx | pure
|
|
626
|
+
graphModel.changeEdgeId("edge_id_1", "edge_id_2");
|
|
627
|
+
```
|
|
628
|
+
|
|
629
|
+
### handleEdgeTextMove<Badge>方法</Badge>
|
|
630
|
+
|
|
631
|
+
移动边上的 Text
|
|
632
|
+
|
|
633
|
+
入参:
|
|
634
|
+
|
|
635
|
+
| 名称 | 类型 | 默认值 | 说明 |
|
|
636
|
+
| ---- | ------------- | ------ | ---------- |
|
|
637
|
+
| edge | BaseEdgeModel | 无 | 边 model |
|
|
638
|
+
| x | number | 无 | x 轴坐标值 |
|
|
639
|
+
| y | number | 无 | y 轴坐标值 |
|
|
640
|
+
|
|
641
|
+
### toFront<Badge>方法</Badge>
|
|
642
|
+
|
|
643
|
+
将指定节点或者边放置在前面
|
|
644
|
+
|
|
645
|
+
在默认模式(以及 `EDGE_TOP` 模式)下,指定元素会被临时置顶(zIndex 设为较高值),当取消选中时恢复原有层级。
|
|
646
|
+
|
|
647
|
+
在递增模式下,指定元素的 zIndex 会提升到当前最大值 + 1,并在取消选中后仍保留提升的层级。
|
|
648
|
+
|
|
649
|
+
在静态模式下,此方法不生效。
|
|
650
|
+
|
|
651
|
+
入参:
|
|
652
|
+
|
|
653
|
+
| 名称 | 类型 | 默认值 | 说明 |
|
|
654
|
+
| ---- | ------ | ------ | --------------- |
|
|
655
|
+
| id | string | 无 | 节点 id 或边 id |
|
|
656
|
+
|
|
657
|
+
```tsx | pure
|
|
658
|
+
graphModel.toFront("edge_id_1");
|
|
659
|
+
```
|
|
660
|
+
|
|
661
|
+
### setElementZIndex<Badge>方法</Badge>
|
|
662
|
+
|
|
663
|
+
设置元素的 zIndex.
|
|
664
|
+
|
|
665
|
+
注意:默认堆叠模式下,不建议使用此方法。
|
|
666
|
+
|
|
667
|
+
入参:
|
|
668
|
+
|
|
669
|
+
| 名称 | 类型 | 默认值 | 说明 |
|
|
670
|
+
| ------ | ----------------------- | ------ | --------------------------------------- |
|
|
671
|
+
| id | string | 无 | 节点 id 或边 id |
|
|
672
|
+
| zIndex | number\|'top'\|'bottom' | 无 | 可以传数字,也支持传入`top` 和 `bottom` |
|
|
673
|
+
|
|
674
|
+
```tsx | pure
|
|
675
|
+
graphModel.setElementZIndex("top");
|
|
676
|
+
```
|
|
677
|
+
|
|
678
|
+
### setElementStateById<Badge>方法</Badge>
|
|
679
|
+
|
|
680
|
+
设置元素的状态(在需要保证整个画布上所有的元素只有一个元素拥有某状态时,可以调用此方法)
|
|
681
|
+
|
|
682
|
+
入参:
|
|
683
|
+
|
|
684
|
+
| 名称 | 类型 | 必传 | 默认值 | 说明 |
|
|
685
|
+
| ----------------- | ----------------------------- | ---- | ------ | --------------------------------- |
|
|
686
|
+
| id | string | ✅ | 无 | 节点 id 或边 id |
|
|
687
|
+
| state | [`ElementState`](../type/MainTypes.zh.md#elementstate元素状态) | ✅ | 无 | 设置 Node \| Edge 等 model 的状态 |
|
|
688
|
+
| additionStateData | `Model.AdditionStateDataType` | - | 无 | 传递的额外值 |
|
|
689
|
+
|
|
690
|
+
使用:
|
|
691
|
+
|
|
692
|
+
```tsx | pure
|
|
693
|
+
graphModel.setElementStateById("node_1", 4);
|
|
694
|
+
```
|
|
695
|
+
|
|
696
|
+
### deleteNode<Badge>方法</Badge>
|
|
697
|
+
|
|
698
|
+
删除节点
|
|
699
|
+
|
|
700
|
+
入参:
|
|
701
|
+
|
|
702
|
+
| 名称 | 类型 | 默认值 | 说明 |
|
|
703
|
+
| ---- | ------ | ------ | ------- |
|
|
704
|
+
| id | string | 无 | 节点 ID |
|
|
705
|
+
|
|
706
|
+
```tsx | pure
|
|
707
|
+
graphModel.deleteNode("node_1");
|
|
708
|
+
```
|
|
709
|
+
|
|
710
|
+
### addNode<Badge>方法</Badge>
|
|
711
|
+
|
|
712
|
+
添加节点
|
|
713
|
+
|
|
714
|
+
入参:
|
|
715
|
+
|
|
716
|
+
| 名称 | 类型 | 默认值 | 说明 |
|
|
717
|
+
| ---------- | ---------- | ------ | -------- |
|
|
718
|
+
| nodeConfig | NodeConfig | 无 | 节点配置 |
|
|
719
|
+
|
|
720
|
+
```tsx | pure
|
|
721
|
+
const nodeModel = graphModel.addNode({
|
|
722
|
+
type: "rect",
|
|
723
|
+
x: 300,
|
|
724
|
+
y: 300,
|
|
725
|
+
});
|
|
726
|
+
```
|
|
727
|
+
|
|
728
|
+
### cloneNode<Badge>方法</Badge>
|
|
729
|
+
|
|
730
|
+
克隆节点
|
|
731
|
+
|
|
732
|
+
入参:
|
|
733
|
+
|
|
734
|
+
| 名称 | 类型 | 默认值 | 说明 |
|
|
735
|
+
| ------ | ------ | ------ | ------- |
|
|
736
|
+
| nodeId | string | 无 | 节点 id |
|
|
737
|
+
|
|
738
|
+
```tsx | pure
|
|
739
|
+
const nodeModel = graphModel.cloneNode("node_1");
|
|
740
|
+
```
|
|
741
|
+
|
|
742
|
+
### moveNode<Badge>方法</Badge>
|
|
743
|
+
|
|
744
|
+
移动节点
|
|
745
|
+
|
|
746
|
+
入参:
|
|
747
|
+
|
|
748
|
+
| 名称 | 类型 | 默认值 | 说明 |
|
|
749
|
+
| ------------ | ------- | ------ | -------------------- |
|
|
750
|
+
| nodeId | string | 无 | 节点 id |
|
|
751
|
+
| deltaX | number | 无 | 移动 x 轴距离 |
|
|
752
|
+
| deltaY | number | 无 | 移动 y 轴距离 |
|
|
753
|
+
| isIgnoreRule | boolean | false | 是否忽略移动规则限制 |
|
|
754
|
+
|
|
755
|
+
```tsx | pure
|
|
756
|
+
graphModel.moveNode("node_1", 10, 10, true);
|
|
757
|
+
```
|
|
758
|
+
|
|
759
|
+
### moveNode2Coordinate<Badge>方法</Badge>
|
|
760
|
+
|
|
761
|
+
移动节点-绝对位置
|
|
762
|
+
|
|
763
|
+
入参:
|
|
764
|
+
|
|
765
|
+
| 名称 | 类型 | 默认值 | 说明 |
|
|
766
|
+
| ------------ | ------- | ------ | -------------------- |
|
|
767
|
+
| nodeId | string | 无 | 节点 id |
|
|
768
|
+
| x | number | 无 | 目标 x 坐标 |
|
|
769
|
+
| y | number | 无 | 目标 y 坐标 |
|
|
770
|
+
| isIgnoreRule | boolean | false | 是否忽略移动规则限制 |
|
|
771
|
+
|
|
772
|
+
```tsx | pure
|
|
773
|
+
graphModel.moveNode2Coordinate("node_1", 100, 100, true);
|
|
774
|
+
```
|
|
775
|
+
|
|
776
|
+
### editText<Badge>方法</Badge>
|
|
777
|
+
|
|
778
|
+
显示节点、连线文本编辑框, 进入编辑状态
|
|
779
|
+
|
|
780
|
+
入参:
|
|
781
|
+
|
|
782
|
+
| 名称 | 类型 | 默认值 | 说明 |
|
|
783
|
+
| ---- | ------ | ------ | ----------------- |
|
|
784
|
+
| id | string | 无 | 节点 id 或者边 id |
|
|
785
|
+
|
|
786
|
+
```tsx | pure
|
|
787
|
+
graphModel.editText("node_1");
|
|
788
|
+
```
|
|
789
|
+
|
|
790
|
+
:::info{title=注意}
|
|
791
|
+
当初始化 lf 实例的时候,传入的设置了文本不可编辑,这个时候 LogicFlow 内部不会监听事件去取消元素的编辑状态。这个时候需要自己手动监听,
|
|
792
|
+
然后使用`setElementState`方法取消文本编辑状态。
|
|
793
|
+
:::
|
|
794
|
+
|
|
795
|
+
### setElementState<Badge>方法</Badge>
|
|
796
|
+
|
|
797
|
+
设置元素的状态
|
|
798
|
+
|
|
799
|
+
入参:
|
|
800
|
+
|
|
801
|
+
| 名称 | 类型 | 默认值 | 说明 |
|
|
802
|
+
| ---- | ------ | ------ | ------------------------------------------------------------------------------ |
|
|
803
|
+
| type | number | 无 | 1 表示默认状态;2 表示文本编辑中;4 表示节点允许作为当前边的目标节点;5 表示节点不允许作为当前边的目标节点 |
|
|
804
|
+
|
|
805
|
+
例如在某些场景中,节点和连线都默认不允许编辑的。但是当某些操作后,就允许编辑了,这个时候可以通过此方法将元素从编辑状态设置为不可以编辑状态。
|
|
806
|
+
|
|
807
|
+
```tsx | pure
|
|
808
|
+
lf.on("node:dbclick", ({ data }) => {
|
|
809
|
+
lf.graphModel.editText(data.id);
|
|
810
|
+
lf.once("graph:transform,node:click,blank:click", () => {
|
|
811
|
+
lf.graphModel.textEditElement.setElementState(1);
|
|
812
|
+
});
|
|
813
|
+
});
|
|
814
|
+
```
|
|
815
|
+
|
|
816
|
+
### addEdge<Badge>方法</Badge>
|
|
817
|
+
|
|
818
|
+
添加边
|
|
819
|
+
|
|
820
|
+
入参:
|
|
821
|
+
|
|
822
|
+
| 名称 | 类型 | 默认值 | 说明 |
|
|
823
|
+
| ---------- | ---------- | ------ | ------ |
|
|
824
|
+
| edgeConfig | EdgeConfig | 无 | 边配置 |
|
|
825
|
+
|
|
826
|
+
```tsx | pure
|
|
827
|
+
const edgeModel = graphModel.addEdge({
|
|
828
|
+
type: "polyline",
|
|
829
|
+
sourceNodeId: "node_1",
|
|
830
|
+
targetNodeId: "node_2",
|
|
831
|
+
});
|
|
832
|
+
```
|
|
833
|
+
|
|
834
|
+
### deleteEdgeBySourceAndTarget<Badge>方法</Badge>
|
|
835
|
+
|
|
836
|
+
删除边
|
|
837
|
+
|
|
838
|
+
入参:
|
|
839
|
+
|
|
840
|
+
| 名称 | 类型 | 默认值 | 说明 |
|
|
841
|
+
| ------------ | ------ | ------ | ----------- |
|
|
842
|
+
| sourceNodeId | string | 无 | 起点 id |
|
|
843
|
+
| targetNodeId | string | 无 | 结束节点 ID |
|
|
844
|
+
|
|
845
|
+
```tsx | pure
|
|
846
|
+
graphModel.deleteEdgeBySourceAndTarget("node_1", "node_2");
|
|
847
|
+
```
|
|
848
|
+
|
|
849
|
+
### deleteEdgeById<Badge>方法</Badge>
|
|
850
|
+
|
|
851
|
+
基于边 Id 删除边
|
|
852
|
+
|
|
853
|
+
入参:
|
|
854
|
+
|
|
855
|
+
| 名称 | 类型 | 默认值 | 说明 |
|
|
856
|
+
| ---- | ------ | ------ | ----- |
|
|
857
|
+
| id | string | 无 | 边 id |
|
|
858
|
+
|
|
859
|
+
```tsx | pure
|
|
860
|
+
graphModel.deleteEdgeById("edge_1");
|
|
861
|
+
```
|
|
862
|
+
|
|
863
|
+
### deleteEdgeBySource<Badge>方法</Badge>
|
|
864
|
+
|
|
865
|
+
删除指定节点为起点的所有边
|
|
866
|
+
|
|
867
|
+
入参:
|
|
868
|
+
|
|
869
|
+
| 名称 | 类型 | 默认值 | 说明 |
|
|
870
|
+
| ---- | ------ | ------ | --------- |
|
|
871
|
+
| id | string | 无 | 边起点 id |
|
|
872
|
+
|
|
873
|
+
```tsx | pure
|
|
874
|
+
graphModel.deleteEdgeBySource("node_1");
|
|
875
|
+
```
|
|
876
|
+
|
|
877
|
+
### deleteEdgeByTarget<Badge>方法</Badge>
|
|
878
|
+
|
|
879
|
+
删除指定节点为目标点的所有边
|
|
880
|
+
|
|
881
|
+
入参:
|
|
882
|
+
|
|
883
|
+
| 名称 | 类型 | 默认值 | 说明 |
|
|
884
|
+
| ---- | ------ | ------ | ----------- |
|
|
885
|
+
| id | string | 无 | 边目的点 id |
|
|
886
|
+
|
|
887
|
+
```tsx | pure
|
|
888
|
+
graphModel.deleteEdgeByTarget("node_1");
|
|
889
|
+
```
|
|
890
|
+
|
|
891
|
+
### updateText<Badge>方法</Badge>
|
|
892
|
+
|
|
893
|
+
设置指定元素的文案
|
|
894
|
+
|
|
895
|
+
```tsx | pure
|
|
896
|
+
graphModel.updateText("node_1", "hello world");
|
|
897
|
+
```
|
|
898
|
+
|
|
899
|
+
### selectNodeById<Badge>方法</Badge>
|
|
900
|
+
|
|
901
|
+
选中节点
|
|
902
|
+
|
|
903
|
+
入参:
|
|
904
|
+
|
|
905
|
+
| 名称 | 类型 | 默认值 | 说明 |
|
|
906
|
+
| -------- | ------- | ------ | -------- |
|
|
907
|
+
| id | string | 无 | 节点 id |
|
|
908
|
+
| multiple | boolean | 无 | 是否多选 |
|
|
909
|
+
|
|
910
|
+
```tsx | pure
|
|
911
|
+
graphModel.selectNodeById("node_1", true);
|
|
912
|
+
```
|
|
913
|
+
|
|
914
|
+
### selectEdgeById<Badge>方法</Badge>
|
|
915
|
+
|
|
916
|
+
选中边
|
|
917
|
+
|
|
918
|
+
入参:
|
|
919
|
+
|
|
920
|
+
| 名称 | 类型 | 默认值 | 说明 |
|
|
921
|
+
| -------- | ------- | ------ | -------- |
|
|
922
|
+
| id | string | 无 | 节点 id |
|
|
923
|
+
| multiple | boolean | 无 | 是否多选 |
|
|
924
|
+
|
|
925
|
+
```tsx | pure
|
|
926
|
+
graphModel.selectEdgeById("edge_1", true);
|
|
927
|
+
```
|
|
928
|
+
|
|
929
|
+
### selectElementById<Badge>方法</Badge>
|
|
930
|
+
|
|
931
|
+
选中节点和边
|
|
932
|
+
|
|
933
|
+
入参:
|
|
934
|
+
|
|
935
|
+
| 名称 | 类型 | 默认值 | 说明 |
|
|
936
|
+
| -------- | ------- | ------ | ----------- |
|
|
937
|
+
| id | string | 无 | 节点或边 id |
|
|
938
|
+
| multiple | boolean | 无 | 是否多选 |
|
|
939
|
+
|
|
940
|
+
```tsx | pure
|
|
941
|
+
graphModel.selectElementById("edge_1", true);
|
|
942
|
+
```
|
|
943
|
+
|
|
944
|
+
### clearSelectElements<Badge>方法</Badge>
|
|
945
|
+
|
|
946
|
+
取消所有被选中元素的选中状态
|
|
947
|
+
|
|
948
|
+
```tsx | pure
|
|
949
|
+
graphModel.clearSelectElements();
|
|
950
|
+
```
|
|
951
|
+
|
|
952
|
+
### moveNodes<Badge>方法</Badge>
|
|
953
|
+
|
|
954
|
+
批量移动节点,节点移动的时候,会动态计算所有节点与未移动节点的边位置
|
|
955
|
+
|
|
956
|
+
移动的节点之间的边会保持相对位置
|
|
957
|
+
|
|
958
|
+
参数
|
|
959
|
+
|
|
960
|
+
| 名称 | 类型 | 必传 | 默认值 | 描述 |
|
|
961
|
+
| :------ | :------- | :--- | :----- | :-------------- |
|
|
962
|
+
| nodeIds | string[] | ✅ | 无 | 所有节点 id |
|
|
963
|
+
| deltaX | number | ✅ | 无 | 移动的 x 轴距离 |
|
|
964
|
+
| deltaY | number | ✅ | 无 | 移动的 y 轴距离 |
|
|
965
|
+
|
|
966
|
+
```tsx | pure
|
|
967
|
+
graphModel.moveNodes(["node_id", "node_2"], 10, 10);
|
|
968
|
+
```
|
|
969
|
+
|
|
970
|
+
### addNodeMoveRules<Badge>方法</Badge>
|
|
971
|
+
|
|
972
|
+
添加节点移动限制规则,在节点移动的时候触发。
|
|
973
|
+
|
|
974
|
+
如果方法返回 false, 则会阻止节点移动。
|
|
975
|
+
|
|
976
|
+
```tsx | pure
|
|
977
|
+
graphModel.addNodeMoveRules((nodeModel, x, y) => {
|
|
978
|
+
if (nodeModel.properties.disabled) {
|
|
979
|
+
return false;
|
|
980
|
+
}
|
|
981
|
+
return true;
|
|
982
|
+
});
|
|
983
|
+
```
|
|
984
|
+
|
|
985
|
+
### getNodeIncomingNode<Badge>方法</Badge>
|
|
986
|
+
|
|
987
|
+
获取节点所有的上一级节点
|
|
988
|
+
|
|
989
|
+
```tsx | pure
|
|
990
|
+
graphModel.getNodeIncomingNode = (nodeId: string): BaseNodeModel[] => {}
|
|
991
|
+
```
|
|
992
|
+
|
|
993
|
+
参数:
|
|
994
|
+
|
|
995
|
+
| 名称 | 类型 | 必传 | 默认值 | 描述 |
|
|
996
|
+
| :----- | :----- | :--- | :----- | :------ |
|
|
997
|
+
| nodeId | string | ✅ | - | 节点 id |
|
|
998
|
+
|
|
999
|
+
### getNodeOutgoingNode<Badge>方法</Badge>
|
|
1000
|
+
|
|
1001
|
+
获取节点所有的下一级节点
|
|
1002
|
+
|
|
1003
|
+
```tsx | pure
|
|
1004
|
+
graphModel.getNodeOutgoingNode = (nodeId: string): BaseNodeModel[] => {}
|
|
1005
|
+
```
|
|
1006
|
+
|
|
1007
|
+
参数:
|
|
1008
|
+
|
|
1009
|
+
| 名称 | 类型 | 必传 | 默认值 | 描述 |
|
|
1010
|
+
| :----- | :----- | :--- | :----- | :------ |
|
|
1011
|
+
| nodeId | string | ✅ | - | 节点 id |
|
|
1012
|
+
|
|
1013
|
+
### getNodeIncomingEdge<Badge>方法</Badge>
|
|
1014
|
+
|
|
1015
|
+
获取所有以此节点为终点的边
|
|
1016
|
+
|
|
1017
|
+
```tsx | pure
|
|
1018
|
+
graphModel.getNodeIncomingEdge = (nodeId: string): BaseEdgeModel[] => {}
|
|
1019
|
+
```
|
|
1020
|
+
|
|
1021
|
+
参数:
|
|
1022
|
+
|
|
1023
|
+
| 名称 | 类型 | 必传 | 默认值 | 描述 |
|
|
1024
|
+
| :----- | :----- | :--- | :----- | :------ |
|
|
1025
|
+
| nodeId | string | ✅ | - | 节点 id |
|
|
1026
|
+
|
|
1027
|
+
### getNodeOutgoingEdge<Badge>方法</Badge>
|
|
1028
|
+
|
|
1029
|
+
获取所有以此节点为起点的边
|
|
1030
|
+
|
|
1031
|
+
```tsx | pure
|
|
1032
|
+
graphModel.getNodeOutgoingEdge = (nodeId: string): BaseEdgeModel[] => {}
|
|
1033
|
+
```
|
|
1034
|
+
|
|
1035
|
+
参数:
|
|
1036
|
+
|
|
1037
|
+
| 名称 | 类型 | 必传 | 默认值 | 描述 |
|
|
1038
|
+
| :----- | :----- | :--- | :----- | :------ |
|
|
1039
|
+
| nodeId | string | ✅ | - | 节点 id |
|
|
1040
|
+
|
|
1041
|
+
### setDefaultEdgeType<Badge>方法</Badge>
|
|
1042
|
+
|
|
1043
|
+
修改默认边的类型
|
|
1044
|
+
|
|
1045
|
+
参数
|
|
1046
|
+
|
|
1047
|
+
| 名称 | 类型 | 必传 | 默认值 | 描述 |
|
|
1048
|
+
| :--- | :----- | :--- | :----- | :----- |
|
|
1049
|
+
| type | string | ✅ | 无 | 边类型 |
|
|
1050
|
+
|
|
1051
|
+
```tsx | pure
|
|
1052
|
+
graphModel.setDefaultEdgeType("bezier");
|
|
1053
|
+
```
|
|
1054
|
+
|
|
1055
|
+
### changeNodeType<Badge>方法</Badge>
|
|
1056
|
+
|
|
1057
|
+
修改指定节点的类型
|
|
1058
|
+
|
|
1059
|
+
参数
|
|
1060
|
+
|
|
1061
|
+
| 名称 | 类型 | 必传 | 默认值 | 描述 |
|
|
1062
|
+
| :--- | :----- | :--- | :----- | :------- |
|
|
1063
|
+
| id | string | ✅ | 无 | 节点 |
|
|
1064
|
+
| type | string | ✅ | 无 | 节点类型 |
|
|
1065
|
+
|
|
1066
|
+
```tsx | pure
|
|
1067
|
+
graphModel.changeNodeType("node_1", "circle");
|
|
1068
|
+
```
|
|
1069
|
+
|
|
1070
|
+
### changeEdgeType<Badge>方法</Badge>
|
|
1071
|
+
|
|
1072
|
+
修改指定边的类型
|
|
1073
|
+
|
|
1074
|
+
参数
|
|
1075
|
+
|
|
1076
|
+
| 名称 | 类型 | 必传 | 默认值 | 描述 |
|
|
1077
|
+
| :--- | :----- | :--- | :----- | :----- |
|
|
1078
|
+
| id | string | ✅ | 无 | 节点 |
|
|
1079
|
+
| type | string | ✅ | 无 | 边类型 |
|
|
1080
|
+
|
|
1081
|
+
```tsx | pure
|
|
1082
|
+
graphModel.changeEdgeType("edge_1", "bezier");
|
|
1083
|
+
```
|
|
1084
|
+
|
|
1085
|
+
### openEdgeAnimation<Badge>方法</Badge>
|
|
1086
|
+
|
|
1087
|
+
开启边动画开关
|
|
1088
|
+
|
|
1089
|
+
参数 edgeId: string
|
|
1090
|
+
|
|
1091
|
+
```tsx | pure
|
|
1092
|
+
graphModel.openEdgeAnimation("edge_1");
|
|
1093
|
+
```
|
|
1094
|
+
|
|
1095
|
+
### closeEdgeAnimation<Badge>方法</Badge>
|
|
1096
|
+
|
|
1097
|
+
关闭边动画开关
|
|
1098
|
+
|
|
1099
|
+
参数 edgeId: string
|
|
1100
|
+
|
|
1101
|
+
```tsx | pure
|
|
1102
|
+
graphModel.closeEdgeAnimation("edge_1");
|
|
1103
|
+
```
|
|
1104
|
+
|
|
1105
|
+
### setTheme<Badge>方法</Badge>
|
|
1106
|
+
|
|
1107
|
+
设置主题
|
|
1108
|
+
|
|
1109
|
+
```tsx | pure
|
|
1110
|
+
graphModel.setTheme({
|
|
1111
|
+
rect: {
|
|
1112
|
+
fill: "red",
|
|
1113
|
+
},
|
|
1114
|
+
});
|
|
1115
|
+
```
|
|
1116
|
+
|
|
1117
|
+
### resize<Badge>方法</Badge>
|
|
1118
|
+
|
|
1119
|
+
重新设置画布的宽高
|
|
1120
|
+
|
|
1121
|
+
```tsx | pure
|
|
1122
|
+
graphModel.resize(1000, 600);
|
|
1123
|
+
```
|
|
1124
|
+
|
|
1125
|
+
### clearData<Badge>方法</Badge>
|
|
1126
|
+
|
|
1127
|
+
清空画布所有元素
|
|
1128
|
+
|
|
1129
|
+
```tsx | pure
|
|
1130
|
+
graphModel.clearData();
|
|
1131
|
+
```
|
|
1132
|
+
|
|
1133
|
+
### translateCenter<Badge>方法</Badge>
|
|
1134
|
+
|
|
1135
|
+
将图像整体移动到画布中心
|
|
1136
|
+
|
|
1137
|
+
```tsx | pure
|
|
1138
|
+
graphModel.translateCenter();
|
|
1139
|
+
```
|
|
1140
|
+
|
|
1141
|
+
### fitView<Badge>方法</Badge>
|
|
1142
|
+
|
|
1143
|
+
画布图形适应屏幕大小
|
|
1144
|
+
|
|
1145
|
+
参数
|
|
1146
|
+
| 名称 | 类型 | 必传 | 默认值 | 描述 |
|
|
1147
|
+
| :--------------- | :----- | :--- | :----- | :----------------- |
|
|
1148
|
+
| verticalOffset | number | - | 20 | 距离盒子上下的距离 |
|
|
1149
|
+
| horizontalOffset | number | - | 20 | 距离盒子左右的距离 |
|
|
1150
|
+
|
|
1151
|
+
```tsx | pure
|
|
1152
|
+
graphModel.fitView();
|
|
1153
|
+
```
|