From 7cb50ff9c2ead1495407a96933832dcc46205782 Mon Sep 17 00:00:00 2001 From: Sebastian Malton Date: Wed, 30 Nov 2022 08:06:59 -0500 Subject: [PATCH] Add quick namespace filtering to LimitRanges view Signed-off-by: Sebastian Malton --- .../+config-limit-ranges/legacy-store.ts | 12 ------- .../+config-limit-ranges/limit-ranges.scss | 4 +++ .../+config-limit-ranges/limit-ranges.tsx | 32 ++++++++++++++++--- 3 files changed, 32 insertions(+), 16 deletions(-) delete mode 100644 src/renderer/components/+config-limit-ranges/legacy-store.ts diff --git a/src/renderer/components/+config-limit-ranges/legacy-store.ts b/src/renderer/components/+config-limit-ranges/legacy-store.ts deleted file mode 100644 index d3227c26c2..0000000000 --- a/src/renderer/components/+config-limit-ranges/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 limitRangeStoreInjectable from "./store.injectable"; - -/** - * @deprecated use `di.inject(limitRangeStoreInjectable)` instead - */ -export const limitRangeStore = asLegacyGlobalForExtensionApi(limitRangeStoreInjectable); diff --git a/src/renderer/components/+config-limit-ranges/limit-ranges.scss b/src/renderer/components/+config-limit-ranges/limit-ranges.scss index a795502173..1e26724d5c 100644 --- a/src/renderer/components/+config-limit-ranges/limit-ranges.scss +++ b/src/renderer/components/+config-limit-ranges/limit-ranges.scss @@ -9,4 +9,8 @@ @include table-cell-warning; } } + + a.filterNamespace { + border-bottom: unset; + } } diff --git a/src/renderer/components/+config-limit-ranges/limit-ranges.tsx b/src/renderer/components/+config-limit-ranges/limit-ranges.tsx index 3d233fe67a..ed189ed184 100644 --- a/src/renderer/components/+config-limit-ranges/limit-ranges.tsx +++ b/src/renderer/components/+config-limit-ranges/limit-ranges.tsx @@ -7,11 +7,16 @@ import "./limit-ranges.scss"; import { observer } from "mobx-react"; import { KubeObjectListLayout } from "../kube-object-list-layout"; -import { limitRangeStore } from "./legacy-store"; import React from "react"; import { KubeObjectStatusIcon } from "../kube-object-status-icon"; 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 { LimitRangeStore } from "./store"; +import { withInjectables } from "@ogre-tools/injectable-react"; +import filterByNamespaceInjectable from "../+namespaces/namespace-select-filter-model/filter-by-namespace.injectable"; +import limitRangeStoreInjectable from "./store.injectable"; enum columnId { name = "name", @@ -19,8 +24,13 @@ enum columnId { age = "age", } +interface Dependencies { + filterByNamespace: FilterByNamespace; + limitRangeStore: LimitRangeStore; +} + @observer -export class LimitRanges extends React.Component { +class NonInjectedLimitRanges extends React.Component { render() { return ( @@ -28,7 +38,7 @@ export class LimitRanges extends React.Component { isConfigurable tableId="configuration_limitranges" className="LimitRanges" - store={limitRangeStore} + store={this.props.limitRangeStore} sortingCallbacks={{ [columnId.name]: limitRange => limitRange.getName(), [columnId.namespace]: limitRange => limitRange.getNs(), @@ -48,7 +58,13 @@ export class LimitRanges extends React.Component { renderTableContents={limitRange => [ limitRange.getName(), , - limitRange.getNs(), + this.props.filterByNamespace(limitRange.getNs()))} + > + {limitRange.getNs()} + , , ]} /> @@ -56,3 +72,11 @@ export class LimitRanges extends React.Component { ); } } + +export const LimitRanges = withInjectables(NonInjectedLimitRanges, { + getProps: (di, props) => ({ + ...props, + filterByNamespace: di.inject(filterByNamespaceInjectable), + limitRangeStore: di.inject(limitRangeStoreInjectable), + }), +});