diff --git a/src/renderer/components/Experiment/Workflows/WorkflowCanvas.tsx b/src/renderer/components/Experiment/Workflows/WorkflowCanvas.tsx index b4635812a18286ba743a3b782ea59fc9a9ef7c1b..bcb520499451d3c2b1ef4a0a4f6e475df9ad83b1 100644 --- a/src/renderer/components/Experiment/Workflows/WorkflowCanvas.tsx +++ b/src/renderer/components/Experiment/Workflows/WorkflowCanvas.tsx @@ -19,9 +19,21 @@ const nodeTypes = { customNode: CustomNode }; function generateNodes(workflow: any): any[] { const workflowConfig = JSON.parse(workflow?.config); + const fakeStartNode = { + id: 'start', + type: 'input', + position: { x: 0, y: -70 }, + data: { + id: 'start', + label: 'Start', + jobType: 'start', + template: 'start', + metadata: {}, + }, + }; if (workflowConfig.nodes.length == 0) { - return []; + return [fakeStartNode]; } let out: any[] = []; @@ -30,6 +42,9 @@ function generateNodes(workflow: any): any[] { // console.log(workflowConfig); + // Add a fake start node for now -- later the backend will do this + out.push(fakeStartNode); + for (let i = 0; i < workflowConfig.nodes.length; i++) { const node = workflowConfig.nodes[i]; // console.log(node); @@ -56,8 +71,18 @@ function generateNodes(workflow: any): any[] { function generateEdges(workflow: any) { const workflowConfig = JSON.parse(workflow?.config); - if (workflowConfig.nodes.length <= 1) { - return []; + + let fakeStartNodeEdge = { + id: '-100', + source: 'start', + target: null, + markerEnd: { + type: 'arrow', + }, + }; + + if (workflowConfig.nodes.length < 1) { + return [fakeStartNodeEdge]; } let out: any[] = []; @@ -66,6 +91,10 @@ function generateEdges(workflow: any) { // console.log(workflowConfig); + // conect the fake start node to the first node: + fakeStartNodeEdge.target = currentTask; + out.push(fakeStartNodeEdge); + for (let i = 0; i < workflowConfig.nodes.length; i++) { const currentNode = workflowConfig.nodes[i];