Skip to content

Commit 1088bd4

Browse files
committed
fix: When the loop node is closed, the loop body is not displayed
1 parent 218cbf4 commit 1088bd4

File tree

4 files changed

+37
-14
lines changed

4 files changed

+37
-14
lines changed

ui/src/workflow/nodes/loop-body-node/index.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,11 +52,11 @@ const validate = () => {
5252
const set_loop_body = () => {
5353
const loop_node_id = props.nodeModel.properties.loop_node_id
5454
const loop_node = props.nodeModel.graphModel.getNodeModelById(loop_node_id)
55-
loop_node.properties.node_data.loop_body = lf.value.getGraphData()
5655
loop_node.properties.node_data.loop = {
5756
x: props.nodeModel.x,
5857
y: props.nodeModel.y,
5958
}
59+
loop_node.properties.node_data.loop_body = lf.value.getGraphData()
6060
}
6161
6262
const refresh_loop_fields = (fields: Array<any>) => {

ui/src/workflow/nodes/loop-node/index.vue

Lines changed: 35 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -71,9 +71,9 @@
7171
</NodeContainer>
7272
</template>
7373
<script setup lang="ts">
74-
import { set } from 'lodash'
74+
import { set, throttle } from 'lodash'
7575
import NodeContainer from '@/workflow/common/NodeContainer.vue'
76-
import { ref, computed, onMounted } from 'vue'
76+
import { ref, computed, onMounted, watch } from 'vue'
7777
import { isLastNode } from '@/workflow/common/data'
7878
import { loopBodyNode, loopStartNode } from '@/workflow/common/data'
7979
import NodeCascader from '@/workflow/common/NodeCascader.vue'
@@ -98,7 +98,20 @@ const form_data = computed({
9898
set(props.nodeModel.properties, 'node_data', value)
9999
},
100100
})
101-
101+
const showNode = computed(() => {
102+
if (props.nodeModel.properties.showNode !== undefined) {
103+
return props.nodeModel.properties.showNode
104+
}
105+
set(props.nodeModel.properties, 'showNode', true)
106+
return true
107+
})
108+
watch(showNode, () => {
109+
if (showNode.value) {
110+
throttle(mountLoopBodyNode, 1000)()
111+
} else {
112+
throttle(destroyLoopBodyNode, 1000)()
113+
}
114+
})
102115
const replyNodeFormRef = ref()
103116
const nodeCascaderRef = ref()
104117
const validate = () => {
@@ -109,14 +122,15 @@ const validate = () => {
109122
return Promise.reject({ node: props.nodeModel, errMessage: err })
110123
})
111124
}
112-
113-
onMounted(() => {
114-
if (typeof props.nodeModel.properties.node_data?.is_result === 'undefined') {
115-
if (isLastNode(props.nodeModel)) {
116-
set(props.nodeModel.properties.node_data, 'is_result', true)
117-
}
125+
const destroyLoopBodyNode = () => {
126+
const nodeOutgoingNode = props.nodeModel.graphModel.getNodeOutgoingNode(props.nodeModel.id)
127+
const loopBody = nodeOutgoingNode.find((item: any) => item.type == loopBodyNode.type)
128+
if (loopBody) {
129+
loopBody.set_loop_body()
130+
props.nodeModel.graphModel.deleteNode(loopBody.id)
118131
}
119-
set(props.nodeModel, 'validate', validate)
132+
}
133+
const mountLoopBodyNode = () => {
120134
const nodeOutgoingNode = props.nodeModel.graphModel.getNodeOutgoingNode(props.nodeModel.id)
121135
if (!nodeOutgoingNode.some((item: any) => item.type == loopBodyNode.type)) {
122136
let workflow = { nodes: [loopStartNode], edges: [] }
@@ -127,7 +141,7 @@ onMounted(() => {
127141
}
128142
if (props.nodeModel.properties.node_data.loop) {
129143
x = props.nodeModel.properties.node_data.loop.x
130-
y = props.nodeModel.properties.node_data.loop.y
144+
y = props.nodeModel.properties.node_data.loop.y - 330
131145
}
132146
const nodeModel = props.nodeModel.graphModel.addNode({
133147
type: loopBodyNode.type,
@@ -147,6 +161,16 @@ onMounted(() => {
147161
virtual: true,
148162
})
149163
}
164+
}
165+
166+
onMounted(() => {
167+
if (typeof props.nodeModel.properties.node_data?.is_result === 'undefined') {
168+
if (isLastNode(props.nodeModel)) {
169+
set(props.nodeModel.properties.node_data, 'is_result', true)
170+
}
171+
}
172+
set(props.nodeModel, 'validate', validate)
173+
mountLoopBodyNode()
150174
})
151175
</script>
152176
<style lang="scss" scoped></style>

ui/src/workflow/nodes/loop-start-node/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ class LoopStartNode extends AppNode {
3131
type: this.props.model.type,
3232
children: this.props.model.properties?.config?.fields || [],
3333
})
34-
console.log(result)
34+
3535
return result
3636
}
3737
}

ui/src/workflow/nodes/loop-start-node/index.vue

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,6 @@ watch(loop_input_fields, () => {
5353
const showicon = ref(false)
5454
5555
onMounted(() => {
56-
console.log(cloneDeep(loop_input_fields.value))
5756
props.nodeModel.graphModel.refresh_loop_fields(cloneDeep(loop_input_fields.value))
5857
})
5958
</script>

0 commit comments

Comments
 (0)