import { Status, TaskApiResponse } from "@/api/types"; import { StatusBadge } from "@/components/StatusBadge"; import { Collapsible, CollapsibleContent, CollapsibleTrigger, } from "@/components/ui/collapsible"; import { TableCell, TableRow } from "@/components/ui/table"; import { basicLocalTimeFormat, basicTimeFormat } from "@/util/timeFormat"; import { ChevronDownIcon, ChevronRightIcon } from "@radix-ui/react-icons"; import { useState } from "react"; import { cn } from "@/util/utils"; import { CodeEditor } from "./components/CodeEditor"; import { AutoResizingTextarea } from "@/components/AutoResizingTextarea/AutoResizingTextarea"; import { statusIsFinalized } from "../tasks/types"; type Props = { task: TaskApiResponse; onNavigate: (event: React.MouseEvent, id: string) => void; }; function WorkflowBlockCollapsibleContent({ task, onNavigate }: Props) { const [open, setOpen] = useState(false); const [activeTab, setActiveTab] = useState<"output" | "goal" | "parameters">( statusIsFinalized(task) ? "output" : "goal", ); const showExtractedInformation = task?.status === Status.Completed; const extractedInformation = showExtractedInformation ? ( ) : null; const isCanceled = task?.status === Status.Canceled; const showFailureReason = task?.status === Status.Failed || task?.status === Status.Terminated || task?.status === Status.TimedOut || task?.status === Status.Canceled; const failureReason = showFailureReason ? ( ) : null; return ( <>
{open ? ( ) : ( )}
{ onNavigate(event, task.task_id); }} > {task.request.title} { onNavigate(event, task.task_id); }} > {task.task_id} onNavigate(event, task.task_id)} > {task.request.url} onNavigate(event, task.task_id)} > onNavigate(event, task.task_id)} title={basicTimeFormat(task.created_at)} > {basicLocalTimeFormat(task.created_at)}
{statusIsFinalized(task) && (
{ setActiveTab("output"); }} > {showExtractedInformation ? "Extracted Information" : showFailureReason ? "Failure Reason" : ""}
)}
{ setActiveTab("goal"); }} > Navigation Goal
{ setActiveTab("parameters"); }} > Parameters
{activeTab === "output" && (showExtractedInformation ? extractedInformation : showFailureReason ? failureReason : null)} {activeTab === "goal" && ( )} {activeTab === "parameters" && ( )}
); } export { WorkflowBlockCollapsibleContent };