Skip to content

Commit 879e19e

Browse files
committed
feat: add init data
1 parent a9af3aa commit 879e19e

File tree

7 files changed

+149
-6
lines changed

7 files changed

+149
-6
lines changed

public/images/delay.svg

Lines changed: 1 addition & 0 deletions
Loading

src/components/FlowChart.vue

Lines changed: 93 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,13 +37,105 @@ export default {
3737
this.lf.render({
3838
nodes: [
3939
{
40+
id: 'node_1',
4041
type: 'start-node',
4142
x: 220,
4243
y: 200,
43-
text: '开始'
44+
text: 'start'
45+
},
46+
{
47+
id: 'node_2',
48+
type: 'fetch-node',
49+
x: 420,
50+
y: 200,
51+
text: 'fetch data'
52+
},
53+
{
54+
id: 'node_3',
55+
type: 'function-node',
56+
x: 620,
57+
y: 200,
58+
text: 'function'
59+
},
60+
{
61+
id: 'node_4',
62+
type: 'delay-node',
63+
x: 420,
64+
y: 300,
65+
text: 'function'
66+
},
67+
{
68+
id: 'node_5',
69+
type: 'switch-node',
70+
x: 820,
71+
y: 200,
72+
text: 'switch'
73+
},
74+
{
75+
id: 'node_6',
76+
type: 'function-node',
77+
x: 1020,
78+
y: 200,
79+
text: 'function'
80+
},
81+
{
82+
id: 'node_7',
83+
type: 'function-node',
84+
x: 1020,
85+
y: 300,
86+
text: 'function'
87+
},
88+
],
89+
edges: [
90+
{
91+
type: 'flow-link',
92+
sourceNodeId: 'node_1',
93+
targetNodeId: 'node_2'
94+
},
95+
{
96+
type: 'flow-link',
97+
sourceNodeId: 'node_2',
98+
targetNodeId: 'node_3'
99+
},
100+
{
101+
type: 'flow-link',
102+
sourceNodeId: 'node_3',
103+
startPoint: {
104+
x: 680,
105+
y: 200
106+
},
107+
targetNodeId: 'node_4'
108+
},
109+
{
110+
type: 'flow-link',
111+
sourceNodeId: 'node_4',
112+
startPoint: {
113+
x: 360,
114+
y: 300
115+
},
116+
targetNodeId: 'node_2'
117+
},
118+
{
119+
type: 'flow-link',
120+
sourceNodeId: 'node_3',
121+
targetNodeId: 'node_5'
122+
},
123+
{
124+
type: 'flow-link',
125+
sourceNodeId: 'node_5',
126+
targetNodeId: 'node_6'
127+
},
128+
{
129+
type: 'flow-link',
130+
sourceNodeId: 'node_5',
131+
targetNodeId: 'node_7'
44132
},
45133
]
46134
})
135+
this.lf.on('node-red:start', () => {
136+
// todo: 让流程跑起来
137+
console.log('我要开始执行流程了')
138+
})
47139
}
48140
}
49141
</script>

src/components/node-red/index.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import FunctionNode from "./nodes/FunctionNode";
33
import SwitchNode from "./nodes/SwitchNode";
44
import StartNode from "./nodes/StartNode";
55
import FetchNode from "./nodes/FetchNode";
6+
import DelayNode from "./nodes/DelayNode";
67
import FlowLink from "./FlowLink";
78
import Palette from './tools/Palette.vue';
89

@@ -14,6 +15,7 @@ class NodeRedExtension {
1415
lf.register(StartNode);
1516
lf.register(FetchNode);
1617
lf.register(FlowLink);
18+
lf.register(DelayNode);
1719
lf.setDefaultEdgeType('flow-link');
1820
this.app = createApp(Palette, {
1921
lf
@@ -23,9 +25,7 @@ class NodeRedExtension {
2325
const node = document.createElement('div')
2426
node.className = 'node-red-palette'
2527
domOverlay.appendChild(node)
26-
setTimeout(() => {
27-
this.app.mount(node)
28-
})
28+
this.app.mount(node)
2929
}
3030
}
3131

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
import { h } from '@logicflow/core'
2+
import BaseNode from "./BaseNode"
3+
4+
class DelayNode extends BaseNode.view {
5+
getIcon () {
6+
const {
7+
width,
8+
height,
9+
} = this.props.model;
10+
return h('image', {
11+
width: 30,
12+
height: 30,
13+
x: - width / 2,
14+
y: - height / 2,
15+
href: 'images/delay.svg'
16+
})
17+
}
18+
}
19+
20+
class DelayNodeModel extends BaseNode.model {
21+
getNodeStyle() {
22+
const style = super.getNodeStyle()
23+
style.fill = 'rgb(230, 224, 248)';
24+
return style
25+
}
26+
}
27+
28+
export default {
29+
type: 'delay-node',
30+
model: DelayNodeModel,
31+
view: DelayNode
32+
}

src/components/node-red/nodes/StartNode.js

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,21 @@ import BaseNode from "./BaseNode"
33

44
class StartNode extends BaseNode.view {
55
getIcon () {
6+
const { model, graphModel } = this.props;
67
const {
78
width,
89
height,
9-
} = this.props.model;
10+
} = model;
1011
return h('image', {
1112
width: 30,
1213
height: 30,
1314
x: - width / 2,
1415
y: - height / 2,
15-
href: 'images/start.svg'
16+
className: 'node-red-start',
17+
href: 'images/start.svg',
18+
onClick: () => {
19+
graphModel.eventCenter.emit('node-red:start')
20+
}
1621
})
1722
}
1823
}

src/components/node-red/style.css

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,8 @@
1616
position: absolute;
1717
left: 0px;
1818
top: 0px;
19+
}
20+
.node-red-start {
21+
cursor: pointer;
22+
pointer-events: all;
1923
}

src/components/node-red/tools/Palette.vue

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,12 @@ const baseNodes = ref([
6161
text: 'switch',
6262
background: 'rgb(226, 217, 110)',
6363
icon: 'public/images/switch.svg'
64+
},
65+
{
66+
type: 'delay-node',
67+
text: 'delay',
68+
background: 'rgb(230, 224, 248)',
69+
icon: 'public/images/delay.svg'
6470
}
6571
])
6672
@@ -69,6 +75,9 @@ const baseNodes = ref([
6975
.demo-collapse {
7076
width: 150px;
7177
}
78+
.demo-collapse /deep/ .el-collapse-item__header {
79+
text-indent: 20px;
80+
}
7281
.red-ui-palette-node {
7382
cursor: move;
7483
background: #fff;

0 commit comments

Comments
 (0)