From e0c64b37ada547bcb39cd7d0ed596a83623b0c04 Mon Sep 17 00:00:00 2001 From: Sebastian Malton Date: Wed, 30 Nov 2022 09:26:40 -0500 Subject: [PATCH] Add quick namespace filtering to CronJobs view Signed-off-by: Sebastian Malton --- .../components/+workloads-cronjobs/cronjobs.scss | 4 ++++ .../components/+workloads-cronjobs/cronjobs.tsx | 16 ++++++++++++++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/renderer/components/+workloads-cronjobs/cronjobs.scss b/src/renderer/components/+workloads-cronjobs/cronjobs.scss index 0302a45d45..29b9fb18c1 100644 --- a/src/renderer/components/+workloads-cronjobs/cronjobs.scss +++ b/src/renderer/components/+workloads-cronjobs/cronjobs.scss @@ -8,5 +8,9 @@ &.warning { @include table-cell-warning; } + + a.filterNamespace { + border-bottom: unset; + } } } diff --git a/src/renderer/components/+workloads-cronjobs/cronjobs.tsx b/src/renderer/components/+workloads-cronjobs/cronjobs.tsx index 24eff99303..10d51efb33 100644 --- a/src/renderer/components/+workloads-cronjobs/cronjobs.tsx +++ b/src/renderer/components/+workloads-cronjobs/cronjobs.tsx @@ -19,6 +19,9 @@ import { withInjectables } from "@ogre-tools/injectable-react"; import cronJobStoreInjectable from "./store.injectable"; import jobStoreInjectable from "../+workloads-jobs/store.injectable"; import eventStoreInjectable from "../+events/store.injectable"; +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", @@ -34,6 +37,7 @@ interface Dependencies { cronJobStore: CronJobStore; jobStore: JobStore; eventStore: EventStore; + filterByNamespace: FilterByNamespace; } @observer @@ -43,6 +47,7 @@ class NonInjectedCronJobs extends React.Component{ cronJobStore, eventStore, jobStore, + filterByNamespace, } = this.props; return ( @@ -83,7 +88,13 @@ class NonInjectedCronJobs extends React.Component{ renderTableContents={cronJob => [ cronJob.getName(), , - cronJob.getNs(), + filterByNamespace(cronJob.getNs()))} + > + {cronJob.getNs()} + , cronJob.isNeverRun() ? "never" : cronJob.getSchedule(), cronJob.getSuspendFlag(), cronJobStore.getActiveJobsNum(cronJob), @@ -98,9 +109,10 @@ class NonInjectedCronJobs extends React.Component{ export const CronJobs = withInjectables(NonInjectedCronJobs, { getProps: (di, props) => ({ + ...props, cronJobStore: di.inject(cronJobStoreInjectable), eventStore: di.inject(eventStoreInjectable), jobStore: di.inject(jobStoreInjectable), - ...props, + filterByNamespace: di.inject(filterByNamespaceInjectable), }), });