From f9f4236ab47046b7e279d2db73b41c8de25c28c6 Mon Sep 17 00:00:00 2001 From: Sebastian Malton Date: Wed, 30 Nov 2022 08:04:35 -0500 Subject: [PATCH] Add quick namespace filtering to HorizontalPodAutoscalers view Signed-off-by: Sebastian Malton --- .../components/+config-autoscalers/hpa.tsx | 33 ++++++++++++++++--- .../+config-autoscalers/legacy-store.ts | 12 ------- 2 files changed, 28 insertions(+), 17 deletions(-) delete mode 100644 src/renderer/components/+config-autoscalers/legacy-store.ts diff --git a/src/renderer/components/+config-autoscalers/hpa.tsx b/src/renderer/components/+config-autoscalers/hpa.tsx index b8c70541d6..8900d7b73d 100644 --- a/src/renderer/components/+config-autoscalers/hpa.tsx +++ b/src/renderer/components/+config-autoscalers/hpa.tsx @@ -9,12 +9,16 @@ import React from "react"; import { observer } from "mobx-react"; import { KubeObjectListLayout } from "../kube-object-list-layout"; import type { HorizontalPodAutoscaler } from "../../../common/k8s-api/endpoints/horizontal-pod-autoscaler.api"; -import { horizontalPodAutoscalerStore } from "./legacy-store"; import { Badge } from "../badge"; -import { cssNames } from "../../utils"; +import { cssNames, prevDefault } from "../../utils"; import { KubeObjectStatusIcon } from "../kube-object-status-icon"; import { SiblingsInTabLayout } from "../layout/siblings-in-tab-layout"; import { KubeObjectAge } from "../kube-object/age"; +import type { HorizontalPodAutoscalerStore } from "./store"; +import type { FilterByNamespace } from "../+namespaces/namespace-select-filter-model/filter-by-namespace.injectable"; +import { withInjectables } from "@ogre-tools/injectable-react"; +import filterByNamespaceInjectable from "../+namespaces/namespace-select-filter-model/filter-by-namespace.injectable"; +import horizontalPodAutoscalerStoreInjectable from "./store.injectable"; enum columnId { name = "name", @@ -27,8 +31,13 @@ enum columnId { status = "status", } +interface Dependencies { + horizontalPodAutoscalerStore: HorizontalPodAutoscalerStore; + filterByNamespace: FilterByNamespace; +} + @observer -export class HorizontalPodAutoscalers extends React.Component { +class NonInjectedHorizontalPodAutoscalers extends React.Component { getTargets(hpa: HorizontalPodAutoscaler) { const metrics = hpa.getMetrics(); @@ -54,7 +63,7 @@ export class HorizontalPodAutoscalers extends React.Component { isConfigurable tableId="configuration_hpa" className="HorizontalPodAutoscalers" - store={horizontalPodAutoscalerStore} + store={this.props.horizontalPodAutoscalerStore} sortingCallbacks={{ [columnId.name]: hpa => hpa.getName(), [columnId.namespace]: hpa => hpa.getNs(), @@ -81,7 +90,13 @@ export class HorizontalPodAutoscalers extends React.Component { renderTableContents={hpa => [ hpa.getName(), , - hpa.getNs(), + this.props.filterByNamespace(hpa.getNs()))} + > + {hpa.getNs()} + , this.getTargets(hpa), hpa.getMinPods(), hpa.getMaxPods(), @@ -105,3 +120,11 @@ export class HorizontalPodAutoscalers extends React.Component { ); } } + +export const HorizontalPodAutoscalers = withInjectables(NonInjectedHorizontalPodAutoscalers, { + getProps: (di, props) => ({ + ...props, + filterByNamespace: di.inject(filterByNamespaceInjectable), + horizontalPodAutoscalerStore: di.inject(horizontalPodAutoscalerStoreInjectable), + }), +}); diff --git a/src/renderer/components/+config-autoscalers/legacy-store.ts b/src/renderer/components/+config-autoscalers/legacy-store.ts deleted file mode 100644 index 87ff91360e..0000000000 --- a/src/renderer/components/+config-autoscalers/legacy-store.ts +++ /dev/null @@ -1,12 +0,0 @@ -/** - * Copyright (c) OpenLens Authors. All rights reserved. - * Licensed under MIT License. See LICENSE in root directory for more information. - */ - -import { asLegacyGlobalForExtensionApi } from "../../../extensions/as-legacy-globals-for-extension-api/as-legacy-global-object-for-extension-api"; -import horizontalPodAutoscalerStoreInjectable from "./store.injectable"; - -/** - * @deprecated use `di.inject(horizontalPodAutoscalerStoreInjectable)` instead - */ -export const horizontalPodAutoscalerStore = asLegacyGlobalForExtensionApi(horizontalPodAutoscalerStoreInjectable);