diff --git a/frontend/src/lib/components/graph/FlowGraphV2.svelte b/frontend/src/lib/components/graph/FlowGraphV2.svelte index 2f749424ae..d31e728b97 100644 --- a/frontend/src/lib/components/graph/FlowGraphV2.svelte +++ b/frontend/src/lib/components/graph/FlowGraphV2.svelte @@ -21,7 +21,7 @@ import graphBuilder from './graphBuilder' import ModuleNode from './renderers/nodes/ModuleNode.svelte' import InputNode from './renderers/nodes/InputNode.svelte' - import BranchAllStart from './renderers/nodes/BranchOneStart.svelte' + import BranchAllStart from './renderers/nodes/BranchAllStart.svelte' import BranchAllEndNode from './renderers/nodes/branchAllEndNode.svelte' import ForLoopEndNode from './renderers/nodes/ForLoopEndNode.svelte' import ForLoopStartNode from './renderers/nodes/ForLoopStartNode.svelte' diff --git a/frontend/src/lib/components/graph/graphBuilder.ts b/frontend/src/lib/components/graph/graphBuilder.ts index 1fdbf17ecd..75d11a86d3 100644 --- a/frontend/src/lib/components/graph/graphBuilder.ts +++ b/frontend/src/lib/components/graph/graphBuilder.ts @@ -67,6 +67,12 @@ export default function graphBuilder( ) { parents[targetId] = [...(parents[targetId] ?? []), sourceId] + // Find the index of the target module in the modules array + const mods = options?.subModules ?? modules + + // Index of the target module in the modules array + let index = mods?.findIndex((m) => m.id === targetId) ?? -1 + edges.push({ id: options?.customId || `edge:${sourceId}->${targetId}`, source: sourceId, @@ -80,7 +86,8 @@ export default function graphBuilder( offset: options?.offset, moving, eventHandlers, - index: options?.subModules?.length ?? modules?.length + // If the index is -1, it means that the target module is not in the modules array, so we set it to the length of the array + index: index >= 0 ? index : mods?.length ?? 0 } }) } @@ -120,12 +127,12 @@ export default function graphBuilder( let previousId: string | undefined = undefined if (modules.length === 0) { - addEdge(beforeNode.id, nextNode.id, { subModules: modules }) + addEdge(beforeNode.id, nextNode.id, { subModules: modules, offset: currentOffset }) } else { modules.forEach((module, index) => { // Add the edge between the previous node and the current one if (index > 0 && previousId) { - addEdge(previousId, module.id) + addEdge(previousId, module.id, { subModules: modules, offset: currentOffset }) } if (module.value.type === 'branchall') { @@ -167,9 +174,9 @@ export default function graphBuilder( nodes.push(startNode) - addEdge(module.id, startNode.id, { type: 'empty' }) + addEdge(module.id, startNode.id, { type: 'empty', offset: currentOffset }) - processModules(branch.modules, startNode, endNode) + processModules(branch.modules, startNode, endNode, currentOffset) }) previousId = endNode.id @@ -190,7 +197,7 @@ export default function graphBuilder( type: 'forLoopStart' } - addEdge(module.id, startNode.id, { type: 'empty' }) + addEdge(module.id, startNode.id, { type: 'empty', offset: currentOffset }) const endNode = { id: `${module.id}-end`, @@ -310,11 +317,11 @@ export default function graphBuilder( } if (index === 0) { - addEdge(beforeNode.id, module.id) + addEdge(beforeNode.id, module.id, { subModules: modules }) } if (index === modules.length - 1 && previousId) { - addEdge(previousId, nextNode.id) + addEdge(previousId, nextNode.id, { subModules: modules }) } }) } diff --git a/frontend/src/lib/components/graph/renderers/edges/BaseEdge.svelte b/frontend/src/lib/components/graph/renderers/edges/BaseEdge.svelte index feb4b52a25..9fb6997c8e 100644 --- a/frontend/src/lib/components/graph/renderers/edges/BaseEdge.svelte +++ b/frontend/src/lib/components/graph/renderers/edges/BaseEdge.svelte @@ -6,6 +6,7 @@ import { getContext } from 'svelte' import type { Writable } from 'svelte/store' import type { GraphEventHandlers } from '../../graphBuilder' + import { getStraightLinePath } from '../utils' export let sourceX: number export let sourceY: number @@ -29,16 +30,13 @@ sourcePosition, targetX, targetY, - targetPosition + targetPosition, + curvature: 0.25 }) - function getStraightLinePath({ sourceX, sourceY, targetX, targetY }) { - return `M${sourceX},${sourceY} L${sourceX},${targetY - 100}` - } - $: completeEdge = targetY - sourceY > 100 - ? `${edgePath} ${getStraightLinePath({ sourceX, sourceY, targetX, targetY })}` + ? `${edgePath} ${getStraightLinePath({ sourceX, sourceY, targetY })}` : edgePath const { useDataflow } = getContext<{ diff --git a/frontend/src/lib/components/graph/renderers/edges/DataflowEdge.svelte b/frontend/src/lib/components/graph/renderers/edges/DataflowEdge.svelte index 84073a0bab..d13bb2236d 100644 --- a/frontend/src/lib/components/graph/renderers/edges/DataflowEdge.svelte +++ b/frontend/src/lib/components/graph/renderers/edges/DataflowEdge.svelte @@ -1,6 +1,7 @@
{data.sourceId} -> {data.targetId} @@ -46,17 +38,9 @@ 100 + ? `${edgePath} ${getStraightLinePath({ sourceX, sourceY, targetY })}` + : edgePath} {markerEnd} style={`animation:dashdraw 0.5s linear infinite; stroke-dasharray: 5px;`} /> - - diff --git a/frontend/src/lib/components/graph/renderers/edges/EmptyEdge.svelte b/frontend/src/lib/components/graph/renderers/edges/EmptyEdge.svelte index 768a5e664f..bc10f9d1f9 100644 --- a/frontend/src/lib/components/graph/renderers/edges/EmptyEdge.svelte +++ b/frontend/src/lib/components/graph/renderers/edges/EmptyEdge.svelte @@ -21,7 +21,8 @@ sourcePosition, targetX, targetY, - targetPosition + targetPosition, + curvature: 0.25 }) diff --git a/frontend/src/lib/components/graph/renderers/nodes/BranchAllStart.svelte b/frontend/src/lib/components/graph/renderers/nodes/BranchAllStart.svelte index 6952696dae..ad2dee4be8 100644 --- a/frontend/src/lib/components/graph/renderers/nodes/BranchAllStart.svelte +++ b/frontend/src/lib/components/graph/renderers/nodes/BranchAllStart.svelte @@ -1,14 +1,12 @@ - - {#if data.insertable} - - - - Delete branch - - {/if} - - -s + + diff --git a/frontend/src/lib/components/graph/renderers/nodes/BranchOneStart.svelte b/frontend/src/lib/components/graph/renderers/nodes/BranchOneStart.svelte index bcbe335f1a..148b06a140 100644 --- a/frontend/src/lib/components/graph/renderers/nodes/BranchOneStart.svelte +++ b/frontend/src/lib/components/graph/renderers/nodes/BranchOneStart.svelte @@ -1,14 +1,12 @@ - - {#if data.insertable} - - - - Delete branch - - {/if} - - - + + diff --git a/frontend/src/lib/components/graph/renderers/nodes/ForLoopEndNode.svelte b/frontend/src/lib/components/graph/renderers/nodes/ForLoopEndNode.svelte index c07015a4b3..f1d842281c 100644 --- a/frontend/src/lib/components/graph/renderers/nodes/ForLoopEndNode.svelte +++ b/frontend/src/lib/components/graph/renderers/nodes/ForLoopEndNode.svelte @@ -1,6 +1,5 @@ -{#if data.time} - - 0.01s - -{/if} - - + - + - {#if data.value.type === 'branchall' && data.insertable} + {#if (data.value.type === 'branchall' || data.value.type === 'branchone') && data.insertable}