From fb74859f66eda1caf9d36136259cdefa0f3763a5 Mon Sep 17 00:00:00 2001 From: Sebastian Malton Date: Tue, 3 Aug 2021 17:39:29 -0400 Subject: [PATCH] Split KubeObject related components into seperate folders (#3533) --- src/extensions/renderer-api/components.ts | 6 +- src/extensions/renderer-api/navigation.ts | 2 +- .../+apps-releases/release-details.tsx | 2 +- .../+apps-releases/release-menu.tsx | 2 +- .../components/+cluster/cluster-issues.tsx | 2 +- .../+config-autoscalers/hpa-details.tsx | 5 +- .../components/+config-autoscalers/hpa.tsx | 2 +- .../limit-range-details.tsx | 4 +- .../+config-limit-ranges/limit-ranges.tsx | 2 +- .../+config-maps/config-map-details.tsx | 4 +- .../components/+config-maps/config-maps.tsx | 2 +- .../pod-disruption-budgets-details.tsx | 4 +- .../pod-disruption-budgets.tsx | 3 +- .../resource-quota-details.tsx | 4 +- .../resource-quotas.tsx | 2 +- .../+config-secrets/add-secret-dialog.tsx | 2 +- .../+config-secrets/secret-details.tsx | 4 +- .../components/+config-secrets/secrets.tsx | 2 +- .../+custom-resources/crd-details.tsx | 4 +- .../components/+custom-resources/crd-list.tsx | 4 +- .../crd-resource-details.tsx | 4 +- .../+custom-resources/crd-resources.tsx | 2 +- .../components/+events/event-details.tsx | 5 +- src/renderer/components/+events/events.tsx | 5 +- .../+namespaces/namespace-details.tsx | 5 +- .../components/+namespaces/namespaces.tsx | 2 +- .../+network-endpoints/endpoint-details.tsx | 4 +- .../endpoint-subset-list.tsx | 2 +- .../+network-endpoints/endpoints.tsx | 2 +- .../+network-ingresses/ingress-details.tsx | 4 +- .../+network-ingresses/ingresses.tsx | 2 +- .../+network-policies/network-policies.tsx | 2 +- .../network-policy-details.tsx | 4 +- .../service-details-endpoint.tsx | 2 +- .../+network-services/service-details.tsx | 4 +- .../components/+network-services/services.tsx | 2 +- .../components/+nodes/node-details.tsx | 4 +- src/renderer/components/+nodes/nodes.tsx | 2 +- .../pod-security-policies.tsx | 2 +- .../pod-security-policy-details.tsx | 4 +- .../storage-class-details.tsx | 4 +- .../+storage-classes/storage-classes.tsx | 2 +- .../volume-claim-details.tsx | 4 +- .../+storage-volume-claims/volume-claims.tsx | 3 +- .../+storage-volumes/volume-details-list.tsx | 2 +- .../+storage-volumes/volume-details.tsx | 5 +- .../components/+storage-volumes/volumes.tsx | 3 +- .../+cluster-role-bindings/details.tsx | 4 +- .../+cluster-role-bindings/dialog.tsx | 6 +- .../+cluster-role-bindings/view.tsx | 2 +- .../+cluster-roles/add-dialog.tsx | 2 +- .../+cluster-roles/details.tsx | 4 +- .../+user-management/+cluster-roles/view.tsx | 2 +- .../+role-bindings/details.tsx | 4 +- .../+role-bindings/dialog.tsx | 2 +- .../+user-management/+role-bindings/view.tsx | 2 +- .../+user-management/+roles/add-dialog.tsx | 4 +- .../+user-management/+roles/details.tsx | 4 +- .../+user-management/+roles/view.tsx | 2 +- .../+service-accounts/create-dialog.tsx | 2 +- .../+service-accounts/details.tsx | 5 +- .../+service-accounts/view.tsx | 4 +- .../+workloads-cronjobs/cronjob-details.tsx | 5 +- .../+workloads-cronjobs/cronjobs.tsx | 4 +- .../daemonset-details.tsx | 4 +- .../+workloads-daemonsets/daemonsets.tsx | 2 +- .../deployment-details.tsx | 4 +- .../deployment-replicasets.tsx | 4 +- .../+workloads-deployments/deployments.tsx | 4 +- .../+workloads-jobs/job-details.tsx | 5 +- .../components/+workloads-jobs/jobs.tsx | 2 +- .../+workloads-pods/pod-details-list.tsx | 2 +- .../+workloads-pods/pod-details-secrets.tsx | 2 +- .../+workloads-pods/pod-details.tsx | 5 +- .../components/+workloads-pods/pods.tsx | 3 +- .../replicaset-details.tsx | 4 +- .../+workloads-replicasets/replicasets.tsx | 4 +- .../statefulset-details.tsx | 4 +- .../+workloads-statefulsets/statefulsets.tsx | 4 +- src/renderer/components/app.tsx | 2 +- .../components/kube-detail-params/index.ts | 22 ++++++ .../components/kube-detail-params/params.ts | 67 +++++++++++++++++++ .../components/kube-object-details/index.ts | 22 ++++++ .../kube-object-details.scss | 0 .../kube-object-details.tsx | 51 +------------- .../index.ts | 3 - .../kube-object-list-layout.tsx | 6 +- .../components/kube-object-menu/index.ts | 22 ++++++ .../kube-object-menu.tsx | 4 +- .../components/kube-object-meta/index.ts | 22 ++++++ .../kube-object-meta.tsx | 2 +- .../kube-object-detail-registry.tsx | 2 +- 92 files changed, 305 insertions(+), 179 deletions(-) create mode 100644 src/renderer/components/kube-detail-params/index.ts create mode 100644 src/renderer/components/kube-detail-params/params.ts create mode 100644 src/renderer/components/kube-object-details/index.ts rename src/renderer/components/{kube-object => kube-object-details}/kube-object-details.scss (100%) rename src/renderer/components/{kube-object => kube-object-details}/kube-object-details.tsx (77%) rename src/renderer/components/{kube-object => kube-object-list-layout}/index.ts (91%) rename src/renderer/components/{kube-object => kube-object-list-layout}/kube-object-list-layout.tsx (96%) create mode 100644 src/renderer/components/kube-object-menu/index.ts rename src/renderer/components/{kube-object => kube-object-menu}/kube-object-menu.tsx (98%) create mode 100644 src/renderer/components/kube-object-meta/index.ts rename src/renderer/components/{kube-object => kube-object-meta}/kube-object-meta.tsx (98%) diff --git a/src/extensions/renderer-api/components.ts b/src/extensions/renderer-api/components.ts index cb4cfd0377..7173b592b3 100644 --- a/src/extensions/renderer-api/components.ts +++ b/src/extensions/renderer-api/components.ts @@ -62,7 +62,11 @@ export * from "../../renderer/components/chart/bar-chart"; export * from "../../renderer/components/chart/pie-chart"; // kube helpers -export * from "../../renderer/components/kube-object"; +export * from "../../renderer/components/kube-detail-params"; +export * from "../../renderer/components/kube-object-details"; +export * from "../../renderer/components/kube-object-list-layout"; +export * from "../../renderer/components/kube-object-menu"; +export * from "../../renderer/components/kube-object-meta"; export * from "../../renderer/components/+events/kube-event-details"; // specific exports diff --git a/src/extensions/renderer-api/navigation.ts b/src/extensions/renderer-api/navigation.ts index ab4186d2da..6c821b0e42 100644 --- a/src/extensions/renderer-api/navigation.ts +++ b/src/extensions/renderer-api/navigation.ts @@ -23,7 +23,7 @@ import { navigation, PageParam, PageParamInit } from "../../renderer/navigation" export type { PageParamInit, PageParam } from "../../renderer/navigation/page-param"; export { navigate, isActiveRoute } from "../../renderer/navigation/helpers"; -export { hideDetails, showDetails, getDetailsUrl } from "../../renderer/components/kube-object/kube-object-details"; +export { hideDetails, showDetails, getDetailsUrl } from "../../renderer/components/kube-detail-params"; export type { URLParams } from "../../common/utils/buildUrl"; export function createPageParam(init: PageParamInit) { diff --git a/src/renderer/components/+apps-releases/release-details.tsx b/src/renderer/components/+apps-releases/release-details.tsx index fae2e3ba71..bf3850f462 100644 --- a/src/renderer/components/+apps-releases/release-details.tsx +++ b/src/renderer/components/+apps-releases/release-details.tsx @@ -45,7 +45,7 @@ import { apiManager } from "../../api/api-manager"; import { SubTitle } from "../layout/sub-title"; import { secretsStore } from "../+config-secrets/secrets.store"; import { Secret } from "../../api/endpoints"; -import { getDetailsUrl } from "../kube-object"; +import { getDetailsUrl } from "../kube-detail-params"; import { Checkbox } from "../checkbox"; interface Props { diff --git a/src/renderer/components/+apps-releases/release-menu.tsx b/src/renderer/components/+apps-releases/release-menu.tsx index 30f048c8cb..d74ffcc6eb 100644 --- a/src/renderer/components/+apps-releases/release-menu.tsx +++ b/src/renderer/components/+apps-releases/release-menu.tsx @@ -45,7 +45,7 @@ export class HelmReleaseMenu extends React.Component { const { release, hideDetails } = this.props; createUpgradeChartTab(release); - hideDetails && hideDetails(); + hideDetails?.(); } @boundMethod diff --git a/src/renderer/components/+cluster/cluster-issues.tsx b/src/renderer/components/+cluster/cluster-issues.tsx index f35f8bea61..88ee6aae14 100644 --- a/src/renderer/components/+cluster/cluster-issues.tsx +++ b/src/renderer/components/+cluster/cluster-issues.tsx @@ -34,7 +34,7 @@ import type { ItemObject } from "../../item.store"; import { Spinner } from "../spinner"; import { ThemeStore } from "../../theme.store"; import { lookupApiLink } from "../../api/kube-api"; -import { kubeSelectedUrlParam, showDetails } from "../kube-object"; +import { kubeSelectedUrlParam, showDetails } from "../kube-detail-params"; import { kubeWatchApi } from "../../api/kube-watch-api"; interface Props { diff --git a/src/renderer/components/+config-autoscalers/hpa-details.tsx b/src/renderer/components/+config-autoscalers/hpa-details.tsx index c625160daa..24d5b8f96a 100644 --- a/src/renderer/components/+config-autoscalers/hpa-details.tsx +++ b/src/renderer/components/+config-autoscalers/hpa-details.tsx @@ -26,12 +26,13 @@ import { observer } from "mobx-react"; import { Link } from "react-router-dom"; import { DrawerItem, DrawerTitle } from "../drawer"; import { Badge } from "../badge"; -import { KubeObjectDetailsProps, getDetailsUrl } from "../kube-object"; +import type { KubeObjectDetailsProps } from "../kube-object-details"; import { cssNames } from "../../utils"; import { HorizontalPodAutoscaler, HpaMetricType, IHpaMetric } from "../../api/endpoints/hpa.api"; import { Table, TableCell, TableHead, TableRow } from "../table"; import { lookupApiLink } from "../../api/kube-api"; -import { KubeObjectMeta } from "../kube-object/kube-object-meta"; +import { KubeObjectMeta } from "../kube-object-meta"; +import { getDetailsUrl } from "../kube-detail-params"; export interface HpaDetailsProps extends KubeObjectDetailsProps { } diff --git a/src/renderer/components/+config-autoscalers/hpa.tsx b/src/renderer/components/+config-autoscalers/hpa.tsx index 35bf3d6375..855b5c3cec 100644 --- a/src/renderer/components/+config-autoscalers/hpa.tsx +++ b/src/renderer/components/+config-autoscalers/hpa.tsx @@ -24,7 +24,7 @@ import "./hpa.scss"; import React from "react"; import { observer } from "mobx-react"; import type { RouteComponentProps } from "react-router"; -import { KubeObjectListLayout } from "../kube-object"; +import { KubeObjectListLayout } from "../kube-object-list-layout"; import type { HorizontalPodAutoscaler } from "../../api/endpoints/hpa.api"; import { hpaStore } from "./hpa.store"; import { Badge } from "../badge"; diff --git a/src/renderer/components/+config-limit-ranges/limit-range-details.tsx b/src/renderer/components/+config-limit-ranges/limit-range-details.tsx index 8531029313..0d235252f2 100644 --- a/src/renderer/components/+config-limit-ranges/limit-range-details.tsx +++ b/src/renderer/components/+config-limit-ranges/limit-range-details.tsx @@ -23,9 +23,9 @@ import "./limit-range-details.scss"; import React from "react"; import { observer } from "mobx-react"; -import type { KubeObjectDetailsProps } from "../kube-object"; +import type { KubeObjectDetailsProps } from "../kube-object-details"; import { LimitPart, LimitRange, LimitRangeItem, Resource } from "../../api/endpoints/limit-range.api"; -import { KubeObjectMeta } from "../kube-object/kube-object-meta"; +import { KubeObjectMeta } from "../kube-object-meta"; import { DrawerItem } from "../drawer/drawer-item"; import { Badge } from "../badge"; diff --git a/src/renderer/components/+config-limit-ranges/limit-ranges.tsx b/src/renderer/components/+config-limit-ranges/limit-ranges.tsx index e0bec106aa..dfc132b20f 100644 --- a/src/renderer/components/+config-limit-ranges/limit-ranges.tsx +++ b/src/renderer/components/+config-limit-ranges/limit-ranges.tsx @@ -23,7 +23,7 @@ import "./limit-ranges.scss"; import type { RouteComponentProps } from "react-router"; import { observer } from "mobx-react"; -import { KubeObjectListLayout } from "../kube-object/kube-object-list-layout"; +import { KubeObjectListLayout } from "../kube-object-list-layout"; import { limitRangeStore } from "./limit-ranges.store"; import React from "react"; import { KubeObjectStatusIcon } from "../kube-object-status-icon"; diff --git a/src/renderer/components/+config-maps/config-map-details.tsx b/src/renderer/components/+config-maps/config-map-details.tsx index 4858868186..b34ca83ab2 100644 --- a/src/renderer/components/+config-maps/config-map-details.tsx +++ b/src/renderer/components/+config-maps/config-map-details.tsx @@ -29,9 +29,9 @@ import { Notifications } from "../notifications"; import { Input } from "../input"; import { Button } from "../button"; import { configMapsStore } from "./config-maps.store"; -import type { KubeObjectDetailsProps } from "../kube-object"; +import type { KubeObjectDetailsProps } from "../kube-object-details"; import type { ConfigMap } from "../../api/endpoints"; -import { KubeObjectMeta } from "../kube-object/kube-object-meta"; +import { KubeObjectMeta } from "../kube-object-meta"; interface Props extends KubeObjectDetailsProps { } diff --git a/src/renderer/components/+config-maps/config-maps.tsx b/src/renderer/components/+config-maps/config-maps.tsx index b9fecc9fc9..9733846994 100644 --- a/src/renderer/components/+config-maps/config-maps.tsx +++ b/src/renderer/components/+config-maps/config-maps.tsx @@ -25,7 +25,7 @@ import React from "react"; import { observer } from "mobx-react"; import type { RouteComponentProps } from "react-router"; import { configMapsStore } from "./config-maps.store"; -import { KubeObjectListLayout } from "../kube-object"; +import { KubeObjectListLayout } from "../kube-object-list-layout"; import { KubeObjectStatusIcon } from "../kube-object-status-icon"; import type { ConfigMapsRouteParams } from "../../../common/routes"; diff --git a/src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets-details.tsx b/src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets-details.tsx index ad4bc41dc1..4f8aaab465 100644 --- a/src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets-details.tsx +++ b/src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets-details.tsx @@ -25,9 +25,9 @@ import React from "react"; import { observer } from "mobx-react"; import { DrawerItem } from "../drawer"; import { Badge } from "../badge"; -import type { KubeObjectDetailsProps } from "../kube-object"; +import type { KubeObjectDetailsProps } from "../kube-object-details"; import type { PodDisruptionBudget } from "../../api/endpoints"; -import { KubeObjectMeta } from "../kube-object/kube-object-meta"; +import { KubeObjectMeta } from "../kube-object-meta"; interface Props extends KubeObjectDetailsProps { } diff --git a/src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets.tsx b/src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets.tsx index f662c96ab3..1b1420931e 100644 --- a/src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets.tsx +++ b/src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets.tsx @@ -25,8 +25,9 @@ import * as React from "react"; import { observer } from "mobx-react"; import { podDisruptionBudgetsStore } from "./pod-disruption-budgets.store"; import type { PodDisruptionBudget } from "../../api/endpoints/poddisruptionbudget.api"; -import { KubeObjectDetailsProps, KubeObjectListLayout } from "../kube-object"; import { KubeObjectStatusIcon } from "../kube-object-status-icon"; +import type { KubeObjectDetailsProps } from "../kube-object-details"; +import { KubeObjectListLayout } from "../kube-object-list-layout"; enum columnId { name = "name", diff --git a/src/renderer/components/+config-resource-quotas/resource-quota-details.tsx b/src/renderer/components/+config-resource-quotas/resource-quota-details.tsx index cf7c505dcf..06a154db61 100644 --- a/src/renderer/components/+config-resource-quotas/resource-quota-details.tsx +++ b/src/renderer/components/+config-resource-quotas/resource-quota-details.tsx @@ -25,11 +25,11 @@ import kebabCase from "lodash/kebabCase"; import { observer } from "mobx-react"; import { DrawerItem, DrawerTitle } from "../drawer"; import { cpuUnitsToNumber, cssNames, unitsToBytes, metricUnitsToNumber } from "../../utils"; -import type { KubeObjectDetailsProps } from "../kube-object"; +import type { KubeObjectDetailsProps } from "../kube-object-details"; import type { ResourceQuota } from "../../api/endpoints/resource-quota.api"; import { LineProgress } from "../line-progress"; import { Table, TableCell, TableHead, TableRow } from "../table"; -import { KubeObjectMeta } from "../kube-object/kube-object-meta"; +import { KubeObjectMeta } from "../kube-object-meta"; interface Props extends KubeObjectDetailsProps { } diff --git a/src/renderer/components/+config-resource-quotas/resource-quotas.tsx b/src/renderer/components/+config-resource-quotas/resource-quotas.tsx index e1f54f2499..060b1e29fa 100644 --- a/src/renderer/components/+config-resource-quotas/resource-quotas.tsx +++ b/src/renderer/components/+config-resource-quotas/resource-quotas.tsx @@ -24,7 +24,7 @@ import "./resource-quotas.scss"; import React from "react"; import { observer } from "mobx-react"; import type { RouteComponentProps } from "react-router"; -import { KubeObjectListLayout } from "../kube-object"; +import { KubeObjectListLayout } from "../kube-object-list-layout"; import { AddQuotaDialog } from "./add-quota-dialog"; import { resourceQuotaStore } from "./resource-quotas.store"; import { KubeObjectStatusIcon } from "../kube-object-status-icon"; diff --git a/src/renderer/components/+config-secrets/add-secret-dialog.tsx b/src/renderer/components/+config-secrets/add-secret-dialog.tsx index 5c417023e2..d93b19d405 100644 --- a/src/renderer/components/+config-secrets/add-secret-dialog.tsx +++ b/src/renderer/components/+config-secrets/add-secret-dialog.tsx @@ -37,7 +37,7 @@ import type { KubeObjectMetadata } from "../../api/kube-object"; import { base64 } from "../../utils"; import { Notifications } from "../notifications"; import upperFirst from "lodash/upperFirst"; -import { showDetails } from "../kube-object"; +import { showDetails } from "../kube-detail-params"; interface Props extends Partial { } diff --git a/src/renderer/components/+config-secrets/secret-details.tsx b/src/renderer/components/+config-secrets/secret-details.tsx index 672ba86203..370c28b9d2 100644 --- a/src/renderer/components/+config-secrets/secret-details.tsx +++ b/src/renderer/components/+config-secrets/secret-details.tsx @@ -32,9 +32,9 @@ import { Notifications } from "../notifications"; import { base64 } from "../../utils"; import { Icon } from "../icon"; import { secretsStore } from "./secrets.store"; -import type { KubeObjectDetailsProps } from "../kube-object"; +import type { KubeObjectDetailsProps } from "../kube-object-details"; import type { Secret } from "../../api/endpoints"; -import { KubeObjectMeta } from "../kube-object/kube-object-meta"; +import { KubeObjectMeta } from "../kube-object-meta"; interface Props extends KubeObjectDetailsProps { } diff --git a/src/renderer/components/+config-secrets/secrets.tsx b/src/renderer/components/+config-secrets/secrets.tsx index f00c20d67e..7e75b04d0e 100644 --- a/src/renderer/components/+config-secrets/secrets.tsx +++ b/src/renderer/components/+config-secrets/secrets.tsx @@ -25,7 +25,7 @@ import React from "react"; import { observer } from "mobx-react"; import type { RouteComponentProps } from "react-router"; import { AddSecretDialog } from "./add-secret-dialog"; -import { KubeObjectListLayout } from "../kube-object"; +import { KubeObjectListLayout } from "../kube-object-list-layout"; import { Badge } from "../badge"; import { secretsStore } from "./secrets.store"; import { KubeObjectStatusIcon } from "../kube-object-status-icon"; diff --git a/src/renderer/components/+custom-resources/crd-details.tsx b/src/renderer/components/+custom-resources/crd-details.tsx index bef1dc6f67..79d5a31e65 100644 --- a/src/renderer/components/+custom-resources/crd-details.tsx +++ b/src/renderer/components/+custom-resources/crd-details.tsx @@ -28,10 +28,10 @@ import type { CustomResourceDefinition } from "../../api/endpoints/crd.api"; import { AceEditor } from "../ace-editor"; import { Badge } from "../badge"; import { DrawerItem, DrawerTitle } from "../drawer"; -import type { KubeObjectDetailsProps } from "../kube-object"; +import type { KubeObjectDetailsProps } from "../kube-object-details"; import { Table, TableCell, TableHead, TableRow } from "../table"; import { Input } from "../input"; -import { KubeObjectMeta } from "../kube-object/kube-object-meta"; +import { KubeObjectMeta } from "../kube-object-meta"; interface Props extends KubeObjectDetailsProps { } diff --git a/src/renderer/components/+custom-resources/crd-list.tsx b/src/renderer/components/+custom-resources/crd-list.tsx index 70ae2c96fb..fb0735d223 100644 --- a/src/renderer/components/+custom-resources/crd-list.tsx +++ b/src/renderer/components/+custom-resources/crd-list.tsx @@ -26,7 +26,7 @@ import { computed, makeObservable } from "mobx"; import { observer } from "mobx-react"; import { Link } from "react-router-dom"; import { stopPropagation } from "../../utils"; -import { KubeObjectListLayout } from "../kube-object"; +import { KubeObjectListLayout } from "../kube-object-list-layout"; import { crdStore } from "./crd.store"; import type { CustomResourceDefinition } from "../../api/endpoints/crd.api"; import { Select, SelectOption } from "../select"; @@ -116,7 +116,7 @@ export class CrdList extends React.Component { controlShouldRenderValue={false} formatOptionLabel={({ value: group }: SelectOption) => { const isSelected = selectedGroups.includes(group); - + return (
diff --git a/src/renderer/components/+custom-resources/crd-resource-details.tsx b/src/renderer/components/+custom-resources/crd-resource-details.tsx index 6f2b13938f..9acaa93e86 100644 --- a/src/renderer/components/+custom-resources/crd-resource-details.tsx +++ b/src/renderer/components/+custom-resources/crd-resource-details.tsx @@ -27,8 +27,8 @@ import { observer } from "mobx-react"; import { cssNames } from "../../utils"; import { Badge } from "../badge"; import { DrawerItem } from "../drawer"; -import type { KubeObjectDetailsProps } from "../kube-object"; -import { KubeObjectMeta } from "../kube-object/kube-object-meta"; +import type { KubeObjectDetailsProps } from "../kube-object-details"; +import { KubeObjectMeta } from "../kube-object-meta"; import { Input } from "../input"; import type { AdditionalPrinterColumnsV1, CustomResourceDefinition } from "../../api/endpoints/crd.api"; import { parseJsonPath } from "../../utils/jsonPath"; diff --git a/src/renderer/components/+custom-resources/crd-resources.tsx b/src/renderer/components/+custom-resources/crd-resources.tsx index be12f910c1..d64dd4e5f0 100644 --- a/src/renderer/components/+custom-resources/crd-resources.tsx +++ b/src/renderer/components/+custom-resources/crd-resources.tsx @@ -25,7 +25,7 @@ import React from "react"; import jsonPath from "jsonpath"; import { observer } from "mobx-react"; import type { RouteComponentProps } from "react-router"; -import { KubeObjectListLayout } from "../kube-object"; +import { KubeObjectListLayout } from "../kube-object-list-layout"; import type { KubeObject } from "../../api/kube-object"; import { computed, makeObservable } from "mobx"; import { crdStore } from "./crd.store"; diff --git a/src/renderer/components/+events/event-details.tsx b/src/renderer/components/+events/event-details.tsx index 639c4b9dcf..c7b39023c0 100644 --- a/src/renderer/components/+events/event-details.tsx +++ b/src/renderer/components/+events/event-details.tsx @@ -26,12 +26,13 @@ import kebabCase from "lodash/kebabCase"; import { DrawerItem, DrawerTitle } from "../drawer"; import { Link } from "react-router-dom"; import { observer } from "mobx-react"; -import { KubeObjectDetailsProps, getDetailsUrl } from "../kube-object"; +import type { KubeObjectDetailsProps } from "../kube-object-details"; import type { KubeEvent } from "../../api/endpoints/events.api"; -import { KubeObjectMeta } from "../kube-object/kube-object-meta"; +import { KubeObjectMeta } from "../kube-object-meta"; import { Table, TableCell, TableHead, TableRow } from "../table"; import { lookupApiLink } from "../../api/kube-api"; import { LocaleDate } from "../locale-date"; +import { getDetailsUrl } from "../kube-detail-params"; interface Props extends KubeObjectDetailsProps { } diff --git a/src/renderer/components/+events/events.tsx b/src/renderer/components/+events/events.tsx index 23aa985ab8..2e75a9404c 100644 --- a/src/renderer/components/+events/events.tsx +++ b/src/renderer/components/+events/events.tsx @@ -27,7 +27,7 @@ import { observer } from "mobx-react"; import { orderBy } from "lodash"; import { TabLayout } from "../layout/tab-layout"; import { EventStore, eventStore } from "./event.store"; -import { getDetailsUrl, KubeObjectListLayout, KubeObjectListLayoutProps } from "../kube-object"; +import { KubeObjectListLayout, KubeObjectListLayoutProps } from "../kube-object-list-layout"; import type { KubeEvent } from "../../api/endpoints/events.api"; import type { TableSortCallbacks, TableSortParams } from "../table"; import type { HeaderCustomizer } from "../item-object-list"; @@ -37,6 +37,7 @@ import { cssNames, IClassName, stopPropagation } from "../../utils"; import { Icon } from "../icon"; import { lookupApiLink } from "../../api/kube-api"; import { eventsURL } from "../../../common/routes"; +import { getDetailsUrl } from "../kube-detail-params"; enum columnId { message = "message", @@ -133,7 +134,7 @@ export class Events extends React.Component { tooltip={`Limited to ${store.limit}`} /> , - title, + title, ...headerPlaceholders }; }; diff --git a/src/renderer/components/+namespaces/namespace-details.tsx b/src/renderer/components/+namespaces/namespace-details.tsx index ff997fe335..784cdef3c8 100644 --- a/src/renderer/components/+namespaces/namespace-details.tsx +++ b/src/renderer/components/+namespaces/namespace-details.tsx @@ -27,16 +27,17 @@ import { disposeOnUnmount, observer } from "mobx-react"; import { DrawerItem } from "../drawer"; import { boundMethod, cssNames } from "../../utils"; import { getMetricsForNamespace, IPodMetrics, Namespace } from "../../api/endpoints"; -import { getDetailsUrl, KubeObjectDetailsProps } from "../kube-object"; +import type { KubeObjectDetailsProps } from "../kube-object-details"; import { Link } from "react-router-dom"; import { Spinner } from "../spinner"; import { resourceQuotaStore } from "../+config-resource-quotas/resource-quotas.store"; -import { KubeObjectMeta } from "../kube-object/kube-object-meta"; +import { KubeObjectMeta } from "../kube-object-meta"; import { limitRangeStore } from "../+config-limit-ranges/limit-ranges.store"; import { ResourceMetrics } from "../resource-metrics"; import { PodCharts, podMetricTabs } from "../+workloads-pods/pod-charts"; import { ClusterMetricsResourceType } from "../../../common/cluster-types"; import { getActiveClusterEntity } from "../../api/catalog-entity-registry"; +import { getDetailsUrl } from "../kube-detail-params"; interface Props extends KubeObjectDetailsProps { } diff --git a/src/renderer/components/+namespaces/namespaces.tsx b/src/renderer/components/+namespaces/namespaces.tsx index cc29fa05ea..cd90d44f9d 100644 --- a/src/renderer/components/+namespaces/namespaces.tsx +++ b/src/renderer/components/+namespaces/namespaces.tsx @@ -27,7 +27,7 @@ import { AddNamespaceDialog } from "./add-namespace-dialog"; import { TabLayout } from "../layout/tab-layout"; import { Badge } from "../badge"; import type { RouteComponentProps } from "react-router"; -import { KubeObjectListLayout } from "../kube-object"; +import { KubeObjectListLayout } from "../kube-object-list-layout"; import { namespaceStore } from "./namespace.store"; import { KubeObjectStatusIcon } from "../kube-object-status-icon"; import type { NamespacesRouteParams } from "../../../common/routes"; diff --git a/src/renderer/components/+network-endpoints/endpoint-details.tsx b/src/renderer/components/+network-endpoints/endpoint-details.tsx index 8554a4b2f7..70677cc51e 100644 --- a/src/renderer/components/+network-endpoints/endpoint-details.tsx +++ b/src/renderer/components/+network-endpoints/endpoint-details.tsx @@ -24,9 +24,9 @@ import "./endpoint-details.scss"; import React from "react"; import { observer } from "mobx-react"; import { DrawerTitle } from "../drawer"; -import type { KubeObjectDetailsProps } from "../kube-object"; +import type { KubeObjectDetailsProps } from "../kube-object-details"; import type { Endpoint } from "../../api/endpoints"; -import { KubeObjectMeta } from "../kube-object/kube-object-meta"; +import { KubeObjectMeta } from "../kube-object-meta"; import { EndpointSubsetList } from "./endpoint-subset-list"; interface Props extends KubeObjectDetailsProps { diff --git a/src/renderer/components/+network-endpoints/endpoint-subset-list.tsx b/src/renderer/components/+network-endpoints/endpoint-subset-list.tsx index 1556394a9c..fe32bbac46 100644 --- a/src/renderer/components/+network-endpoints/endpoint-subset-list.tsx +++ b/src/renderer/components/+network-endpoints/endpoint-subset-list.tsx @@ -28,7 +28,7 @@ import { Table, TableCell, TableHead, TableRow } from "../table"; import { boundMethod } from "../../utils"; import { lookupApiLink } from "../../api/kube-api"; import { Link } from "react-router-dom"; -import { getDetailsUrl } from "../kube-object"; +import { getDetailsUrl } from "../kube-detail-params"; interface Props { subset: EndpointSubset; diff --git a/src/renderer/components/+network-endpoints/endpoints.tsx b/src/renderer/components/+network-endpoints/endpoints.tsx index 940ab89783..38c99fc19c 100644 --- a/src/renderer/components/+network-endpoints/endpoints.tsx +++ b/src/renderer/components/+network-endpoints/endpoints.tsx @@ -25,7 +25,7 @@ import React from "react"; import { observer } from "mobx-react"; import type { RouteComponentProps } from "react-router-dom"; import { endpointStore } from "./endpoints.store"; -import { KubeObjectListLayout } from "../kube-object"; +import { KubeObjectListLayout } from "../kube-object-list-layout"; import { KubeObjectStatusIcon } from "../kube-object-status-icon"; import type { EndpointRouteParams } from "../../../common/routes"; diff --git a/src/renderer/components/+network-ingresses/ingress-details.tsx b/src/renderer/components/+network-ingresses/ingress-details.tsx index 97303ad679..bad75d717b 100644 --- a/src/renderer/components/+network-ingresses/ingress-details.tsx +++ b/src/renderer/components/+network-ingresses/ingress-details.tsx @@ -28,9 +28,9 @@ import { DrawerItem, DrawerTitle } from "../drawer"; import type { ILoadBalancerIngress, Ingress } from "../../api/endpoints"; import { Table, TableCell, TableHead, TableRow } from "../table"; import { ResourceMetrics } from "../resource-metrics"; -import type { KubeObjectDetailsProps } from "../kube-object"; +import type { KubeObjectDetailsProps } from "../kube-object-details"; import { IngressCharts } from "./ingress-charts"; -import { KubeObjectMeta } from "../kube-object/kube-object-meta"; +import { KubeObjectMeta } from "../kube-object-meta"; import { getBackendServiceNamePort, getMetricsForIngress, IIngressMetrics } from "../../api/endpoints/ingress.api"; import { getActiveClusterEntity } from "../../api/catalog-entity-registry"; import { ClusterMetricsResourceType } from "../../../common/cluster-types"; diff --git a/src/renderer/components/+network-ingresses/ingresses.tsx b/src/renderer/components/+network-ingresses/ingresses.tsx index 153a4eb62f..cfe71e7c8c 100644 --- a/src/renderer/components/+network-ingresses/ingresses.tsx +++ b/src/renderer/components/+network-ingresses/ingresses.tsx @@ -25,7 +25,7 @@ import React from "react"; import { observer } from "mobx-react"; import type { RouteComponentProps } from "react-router-dom"; import { ingressStore } from "./ingress.store"; -import { KubeObjectListLayout } from "../kube-object"; +import { KubeObjectListLayout } from "../kube-object-list-layout"; import { KubeObjectStatusIcon } from "../kube-object-status-icon"; import type { IngressRouteParams } from "../../../common/routes"; diff --git a/src/renderer/components/+network-policies/network-policies.tsx b/src/renderer/components/+network-policies/network-policies.tsx index 65579eaa56..f6ba704de4 100644 --- a/src/renderer/components/+network-policies/network-policies.tsx +++ b/src/renderer/components/+network-policies/network-policies.tsx @@ -24,7 +24,7 @@ import "./network-policies.scss"; import React from "react"; import { observer } from "mobx-react"; import type { RouteComponentProps } from "react-router-dom"; -import { KubeObjectListLayout } from "../kube-object"; +import { KubeObjectListLayout } from "../kube-object-list-layout"; import { networkPolicyStore } from "./network-policy.store"; import { KubeObjectStatusIcon } from "../kube-object-status-icon"; import type { NetworkPoliciesRouteParams } from "../../../common/routes"; diff --git a/src/renderer/components/+network-policies/network-policy-details.tsx b/src/renderer/components/+network-policies/network-policy-details.tsx index 7ac8f2f7bf..a81afc211b 100644 --- a/src/renderer/components/+network-policies/network-policy-details.tsx +++ b/src/renderer/components/+network-policies/network-policy-details.tsx @@ -28,8 +28,8 @@ import type { IPolicyEgress, IPolicyIngress, IPolicyIpBlock, IPolicySelector, Ne import { Badge } from "../badge"; import { SubTitle } from "../layout/sub-title"; import { observer } from "mobx-react"; -import type { KubeObjectDetailsProps } from "../kube-object"; -import { KubeObjectMeta } from "../kube-object/kube-object-meta"; +import type { KubeObjectDetailsProps } from "../kube-object-details"; +import { KubeObjectMeta } from "../kube-object-meta"; interface Props extends KubeObjectDetailsProps { } diff --git a/src/renderer/components/+network-services/service-details-endpoint.tsx b/src/renderer/components/+network-services/service-details-endpoint.tsx index 2e04c78f1a..1d41ccf9e5 100644 --- a/src/renderer/components/+network-services/service-details-endpoint.tsx +++ b/src/renderer/components/+network-services/service-details-endpoint.tsx @@ -26,7 +26,7 @@ import { Table, TableHead, TableCell, TableRow } from "../table"; import { prevDefault } from "../../utils"; import { endpointStore } from "../+network-endpoints/endpoints.store"; import { Spinner } from "../spinner"; -import { showDetails } from "../kube-object"; +import { showDetails } from "../kube-detail-params"; interface Props { endpoint: KubeObject; diff --git a/src/renderer/components/+network-services/service-details.tsx b/src/renderer/components/+network-services/service-details.tsx index ec10cd5f94..6b6067f077 100644 --- a/src/renderer/components/+network-services/service-details.tsx +++ b/src/renderer/components/+network-services/service-details.tsx @@ -25,9 +25,9 @@ import React from "react"; import { disposeOnUnmount, observer } from "mobx-react"; import { DrawerItem, DrawerTitle } from "../drawer"; import { Badge } from "../badge"; -import type { KubeObjectDetailsProps } from "../kube-object"; +import type { KubeObjectDetailsProps } from "../kube-object-details"; import type { Service } from "../../api/endpoints"; -import { KubeObjectMeta } from "../kube-object/kube-object-meta"; +import { KubeObjectMeta } from "../kube-object-meta"; import { ServicePortComponent } from "./service-port-component"; import { endpointStore } from "../+network-endpoints/endpoints.store"; import { ServiceDetailsEndpoint } from "./service-details-endpoint"; diff --git a/src/renderer/components/+network-services/services.tsx b/src/renderer/components/+network-services/services.tsx index 745236be61..fe3b2b40ab 100644 --- a/src/renderer/components/+network-services/services.tsx +++ b/src/renderer/components/+network-services/services.tsx @@ -24,7 +24,7 @@ import "./services.scss"; import React from "react"; import { observer } from "mobx-react"; import type { RouteComponentProps } from "react-router"; -import { KubeObjectListLayout } from "../kube-object"; +import { KubeObjectListLayout } from "../kube-object-list-layout"; import { Badge } from "../badge"; import { serviceStore } from "./services.store"; import { KubeObjectStatusIcon } from "../kube-object-status-icon"; diff --git a/src/renderer/components/+nodes/node-details.tsx b/src/renderer/components/+nodes/node-details.tsx index 96e4eea4ca..24a998ae32 100644 --- a/src/renderer/components/+nodes/node-details.tsx +++ b/src/renderer/components/+nodes/node-details.tsx @@ -29,12 +29,12 @@ import { DrawerItem, DrawerItemLabels } from "../drawer"; import { Badge } from "../badge"; import { ResourceMetrics } from "../resource-metrics"; import { podsStore } from "../+workloads-pods/pods.store"; -import type { KubeObjectDetailsProps } from "../kube-object"; +import type { KubeObjectDetailsProps } from "../kube-object-details"; import { getMetricsByNodeNames, IClusterMetrics, Node } from "../../api/endpoints"; import { NodeCharts } from "./node-charts"; import { makeObservable, observable, reaction } from "mobx"; import { PodDetailsList } from "../+workloads-pods/pod-details-list"; -import { KubeObjectMeta } from "../kube-object/kube-object-meta"; +import { KubeObjectMeta } from "../kube-object-meta"; import { getActiveClusterEntity } from "../../api/catalog-entity-registry"; import { ClusterMetricsResourceType } from "../../../common/cluster-types"; import { NodeDetailsResources } from "./node-details-resources"; diff --git a/src/renderer/components/+nodes/nodes.tsx b/src/renderer/components/+nodes/nodes.tsx index 1225ea8c15..5a464f1221 100644 --- a/src/renderer/components/+nodes/nodes.tsx +++ b/src/renderer/components/+nodes/nodes.tsx @@ -27,7 +27,7 @@ import { cssNames, interval } from "../../utils"; import { TabLayout } from "../layout/tab-layout"; import { nodesStore } from "./nodes.store"; import { podsStore } from "../+workloads-pods/pods.store"; -import { KubeObjectListLayout } from "../kube-object"; +import { KubeObjectListLayout } from "../kube-object-list-layout"; import { getMetricsForAllNodes, INodeMetrics, Node } from "../../api/endpoints/nodes.api"; import { LineProgress } from "../line-progress"; import { bytesToUnits } from "../../utils/convertMemory"; diff --git a/src/renderer/components/+pod-security-policies/pod-security-policies.tsx b/src/renderer/components/+pod-security-policies/pod-security-policies.tsx index c578bf8e34..232f7a5fba 100644 --- a/src/renderer/components/+pod-security-policies/pod-security-policies.tsx +++ b/src/renderer/components/+pod-security-policies/pod-security-policies.tsx @@ -23,7 +23,7 @@ import "./pod-security-policies.scss"; import React from "react"; import { observer } from "mobx-react"; -import { KubeObjectListLayout } from "../kube-object"; +import { KubeObjectListLayout } from "../kube-object-list-layout"; import { podSecurityPoliciesStore } from "./pod-security-policies.store"; import { KubeObjectStatusIcon } from "../kube-object-status-icon"; diff --git a/src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx b/src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx index abdefe9228..7da0218a7a 100644 --- a/src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx +++ b/src/renderer/components/+pod-security-policies/pod-security-policy-details.tsx @@ -24,11 +24,11 @@ import "./pod-security-policy-details.scss"; import React from "react"; import { observer } from "mobx-react"; import { DrawerItem, DrawerTitle } from "../drawer"; -import type { KubeObjectDetailsProps } from "../kube-object"; +import type { KubeObjectDetailsProps } from "../kube-object-details"; import type { PodSecurityPolicy } from "../../api/endpoints"; import { Badge } from "../badge"; import { Table, TableCell, TableHead, TableRow } from "../table"; -import { KubeObjectMeta } from "../kube-object/kube-object-meta"; +import { KubeObjectMeta } from "../kube-object-meta"; interface Props extends KubeObjectDetailsProps { } diff --git a/src/renderer/components/+storage-classes/storage-class-details.tsx b/src/renderer/components/+storage-classes/storage-class-details.tsx index 0d2b9e0600..302a94b3f4 100644 --- a/src/renderer/components/+storage-classes/storage-class-details.tsx +++ b/src/renderer/components/+storage-classes/storage-class-details.tsx @@ -26,9 +26,9 @@ import startCase from "lodash/startCase"; import { DrawerItem, DrawerTitle } from "../drawer"; import { Badge } from "../badge"; import { observer } from "mobx-react"; -import type { KubeObjectDetailsProps } from "../kube-object"; +import type { KubeObjectDetailsProps } from "../kube-object-details"; import type { StorageClass } from "../../api/endpoints"; -import { KubeObjectMeta } from "../kube-object/kube-object-meta"; +import { KubeObjectMeta } from "../kube-object-meta"; import { storageClassStore } from "./storage-class.store"; import { VolumeDetailsList } from "../+storage-volumes/volume-details-list"; import { volumesStore } from "../+storage-volumes/volumes.store"; diff --git a/src/renderer/components/+storage-classes/storage-classes.tsx b/src/renderer/components/+storage-classes/storage-classes.tsx index d81d32041e..64edc494e1 100644 --- a/src/renderer/components/+storage-classes/storage-classes.tsx +++ b/src/renderer/components/+storage-classes/storage-classes.tsx @@ -24,7 +24,7 @@ import "./storage-classes.scss"; import React from "react"; import type { RouteComponentProps } from "react-router-dom"; import { observer } from "mobx-react"; -import { KubeObjectListLayout } from "../kube-object"; +import { KubeObjectListLayout } from "../kube-object-list-layout"; import { storageClassStore } from "./storage-class.store"; import { KubeObjectStatusIcon } from "../kube-object-status-icon"; import type { StorageClassesRouteParams } from "../../../common/routes"; diff --git a/src/renderer/components/+storage-volume-claims/volume-claim-details.tsx b/src/renderer/components/+storage-volume-claims/volume-claim-details.tsx index 36d85b0488..5911b202cb 100644 --- a/src/renderer/components/+storage-volume-claims/volume-claim-details.tsx +++ b/src/renderer/components/+storage-volume-claims/volume-claim-details.tsx @@ -30,10 +30,12 @@ import { podsStore } from "../+workloads-pods/pods.store"; import { Link } from "react-router-dom"; import { ResourceMetrics } from "../resource-metrics"; import { VolumeClaimDiskChart } from "./volume-claim-disk-chart"; -import { getDetailsUrl, KubeObjectDetailsProps, KubeObjectMeta } from "../kube-object"; +import type { KubeObjectDetailsProps } from "../kube-object-details"; import { getMetricsForPvc, IPvcMetrics, PersistentVolumeClaim } from "../../api/endpoints"; import { getActiveClusterEntity } from "../../api/catalog-entity-registry"; import { ClusterMetricsResourceType } from "../../../common/cluster-types"; +import { KubeObjectMeta } from "../kube-object-meta"; +import { getDetailsUrl } from "../kube-detail-params"; interface Props extends KubeObjectDetailsProps { } diff --git a/src/renderer/components/+storage-volume-claims/volume-claims.tsx b/src/renderer/components/+storage-volume-claims/volume-claims.tsx index 60230033f9..e1f8e38527 100644 --- a/src/renderer/components/+storage-volume-claims/volume-claims.tsx +++ b/src/renderer/components/+storage-volume-claims/volume-claims.tsx @@ -26,12 +26,13 @@ import { observer } from "mobx-react"; import { Link, RouteComponentProps } from "react-router-dom"; import { volumeClaimStore } from "./volume-claim.store"; import { podsStore } from "../+workloads-pods/pods.store"; -import { getDetailsUrl, KubeObjectListLayout } from "../kube-object"; +import { KubeObjectListLayout } from "../kube-object-list-layout"; import { unitsToBytes } from "../../utils/convertMemory"; import { stopPropagation } from "../../utils"; import { storageClassApi } from "../../api/endpoints"; import { KubeObjectStatusIcon } from "../kube-object-status-icon"; import type { VolumeClaimsRouteParams } from "../../../common/routes"; +import { getDetailsUrl } from "../kube-detail-params"; enum columnId { name = "name", diff --git a/src/renderer/components/+storage-volumes/volume-details-list.tsx b/src/renderer/components/+storage-volumes/volume-details-list.tsx index e38af1d3f8..1bd3e5d6d3 100644 --- a/src/renderer/components/+storage-volumes/volume-details-list.tsx +++ b/src/renderer/components/+storage-volumes/volume-details-list.tsx @@ -27,7 +27,7 @@ import type { PersistentVolume } from "../../api/endpoints/persistent-volume.api import { boundMethod } from "../../../common/utils/autobind"; import { TableRow } from "../table/table-row"; import { cssNames, prevDefault } from "../../utils"; -import { showDetails } from "../kube-object/kube-object-details"; +import { showDetails } from "../kube-detail-params"; import { TableCell } from "../table/table-cell"; import { Spinner } from "../spinner/spinner"; import { DrawerTitle } from "../drawer/drawer-title"; diff --git a/src/renderer/components/+storage-volumes/volume-details.tsx b/src/renderer/components/+storage-volumes/volume-details.tsx index 66354db988..0509e8e183 100644 --- a/src/renderer/components/+storage-volumes/volume-details.tsx +++ b/src/renderer/components/+storage-volumes/volume-details.tsx @@ -28,8 +28,9 @@ import { observer } from "mobx-react"; import { DrawerItem, DrawerTitle } from "../drawer"; import { Badge } from "../badge"; import { PersistentVolume, pvcApi } from "../../api/endpoints"; -import { getDetailsUrl, KubeObjectDetailsProps } from "../kube-object"; -import { KubeObjectMeta } from "../kube-object/kube-object-meta"; +import type { KubeObjectDetailsProps } from "../kube-object-details"; +import { KubeObjectMeta } from "../kube-object-meta"; +import { getDetailsUrl } from "../kube-detail-params"; interface Props extends KubeObjectDetailsProps { } diff --git a/src/renderer/components/+storage-volumes/volumes.tsx b/src/renderer/components/+storage-volumes/volumes.tsx index ce1e313e9b..0d7cafd1b2 100644 --- a/src/renderer/components/+storage-volumes/volumes.tsx +++ b/src/renderer/components/+storage-volumes/volumes.tsx @@ -24,7 +24,8 @@ import "./volumes.scss"; import React from "react"; import { observer } from "mobx-react"; import { Link, RouteComponentProps } from "react-router-dom"; -import { getDetailsUrl, KubeObjectListLayout } from "../kube-object"; +import { KubeObjectListLayout } from "../kube-object-list-layout"; +import { getDetailsUrl } from "../kube-detail-params"; import { stopPropagation } from "../../utils"; import { volumesStore } from "./volumes.store"; import { pvcApi, storageClassApi } from "../../api/endpoints"; diff --git a/src/renderer/components/+user-management/+cluster-role-bindings/details.tsx b/src/renderer/components/+user-management/+cluster-role-bindings/details.tsx index 7dea8c083e..b6a6afba83 100644 --- a/src/renderer/components/+user-management/+cluster-role-bindings/details.tsx +++ b/src/renderer/components/+user-management/+cluster-role-bindings/details.tsx @@ -30,8 +30,8 @@ import { autoBind, ObservableHashSet, prevDefault } from "../../../utils"; import { AddRemoveButtons } from "../../add-remove-buttons"; import { ConfirmDialog } from "../../confirm-dialog"; import { DrawerTitle } from "../../drawer"; -import type { KubeObjectDetailsProps } from "../../kube-object"; -import { KubeObjectMeta } from "../../kube-object/kube-object-meta"; +import type { KubeObjectDetailsProps } from "../../kube-object-details"; +import { KubeObjectMeta } from "../../kube-object-meta"; import { Table, TableCell, TableHead, TableRow } from "../../table"; import { ClusterRoleBindingDialog } from "./dialog"; import { clusterRoleBindingsStore } from "./store"; diff --git a/src/renderer/components/+user-management/+cluster-role-bindings/dialog.tsx b/src/renderer/components/+user-management/+cluster-role-bindings/dialog.tsx index 0d810f6c48..6755edfa74 100644 --- a/src/renderer/components/+user-management/+cluster-role-bindings/dialog.tsx +++ b/src/renderer/components/+user-management/+cluster-role-bindings/dialog.tsx @@ -30,7 +30,7 @@ import { ClusterRole, ClusterRoleBinding, ClusterRoleBindingSubject, ServiceAcco import { Dialog, DialogProps } from "../../dialog"; import { EditableList } from "../../editable-list"; import { Icon } from "../../icon"; -import { showDetails } from "../../kube-object"; +import { showDetails } from "../../kube-detail-params"; import { SubTitle } from "../../layout/sub-title"; import { Notifications } from "../../notifications"; import { Select, SelectOption } from "../../select"; @@ -202,13 +202,13 @@ export class ClusterRoleBindingDialog extends React.Component { if (!this.selectedRoleRef || this.bindingName === this.selectedRoleRef.getName()) { this.bindingName = value.getName(); } - + this.selectedRoleRef = value; }} /> - { diff --git a/src/renderer/components/+user-management/+cluster-roles/view.tsx b/src/renderer/components/+user-management/+cluster-roles/view.tsx index 271802c10b..aa36fbd82a 100644 --- a/src/renderer/components/+user-management/+cluster-roles/view.tsx +++ b/src/renderer/components/+user-management/+cluster-roles/view.tsx @@ -24,7 +24,7 @@ import "./view.scss"; import { observer } from "mobx-react"; import React from "react"; import type { RouteComponentProps } from "react-router"; -import { KubeObjectListLayout } from "../../kube-object"; +import { KubeObjectListLayout } from "../../kube-object-list-layout"; import { KubeObjectStatusIcon } from "../../kube-object-status-icon"; import { AddClusterRoleDialog } from "./add-dialog"; import { clusterRolesStore } from "./store"; diff --git a/src/renderer/components/+user-management/+role-bindings/details.tsx b/src/renderer/components/+user-management/+role-bindings/details.tsx index aee0f6c2af..71f062aa22 100644 --- a/src/renderer/components/+user-management/+role-bindings/details.tsx +++ b/src/renderer/components/+user-management/+role-bindings/details.tsx @@ -29,8 +29,8 @@ import { prevDefault, boundMethod } from "../../../utils"; import { AddRemoveButtons } from "../../add-remove-buttons"; import { ConfirmDialog } from "../../confirm-dialog"; import { DrawerTitle } from "../../drawer"; -import type { KubeObjectDetailsProps } from "../../kube-object"; -import { KubeObjectMeta } from "../../kube-object/kube-object-meta"; +import type { KubeObjectDetailsProps } from "../../kube-object-details"; +import { KubeObjectMeta } from "../../kube-object-meta"; import { Table, TableCell, TableHead, TableRow } from "../../table"; import { RoleBindingDialog } from "./dialog"; import { roleBindingsStore } from "./store"; diff --git a/src/renderer/components/+user-management/+role-bindings/dialog.tsx b/src/renderer/components/+user-management/+role-bindings/dialog.tsx index c163a01b83..6353145cc9 100644 --- a/src/renderer/components/+user-management/+role-bindings/dialog.tsx +++ b/src/renderer/components/+user-management/+role-bindings/dialog.tsx @@ -32,7 +32,7 @@ import { ClusterRole, Role, roleApi, RoleBinding, RoleBindingSubject, ServiceAcc import { Dialog, DialogProps } from "../../dialog"; import { EditableList } from "../../editable-list"; import { Icon } from "../../icon"; -import { showDetails } from "../../kube-object"; +import { showDetails } from "../../kube-detail-params"; import { SubTitle } from "../../layout/sub-title"; import { Notifications } from "../../notifications"; import { Select, SelectOption } from "../../select"; diff --git a/src/renderer/components/+user-management/+role-bindings/view.tsx b/src/renderer/components/+user-management/+role-bindings/view.tsx index 247e72482c..3eb60ad9ba 100644 --- a/src/renderer/components/+user-management/+role-bindings/view.tsx +++ b/src/renderer/components/+user-management/+role-bindings/view.tsx @@ -23,7 +23,7 @@ import "./view.scss"; import { observer } from "mobx-react"; import React from "react"; import type { RouteComponentProps } from "react-router"; -import { KubeObjectListLayout } from "../../kube-object"; +import { KubeObjectListLayout } from "../../kube-object-list-layout"; import { KubeObjectStatusIcon } from "../../kube-object-status-icon"; import { RoleBindingDialog } from "./dialog"; import { roleBindingsStore } from "./store"; diff --git a/src/renderer/components/+user-management/+roles/add-dialog.tsx b/src/renderer/components/+user-management/+roles/add-dialog.tsx index 361c14dc61..65d4505976 100644 --- a/src/renderer/components/+user-management/+roles/add-dialog.tsx +++ b/src/renderer/components/+user-management/+roles/add-dialog.tsx @@ -28,7 +28,7 @@ import { observer } from "mobx-react"; import { NamespaceSelect } from "../../+namespaces/namespace-select"; import { Dialog, DialogProps } from "../../dialog"; import { Input } from "../../input"; -import { showDetails } from "../../kube-object"; +import { showDetails } from "../../kube-detail-params"; import { SubTitle } from "../../layout/sub-title"; import { Notifications } from "../../notifications"; import { Wizard, WizardStep } from "../../wizard"; @@ -40,7 +40,7 @@ interface Props extends Partial { @observer export class AddRoleDialog extends React.Component { static isOpen = observable.box(false); - + @observable roleName = ""; @observable namespace = ""; diff --git a/src/renderer/components/+user-management/+roles/details.tsx b/src/renderer/components/+user-management/+roles/details.tsx index 2b6f822ed0..e90ac46e6b 100644 --- a/src/renderer/components/+user-management/+roles/details.tsx +++ b/src/renderer/components/+user-management/+roles/details.tsx @@ -26,8 +26,8 @@ import React from "react"; import type { Role } from "../../../api/endpoints"; import { DrawerTitle } from "../../drawer"; -import type { KubeObjectDetailsProps } from "../../kube-object"; -import { KubeObjectMeta } from "../../kube-object/kube-object-meta"; +import type { KubeObjectDetailsProps } from "../../kube-object-details"; +import { KubeObjectMeta } from "../../kube-object-meta"; interface Props extends KubeObjectDetailsProps { } diff --git a/src/renderer/components/+user-management/+roles/view.tsx b/src/renderer/components/+user-management/+roles/view.tsx index dd71c83b93..30e58e787d 100644 --- a/src/renderer/components/+user-management/+roles/view.tsx +++ b/src/renderer/components/+user-management/+roles/view.tsx @@ -24,7 +24,7 @@ import "./view.scss"; import { observer } from "mobx-react"; import React from "react"; import type { RouteComponentProps } from "react-router"; -import { KubeObjectListLayout } from "../../kube-object"; +import { KubeObjectListLayout } from "../../kube-object-list-layout"; import { KubeObjectStatusIcon } from "../../kube-object-status-icon"; import { AddRoleDialog } from "./add-dialog"; import { rolesStore } from "./store"; diff --git a/src/renderer/components/+user-management/+service-accounts/create-dialog.tsx b/src/renderer/components/+user-management/+service-accounts/create-dialog.tsx index 1f50e717c6..5665835ff4 100644 --- a/src/renderer/components/+user-management/+service-accounts/create-dialog.tsx +++ b/src/renderer/components/+user-management/+service-accounts/create-dialog.tsx @@ -29,7 +29,7 @@ import { NamespaceSelect } from "../../+namespaces/namespace-select"; import { Dialog, DialogProps } from "../../dialog"; import { Input } from "../../input"; import { systemName } from "../../input/input_validators"; -import { showDetails } from "../../kube-object"; +import { showDetails } from "../../kube-detail-params"; import { SubTitle } from "../../layout/sub-title"; import { Notifications } from "../../notifications"; import { Wizard, WizardStep } from "../../wizard"; diff --git a/src/renderer/components/+user-management/+service-accounts/details.tsx b/src/renderer/components/+user-management/+service-accounts/details.tsx index 578cde2ab4..a121b072bb 100644 --- a/src/renderer/components/+user-management/+service-accounts/details.tsx +++ b/src/renderer/components/+user-management/+service-accounts/details.tsx @@ -30,10 +30,11 @@ import { secretsStore } from "../../+config-secrets/secrets.store"; import { Secret, ServiceAccount } from "../../../api/endpoints"; import { DrawerItem, DrawerTitle } from "../../drawer"; import { Icon } from "../../icon"; -import { getDetailsUrl, KubeObjectDetailsProps } from "../../kube-object"; -import { KubeObjectMeta } from "../../kube-object/kube-object-meta"; +import type { KubeObjectDetailsProps } from "../../kube-object-details"; +import { KubeObjectMeta } from "../../kube-object-meta"; import { Spinner } from "../../spinner"; import { ServiceAccountsSecret } from "./secret"; +import { getDetailsUrl } from "../../kube-detail-params"; interface Props extends KubeObjectDetailsProps { } diff --git a/src/renderer/components/+user-management/+service-accounts/view.tsx b/src/renderer/components/+user-management/+service-accounts/view.tsx index c8bdaaa656..af2090018c 100644 --- a/src/renderer/components/+user-management/+service-accounts/view.tsx +++ b/src/renderer/components/+user-management/+service-accounts/view.tsx @@ -26,9 +26,9 @@ import React from "react"; import type { RouteComponentProps } from "react-router"; import type { ServiceAccount } from "../../../api/endpoints/service-accounts.api"; import { Icon } from "../../icon"; -import { KubeObjectListLayout } from "../../kube-object"; +import { KubeObjectListLayout } from "../../kube-object-list-layout"; import { KubeObjectStatusIcon } from "../../kube-object-status-icon"; -import type { KubeObjectMenuProps } from "../../kube-object/kube-object-menu"; +import type { KubeObjectMenuProps } from "../../kube-object-menu"; import { openServiceAccountKubeConfig } from "../../kubeconfig-dialog"; import { MenuItem } from "../../menu"; import { CreateServiceAccountDialog } from "./create-dialog"; diff --git a/src/renderer/components/+workloads-cronjobs/cronjob-details.tsx b/src/renderer/components/+workloads-cronjobs/cronjob-details.tsx index 12f919b4e6..c0e827d40b 100644 --- a/src/renderer/components/+workloads-cronjobs/cronjob-details.tsx +++ b/src/renderer/components/+workloads-cronjobs/cronjob-details.tsx @@ -29,9 +29,10 @@ import { Badge } from "../badge/badge"; import { jobStore } from "../+workloads-jobs/job.store"; import { Link } from "react-router-dom"; import { cronJobStore } from "./cronjob.store"; -import { getDetailsUrl, KubeObjectDetailsProps } from "../kube-object"; +import type { KubeObjectDetailsProps } from "../kube-object-details"; import type { CronJob, Job } from "../../api/endpoints"; -import { KubeObjectMeta } from "../kube-object/kube-object-meta"; +import { KubeObjectMeta } from "../kube-object-meta"; +import { getDetailsUrl } from "../kube-detail-params"; interface Props extends KubeObjectDetailsProps { } diff --git a/src/renderer/components/+workloads-cronjobs/cronjobs.tsx b/src/renderer/components/+workloads-cronjobs/cronjobs.tsx index 8dca609361..f17d8ed5f1 100644 --- a/src/renderer/components/+workloads-cronjobs/cronjobs.tsx +++ b/src/renderer/components/+workloads-cronjobs/cronjobs.tsx @@ -30,8 +30,8 @@ import { Icon } from "../icon"; import { cronJobStore } from "./cronjob.store"; import { jobStore } from "../+workloads-jobs/job.store"; import { eventStore } from "../+events/event.store"; -import type { KubeObjectMenuProps } from "../kube-object/kube-object-menu"; -import { KubeObjectListLayout } from "../kube-object"; +import type { KubeObjectMenuProps } from "../kube-object-menu"; +import { KubeObjectListLayout } from "../kube-object-list-layout"; import { CronJobTriggerDialog } from "./cronjob-trigger-dialog"; import { KubeObjectStatusIcon } from "../kube-object-status-icon"; import { ConfirmDialog } from "../confirm-dialog/confirm-dialog"; diff --git a/src/renderer/components/+workloads-daemonsets/daemonset-details.tsx b/src/renderer/components/+workloads-daemonsets/daemonset-details.tsx index e572ca5ab2..7a2fdc62e9 100644 --- a/src/renderer/components/+workloads-daemonsets/daemonset-details.tsx +++ b/src/renderer/components/+workloads-daemonsets/daemonset-details.tsx @@ -30,13 +30,13 @@ import { PodDetailsTolerations } from "../+workloads-pods/pod-details-toleration import { PodDetailsAffinities } from "../+workloads-pods/pod-details-affinities"; import { daemonSetStore } from "./daemonsets.store"; import { podsStore } from "../+workloads-pods/pods.store"; -import type { KubeObjectDetailsProps } from "../kube-object"; +import type { KubeObjectDetailsProps } from "../kube-object-details"; import { DaemonSet, getMetricsForDaemonSets, IPodMetrics } from "../../api/endpoints"; import { ResourceMetrics, ResourceMetricsText } from "../resource-metrics"; import { PodCharts, podMetricTabs } from "../+workloads-pods/pod-charts"; import { makeObservable, observable, reaction } from "mobx"; import { PodDetailsList } from "../+workloads-pods/pod-details-list"; -import { KubeObjectMeta } from "../kube-object/kube-object-meta"; +import { KubeObjectMeta } from "../kube-object-meta"; import { getActiveClusterEntity } from "../../api/catalog-entity-registry"; import { ClusterMetricsResourceType } from "../../../common/cluster-types"; import { boundMethod } from "../../utils"; diff --git a/src/renderer/components/+workloads-daemonsets/daemonsets.tsx b/src/renderer/components/+workloads-daemonsets/daemonsets.tsx index 63f04a8049..b8dcb51568 100644 --- a/src/renderer/components/+workloads-daemonsets/daemonsets.tsx +++ b/src/renderer/components/+workloads-daemonsets/daemonsets.tsx @@ -29,7 +29,7 @@ import { eventStore } from "../+events/event.store"; import { daemonSetStore } from "./daemonsets.store"; import { podsStore } from "../+workloads-pods/pods.store"; import { nodesStore } from "../+nodes/nodes.store"; -import { KubeObjectListLayout } from "../kube-object"; +import { KubeObjectListLayout } from "../kube-object-list-layout"; import { Badge } from "../badge"; import { KubeObjectStatusIcon } from "../kube-object-status-icon"; import type { DaemonSetsRouteParams } from "../../../common/routes"; diff --git a/src/renderer/components/+workloads-deployments/deployment-details.tsx b/src/renderer/components/+workloads-deployments/deployment-details.tsx index 6797df5ce1..28b450b71c 100644 --- a/src/renderer/components/+workloads-deployments/deployment-details.tsx +++ b/src/renderer/components/+workloads-deployments/deployment-details.tsx @@ -30,13 +30,13 @@ import { Deployment, getMetricsForDeployments, IPodMetrics } from "../../api/end import { PodDetailsTolerations } from "../+workloads-pods/pod-details-tolerations"; import { PodDetailsAffinities } from "../+workloads-pods/pod-details-affinities"; import { podsStore } from "../+workloads-pods/pods.store"; -import type { KubeObjectDetailsProps } from "../kube-object"; +import type { KubeObjectDetailsProps } from "../kube-object-details"; import { ResourceMetrics, ResourceMetricsText } from "../resource-metrics"; import { deploymentStore } from "./deployments.store"; import { PodCharts, podMetricTabs } from "../+workloads-pods/pod-charts"; import { makeObservable, observable, reaction } from "mobx"; import { PodDetailsList } from "../+workloads-pods/pod-details-list"; -import { KubeObjectMeta } from "../kube-object/kube-object-meta"; +import { KubeObjectMeta } from "../kube-object-meta"; import { replicaSetStore } from "../+workloads-replicasets/replicasets.store"; import { DeploymentReplicaSets } from "./deployment-replicasets"; import { getActiveClusterEntity } from "../../api/catalog-entity-registry"; diff --git a/src/renderer/components/+workloads-deployments/deployment-replicasets.tsx b/src/renderer/components/+workloads-deployments/deployment-replicasets.tsx index 0a556ddcfc..5a8e7edd5b 100644 --- a/src/renderer/components/+workloads-deployments/deployment-replicasets.tsx +++ b/src/renderer/components/+workloads-deployments/deployment-replicasets.tsx @@ -24,14 +24,14 @@ import "./deployment-replicasets.scss"; import React from "react"; import { observer } from "mobx-react"; import type { ReplicaSet } from "../../api/endpoints"; -import { KubeObjectMenu, KubeObjectMenuProps } from "../kube-object/kube-object-menu"; +import { KubeObjectMenu, KubeObjectMenuProps } from "../kube-object-menu"; import { Spinner } from "../spinner"; import { prevDefault, stopPropagation } from "../../utils"; import { DrawerTitle } from "../drawer"; import { Table, TableCell, TableHead, TableRow } from "../table"; import { KubeObjectStatusIcon } from "../kube-object-status-icon"; import { replicaSetStore } from "../+workloads-replicasets/replicasets.store"; -import { showDetails } from "../kube-object"; +import { showDetails } from "../kube-detail-params"; enum sortBy { diff --git a/src/renderer/components/+workloads-deployments/deployments.tsx b/src/renderer/components/+workloads-deployments/deployments.tsx index d43670f6e7..6531114fa9 100644 --- a/src/renderer/components/+workloads-deployments/deployments.tsx +++ b/src/renderer/components/+workloads-deployments/deployments.tsx @@ -25,7 +25,7 @@ import React from "react"; import { observer } from "mobx-react"; import type { RouteComponentProps } from "react-router"; import { Deployment, deploymentApi } from "../../api/endpoints"; -import type { KubeObjectMenuProps } from "../kube-object/kube-object-menu"; +import type { KubeObjectMenuProps } from "../kube-object-menu"; import { MenuItem } from "../menu"; import { Icon } from "../icon"; import { DeploymentScaleDialog } from "./deployment-scale-dialog"; @@ -35,7 +35,7 @@ import { replicaSetStore } from "../+workloads-replicasets/replicasets.store"; import { podsStore } from "../+workloads-pods/pods.store"; import { nodesStore } from "../+nodes/nodes.store"; import { eventStore } from "../+events/event.store"; -import { KubeObjectListLayout } from "../kube-object"; +import { KubeObjectListLayout } from "../kube-object-list-layout"; import { cssNames } from "../../utils"; import kebabCase from "lodash/kebabCase"; import orderBy from "lodash/orderBy"; diff --git a/src/renderer/components/+workloads-jobs/job-details.tsx b/src/renderer/components/+workloads-jobs/job-details.tsx index bdaa4650de..64d77732bc 100644 --- a/src/renderer/components/+workloads-jobs/job-details.tsx +++ b/src/renderer/components/+workloads-jobs/job-details.tsx @@ -32,17 +32,18 @@ import { PodDetailsTolerations } from "../+workloads-pods/pod-details-toleration import { PodDetailsAffinities } from "../+workloads-pods/pod-details-affinities"; import { podsStore } from "../+workloads-pods/pods.store"; import { jobStore } from "./job.store"; -import { getDetailsUrl, KubeObjectDetailsProps } from "../kube-object"; +import type { KubeObjectDetailsProps } from "../kube-object-details"; import { getMetricsForJobs, IPodMetrics, Job } from "../../api/endpoints"; import { PodDetailsList } from "../+workloads-pods/pod-details-list"; import { lookupApiLink } from "../../api/kube-api"; -import { KubeObjectMeta } from "../kube-object/kube-object-meta"; +import { KubeObjectMeta } from "../kube-object-meta"; import { makeObservable, observable } from "mobx"; import { podMetricTabs, PodCharts } from "../+workloads-pods/pod-charts"; import { ClusterMetricsResourceType } from "../../../common/cluster-types"; import { getActiveClusterEntity } from "../../api/catalog-entity-registry"; import { ResourceMetrics } from "../resource-metrics"; import { boundMethod } from "autobind-decorator"; +import { getDetailsUrl } from "../kube-detail-params"; interface Props extends KubeObjectDetailsProps { } diff --git a/src/renderer/components/+workloads-jobs/jobs.tsx b/src/renderer/components/+workloads-jobs/jobs.tsx index e2640db6f6..6dc2362604 100644 --- a/src/renderer/components/+workloads-jobs/jobs.tsx +++ b/src/renderer/components/+workloads-jobs/jobs.tsx @@ -27,7 +27,7 @@ import type { RouteComponentProps } from "react-router"; import { podsStore } from "../+workloads-pods/pods.store"; import { jobStore } from "./job.store"; import { eventStore } from "../+events/event.store"; -import { KubeObjectListLayout } from "../kube-object"; +import { KubeObjectListLayout } from "../kube-object-list-layout"; import kebabCase from "lodash/kebabCase"; import { KubeObjectStatusIcon } from "../kube-object-status-icon"; import type { JobsRouteParams } from "../../../common/routes"; diff --git a/src/renderer/components/+workloads-pods/pod-details-list.tsx b/src/renderer/components/+workloads-pods/pod-details-list.tsx index 8ea49c366d..2ea299f5d0 100644 --- a/src/renderer/components/+workloads-pods/pod-details-list.tsx +++ b/src/renderer/components/+workloads-pods/pod-details-list.tsx @@ -34,7 +34,7 @@ import { Table, TableCell, TableHead, TableRow } from "../table"; import { Spinner } from "../spinner"; import { DrawerTitle } from "../drawer"; import { KubeObjectStatusIcon } from "../kube-object-status-icon"; -import { showDetails } from "../kube-object"; +import { showDetails } from "../kube-detail-params"; enum sortBy { name = "name", diff --git a/src/renderer/components/+workloads-pods/pod-details-secrets.tsx b/src/renderer/components/+workloads-pods/pod-details-secrets.tsx index 9ca49c3668..93457cb360 100644 --- a/src/renderer/components/+workloads-pods/pod-details-secrets.tsx +++ b/src/renderer/components/+workloads-pods/pod-details-secrets.tsx @@ -26,7 +26,7 @@ import { Link } from "react-router-dom"; import { autorun, observable, makeObservable } from "mobx"; import { disposeOnUnmount, observer } from "mobx-react"; import { Pod, Secret, secretsApi } from "../../api/endpoints"; -import { getDetailsUrl } from "../kube-object"; +import { getDetailsUrl } from "../kube-detail-params"; interface Props { pod: Pod; diff --git a/src/renderer/components/+workloads-pods/pod-details.tsx b/src/renderer/components/+workloads-pods/pod-details.tsx index 3087cc8257..986d979cf2 100644 --- a/src/renderer/components/+workloads-pods/pod-details.tsx +++ b/src/renderer/components/+workloads-pods/pod-details.tsx @@ -36,12 +36,13 @@ import { PodDetailsTolerations } from "./pod-details-tolerations"; import { Icon } from "../icon"; import { PodDetailsSecrets } from "./pod-details-secrets"; import { ResourceMetrics } from "../resource-metrics"; -import { getDetailsUrl, KubeObjectDetailsProps } from "../kube-object"; +import type { KubeObjectDetailsProps } from "../kube-object-details"; import { getItemMetrics } from "../../api/endpoints/metrics.api"; import { PodCharts, podMetricTabs } from "./pod-charts"; -import { KubeObjectMeta } from "../kube-object/kube-object-meta"; +import { KubeObjectMeta } from "../kube-object-meta"; import { getActiveClusterEntity } from "../../api/catalog-entity-registry"; import { ClusterMetricsResourceType } from "../../../common/cluster-types"; +import { getDetailsUrl } from "../kube-detail-params"; interface Props extends KubeObjectDetailsProps { } diff --git a/src/renderer/components/+workloads-pods/pods.tsx b/src/renderer/components/+workloads-pods/pods.tsx index b91a8a98e8..a3de5764fd 100644 --- a/src/renderer/components/+workloads-pods/pods.tsx +++ b/src/renderer/components/+workloads-pods/pods.tsx @@ -28,7 +28,7 @@ import { podsStore } from "./pods.store"; import type { RouteComponentProps } from "react-router"; import { volumeClaimStore } from "../+storage-volume-claims/volume-claim.store"; import { eventStore } from "../+events/event.store"; -import { getDetailsUrl, KubeObjectListLayout } from "../kube-object"; +import { KubeObjectListLayout } from "../kube-object-list-layout"; import { nodesApi, Pod } from "../../api/endpoints"; import { StatusBrick } from "../status-brick"; import { cssNames, stopPropagation } from "../../utils"; @@ -39,6 +39,7 @@ import { lookupApiLink } from "../../api/kube-api"; import { KubeObjectStatusIcon } from "../kube-object-status-icon"; import { Badge } from "../badge"; import type { PodsRouteParams } from "../../../common/routes"; +import { getDetailsUrl } from "../kube-detail-params"; enum columnId { name = "name", diff --git a/src/renderer/components/+workloads-replicasets/replicaset-details.tsx b/src/renderer/components/+workloads-replicasets/replicaset-details.tsx index 2f84976db5..59921432c1 100644 --- a/src/renderer/components/+workloads-replicasets/replicaset-details.tsx +++ b/src/renderer/components/+workloads-replicasets/replicaset-details.tsx @@ -30,12 +30,12 @@ import { PodDetailsTolerations } from "../+workloads-pods/pod-details-toleration import { PodDetailsAffinities } from "../+workloads-pods/pod-details-affinities"; import { disposeOnUnmount, observer } from "mobx-react"; import { podsStore } from "../+workloads-pods/pods.store"; -import type { KubeObjectDetailsProps } from "../kube-object"; +import type { KubeObjectDetailsProps } from "../kube-object-details"; import { getMetricsForReplicaSets, IPodMetrics, ReplicaSet } from "../../api/endpoints"; import { ResourceMetrics, ResourceMetricsText } from "../resource-metrics"; import { PodCharts, podMetricTabs } from "../+workloads-pods/pod-charts"; import { PodDetailsList } from "../+workloads-pods/pod-details-list"; -import { KubeObjectMeta } from "../kube-object/kube-object-meta"; +import { KubeObjectMeta } from "../kube-object-meta"; import { getActiveClusterEntity } from "../../api/catalog-entity-registry"; import { ClusterMetricsResourceType } from "../../../common/cluster-types"; import { boundMethod } from "../../utils"; diff --git a/src/renderer/components/+workloads-replicasets/replicasets.tsx b/src/renderer/components/+workloads-replicasets/replicasets.tsx index 447280899f..156d3e0a13 100644 --- a/src/renderer/components/+workloads-replicasets/replicasets.tsx +++ b/src/renderer/components/+workloads-replicasets/replicasets.tsx @@ -24,11 +24,11 @@ import "./replicasets.scss"; import React from "react"; import { observer } from "mobx-react"; import type { ReplicaSet } from "../../api/endpoints"; -import type { KubeObjectMenuProps } from "../kube-object/kube-object-menu"; +import type { KubeObjectMenuProps } from "../kube-object-menu"; import { replicaSetStore } from "./replicasets.store"; import { KubeObjectStatusIcon } from "../kube-object-status-icon"; import type { RouteComponentProps } from "react-router"; -import { KubeObjectListLayout } from "../kube-object/kube-object-list-layout"; +import { KubeObjectListLayout } from "../kube-object-list-layout"; import { MenuItem } from "../menu/menu"; import { Icon } from "../icon/icon"; import { ReplicaSetScaleDialog } from "./replicaset-scale-dialog"; diff --git a/src/renderer/components/+workloads-statefulsets/statefulset-details.tsx b/src/renderer/components/+workloads-statefulsets/statefulset-details.tsx index 0dac7c8a08..e6a3cda340 100644 --- a/src/renderer/components/+workloads-statefulsets/statefulset-details.tsx +++ b/src/renderer/components/+workloads-statefulsets/statefulset-details.tsx @@ -31,12 +31,12 @@ import { PodDetailsTolerations } from "../+workloads-pods/pod-details-toleration import { PodDetailsAffinities } from "../+workloads-pods/pod-details-affinities"; import { podsStore } from "../+workloads-pods/pods.store"; import { statefulSetStore } from "./statefulset.store"; -import type { KubeObjectDetailsProps } from "../kube-object"; +import type { KubeObjectDetailsProps } from "../kube-object-details"; import { getMetricsForStatefulSets, IPodMetrics, StatefulSet } from "../../api/endpoints"; import { ResourceMetrics, ResourceMetricsText } from "../resource-metrics"; import { PodCharts, podMetricTabs } from "../+workloads-pods/pod-charts"; import { PodDetailsList } from "../+workloads-pods/pod-details-list"; -import { KubeObjectMeta } from "../kube-object/kube-object-meta"; +import { KubeObjectMeta } from "../kube-object-meta"; import { getActiveClusterEntity } from "../../api/catalog-entity-registry"; import { ClusterMetricsResourceType } from "../../../common/cluster-types"; import { boundMethod } from "../../utils"; diff --git a/src/renderer/components/+workloads-statefulsets/statefulsets.tsx b/src/renderer/components/+workloads-statefulsets/statefulsets.tsx index ff6441f33a..88997e19c7 100644 --- a/src/renderer/components/+workloads-statefulsets/statefulsets.tsx +++ b/src/renderer/components/+workloads-statefulsets/statefulsets.tsx @@ -29,8 +29,8 @@ import { podsStore } from "../+workloads-pods/pods.store"; import { statefulSetStore } from "./statefulset.store"; import { nodesStore } from "../+nodes/nodes.store"; import { eventStore } from "../+events/event.store"; -import type { KubeObjectMenuProps } from "../kube-object/kube-object-menu"; -import { KubeObjectListLayout } from "../kube-object"; +import type { KubeObjectMenuProps } from "../kube-object-menu"; +import { KubeObjectListLayout } from "../kube-object-list-layout"; import { KubeObjectStatusIcon } from "../kube-object-status-icon"; import { StatefulSetScaleDialog } from "./statefulset-scale-dialog"; import { MenuItem } from "../menu/menu"; diff --git a/src/renderer/components/app.tsx b/src/renderer/components/app.tsx index b9c56f475e..4d8195206f 100755 --- a/src/renderer/components/app.tsx +++ b/src/renderer/components/app.tsx @@ -55,7 +55,7 @@ import { TabLayout, TabLayoutRoute } from "./layout/tab-layout"; import { ErrorBoundary } from "./error-boundary"; import { MainLayout } from "./layout/main-layout"; import { Notifications } from "./notifications"; -import { KubeObjectDetails } from "./kube-object"; +import { KubeObjectDetails } from "./kube-object-details"; import { KubeConfigDialog } from "./kubeconfig-dialog"; import { Terminal } from "./dock/terminal"; import { namespaceStore } from "./+namespaces/namespace.store"; diff --git a/src/renderer/components/kube-detail-params/index.ts b/src/renderer/components/kube-detail-params/index.ts new file mode 100644 index 0000000000..146e52e6dd --- /dev/null +++ b/src/renderer/components/kube-detail-params/index.ts @@ -0,0 +1,22 @@ +/** + * Copyright (c) 2021 OpenLens Authors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +export * from "./params"; diff --git a/src/renderer/components/kube-detail-params/params.ts b/src/renderer/components/kube-detail-params/params.ts new file mode 100644 index 0000000000..09256077d0 --- /dev/null +++ b/src/renderer/components/kube-detail-params/params.ts @@ -0,0 +1,67 @@ +/** + * Copyright (c) 2021 OpenLens Authors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +import { createPageParam, navigation } from "../../navigation"; + +/** + * Used to store `object.selfLink` to show more info about resource in the details panel. + */ +export const kubeDetailsUrlParam = createPageParam({ + name: "kube-details", +}); + +/** + * Used to highlight last active/selected table row with the resource. + * + * @example + * If we go to "Nodes (page) -> Node (details) -> Pod (details)", + * last clicked Node should be "active" while Pod details are shown). + */ +export const kubeSelectedUrlParam = createPageParam({ + name: "kube-selected", + get defaultValue() { + return kubeDetailsUrlParam.get(); + } +}); + +export function showDetails(selfLink = "", resetSelected = true) { + const detailsUrl = getDetailsUrl(selfLink, resetSelected); + + navigation.merge({ search: detailsUrl }); +} + +export function hideDetails() { + showDetails(); +} + +export function getDetailsUrl(selfLink: string, resetSelected = false, mergeGlobals = true) { + console.debug("getDetailsUrl", { selfLink, resetSelected, mergeGlobals }); + const params = new URLSearchParams(mergeGlobals ? navigation.searchParams : ""); + + params.set(kubeDetailsUrlParam.name, selfLink); + + if (resetSelected) { + params.delete(kubeSelectedUrlParam.name); + } else { + params.set(kubeSelectedUrlParam.name, kubeSelectedUrlParam.get()); + } + + return `?${params}`; +} diff --git a/src/renderer/components/kube-object-details/index.ts b/src/renderer/components/kube-object-details/index.ts new file mode 100644 index 0000000000..9675c16f58 --- /dev/null +++ b/src/renderer/components/kube-object-details/index.ts @@ -0,0 +1,22 @@ +/** + * Copyright (c) 2021 OpenLens Authors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +export * from "./kube-object-details"; diff --git a/src/renderer/components/kube-object/kube-object-details.scss b/src/renderer/components/kube-object-details/kube-object-details.scss similarity index 100% rename from src/renderer/components/kube-object/kube-object-details.scss rename to src/renderer/components/kube-object-details/kube-object-details.scss diff --git a/src/renderer/components/kube-object/kube-object-details.tsx b/src/renderer/components/kube-object-details/kube-object-details.tsx similarity index 77% rename from src/renderer/components/kube-object/kube-object-details.tsx rename to src/renderer/components/kube-object-details/kube-object-details.tsx index 82c748ecdd..c561b29221 100644 --- a/src/renderer/components/kube-object/kube-object-details.tsx +++ b/src/renderer/components/kube-object-details/kube-object-details.tsx @@ -24,63 +24,18 @@ import "./kube-object-details.scss"; import React from "react"; import { disposeOnUnmount, observer } from "mobx-react"; import { computed, observable, reaction, makeObservable } from "mobx"; -import { createPageParam, navigation } from "../../navigation"; import { Drawer } from "../drawer"; import type { KubeObject } from "../../api/kube-object"; import { Spinner } from "../spinner"; import { apiManager } from "../../api/api-manager"; import { crdStore } from "../+custom-resources/crd.store"; -import { KubeObjectMenu } from "./kube-object-menu"; +import { KubeObjectMenu } from "../kube-object-menu"; import { KubeObjectDetailRegistry } from "../../api/kube-object-detail-registry"; import logger from "../../../main/logger"; import { CrdResourceDetails } from "../+custom-resources"; -import { KubeObjectMeta } from "./kube-object-meta"; +import { KubeObjectMeta } from "../kube-object-meta"; +import { hideDetails, kubeDetailsUrlParam } from "../kube-detail-params"; -/** - * Used to store `object.selfLink` to show more info about resource in the details panel. - */ -export const kubeDetailsUrlParam = createPageParam({ - name: "kube-details", -}); - -/** - * Used to highlight last active/selected table row with the resource. - * - * @example - * If we go to "Nodes (page) -> Node (details) -> Pod (details)", - * last clicked Node should be "active" while Pod details are shown). - */ -export const kubeSelectedUrlParam = createPageParam({ - name: "kube-selected", - get defaultValue() { - return kubeDetailsUrlParam.get(); - } -}); - -export function showDetails(selfLink = "", resetSelected = true) { - const detailsUrl = getDetailsUrl(selfLink, resetSelected); - - navigation.merge({ search: detailsUrl }); -} - -export function hideDetails() { - showDetails(); -} - -export function getDetailsUrl(selfLink: string, resetSelected = false, mergeGlobals = true) { - logger.debug("getDetailsUrl", { selfLink, resetSelected, mergeGlobals }); - const params = new URLSearchParams(mergeGlobals ? navigation.searchParams : ""); - - params.set(kubeDetailsUrlParam.name, selfLink); - - if (resetSelected) { - params.delete(kubeSelectedUrlParam.name); - } else { - params.set(kubeSelectedUrlParam.name, kubeSelectedUrlParam.get()); - } - - return `?${params}`; -} export interface KubeObjectDetailsProps { className?: string; diff --git a/src/renderer/components/kube-object/index.ts b/src/renderer/components/kube-object-list-layout/index.ts similarity index 91% rename from src/renderer/components/kube-object/index.ts rename to src/renderer/components/kube-object-list-layout/index.ts index 399b7643be..619820ebcc 100644 --- a/src/renderer/components/kube-object/index.ts +++ b/src/renderer/components/kube-object-list-layout/index.ts @@ -19,7 +19,4 @@ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -export * from "./kube-object-details"; export * from "./kube-object-list-layout"; -export * from "./kube-object-menu"; -export * from "./kube-object-meta"; diff --git a/src/renderer/components/kube-object/kube-object-list-layout.tsx b/src/renderer/components/kube-object-list-layout/kube-object-list-layout.tsx similarity index 96% rename from src/renderer/components/kube-object/kube-object-list-layout.tsx rename to src/renderer/components/kube-object-list-layout/kube-object-list-layout.tsx index edc9d967cc..0f0c130fbd 100644 --- a/src/renderer/components/kube-object/kube-object-list-layout.tsx +++ b/src/renderer/components/kube-object-list-layout/kube-object-list-layout.tsx @@ -24,14 +24,14 @@ import { computed, makeObservable } from "mobx"; import { disposeOnUnmount, observer } from "mobx-react"; import { cssNames } from "../../utils"; import type { KubeObject } from "../../api/kube-object"; -import { ItemListLayout, ItemListLayoutProps } from "../item-object-list/item-list-layout"; +import { ItemListLayout, ItemListLayoutProps } from "../item-object-list"; import type { KubeObjectStore } from "../../kube-object.store"; -import { KubeObjectMenu } from "./kube-object-menu"; -import { kubeSelectedUrlParam, showDetails } from "./kube-object-details"; +import { KubeObjectMenu } from "../kube-object-menu"; import { kubeWatchApi } from "../../api/kube-watch-api"; import { clusterContext } from "../context"; import { NamespaceSelectFilter } from "../+namespaces/namespace-select-filter"; import { ResourceKindMap, ResourceNames } from "../../utils/rbac"; +import { kubeSelectedUrlParam, showDetails } from "../kube-detail-params"; export interface KubeObjectListLayoutProps extends ItemListLayoutProps { store: KubeObjectStore; diff --git a/src/renderer/components/kube-object-menu/index.ts b/src/renderer/components/kube-object-menu/index.ts new file mode 100644 index 0000000000..43cd5ea4a0 --- /dev/null +++ b/src/renderer/components/kube-object-menu/index.ts @@ -0,0 +1,22 @@ +/** + * Copyright (c) 2021 OpenLens Authors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +export * from "./kube-object-menu"; diff --git a/src/renderer/components/kube-object/kube-object-menu.tsx b/src/renderer/components/kube-object-menu/kube-object-menu.tsx similarity index 98% rename from src/renderer/components/kube-object/kube-object-menu.tsx rename to src/renderer/components/kube-object-menu/kube-object-menu.tsx index f614ffc980..5da4427778 100644 --- a/src/renderer/components/kube-object/kube-object-menu.tsx +++ b/src/renderer/components/kube-object-menu/kube-object-menu.tsx @@ -24,7 +24,7 @@ import { boundMethod, cssNames } from "../../utils"; import type { KubeObject } from "../../api/kube-object"; import { editResourceTab } from "../dock/edit-resource.store"; import { MenuActions, MenuActionsProps } from "../menu/menu-actions"; -import { hideDetails } from "./kube-object-details"; +import { hideDetails } from "../kube-detail-params"; import { apiManager } from "../../api/api-manager"; import { KubeObjectMenuRegistry } from "../../../extensions/registries/kube-object-menu-registry"; @@ -85,7 +85,7 @@ export class KubeObjectMenu extends React.Component