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

chore: Fix type errors with KubeObjectDetails

Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
Sebastian Malton 2023-05-03 11:23:00 -04:00
parent d8d6403b32
commit f3b1bc565c
41 changed files with 252 additions and 317 deletions

View File

@ -9,17 +9,10 @@ import React from "react";
import { observer } from "mobx-react";
import { DrawerItem } from "../drawer";
import type { KubeObjectDetailsProps } from "../kube-object-details";
import { Lease } from "@k8slens/kube-object";
import type { Lease } from "@k8slens/kube-object";
@observer
export class LeaseDetails extends React.Component<KubeObjectDetailsProps> {
render() {
const { object: lease } = this.props;
if (!(lease instanceof Lease)) {
return null;
}
export const LeaseDetails = observer((props: KubeObjectDetailsProps) => {
const lease = props.object as Lease;
return (
<div className="LeaseDetails">
@ -42,8 +35,6 @@ export class LeaseDetails extends React.Component<KubeObjectDetailsProps> {
<DrawerItem name="Renew Time">
{lease.getRenewTime()}
</DrawerItem>
</div >
);
}
}
});

View File

@ -6,17 +6,11 @@ import React from "react";
import { observer } from "mobx-react";
import { DrawerItem, DrawerTitle } from "../drawer";
import type { KubeObjectDetailsProps } from "../kube-object-details";
import { MutatingWebhookConfiguration } from "@k8slens/kube-object";
import type { MutatingWebhookConfiguration } from "@k8slens/kube-object";
import { WebhookConfig } from "./webhook-config";
@observer
export class MutatingWebhookDetails extends React.Component<KubeObjectDetailsProps> {
render() {
const { object: webhookConfig } = this.props;
if (!(webhookConfig instanceof MutatingWebhookConfiguration)) {
return null;
}
export const MutatingWebhookDetails = observer((props: KubeObjectDetailsProps) => {
const webhookConfig = props.object as MutatingWebhookConfiguration;
return (
<div className="MutatingWebhookDetails">
@ -32,5 +26,4 @@ export class MutatingWebhookDetails extends React.Component<KubeObjectDetailsPro
))}
</div >
);
}
}
});

View File

@ -10,20 +10,11 @@ import { observer } from "mobx-react";
import { DrawerItem } from "../drawer";
import { Badge } from "../badge";
import type { KubeObjectDetailsProps } from "../kube-object-details";
import { PodDisruptionBudget } from "@k8slens/kube-object";
import type { PodDisruptionBudget } from "@k8slens/kube-object";
export const PodDisruptionBudgetDetails = observer((props: KubeObjectDetailsProps) => {
const { object: pdb } = props;
if (!pdb) {
return null;
}
if (!(pdb instanceof PodDisruptionBudget)) {
return null;
}
const selectors = pdb.getSelectors();
const podDisruptionBudget = props.object as PodDisruptionBudget;
const selectors = podDisruptionBudget.getSelectors();
return (
<div className="PdbDetails">
@ -34,21 +25,20 @@ export const PodDisruptionBudgetDetails = observer((props: KubeObjectDetailsProp
)}
<DrawerItem name="Min Available">
{pdb.getMinAvailable()}
{podDisruptionBudget.getMinAvailable()}
</DrawerItem>
<DrawerItem name="Max Unavailable">
{pdb.getMaxUnavailable()}
{podDisruptionBudget.getMaxUnavailable()}
</DrawerItem>
<DrawerItem name="Current Healthy">
{pdb.getCurrentHealthy()}
{podDisruptionBudget.getCurrentHealthy()}
</DrawerItem>
<DrawerItem name="Desired Healthy">
{pdb.getDesiredHealthy()}
{podDisruptionBudget.getDesiredHealthy()}
</DrawerItem>
</div>
);
});

View File

@ -9,35 +9,24 @@ import React from "react";
import { observer } from "mobx-react";
import { DrawerItem } from "../drawer";
import type { KubeObjectDetailsProps } from "../kube-object-details";
import { PriorityClass } from "@k8slens/kube-object";
import type { PriorityClass } from "@k8slens/kube-object";
@observer
export class PriorityClassesDetails extends React.Component<KubeObjectDetailsProps> {
render() {
const { object: pc } = this.props;
if (!pc) {
return null;
}
if (!(pc instanceof PriorityClass)) {
return null;
}
export const PriorityClassesDetails = observer((props: KubeObjectDetailsProps) => {
const priorityClass = props.object as PriorityClass;
return (
<div className="PriorityClassesDetails">
<DrawerItem name="Description">
{pc.getDescription()}
{priorityClass.getDescription()}
</DrawerItem>
<DrawerItem name="Value">
{pc.getValue()}
{priorityClass.getValue()}
</DrawerItem>
<DrawerItem name="Global Default">
{pc.getGlobalDefault()}
{priorityClass.getGlobalDefault()}
</DrawerItem>
</div>
);
}
}
});

View File

@ -9,43 +9,31 @@ import React from "react";
import { observer } from "mobx-react";
import { DrawerItem } from "../drawer";
import type { KubeObjectDetailsProps } from "../kube-object-details";
import { RuntimeClass } from "@k8slens/kube-object";
import type { RuntimeClass } from "@k8slens/kube-object";
import { Badge } from "../badge";
import { RuntimeClassDetailsTolerations } from "./runtime-classes-details-tolerations";
@observer
export class RuntimeClassesDetails extends React.Component<KubeObjectDetailsProps> {
export type RuntimeClassesDetailsProps = KubeObjectDetailsProps<RuntimeClass>;
render() {
const { object: rc } = this.props;
if (!rc) {
return null;
}
if (!(rc instanceof RuntimeClass)) {
return null;
}
const nodeSelector = rc.getNodeSelectors();
export const RuntimeClassesDetails = observer((props: KubeObjectDetailsProps) => {
const runtimeClass = props.object as RuntimeClass;
const nodeSelector = runtimeClass.getNodeSelectors();
return (
<div className="RuntimeClassesDetails">
<DrawerItem name="Handler">
{rc.getHandler()}
{runtimeClass.getHandler()}
</DrawerItem>
<DrawerItem name="Pod Fixed" hidden={rc.getPodFixed() === ""}>
{rc.getPodFixed()}
<DrawerItem name="Pod Fixed" hidden={runtimeClass.getPodFixed() === ""}>
{runtimeClass.getPodFixed()}
</DrawerItem>
<DrawerItem name="Node Selector" hidden={nodeSelector.length === 0}>
{nodeSelector.map(label => <Badge key={label} label={label} />)}
</DrawerItem>
<RuntimeClassDetailsTolerations runtimeClass={rc} />
<RuntimeClassDetailsTolerations runtimeClass={runtimeClass} />
</div>
);
}
}
});

View File

@ -2,20 +2,14 @@
* 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 { RuntimeClasses } from "./runtime-classes";
import runtimeClassesRouteInjectable from "../../../common/front-end-routing/routes/cluster/config/runtime-classes/runtime-classes-route.injectable";
import { routeSpecificComponentInjectionToken } from "../../routes/route-specific-component-injection-token";
import { getRouteSpecificComponentInjectable } from "../../routes/route-specific-component-injection-token";
const runtimeClassesRouteComponentInjectable = getInjectable({
const runtimeClassesRouteComponentInjectable = getRouteSpecificComponentInjectable({
id: "runtime-classes-route-component",
instantiate: (di) => ({
route: di.inject(runtimeClassesRouteInjectable),
routeInjectable: runtimeClassesRouteInjectable,
Component: RuntimeClasses,
}),
injectionToken: routeSpecificComponentInjectionToken,
});
export default runtimeClassesRouteComponentInjectable;

View File

@ -7,20 +7,10 @@ import { observer } from "mobx-react";
import { DrawerItem, DrawerTitle } from "../drawer";
import type { KubeObjectDetailsProps } from "../kube-object-details";
import { WebhookConfig } from "../config-mutating-webhook-configurations/webhook-config";
import { ValidatingWebhookConfiguration } from "@k8slens/kube-object";
import type { ValidatingWebhookConfiguration } from "@k8slens/kube-object";
@observer
export class ValidatingWebhookDetails extends React.Component<KubeObjectDetailsProps> {
render() {
const { object: webhookConfig } = this.props;
if (!webhookConfig) {
return null;
}
if (!(webhookConfig instanceof ValidatingWebhookConfiguration)) {
return null;
}
export const ValidatingWebhookDetails = observer((props: KubeObjectDetailsProps) => {
const webhookConfig = props.object as ValidatingWebhookConfiguration;
return (
<div className="ValidatingWebhookDetails">
@ -36,5 +26,4 @@ export class ValidatingWebhookDetails extends React.Component<KubeObjectDetailsP
))}
</div >
);
}
}
});

View File

@ -3,6 +3,7 @@
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import type { KubeObjectDetailItem } from "../kube-object-detail-item-injection-token";
import { kubeObjectDetailItemInjectionToken } from "../kube-object-detail-item-injection-token";
import { computed } from "mobx";
import { ClusterRoleBindingDetails } from "../../../user-management/cluster-role-bindings";
@ -19,7 +20,7 @@ const clusterRoleBindingDetailItemInjectable = getInjectable({
Component: ClusterRoleBindingDetails,
enabled: computed(() => isClusterRoleBinding(kubeObject.value.get()?.object)),
orderNumber: 10,
};
} as KubeObjectDetailItem;
},
injectionToken: kubeObjectDetailItemInjectionToken,

View File

@ -3,6 +3,7 @@
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import type { KubeObjectDetailItem } from "../kube-object-detail-item-injection-token";
import { kubeObjectDetailItemInjectionToken } from "../kube-object-detail-item-injection-token";
import { computed } from "mobx";
import { ConfigMapDetails } from "../../../config-maps";
@ -19,7 +20,7 @@ const configMapDetailItemInjectable = getInjectable({
Component: ConfigMapDetails,
enabled: computed(() => isConfigMap(kubeObject.value.get()?.object)),
orderNumber: 10,
};
} as KubeObjectDetailItem;
},
injectionToken: kubeObjectDetailItemInjectionToken,

View File

@ -3,6 +3,7 @@
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import type { KubeObjectDetailItem } from "../kube-object-detail-item-injection-token";
import { kubeObjectDetailItemInjectionToken } from "../kube-object-detail-item-injection-token";
import { computed } from "mobx";
import { CronJobDetails } from "../../../workloads-cronjobs";
@ -19,7 +20,7 @@ const cronJobDetailItemInjectable = getInjectable({
Component: CronJobDetails,
enabled: computed(() => isCronJob(kubeObject.value.get()?.object)),
orderNumber: 10,
};
} as KubeObjectDetailItem;
},
injectionToken: kubeObjectDetailItemInjectionToken,

View File

@ -3,6 +3,7 @@
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import type { KubeObjectDetailItem } from "../kube-object-detail-item-injection-token";
import { kubeObjectDetailItemInjectionToken } from "../kube-object-detail-item-injection-token";
import { computed } from "mobx";
import { CustomResourceDefinitionDetails } from "../../../custom-resource-definitions/details";
@ -19,7 +20,7 @@ const customResourceDefinitionsDetailItemInjectable = getInjectable({
Component: CustomResourceDefinitionDetails,
enabled: computed(() => isCustomResourceDefinition(kubeObject.value.get()?.object)),
orderNumber: 10,
};
} as KubeObjectDetailItem;
},
injectionToken: kubeObjectDetailItemInjectionToken,

View File

@ -3,6 +3,7 @@
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import type { KubeObjectDetailItem } from "../kube-object-detail-item-injection-token";
import { kubeObjectDetailItemInjectionToken } from "../kube-object-detail-item-injection-token";
import { computed } from "mobx";
import { DaemonSetDetails } from "../../../workloads-daemonsets";
@ -19,7 +20,7 @@ const daemonSetDetailItemInjectable = getInjectable({
Component: DaemonSetDetails,
enabled: computed(() => isDaemonSet(kubeObject.value.get()?.object)),
orderNumber: 10,
};
} as KubeObjectDetailItem;
},
injectionToken: kubeObjectDetailItemInjectionToken,

View File

@ -3,6 +3,7 @@
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import type { KubeObjectDetailItem } from "../kube-object-detail-item-injection-token";
import { kubeObjectDetailItemInjectionToken } from "../kube-object-detail-item-injection-token";
import { computed } from "mobx";
import { DeploymentDetails } from "../../../workloads-deployments";
@ -19,7 +20,7 @@ const deploymentDetailItemInjectable = getInjectable({
Component: DeploymentDetails,
enabled: computed(() => isDeployment(kubeObject.value.get()?.object)),
orderNumber: 10,
};
} as KubeObjectDetailItem;
},
injectionToken: kubeObjectDetailItemInjectionToken,

View File

@ -3,6 +3,7 @@
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import type { KubeObjectDetailItem } from "../kube-object-detail-item-injection-token";
import { kubeObjectDetailItemInjectionToken } from "../kube-object-detail-item-injection-token";
import { computed } from "mobx";
import { EndpointsDetails } from "../../../network-endpoints";
@ -19,7 +20,7 @@ const endpointsDetailItemInjectable = getInjectable({
Component: EndpointsDetails,
enabled: computed(() => isEndpoint(kubeObject.value.get()?.object)),
orderNumber: 10,
};
} as KubeObjectDetailItem;
},
injectionToken: kubeObjectDetailItemInjectionToken,

View File

@ -3,6 +3,7 @@
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import type { KubeObjectDetailItem } from "../kube-object-detail-item-injection-token";
import { kubeObjectDetailItemInjectionToken } from "../kube-object-detail-item-injection-token";
import { computed } from "mobx";
import { EventDetails } from "../../../events";
@ -19,7 +20,7 @@ const eventsDetailItemInjectable = getInjectable({
Component: EventDetails,
enabled: computed(() => isEvent(kubeObject.value.get()?.object)),
orderNumber: 10,
};
} as KubeObjectDetailItem;
},
injectionToken: kubeObjectDetailItemInjectionToken,

View File

@ -3,6 +3,7 @@
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import type { KubeObjectDetailItem } from "../kube-object-detail-item-injection-token";
import { kubeObjectDetailItemInjectionToken } from "../kube-object-detail-item-injection-token";
import { HorizontalPodAutoscalerDetails } from "../../../config-horizontal-pod-autoscalers";
import { computed } from "mobx";
@ -19,7 +20,7 @@ const horizontalPodAutoscalerDetailItemInjectable = getInjectable({
Component: HorizontalPodAutoscalerDetails,
enabled: computed(() => isHorizontalPodAutoscaler(kubeObject.value.get()?.object)),
orderNumber: 10,
};
} as KubeObjectDetailItem;
},
injectionToken: kubeObjectDetailItemInjectionToken,

View File

@ -3,6 +3,7 @@
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import type { KubeObjectDetailItem } from "../kube-object-detail-item-injection-token";
import { kubeObjectDetailItemInjectionToken } from "../kube-object-detail-item-injection-token";
import { computed } from "mobx";
import { IngressDetails } from "../../../network-ingresses";
@ -19,7 +20,7 @@ const ingressDetailItemInjectable = getInjectable({
Component: IngressDetails,
enabled: computed(() => isIngress(kubeObject.value.get()?.object)),
orderNumber: 10,
};
} as KubeObjectDetailItem;
},
injectionToken: kubeObjectDetailItemInjectionToken,

View File

@ -3,6 +3,7 @@
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import type { KubeObjectDetailItem } from "../kube-object-detail-item-injection-token";
import { kubeObjectDetailItemInjectionToken } from "../kube-object-detail-item-injection-token";
import { computed } from "mobx";
import { JobDetails } from "../../../workloads-jobs";
@ -19,7 +20,7 @@ const jobDetailItemInjectable = getInjectable({
Component: JobDetails,
enabled: computed(() => isJob(kubeObject.value.get()?.object)),
orderNumber: 10,
};
} as KubeObjectDetailItem;
},
injectionToken: kubeObjectDetailItemInjectionToken,

View File

@ -3,6 +3,7 @@
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import type { KubeObjectDetailItem } from "../kube-object-detail-item-injection-token";
import { kubeObjectDetailItemInjectionToken } from "../kube-object-detail-item-injection-token";
import { computed } from "mobx";
import { LimitRangeDetails } from "../../../config-limit-ranges";
@ -19,7 +20,7 @@ const limitRangeDetailItemInjectable = getInjectable({
Component: LimitRangeDetails,
enabled: computed(() => isLimitRange(kubeObject.value.get()?.object)),
orderNumber: 10,
};
} as KubeObjectDetailItem;
},
injectionToken: kubeObjectDetailItemInjectionToken,

View File

@ -3,6 +3,7 @@
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import type { KubeObjectDetailItem } from "../kube-object-detail-item-injection-token";
import { kubeObjectDetailItemInjectionToken } from "../kube-object-detail-item-injection-token";
import { computed } from "mobx";
import { NamespaceDetails } from "../../../namespaces";
@ -19,7 +20,7 @@ const namespacesDetailItemInjectable = getInjectable({
Component: NamespaceDetails,
enabled: computed(() => isNamespace(kubeObject.value.get()?.object)),
orderNumber: 10,
};
} as KubeObjectDetailItem;
},
injectionToken: kubeObjectDetailItemInjectionToken,

View File

@ -3,6 +3,7 @@
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import type { KubeObjectDetailItem } from "../kube-object-detail-item-injection-token";
import { kubeObjectDetailItemInjectionToken } from "../kube-object-detail-item-injection-token";
import { computed } from "mobx";
import { NetworkPolicyDetails } from "../../../network-policies";
@ -19,7 +20,7 @@ const networkPolicyDetailItemInjectable = getInjectable({
Component: NetworkPolicyDetails,
enabled: computed(() => isNetworkPolicy(kubeObject.value.get()?.object)),
orderNumber: 10,
};
} as KubeObjectDetailItem;
},
injectionToken: kubeObjectDetailItemInjectionToken,

View File

@ -3,6 +3,7 @@
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import type { KubeObjectDetailItem } from "../kube-object-detail-item-injection-token";
import { kubeObjectDetailItemInjectionToken } from "../kube-object-detail-item-injection-token";
import { computed } from "mobx";
import { NodeDetails } from "../../../nodes/details";
@ -19,7 +20,7 @@ const nodeDetailItemInjectable = getInjectable({
Component: NodeDetails,
enabled: computed(() => isNode(kubeObject.value.get()?.object)),
orderNumber: 10,
};
} as KubeObjectDetailItem;
},
injectionToken: kubeObjectDetailItemInjectionToken,

View File

@ -3,6 +3,7 @@
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import type { KubeObjectDetailItem } from "../kube-object-detail-item-injection-token";
import { kubeObjectDetailItemInjectionToken } from "../kube-object-detail-item-injection-token";
import { computed } from "mobx";
import { PersistentVolumeClaimDetails } from "../../../storage-volume-claims";
@ -19,7 +20,7 @@ const persistentVolumeClaimDetailItemInjectable = getInjectable({
Component: PersistentVolumeClaimDetails,
enabled: computed(() => isPersistentVolumeClaim(kubeObject.value.get()?.object)),
orderNumber: 10,
};
} as KubeObjectDetailItem;
},
injectionToken: kubeObjectDetailItemInjectionToken,

View File

@ -3,6 +3,7 @@
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import type { KubeObjectDetailItem } from "../kube-object-detail-item-injection-token";
import { kubeObjectDetailItemInjectionToken } from "../kube-object-detail-item-injection-token";
import { computed } from "mobx";
import { PersistentVolumeDetails } from "../../../storage-volumes";
@ -19,7 +20,7 @@ const persistentVolumeDetailItemInjectable = getInjectable({
Component: PersistentVolumeDetails,
enabled: computed(() => isPersistentVolume(kubeObject.value.get()?.object)),
orderNumber: 10,
};
} as KubeObjectDetailItem;
},
injectionToken: kubeObjectDetailItemInjectionToken,

View File

@ -3,6 +3,7 @@
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import type { KubeObjectDetailItem } from "../kube-object-detail-item-injection-token";
import { kubeObjectDetailItemInjectionToken } from "../kube-object-detail-item-injection-token";
import { computed } from "mobx";
import { PodDetails } from "../../../workloads-pods";
@ -19,7 +20,7 @@ const podDetailItemInjectable = getInjectable({
Component: PodDetails,
enabled: computed(() => isPod(kubeObject.value.get()?.object)),
orderNumber: 10,
};
} as KubeObjectDetailItem;
},
injectionToken: kubeObjectDetailItemInjectionToken,

View File

@ -3,6 +3,7 @@
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import type { KubeObjectDetailItem } from "../kube-object-detail-item-injection-token";
import { kubeObjectDetailItemInjectionToken } from "../kube-object-detail-item-injection-token";
import { computed } from "mobx";
import { PodSecurityPolicyDetails } from "../../../pod-security-policies";
@ -19,7 +20,7 @@ const podSecurityPolicyDetailItemInjectable = getInjectable({
Component: PodSecurityPolicyDetails,
enabled: computed(() => isPodSecurityPolicy(kubeObject.value.get()?.object)),
orderNumber: 10,
};
} as KubeObjectDetailItem;
},
injectionToken: kubeObjectDetailItemInjectionToken,

View File

@ -3,6 +3,7 @@
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import type { KubeObjectDetailItem } from "../kube-object-detail-item-injection-token";
import { kubeObjectDetailItemInjectionToken } from "../kube-object-detail-item-injection-token";
import { computed } from "mobx";
import { ReplicaSetDetails } from "../../../workloads-replicasets";
@ -19,7 +20,7 @@ const replicaSetDetailItemInjectable = getInjectable({
Component: ReplicaSetDetails,
enabled: computed(() => isReplicaSet(kubeObject.value.get()?.object)),
orderNumber: 10,
};
} as KubeObjectDetailItem;
},
injectionToken: kubeObjectDetailItemInjectionToken,

View File

@ -3,6 +3,7 @@
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import type { KubeObjectDetailItem } from "../kube-object-detail-item-injection-token";
import { kubeObjectDetailItemInjectionToken } from "../kube-object-detail-item-injection-token";
import { computed } from "mobx";
import { kubeObjectMatchesToKindAndApiVersion } from "../kube-object-matches-to-kind-and-api-version";
@ -19,7 +20,7 @@ const replicationControllerDetailItemInjectable = getInjectable({
Component: ReplicationControllerDetails,
enabled: computed(() => isReplicationController(kubeObject.value.get()?.object)),
orderNumber: 10,
};
} as KubeObjectDetailItem;
},
injectionToken: kubeObjectDetailItemInjectionToken,

View File

@ -3,6 +3,7 @@
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import type { KubeObjectDetailItem } from "../kube-object-detail-item-injection-token";
import { kubeObjectDetailItemInjectionToken } from "../kube-object-detail-item-injection-token";
import { computed } from "mobx";
import { ResourceQuotaDetails } from "../../../config-resource-quotas";
@ -19,7 +20,7 @@ const resourceQuotaDetailItemInjectable = getInjectable({
Component: ResourceQuotaDetails,
enabled: computed(() => isResourceQuota(kubeObject.value.get()?.object)),
orderNumber: 10,
};
} as KubeObjectDetailItem;
},
injectionToken: kubeObjectDetailItemInjectionToken,

View File

@ -3,6 +3,7 @@
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import type { KubeObjectDetailItem } from "../kube-object-detail-item-injection-token";
import { kubeObjectDetailItemInjectionToken } from "../kube-object-detail-item-injection-token";
import { computed } from "mobx";
import { RoleBindingDetails } from "../../../user-management/role-bindings";
@ -19,7 +20,7 @@ const roleBindingDetailItemInjectable = getInjectable({
Component: RoleBindingDetails,
enabled: computed(() => isRoleBinding(kubeObject.value.get()?.object)),
orderNumber: 10,
};
} as KubeObjectDetailItem;
},
injectionToken: kubeObjectDetailItemInjectionToken,

View File

@ -3,6 +3,7 @@
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import type { KubeObjectDetailItem } from "../kube-object-detail-item-injection-token";
import { kubeObjectDetailItemInjectionToken } from "../kube-object-detail-item-injection-token";
import { computed } from "mobx";
import { SecretDetails } from "../../../config-secrets";
@ -19,7 +20,7 @@ const secretsDetailItemInjectable = getInjectable({
Component: SecretDetails,
enabled: computed(() => isSecret(kubeObject.value.get()?.object)),
orderNumber: 10,
};
} as KubeObjectDetailItem;
},
injectionToken: kubeObjectDetailItemInjectionToken,

View File

@ -3,6 +3,7 @@
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import type { KubeObjectDetailItem } from "../kube-object-detail-item-injection-token";
import { kubeObjectDetailItemInjectionToken } from "../kube-object-detail-item-injection-token";
import { computed } from "mobx";
import { ServiceAccountsDetails } from "../../../user-management/service-accounts";
@ -19,7 +20,7 @@ const serviceAccountDetailItemInjectable = getInjectable({
Component: ServiceAccountsDetails,
enabled: computed(() => isServiceAccount(kubeObject.value.get()?.object)),
orderNumber: 10,
};
} as KubeObjectDetailItem;
},
injectionToken: kubeObjectDetailItemInjectionToken,

View File

@ -3,6 +3,7 @@
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import type { KubeObjectDetailItem } from "../kube-object-detail-item-injection-token";
import { kubeObjectDetailItemInjectionToken } from "../kube-object-detail-item-injection-token";
import { computed } from "mobx";
import { ServiceDetails } from "../../../network-services";
@ -19,7 +20,7 @@ const serviceDetailItemInjectable = getInjectable({
Component: ServiceDetails,
enabled: computed(() => isService(kubeObject.value.get()?.object)),
orderNumber: 10,
};
} as KubeObjectDetailItem;
},
injectionToken: kubeObjectDetailItemInjectionToken,

View File

@ -3,6 +3,7 @@
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import type { KubeObjectDetailItem } from "../kube-object-detail-item-injection-token";
import { kubeObjectDetailItemInjectionToken } from "../kube-object-detail-item-injection-token";
import { computed } from "mobx";
import { StatefulSetDetails } from "../../../workloads-statefulsets";
@ -19,7 +20,7 @@ const statefulSetDetailItemInjectable = getInjectable({
Component: StatefulSetDetails,
enabled: computed(() => isStatefulSet(kubeObject.value.get()?.object)),
orderNumber: 10,
};
} as KubeObjectDetailItem;
},
injectionToken: kubeObjectDetailItemInjectionToken,

View File

@ -3,6 +3,7 @@
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import type { KubeObjectDetailItem } from "../kube-object-detail-item-injection-token";
import { kubeObjectDetailItemInjectionToken } from "../kube-object-detail-item-injection-token";
import { computed } from "mobx";
import { StorageClassDetails } from "../../../storage-classes";
@ -19,7 +20,7 @@ const storageClassDetailItemInjectable = getInjectable({
Component: StorageClassDetails,
enabled: computed(() => isStorageClass(kubeObject.value.get()?.object)),
orderNumber: 10,
};
} as KubeObjectDetailItem;
},
injectionToken: kubeObjectDetailItemInjectionToken,

View File

@ -3,6 +3,7 @@
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import type { KubeObjectDetailItem } from "../kube-object-detail-item-injection-token";
import { kubeObjectDetailItemInjectionToken } from "../kube-object-detail-item-injection-token";
import { VpaDetails } from "../../../config-vertical-pod-autoscalers";
import { computed } from "mobx";
@ -19,7 +20,7 @@ const verticalPodAutoscalerDetailItemInjectable = getInjectable({
Component: VpaDetails,
enabled: computed(() => isVerticalPodAutoscaler(kubeObject.value.get()?.object)),
orderNumber: 10,
};
} as KubeObjectDetailItem;
},
injectionToken: kubeObjectDetailItemInjectionToken,

View File

@ -28,7 +28,7 @@ export const getMetricsKubeObjectDetailItemInjectable = getInjectable({
Component: (props) => <DetailsMetricsContainer metrics={metrics} {...props} />,
enabled: di.inject(metricsDetailsComponentEnabledInjectable, metricResourceType),
orderNumber: -1,
};
} as KubeObjectDetailItem;
};
},
});

View File

@ -53,7 +53,7 @@ class NonInjectedClusterRoleBindingDetails extends React.Component<KubeObjectDet
const { selectedSubjects } = this;
openConfirmDialog({
ok: () => clusterRoleBindingStore.removeSubjects(clusterRoleBinding, selectedSubjects),
ok: () => void clusterRoleBindingStore.removeSubjects(clusterRoleBinding, selectedSubjects),
labelOk: `Remove`,
message: (
<p>

View File

@ -10,28 +10,16 @@ import React from "react";
import { DrawerTitle } from "../../drawer";
import type { KubeObjectDetailsProps } from "../../kube-object-details";
import { ClusterRole } from "@k8slens/kube-object";
@observer
export class ClusterRoleDetails extends React.Component<KubeObjectDetailsProps> {
render() {
const { object: clusterRole } = this.props;
if (!clusterRole) {
return null;
}
if (!(clusterRole instanceof ClusterRole)) {
return null;
}
import type { ClusterRole } from "@k8slens/kube-object";
export const ClusterRoleDetails = observer((props: KubeObjectDetailsProps) => {
const clusterRole = props.object as ClusterRole;
const rules = clusterRole.getRules();
return (
<div className="ClusterRoleDetails">
<DrawerTitle>Rules</DrawerTitle>
{rules.map(({ resourceNames, apiGroups, resources, verbs }, index) => {
return (
{rules.map(({ resourceNames, apiGroups, resources, verbs }, index) => (
<div className="rule" key={index}>
{resources && (
<>
@ -51,8 +39,7 @@ export class ClusterRoleDetails extends React.Component<KubeObjectDetailsProps>
<div className="value">
{apiGroups
.map(apiGroup => apiGroup === "" ? `'${apiGroup}'` : apiGroup)
.join(", ")
}
.join(", ")}
</div>
</>
)}
@ -63,9 +50,7 @@ export class ClusterRoleDetails extends React.Component<KubeObjectDetailsProps>
</>
)}
</div>
);
})}
))}
</div>
);
}
}
});

View File

@ -46,7 +46,7 @@ class NonInjectedRoleBindingDetails extends React.Component<KubeObjectDetailsPro
const { selectedSubjects } = this;
openConfirmDialog({
ok: () => roleBindingStore.removeSubjects(roleBinding, selectedSubjects.toJSON()),
ok: () => void roleBindingStore.removeSubjects(roleBinding, selectedSubjects.toJSON()),
labelOk: `Remove`,
message: (
<p>

View File

@ -8,30 +8,19 @@ import "./details.scss";
import { observer } from "mobx-react";
import React from "react";
import { Role } from "@k8slens/kube-object";
import type { Role } from "@k8slens/kube-object";
import { DrawerTitle } from "../../drawer";
import type { KubeObjectDetailsProps } from "../../kube-object-details";
@observer
export class RoleDetails extends React.Component<KubeObjectDetailsProps> {
render() {
const { object: role } = this.props;
if (!role) {
return null;
}
if (!(role instanceof Role)) {
return null;
}
export const RoleDetails = observer((props: KubeObjectDetailsProps) => {
const role = props.object as Role;
const rules = role.getRules();
return (
<div className="RoleDetails">
<DrawerTitle>Rules</DrawerTitle>
{rules.map(({ resourceNames, apiGroups, resources, verbs }, index) => {
return (
{rules.map(({ resourceNames, apiGroups, resources, verbs }, index) => (
<div className="rule" key={index}>
{resources && (
<>
@ -51,8 +40,7 @@ export class RoleDetails extends React.Component<KubeObjectDetailsProps> {
<div className="value">
{apiGroups
.map(apiGroup => apiGroup === "" ? `'${apiGroup}'` : apiGroup)
.join(", ")
}
.join(", ")}
</div>
</>
)}
@ -63,9 +51,8 @@ export class RoleDetails extends React.Component<KubeObjectDetailsProps> {
</>
)}
</div>
);
})}
))}
</div>
);
}
}
});