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}{metric?metric:'job resources'}{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 @@
-