From 4bb8dedb3c72a5eab81e6c3b083d274d24a6963e Mon Sep 17 00:00:00 2001 From: Sebastian Malton Date: Wed, 30 Nov 2022 08:16:17 -0500 Subject: [PATCH] Add quick namespace filtering to PodDisruptionBudgets view Signed-off-by: Sebastian Malton --- .../legacy-store.ts | 12 ------- .../pod-disruption-budgets.scss | 4 +++ .../pod-disruption-budgets.tsx | 32 ++++++++++++++++--- 3 files changed, 32 insertions(+), 16 deletions(-) delete mode 100644 src/renderer/components/+config-pod-disruption-budgets/legacy-store.ts diff --git a/src/renderer/components/+config-pod-disruption-budgets/legacy-store.ts b/src/renderer/components/+config-pod-disruption-budgets/legacy-store.ts deleted file mode 100644 index 4e0f2ec7d1..0000000000 --- a/src/renderer/components/+config-pod-disruption-budgets/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 podDisruptionBudgetStoreInjectable from "./store.injectable"; - -/** - * @deprecated use `di.inject(podDisruptionBudgetStoreInjectable)` instead - */ -export const podDisruptionBudgetStore = asLegacyGlobalForExtensionApi(podDisruptionBudgetStoreInjectable); diff --git a/src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets.scss b/src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets.scss index c58e89fe43..99f8fedec6 100644 --- a/src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets.scss +++ b/src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets.scss @@ -20,5 +20,9 @@ &.age { flex: .5; } + + a.filterNamespace { + border-bottom: unset; + } } } diff --git a/src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets.tsx b/src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets.tsx index ff9fe884a1..f2cfa76090 100644 --- a/src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets.tsx +++ b/src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets.tsx @@ -7,13 +7,18 @@ import "./pod-disruption-budgets.scss"; import * as React from "react"; import { observer } from "mobx-react"; -import { podDisruptionBudgetStore } from "./legacy-store"; import type { PodDisruptionBudget } from "../../../common/k8s-api/endpoints/pod-disruption-budget.api"; import { KubeObjectStatusIcon } from "../kube-object-status-icon"; import type { KubeObjectDetailsProps } from "../kube-object-details"; import { KubeObjectListLayout } from "../kube-object-list-layout"; import { SiblingsInTabLayout } from "../layout/siblings-in-tab-layout"; import { KubeObjectAge } from "../kube-object/age"; +import { prevDefault } from "../../utils"; +import type { FilterByNamespace } from "../+namespaces/namespace-select-filter-model/filter-by-namespace.injectable"; +import type { PodDisruptionBudgetStore } from "./store"; +import { withInjectables } from "@ogre-tools/injectable-react"; +import filterByNamespaceInjectable from "../+namespaces/namespace-select-filter-model/filter-by-namespace.injectable"; +import podDisruptionBudgetStoreInjectable from "./store.injectable"; enum columnId { name = "name", @@ -28,8 +33,13 @@ enum columnId { export interface PodDisruptionBudgetsProps extends KubeObjectDetailsProps { } +interface Dependencies { + filterByNamespace: FilterByNamespace; + podDisruptionBudgetStore: PodDisruptionBudgetStore; +} + @observer -export class PodDisruptionBudgets extends React.Component { +class NonInjectedPodDisruptionBudgets extends React.Component { render() { return ( @@ -37,7 +47,7 @@ export class PodDisruptionBudgets extends React.Component pdb.getName(), [columnId.namespace]: pdb => pdb.getNs(), @@ -64,7 +74,13 @@ export class PodDisruptionBudgets extends React.Component [ pdb.getName(), , - pdb.getNs(), + this.props.filterByNamespace(pdb.getNs()))} + > + {pdb.getNs()} + , pdb.getMinAvailable(), pdb.getMaxUnavailable(), pdb.getCurrentHealthy(), @@ -76,3 +92,11 @@ export class PodDisruptionBudgets extends React.Component(NonInjectedPodDisruptionBudgets, { + getProps: (di, props) => ({ + ...props, + filterByNamespace: di.inject(filterByNamespaceInjectable), + podDisruptionBudgetStore: di.inject(podDisruptionBudgetStoreInjectable), + }), +});