mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
Add support for controlling entity settings visibility during runtime
Signed-off-by: Juho Heikka <juho.heikka@gmail.com>
This commit is contained in:
parent
eaa235bbbf
commit
2709edd9dd
@ -7,6 +7,8 @@ import { extensionRegistratorInjectionToken } from "../../../extensions/extensio
|
|||||||
import type { LensRendererExtension } from "../../../extensions/lens-renderer-extension";
|
import type { LensRendererExtension } from "../../../extensions/lens-renderer-extension";
|
||||||
import type { CatalogEntity } from "../../api/catalog-entity";
|
import type { CatalogEntity } from "../../api/catalog-entity";
|
||||||
import { entitySettingInjectionToken } from "./token";
|
import { entitySettingInjectionToken } from "./token";
|
||||||
|
import type { IComputedValue } from "mobx";
|
||||||
|
import { computed } from "mobx";
|
||||||
|
|
||||||
export interface EntitySettingViewProps {
|
export interface EntitySettingViewProps {
|
||||||
entity: CatalogEntity;
|
entity: CatalogEntity;
|
||||||
@ -25,6 +27,7 @@ export interface EntitySettingRegistration {
|
|||||||
id?: string;
|
id?: string;
|
||||||
priority?: number;
|
priority?: number;
|
||||||
group?: string;
|
group?: string;
|
||||||
|
visible?: IComputedValue<boolean>;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface RegisteredEntitySetting {
|
export interface RegisteredEntitySetting {
|
||||||
@ -36,6 +39,7 @@ export interface RegisteredEntitySetting {
|
|||||||
components: EntitySettingComponents;
|
components: EntitySettingComponents;
|
||||||
source?: string;
|
source?: string;
|
||||||
group: string;
|
group: string;
|
||||||
|
isShown: IComputedValue<boolean>;
|
||||||
}
|
}
|
||||||
|
|
||||||
const entitySettingExtensionRegistratorInjectable = getInjectable({
|
const entitySettingExtensionRegistratorInjectable = getInjectable({
|
||||||
@ -59,6 +63,7 @@ const getInjectableForEntitySettingRegistrationFor = (extension: LensRendererExt
|
|||||||
id = btoa(title),
|
id = btoa(title),
|
||||||
priority,
|
priority,
|
||||||
source,
|
source,
|
||||||
|
visible,
|
||||||
}: EntitySettingRegistration) => getInjectable({
|
}: EntitySettingRegistration) => getInjectable({
|
||||||
id: `${extension.manifest.name}:${group}/${kind}:${id}`,
|
id: `${extension.manifest.name}:${group}/${kind}:${id}`,
|
||||||
instantiate: () => ({
|
instantiate: () => ({
|
||||||
@ -70,6 +75,7 @@ const getInjectableForEntitySettingRegistrationFor = (extension: LensRendererExt
|
|||||||
title,
|
title,
|
||||||
group,
|
group,
|
||||||
source,
|
source,
|
||||||
|
isShown: computed(() => visible?.get() ?? true),
|
||||||
}),
|
}),
|
||||||
injectionToken: entitySettingInjectionToken,
|
injectionToken: entitySettingInjectionToken,
|
||||||
});
|
});
|
||||||
|
|||||||
@ -13,6 +13,7 @@ import { ClusterKubeconfig } from "../../cluster-settings/kubeconfig";
|
|||||||
import { ClusterNameSetting } from "../../cluster-settings/name-setting";
|
import { ClusterNameSetting } from "../../cluster-settings/name-setting";
|
||||||
import type { EntitySettingViewProps } from "../extension-registrator.injectable";
|
import type { EntitySettingViewProps } from "../extension-registrator.injectable";
|
||||||
import { entitySettingInjectionToken } from "../token";
|
import { entitySettingInjectionToken } from "../token";
|
||||||
|
import { computed } from "mobx";
|
||||||
|
|
||||||
interface Dependencies {
|
interface Dependencies {
|
||||||
getClusterById: GetClusterById;
|
getClusterById: GetClusterById;
|
||||||
@ -64,6 +65,7 @@ const generalKubernetesClusterEntitySettingsInjectable = getInjectable({
|
|||||||
components: {
|
components: {
|
||||||
View: GeneralKubernetesClusterSettings,
|
View: GeneralKubernetesClusterSettings,
|
||||||
},
|
},
|
||||||
|
isShown: computed(() => true),
|
||||||
}),
|
}),
|
||||||
injectionToken: entitySettingInjectionToken,
|
injectionToken: entitySettingInjectionToken,
|
||||||
});
|
});
|
||||||
|
|||||||
@ -12,6 +12,7 @@ import { ClusterPrometheusSetting } from "../../cluster-settings/prometheus-sett
|
|||||||
import { ShowMetricsSetting } from "../../cluster-settings/show-metrics";
|
import { ShowMetricsSetting } from "../../cluster-settings/show-metrics";
|
||||||
import type { EntitySettingViewProps } from "../extension-registrator.injectable";
|
import type { EntitySettingViewProps } from "../extension-registrator.injectable";
|
||||||
import { entitySettingInjectionToken } from "../token";
|
import { entitySettingInjectionToken } from "../token";
|
||||||
|
import { computed } from "mobx";
|
||||||
|
|
||||||
interface Dependencies {
|
interface Dependencies {
|
||||||
getClusterById: GetClusterById;
|
getClusterById: GetClusterById;
|
||||||
@ -57,6 +58,7 @@ const metricsKubernetesClusterEntitySettingsInjectable = getInjectable({
|
|||||||
components: {
|
components: {
|
||||||
View: MetricsKubernetesClusterSettings,
|
View: MetricsKubernetesClusterSettings,
|
||||||
},
|
},
|
||||||
|
isShown: computed(() => true),
|
||||||
}),
|
}),
|
||||||
injectionToken: entitySettingInjectionToken,
|
injectionToken: entitySettingInjectionToken,
|
||||||
});
|
});
|
||||||
|
|||||||
@ -10,6 +10,7 @@ import getClusterByIdInjectable from "../../../../features/cluster/storage/commo
|
|||||||
import { ClusterAccessibleNamespaces } from "../../cluster-settings/accessible-namespaces";
|
import { ClusterAccessibleNamespaces } from "../../cluster-settings/accessible-namespaces";
|
||||||
import type { EntitySettingViewProps } from "../extension-registrator.injectable";
|
import type { EntitySettingViewProps } from "../extension-registrator.injectable";
|
||||||
import { entitySettingInjectionToken } from "../token";
|
import { entitySettingInjectionToken } from "../token";
|
||||||
|
import { computed } from "mobx";
|
||||||
|
|
||||||
interface Dependencies {
|
interface Dependencies {
|
||||||
getClusterById: GetClusterById;
|
getClusterById: GetClusterById;
|
||||||
@ -48,6 +49,7 @@ const namespaceKubernetesClusterEntitySettingsInjectable = getInjectable({
|
|||||||
components: {
|
components: {
|
||||||
View: NamespaceKubernetesClusterSettings,
|
View: NamespaceKubernetesClusterSettings,
|
||||||
},
|
},
|
||||||
|
isShown: computed(() => true),
|
||||||
}),
|
}),
|
||||||
injectionToken: entitySettingInjectionToken,
|
injectionToken: entitySettingInjectionToken,
|
||||||
});
|
});
|
||||||
|
|||||||
@ -10,6 +10,7 @@ import getClusterByIdInjectable from "../../../../features/cluster/storage/commo
|
|||||||
import { ClusterNodeShellSetting } from "../../cluster-settings/node-shell-setting";
|
import { ClusterNodeShellSetting } from "../../cluster-settings/node-shell-setting";
|
||||||
import type { EntitySettingViewProps } from "../extension-registrator.injectable";
|
import type { EntitySettingViewProps } from "../extension-registrator.injectable";
|
||||||
import { entitySettingInjectionToken } from "../token";
|
import { entitySettingInjectionToken } from "../token";
|
||||||
|
import { computed } from "mobx";
|
||||||
|
|
||||||
interface Dependencies {
|
interface Dependencies {
|
||||||
getClusterById: GetClusterById;
|
getClusterById: GetClusterById;
|
||||||
@ -48,6 +49,7 @@ const nodeShellKubernetesClusterEntitySettingsInjectable = getInjectable({
|
|||||||
components: {
|
components: {
|
||||||
View: NodeShellKubernetesClusterSettings,
|
View: NodeShellKubernetesClusterSettings,
|
||||||
},
|
},
|
||||||
|
isShown: computed(() => true),
|
||||||
}),
|
}),
|
||||||
injectionToken: entitySettingInjectionToken,
|
injectionToken: entitySettingInjectionToken,
|
||||||
});
|
});
|
||||||
|
|||||||
@ -10,6 +10,7 @@ import getClusterByIdInjectable from "../../../../features/cluster/storage/commo
|
|||||||
import { ClusterProxySetting } from "../../cluster-settings/proxy-setting";
|
import { ClusterProxySetting } from "../../cluster-settings/proxy-setting";
|
||||||
import type { EntitySettingViewProps } from "../extension-registrator.injectable";
|
import type { EntitySettingViewProps } from "../extension-registrator.injectable";
|
||||||
import { entitySettingInjectionToken } from "../token";
|
import { entitySettingInjectionToken } from "../token";
|
||||||
|
import { computed } from "mobx";
|
||||||
|
|
||||||
interface Dependencies {
|
interface Dependencies {
|
||||||
getClusterById: GetClusterById;
|
getClusterById: GetClusterById;
|
||||||
@ -48,6 +49,7 @@ const proxyKubernetesClusterEntitySettingsInjectable = getInjectable({
|
|||||||
components: {
|
components: {
|
||||||
View: ProxyKubernetesClusterSettings,
|
View: ProxyKubernetesClusterSettings,
|
||||||
},
|
},
|
||||||
|
isShown: computed(() => true),
|
||||||
}),
|
}),
|
||||||
injectionToken: entitySettingInjectionToken,
|
injectionToken: entitySettingInjectionToken,
|
||||||
});
|
});
|
||||||
|
|||||||
@ -10,6 +10,7 @@ import getClusterByIdInjectable from "../../../../features/cluster/storage/commo
|
|||||||
import { ClusterLocalTerminalSetting } from "../../cluster-settings/local-terminal-settings";
|
import { ClusterLocalTerminalSetting } from "../../cluster-settings/local-terminal-settings";
|
||||||
import type { EntitySettingViewProps } from "../extension-registrator.injectable";
|
import type { EntitySettingViewProps } from "../extension-registrator.injectable";
|
||||||
import { entitySettingInjectionToken } from "../token";
|
import { entitySettingInjectionToken } from "../token";
|
||||||
|
import { computed } from "mobx";
|
||||||
|
|
||||||
interface Dependencies {
|
interface Dependencies {
|
||||||
getClusterById: GetClusterById;
|
getClusterById: GetClusterById;
|
||||||
@ -48,6 +49,7 @@ const terminalKubernetesClusterEntitySettingsInjectable = getInjectable({
|
|||||||
components: {
|
components: {
|
||||||
View: TerminalKubernetesClusterSettings,
|
View: TerminalKubernetesClusterSettings,
|
||||||
},
|
},
|
||||||
|
isShown: computed(() => true),
|
||||||
}),
|
}),
|
||||||
injectionToken: entitySettingInjectionToken,
|
injectionToken: entitySettingInjectionToken,
|
||||||
});
|
});
|
||||||
|
|||||||
@ -21,6 +21,7 @@ const catalogEntitySettingItemsInjectable = getInjectable({
|
|||||||
item.apiVersions.has(entity.apiVersion)
|
item.apiVersions.has(entity.apiVersion)
|
||||||
&& item.kind === entity.kind
|
&& item.kind === entity.kind
|
||||||
&& (!item.source || item.source === entity.metadata.source)
|
&& (!item.source || item.source === entity.metadata.source)
|
||||||
|
&& item.isShown.get()
|
||||||
))
|
))
|
||||||
.sort(byOrderNumber)
|
.sort(byOrderNumber)
|
||||||
));
|
));
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user