From 9693078e9886bf7baabb52464558335c284f4d27 Mon Sep 17 00:00:00 2001 From: Alex Tideman Date: Tue, 18 Feb 2025 11:45:08 -0600 Subject: [PATCH 1/7] Only query workflow metadata for running workflows --- .../metadata/workflow-current-details.svelte | 55 +++++++++++++++++++ .../workflow-summary-and-details.svelte | 29 ++++++++++ .../holocene/accordion/accordion-light.svelte | 28 +++++----- src/lib/i18n/locales/en/workflows.ts | 1 + src/lib/layouts/workflow-header.svelte | 46 ++-------------- src/lib/layouts/workflow-run-layout.svelte | 29 +++++----- src/lib/pages/workflow-call-stack.svelte | 1 + src/lib/pages/workflow-query.svelte | 35 +++++++++++- src/lib/stores/workflow-run.ts | 6 +- 9 files changed, 155 insertions(+), 75 deletions(-) create mode 100644 src/lib/components/workflow/metadata/workflow-current-details.svelte create mode 100644 src/lib/components/workflow/metadata/workflow-summary-and-details.svelte diff --git a/src/lib/components/workflow/metadata/workflow-current-details.svelte b/src/lib/components/workflow/metadata/workflow-current-details.svelte new file mode 100644 index 000000000..84a9a73b7 --- /dev/null +++ b/src/lib/components/workflow/metadata/workflow-current-details.svelte @@ -0,0 +1,55 @@ + + +{#if !openWithoutDetails} + +
+ {translate( + 'workflows.current-details', + )} +
+ {#if open} + + {/if} +
+{/if} diff --git a/src/lib/components/workflow/metadata/workflow-summary-and-details.svelte b/src/lib/components/workflow/metadata/workflow-summary-and-details.svelte new file mode 100644 index 000000000..37827af2f --- /dev/null +++ b/src/lib/components/workflow/metadata/workflow-summary-and-details.svelte @@ -0,0 +1,29 @@ + + +{#if hasUserMetadata} + +
+ {translate( + 'workflows.summary-and-details', + )} +
+ {#if open && summary} +

{translate('workflows.summary')}

+ + {/if} + {#if open && details} +

{translate('workflows.details')}

+ + {/if} +
+{/if} diff --git a/src/lib/holocene/accordion/accordion-light.svelte b/src/lib/holocene/accordion/accordion-light.svelte index 39bcf7219..5159ba8bc 100644 --- a/src/lib/holocene/accordion/accordion-light.svelte +++ b/src/lib/holocene/accordion/accordion-light.svelte @@ -1,6 +1,5 @@ @@ -40,14 +44,10 @@
-
- - +
+
diff --git a/src/lib/i18n/locales/en/workflows.ts b/src/lib/i18n/locales/en/workflows.ts index c846cef5d..90a2ad5c4 100644 --- a/src/lib/i18n/locales/en/workflows.ts +++ b/src/lib/i18n/locales/en/workflows.ts @@ -274,4 +274,5 @@ export const Strings = { 'Markdown is supported in the summary and details fields. You can use {namespace}, {workflowId} or {runId} syntax in link href to create dynamic links based on the page you are on. Images are not allowed.', 'update-id': 'Update ID (optional)', 'update-name-label': 'Update name', + 'no-current-details': 'No Current Details', } as const; diff --git a/src/lib/layouts/workflow-header.svelte b/src/lib/layouts/workflow-header.svelte index 0e7b2302c..b76593964 100644 --- a/src/lib/layouts/workflow-header.svelte +++ b/src/lib/layouts/workflow-header.svelte @@ -4,16 +4,16 @@ import { page } from '$app/stores'; import WorkflowDetails from '$lib/components/lines-and-dots/workflow-details.svelte'; + import WorkflowCurrentDetails from '$lib/components/workflow/metadata/workflow-current-details.svelte'; + import WorkflowSummaryAndDetails from '$lib/components/workflow/metadata/workflow-summary-and-details.svelte'; import WorkflowActions from '$lib/components/workflow-actions.svelte'; import WorkflowStatus from '$lib/components/workflow-status.svelte'; import WorkflowVersioningHeader from '$lib/components/workflow-versioning-header.svelte'; - import AccordionLight from '$lib/holocene/accordion/accordion-light.svelte'; import Alert from '$lib/holocene/alert.svelte'; import Badge from '$lib/holocene/badge.svelte'; import Copyable from '$lib/holocene/copyable/index.svelte'; import Icon from '$lib/holocene/icon/icon.svelte'; import Link from '$lib/holocene/link.svelte'; - import Markdown from '$lib/holocene/monaco/markdown.svelte'; import TabList from '$lib/holocene/tab/tab-list.svelte'; import Tab from '$lib/holocene/tab/tab.svelte'; import Tabs from '$lib/holocene/tab/tabs.svelte'; @@ -64,11 +64,6 @@ $fullEventHistory, $namespaces, ); - - $: summary = $workflowRun?.userMetadata?.summary; - $: details = $workflowRun?.userMetadata?.details; - $: hasUserMetadata = summary || details; - $: currentDetails = $workflowRun?.metadata?.currentDetails;
@@ -138,41 +133,8 @@
- {#if hasUserMetadata} - -
- {translate('workflows.summary-and-details')} -
- {#if open && summary} -

{translate('workflows.summary')}

- - {/if} - {#if open && details} -

{translate('workflows.details')}

- - {/if} -
- {/if} - {#if currentDetails} - -
- {translate('workflows.current-details')} -
- {#if open} - - {/if} -
- {/if} + + {#if cancelInProgress}
diff --git a/src/lib/layouts/workflow-run-layout.svelte b/src/lib/layouts/workflow-run-layout.svelte index 41853b932..e8e585045 100644 --- a/src/lib/layouts/workflow-run-layout.svelte +++ b/src/lib/layouts/workflow-run-layout.svelte @@ -101,20 +101,23 @@ $workflowRun = { ...$workflowRun, workflow, workers }; workflowRunController = new AbortController(); - getWorkflowMetadata( - { - namespace, - workflow: { - id: workflowId, - runId, + + if (workflow.isRunning) { + getWorkflowMetadata( + { + namespace, + workflow: { + id: workflowId, + runId, + }, }, - }, - settings, - $authUser?.accessToken, - workflowRunController.signal, - ).then((metadata) => { - $workflowRun.metadata = metadata; - }); + settings, + $authUser?.accessToken, + workflowRunController.signal, + ).then((metadata) => { + $workflowRun.metadata = metadata; + }); + } $fullEventHistory = await fetchAllEvents({ namespace, diff --git a/src/lib/pages/workflow-call-stack.svelte b/src/lib/pages/workflow-call-stack.svelte index 6d8ce94fb..cf369b676 100644 --- a/src/lib/pages/workflow-call-stack.svelte +++ b/src/lib/pages/workflow-call-stack.svelte @@ -31,6 +31,7 @@ ); let stackTrace: Eventual; + $: { if (workflow?.isRunning) stackTrace = getStackTrace(); } diff --git a/src/lib/pages/workflow-query.svelte b/src/lib/pages/workflow-query.svelte index 16adbd540..c39788035 100644 --- a/src/lib/pages/workflow-query.svelte +++ b/src/lib/pages/workflow-query.svelte @@ -1,4 +1,6 @@ @@ -47,9 +58,25 @@ {translate( 'workflows.current-details', )} + {#if loading}{translate('common.loading')}{/if}
{#if open} - + {#key currentDetails} + + {/key} {/if} + + {#if workflow.isRunning} + + + + {/if} + {/if} diff --git a/src/lib/holocene/accordion/accordion-light.svelte b/src/lib/holocene/accordion/accordion-light.svelte index 5159ba8bc..fdfa219bf 100644 --- a/src/lib/holocene/accordion/accordion-light.svelte +++ b/src/lib/holocene/accordion/accordion-light.svelte @@ -44,7 +44,8 @@
-
+
+ From 10d4cfabf39a86bbf5a807991e3a3694229efe27 Mon Sep 17 00:00:00 2001 From: Alex Tideman Date: Tue, 18 Feb 2025 12:29:48 -0600 Subject: [PATCH 4/7] Use update details --- .../workflow/metadata/workflow-current-details.svelte | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/lib/components/workflow/metadata/workflow-current-details.svelte b/src/lib/components/workflow/metadata/workflow-current-details.svelte index 5cc4f2272..17428c31e 100644 --- a/src/lib/components/workflow/metadata/workflow-current-details.svelte +++ b/src/lib/components/workflow/metadata/workflow-current-details.svelte @@ -20,6 +20,7 @@ let loading = false; const fetchCurrentDetails = async () => { + if (loading) return; loading = true; try { const { settings } = $page.data; @@ -55,9 +56,8 @@ icon={closedWithoutDetails ? 'retry' : undefined} >
- {translate( - 'workflows.current-details', - )} + + {translate('workflows.current-details')} {#if loading}{translate('common.loading')}{/if}
{#if open} @@ -67,7 +67,7 @@ {/if} {#if workflow.isRunning} - + + {/if} - - {#if workflow.isRunning} - - - - {/if} - - -{/if} + + diff --git a/src/lib/layouts/workflow-run-layout.svelte b/src/lib/layouts/workflow-run-layout.svelte index e8e585045..2ad0524fa 100644 --- a/src/lib/layouts/workflow-run-layout.svelte +++ b/src/lib/layouts/workflow-run-layout.svelte @@ -116,6 +116,11 @@ workflowRunController.signal, ).then((metadata) => { $workflowRun.metadata = metadata; + if (!metadata.currentDetails) { + $workflowRun.metadata.currentDetails = translate( + 'workflows.no-current-details', + ); + } }); } From 2bdba0fe8cb8243ae6a320b3771e69951e9de506 Mon Sep 17 00:00:00 2001 From: Alex Tideman Date: Tue, 18 Feb 2025 20:09:36 -0600 Subject: [PATCH 7/7] Refactor based on updates, set no current details in api call, remove button, better padding --- .../workflow/metadata/workflow-current-details.svelte | 5 ----- src/lib/holocene/accordion/accordion-light.svelte | 6 ++---- src/lib/layouts/workflow-run-layout.svelte | 5 ----- src/lib/pages/workflow-query.svelte | 7 +------ src/lib/services/query-service.ts | 4 ++++ 5 files changed, 7 insertions(+), 20 deletions(-) diff --git a/src/lib/components/workflow/metadata/workflow-current-details.svelte b/src/lib/components/workflow/metadata/workflow-current-details.svelte index c906421ba..6c3fb5d2e 100644 --- a/src/lib/components/workflow/metadata/workflow-current-details.svelte +++ b/src/lib/components/workflow/metadata/workflow-current-details.svelte @@ -35,11 +35,6 @@ $authUser?.accessToken, ); $workflowRun.metadata = metadata; - if (!metadata.currentDetails) { - $workflowRun.metadata.currentDetails = translate( - 'workflows.no-current-details', - ); - } } catch (error) { console.error('Error fetching current details:', error); } finally { diff --git a/src/lib/holocene/accordion/accordion-light.svelte b/src/lib/holocene/accordion/accordion-light.svelte index fdfa219bf..2443240de 100644 --- a/src/lib/holocene/accordion/accordion-light.svelte +++ b/src/lib/holocene/accordion/accordion-light.svelte @@ -41,14 +41,12 @@ type="button" on:click={toggleAccordion} > -
+
- +
diff --git a/src/lib/layouts/workflow-run-layout.svelte b/src/lib/layouts/workflow-run-layout.svelte index 2ad0524fa..e8e585045 100644 --- a/src/lib/layouts/workflow-run-layout.svelte +++ b/src/lib/layouts/workflow-run-layout.svelte @@ -116,11 +116,6 @@ workflowRunController.signal, ).then((metadata) => { $workflowRun.metadata = metadata; - if (!metadata.currentDetails) { - $workflowRun.metadata.currentDetails = translate( - 'workflows.no-current-details', - ); - } }); } diff --git a/src/lib/pages/workflow-query.svelte b/src/lib/pages/workflow-query.svelte index c39788035..3ce384c32 100644 --- a/src/lib/pages/workflow-query.svelte +++ b/src/lib/pages/workflow-query.svelte @@ -52,7 +52,7 @@ let encodePayloadResult: Promise; onMount(() => { - if (!$workflowRun?.metadata) { + if (!$workflowRun.metadata) { fetchCurrentDetails(); } }); @@ -71,11 +71,6 @@ $authUser?.accessToken, ); $workflowRun.metadata = metadata; - if (!metadata.currentDetails) { - $workflowRun.metadata.currentDetails = translate( - 'workflows.no-current-details', - ); - } }; const reset = () => { diff --git a/src/lib/services/query-service.ts b/src/lib/services/query-service.ts index 3fe569f28..e76a14955 100644 --- a/src/lib/services/query-service.ts +++ b/src/lib/services/query-service.ts @@ -1,3 +1,4 @@ +import { translate } from '$lib/i18n/translate'; import type { Payloads } from '$lib/types'; import type { WorkflowQueryRouteParameters } from '$lib/types/api'; import type { Eventual, Settings } from '$lib/types/global'; @@ -93,6 +94,9 @@ export async function getWorkflowMetadata( accessToken, signal, ); + if (!metadata.currentDetails) { + metadata.currentDetails = translate('workflows.no-current-details'); + } return metadata; } catch (e) { if (e.message?.includes('__temporal_workflow_metadata')) {