From 176081c4bb2d1faaa08d0559a1c92aaeace43161 Mon Sep 17 00:00:00 2001 From: Sebastian Malton Date: Wed, 30 Nov 2022 08:05:19 -0500 Subject: [PATCH] Add quick namespace filtering to Leases view Signed-off-by: Sebastian Malton --- .../components/+config-leases/leases.tsx | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/src/renderer/components/+config-leases/leases.tsx b/src/renderer/components/+config-leases/leases.tsx index 1c665762ad..6c3025c077 100644 --- a/src/renderer/components/+config-leases/leases.tsx +++ b/src/renderer/components/+config-leases/leases.tsx @@ -13,10 +13,12 @@ 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 { autoBind } from "../../../common/utils"; import { withInjectables } from "@ogre-tools/injectable-react"; import leaseStoreInjectable from "./store.injectable"; import type { LeaseStore } from "./store"; +import { prevDefault } from "../../utils"; +import type { FilterByNamespace } from "../+namespaces/namespace-select-filter-model/filter-by-namespace.injectable"; +import filterByNamespaceInjectable from "../+namespaces/namespace-select-filter-model/filter-by-namespace.injectable"; enum columnId { name = "name", @@ -30,15 +32,11 @@ export interface LeaseProps extends KubeObjectDetailsProps { interface Dependencies { leaseStore: LeaseStore; + filterByNamespace: FilterByNamespace; } @observer class NonInjectedLease extends React.Component { - constructor(props: LeaseProps & Dependencies) { - super(props); - autoBind(this); - } - render() { const { leaseStore } = this.props; @@ -69,7 +67,13 @@ class NonInjectedLease extends React.Component { renderTableContents={lease => [ lease.getName(), , - lease.getNs(), + this.props.filterByNamespace(lease.getNs()))} + > + {lease.getNs()} + , lease.getHolderIdentity(), , ]} @@ -83,5 +87,6 @@ export const Leases = withInjectables(NonInjectedLease getProps: (di, props) => ({ ...props, leaseStore: di.inject(leaseStoreInjectable), + filterByNamespace: di.inject(filterByNamespaceInjectable), }), });