diff --git a/frontend/src/lib/components/flows/flowStateUtils.ts b/frontend/src/lib/components/flows/flowStateUtils.ts index 5a856fb297..e322772c55 100644 --- a/frontend/src/lib/components/flows/flowStateUtils.ts +++ b/frontend/src/lib/components/flows/flowStateUtils.ts @@ -82,7 +82,8 @@ export async function createInlineScriptModule( const flowModule: FlowModule = { id, summary, - value: { type: 'rawscript', content: code, language, input_transforms: {} } + value: { type: 'rawscript', content: code, language, input_transforms: {} }, + isTrigger: kind === 'trigger' } return [flowModule, await loadFlowModuleState(flowModule)] diff --git a/frontend/src/lib/components/flows/map/FlowModuleSchemaMap.svelte b/frontend/src/lib/components/flows/map/FlowModuleSchemaMap.svelte index edaab7bfbe..0bff195221 100644 --- a/frontend/src/lib/components/flows/map/FlowModuleSchemaMap.svelte +++ b/frontend/src/lib/components/flows/map/FlowModuleSchemaMap.svelte @@ -382,6 +382,7 @@ detail.inlineScript ) $selectedId = detail.modules[detail.index ?? 0].id + console.log('Modules', detail.modules) } } diff --git a/frontend/src/lib/components/graph/FlowGraphV2.svelte b/frontend/src/lib/components/graph/FlowGraphV2.svelte index 3c31a707e8..6f3fcc590e 100644 --- a/frontend/src/lib/components/graph/FlowGraphV2.svelte +++ b/frontend/src/lib/components/graph/FlowGraphV2.svelte @@ -78,6 +78,8 @@ let fullWidth = 0 let width = 0 + let forloopEdge: Edge | undefined = undefined + function layoutNodes(nodes: Node[]): Node[] { let seenId: string[] = [] for (const n of nodes) { @@ -260,7 +262,7 @@ return { nodes: updatedNodes, edges: updatedEdges } } - function removeTriggerForLoopNodes(nodes, edges) { + function removeForLoopNodes(nodes, edges) { let updatedGraph = { nodes: [...nodes], edges: [...edges] @@ -271,21 +273,6 @@ return updatedGraph } - if (forloopNode?.data?.value?.parentsIds?.length > 0) { - console.log('triggerScript', forloopNode?.data?.value?.parentsIds[0]) - } - - let forloopModules = forloopNode?.data?.value?.modules - if (!forloopModules) { - return updatedGraph - } - - for (let i = 0; i < forloopModules.length; i++) { - const module = forloopModules[i] - console.log(`Processing module ${i}:`, module) - updatedGraph = removeInputNode(updatedGraph.nodes, updatedGraph.edges, module.id) - } - updatedGraph = removeInputNode(updatedGraph.nodes, updatedGraph.edges, forloopNode.id) return updatedGraph @@ -300,6 +287,7 @@ if (!forloopNode) { return updatedGraph } + forloopEdge = updatedGraph.edges.find((edge) => edge.source === forloopNode.id) return removeInputNode(updatedGraph.nodes, updatedGraph.edges, forloopNode.id) } @@ -315,15 +303,47 @@ return removeInputNode(updatedGraph.nodes, updatedGraph.edges, forloopNode.id) } + function removeTriggerScriptModule(nodes, edges) { + let updatedGraph = { + nodes: [...nodes], + edges: [...edges] + } + let triggerScriptModule = updatedGraph.nodes.find((node) => node?.data?.module?.isTrigger) + console.log('triggerScriptModule', triggerScriptModule) + if (!triggerScriptModule) { + return updatedGraph + } + return removeInputNode(updatedGraph.nodes, updatedGraph.edges, triggerScriptModule.id) + } + function processGraph(graph) { let newGraph = { nodes: graph.nodes, edges: graph.edges } newGraph = removeInputNode(newGraph.nodes, newGraph.edges, 'Input') - newGraph = removeTriggerForLoopNodes(newGraph.nodes, newGraph.edges) + newGraph = removeForLoopNodes(newGraph.nodes, newGraph.edges) newGraph = removeForLoopStartNodes(newGraph.nodes, newGraph.edges) newGraph = removeForLoopEndNodes(newGraph.nodes, newGraph.edges) + newGraph = removeTriggerScriptModule(newGraph.nodes, newGraph.edges) + newGraph.edges = replaceEdge(newGraph.edges, forloopEdge) return newGraph } + function replaceEdge(edges, edge) { + if (!edge) { + return edges + } + const schedulePollEdge = edges.find((edge) => edge.source === 'SchedulePoll') + if (!schedulePollEdge) { + return edges + } + const targetNode = schedulePollEdge.target + edge.source = 'SchedulePoll' + edge.target = targetNode + edges.push(edge) + + // Remove the original SchedulePoll edge + return edges.filter((e) => e !== schedulePollEdge) + } + function updateStores() { if (graph.error) { return diff --git a/frontend/src/lib/components/graph/renderers/nodes/ShedulePollNode.svelte b/frontend/src/lib/components/graph/renderers/nodes/ShedulePollNode.svelte index 35ca6d1736..5f577f4364 100644 --- a/frontend/src/lib/components/graph/renderers/nodes/ShedulePollNode.svelte +++ b/frontend/src/lib/components/graph/renderers/nodes/ShedulePollNode.svelte @@ -6,7 +6,6 @@ import type { GraphEventHandlers } from '../../graphBuilder' import { twMerge } from 'tailwind-merge' import { NODE } from '../../util' - import InsertModuleButton from '../../../flows/map/InsertModuleButton.svelte' import type { FlowModule } from '$lib/gen' import MapItem from '../../../flows/map/MapItem.svelte' @@ -26,31 +25,24 @@ console.log('Modules', data.modules) - let forloopModules: FlowModule[] = [] - let triggerModule: FlowModule | undefined = undefined + let triggerScriptModule: FlowModule | undefined = undefined - function getSchedulePollModules() { - let forloopModule = data.modules.find((mod) => mod.value.type === 'forloopflow') - if (forloopModule) { - forloopModules = forloopModule.value.modules - } - console.log('Forloop Modules', forloopModules) - if (data.modules.length > 0) { - triggerModule = data.modules[0] - } - console.log('Trigger Module', triggerModule) + function getTriggerScriptModule() { + triggerScriptModule = data.modules.find((mod) => mod.isTrigger) + console.log('Trigger Module', triggerScriptModule) } - $: getSchedulePollModules() + $: getTriggerScriptModule(), data.modules