diff --git a/web/src/app/workflows/[workflow_id]/page.tsx b/web/src/app/workflows/[workflow_id]/page.tsx index 804b1e5..7ee0410 100644 --- a/web/src/app/workflows/[workflow_id]/page.tsx +++ b/web/src/app/workflows/[workflow_id]/page.tsx @@ -2,6 +2,7 @@ import { DeploymentsTable, RunsTable } from "../../../components/RunsTable"; import { findFirstTableWithVersion } from "../../../server/findFirstTableWithVersion"; import { MachinesWSMain } from "@/components/MachinesWS"; import { + CopyWorkflowVersion, CreateDeploymentButton, MachineSelect, RunWorkflowButton, @@ -45,6 +46,7 @@ export default async function Page({ + diff --git a/web/src/components/CopyButton.tsx b/web/src/components/CopyButton.tsx index a720583..ca0ea8c 100644 --- a/web/src/components/CopyButton.tsx +++ b/web/src/components/CopyButton.tsx @@ -21,4 +21,4 @@ export function CopyButton({ ); -} \ No newline at end of file +} diff --git a/web/src/components/VersionSelect.tsx b/web/src/components/VersionSelect.tsx index 6ee6093..2194c83 100644 --- a/web/src/components/VersionSelect.tsx +++ b/web/src/components/VersionSelect.tsx @@ -30,9 +30,10 @@ import { createRun } from "@/server/createRun"; import { createDeployments } from "@/server/curdDeploments"; import type { getMachines } from "@/server/curdMachine"; import type { findFirstTableWithVersion } from "@/server/findFirstTableWithVersion"; -import { MoreVertical, Play } from "lucide-react"; +import { Copy, MoreVertical, Play } from "lucide-react"; import { parseAsInteger, useQueryState } from "next-usequerystate"; import { useState } from "react"; +import { toast } from "sonner"; export function VersionSelect({ workflow, @@ -208,6 +209,51 @@ export function CreateDeploymentButton({ ); } +export function CopyWorkflowVersion({ + workflow, +}: { + workflow: Awaited>; +}) { + const [version] = useQueryState("version", { + defaultValue: workflow?.versions[0].version ?? 1, + ...parseAsInteger, + }); + const workflow_version = workflow?.versions.find( + (x) => x.version === version + ); + return ( + + + + + + { + navigator.clipboard.writeText( + JSON.stringify(workflow_version?.workflow) + ); + toast("Copied to clipboard"); + }} + > + Copy (JSON) + + { + navigator.clipboard.writeText( + JSON.stringify(workflow_version?.workflow_api) + ); + toast("Copied to clipboard"); + }} + > + Copy API (JSON) + + + + ); +} + export function getWorkflowVersionFromVersionIndex( workflow: Awaited>, version: number