From 1d49dadca3e7473327cf66ead9e442e81012c35e Mon Sep 17 00:00:00 2001 From: Shuchang Zheng Date: Sat, 4 Jan 2025 02:54:46 -0800 Subject: [PATCH] Use free input for loop value parameter (#1483) --- .../editor/nodes/LoopNode/LoopNode.tsx | 43 +++---------------- .../workflows/editor/workflowEditorUtils.ts | 2 +- 2 files changed, 7 insertions(+), 38 deletions(-) diff --git a/skyvern-frontend/src/routes/workflows/editor/nodes/LoopNode/LoopNode.tsx b/skyvern-frontend/src/routes/workflows/editor/nodes/LoopNode/LoopNode.tsx index fdd6cd8c..d9c4c531 100644 --- a/skyvern-frontend/src/routes/workflows/editor/nodes/LoopNode/LoopNode.tsx +++ b/skyvern-frontend/src/routes/workflows/editor/nodes/LoopNode/LoopNode.tsx @@ -1,12 +1,6 @@ import { HelpTooltip } from "@/components/HelpTooltip"; import { Label } from "@/components/ui/label"; -import { - Select, - SelectContent, - SelectItem, - SelectTrigger, - SelectValue, -} from "@/components/ui/select"; +import { WorkflowBlockInput } from "@/components/WorkflowBlockInput"; import { useDeleteNodeCallback } from "@/routes/workflows/hooks/useDeleteNodeCallback"; import { useNodeLabelChangeHandler } from "@/routes/workflows/hooks/useLabelChangeHandler"; import { WorkflowBlockTypes } from "@/routes/workflows/types/workflowTypes"; @@ -15,14 +9,11 @@ import { Handle, NodeProps, Position, - useEdges, useNodes, useReactFlow, } from "@xyflow/react"; import { AppNode } from ".."; import { helpTooltips } from "../../helpContent"; -import { useWorkflowParametersState } from "../../useWorkflowParametersState"; -import { getAvailableOutputParameterKeys } from "../../workflowEditorUtils"; import { EditableNodeTitle } from "../components/EditableNodeTitle"; import { NodeActionMenu } from "../NodeActionMenu"; import { WorkflowBlockIcon } from "../WorkflowBlockIcon"; @@ -31,20 +22,12 @@ import type { LoopNode } from "./types"; function LoopNode({ id, data }: NodeProps) { const { updateNodeData } = useReactFlow(); const nodes = useNodes(); - const edges = useEdges(); const [label, setLabel] = useNodeLabelChangeHandler({ id, initialValue: data.label, }); const deleteNodeCallback = useDeleteNodeCallback(); - const [workflowParameters] = useWorkflowParametersState(); - const parameters = workflowParameters.filter( - (parameter) => parameter.parameterType !== "credential", - ); - const parameterKeys = parameters.map((parameter) => parameter.key); - const outputParameterKeys = getAvailableOutputParameterKeys(nodes, edges, id); - const children = nodes.filter((node) => node.parentId === id); const furthestDownChild: Node | null = children.reduce( (acc, child) => { @@ -113,30 +96,16 @@ function LoopNode({ id, data }: NodeProps) {
- +
- + />
diff --git a/skyvern-frontend/src/routes/workflows/editor/workflowEditorUtils.ts b/skyvern-frontend/src/routes/workflows/editor/workflowEditorUtils.ts index 5ea9c20a..d2d827c7 100644 --- a/skyvern-frontend/src/routes/workflows/editor/workflowEditorUtils.ts +++ b/skyvern-frontend/src/routes/workflows/editor/workflowEditorUtils.ts @@ -1688,7 +1688,7 @@ function getWorkflowErrors(nodes: Array): Array { ); if (emptyLoopNodes.length > 0) { emptyLoopNodes.forEach((node) => { - errors.push(`${node.data.label}: Loop value parameter must be selected.`); + errors.push(`${node.data.label}: Loop value parameter is required.`); }); }