From 4c28dba360cb40ed3d11edcb47c1176cb4599ef7 Mon Sep 17 00:00:00 2001 From: Hazem Nureldin Date: Thu, 23 Jul 2026 15:10:31 +0100 Subject: [PATCH] feat: display workflow submission time in the workflows list --- .../lib/components/BaseWorkflowRelay.tsx | 26 +++++++++++++++++++ .../relay-workflows-lib/relay.config.json | 5 +++- .../components/workflow/WorkflowAccordion.tsx | 6 +++++ frontend/workflows-lib/lib/types.ts | 1 + 4 files changed, 37 insertions(+), 1 deletion(-) diff --git a/frontend/relay-workflows-lib/lib/components/BaseWorkflowRelay.tsx b/frontend/relay-workflows-lib/lib/components/BaseWorkflowRelay.tsx index e4e1189e2..da45fb710 100644 --- a/frontend/relay-workflows-lib/lib/components/BaseWorkflowRelay.tsx +++ b/frontend/relay-workflows-lib/lib/components/BaseWorkflowRelay.tsx @@ -23,7 +23,24 @@ export const BaseWorkflowRelayFragment = graphql` } status { __typename + + ... on WorkflowRunningStatus { + startTime + } + + ... on WorkflowSucceededStatus { + startTime + } + + ... on WorkflowFailedStatus { + startTime + } + + ... on WorkflowErroredStatus { + startTime + } } + ...WorkflowTasksFragment } `; @@ -45,6 +62,14 @@ export default function BaseWorkflowRelay({ }: BaseWorkflowRelayProps) { 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( @@ -87,6 +112,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/relay.config.json b/frontend/relay-workflows-lib/relay.config.json index b4af1296c..e0d1394d7 100644 --- a/frontend/relay-workflows-lib/relay.config.json +++ b/frontend/relay-workflows-lib/relay.config.json @@ -3,5 +3,8 @@ "language": "typescript", "schema": "./supergraph.graphql", "exclude": ["**/node_modules/**", "**/__mocks__/**", "**/__generated__/**"], - "eagerEsModules": true + "eagerEsModules": true, + "customScalarTypes": { + "DateTime": "string" + } } diff --git a/frontend/workflows-lib/lib/components/workflow/WorkflowAccordion.tsx b/frontend/workflows-lib/lib/components/workflow/WorkflowAccordion.tsx index 4aae25536..4d54d5de9 100644 --- a/frontend/workflows-lib/lib/components/workflow/WorkflowAccordion.tsx +++ b/frontend/workflows-lib/lib/components/workflow/WorkflowAccordion.tsx @@ -78,6 +78,12 @@ const WorkflowAccordion: React.FC = ({ 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 baefad9e5..b64e7f5f2 100644 --- a/frontend/workflows-lib/lib/types.ts +++ b/frontend/workflows-lib/lib/types.ts @@ -46,6 +46,7 @@ export interface Workflow { instrumentSession: Visit; status: WorkflowStatus; creator: string; + submittedTime?: string; } export interface Visit {