1
0
mirror of https://github.com/lensapp/lens.git synced 2025-05-20 05:10:56 +00:00

clean up: get rid of old implementation of currentKubeObjectInDetailsInjectable

Signed-off-by: Roman <ixrock@gmail.com>
This commit is contained in:
Roman 2023-02-20 13:05:30 +02:00
parent 998a9e8e96
commit 5a88444845
41 changed files with 195 additions and 112 deletions

View File

@ -5,6 +5,9 @@
import { getInjectable, lifecycleEnum } from "@ogre-tools/injectable"; import { getInjectable, lifecycleEnum } from "@ogre-tools/injectable";
import { computed } from "mobx"; import { computed } from "mobx";
import type { ClusterMetricsResourceType } from "../../../../common/cluster-types"; import type { ClusterMetricsResourceType } from "../../../../common/cluster-types";
import type {
KubeObjectDetailsItem,
} from "../../../components/kube-object-details/current-kube-object-in-details.injectable";
import currentKubeObjectInDetailsInjectable from "../../../components/kube-object-details/current-kube-object-in-details.injectable"; import currentKubeObjectInDetailsInjectable from "../../../components/kube-object-details/current-kube-object-in-details.injectable";
import enabledMetricsInjectable from "./metrics-enabled.injectable"; import enabledMetricsInjectable from "./metrics-enabled.injectable";
@ -15,13 +18,13 @@ const metricsDetailsComponentEnabledInjectable = getInjectable({
const currentKubeObjectInDetails = di.inject(currentKubeObjectInDetailsInjectable); const currentKubeObjectInDetails = di.inject(currentKubeObjectInDetailsInjectable);
return computed(() => { return computed(() => {
const current = currentKubeObjectInDetails.value.get(); const kubeObject = currentKubeObjectInDetails.get() as KubeObjectDetailsItem;
if (!current?.object) { if (kubeObject) {
return false; return kubeObject.kind == kind && metricsEnabled.get();
} }
return current.object.kind == kind && metricsEnabled.get(); return false;
}); });
}, },
lifecycle: lifecycleEnum.keyedSingleton({ lifecycle: lifecycleEnum.keyedSingleton({

View File

@ -2,59 +2,25 @@
* Copyright (c) OpenLens Authors. All rights reserved. * Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information. * Licensed under MIT License. See LICENSE in root directory for more information.
*/ */
import { action, computed, type IComputedValue, observable, runInAction } from "mobx";
import { getInjectable } from "@ogre-tools/injectable"; import { getInjectable } from "@ogre-tools/injectable";
import kubeDetailsUrlParamInjectable from "../kube-detail-params/kube-details-url.injectable"; import kubeDetailsUrlParamInjectable from "../kube-detail-params/kube-details-url.injectable";
import apiManagerInjectable from "../../../common/k8s-api/api-manager/manager.injectable"; import apiManagerInjectable from "../../../common/k8s-api/api-manager/manager.injectable";
import { asyncComputed } from "@ogre-tools/injectable-react";
import type { KubeObject } from "../../../common/k8s-api/kube-object"; import type { KubeObject } from "../../../common/k8s-api/kube-object";
import type { IComputedValue } from "mobx";
import { action, computed, observable, runInAction } from "mobx";
export type CurrentKubeObject = export type KubeObjectDetailsItem = KubeObject;
| undefined export type KubeObjectDetailsValue = KubeObjectDetailsItem | Error | undefined;
| { object: KubeObject; error?: undefined } export type KubeObjectDetailsComputedValue = IComputedValue<KubeObjectDetailsValue>;
| { object?: undefined; error: string };
const currentKubeObjectInDetailsInjectable = getInjectable({ const currentKubeObjectInDetailsInjectable = getInjectable({
id: "current-kube-object-in-details", id: "current-kube-object-in-details",
instantiate: (di) => { instantiate(di): KubeObjectDetailsComputedValue {
const urlParam = di.inject(kubeDetailsUrlParamInjectable);
const apiManager = di.inject(apiManagerInjectable);
return asyncComputed({
getValueFromObservedPromise: async (): Promise<CurrentKubeObject> => {
const path = urlParam.get();
const store = apiManager.getStore(path);
if (!store) {
return undefined;
}
try {
const object = await store.loadFromPath(path);
return { object };
} catch (error) {
return { error: String(error) };
}
},
});
},
});
export type KubeObjectDetailsItemValue = KubeObject | Error | undefined;
export type KubeObjectDetailsItemComputed = IComputedValue<KubeObjectDetailsItemValue>;
export const currentKubeObjectInDetailsInjectable2 = getInjectable({
id: "current-kube-object-in-details-2",
instantiate(di): KubeObjectDetailsItemComputed {
const kubeObjectUrlParam = di.inject(kubeDetailsUrlParamInjectable); const kubeObjectUrlParam = di.inject(kubeDetailsUrlParamInjectable);
const apiManager = di.inject(apiManagerInjectable); const apiManager = di.inject(apiManagerInjectable);
const kubeObject = observable.box<KubeObjectDetailsItemValue>(); const kubeObject = observable.box<KubeObjectDetailsValue>();
return computed(() => { return computed<KubeObjectDetailsValue>(() => {
const kubeObjUrlPath = kubeObjectUrlParam.get(); const kubeObjUrlPath = kubeObjectUrlParam.get();
if (!kubeObjUrlPath) return; // details panel is hidden if (!kubeObjUrlPath) return; // details panel is hidden

View File

@ -7,6 +7,9 @@ import { computed } from "mobx";
import React from "react"; import React from "react";
import { CustomResourceDetails } from "../+custom-resources"; import { CustomResourceDetails } from "../+custom-resources";
import customResourceDefinitionStoreInjectable from "../+custom-resources/definition.store.injectable"; import customResourceDefinitionStoreInjectable from "../+custom-resources/definition.store.injectable";
import type {
KubeObjectDetailsItem,
} from "./current-kube-object-in-details.injectable";
import currentKubeObjectInDetailsInjectable from "./current-kube-object-in-details.injectable"; import currentKubeObjectInDetailsInjectable from "./current-kube-object-in-details.injectable";
import { kubeObjectDetailItemInjectionToken } from "./kube-object-detail-items/kube-object-detail-item-injection-token"; import { kubeObjectDetailItemInjectionToken } from "./kube-object-detail-items/kube-object-detail-item-injection-token";
@ -16,13 +19,13 @@ const customResourceDetailItemInjectable = getInjectable({
const customResourceDefinitionStore = di.inject(customResourceDefinitionStoreInjectable); const customResourceDefinitionStore = di.inject(customResourceDefinitionStoreInjectable);
const currentKubeObjectInDetails = di.inject(currentKubeObjectInDetailsInjectable); const currentKubeObjectInDetails = di.inject(currentKubeObjectInDetailsInjectable);
const currentCustomResourceDefinition = computed(() => { const currentCustomResourceDefinition = computed(() => {
const { object } = currentKubeObjectInDetails.value.get() ?? {}; const object = currentKubeObjectInDetails.get();
if (!object) { if (!object) {
return undefined; return undefined;
} }
return customResourceDefinitionStore.getByObject(object); return customResourceDefinitionStore.getByObject(object as KubeObjectDetailsItem);
}); });
return { return {

View File

@ -6,6 +6,9 @@ import { getInjectable } from "@ogre-tools/injectable";
import { kubeObjectDetailItemInjectionToken } from "../kube-object-detail-item-injection-token"; import { kubeObjectDetailItemInjectionToken } from "../kube-object-detail-item-injection-token";
import { computed } from "mobx"; import { computed } from "mobx";
import { ClusterRoleBindingDetails } from "../../../+user-management/+cluster-role-bindings"; import { ClusterRoleBindingDetails } from "../../../+user-management/+cluster-role-bindings";
import type {
KubeObjectDetailsItem,
} from "../../current-kube-object-in-details.injectable";
import currentKubeObjectInDetailsInjectable from "../../current-kube-object-in-details.injectable"; import currentKubeObjectInDetailsInjectable from "../../current-kube-object-in-details.injectable";
import { kubeObjectMatchesToKindAndApiVersion } from "../kube-object-matches-to-kind-and-api-version"; import { kubeObjectMatchesToKindAndApiVersion } from "../kube-object-matches-to-kind-and-api-version";
@ -17,7 +20,7 @@ const clusterRoleBindingDetailItemInjectable = getInjectable({
return { return {
Component: ClusterRoleBindingDetails, Component: ClusterRoleBindingDetails,
enabled: computed(() => isClusterRoleBinding(kubeObject.value.get()?.object)), enabled: computed(() => isClusterRoleBinding(kubeObject.get() as KubeObjectDetailsItem)),
orderNumber: 10, orderNumber: 10,
}; };
}, },

View File

@ -6,6 +6,9 @@ import { getInjectable } from "@ogre-tools/injectable";
import { kubeObjectDetailItemInjectionToken } from "../kube-object-detail-item-injection-token"; import { kubeObjectDetailItemInjectionToken } from "../kube-object-detail-item-injection-token";
import { computed } from "mobx"; import { computed } from "mobx";
import { ClusterRoleDetails } from "../../../+user-management/+cluster-roles"; import { ClusterRoleDetails } from "../../../+user-management/+cluster-roles";
import type {
KubeObjectDetailsItem,
} from "../../current-kube-object-in-details.injectable";
import currentKubeObjectInDetailsInjectable from "../../current-kube-object-in-details.injectable"; import currentKubeObjectInDetailsInjectable from "../../current-kube-object-in-details.injectable";
import { kubeObjectMatchesToKindAndApiVersion } from "../kube-object-matches-to-kind-and-api-version"; import { kubeObjectMatchesToKindAndApiVersion } from "../kube-object-matches-to-kind-and-api-version";
@ -17,7 +20,7 @@ const clusterRoleDetailItemInjectable = getInjectable({
return { return {
Component: ClusterRoleDetails, Component: ClusterRoleDetails,
enabled: computed(() => isClusterRole(kubeObject.value.get()?.object)), enabled: computed(() => isClusterRole(kubeObject.get() as KubeObjectDetailsItem)),
orderNumber: 10, orderNumber: 10,
}; };
}, },

View File

@ -7,6 +7,9 @@ import { kubeObjectDetailItemInjectionToken } from "../kube-object-detail-item-i
import { computed } from "mobx"; import { computed } from "mobx";
import { ConfigMapDetails } from "../../../+config-maps"; import { ConfigMapDetails } from "../../../+config-maps";
import { kubeObjectMatchesToKindAndApiVersion } from "../kube-object-matches-to-kind-and-api-version"; import { kubeObjectMatchesToKindAndApiVersion } from "../kube-object-matches-to-kind-and-api-version";
import type {
KubeObjectDetailsItem,
} from "../../current-kube-object-in-details.injectable";
import currentKubeObjectInDetailsInjectable from "../../current-kube-object-in-details.injectable"; import currentKubeObjectInDetailsInjectable from "../../current-kube-object-in-details.injectable";
const configMapDetailItemInjectable = getInjectable({ const configMapDetailItemInjectable = getInjectable({
@ -17,7 +20,7 @@ const configMapDetailItemInjectable = getInjectable({
return { return {
Component: ConfigMapDetails, Component: ConfigMapDetails,
enabled: computed(() => isConfigMap(kubeObject.value.get()?.object)), enabled: computed(() => isConfigMap(kubeObject.get() as KubeObjectDetailsItem)),
orderNumber: 10, orderNumber: 10,
}; };
}, },

View File

@ -6,6 +6,9 @@ import { getInjectable } from "@ogre-tools/injectable";
import { kubeObjectDetailItemInjectionToken } from "../kube-object-detail-item-injection-token"; import { kubeObjectDetailItemInjectionToken } from "../kube-object-detail-item-injection-token";
import { computed } from "mobx"; import { computed } from "mobx";
import { CronJobDetails } from "../../../+workloads-cronjobs"; import { CronJobDetails } from "../../../+workloads-cronjobs";
import type {
KubeObjectDetailsItem,
} from "../../current-kube-object-in-details.injectable";
import currentKubeObjectInDetailsInjectable from "../../current-kube-object-in-details.injectable"; import currentKubeObjectInDetailsInjectable from "../../current-kube-object-in-details.injectable";
import { kubeObjectMatchesToKindAndApiVersion } from "../kube-object-matches-to-kind-and-api-version"; import { kubeObjectMatchesToKindAndApiVersion } from "../kube-object-matches-to-kind-and-api-version";
@ -17,7 +20,7 @@ const cronJobDetailItemInjectable = getInjectable({
return { return {
Component: CronJobDetails, Component: CronJobDetails,
enabled: computed(() => isCronJob(kubeObject.value.get()?.object)), enabled: computed(() => isCronJob(kubeObject.get() as KubeObjectDetailsItem)),
orderNumber: 10, orderNumber: 10,
}; };
}, },

View File

@ -7,6 +7,9 @@ import { kubeObjectDetailItemInjectionToken } from "../kube-object-detail-item-i
import { computed } from "mobx"; import { computed } from "mobx";
import { CRDDetails } from "../../../+custom-resources"; import { CRDDetails } from "../../../+custom-resources";
import { kubeObjectMatchesToKindAndApiVersion } from "../kube-object-matches-to-kind-and-api-version"; import { kubeObjectMatchesToKindAndApiVersion } from "../kube-object-matches-to-kind-and-api-version";
import type {
KubeObjectDetailsItem,
} from "../../current-kube-object-in-details.injectable";
import currentKubeObjectInDetailsInjectable from "../../current-kube-object-in-details.injectable"; import currentKubeObjectInDetailsInjectable from "../../current-kube-object-in-details.injectable";
const customResourceDefinitionsDetailItemInjectable = getInjectable({ const customResourceDefinitionsDetailItemInjectable = getInjectable({
@ -17,7 +20,7 @@ const customResourceDefinitionsDetailItemInjectable = getInjectable({
return { return {
Component: CRDDetails, Component: CRDDetails,
enabled: computed(() => isCustomResourceDefinition(kubeObject.value.get()?.object)), enabled: computed(() => isCustomResourceDefinition(kubeObject.get() as KubeObjectDetailsItem)),
orderNumber: 10, orderNumber: 10,
}; };
}, },

View File

@ -6,7 +6,12 @@ import { getInjectable } from "@ogre-tools/injectable";
import { kubeObjectDetailItemInjectionToken } from "../kube-object-detail-item-injection-token"; import { kubeObjectDetailItemInjectionToken } from "../kube-object-detail-item-injection-token";
import { computed } from "mobx"; import { computed } from "mobx";
import { DaemonSetDetails } from "../../../+workloads-daemonsets"; import { DaemonSetDetails } from "../../../+workloads-daemonsets";
import { kubeObjectMatchesToKindAndApiVersion } from "../kube-object-matches-to-kind-and-api-version"; import {
kubeObjectMatchesToKindAndApiVersion,
} from "../kube-object-matches-to-kind-and-api-version";
import type {
KubeObjectDetailsItem,
} from "../../current-kube-object-in-details.injectable";
import currentKubeObjectInDetailsInjectable from "../../current-kube-object-in-details.injectable"; import currentKubeObjectInDetailsInjectable from "../../current-kube-object-in-details.injectable";
const daemonSetDetailItemInjectable = getInjectable({ const daemonSetDetailItemInjectable = getInjectable({
@ -17,7 +22,7 @@ const daemonSetDetailItemInjectable = getInjectable({
return { return {
Component: DaemonSetDetails, Component: DaemonSetDetails,
enabled: computed(() => isDaemonSet(kubeObject.value.get()?.object)), enabled: computed(() => isDaemonSet(kubeObject.get() as KubeObjectDetailsItem)),
orderNumber: 10, orderNumber: 10,
}; };
}, },

View File

@ -6,6 +6,9 @@ import { getInjectable } from "@ogre-tools/injectable";
import { kubeObjectDetailItemInjectionToken } from "../kube-object-detail-item-injection-token"; import { kubeObjectDetailItemInjectionToken } from "../kube-object-detail-item-injection-token";
import { computed } from "mobx"; import { computed } from "mobx";
import { DeploymentDetails } from "../../../+workloads-deployments"; import { DeploymentDetails } from "../../../+workloads-deployments";
import type {
KubeObjectDetailsItem,
} from "../../current-kube-object-in-details.injectable";
import currentKubeObjectInDetailsInjectable from "../../current-kube-object-in-details.injectable"; import currentKubeObjectInDetailsInjectable from "../../current-kube-object-in-details.injectable";
import { kubeObjectMatchesToKindAndApiVersion } from "../kube-object-matches-to-kind-and-api-version"; import { kubeObjectMatchesToKindAndApiVersion } from "../kube-object-matches-to-kind-and-api-version";
@ -17,7 +20,7 @@ const deploymentDetailItemInjectable = getInjectable({
return { return {
Component: DeploymentDetails, Component: DeploymentDetails,
enabled: computed(() => isDeployment(kubeObject.value.get()?.object)), enabled: computed(() => isDeployment(kubeObject.get() as KubeObjectDetailsItem)),
orderNumber: 10, orderNumber: 10,
}; };
}, },

View File

@ -7,6 +7,9 @@ import { kubeObjectDetailItemInjectionToken } from "../kube-object-detail-item-i
import { computed } from "mobx"; import { computed } from "mobx";
import { EndpointsDetails } from "../../../+network-endpoints"; import { EndpointsDetails } from "../../../+network-endpoints";
import { kubeObjectMatchesToKindAndApiVersion } from "../kube-object-matches-to-kind-and-api-version"; import { kubeObjectMatchesToKindAndApiVersion } from "../kube-object-matches-to-kind-and-api-version";
import type {
KubeObjectDetailsItem,
} from "../../current-kube-object-in-details.injectable";
import currentKubeObjectInDetailsInjectable from "../../current-kube-object-in-details.injectable"; import currentKubeObjectInDetailsInjectable from "../../current-kube-object-in-details.injectable";
const endpointsDetailItemInjectable = getInjectable({ const endpointsDetailItemInjectable = getInjectable({
@ -17,7 +20,7 @@ const endpointsDetailItemInjectable = getInjectable({
return { return {
Component: EndpointsDetails, Component: EndpointsDetails,
enabled: computed(() => isEndpoint(kubeObject.value.get()?.object)), enabled: computed(() => isEndpoint(kubeObject.get() as KubeObjectDetailsItem)),
orderNumber: 10, orderNumber: 10,
}; };
}, },

View File

@ -7,6 +7,9 @@ import { kubeObjectDetailItemInjectionToken } from "../kube-object-detail-item-i
import { computed } from "mobx"; import { computed } from "mobx";
import { EventDetails } from "../../../+events"; import { EventDetails } from "../../../+events";
import { kubeObjectMatchesToKindAndApiVersion } from "../kube-object-matches-to-kind-and-api-version"; import { kubeObjectMatchesToKindAndApiVersion } from "../kube-object-matches-to-kind-and-api-version";
import type {
KubeObjectDetailsItem,
} from "../../current-kube-object-in-details.injectable";
import currentKubeObjectInDetailsInjectable from "../../current-kube-object-in-details.injectable"; import currentKubeObjectInDetailsInjectable from "../../current-kube-object-in-details.injectable";
const eventsDetailItemInjectable = getInjectable({ const eventsDetailItemInjectable = getInjectable({
@ -17,7 +20,7 @@ const eventsDetailItemInjectable = getInjectable({
return { return {
Component: EventDetails, Component: EventDetails,
enabled: computed(() => isEvent(kubeObject.value.get()?.object)), enabled: computed(() => isEvent(kubeObject.get() as KubeObjectDetailsItem)),
orderNumber: 10, orderNumber: 10,
}; };
}, },

View File

@ -7,6 +7,9 @@ import { kubeObjectDetailItemInjectionToken } from "../kube-object-detail-item-i
import { HpaDetails } from "../../../+config-horizontal-pod-autoscalers"; import { HpaDetails } from "../../../+config-horizontal-pod-autoscalers";
import { computed } from "mobx"; import { computed } from "mobx";
import { kubeObjectMatchesToKindAndApiVersion } from "../kube-object-matches-to-kind-and-api-version"; import { kubeObjectMatchesToKindAndApiVersion } from "../kube-object-matches-to-kind-and-api-version";
import type {
KubeObjectDetailsItem,
} from "../../current-kube-object-in-details.injectable";
import currentKubeObjectInDetailsInjectable from "../../current-kube-object-in-details.injectable"; import currentKubeObjectInDetailsInjectable from "../../current-kube-object-in-details.injectable";
const horizontalPodAutoscalerDetailItemInjectable = getInjectable({ const horizontalPodAutoscalerDetailItemInjectable = getInjectable({
@ -17,7 +20,7 @@ const horizontalPodAutoscalerDetailItemInjectable = getInjectable({
return { return {
Component: HpaDetails, Component: HpaDetails,
enabled: computed(() => isHorizontalPodAutoscaler(kubeObject.value.get()?.object)), enabled: computed(() => isHorizontalPodAutoscaler(kubeObject.get() as KubeObjectDetailsItem)),
orderNumber: 10, orderNumber: 10,
}; };
}, },

View File

@ -7,6 +7,9 @@ import { kubeObjectDetailItemInjectionToken } from "../kube-object-detail-item-i
import { computed } from "mobx"; import { computed } from "mobx";
import { IngressClassDetails } from "../../../+network-ingresses"; import { IngressClassDetails } from "../../../+network-ingresses";
import { kubeObjectMatchesToKindAndApiVersion } from "../kube-object-matches-to-kind-and-api-version"; import { kubeObjectMatchesToKindAndApiVersion } from "../kube-object-matches-to-kind-and-api-version";
import type {
KubeObjectDetailsItem,
} from "../../current-kube-object-in-details.injectable";
import currentKubeObjectInDetailsInjectable from "../../current-kube-object-in-details.injectable"; import currentKubeObjectInDetailsInjectable from "../../current-kube-object-in-details.injectable";
const ingressClassDetailItemInjectable = getInjectable({ const ingressClassDetailItemInjectable = getInjectable({
@ -17,7 +20,7 @@ const ingressClassDetailItemInjectable = getInjectable({
return { return {
Component: IngressClassDetails, Component: IngressClassDetails,
enabled: computed(() => isIngressClass(kubeObject.value.get()?.object)), enabled: computed(() => isIngressClass(kubeObject.get() as KubeObjectDetailsItem)),
orderNumber: 10, orderNumber: 10,
}; };
}, },

View File

@ -7,6 +7,9 @@ import { kubeObjectDetailItemInjectionToken } from "../kube-object-detail-item-i
import { computed } from "mobx"; import { computed } from "mobx";
import { IngressDetails } from "../../../+network-ingresses"; import { IngressDetails } from "../../../+network-ingresses";
import { kubeObjectMatchesToKindAndApiVersion } from "../kube-object-matches-to-kind-and-api-version"; import { kubeObjectMatchesToKindAndApiVersion } from "../kube-object-matches-to-kind-and-api-version";
import type {
KubeObjectDetailsItem,
} from "../../current-kube-object-in-details.injectable";
import currentKubeObjectInDetailsInjectable from "../../current-kube-object-in-details.injectable"; import currentKubeObjectInDetailsInjectable from "../../current-kube-object-in-details.injectable";
const ingressDetailItemInjectable = getInjectable({ const ingressDetailItemInjectable = getInjectable({
@ -17,7 +20,7 @@ const ingressDetailItemInjectable = getInjectable({
return { return {
Component: IngressDetails, Component: IngressDetails,
enabled: computed(() => isIngress(kubeObject.value.get()?.object)), enabled: computed(() => isIngress(kubeObject.get() as KubeObjectDetailsItem)),
orderNumber: 10, orderNumber: 10,
}; };
}, },

View File

@ -7,6 +7,9 @@ import { kubeObjectDetailItemInjectionToken } from "../kube-object-detail-item-i
import { computed } from "mobx"; import { computed } from "mobx";
import { JobDetails } from "../../../+workloads-jobs"; import { JobDetails } from "../../../+workloads-jobs";
import { kubeObjectMatchesToKindAndApiVersion } from "../kube-object-matches-to-kind-and-api-version"; import { kubeObjectMatchesToKindAndApiVersion } from "../kube-object-matches-to-kind-and-api-version";
import type {
KubeObjectDetailsItem,
} from "../../current-kube-object-in-details.injectable";
import currentKubeObjectInDetailsInjectable from "../../current-kube-object-in-details.injectable"; import currentKubeObjectInDetailsInjectable from "../../current-kube-object-in-details.injectable";
const jobDetailItemInjectable = getInjectable({ const jobDetailItemInjectable = getInjectable({
@ -17,7 +20,7 @@ const jobDetailItemInjectable = getInjectable({
return { return {
Component: JobDetails, Component: JobDetails,
enabled: computed(() => isJob(kubeObject.value.get()?.object)), enabled: computed(() => isJob(kubeObject.get() as KubeObjectDetailsItem)),
orderNumber: 10, orderNumber: 10,
}; };
}, },

View File

@ -7,6 +7,9 @@ import { kubeObjectDetailItemInjectionToken } from "../kube-object-detail-item-i
import { computed } from "mobx"; import { computed } from "mobx";
import { LeaseDetails } from "../../../+config-leases"; import { LeaseDetails } from "../../../+config-leases";
import { kubeObjectMatchesToKindAndApiVersion } from "../kube-object-matches-to-kind-and-api-version"; import { kubeObjectMatchesToKindAndApiVersion } from "../kube-object-matches-to-kind-and-api-version";
import type {
KubeObjectDetailsItem,
} from "../../current-kube-object-in-details.injectable";
import currentKubeObjectInDetailsInjectable from "../../current-kube-object-in-details.injectable"; import currentKubeObjectInDetailsInjectable from "../../current-kube-object-in-details.injectable";
const leaseDetailItemInjectable = getInjectable({ const leaseDetailItemInjectable = getInjectable({
@ -17,7 +20,7 @@ const leaseDetailItemInjectable = getInjectable({
return { return {
Component: LeaseDetails, Component: LeaseDetails,
enabled: computed(() => isLease(kubeObject.value.get()?.object)), enabled: computed(() => isLease(kubeObject.get() as KubeObjectDetailsItem)),
orderNumber: 10, orderNumber: 10,
}; };
}, },

View File

@ -7,6 +7,9 @@ import { kubeObjectDetailItemInjectionToken } from "../kube-object-detail-item-i
import { computed } from "mobx"; import { computed } from "mobx";
import { LimitRangeDetails } from "../../../+config-limit-ranges"; import { LimitRangeDetails } from "../../../+config-limit-ranges";
import { kubeObjectMatchesToKindAndApiVersion } from "../kube-object-matches-to-kind-and-api-version"; import { kubeObjectMatchesToKindAndApiVersion } from "../kube-object-matches-to-kind-and-api-version";
import type {
KubeObjectDetailsItem,
} from "../../current-kube-object-in-details.injectable";
import currentKubeObjectInDetailsInjectable from "../../current-kube-object-in-details.injectable"; import currentKubeObjectInDetailsInjectable from "../../current-kube-object-in-details.injectable";
const limitRangeDetailItemInjectable = getInjectable({ const limitRangeDetailItemInjectable = getInjectable({
@ -17,7 +20,7 @@ const limitRangeDetailItemInjectable = getInjectable({
return { return {
Component: LimitRangeDetails, Component: LimitRangeDetails,
enabled: computed(() => isLimitRange(kubeObject.value.get()?.object)), enabled: computed(() => isLimitRange(kubeObject.get() as KubeObjectDetailsItem)),
orderNumber: 10, orderNumber: 10,
}; };
}, },

View File

@ -9,20 +9,20 @@ import { NamespaceDetails } from "../../../+namespaces";
import { import {
kubeObjectMatchesToKindAndApiVersion, kubeObjectMatchesToKindAndApiVersion,
} from "../kube-object-matches-to-kind-and-api-version"; } from "../kube-object-matches-to-kind-and-api-version";
import { import type {
currentKubeObjectInDetailsInjectable2, KubeObjectDetailsItem,
} from "../../current-kube-object-in-details.injectable"; } from "../../current-kube-object-in-details.injectable";
import type { KubeObject } from "../../../../../common/k8s-api/kube-object"; import currentKubeObjectInDetailsInjectable from "../../current-kube-object-in-details.injectable";
const namespacesDetailItemInjectable = getInjectable({ const namespacesDetailItemInjectable = getInjectable({
id: "namespaces-detail-item", id: "namespaces-detail-item",
instantiate: (di) => { instantiate: (di) => {
const kubeObject = di.inject(currentKubeObjectInDetailsInjectable2); const kubeObject = di.inject(currentKubeObjectInDetailsInjectable);
return { return {
Component: NamespaceDetails, Component: NamespaceDetails,
enabled: computed(() => isNamespace(kubeObject.get() as KubeObject)), enabled: computed(() => isNamespace(kubeObject.get() as KubeObjectDetailsItem)),
orderNumber: 10, orderNumber: 10,
}; };
}, },

View File

@ -7,6 +7,9 @@ import { kubeObjectDetailItemInjectionToken } from "../kube-object-detail-item-i
import { computed } from "mobx"; import { computed } from "mobx";
import { NetworkPolicyDetails } from "../../../+network-policies"; import { NetworkPolicyDetails } from "../../../+network-policies";
import { kubeObjectMatchesToKindAndApiVersion } from "../kube-object-matches-to-kind-and-api-version"; import { kubeObjectMatchesToKindAndApiVersion } from "../kube-object-matches-to-kind-and-api-version";
import type {
KubeObjectDetailsItem,
} from "../../current-kube-object-in-details.injectable";
import currentKubeObjectInDetailsInjectable from "../../current-kube-object-in-details.injectable"; import currentKubeObjectInDetailsInjectable from "../../current-kube-object-in-details.injectable";
const networkPolicyDetailItemInjectable = getInjectable({ const networkPolicyDetailItemInjectable = getInjectable({
@ -17,7 +20,7 @@ const networkPolicyDetailItemInjectable = getInjectable({
return { return {
Component: NetworkPolicyDetails, Component: NetworkPolicyDetails,
enabled: computed(() => isNetworkPolicy(kubeObject.value.get()?.object)), enabled: computed(() => isNetworkPolicy(kubeObject.get() as KubeObjectDetailsItem)),
orderNumber: 10, orderNumber: 10,
}; };
}, },

View File

@ -6,6 +6,9 @@ import { getInjectable } from "@ogre-tools/injectable";
import { kubeObjectDetailItemInjectionToken } from "../kube-object-detail-item-injection-token"; import { kubeObjectDetailItemInjectionToken } from "../kube-object-detail-item-injection-token";
import { computed } from "mobx"; import { computed } from "mobx";
import { NodeDetails } from "../../../+nodes/details"; import { NodeDetails } from "../../../+nodes/details";
import type {
KubeObjectDetailsItem,
} from "../../current-kube-object-in-details.injectable";
import currentKubeObjectInDetailsInjectable from "../../current-kube-object-in-details.injectable"; import currentKubeObjectInDetailsInjectable from "../../current-kube-object-in-details.injectable";
import { kubeObjectMatchesToKindAndApiVersion } from "../kube-object-matches-to-kind-and-api-version"; import { kubeObjectMatchesToKindAndApiVersion } from "../kube-object-matches-to-kind-and-api-version";
@ -17,7 +20,7 @@ const nodeDetailItemInjectable = getInjectable({
return { return {
Component: NodeDetails, Component: NodeDetails,
enabled: computed(() => isNode(kubeObject.value.get()?.object)), enabled: computed(() => isNode(kubeObject.get() as KubeObjectDetailsItem)),
orderNumber: 10, orderNumber: 10,
}; };
}, },

View File

@ -7,6 +7,9 @@ import { kubeObjectDetailItemInjectionToken } from "../kube-object-detail-item-i
import { computed } from "mobx"; import { computed } from "mobx";
import { PersistentVolumeClaimDetails } from "../../../+storage-volume-claims"; import { PersistentVolumeClaimDetails } from "../../../+storage-volume-claims";
import { kubeObjectMatchesToKindAndApiVersion } from "../kube-object-matches-to-kind-and-api-version"; import { kubeObjectMatchesToKindAndApiVersion } from "../kube-object-matches-to-kind-and-api-version";
import type {
KubeObjectDetailsItem,
} from "../../current-kube-object-in-details.injectable";
import currentKubeObjectInDetailsInjectable from "../../current-kube-object-in-details.injectable"; import currentKubeObjectInDetailsInjectable from "../../current-kube-object-in-details.injectable";
const persistentVolumeClaimDetailItemInjectable = getInjectable({ const persistentVolumeClaimDetailItemInjectable = getInjectable({
@ -17,7 +20,7 @@ const persistentVolumeClaimDetailItemInjectable = getInjectable({
return { return {
Component: PersistentVolumeClaimDetails, Component: PersistentVolumeClaimDetails,
enabled: computed(() => isPersistentVolumeClaim(kubeObject.value.get()?.object)), enabled: computed(() => isPersistentVolumeClaim(kubeObject.get() as KubeObjectDetailsItem)),
orderNumber: 10, orderNumber: 10,
}; };
}, },

View File

@ -7,6 +7,9 @@ import { kubeObjectDetailItemInjectionToken } from "../kube-object-detail-item-i
import { computed } from "mobx"; import { computed } from "mobx";
import { PersistentVolumeDetails } from "../../../+storage-volumes"; import { PersistentVolumeDetails } from "../../../+storage-volumes";
import { kubeObjectMatchesToKindAndApiVersion } from "../kube-object-matches-to-kind-and-api-version"; import { kubeObjectMatchesToKindAndApiVersion } from "../kube-object-matches-to-kind-and-api-version";
import type {
KubeObjectDetailsItem,
} from "../../current-kube-object-in-details.injectable";
import currentKubeObjectInDetailsInjectable from "../../current-kube-object-in-details.injectable"; import currentKubeObjectInDetailsInjectable from "../../current-kube-object-in-details.injectable";
const persistentVolumeDetailItemInjectable = getInjectable({ const persistentVolumeDetailItemInjectable = getInjectable({
@ -17,7 +20,7 @@ const persistentVolumeDetailItemInjectable = getInjectable({
return { return {
Component: PersistentVolumeDetails, Component: PersistentVolumeDetails,
enabled: computed(() => isPersistentVolume(kubeObject.value.get()?.object)), enabled: computed(() => isPersistentVolume(kubeObject.get() as KubeObjectDetailsItem)),
orderNumber: 10, orderNumber: 10,
}; };
}, },

View File

@ -7,6 +7,9 @@ import { kubeObjectDetailItemInjectionToken } from "../kube-object-detail-item-i
import { computed } from "mobx"; import { computed } from "mobx";
import { PodDetails } from "../../../+workloads-pods"; import { PodDetails } from "../../../+workloads-pods";
import { kubeObjectMatchesToKindAndApiVersion } from "../kube-object-matches-to-kind-and-api-version"; import { kubeObjectMatchesToKindAndApiVersion } from "../kube-object-matches-to-kind-and-api-version";
import type {
KubeObjectDetailsItem,
} from "../../current-kube-object-in-details.injectable";
import currentKubeObjectInDetailsInjectable from "../../current-kube-object-in-details.injectable"; import currentKubeObjectInDetailsInjectable from "../../current-kube-object-in-details.injectable";
const podDetailItemInjectable = getInjectable({ const podDetailItemInjectable = getInjectable({
@ -17,7 +20,7 @@ const podDetailItemInjectable = getInjectable({
return { return {
Component: PodDetails, Component: PodDetails,
enabled: computed(() => isPod(kubeObject.value.get()?.object)), enabled: computed(() => isPod(kubeObject.get() as KubeObjectDetailsItem)),
orderNumber: 10, orderNumber: 10,
}; };
}, },

View File

@ -17,7 +17,7 @@ const podDisruptionBudgetDetailItemInjectable = getInjectable({
return { return {
Component: PodDisruptionBudgetDetails, Component: PodDisruptionBudgetDetails,
enabled: computed(() => kubeObject.value.get()?.object instanceof PodDisruptionBudget), enabled: computed(() => kubeObject.get() instanceof PodDisruptionBudget),
orderNumber: 10, orderNumber: 10,
}; };
}, },

View File

@ -7,6 +7,9 @@ import { kubeObjectDetailItemInjectionToken } from "../kube-object-detail-item-i
import { computed } from "mobx"; import { computed } from "mobx";
import { PodSecurityPolicyDetails } from "../../../+pod-security-policies"; import { PodSecurityPolicyDetails } from "../../../+pod-security-policies";
import { kubeObjectMatchesToKindAndApiVersion } from "../kube-object-matches-to-kind-and-api-version"; import { kubeObjectMatchesToKindAndApiVersion } from "../kube-object-matches-to-kind-and-api-version";
import type {
KubeObjectDetailsItem,
} from "../../current-kube-object-in-details.injectable";
import currentKubeObjectInDetailsInjectable from "../../current-kube-object-in-details.injectable"; import currentKubeObjectInDetailsInjectable from "../../current-kube-object-in-details.injectable";
const podSecurityPolicyDetailItemInjectable = getInjectable({ const podSecurityPolicyDetailItemInjectable = getInjectable({
@ -17,7 +20,7 @@ const podSecurityPolicyDetailItemInjectable = getInjectable({
return { return {
Component: PodSecurityPolicyDetails, Component: PodSecurityPolicyDetails,
enabled: computed(() => isPodSecurityPolicy(kubeObject.value.get()?.object)), enabled: computed(() => isPodSecurityPolicy(kubeObject.get() as KubeObjectDetailsItem)),
orderNumber: 10, orderNumber: 10,
}; };
}, },

View File

@ -7,6 +7,9 @@ import { kubeObjectDetailItemInjectionToken } from "../kube-object-detail-item-i
import { computed } from "mobx"; import { computed } from "mobx";
import { PriorityClassesDetails } from "../../../+config-priority-classes"; import { PriorityClassesDetails } from "../../../+config-priority-classes";
import { kubeObjectMatchesToKindAndApiVersion } from "../kube-object-matches-to-kind-and-api-version"; import { kubeObjectMatchesToKindAndApiVersion } from "../kube-object-matches-to-kind-and-api-version";
import type {
KubeObjectDetailsItem,
} from "../../current-kube-object-in-details.injectable";
import currentKubeObjectInDetailsInjectable from "../../current-kube-object-in-details.injectable"; import currentKubeObjectInDetailsInjectable from "../../current-kube-object-in-details.injectable";
const priorityClassDetailItemInjectable = getInjectable({ const priorityClassDetailItemInjectable = getInjectable({
@ -17,7 +20,7 @@ const priorityClassDetailItemInjectable = getInjectable({
return { return {
Component: PriorityClassesDetails, Component: PriorityClassesDetails,
enabled: computed(() => isPriorityClass(kubeObject.value.get()?.object)), enabled: computed(() => isPriorityClass(kubeObject.get() as KubeObjectDetailsItem)),
orderNumber: 10, orderNumber: 10,
}; };
}, },

View File

@ -7,6 +7,9 @@ import { kubeObjectDetailItemInjectionToken } from "../kube-object-detail-item-i
import { computed } from "mobx"; import { computed } from "mobx";
import { ReplicaSetDetails } from "../../../+workloads-replicasets"; import { ReplicaSetDetails } from "../../../+workloads-replicasets";
import { kubeObjectMatchesToKindAndApiVersion } from "../kube-object-matches-to-kind-and-api-version"; import { kubeObjectMatchesToKindAndApiVersion } from "../kube-object-matches-to-kind-and-api-version";
import type {
KubeObjectDetailsItem,
} from "../../current-kube-object-in-details.injectable";
import currentKubeObjectInDetailsInjectable from "../../current-kube-object-in-details.injectable"; import currentKubeObjectInDetailsInjectable from "../../current-kube-object-in-details.injectable";
const replicaSetDetailItemInjectable = getInjectable({ const replicaSetDetailItemInjectable = getInjectable({
@ -17,7 +20,7 @@ const replicaSetDetailItemInjectable = getInjectable({
return { return {
Component: ReplicaSetDetails, Component: ReplicaSetDetails,
enabled: computed(() => isReplicaSet(kubeObject.value.get()?.object)), enabled: computed(() => isReplicaSet(kubeObject.get() as KubeObjectDetailsItem)),
orderNumber: 10, orderNumber: 10,
}; };
}, },

View File

@ -8,21 +8,21 @@ import { computed } from "mobx";
import { import {
kubeObjectMatchesToKindAndApiVersion, kubeObjectMatchesToKindAndApiVersion,
} from "../kube-object-matches-to-kind-and-api-version"; } from "../kube-object-matches-to-kind-and-api-version";
import { import type {
currentKubeObjectInDetailsInjectable2, KubeObjectDetailsItem,
} from "../../current-kube-object-in-details.injectable"; } from "../../current-kube-object-in-details.injectable";
import currentKubeObjectInDetailsInjectable from "../../current-kube-object-in-details.injectable";
import { ReplicationControllerDetails } from "../../../+workloads-replicationcontrollers"; import { ReplicationControllerDetails } from "../../../+workloads-replicationcontrollers";
import type { KubeObject } from "../../../../../common/k8s-api/kube-object";
const replicationControllerDetailItemInjectable = getInjectable({ const replicationControllerDetailItemInjectable = getInjectable({
id: "replication-controller-detail-item", id: "replication-controller-detail-item",
instantiate(di) { instantiate(di) {
const kubeObject = di.inject(currentKubeObjectInDetailsInjectable2); const kubeObject = di.inject(currentKubeObjectInDetailsInjectable);
return { return {
Component: ReplicationControllerDetails, Component: ReplicationControllerDetails,
enabled: computed(() => isReplicationController(kubeObject.get() as KubeObject)), enabled: computed(() => isReplicationController(kubeObject.get() as KubeObjectDetailsItem)),
orderNumber: 10, orderNumber: 10,
}; };
}, },

View File

@ -7,6 +7,9 @@ import { kubeObjectDetailItemInjectionToken } from "../kube-object-detail-item-i
import { computed } from "mobx"; import { computed } from "mobx";
import { ResourceQuotaDetails } from "../../../+config-resource-quotas"; import { ResourceQuotaDetails } from "../../../+config-resource-quotas";
import { kubeObjectMatchesToKindAndApiVersion } from "../kube-object-matches-to-kind-and-api-version"; import { kubeObjectMatchesToKindAndApiVersion } from "../kube-object-matches-to-kind-and-api-version";
import type {
KubeObjectDetailsItem,
} from "../../current-kube-object-in-details.injectable";
import currentKubeObjectInDetailsInjectable from "../../current-kube-object-in-details.injectable"; import currentKubeObjectInDetailsInjectable from "../../current-kube-object-in-details.injectable";
const resourceQuotaDetailItemInjectable = getInjectable({ const resourceQuotaDetailItemInjectable = getInjectable({
@ -17,7 +20,7 @@ const resourceQuotaDetailItemInjectable = getInjectable({
return { return {
Component: ResourceQuotaDetails, Component: ResourceQuotaDetails,
enabled: computed(() => isResourceQuota(kubeObject.value.get()?.object)), enabled: computed(() => isResourceQuota(kubeObject.get() as KubeObjectDetailsItem)),
orderNumber: 10, orderNumber: 10,
}; };
}, },

View File

@ -7,6 +7,9 @@ import { kubeObjectDetailItemInjectionToken } from "../kube-object-detail-item-i
import { computed } from "mobx"; import { computed } from "mobx";
import { RoleBindingDetails } from "../../../+user-management/+role-bindings"; import { RoleBindingDetails } from "../../../+user-management/+role-bindings";
import { kubeObjectMatchesToKindAndApiVersion } from "../kube-object-matches-to-kind-and-api-version"; import { kubeObjectMatchesToKindAndApiVersion } from "../kube-object-matches-to-kind-and-api-version";
import type {
KubeObjectDetailsItem,
} from "../../current-kube-object-in-details.injectable";
import currentKubeObjectInDetailsInjectable from "../../current-kube-object-in-details.injectable"; import currentKubeObjectInDetailsInjectable from "../../current-kube-object-in-details.injectable";
const roleBindingDetailItemInjectable = getInjectable({ const roleBindingDetailItemInjectable = getInjectable({
@ -17,7 +20,7 @@ const roleBindingDetailItemInjectable = getInjectable({
return { return {
Component: RoleBindingDetails, Component: RoleBindingDetails,
enabled: computed(() => isRoleBinding(kubeObject.value.get()?.object)), enabled: computed(() => isRoleBinding(kubeObject.get() as KubeObjectDetailsItem)),
orderNumber: 10, orderNumber: 10,
}; };
}, },

View File

@ -7,6 +7,9 @@ import { kubeObjectDetailItemInjectionToken } from "../kube-object-detail-item-i
import { computed } from "mobx"; import { computed } from "mobx";
import { RoleDetails } from "../../../+user-management/+roles"; import { RoleDetails } from "../../../+user-management/+roles";
import { kubeObjectMatchesToKindAndApiVersion } from "../kube-object-matches-to-kind-and-api-version"; import { kubeObjectMatchesToKindAndApiVersion } from "../kube-object-matches-to-kind-and-api-version";
import type {
KubeObjectDetailsItem,
} from "../../current-kube-object-in-details.injectable";
import currentKubeObjectInDetailsInjectable from "../../current-kube-object-in-details.injectable"; import currentKubeObjectInDetailsInjectable from "../../current-kube-object-in-details.injectable";
const roleDetailItemInjectable = getInjectable({ const roleDetailItemInjectable = getInjectable({
@ -17,7 +20,7 @@ const roleDetailItemInjectable = getInjectable({
return { return {
Component: RoleDetails, Component: RoleDetails,
enabled: computed(() => isRole(kubeObject.value.get()?.object)), enabled: computed(() => isRole(kubeObject.get() as KubeObjectDetailsItem)),
orderNumber: 10, orderNumber: 10,
}; };
}, },

View File

@ -7,6 +7,9 @@ import { kubeObjectDetailItemInjectionToken } from "../kube-object-detail-item-i
import { computed } from "mobx"; import { computed } from "mobx";
import { RuntimeClassesDetails } from "../../../+config-runtime-classes"; import { RuntimeClassesDetails } from "../../../+config-runtime-classes";
import { kubeObjectMatchesToKindAndApiVersion } from "../kube-object-matches-to-kind-and-api-version"; import { kubeObjectMatchesToKindAndApiVersion } from "../kube-object-matches-to-kind-and-api-version";
import type {
KubeObjectDetailsItem,
} from "../../current-kube-object-in-details.injectable";
import currentKubeObjectInDetailsInjectable from "../../current-kube-object-in-details.injectable"; import currentKubeObjectInDetailsInjectable from "../../current-kube-object-in-details.injectable";
const runtimeClassDetailItemInjectable = getInjectable({ const runtimeClassDetailItemInjectable = getInjectable({
@ -17,7 +20,7 @@ const runtimeClassDetailItemInjectable = getInjectable({
return { return {
Component: RuntimeClassesDetails, Component: RuntimeClassesDetails,
enabled: computed(() => isRuntimeClass(kubeObject.value.get()?.object)), enabled: computed(() => isRuntimeClass(kubeObject.get() as KubeObjectDetailsItem)),
orderNumber: 10, orderNumber: 10,
}; };
}, },

View File

@ -7,6 +7,9 @@ import { kubeObjectDetailItemInjectionToken } from "../kube-object-detail-item-i
import { computed } from "mobx"; import { computed } from "mobx";
import { SecretDetails } from "../../../+config-secrets"; import { SecretDetails } from "../../../+config-secrets";
import { kubeObjectMatchesToKindAndApiVersion } from "../kube-object-matches-to-kind-and-api-version"; import { kubeObjectMatchesToKindAndApiVersion } from "../kube-object-matches-to-kind-and-api-version";
import type {
KubeObjectDetailsItem,
} from "../../current-kube-object-in-details.injectable";
import currentKubeObjectInDetailsInjectable from "../../current-kube-object-in-details.injectable"; import currentKubeObjectInDetailsInjectable from "../../current-kube-object-in-details.injectable";
const secretsDetailItemInjectable = getInjectable({ const secretsDetailItemInjectable = getInjectable({
@ -17,7 +20,7 @@ const secretsDetailItemInjectable = getInjectable({
return { return {
Component: SecretDetails, Component: SecretDetails,
enabled: computed(() => isSecret(kubeObject.value.get()?.object)), enabled: computed(() => isSecret(kubeObject.get() as KubeObjectDetailsItem)),
orderNumber: 10, orderNumber: 10,
}; };
}, },

View File

@ -7,6 +7,9 @@ import { kubeObjectDetailItemInjectionToken } from "../kube-object-detail-item-i
import { computed } from "mobx"; import { computed } from "mobx";
import { ServiceAccountsDetails } from "../../../+user-management/+service-accounts"; import { ServiceAccountsDetails } from "../../../+user-management/+service-accounts";
import { kubeObjectMatchesToKindAndApiVersion } from "../kube-object-matches-to-kind-and-api-version"; import { kubeObjectMatchesToKindAndApiVersion } from "../kube-object-matches-to-kind-and-api-version";
import type {
KubeObjectDetailsItem,
} from "../../current-kube-object-in-details.injectable";
import currentKubeObjectInDetailsInjectable from "../../current-kube-object-in-details.injectable"; import currentKubeObjectInDetailsInjectable from "../../current-kube-object-in-details.injectable";
const serviceAccountDetailItemInjectable = getInjectable({ const serviceAccountDetailItemInjectable = getInjectable({
@ -17,7 +20,7 @@ const serviceAccountDetailItemInjectable = getInjectable({
return { return {
Component: ServiceAccountsDetails, Component: ServiceAccountsDetails,
enabled: computed(() => isServiceAccount(kubeObject.value.get()?.object)), enabled: computed(() => isServiceAccount(kubeObject.get() as KubeObjectDetailsItem)),
orderNumber: 10, orderNumber: 10,
}; };
}, },

View File

@ -7,6 +7,9 @@ import { kubeObjectDetailItemInjectionToken } from "../kube-object-detail-item-i
import { computed } from "mobx"; import { computed } from "mobx";
import { ServiceDetails } from "../../../+network-services"; import { ServiceDetails } from "../../../+network-services";
import { kubeObjectMatchesToKindAndApiVersion } from "../kube-object-matches-to-kind-and-api-version"; import { kubeObjectMatchesToKindAndApiVersion } from "../kube-object-matches-to-kind-and-api-version";
import type {
KubeObjectDetailsItem,
} from "../../current-kube-object-in-details.injectable";
import currentKubeObjectInDetailsInjectable from "../../current-kube-object-in-details.injectable"; import currentKubeObjectInDetailsInjectable from "../../current-kube-object-in-details.injectable";
const serviceDetailItemInjectable = getInjectable({ const serviceDetailItemInjectable = getInjectable({
@ -17,7 +20,7 @@ const serviceDetailItemInjectable = getInjectable({
return { return {
Component: ServiceDetails, Component: ServiceDetails,
enabled: computed(() => isService(kubeObject.value.get()?.object)), enabled: computed(() => isService(kubeObject.get() as KubeObjectDetailsItem)),
orderNumber: 10, orderNumber: 10,
}; };
}, },

View File

@ -7,6 +7,9 @@ import { kubeObjectDetailItemInjectionToken } from "../kube-object-detail-item-i
import { computed } from "mobx"; import { computed } from "mobx";
import { StatefulSetDetails } from "../../../+workloads-statefulsets"; import { StatefulSetDetails } from "../../../+workloads-statefulsets";
import { kubeObjectMatchesToKindAndApiVersion } from "../kube-object-matches-to-kind-and-api-version"; import { kubeObjectMatchesToKindAndApiVersion } from "../kube-object-matches-to-kind-and-api-version";
import type {
KubeObjectDetailsItem,
} from "../../current-kube-object-in-details.injectable";
import currentKubeObjectInDetailsInjectable from "../../current-kube-object-in-details.injectable"; import currentKubeObjectInDetailsInjectable from "../../current-kube-object-in-details.injectable";
const statefulSetDetailItemInjectable = getInjectable({ const statefulSetDetailItemInjectable = getInjectable({
@ -17,7 +20,7 @@ const statefulSetDetailItemInjectable = getInjectable({
return { return {
Component: StatefulSetDetails, Component: StatefulSetDetails,
enabled: computed(() => isStatefulSet(kubeObject.value.get()?.object)), enabled: computed(() => isStatefulSet(kubeObject.get() as KubeObjectDetailsItem)),
orderNumber: 10, orderNumber: 10,
}; };
}, },

View File

@ -7,6 +7,9 @@ import { kubeObjectDetailItemInjectionToken } from "../kube-object-detail-item-i
import { computed } from "mobx"; import { computed } from "mobx";
import { StorageClassDetails } from "../../../+storage-classes"; import { StorageClassDetails } from "../../../+storage-classes";
import { kubeObjectMatchesToKindAndApiVersion } from "../kube-object-matches-to-kind-and-api-version"; import { kubeObjectMatchesToKindAndApiVersion } from "../kube-object-matches-to-kind-and-api-version";
import type {
KubeObjectDetailsItem,
} from "../../current-kube-object-in-details.injectable";
import currentKubeObjectInDetailsInjectable from "../../current-kube-object-in-details.injectable"; import currentKubeObjectInDetailsInjectable from "../../current-kube-object-in-details.injectable";
const storageClassDetailItemInjectable = getInjectable({ const storageClassDetailItemInjectable = getInjectable({
@ -17,7 +20,7 @@ const storageClassDetailItemInjectable = getInjectable({
return { return {
Component: StorageClassDetails, Component: StorageClassDetails,
enabled: computed(() => isStorageClass(kubeObject.value.get()?.object)), enabled: computed(() => isStorageClass(kubeObject.get() as KubeObjectDetailsItem)),
orderNumber: 10, orderNumber: 10,
}; };
}, },

View File

@ -7,6 +7,9 @@ import { kubeObjectDetailItemInjectionToken } from "../kube-object-detail-item-i
import { VpaDetails } from "../../../+config-vertical-pod-autoscalers"; import { VpaDetails } from "../../../+config-vertical-pod-autoscalers";
import { computed } from "mobx"; import { computed } from "mobx";
import { kubeObjectMatchesToKindAndApiVersion } from "../kube-object-matches-to-kind-and-api-version"; import { kubeObjectMatchesToKindAndApiVersion } from "../kube-object-matches-to-kind-and-api-version";
import type {
KubeObjectDetailsItem,
} from "../../current-kube-object-in-details.injectable";
import currentKubeObjectInDetailsInjectable from "../../current-kube-object-in-details.injectable"; import currentKubeObjectInDetailsInjectable from "../../current-kube-object-in-details.injectable";
const verticalPodAutoscalerDetailItemInjectable = getInjectable({ const verticalPodAutoscalerDetailItemInjectable = getInjectable({
@ -17,7 +20,7 @@ const verticalPodAutoscalerDetailItemInjectable = getInjectable({
return { return {
Component: VpaDetails, Component: VpaDetails,
enabled: computed(() => isVerticalPodAutoscaler(kubeObject.value.get()?.object)), enabled: computed(() => isVerticalPodAutoscaler(kubeObject.get() as KubeObjectDetailsItem)),
orderNumber: 10, orderNumber: 10,
}; };
}, },

View File

@ -9,6 +9,9 @@ import type { LensRendererExtension } from "../../../../extensions/lens-renderer
import extensionShouldBeEnabledForClusterFrameInjectable from "../../../extension-loader/extension-should-be-enabled-for-cluster-frame.injectable"; import extensionShouldBeEnabledForClusterFrameInjectable from "../../../extension-loader/extension-should-be-enabled-for-cluster-frame.injectable";
import { kubeObjectDetailItemInjectionToken } from "./kube-object-detail-item-injection-token"; import { kubeObjectDetailItemInjectionToken } from "./kube-object-detail-item-injection-token";
import { extensionRegistratorInjectionToken } from "../../../../extensions/extension-loader/extension-registrator-injection-token"; import { extensionRegistratorInjectionToken } from "../../../../extensions/extension-loader/extension-registrator-injection-token";
import type {
KubeObjectDetailsItem,
} from "../current-kube-object-in-details.injectable";
import currentKubeObjectInDetailsInjectable from "../current-kube-object-in-details.injectable"; import currentKubeObjectInDetailsInjectable from "../current-kube-object-in-details.injectable";
import { kubeObjectMatchesToKindAndApiVersion } from "./kube-object-matches-to-kind-and-api-version"; import { kubeObjectMatchesToKindAndApiVersion } from "./kube-object-matches-to-kind-and-api-version";
@ -55,7 +58,7 @@ const kubeObjectDetailItemRegistratorInjectable = getInjectable({
return false; return false;
} }
if (!isRelevantKubeObject(kubeObject.value.get()?.object)) { if (!isRelevantKubeObject(kubeObject.get() as KubeObjectDetailsItem)) {
return false; return false;
} }

View File

@ -18,11 +18,10 @@ import hideDetailsInjectable from "../kube-detail-params/hide-details.injectable
import kubeObjectDetailItemsInjectable import kubeObjectDetailItemsInjectable
from "./kube-object-detail-items/kube-object-detail-items.injectable"; from "./kube-object-detail-items/kube-object-detail-items.injectable";
import type { import type {
KubeObjectDetailsItemComputed, KubeObjectDetailsItem,
} from "./current-kube-object-in-details.injectable"; KubeObjectDetailsComputedValue,
import {
currentKubeObjectInDetailsInjectable2,
} from "./current-kube-object-in-details.injectable"; } from "./current-kube-object-in-details.injectable";
import currentKubeObjectInDetailsInjectable from "./current-kube-object-in-details.injectable";
export interface KubeObjectDetailsProps<Kube extends KubeObject = KubeObject> { export interface KubeObjectDetailsProps<Kube extends KubeObject = KubeObject> {
className?: string; className?: string;
@ -31,7 +30,7 @@ export interface KubeObjectDetailsProps<Kube extends KubeObject = KubeObject> {
interface Dependencies { interface Dependencies {
detailComponents: IComputedValue<React.ElementType[]>; detailComponents: IComputedValue<React.ElementType[]>;
kubeObject: KubeObjectDetailsItemComputed; kubeObjectDetails: KubeObjectDetailsComputedValue;
hideDetails: HideDetails; hideDetails: HideDetails;
} }
@ -39,30 +38,38 @@ const NonInjectedKubeObjectDetails = observer((props: Dependencies) => {
const { const {
detailComponents, detailComponents,
hideDetails, hideDetails,
kubeObject, kubeObjectDetails,
} = props; } = props;
const object = kubeObject.get(); const kubeObject = kubeObjectDetails.get();
const isError = kubeObject instanceof Error;
const isLoading = !kubeObject && !isError;
const title = (kubeObject instanceof KubeObject)
? `${kubeObject.kind}: ${kubeObject.getName()}`
: "KubeResourceDetails";
return ( return (
<Drawer <Drawer
className="KubeObjectDetails flex column" className="KubeObjectDetails flex column"
open={!!object} open={!!kubeObject}
title={ title={title}
object instanceof KubeObject ? `${object.kind}: ${object.getName()}` : "" toolbar={kubeObject &&
} <KubeObjectMenu object={kubeObject as KubeObjectDetailsItem} toolbar />}
toolbar={object && <KubeObjectMenu object={object as KubeObject} toolbar />}
onClose={hideDetails} onClose={hideDetails}
> >
{!object && <Spinner center />} {isLoading && <Spinner center />}
{object instanceof Error && (
{isError ? (
<div className="box center"> <div className="box center">
Resource loading has failed: Resource loading has failed:
<b>{object}</b> {" "}
<b>{String(kubeObject)}</b>
</div> </div>
) : (
kubeObject && detailComponents.get()
.map((Component, index) => <Component key={index} object={kubeObject} />)
)} )}
{object && detailComponents.get()
.map((Component, index) => <Component key={index} object={object} />)}
</Drawer> </Drawer>
); );
}); });
@ -72,6 +79,6 @@ export const KubeObjectDetails = withInjectables<Dependencies>(NonInjectedKubeOb
...props, ...props,
hideDetails: di.inject(hideDetailsInjectable), hideDetails: di.inject(hideDetailsInjectable),
detailComponents: di.inject(kubeObjectDetailItemsInjectable), detailComponents: di.inject(kubeObjectDetailItemsInjectable),
kubeObject: di.inject(currentKubeObjectInDetailsInjectable2), kubeObjectDetails: di.inject(currentKubeObjectInDetailsInjectable),
}), }),
}); });