1
0
mirror of https://github.com/lensapp/lens.git synced 2025-05-20 05:10:56 +00:00

Fix residual typing issues related to metrics

Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
Sebastian Malton 2022-08-11 08:36:49 -04:00
parent d249c4c679
commit 6a359e8ddb
6 changed files with 11 additions and 5 deletions

View File

@ -24,7 +24,7 @@ const NonInjectedClusterMetricSwitchers = observer(({
nodeStore,
}: Dependencies) => {
const { masterNodes, workerNodes } = nodeStore;
const { cpuUsage, memoryUsage } = clusterOverviewStore.metrics;
const { cpuUsage, memoryUsage } = clusterOverviewStore.metrics ?? {};
const hasMasterNodes = masterNodes.length > 0;
const hasWorkerNodes = workerNodes.length > 0;
const hasCpuMetrics = normalizeMetrics(cpuUsage).data.result[0].values.length > 0;

View File

@ -26,8 +26,8 @@ interface Dependencies {
const NonInjectedClusterMetrics = observer(({ clusterOverviewStore: { metricType, metricNodeRole, getMetricsValues, metricsLoaded, metrics }}: Dependencies) => {
const [plugins] = useState([new ZebraStripesPlugin()]);
const { memoryCapacity, cpuCapacity } = getMetricLastPoints(metrics);
const metricValues = getMetricsValues(metrics);
const { memoryCapacity, cpuCapacity } = getMetricLastPoints(metrics ?? {});
const metricValues = getMetricsValues(metrics ?? {});
const colors = { cpu: "#3D90CE", memory: "#C93DCE" };
const data = metricValues.map(value => ({
x: value[0],

View File

@ -12,6 +12,7 @@ import clusterApiInjectable from "../../../../common/k8s-api/endpoints/cluster.a
import storesAndApisCanBeCreatedInjectable from "../../../stores-apis-can-be-created.injectable";
import assert from "assert";
import nodeStoreInjectable from "../../+nodes/store.injectable";
import requestClusterMetricsByNodeNamesInjectable from "../../../../common/k8s-api/endpoints/metrics.api/get-cluster-metrics-by-node-names.injectable";
const clusterOverviewStoreInjectable = getInjectable({
id: "cluster-overview-store",
@ -30,6 +31,7 @@ const clusterOverviewStoreInjectable = getInjectable({
},
),
nodeStore: di.inject(nodeStoreInjectable),
requestClusterMetricsByNodeNames: di.inject(requestClusterMetricsByNodeNamesInjectable),
}, clusterApi);
},
injectionToken: kubeObjectStoreInjectionToken,

View File

@ -37,6 +37,10 @@ interface ClusterOverviewStoreDependencies {
export class ClusterOverviewStore extends KubeObjectStore<Cluster, ClusterApi> implements ClusterOverviewStorageState {
@observable metrics: ClusterMetricData | undefined = undefined;
get metricsLoaded() {
return !!this.metrics;
}
get metricType(): MetricType {
return this.dependencies.storage.get().metricType;
}

View File

@ -105,7 +105,7 @@ class NonInjectedPodDetailsContainer extends React.Component<PodDetailsContainer
<StatusBrick className={cssNames(state, { ready })}/>
{name}
</div>
{!isMetricHidden && !isInitContainer && (
{(!isMetricHidden && !isInitContainer && metrics) && (
<ResourceMetrics
object={pod}
tabs={[

View File

@ -22,7 +22,7 @@ export interface ResourceMetricsProps<Keys extends string> {
loader?: () => void;
interval?: number;
className?: string;
metrics: Record<Keys, MetricData> | null | undefined;
metrics: Partial<Record<Keys, MetricData>> | null | undefined;
children: React.ReactChild | React.ReactChild[];
}