diff --git a/web/frontend/src/generic/plots/Stacked.svelte b/web/frontend/src/generic/plots/Stacked.svelte index cb8ffd0..deac815 100644 --- a/web/frontend/src/generic/plots/Stacked.svelte +++ b/web/frontend/src/generic/plots/Stacked.svelte @@ -1,34 +1,25 @@ -{#if data && data[0].length > 0} +{#if data && collectData[0].length > 0}
{:else} Cannot render plot: No series data returned for {metric?metric:'job resources'}Cannot render plot: No series data returned for {stateType} State Stacked Chart {/if} diff --git a/web/frontend/src/generic/units.js b/web/frontend/src/generic/units.js index dbf220a..1737b97 100644 --- a/web/frontend/src/generic/units.js +++ b/web/frontend/src/generic/units.js @@ -51,12 +51,13 @@ export function formatDurationTime(t, forNode = false) { } } -export function formatUnixTime(t) { +export function formatUnixTime(t, withDate = false) { if (t !== null) { if (isNaN(t)) { return t; } else { - return new Date(t * 1000).toLocaleString() + if (withDate) return new Date(t * 1000).toLocaleString(); + else return new Date(t * 1000).toLocaleTimeString(); } } } diff --git a/web/frontend/src/status/StatusDash.svelte b/web/frontend/src/status/StatusDash.svelte index 758c563..e3c0a45 100644 --- a/web/frontend/src/status/StatusDash.svelte +++ b/web/frontend/src/status/StatusDash.svelte @@ -25,10 +25,12 @@ import { init, } from "../generic/utils.js"; - import { scaleNumbers, formatDurationTime } from "../generic/units.js"; + import { formatDurationTime } from "../generic/units.js"; import Refresher from "../generic/helper/Refresher.svelte"; + import TimeSelection from "../generic/select/TimeSelection.svelte"; import Roofline from "../generic/plots/Roofline.svelte"; import Pie, { colors } from "../generic/plots/Pie.svelte"; + import Stacked from "../generic/plots/Stacked.svelte"; /* Svelte 5 Props */ let { @@ -44,10 +46,12 @@ /* State Init */ let cluster = $state(presetCluster); let pieWidth = $state(0); - let stackedWidth = $state(0); + let stackedWidth1 = $state(0); + let stackedWidth2 = $state(0); let plotWidths = $state([]); let from = $state(new Date(Date.now() - 5 * 60 * 1000)); let to = $state(new Date(Date.now())); + let stackedFrom = $state(Math.floor(Date.now() / 1000) - 14400); // Bar Gauges let allocatedNodes = $state({}); let allocatedAccs = $state({}); @@ -80,28 +84,38 @@ })); const refinedStateData = $derived.by(() => { - return $nodesStateCounts?.data?.nodeStates.filter((e) => ['allocated', 'reserved', 'idle', 'mixed','down', 'unknown'].includes(e.state)) + return $nodesStateCounts?.data?.nodeStates. + filter((e) => ['allocated', 'reserved', 'idle', 'mixed','down', 'unknown'].includes(e.state)). + sort((a, b) => b.count - a.count) }); const refinedHealthData = $derived.by(() => { - return $nodesStateCounts?.data?.nodeStates.filter((e) => ['full', 'partial', 'failed'].includes(e.state)) + return $nodesStateCounts?.data?.nodeStates. + filter((e) => ['full', 'partial', 'failed'].includes(e.state)). + sort((a, b) => b.count - a.count) }); - // NodeStates for Stacked charts - const nodesStateTimes = $derived(queryStore({ + // States for Stacked charts + const statesTimed = $derived(queryStore({ client: client, query: gql` - query ($filter: [NodeFilter!]) { - nodeStatesTimed(filter: $filter) { + query ($filter: [NodeFilter!], $typeNode: String!, $typeHealth: String!) { + nodeStates: nodeStatesTimed(filter: $filter, type: $typeNode) { state - type - count - time + counts + times + } + healthStates: nodeStatesTimed(filter: $filter, type: $typeHealth) { + state + counts + times } } `, variables: { - filter: { cluster: { eq: cluster }, timeStart: Date.now() - (24 * 3600 * 1000)} // Add Selector for Timeframe (4h, 12h, 24h)? + filter: { cluster: { eq: cluster }, timeStart: 1760097059}, // stackedFrom + typeNode: "node", + typeHealth: "health" }, })); @@ -378,12 +392,19 @@ - + + + { + stackedFrom = Math.floor(newFrom.getTime() / 1000); + }} + /> + { - console.log('Trigger Refresh StatusTab') from = new Date(Date.now() - 5 * 60 * 1000); to = new Date(Date.now()); }} @@ -394,43 +415,40 @@
- {#if $initq.data && $nodesStateCounts.data} @@ -449,7 +465,7 @@
{#key refinedStateData}

- {cluster.charAt(0).toUpperCase() + cluster.slice(1)} Node States + Current {cluster.charAt(0).toUpperCase() + cluster.slice(1)} Node States

{#key refinedHealthData}

- {cluster.charAt(0).toUpperCase() + cluster.slice(1)} Node Health + Current {cluster.charAt(0).toUpperCase() + cluster.slice(1)} Node Health