From 04ca3760ce0464f7af31d121fa0a36fc302699db Mon Sep 17 00:00:00 2001 From: BennyKok Date: Thu, 21 Dec 2023 18:14:03 +0800 Subject: [PATCH] fix(web): workflow details not updated when version changes --- web/src/app/workflows/[workflow_id]/page.tsx | 2 +- web/src/components/VersionDetails.tsx | 72 ++++++++++++++++++++ web/src/components/VersionSelect.tsx | 68 +----------------- 3 files changed, 74 insertions(+), 68 deletions(-) create mode 100644 web/src/components/VersionDetails.tsx diff --git a/web/src/app/workflows/[workflow_id]/page.tsx b/web/src/app/workflows/[workflow_id]/page.tsx index 7ee0410..b026a4e 100644 --- a/web/src/app/workflows/[workflow_id]/page.tsx +++ b/web/src/app/workflows/[workflow_id]/page.tsx @@ -1,12 +1,12 @@ import { DeploymentsTable, RunsTable } from "../../../components/RunsTable"; import { findFirstTableWithVersion } from "../../../server/findFirstTableWithVersion"; import { MachinesWSMain } from "@/components/MachinesWS"; +import { VersionDetails } from "@/components/VersionDetails"; import { CopyWorkflowVersion, CreateDeploymentButton, MachineSelect, RunWorkflowButton, - VersionDetails, VersionSelect, } from "@/components/VersionSelect"; import { diff --git a/web/src/components/VersionDetails.tsx b/web/src/components/VersionDetails.tsx new file mode 100644 index 0000000..b2619df --- /dev/null +++ b/web/src/components/VersionDetails.tsx @@ -0,0 +1,72 @@ +"use client"; + +import { getInputsFromWorkflow } from "../lib/getInputsFromWorkflow"; +import { getWorkflowVersionFromVersionIndex } from "./VersionSelect"; +import { customInputNodes } from "./customInputNodes"; +import { Badge } from "@/components/ui/badge"; +import { + Tooltip, + TooltipContent, + TooltipTrigger, +} from "@/components/ui/tooltip"; +import type { findFirstTableWithVersion } from "@/server/findFirstTableWithVersion"; +import { parseAsInteger, useQueryState } from "next-usequerystate"; + +export function VersionDetails({ + workflow, +}: { + workflow: Awaited>; +}) { + const [version] = useQueryState("version", { + defaultValue: workflow?.versions[0].version ?? 1, + ...parseAsInteger, + }); + const workflow_version = getWorkflowVersionFromVersionIndex( + workflow, + version + ); + const inputs = getInputsFromWorkflow(workflow_version); + + return ( +
+ Workflow Details +
+ {inputs && inputs.length > 0 ? ( +
+ {inputs.map((value) => { + if (!value || !value.class_type) return <> ; + const nodeType = customInputNodes[value.class_type]; + if (nodeType) { + const input_id = value.input_id; + const defaultValue = value.default_value; + return ( +
+ + + +
+ {input_id} + {" : "} + {nodeType} +
+
+ {/* {nodeType}{" "} */} + {/* */} +
+ + Default Value: {defaultValue} + +
+
+ ); + } + return <>; + })} +
+ ) : ( + No external inputs + )} +
+
+ ); +} diff --git a/web/src/components/VersionSelect.tsx b/web/src/components/VersionSelect.tsx index 2194c83..ccf117e 100644 --- a/web/src/components/VersionSelect.tsx +++ b/web/src/components/VersionSelect.tsx @@ -1,10 +1,7 @@ "use client"; -import { getInputsFromWorkflow } from "../lib/getInputsFromWorkflow"; import { callServerPromise } from "./callServerPromise"; -import { customInputNodes } from "./customInputNodes"; import { LoadingIcon } from "@/components/LoadingIcon"; -import { Badge } from "@/components/ui/badge"; import { Button } from "@/components/ui/button"; import { DropdownMenu, @@ -21,11 +18,6 @@ import { SelectTrigger, SelectValue, } from "@/components/ui/select"; -import { - Tooltip, - TooltipContent, - TooltipTrigger, -} from "@/components/ui/tooltip"; import { createRun } from "@/server/createRun"; import { createDeployments } from "@/server/curdDeploments"; import type { getMachines } from "@/server/curdMachine"; @@ -258,65 +250,7 @@ export function getWorkflowVersionFromVersionIndex( workflow: Awaited>, version: number ) { - const workflow_version = workflow?.versions.find( - (x) => x.version === version - ); + const workflow_version = workflow?.versions.find((x) => x.version == version); return workflow_version; } - -export function VersionDetails({ - workflow, -}: { - workflow: Awaited>; -}) { - const [version] = useQueryState("version", { - defaultValue: workflow?.versions[0].version ?? 1, - ...parseAsInteger, - }); - const workflow_version = getWorkflowVersionFromVersionIndex( - workflow, - version - ); - const inputs = getInputsFromWorkflow(workflow_version); - return ( -
- Workflow Details -
- {inputs && ( -
- {inputs.map((value) => { - if (!value || !value.class_type) return <> ; - const nodeType = customInputNodes[value.class_type]; - if (nodeType) { - const input_id = value.input_id; - const defaultValue = value.default_value; - return ( -
- - - -
- {input_id} - {" : "} - {nodeType} -
-
- {/* {nodeType}{" "} */} - {/* */} -
- - Default Value: {defaultValue} - -
-
- ); - } - return <>; - })} -
- )} -
-
- ); -}