From 5dd9a5c6bc7e76235504da031167e9eb7cd2c9ef Mon Sep 17 00:00:00 2001 From: Alex Andreev Date: Thu, 15 Dec 2022 11:07:00 +0300 Subject: [PATCH] Inject dependencies to PodDetailsList Signed-off-by: Alex Andreev --- src/renderer/components/+nodes/details.tsx | 1 - .../daemonset-details.tsx | 2 +- .../deployment-details.tsx | 2 +- .../+workloads-jobs/job-details.tsx | 2 +- .../+workloads-pods/pod-details-list.tsx | 53 ++++++++++++------- .../replicaset-details.tsx | 2 +- .../statefulset-details.tsx | 2 +- 7 files changed, 38 insertions(+), 26 deletions(-) diff --git a/src/renderer/components/+nodes/details.tsx b/src/renderer/components/+nodes/details.tsx index f71d5bfa5f..2975c04a88 100644 --- a/src/renderer/components/+nodes/details.tsx +++ b/src/renderer/components/+nodes/details.tsx @@ -183,7 +183,6 @@ class NonInjectedNodeDetails extends React.Component diff --git a/src/renderer/components/+workloads-daemonsets/daemonset-details.tsx b/src/renderer/components/+workloads-daemonsets/daemonset-details.tsx index 40c6026659..1945c4ccc5 100644 --- a/src/renderer/components/+workloads-daemonsets/daemonset-details.tsx +++ b/src/renderer/components/+workloads-daemonsets/daemonset-details.tsx @@ -133,7 +133,7 @@ class NonInjectedDaemonSetDetails extends React.Component - + ); } diff --git a/src/renderer/components/+workloads-deployments/deployment-details.tsx b/src/renderer/components/+workloads-deployments/deployment-details.tsx index d21d7648d1..4c38151efc 100644 --- a/src/renderer/components/+workloads-deployments/deployment-details.tsx +++ b/src/renderer/components/+workloads-deployments/deployment-details.tsx @@ -161,7 +161,7 @@ class NonInjectedDeploymentDetails extends React.Component - + ); } diff --git a/src/renderer/components/+workloads-jobs/job-details.tsx b/src/renderer/components/+workloads-jobs/job-details.tsx index fbfb272eab..11e4820a7f 100644 --- a/src/renderer/components/+workloads-jobs/job-details.tsx +++ b/src/renderer/components/+workloads-jobs/job-details.tsx @@ -149,7 +149,7 @@ class NonInjectedJobDetails extends React.Component - + ); } diff --git a/src/renderer/components/+workloads-pods/pod-details-list.tsx b/src/renderer/components/+workloads-pods/pod-details-list.tsx index 46e9e2151f..9ff03d992c 100644 --- a/src/renderer/components/+workloads-pods/pod-details-list.tsx +++ b/src/renderer/components/+workloads-pods/pod-details-list.tsx @@ -5,20 +5,22 @@ import "./pod-details-list.scss"; -import React from "react"; +import { withInjectables } from "@ogre-tools/injectable-react"; import kebabCase from "lodash/kebabCase"; import { reaction } from "mobx"; import { disposeOnUnmount, observer } from "mobx-react"; -import { podStore } from "./legacy-store"; +import React from "react"; import type { Pod } from "../../../common/k8s-api/endpoints"; -import { autoBind, bytesToUnits, cssNames, interval, prevDefault } from "../../utils"; -import { LineProgress } from "../line-progress"; -import type { KubeObject } from "../../../common/k8s-api/kube-object"; -import { Table, TableCell, TableHead, TableRow } from "../table"; -import { Spinner } from "../spinner"; +import { bytesToUnits, cssNames, interval, prevDefault } from "../../utils"; import { DrawerTitle } from "../drawer"; -import { KubeObjectStatusIcon } from "../kube-object-status-icon"; import { showDetails } from "../kube-detail-params"; +import getDetailsUrlInjectable, { type GetDetailsUrl } from "../kube-detail-params/get-details-url.injectable"; +import { KubeObjectStatusIcon } from "../kube-object-status-icon"; +import { LineProgress } from "../line-progress"; +import { Spinner } from "../spinner"; +import { Table, TableCell, TableHead, TableRow } from "../table"; +import type { PodStore } from "./store"; +import podStoreInjectable from "./store.injectable"; enum sortBy { name = "name", @@ -30,26 +32,25 @@ enum sortBy { export interface PodDetailsListProps { pods: Pod[]; - owner: KubeObject; maxCpu?: number; maxMemory?: number; } -@observer -export class PodDetailsList extends React.Component { - constructor(props: PodDetailsListProps) { - super(props); - autoBind(this); - } +interface Dependencies { + getDetailsUrl: GetDetailsUrl; + podStore: PodStore; +} +@observer +export class NonInjectedPodDetailsList extends React.Component { private metricsWatcher = interval(120, () => { - podStore.loadKubeMetrics(this.props.owner.getNs()); + this.props.podStore.loadKubeMetrics(this.props.pods[0]?.getNs()); }); componentDidMount() { this.metricsWatcher.start(true); disposeOnUnmount(this, [ - reaction(() => this.props.owner, () => this.metricsWatcher.restart(true)), + reaction(() => this.props.pods[0]?.getNs(), () => this.metricsWatcher.restart(true)), ]); } @@ -114,7 +115,7 @@ export class PodDetailsList extends React.Component { return; } - const metrics = podStore.getPodKubeMetrics(pod); + const metrics = this.props.podStore.getPodKubeMetrics(pod); return ( { } render() { - const { pods } = this.props; + const { pods, podStore } = this.props; if (!podStore.isLoaded) { return ( @@ -149,7 +150,11 @@ export class PodDetailsList extends React.Component { } if (!pods.length) { - return null; + return ( +
+ No items found +
+ ); } const virtual = pods.length > 20; @@ -197,3 +202,11 @@ export class PodDetailsList extends React.Component { ); } } + +export const PodDetailsList = withInjectables(NonInjectedPodDetailsList, { + getProps: (di, props) => ({ + ...props, + getDetailsUrl: di.inject(getDetailsUrlInjectable), + podStore: di.inject(podStoreInjectable), + }), +}); \ No newline at end of file diff --git a/src/renderer/components/+workloads-replicasets/replicaset-details.tsx b/src/renderer/components/+workloads-replicasets/replicaset-details.tsx index cf92b7976c..0df3f601b0 100644 --- a/src/renderer/components/+workloads-replicasets/replicaset-details.tsx +++ b/src/renderer/components/+workloads-replicasets/replicaset-details.tsx @@ -133,7 +133,7 @@ class NonInjectedReplicaSetDetails extends React.Component - + ); } diff --git a/src/renderer/components/+workloads-statefulsets/statefulset-details.tsx b/src/renderer/components/+workloads-statefulsets/statefulset-details.tsx index 83fb856619..82e0a7529b 100644 --- a/src/renderer/components/+workloads-statefulsets/statefulset-details.tsx +++ b/src/renderer/components/+workloads-statefulsets/statefulset-details.tsx @@ -132,7 +132,7 @@ class NonInjectedStatefulSetDetails extends React.Component - + ); }