diff --git a/web/frontend/src/job/EnergySummary.svelte b/web/frontend/src/job/EnergySummary.svelte index 6b8e318..135d33c 100644 --- a/web/frontend/src/job/EnergySummary.svelte +++ b/web/frontend/src/job/EnergySummary.svelte @@ -9,7 +9,8 @@ diff --git a/web/frontend/src/job/JobRoofline.svelte b/web/frontend/src/job/JobRoofline.svelte index f4122ca..8088d7e 100644 --- a/web/frontend/src/job/JobRoofline.svelte +++ b/web/frontend/src/job/JobRoofline.svelte @@ -7,73 +7,78 @@ --> {#if $roofMetrics.error} - {$roofMetrics.error.message} + {$roofMetrics.error.message} {:else if $roofMetrics?.data} - -
- c.name == job.cluster) - .subClusters.find((sc) => sc.name == job.subCluster)} - data={transformDataForRoofline( - $roofMetrics.data?.jobMetrics?.find( - (m) => m.name == "flops_any" && m.scope == "node", - )?.metric, - $roofMetrics.data?.jobMetrics?.find( - (m) => m.name == "mem_bw" && m.scope == "node", - )?.metric, - )} - allowSizeChange - renderTime - /> -
-
+ +
+ c.name == job.cluster) + .subClusters.find((sc) => sc.name == job.subCluster)} + data={transformDataForRoofline( + $roofMetrics.data?.jobMetrics?.find( + (m) => m.name == "flops_any" && m.scope == "node", + )?.metric, + $roofMetrics.data?.jobMetrics?.find( + (m) => m.name == "mem_bw" && m.scope == "node", + )?.metric, + )} + allowSizeChange + renderTime + /> +
+
{:else} - + {/if} diff --git a/web/frontend/src/job/StatsTab.svelte b/web/frontend/src/job/StatsTab.svelte index ecdcec3..d762c39 100644 --- a/web/frontend/src/job/StatsTab.svelte +++ b/web/frontend/src/job/StatsTab.svelte @@ -26,16 +26,14 @@ import MetricSelection from "../generic/select/MetricSelection.svelte"; import StatsTable from "./statstab/StatsTable.svelte"; - export let job; - export let clusters; - export let tabActive; - - let loadScopes = false; - let selectedScopes = []; - let selectedMetrics = []; - let totalMetrics = 0; // For Info Only, filled by MetricSelection Component - let isMetricSelectionOpen = false; + /* Svelte 5 Props */ + let { + job, + clusters, + tabActive, + } = $props(); + /* Const Init */ const client = getContextClient(); const query = gql` query ($dbid: ID!, $selectedMetrics: [String!]!, $selectedScopes: [MetricScope!]!) { @@ -55,16 +53,29 @@ } `; - $: scopedStats = queryStore({ - client: client, - query: query, - variables: { dbid: job.id, selectedMetrics, selectedScopes }, - }); + /* State Init */ + let moreScopes = $state(false); + let selectedScopes = $state([]); + let selectedMetrics = $state([]); + let totalMetrics = $state(0); // For Info Only, filled by MetricSelection Component + let isMetricSelectionOpen = $state(false); - $: if (loadScopes) { + /* Derived */ + const scopedStats = $derived(queryStore({ + client: client, + query: query, + variables: { dbid: job.id, selectedMetrics, selectedScopes }, + }) + ); + + /* Functions */ + function loadScopes() { + // Archived Jobs Load All Scopes By Default (See Backend) + moreScopes = true; selectedScopes = ["node", "socket", "core", "hwthread", "accelerator"]; - } + }; + /* On Init */ // Handle Job Query on Init -> is not executed anymore getContext("on-init")(() => { if (!job) return; @@ -98,12 +109,12 @@ - - {#if job.numNodes > 1} -