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
-
+
);
}