From c42898bd999695c05530fe1cb663a167632fc0a7 Mon Sep 17 00:00:00 2001 From: Christoph Kluge Date: Thu, 19 Mar 2026 11:31:40 +0100 Subject: [PATCH] fix: add top list query fixes to analysis and dashboard --- web/frontend/src/Analysis.root.svelte | 14 ++++++++++--- web/frontend/src/status/DashInternal.svelte | 21 +++++++++++-------- .../src/status/dashdetails/UsageDash.svelte | 2 -- 3 files changed, 23 insertions(+), 14 deletions(-) diff --git a/web/frontend/src/Analysis.root.svelte b/web/frontend/src/Analysis.root.svelte index f8ca1f3b..4392f972 100644 --- a/web/frontend/src/Analysis.root.svelte +++ b/web/frontend/src/Analysis.root.svelte @@ -187,6 +187,12 @@ }) ); + const topListData = $derived( + $topQuery?.data?.topList + ?.toSorted((a, b) => b[sortSelection.key] - a[sortSelection.key]) + .slice(0, 10) ?? [], + ); + // Note: Different footprints than those saved in DB per Job -> Caused by Legacy Naming let footprintsQuery = $derived( queryStore({ @@ -424,10 +430,12 @@ canvasId={`pie-${groupSelection.key}`} size={colWidth1 / 1.9} sliceLabel={sortSelection.label} - quantities={$topQuery.data.topList.map( + quantities={topListData.map( (t) => t[sortSelection.key], )} - entities={$topQuery.data.topList.map((t) => scrambleNames ? scramble(t.id) : t.id)} + entities={topListData.map((t) => + scrambleNames ? scramble(t.id) : t.id) + } /> {/if} {/key} @@ -454,7 +462,7 @@ - {#each $topQuery.data.topList as te, i} + {#each topListData as te, i} {#if groupSelection.key == "user"} diff --git a/web/frontend/src/status/DashInternal.svelte b/web/frontend/src/status/DashInternal.svelte index 5495e170..326d49bf 100644 --- a/web/frontend/src/status/DashInternal.svelte +++ b/web/frontend/src/status/DashInternal.svelte @@ -53,7 +53,6 @@ const useCbColors = getContext("cc-config")?.plotConfiguration_colorblindMode || false /* States */ - let pagingState = $state({page: 1, itemsPerPage: 10}) // Top 10 let from = $state(new Date(Date.now() - 5 * 60 * 1000)); let clusterFrom = $state(new Date(Date.now() - (8 * 60 * 60 * 1000))); let to = $state(new Date(Date.now())); @@ -201,11 +200,9 @@ query: gql` query ( $filter: [JobFilter!]! - $paging: PageRequest! ) { jobsStatistics( filter: $filter - page: $paging sortBy: TOTALJOBS groupBy: PROJECT ) { @@ -215,12 +212,17 @@ } `, variables: { - filter: [{ cluster: { eq: presetCluster} }, { state: ["running"] }], - paging: pagingState // Top 10 + filter: [{ cluster: { eq: presetCluster} }, { state: ["running"] }] }, requestPolicy: "network-only" })); + const topProjectJobs = $derived( + $topJobsQuery?.data?.jobsStatistics + ?.toSorted((a, b) => b.totalJobs - a.totalJobs) + .slice(0, 10) ?? [], + ); + const clusterInfo = $derived.by(() => { let rawInfos = {}; if ($initq?.data?.clusters) { @@ -365,7 +367,6 @@ from = new Date(Date.now() - 5 * 60 * 1000); to = new Date(Date.now()); clusterFrom = new Date(Date.now() - (8 * 60 * 60 * 1000)) - pagingState = { page:1, itemsPerPage: 10 }; if (interval) stackedFrom += Math.floor(interval / 1000); else stackedFrom += 1 // Workaround: TimeSelection not linked, just trigger new data on manual refresh @@ -490,10 +491,12 @@ canvasId="hpcpie-jobs-projects" size={colWidthJobs * 0.75} sliceLabel={'Jobs'} - quantities={$topJobsQuery.data.jobsStatistics.map( + quantities={topProjectJobs.map( (tp) => tp['totalJobs'], )} - entities={$topJobsQuery.data.jobsStatistics.map((tp) => scrambleNames ? scramble(tp.id) : tp.id)} + entities={topProjectJobs.map((tp) => + scrambleNames ? scramble(tp.id) : tp.id) + } /> @@ -504,7 +507,7 @@ Project Jobs - {#each $topJobsQuery.data.jobsStatistics as tp, i} + {#each topProjectJobs as tp, i} diff --git a/web/frontend/src/status/dashdetails/UsageDash.svelte b/web/frontend/src/status/dashdetails/UsageDash.svelte index 1d14bed4..33701e50 100644 --- a/web/frontend/src/status/dashdetails/UsageDash.svelte +++ b/web/frontend/src/status/dashdetails/UsageDash.svelte @@ -45,7 +45,6 @@ const durationBinOptions = ["1m", "10m", "1h", "6h", "12h"]; /* State Init */ - let pagingState = $state({ page: 1, itemsPerPage: 10 }); // Top 10 let selectedHistograms = $state([]); // Dummy For Refresh let colWidthJobs = $state(0); let colWidthNodes = $state(0); @@ -208,7 +207,6 @@ { - pagingState = { page: 1, itemsPerPage: 10 }; selectedHistograms = [...$state.snapshot(selectedHistograms)]; }} />