diff --git a/packages/core/src/renderer/components/+workloads-cronjobs/statuses.injectable.ts b/packages/core/src/renderer/components/+workloads-cronjobs/statuses.injectable.ts new file mode 100644 index 0000000000..a97065e375 --- /dev/null +++ b/packages/core/src/renderer/components/+workloads-cronjobs/statuses.injectable.ts @@ -0,0 +1,20 @@ +/** + * Copyright (c) OpenLens Authors. All rights reserved. + * Licensed under MIT License. See LICENSE in root directory for more information. + */ +import { getInjectable } from "@ogre-tools/injectable"; +import { computed } from "mobx"; +import computeStatusCountsForOwnersInjectable from "../../utils/compute-status-counts.injectable"; +import cronJobStoreInjectable from "./store.injectable"; + +const totalStatusesForCronJobsInSelectedNamespacesInjectable = getInjectable({ + id: "total-statuses-for-cron-jobs-in-selected-namespaces", + instantiate: (di) => { + const cronJobStore = di.inject(cronJobStoreInjectable); + const computeStatusCountsForOwners = di.inject(computeStatusCountsForOwnersInjectable); + + return computed(() => computeStatusCountsForOwners(cronJobStore.contextItems)); + }, +}); + +export default totalStatusesForCronJobsInSelectedNamespacesInjectable; diff --git a/packages/core/src/renderer/components/+workloads-cronjobs/total-count.injectable.ts b/packages/core/src/renderer/components/+workloads-cronjobs/total-count.injectable.ts new file mode 100644 index 0000000000..4178639f00 --- /dev/null +++ b/packages/core/src/renderer/components/+workloads-cronjobs/total-count.injectable.ts @@ -0,0 +1,18 @@ +/** + * Copyright (c) OpenLens Authors. All rights reserved. + * Licensed under MIT License. See LICENSE in root directory for more information. + */ +import { getInjectable } from "@ogre-tools/injectable"; +import { computed } from "mobx"; +import cronJobStoreInjectable from "./store.injectable"; + +const totalCountOfCronJobsInSelectedNamespacesInjectable = getInjectable({ + id: "total-count-of-cron-jobs-in-selected-namespaces", + instantiate: (di) => { + const cronJobStore = di.inject(cronJobStoreInjectable); + + return computed(() => cronJobStore.getTotalCount()); + }, +}); + +export default totalCountOfCronJobsInSelectedNamespacesInjectable; diff --git a/packages/core/src/renderer/components/+workloads-overview/workloads/implementations/cron-jobs-workload.injectable.ts b/packages/core/src/renderer/components/+workloads-overview/workloads/implementations/cron-jobs-workload.injectable.ts index 7e8ab5cf6e..0a92865ad8 100644 --- a/packages/core/src/renderer/components/+workloads-overview/workloads/implementations/cron-jobs-workload.injectable.ts +++ b/packages/core/src/renderer/components/+workloads-overview/workloads/implementations/cron-jobs-workload.injectable.ts @@ -6,34 +6,23 @@ import { getInjectable } from "@ogre-tools/injectable"; import { workloadInjectionToken } from "../workload-injection-token"; import { ResourceNames } from "../../../../utils/rbac"; import navigateToCronJobsInjectable from "../../../../../common/front-end-routing/routes/cluster/workloads/cron-jobs/navigate-to-cron-jobs.injectable"; -import namespaceStoreInjectable from "../../../+namespaces/store.injectable"; -import cronJobsStoreInjectable from "../../../+workloads-cronjobs/store.injectable"; -import { computed } from "mobx"; +import totalCountOfCronJobsInSelectedNamespacesInjectable from "../../../+workloads-cronjobs/total-count.injectable"; +import totalStatusesForCronJobsInSelectedNamespacesInjectable from "../../../+workloads-cronjobs/statuses.injectable"; const cronJobsWorkloadInjectable = getInjectable({ id: "cron-jobs-workload", - instantiate: (di) => { - const navigate = di.inject(navigateToCronJobsInjectable); - const namespaceStore = di.inject(namespaceStoreInjectable); - const store = di.inject(cronJobsStoreInjectable); - - return { - resource: { - apiName: "cronjobs", - group: "batch", - }, - open: navigate, - amountOfItems: computed( - () => store.getAllByNs(namespaceStore.contextNamespaces).length, - ), - status: computed(() => - store.getStatuses(store.getAllByNs(namespaceStore.contextNamespaces)), - ), - title: ResourceNames.cronjobs, - orderNumber: 70, - }; - }, + instantiate: (di) => ({ + resource: { + apiName: "cronjobs", + group: "batch", + }, + open: di.inject(navigateToCronJobsInjectable), + amountOfItems: di.inject(totalCountOfCronJobsInSelectedNamespacesInjectable), + status: di.inject(totalStatusesForCronJobsInSelectedNamespacesInjectable), + title: ResourceNames.cronjobs, + orderNumber: 70, + }), injectionToken: workloadInjectionToken, });