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

Add quick namespace filtering to Leases view

Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
Sebastian Malton 2022-11-30 08:05:19 -05:00
parent f9f4236ab4
commit 176081c4bb

View File

@ -13,10 +13,12 @@ import type { KubeObjectDetailsProps } from "../kube-object-details";
import { KubeObjectListLayout } from "../kube-object-list-layout"; import { KubeObjectListLayout } from "../kube-object-list-layout";
import { SiblingsInTabLayout } from "../layout/siblings-in-tab-layout"; import { SiblingsInTabLayout } from "../layout/siblings-in-tab-layout";
import { KubeObjectAge } from "../kube-object/age"; import { KubeObjectAge } from "../kube-object/age";
import { autoBind } from "../../../common/utils";
import { withInjectables } from "@ogre-tools/injectable-react"; import { withInjectables } from "@ogre-tools/injectable-react";
import leaseStoreInjectable from "./store.injectable"; import leaseStoreInjectable from "./store.injectable";
import type { LeaseStore } from "./store"; 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 { enum columnId {
name = "name", name = "name",
@ -30,15 +32,11 @@ export interface LeaseProps extends KubeObjectDetailsProps<Lease> {
interface Dependencies { interface Dependencies {
leaseStore: LeaseStore; leaseStore: LeaseStore;
filterByNamespace: FilterByNamespace;
} }
@observer @observer
class NonInjectedLease extends React.Component<LeaseProps & Dependencies> { class NonInjectedLease extends React.Component<LeaseProps & Dependencies> {
constructor(props: LeaseProps & Dependencies) {
super(props);
autoBind(this);
}
render() { render() {
const { leaseStore } = this.props; const { leaseStore } = this.props;
@ -69,7 +67,13 @@ class NonInjectedLease extends React.Component<LeaseProps & Dependencies> {
renderTableContents={lease => [ renderTableContents={lease => [
lease.getName(), lease.getName(),
<KubeObjectStatusIcon key="icon" object={lease} />, <KubeObjectStatusIcon key="icon" object={lease} />,
lease.getNs(), <a
key="namespace"
className="filterNamespace"
onClick={prevDefault(() => this.props.filterByNamespace(lease.getNs()))}
>
{lease.getNs()}
</a>,
lease.getHolderIdentity(), lease.getHolderIdentity(),
<KubeObjectAge key="age" object={lease} />, <KubeObjectAge key="age" object={lease} />,
]} ]}
@ -83,5 +87,6 @@ export const Leases = withInjectables<Dependencies, LeaseProps>(NonInjectedLease
getProps: (di, props) => ({ getProps: (di, props) => ({
...props, ...props,
leaseStore: di.inject(leaseStoreInjectable), leaseStore: di.inject(leaseStoreInjectable),
filterByNamespace: di.inject(filterByNamespaceInjectable),
}), }),
}); });