From 5f8e6ff9f05bf68b5d65b31f6abb68a3ec89adc2 Mon Sep 17 00:00:00 2001 From: Sebastian Malton Date: Wed, 30 Nov 2022 09:29:50 -0500 Subject: [PATCH] Add quick namespace filtering to DaemonSets view Signed-off-by: Sebastian Malton --- .../+workloads-daemonsets/daemonsets.scss | 4 ++ .../+workloads-daemonsets/daemonsets.tsx | 49 ++++++++++++++++--- .../+workloads-daemonsets/legacy-store.ts | 12 ----- 3 files changed, 47 insertions(+), 18 deletions(-) delete mode 100644 src/renderer/components/+workloads-daemonsets/legacy-store.ts diff --git a/src/renderer/components/+workloads-daemonsets/daemonsets.scss b/src/renderer/components/+workloads-daemonsets/daemonsets.scss index 9c0a9e386c..1500c74d78 100644 --- a/src/renderer/components/+workloads-daemonsets/daemonsets.scss +++ b/src/renderer/components/+workloads-daemonsets/daemonsets.scss @@ -21,5 +21,9 @@ flex-grow: 1.5; @include table-cell-labels-offsets; } + + a.filterNamespace { + border-bottom: unset; + } } } diff --git a/src/renderer/components/+workloads-daemonsets/daemonsets.tsx b/src/renderer/components/+workloads-daemonsets/daemonsets.tsx index bd3610c541..795acb59b2 100644 --- a/src/renderer/components/+workloads-daemonsets/daemonsets.tsx +++ b/src/renderer/components/+workloads-daemonsets/daemonsets.tsx @@ -8,14 +8,21 @@ import "./daemonsets.scss"; import React from "react"; import { observer } from "mobx-react"; import type { DaemonSet } from "../../../common/k8s-api/endpoints"; -import { eventStore } from "../+events/legacy-store"; -import { daemonSetStore } from "./legacy-store"; -import { podStore } from "../+workloads-pods/legacy-store"; import { KubeObjectListLayout } from "../kube-object-list-layout"; import { Badge } from "../badge"; import { KubeObjectStatusIcon } from "../kube-object-status-icon"; import { SiblingsInTabLayout } from "../layout/siblings-in-tab-layout"; import { KubeObjectAge } from "../kube-object/age"; +import type { DaemonSetStore } from "./store"; +import type { PodStore } from "../+workloads-pods/store"; +import type { EventStore } from "../+events/store"; +import { prevDefault } from "../../utils"; +import type { FilterByNamespace } from "../+namespaces/namespace-select-filter-model/filter-by-namespace.injectable"; +import { withInjectables } from "@ogre-tools/injectable-react"; +import daemonSetStoreInjectable from "./store.injectable"; +import eventStoreInjectable from "../+events/store.injectable"; +import filterByNamespaceInjectable from "../+namespaces/namespace-select-filter-model/filter-by-namespace.injectable"; +import podStoreInjectable from "../+workloads-pods/store.injectable"; enum columnId { name = "name", @@ -25,13 +32,27 @@ enum columnId { age = "age", } +interface Dependencies { + daemonSetStore: DaemonSetStore; + podStore: PodStore; + eventStore: EventStore; + filterByNamespace: FilterByNamespace; +} + @observer -export class DaemonSets extends React.Component { +class NonInjectedDaemonSets extends React.Component { getPodsLength(daemonSet: DaemonSet) { - return daemonSetStore.getChildPods(daemonSet).length; + return this.props.daemonSetStore.getChildPods(daemonSet).length; } render() { + const { + daemonSetStore, + eventStore, + filterByNamespace, + podStore, + } = this.props; + return ( [ daemonSet.getName(), - daemonSet.getNs(), + filterByNamespace(daemonSet.getNs()))} + > + {daemonSet.getNs()} + , this.getPodsLength(daemonSet), , daemonSet.getNodeSelectors().map(selector => ( @@ -78,3 +105,13 @@ export class DaemonSets extends React.Component { ); } } + +export const DaemonSets = withInjectables(NonInjectedDaemonSets, { + getProps: (di, props) => ({ + ...props, + daemonSetStore: di.inject(daemonSetStoreInjectable), + eventStore: di.inject(eventStoreInjectable), + filterByNamespace: di.inject(filterByNamespaceInjectable), + podStore: di.inject(podStoreInjectable), + }), +}); diff --git a/src/renderer/components/+workloads-daemonsets/legacy-store.ts b/src/renderer/components/+workloads-daemonsets/legacy-store.ts deleted file mode 100644 index afd40e7df2..0000000000 --- a/src/renderer/components/+workloads-daemonsets/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 daemonSetStoreInjectable from "./store.injectable"; - -/** - * @deprecated use `di.inject(daemonSetStoreInjectable)` instead - */ -export const daemonSetStore = asLegacyGlobalForExtensionApi(daemonSetStoreInjectable);