diff --git a/packages/core/src/renderer/api/catalog/entity/__tests__/metrics-enabled.test.ts b/packages/core/src/renderer/api/catalog/entity/__tests__/metrics-enabled.test.ts new file mode 100644 index 0000000000..c248133541 --- /dev/null +++ b/packages/core/src/renderer/api/catalog/entity/__tests__/metrics-enabled.test.ts @@ -0,0 +1,52 @@ +/** + * Copyright (c) OpenLens Authors. All rights reserved. + * Licensed under MIT License. See LICENSE in root directory for more information. + */ + +import { Cluster } from "../../../../../common/cluster/cluster"; +import { getDiForUnitTesting } from "../../../../getDiForUnitTesting"; +import enabledMetricsInjectable from "../metrics-enabled.injectable"; +import activeEntityInternalClusterInjectable from "../get-active-cluster-entity.injectable"; +import { observable } from "mobx"; +import { ClusterMetricsResourceType } from "../../../../../common/cluster-types"; +import type { DiContainer } from "@ogre-tools/injectable"; + +describe("metrics-enabled", () => { + let cluster: Cluster; + let di: DiContainer; + + beforeEach(() => { + di = getDiForUnitTesting(); + + cluster = new Cluster({ contextName: "irrelevant", id: "irrelevant", kubeConfigPath: "irrelevant" }); + const observableCluster = observable.box(cluster); + + di.override(activeEntityInternalClusterInjectable, () => observableCluster); + }); + + it("given cluster has no hidden metrics preferences, should be true for all resources", () => { + const resourceTypes = Object.values(ClusterMetricsResourceType); + + delete cluster.preferences.hiddenMetrics; + resourceTypes.forEach((resourceType) => { + expect(di.inject(enabledMetricsInjectable, resourceType).get()).toBe(true); + }); + }); + + it("given cluster has metrics preferences, but nothing is hidden, should be true for all resources", () => { + const resourceTypes = Object.values(ClusterMetricsResourceType); + + cluster.preferences.hiddenMetrics = []; + + resourceTypes.forEach((resourceType) => { + expect(di.inject(enabledMetricsInjectable, resourceType).get()).toBe(true); + }); + }); + + it("given cluster has metrics preferences, and some resource is hidden, should be false", () => { + cluster.preferences.hiddenMetrics = [ClusterMetricsResourceType.Pod]; + + expect(di.inject(enabledMetricsInjectable, ClusterMetricsResourceType.Pod).get()).toBe(false); + }); +}); + diff --git a/packages/core/src/renderer/api/catalog/entity/metrics-details-component-enabled.injectable.ts b/packages/core/src/renderer/api/catalog/entity/metrics-details-component-enabled.injectable.ts index e480eadc78..7b837291c8 100644 --- a/packages/core/src/renderer/api/catalog/entity/metrics-details-component-enabled.injectable.ts +++ b/packages/core/src/renderer/api/catalog/entity/metrics-details-component-enabled.injectable.ts @@ -21,7 +21,7 @@ const metricsDetailsComponentEnabledInjectable = getInjectable({ return false; } - return current.object.kind == kind && metricsEnabled.get(); + return metricsEnabled.get() && current.object.kind == kind; }); }, lifecycle: lifecycleEnum.keyedSingleton({ diff --git a/packages/core/src/renderer/api/catalog/entity/metrics-enabled.injectable.ts b/packages/core/src/renderer/api/catalog/entity/metrics-enabled.injectable.ts index 0954259d98..2b9148bd81 100644 --- a/packages/core/src/renderer/api/catalog/entity/metrics-enabled.injectable.ts +++ b/packages/core/src/renderer/api/catalog/entity/metrics-enabled.injectable.ts @@ -16,10 +16,10 @@ const enabledMetricsInjectable = getInjectable({ const cluster = activeEntityInternalCluster.get(); if (!cluster?.preferences.hiddenMetrics) { - return false; + return true; } - return cluster.preferences.hiddenMetrics.includes(kind); + return !cluster.preferences.hiddenMetrics.includes(kind); }); }, lifecycle: lifecycleEnum.keyedSingleton({ diff --git a/packages/core/src/renderer/components/+cluster/cluster-overview.tsx b/packages/core/src/renderer/components/+cluster/cluster-overview.tsx index 516a2f9114..75b3e8cd1e 100644 --- a/packages/core/src/renderer/components/+cluster/cluster-overview.tsx +++ b/packages/core/src/renderer/components/+cluster/cluster-overview.tsx @@ -98,11 +98,12 @@ class NonInjectedClusterOverview extends React.Component { render() { const { eventStore, nodeStore, clusterMetricsAreVisible } = this.props; const isLoaded = nodeStore.isLoaded && eventStore.isLoaded; + const isMetricsHidden = !clusterMetricsAreVisible.get(); return (
- {this.renderClusterOverview(isLoaded, clusterMetricsAreVisible.get())} + {this.renderClusterOverview(isLoaded, isMetricsHidden)}
); diff --git a/packages/core/src/renderer/components/+workloads-pods/pod-details-container.tsx b/packages/core/src/renderer/components/+workloads-pods/pod-details-container.tsx index 00db1af71b..d066497780 100644 --- a/packages/core/src/renderer/components/+workloads-pods/pod-details-container.tsx +++ b/packages/core/src/renderer/components/+workloads-pods/pod-details-container.tsx @@ -97,7 +97,7 @@ class NonInjectedPodDetailsContainer extends React.Component c.name == name); - const isMetricHidden = containerMetricsVisible.get(); + const isMetricVisible = containerMetricsVisible.get(); return (
@@ -105,7 +105,7 @@ class NonInjectedPodDetailsContainer extends React.Component {name}
- {(!isMetricHidden && !isInitContainer && metrics) && ( + {(isMetricVisible && !isInitContainer && metrics) && (