Merge branch 'dev' of github.com:ClusterCockpit/cc-backend into dev

This commit is contained in:
2026-02-11 07:06:33 +01:00
6 changed files with 20 additions and 16 deletions

View File

@@ -867,7 +867,8 @@ func (r *queryResolver) NodeMetricsList(ctx context.Context, cluster string, sub
} }
nodeMetricsListResult := &model.NodesResultList{ nodeMetricsListResult := &model.NodesResultList{
Items: nodeMetricsList, Items: nodeMetricsList,
// TotalNodes depends on sum of nodes grouped on latest timestamp, see repo/node.go:357
TotalNodes: &countNodes, TotalNodes: &countNodes,
HasNextPage: &hasNextPage, HasNextPage: &hasNextPage,
} }

View File

@@ -272,8 +272,8 @@
<NodeOverview {cluster} {ccconfig} {selectedMetric} {globalMetrics} {from} {to} {hostnameFilter} {hoststateFilter}/> <NodeOverview {cluster} {ccconfig} {selectedMetric} {globalMetrics} {from} {to} {hostnameFilter} {hoststateFilter}/>
{:else} {:else}
<!-- ROW2-2: Node List (Grid Included)--> <!-- ROW2-2: Node List (Grid Included)-->
<NodeList {cluster} {subCluster} {ccconfig} {globalMetrics} <NodeList pendingSelectedMetrics={selectedMetrics} {cluster} {subCluster}
pendingSelectedMetrics={selectedMetrics} {selectedResolution} {hostnameFilter} {hoststateFilter} {from} {to} {systemUnits}/> {selectedResolution} {hostnameFilter} {hoststateFilter} {from} {to} {systemUnits}/>
{/if} {/if}
{/if} {/if}

View File

@@ -451,7 +451,7 @@
{#if filters.startTime.range} {#if filters.startTime.range}
<Info icon="calendar-range" onclick={() => (isStartTimeOpen = true)}> <Info icon="calendar-range" onclick={() => (isStartTimeOpen = true)}>
{startTimeSelectOptions.find((stso) => stso.range === filters.startTime.range).rangeLabel } Job Start: {startTimeSelectOptions.find((stso) => stso.range === filters.startTime.range).rangeLabel }
</Info> </Info>
{/if} {/if}

View File

@@ -14,10 +14,10 @@
<script module> <script module>
export const startTimeSelectOptions = [ export const startTimeSelectOptions = [
{ range: "", rangeLabel: "No Selection"}, { range: "", rangeLabel: "No Selection"},
{ range: "last6h", rangeLabel: "Job Start: Last 6hrs"}, { range: "last6h", rangeLabel: "Last 6 hrs"},
{ range: "last24h", rangeLabel: "Job Start: Last 24hrs"}, { range: "last24h", rangeLabel: "Last 24 hrs"},
{ range: "last7d", rangeLabel: "Job Start: Last 7 days"}, { range: "last7d", rangeLabel: "Last 7 days"},
{ range: "last30d", rangeLabel: "Job Start: Last 30 days"} { range: "last30d", rangeLabel: "Last 30 days"}
]; ];
</script> </script>

View File

@@ -35,6 +35,7 @@
/* Const Init */ /* Const Init */
const ccconfig = getContext("cc-config"); const ccconfig = getContext("cc-config");
const globalMetrics = getContext("globalMetrics");
const client = getContextClient(); const client = getContextClient();
/* State Init */ /* State Init */
@@ -139,6 +140,7 @@
<HistogramSelection <HistogramSelection
{cluster} {cluster}
{globalMetrics}
bind:isOpen={isHistogramSelectionOpen} bind:isOpen={isHistogramSelectionOpen}
presetSelectedHistograms={selectedHistograms} presetSelectedHistograms={selectedHistograms}
configName="statusView_selectedHistograms" configName="statusView_selectedHistograms"

View File

@@ -4,8 +4,6 @@
Properties: Properties:
- `cluster String`: The nodes' cluster - `cluster String`: The nodes' cluster
- `subCluster String`: The nodes' subCluster [Default: ""] - `subCluster String`: The nodes' subCluster [Default: ""]
- `ccconfig Object?`: The ClusterCockpit Config Context [Default: null]
- `globalMetrics [Obj]`: Includes the backend supplied availabilities for cluster and subCluster
- `pendingSelectedMetrics [String]`: The array of selected metrics [Default []] - `pendingSelectedMetrics [String]`: The array of selected metrics [Default []]
- `selectedResolution Number?`: The selected data resolution [Default: 0] - `selectedResolution Number?`: The selected data resolution [Default: 0]
- `hostnameFilter String?`: The active hostnamefilter [Default: ""] - `hostnameFilter String?`: The active hostnamefilter [Default: ""]
@@ -16,7 +14,7 @@
--> -->
<script> <script>
import { untrack } from "svelte"; import { untrack, getContext } from "svelte";
import { queryStore, gql, getContextClient, mutationStore } from "@urql/svelte"; import { queryStore, gql, getContextClient, mutationStore } from "@urql/svelte";
import { Row, Col, Card, Table, Spinner } from "@sveltestrap/sveltestrap"; import { Row, Col, Card, Table, Spinner } from "@sveltestrap/sveltestrap";
import { stickyHeader } from "../generic/utils.js"; import { stickyHeader } from "../generic/utils.js";
@@ -27,8 +25,6 @@
let { let {
cluster, cluster,
subCluster = "", subCluster = "",
ccconfig = null,
globalMetrics = null,
pendingSelectedMetrics = [], pendingSelectedMetrics = [],
selectedResolution = 0, selectedResolution = 0,
hostnameFilter = "", hostnameFilter = "",
@@ -99,10 +95,15 @@
let headerPaddingTop = $state(0); let headerPaddingTop = $state(0);
/* Derived */ /* Derived */
const initialized = $derived(getContext("initialized") || false);
const ccconfig = $derived(initialized ? getContext("cc-config") : null);
const globalMetrics = $derived(initialized ? getContext("globalMetrics") : null);
const usePaging = $derived(ccconfig ? ccconfig.nodeList_usePaging : false);
let selectedMetrics = $derived(pendingSelectedMetrics); let selectedMetrics = $derived(pendingSelectedMetrics);
let itemsPerPage = $derived(usePaging ? (ccconfig?.nodeList_nodesPerPage || 10) : 10); let itemsPerPage = $derived(usePaging ? (ccconfig?.nodeList_nodesPerPage || 10) : 10);
const usePaging = $derived(ccconfig?.nodeList_usePaging || false); let paging = $derived({ itemsPerPage, page });
const paging = $derived({ itemsPerPage, page });
const nodesQuery = $derived(queryStore({ const nodesQuery = $derived(queryStore({
client: client, client: client,
query: nodeListQuery, query: nodeListQuery,
@@ -122,7 +123,7 @@
})); }));
const matchedNodes = $derived($nodesQuery?.data?.nodeMetricsList?.totalNodes || 0); const matchedNodes = $derived($nodesQuery?.data?.nodeMetricsList?.totalNodes || 0);
/* Effects */ /* Effects */
$effect(() => { $effect(() => {
if (!usePaging) { if (!usePaging) {