@logicflow/core 2.2.0 → 2.2.2
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/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/dist/index.css +3 -2
- package/dist/index.min.js +1 -1
- package/dist/index.min.js.map +1 -1
- package/es/LogicFlow.d.ts +9 -0
- package/es/LogicFlow.js +0 -1
- package/es/constant/index.d.ts +1 -1
- package/es/constant/index.js +1 -1
- package/es/constant/theme.d.ts +136 -0
- package/es/constant/theme.js +680 -0
- package/es/index.css +3 -2
- package/es/model/GraphModel.d.ts +10 -2
- package/es/model/GraphModel.js +48 -14
- package/es/model/TransformModel.js +9 -9
- package/es/model/edge/BaseEdgeModel.js +7 -2
- package/es/model/edge/PolylineEdgeModel.d.ts +7 -0
- package/es/model/edge/PolylineEdgeModel.js +136 -7
- package/es/model/node/BaseNodeModel.d.ts +12 -1
- package/es/model/node/BaseNodeModel.js +9 -2
- package/es/model/node/HtmlNodeModel.d.ts +12 -0
- package/es/model/node/HtmlNodeModel.js +19 -0
- package/es/model/node/PolygonNodeModel.js +3 -3
- package/es/options.d.ts +4 -2
- package/es/style/index.css +3 -2
- package/es/style/index.less +3 -2
- package/es/style/raw.d.ts +1 -1
- package/es/style/raw.js +1 -1
- package/es/tool/MultipleSelectTool.js +10 -5
- package/es/util/drag.js +0 -1
- package/es/util/edge.d.ts +40 -1
- package/es/util/edge.js +43 -9
- package/es/util/geometry.d.ts +8 -0
- package/es/util/geometry.js +79 -0
- package/es/util/theme.d.ts +2 -65
- package/es/util/theme.js +4 -281
- package/es/view/Anchor.d.ts +1 -0
- package/es/view/Anchor.js +24 -21
- package/es/view/Control.d.ts +5 -0
- package/es/view/Control.js +44 -57
- package/es/view/edge/BaseEdge.js +9 -0
- package/es/view/edge/PolylineEdge.js +13 -2
- package/es/view/node/BaseNode.d.ts +1 -0
- package/es/view/node/BaseNode.js +23 -11
- package/es/view/node/HtmlNode.js +2 -4
- package/es/view/overlay/CanvasOverlay.js +5 -2
- package/es/view/overlay/Grid.d.ts +12 -1
- package/es/view/overlay/Grid.js +85 -23
- package/es/view/overlay/OutlineOverlay.d.ts +1 -0
- package/es/view/overlay/OutlineOverlay.js +18 -17
- package/es/view/overlay/gridConfig.d.ts +46 -0
- package/es/view/overlay/gridConfig.js +99 -0
- package/es/view/shape/Polygon.d.ts +0 -7
- package/es/view/shape/Polygon.js +12 -43
- package/lib/LogicFlow.d.ts +9 -0
- package/lib/LogicFlow.js +0 -1
- package/lib/constant/index.d.ts +1 -1
- package/lib/constant/index.js +16 -2
- package/lib/constant/theme.d.ts +136 -0
- package/lib/constant/theme.js +683 -0
- package/lib/index.css +3 -2
- package/lib/model/GraphModel.d.ts +10 -2
- package/lib/model/GraphModel.js +49 -15
- package/lib/model/TransformModel.js +9 -9
- package/lib/model/edge/BaseEdgeModel.js +7 -2
- package/lib/model/edge/PolylineEdgeModel.d.ts +7 -0
- package/lib/model/edge/PolylineEdgeModel.js +136 -7
- package/lib/model/node/BaseNodeModel.d.ts +12 -1
- package/lib/model/node/BaseNodeModel.js +9 -2
- package/lib/model/node/HtmlNodeModel.d.ts +12 -0
- package/lib/model/node/HtmlNodeModel.js +19 -0
- package/lib/model/node/PolygonNodeModel.js +3 -3
- package/lib/options.d.ts +4 -2
- package/lib/style/index.css +3 -2
- package/lib/style/index.less +3 -2
- package/lib/style/raw.d.ts +1 -1
- package/lib/style/raw.js +1 -1
- package/lib/tool/MultipleSelectTool.js +10 -5
- package/lib/util/drag.js +0 -1
- package/lib/util/edge.d.ts +40 -1
- package/lib/util/edge.js +43 -9
- package/lib/util/geometry.d.ts +8 -0
- package/lib/util/geometry.js +81 -1
- package/lib/util/theme.d.ts +2 -65
- package/lib/util/theme.js +15 -292
- package/lib/view/Anchor.d.ts +1 -0
- package/lib/view/Anchor.js +24 -21
- package/lib/view/Control.d.ts +5 -0
- package/lib/view/Control.js +44 -57
- package/lib/view/edge/BaseEdge.js +9 -0
- package/lib/view/edge/PolylineEdge.js +13 -2
- package/lib/view/node/BaseNode.d.ts +1 -0
- package/lib/view/node/BaseNode.js +22 -10
- package/lib/view/node/HtmlNode.js +1 -3
- package/lib/view/overlay/CanvasOverlay.js +5 -2
- package/lib/view/overlay/Grid.d.ts +12 -1
- package/lib/view/overlay/Grid.js +83 -21
- package/lib/view/overlay/OutlineOverlay.d.ts +1 -0
- package/lib/view/overlay/OutlineOverlay.js +18 -17
- package/lib/view/overlay/gridConfig.d.ts +46 -0
- package/lib/view/overlay/gridConfig.js +104 -0
- package/lib/view/shape/Polygon.d.ts +0 -7
- package/lib/view/shape/Polygon.js +13 -45
- package/package.json +9 -2
- package/scripts/postinstall-ai-prompt.js +67 -0
- package/.turbo/turbo-build$colon$dev.log +0 -10
- package/.turbo/turbo-build.log +0 -33
- package/CHANGELOG.md +0 -1849
- package/__tests__/algorithm/egde.test.ts +0 -131
- package/__tests__/algorithm/index.test.ts +0 -74
- package/__tests__/algorithm/outline.test.ts +0 -43
- package/__tests__/bugs/1545-spec.test.ts +0 -42
- package/__tests__/event/event.test.ts +0 -22
- package/__tests__/history/history.test.ts +0 -28
- package/__tests__/logicflow.test.ts +0 -575
- package/__tests__/model/graphmodel.test.ts +0 -87
- package/__tests__/util/compatible.test.ts +0 -48
- package/__tests__/util/edge.test.ts +0 -224
- package/__tests__/util/geometry.test.ts +0 -14
- package/__tests__/util/graph.test.ts +0 -16
- package/__tests__/util/matrix.test.ts +0 -41
- package/__tests__/util/node.test.ts +0 -68
- package/__tests__/util/sampling.test.ts +0 -12
- package/__tests__/util/vector.test.ts +0 -50
- package/__tests__/util/zIndex.test.ts +0 -10
- package/src/LogicFlow.tsx +0 -2008
- package/src/algorithm/edge.ts +0 -67
- package/src/algorithm/index.ts +0 -70
- package/src/algorithm/outline.ts +0 -77
- package/src/algorithm/rotate.ts +0 -55
- package/src/common/drag.ts +0 -219
- package/src/common/history.ts +0 -108
- package/src/common/index.ts +0 -6
- package/src/common/keyboard.ts +0 -108
- package/src/common/matrix.ts +0 -122
- package/src/common/vector.ts +0 -93
- package/src/constant/index.ts +0 -179
- package/src/event/event.md +0 -66
- package/src/event/eventArgs.ts +0 -643
- package/src/event/eventEmitter.ts +0 -156
- package/src/history/index.ts +0 -119
- package/src/index.less +0 -1
- package/src/index.ts +0 -26
- package/src/keyboard/index.ts +0 -112
- package/src/keyboard/shortcut.ts +0 -200
- package/src/model/BaseModel.ts +0 -250
- package/src/model/EditConfigModel.ts +0 -334
- package/src/model/GraphModel.ts +0 -1788
- package/src/model/NestedTransformModel.ts +0 -121
- package/src/model/SnaplineModel.ts +0 -256
- package/src/model/TransformModel.ts +0 -258
- package/src/model/edge/BaseEdgeModel.ts +0 -777
- package/src/model/edge/BezierEdgeModel.ts +0 -197
- package/src/model/edge/LineEdgeModel.ts +0 -36
- package/src/model/edge/PolylineEdgeModel.ts +0 -672
- package/src/model/edge/index.ts +0 -4
- package/src/model/index.ts +0 -9
- package/src/model/node/BaseNodeModel.ts +0 -949
- package/src/model/node/CircleNodeModel.ts +0 -91
- package/src/model/node/DiamondNodeModel.ts +0 -132
- package/src/model/node/EllipseNodeModel.ts +0 -98
- package/src/model/node/HtmlNodeModel.ts +0 -50
- package/src/model/node/PolygonNodeModel.ts +0 -150
- package/src/model/node/RectNodeModel.ts +0 -69
- package/src/model/node/TextNodeModel.ts +0 -54
- package/src/model/node/index.ts +0 -8
- package/src/options.ts +0 -145
- package/src/style/index.less +0 -261
- package/src/style/raw.ts +0 -220
- package/src/tool/MultipleSelectTool.tsx +0 -132
- package/src/tool/TextEditTool.tsx +0 -193
- package/src/tool/index.ts +0 -101
- package/src/typings.d.ts +0 -5
- package/src/util/animation.ts +0 -29
- package/src/util/browser.ts +0 -4
- package/src/util/compatible.ts +0 -15
- package/src/util/drag.ts +0 -220
- package/src/util/edge.ts +0 -1060
- package/src/util/geometry.ts +0 -55
- package/src/util/graph.ts +0 -46
- package/src/util/index.ts +0 -17
- package/src/util/matrix.ts +0 -129
- package/src/util/mobx.ts +0 -23
- package/src/util/node.ts +0 -543
- package/src/util/raf.ts +0 -28
- package/src/util/resize.ts +0 -606
- package/src/util/sampling.ts +0 -85
- package/src/util/theme.ts +0 -375
- package/src/util/uuid.ts +0 -26
- package/src/util/vector.ts +0 -93
- package/src/util/zIndex.ts +0 -6
- package/src/view/Anchor.tsx +0 -445
- package/src/view/Control.tsx +0 -512
- package/src/view/Graph.tsx +0 -141
- package/src/view/Rotate.tsx +0 -113
- package/src/view/behavior/dnd.ts +0 -162
- package/src/view/behavior/index.ts +0 -2
- package/src/view/behavior/snapline.ts +0 -16
- package/src/view/edge/AdjustPoint.tsx +0 -425
- package/src/view/edge/Arrow.tsx +0 -54
- package/src/view/edge/BaseEdge.tsx +0 -650
- package/src/view/edge/BezierEdge.tsx +0 -101
- package/src/view/edge/LineEdge.tsx +0 -81
- package/src/view/edge/PolylineEdge.tsx +0 -299
- package/src/view/edge/index.ts +0 -6
- package/src/view/index.ts +0 -8
- package/src/view/node/BaseNode.tsx +0 -571
- package/src/view/node/CircleNode.tsx +0 -21
- package/src/view/node/DiamondNode.tsx +0 -24
- package/src/view/node/EllipseNode.tsx +0 -22
- package/src/view/node/HtmlNode.tsx +0 -95
- package/src/view/node/PolygonNode.tsx +0 -28
- package/src/view/node/RectNode.tsx +0 -30
- package/src/view/node/TextNode.tsx +0 -39
- package/src/view/node/index.ts +0 -8
- package/src/view/overlay/BackgroundOverlay.tsx +0 -34
- package/src/view/overlay/BezierAdjustOverlay.tsx +0 -150
- package/src/view/overlay/CanvasOverlay.tsx +0 -288
- package/src/view/overlay/Grid.tsx +0 -162
- package/src/view/overlay/ModificationOverlay.tsx +0 -31
- package/src/view/overlay/OutlineOverlay.tsx +0 -170
- package/src/view/overlay/SnaplineOverlay.tsx +0 -44
- package/src/view/overlay/ToolOverlay.tsx +0 -65
- package/src/view/overlay/getTransformHoc.tsx +0 -50
- package/src/view/overlay/index.ts +0 -8
- package/src/view/shape/Circle.tsx +0 -41
- package/src/view/shape/Ellipse.tsx +0 -42
- package/src/view/shape/Line.tsx +0 -39
- package/src/view/shape/Path.tsx +0 -22
- package/src/view/shape/Polygon.tsx +0 -91
- package/src/view/shape/Polyline.tsx +0 -31
- package/src/view/shape/Rect.tsx +0 -44
- package/src/view/shape/Text.tsx +0 -169
- package/src/view/shape/index.ts +0 -8
- package/src/view/text/BaseText.tsx +0 -134
- package/src/view/text/LineText.tsx +0 -168
- package/src/view/text/index.ts +0 -2
- package/stats.html +0 -4842
- package/tsconfig.json +0 -18
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
---
|
|
2
|
+
nav: Guide
|
|
3
|
+
group:
|
|
4
|
+
title: Basics
|
|
5
|
+
order: 1
|
|
6
|
+
title: Background
|
|
7
|
+
order: 5
|
|
8
|
+
toc: content
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
### Provides methods to modify the background of the canvas, including background color or background image, which is located at the bottom of the canvas. <Badge>info</Badge>
|
|
12
|
+
|
|
13
|
+
The `background` option sets the style of the background layer of the canvas when it is created, and
|
|
14
|
+
supports passthrough of any style attribute to the background layer. The default value of `false`
|
|
15
|
+
means no background.
|
|
16
|
+
|
|
17
|
+
```tsx | pure
|
|
18
|
+
const lf = new LogicFlow({
|
|
19
|
+
background: false | BackgroundConfig,
|
|
20
|
+
})
|
|
21
|
+
|
|
22
|
+
type BackgroundConfig = {
|
|
23
|
+
backgroundImage?: string,
|
|
24
|
+
backgroundColor?: string,
|
|
25
|
+
backgroundRepeat?: string,
|
|
26
|
+
backgroundPosition?: string,
|
|
27
|
+
backgroundSize?: string,
|
|
28
|
+
backgroundOpacity?: number,
|
|
29
|
+
filter?: string, // Filter
|
|
30
|
+
[key: string]: any,
|
|
31
|
+
};
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### Configuration items
|
|
35
|
+
|
|
36
|
+
### Set the background image
|
|
37
|
+
|
|
38
|
+
```tsx | pure
|
|
39
|
+
const lf = new LogicFlow({
|
|
40
|
+
// ...
|
|
41
|
+
background: {
|
|
42
|
+
backgroundImage: "url(../asserts/img/grid.svg)",
|
|
43
|
+
backgroundRepeat: "repeat",
|
|
44
|
+
},
|
|
45
|
+
});
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## example
|
|
49
|
+
|
|
50
|
+
<a href="https://codesandbox.io/embed/infallible-goldberg-mrwgz?fontsize=14&hidenavigation=1&theme=dark&view=preview" target="_blank"> Go to CodeSandbox for examples</a>
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
---
|
|
2
|
+
nav: Guide
|
|
3
|
+
group:
|
|
4
|
+
title: Basics
|
|
5
|
+
order: 1
|
|
6
|
+
title: Canvas
|
|
7
|
+
order: 4
|
|
8
|
+
toc: content
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
This page covers three canvas-related topics: **grid** (alignment and snapping), **background** (underlay styling), and **snaplines** (alignment guides while dragging nodes).
|
|
12
|
+
|
|
13
|
+
## Grid
|
|
14
|
+
|
|
15
|
+
The grid is the smallest step used when rendering or moving nodes. It keeps node centers on grid points so elements line up cleanly. Larger spacing makes alignment easier; smaller spacing feels smoother when dragging.
|
|
16
|
+
|
|
17
|
+
By default the grid is off and the step is 1px. When enabled, the default size is 20px: rendering snaps to that step, and each move step is 20px.
|
|
18
|
+
|
|
19
|
+
:::warning{title=Note}
|
|
20
|
+
When you set node coordinates they are quantized to the grid. For example center `{ x: 124, y: 138 }` may become `{ x: 120, y: 140 }` on the canvas. Migrating from another designer may require normalizing historical coordinates.
|
|
21
|
+
|
|
22
|
+
If you need both center alignment and edge alignment, prefer node widths and heights that are **even multiples** of the grid size (e.g. with a 20px grid use 20, 40, 80, 120, …).
|
|
23
|
+
:::
|
|
24
|
+
|
|
25
|
+
### Enable the grid
|
|
26
|
+
|
|
27
|
+
Pass `grid` when constructing LogicFlow:
|
|
28
|
+
|
|
29
|
+
```tsx | pure
|
|
30
|
+
const lf1 = new LogicFlow({
|
|
31
|
+
grid: true,
|
|
32
|
+
})
|
|
33
|
+
|
|
34
|
+
// Equivalent to explicit defaults
|
|
35
|
+
const lf2 = new LogicFlow({
|
|
36
|
+
grid: {
|
|
37
|
+
size: 20,
|
|
38
|
+
visible: true,
|
|
39
|
+
type: 'dot',
|
|
40
|
+
config: {
|
|
41
|
+
color: '#ababab',
|
|
42
|
+
thickness: 1,
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
})
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### Grid options
|
|
49
|
+
|
|
50
|
+
You can control size, pattern, color, and line thickness.
|
|
51
|
+
|
|
52
|
+
```tsx | pure
|
|
53
|
+
export type GridOptions = {
|
|
54
|
+
size?: number
|
|
55
|
+
visible?: boolean
|
|
56
|
+
type?: 'dot' | 'mesh'
|
|
57
|
+
config?: {
|
|
58
|
+
color?: string
|
|
59
|
+
thickness?: number
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### Snap to grid (`snapGrid`)
|
|
65
|
+
|
|
66
|
+
`grid` and `snapGrid` work together but differ:
|
|
67
|
+
|
|
68
|
+
- **`grid`**: How the grid is drawn and its cell size (`size`, `visible`, `type`, …).
|
|
69
|
+
- **`snapGrid`**: Whether dragging and placement snap to that grid.
|
|
70
|
+
|
|
71
|
+
So `grid` is mostly visual and sizing; `snapGrid` is an editing behavior flag.
|
|
72
|
+
|
|
73
|
+
#### Turning on snap
|
|
74
|
+
|
|
75
|
+
`snapGrid` is part of edit config: set it at init or update at runtime:
|
|
76
|
+
|
|
77
|
+
```tsx | pure
|
|
78
|
+
const lf = new LogicFlow({
|
|
79
|
+
container: document.querySelector('#app'),
|
|
80
|
+
grid: {
|
|
81
|
+
size: 20,
|
|
82
|
+
visible: true,
|
|
83
|
+
type: 'dot',
|
|
84
|
+
},
|
|
85
|
+
snapGrid: true,
|
|
86
|
+
})
|
|
87
|
+
|
|
88
|
+
lf.updateEditConfig({
|
|
89
|
+
snapGrid: false,
|
|
90
|
+
})
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
For more edit options (including `snapGrid`) see [`editConfigModel`](../../api/runtime-model/graphModel.en.md#editconfigmodel) on the runtime model page and [Edit config](../../api/logicflow-instance/edit-config.en.md) for `lf.updateEditConfig` / `lf.getEditConfig`.
|
|
94
|
+
|
|
95
|
+
### Grid demo
|
|
96
|
+
|
|
97
|
+
<a href="https://codesandbox.io/embed/logicflow-base8-hxtqr?fontsize=14&hidenavigation=1&theme=dark&view=preview" target="_blank">Open the CodeSandbox example</a>
|
|
98
|
+
|
|
99
|
+
## Background
|
|
100
|
+
|
|
101
|
+
LogicFlow can draw a background layer under the diagram (color, image, etc.). Use the `background` option; `false` disables the layer (default).
|
|
102
|
+
|
|
103
|
+
```tsx | pure
|
|
104
|
+
const lf = new LogicFlow({
|
|
105
|
+
background: false | BackgroundConfig,
|
|
106
|
+
})
|
|
107
|
+
|
|
108
|
+
type BackgroundConfig = {
|
|
109
|
+
backgroundImage?: string
|
|
110
|
+
backgroundColor?: string
|
|
111
|
+
backgroundRepeat?: string
|
|
112
|
+
backgroundPosition?: string
|
|
113
|
+
backgroundSize?: string
|
|
114
|
+
backgroundOpacity?: number
|
|
115
|
+
filter?: string
|
|
116
|
+
[key: string]: any
|
|
117
|
+
}
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
### Background image
|
|
121
|
+
|
|
122
|
+
```tsx | pure
|
|
123
|
+
const lf = new LogicFlow({
|
|
124
|
+
background: {
|
|
125
|
+
backgroundImage: 'url(../asserts/img/grid.svg)',
|
|
126
|
+
backgroundRepeat: 'repeat',
|
|
127
|
+
},
|
|
128
|
+
})
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
### Background demo
|
|
132
|
+
|
|
133
|
+
<a href="https://codesandbox.io/embed/infallible-goldberg-mrwgz?fontsize=14&hidenavigation=1&theme=dark&view=preview" target="_blank">Open the CodeSandbox example</a>
|
|
134
|
+
|
|
135
|
+
## Snaplines
|
|
136
|
+
|
|
137
|
+
Snaplines help align a moving node with others by comparing centers and bounding boxes.
|
|
138
|
+
|
|
139
|
+
### Usage
|
|
140
|
+
|
|
141
|
+
Snaplines are on by default in normal edit mode and can be disabled via options. In [silent mode](../advanced/silent-mode.en.md#silent-mode) nodes cannot be moved, so snaplines stay off.
|
|
142
|
+
|
|
143
|
+
```tsx | pure
|
|
144
|
+
const lf = new LogicFlow({
|
|
145
|
+
snapline: false,
|
|
146
|
+
})
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
### Styling
|
|
150
|
+
|
|
151
|
+
Change color and width through the theme:
|
|
152
|
+
|
|
153
|
+
```tsx | pure
|
|
154
|
+
lf.setTheme({
|
|
155
|
+
snapline: {
|
|
156
|
+
stroke: '#1E90FF',
|
|
157
|
+
strokeWidth: 1,
|
|
158
|
+
},
|
|
159
|
+
})
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
<example :height="400" ></example>
|
|
163
|
+
|
|
164
|
+
More styling options: [Theme](./theme.en.md).
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
---
|
|
2
|
+
nav: 指南
|
|
3
|
+
group:
|
|
4
|
+
title: 基础
|
|
5
|
+
order: 1
|
|
6
|
+
title: 画布
|
|
7
|
+
order: 4
|
|
8
|
+
toc: content
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
本页介绍与画布外观和编辑辅助相关的三项能力:**网格**(对齐与吸附的最小单位)、**背景**(画布底层样式),以及**对齐线**(拖动节点时与其他节点对齐参考)。
|
|
12
|
+
|
|
13
|
+
## 网格
|
|
14
|
+
|
|
15
|
+
网格是指渲染/移动节点的最小单位。网格最主要的作用是在移动节点的时候,保证每个节点中心点的位置都是在网格上。这样更有利于节点之间的对齐。一般来说,网格的间隔越大,在编辑流程图的时候,节点就更好对齐;网格的间隔越小,拖动节点的感觉就更加流畅。
|
|
16
|
+
|
|
17
|
+
网格默认关闭,渲染/移动最小单位为 1px,若开启网格,则网格默认大小为 20px,渲染节点时表示以 20
|
|
18
|
+
为最小单位对齐到网格,移动节点时表示每次移动最小距离为 20px。
|
|
19
|
+
|
|
20
|
+
:::warning{title=注意}
|
|
21
|
+
在设置节点坐标时会按照网格的大小来对坐标进行转换,如设置中心点位置`{ x: 124, y: 138 }`
|
|
22
|
+
的节点渲染到画布后的实际位置为 `{ x: 120, y: 140 }`。所以使用 LogicFlow
|
|
23
|
+
替换项目中旧的流程设计器时,需要对历史数据的坐标进行处理。<br>
|
|
24
|
+
在实际开发中,如果期望节点既可以中心对齐,也可以按照两边对齐。那么自定义节点的宽高需要是 grid
|
|
25
|
+
的偶数倍。也就是假设 grid 为 20,那么所有的节点宽度最好是 20、40、80、120 这种偶数倍的宽度。
|
|
26
|
+
:::
|
|
27
|
+
|
|
28
|
+
### 开启网格
|
|
29
|
+
|
|
30
|
+
在创建画布的时候通过配置 `grid` 来设置网格属性
|
|
31
|
+
|
|
32
|
+
开启网格并应用默认属性:
|
|
33
|
+
|
|
34
|
+
```tsx | pure
|
|
35
|
+
const lf1 = new LogicFlow({
|
|
36
|
+
grid: true,
|
|
37
|
+
})
|
|
38
|
+
|
|
39
|
+
// 等同于默认属性如下
|
|
40
|
+
const lf2 = new LogicFlow({
|
|
41
|
+
grid: {
|
|
42
|
+
size: 20,
|
|
43
|
+
visible: true,
|
|
44
|
+
type: 'dot',
|
|
45
|
+
config: {
|
|
46
|
+
color: '#ababab',
|
|
47
|
+
thickness: 1,
|
|
48
|
+
},
|
|
49
|
+
},
|
|
50
|
+
})
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### 设置网格属性
|
|
54
|
+
|
|
55
|
+
支持设置网格大小、类型、网格线颜色和宽度等属性。
|
|
56
|
+
|
|
57
|
+
```tsx | pure
|
|
58
|
+
export type GridOptions = {
|
|
59
|
+
size?: number // 设置网格大小
|
|
60
|
+
visible?: boolean, // 设置是否可见,若设置为false则不显示网格线但是仍然保留size栅格的效果
|
|
61
|
+
type?: 'dot' | 'mesh', // 设置网格类型,目前支持 dot 点状和 mesh 线状两种
|
|
62
|
+
config?: {
|
|
63
|
+
color: string, // 设置网格的颜色
|
|
64
|
+
thickness?: number, // 设置网格线的宽度
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### 网格对齐(snapGrid)
|
|
70
|
+
|
|
71
|
+
`grid` 和 `snapGrid` 是一组强关联配置,但职责不同:
|
|
72
|
+
|
|
73
|
+
- `grid`:控制网格怎么显示,以及网格尺寸(`size`、`visible`、`type` 等)
|
|
74
|
+
- `snapGrid`:控制节点拖拽、放置时是否吸附到网格
|
|
75
|
+
|
|
76
|
+
也就是说,`grid` 偏“网格参数与视觉”,`snapGrid` 偏“编辑行为开关”。
|
|
77
|
+
|
|
78
|
+
#### 如何开启网格对齐
|
|
79
|
+
|
|
80
|
+
`snapGrid` 属于编辑配置,可以在初始化时传入,也可以在运行时动态更新:
|
|
81
|
+
|
|
82
|
+
```tsx | pure
|
|
83
|
+
const lf = new LogicFlow({
|
|
84
|
+
container: document.querySelector('#app'),
|
|
85
|
+
grid: {
|
|
86
|
+
size: 20,
|
|
87
|
+
visible: true,
|
|
88
|
+
type: 'dot',
|
|
89
|
+
},
|
|
90
|
+
snapGrid: true, // 初始化时开启网格吸附
|
|
91
|
+
})
|
|
92
|
+
|
|
93
|
+
// 运行时切换
|
|
94
|
+
lf.updateEditConfig({
|
|
95
|
+
snapGrid: false,
|
|
96
|
+
})
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
更多编辑配置(包含 `snapGrid`)见 [editConfigModel](../../api/runtime-model/graphModel.zh.md#editconfigmodel)。
|
|
100
|
+
|
|
101
|
+
### 网格示例
|
|
102
|
+
|
|
103
|
+
<a href="https://codesandbox.io/embed/logicflow-base8-hxtqr?fontsize=14&hidenavigation=1&theme=dark&view=preview" target="_blank"> 去 CodeSandbox 查看示例</a>
|
|
104
|
+
|
|
105
|
+
## 背景
|
|
106
|
+
|
|
107
|
+
LogicFlow 支持在画布最底层设置背景层样式,包括背景颜色或背景图片等。创建画布时,通过 `background` 选项来配置;默认值为 `false` 表示不启用背景层。
|
|
108
|
+
|
|
109
|
+
```tsx | pure
|
|
110
|
+
const lf = new LogicFlow({
|
|
111
|
+
background: false | BackgroundConfig,
|
|
112
|
+
})
|
|
113
|
+
|
|
114
|
+
type BackgroundConfig = {
|
|
115
|
+
backgroundImage?: string,
|
|
116
|
+
backgroundColor?: string,
|
|
117
|
+
backgroundRepeat?: string,
|
|
118
|
+
backgroundPosition?: string,
|
|
119
|
+
backgroundSize?: string,
|
|
120
|
+
backgroundOpacity?: number,
|
|
121
|
+
filter?: string, // 滤镜
|
|
122
|
+
[key: string]: any,
|
|
123
|
+
};
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
### 设置背景图片
|
|
127
|
+
|
|
128
|
+
```tsx | pure
|
|
129
|
+
const lf = new LogicFlow({
|
|
130
|
+
// ...
|
|
131
|
+
background: {
|
|
132
|
+
backgroundImage: "url(../asserts/img/grid.svg)",
|
|
133
|
+
backgroundRepeat: "repeat",
|
|
134
|
+
},
|
|
135
|
+
});
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
### 背景示例
|
|
139
|
+
|
|
140
|
+
<a href="https://codesandbox.io/embed/infallible-goldberg-mrwgz?fontsize=14&hidenavigation=1&theme=dark&view=preview" target="_blank"> 去 CodeSandbox 查看示例</a>
|
|
141
|
+
|
|
142
|
+
## 对齐线
|
|
143
|
+
|
|
144
|
+
对齐线能够在节点移动过程中,将移动节点的位置与画布中其他节点位置进行对比,辅助位置调整。位置对比有如下两个方面。
|
|
145
|
+
|
|
146
|
+
- 节点中心位置
|
|
147
|
+
- 节点的边框
|
|
148
|
+
|
|
149
|
+
### 对齐线使用
|
|
150
|
+
|
|
151
|
+
普通编辑模式下,默认开启对齐线,也可通过配置进行关闭。
|
|
152
|
+
在 [静默模式](../advanced/silent-mode.zh.md#静默模式) 下,无法移动节点,所以关闭了对齐线功能,无法通过配置开启。
|
|
153
|
+
|
|
154
|
+
```tsx | pure
|
|
155
|
+
// 关闭对齐线功能
|
|
156
|
+
const lf = new LogicFlow({
|
|
157
|
+
snapline: false,
|
|
158
|
+
})
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
### 对齐线样式设置
|
|
162
|
+
|
|
163
|
+
对齐线的样式包括颜色和宽度,可以通过设置主题的方式进行修改。
|
|
164
|
+
|
|
165
|
+
```tsx | pure
|
|
166
|
+
// 默认配置
|
|
167
|
+
// {
|
|
168
|
+
// stroke: '#1E90FF',
|
|
169
|
+
// strokeWidth: 1,
|
|
170
|
+
// }
|
|
171
|
+
|
|
172
|
+
// 修改对齐线样式
|
|
173
|
+
lf.setTheme({
|
|
174
|
+
snapline: {
|
|
175
|
+
stroke: '#1E90FF', // 对齐线颜色
|
|
176
|
+
strokeWidth: 1, // 对齐线宽度
|
|
177
|
+
},
|
|
178
|
+
})
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
<example :height="400" ></example>
|
|
182
|
+
|
|
183
|
+
更多样式修改参见 [主题](./theme.zh.md)。
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
---
|
|
2
|
+
nav: Guide
|
|
3
|
+
group:
|
|
4
|
+
title: Basics
|
|
5
|
+
order: 1
|
|
6
|
+
title: Instance and graph data
|
|
7
|
+
order: 0
|
|
8
|
+
toc: content
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
This page answers two basics: **how to create a LogicFlow instance**, and **what the graph data passed to `render` looks like**.
|
|
12
|
+
|
|
13
|
+
::::info{title=Reading guide}
|
|
14
|
+
- If you only want to run the first example end-to-end, start with [Get started](../get-started.en.md).
|
|
15
|
+
- If you have already run the minimal example, this page fills in the instance, initialization options, and `graphData` fundamentals.
|
|
16
|
+
::::
|
|
17
|
+
|
|
18
|
+
The LogicFlow instance is the main object for designing and managing flowcharts. It initializes, renders, operates, and manages all elements on the diagram, including nodes and edges. With it you can build and manipulate diagrams and implement richer business logic and interactions.
|
|
19
|
+
|
|
20
|
+
## Creating an instance
|
|
21
|
+
|
|
22
|
+
Each flow-design surface is one LogicFlow instance. Create one with `new LogicFlow`, for example:
|
|
23
|
+
|
|
24
|
+
<iframe src="/initialized-demo.html" style="border: none; width: 100%; height: 400px; margin: auto;"></iframe>
|
|
25
|
+
|
|
26
|
+
```html
|
|
27
|
+
<style>
|
|
28
|
+
#container {
|
|
29
|
+
width: 1000px;
|
|
30
|
+
height: 500px
|
|
31
|
+
}
|
|
32
|
+
</style>
|
|
33
|
+
|
|
34
|
+
<div id="container"></div>
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
```js
|
|
38
|
+
const lf = new LogicFlow({
|
|
39
|
+
container: document.querySelector('#container')
|
|
40
|
+
});
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
:::info{title=Tip}
|
|
44
|
+
For consistent terminology, we write LogicFlow instances as `lf` in code examples from here on.
|
|
45
|
+
:::
|
|
46
|
+
|
|
47
|
+
When creating an instance you pass initialization options. LogicFlow supports many options, but **`container`** (the DOM element that hosts the canvas) is the only required field. For the full option list see [Constructor options](../../api/logicflow-constructor/index.en.md).
|
|
48
|
+
|
|
49
|
+
## Graph data
|
|
50
|
+
|
|
51
|
+
Inside LogicFlow a flowchart is a graph made of nodes and edges. Graph data uses the following shape:
|
|
52
|
+
|
|
53
|
+
```json
|
|
54
|
+
{
|
|
55
|
+
"nodes": [
|
|
56
|
+
{
|
|
57
|
+
"id",
|
|
58
|
+
"type",
|
|
59
|
+
"x",
|
|
60
|
+
"y",
|
|
61
|
+
"text",
|
|
62
|
+
"properties"
|
|
63
|
+
}
|
|
64
|
+
],
|
|
65
|
+
"edges": [
|
|
66
|
+
{
|
|
67
|
+
"id",
|
|
68
|
+
"type",
|
|
69
|
+
"sourceNodeId",
|
|
70
|
+
"targetNodeId"
|
|
71
|
+
}
|
|
72
|
+
]
|
|
73
|
+
}
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
- **`id`**: Optional for nodes and edges; generated when omitted.
|
|
77
|
+
- **`type`**: Required; a built-in type such as `rect` / `polyline` or your custom type.
|
|
78
|
+
- **`x` / `y`**: Required node coordinates.
|
|
79
|
+
- **`text`**: Optional node or edge text.
|
|
80
|
+
- **`properties`**: Custom data attached to the element.
|
|
81
|
+
|
|
82
|
+
**`nodes`**: All nodes to render. Full field definitions: [Type guide](../../api/type/index.en.md).
|
|
83
|
+
|
|
84
|
+
**`edges`**: All edges to render, linked by `sourceNodeId` and `targetNodeId`. Full field definitions: [Type guide](../../api/type/index.en.md).
|
|
85
|
+
|
|
86
|
+
After data is passed into the instance, LogicFlow builds a `nodeModel` and `edgeModel` for each element to hold state, behavior, and rendering. See [NodeModel](../../api/runtime-model/nodeModel.en.md) and [EdgeModel](../../api/runtime-model/edgeModel.en.md) for details.
|
|
87
|
+
|
|
88
|
+
## Rendering
|
|
89
|
+
|
|
90
|
+
Call `render` with data in the format above:
|
|
91
|
+
|
|
92
|
+
```js
|
|
93
|
+
lf.render(graphData)
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
The example below shows how graph data is defined and passed in:
|
|
97
|
+
|
|
98
|
+
<code id="graphData" src="../../../src/tutorial/basic/instance/graphData"></code>
|
|
99
|
+
|
|
100
|
+
Beyond rendering, LogicFlow exposes many APIs. Start from the [API overview](../../api/logicflow-instance/index.en.md), then open the [full method index](../../api/logicflow-instance/index.en.md) as needed.
|
|
101
|
+
|
|
102
|
+
## Next
|
|
103
|
+
|
|
104
|
+
1. [Theme](theme.en.md): unify node, edge, and text styling
|
|
105
|
+
2. [Events](event.en.md): listen to canvas, node, and edge interactions
|
|
106
|
+
3. [Nodes](node.en.md) / [Edges](edge.en.md): move on to customization
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
---
|
|
2
|
+
nav: 指南
|
|
3
|
+
group:
|
|
4
|
+
title: 基础
|
|
5
|
+
order: 1
|
|
6
|
+
title: 实例与图数据
|
|
7
|
+
order: 0
|
|
8
|
+
toc: content
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
这页回答两个基础问题:**如何创建 LogicFlow 实例**,以及**传给 `render` 的图数据长什么样**。
|
|
12
|
+
|
|
13
|
+
::::info{title=阅读提示}
|
|
14
|
+
- 如果你只想先把第一个示例跑通,请先看 [快速上手](../get-started.zh.md)
|
|
15
|
+
- 如果你已经跑通过最小示例,这一页会补上实例、初始化配置和 `graphData` 的基础认知
|
|
16
|
+
::::
|
|
17
|
+
|
|
18
|
+
LogicFlow 实例的定位是作为流程图设计和管理的核心对象。它负责初始化、渲染、操作和管理流程图中的所有元素,包括节点和边。
|
|
19
|
+
使用 LogicFlow 实例,开发者可以方便地创建和操作流程图,实现复杂的业务逻辑和交互功能。
|
|
20
|
+
|
|
21
|
+
## 创建实例
|
|
22
|
+
|
|
23
|
+
一个流程设计界面,就是一个LogicFlow的实例。要创建一个实例我们只需要`new LogicFlow`一下,就像这样:
|
|
24
|
+
|
|
25
|
+
<iframe src="/initialized-demo.html" style="border: none; width: 100%; height: 400px; margin: auto;"></iframe>
|
|
26
|
+
|
|
27
|
+
```html
|
|
28
|
+
<style>
|
|
29
|
+
#container {
|
|
30
|
+
width: 1000px;
|
|
31
|
+
height: 500px
|
|
32
|
+
}
|
|
33
|
+
</style>
|
|
34
|
+
|
|
35
|
+
<div id="container"></div>
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
```js
|
|
39
|
+
const lf = new LogicFlow({
|
|
40
|
+
container: document.querySelector('#container')
|
|
41
|
+
});
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
:::info{title=Tip}
|
|
45
|
+
为了统一术语,我们后面统一在代码层面将`LogicFlow`
|
|
46
|
+
的实例写作`lf`。
|
|
47
|
+
:::
|
|
48
|
+
|
|
49
|
+
当创建一个实例的时候,我们需要传递初始化 LogicFlow 实例的配置项。LogicFlow 支持非常丰富的初始化配置项,但 **container**(用于挂载画布的 DOM 节点)是唯一必填项。有关完整的配置项,请参阅 [初始化选项](../../api/logicflow-constructor/index.zh.md)。
|
|
50
|
+
|
|
51
|
+
## 图数据
|
|
52
|
+
|
|
53
|
+
在LogicFlow里面,我们把流程图看做是由节点和边组成的图。因此我们采用如下数据结构来表示LogicFlow的图数据:
|
|
54
|
+
```json
|
|
55
|
+
{
|
|
56
|
+
nodes: [ // 节点数据
|
|
57
|
+
{
|
|
58
|
+
id, // 节点ID,可选参数,不传时内部会自动生成
|
|
59
|
+
type, // 节点类型,必传,可以是LogicFlow内置的基础类型,也可以是用户自定义的类型
|
|
60
|
+
x, // 节点x坐标,必传
|
|
61
|
+
y, // 节点y坐标,必传
|
|
62
|
+
text, // 节点文本,可选参数
|
|
63
|
+
properties, // 自定义属性
|
|
64
|
+
// ...其他属性
|
|
65
|
+
}
|
|
66
|
+
],
|
|
67
|
+
edges: [ // 边数据
|
|
68
|
+
{
|
|
69
|
+
id, // 边ID,可选参数,不传时内部会自动生成
|
|
70
|
+
type, // 边类型,必传,可以是LogicFlow内置的基础类型,也可以是用户自定义的类型
|
|
71
|
+
sourceNodeId, // 起始节点ID,必传
|
|
72
|
+
targetNodeId, // 目标节点ID,必传
|
|
73
|
+
// ...其他属性
|
|
74
|
+
}
|
|
75
|
+
],
|
|
76
|
+
}
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
**`nodes`**: 包含所有要渲染的节点,完整的字段配置项见 [类型导览](../../api/type/index.zh.md)
|
|
80
|
+
|
|
81
|
+
**`edges`**: 包含所有要渲染的边,通过起始 `sourceNodeId` 和 `targetNodeId`
|
|
82
|
+
将两个节点相连。完整的字段配置项见 [类型导览](../../api/type/index.zh.md)
|
|
83
|
+
|
|
84
|
+
当图数据传入 LogicFlow 实例后,系统会为每个节点和边分别创建对应的数据模型:`nodeModel` 和 `edgeModel`,它用于管理节点的相关数据和行为,包括节点的属性、状态、交互逻辑以及与其他节点和边的关系,每个节点和边的实际表现(例如位置、样式等)都由对应的 model 来定义并控制。更多信息详见 [NodeModel](../../api/runtime-model/nodeModel.zh.md)、[EdgeModel](../../api/runtime-model/edgeModel.zh.md)
|
|
85
|
+
|
|
86
|
+
## 图渲染
|
|
87
|
+
|
|
88
|
+
接着只需要传入一个遵循格式的数据给`render`方法执行就可以渲染出图了。
|
|
89
|
+
|
|
90
|
+
```js
|
|
91
|
+
lf.render(graphData)
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
下面是一个图数据渲染的例子,从例子中你能看到实际图数据是如何定义和传递给实例的:
|
|
95
|
+
<code id="graphData" src="../../../src/tutorial/basic/instance/graphData"></code>
|
|
96
|
+
|
|
97
|
+
当然,除了渲染外 LogicFlow 还对外提供了很多 API 以支持开发者调用。建议先从 [API 导览](../../api/logicflow-instance/index.zh.md) 了解能力分组,再按需进入 [完整方法参考](../../api/logicflow-instance/index.zh.md)。
|
|
98
|
+
|
|
99
|
+
## 下一步阅读
|
|
100
|
+
|
|
101
|
+
1. [主题](theme.zh.md):统一调整节点、边和文本样式
|
|
102
|
+
2. [事件](event.zh.md):监听画布、节点和边的交互
|
|
103
|
+
3. [节点](node.zh.md) / [边](edge.zh.md):开始进入业务自定义
|