diff --git a/frontend/relay-workflows-lib/lib/components/BaseWorkflowRelay.tsx b/frontend/relay-workflows-lib/lib/components/BaseWorkflowRelay.tsx index fb92e1a42..ccb891dc1 100644 --- a/frontend/relay-workflows-lib/lib/components/BaseWorkflowRelay.tsx +++ b/frontend/relay-workflows-lib/lib/components/BaseWorkflowRelay.tsx @@ -24,7 +24,24 @@ export const BaseWorkflowRelayFragment = graphql` } status { __typename + + ... on WorkflowRunningStatus { + startTime + } + + ... on WorkflowSucceededStatus { + startTime + } + + ... on WorkflowFailedStatus { + startTime + } + + ... on WorkflowErroredStatus { + startTime + } } + ...WorkflowTasksFragment } `; @@ -50,6 +67,14 @@ export default function BaseWorkflowRelay({ const navigate = useNavigate(); const data = useFragment(BaseWorkflowRelayFragment, fragmentRef); const statusText = data.status?.__typename ?? "Unknown"; + const submittedTime = + data.status?.__typename === "WorkflowRunningStatus" || + data.status?.__typename === "WorkflowSucceededStatus" || + data.status?.__typename === "WorkflowFailedStatus" || + data.status?.__typename === "WorkflowErroredStatus" + ? data.status.startTime + : undefined; + const [selectedTaskIds, setSelectedTaskIds] = useSelectedTaskIds(); const onNavigate = React.useCallback( @@ -94,6 +119,7 @@ export default function BaseWorkflowRelay({ instrumentSession: data.visit, status: statusText as WorkflowStatus, creator: data.creator.creatorId, + submittedTime, }} workflowLink={workflowLink} expanded={expanded} diff --git a/frontend/relay-workflows-lib/lib/views/SingleWorkflowView.tsx b/frontend/relay-workflows-lib/lib/views/SingleWorkflowView.tsx index 3aed782dc..788c85084 100644 --- a/frontend/relay-workflows-lib/lib/views/SingleWorkflowView.tsx +++ b/frontend/relay-workflows-lib/lib/views/SingleWorkflowView.tsx @@ -33,19 +33,21 @@ export default function SingleWorkflowView(props: SingleWorkflowViewProps) { name: props.workflowName, }, ); - const finished = - queryData.workflow?.status?.__typename && - finishedStatuses.has(queryData.workflow.status.__typename); + const [isNull, setIsNull] = useState(false); + const onNullSubscriptionData = () => { setIsNull(true); }; - return finished || isNull ? ( - + const workflow = queryData.workflow; + + const finished = + workflow?.status != null && + finishedStatuses.has(workflow.status.__typename); + + return workflow && (finished || isNull) ? ( + ) : ( = ({ Creator: {workflow.creator || "Unknown"} + + {workflow.submittedTime && ( + + Submitted: {new Date(workflow.submittedTime).toLocaleString()} + + )} {children} diff --git a/frontend/workflows-lib/lib/types.ts b/frontend/workflows-lib/lib/types.ts index e1ded1350..b58916174 100644 --- a/frontend/workflows-lib/lib/types.ts +++ b/frontend/workflows-lib/lib/types.ts @@ -45,6 +45,7 @@ export interface Workflow { instrumentSession: Visit; status: WorkflowStatus; creator: string; + submittedTime?: string; } export interface Visit {