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

small fixes

Signed-off-by: Roman <ixrock@gmail.com>
This commit is contained in:
Roman 2020-12-17 15:39:51 +02:00
parent f92a956e33
commit 241135a8e3
6 changed files with 13 additions and 21 deletions

View File

@ -1,7 +1,7 @@
import { Component, Interface, K8sApi, LensRendererExtension } from "@k8slens/extensions";
import React from "react"; import React from "react";
import { observer } from "mobx-react"; import { observer } from "mobx-react";
import { CoffeeDoodle } from "react-open-doodles"; import { CoffeeDoodle } from "react-open-doodles";
import { Component, Interface, K8sApi, LensRendererExtension } from "@k8slens/extensions";
export interface ExamplePageProps extends Interface.PageComponentProps<ExamplePageParams> { export interface ExamplePageProps extends Interface.PageComponentProps<ExamplePageParams> {
extension: LensRendererExtension; // provided in "./renderer.tsx" extension: LensRendererExtension; // provided in "./renderer.tsx"

View File

@ -30,7 +30,7 @@ export default class ExampleExtension extends LensRendererExtension {
} }
]; ];
clusterPageMenus: Interface.PageMenuRegistration[] = [ clusterPageMenus: Interface.ClusterPageMenuRegistration[] = [
{ {
title: "Example extension", title: "Example extension",
components: { components: {

View File

@ -4,5 +4,5 @@ export type { KubeObjectDetailRegistration, KubeObjectDetailComponents } from ".
export type { KubeObjectMenuRegistration, KubeObjectMenuComponents } from "../registries/kube-object-menu-registry"; export type { KubeObjectMenuRegistration, KubeObjectMenuComponents } from "../registries/kube-object-menu-registry";
export type { KubeObjectStatusRegistration } from "../registries/kube-object-status-registry"; export type { KubeObjectStatusRegistration } from "../registries/kube-object-status-registry";
export type { PageRegistration, RegisteredPage, PageParams, PageComponentProps, PageComponents, PageTarget } from "../registries/page-registry"; export type { PageRegistration, RegisteredPage, PageParams, PageComponentProps, PageComponents, PageTarget } from "../registries/page-registry";
export type { PageMenuRegistration, PageMenuComponents } from "../registries/page-menu-registry"; export type { PageMenuRegistration, ClusterPageMenuRegistration, PageMenuComponents } from "../registries/page-menu-registry";
export type { StatusBarRegistration } from "../registries/status-bar-registry"; export type { StatusBarRegistration } from "../registries/status-bar-registry";

View File

@ -1,14 +1,13 @@
import type { AppPreferenceRegistration, ClusterFeatureRegistration, KubeObjectDetailRegistration, KubeObjectMenuRegistration, KubeObjectStatusRegistration, PageMenuRegistration, PageRegistration, StatusBarRegistration, } from "./registries"; import type { AppPreferenceRegistration, ClusterFeatureRegistration, ClusterPageMenuRegistration, KubeObjectDetailRegistration, KubeObjectMenuRegistration, KubeObjectStatusRegistration, PageMenuRegistration, PageRegistration, StatusBarRegistration, } from "./registries";
import type { Cluster } from "../main/cluster"; import type { Cluster } from "../main/cluster";
import { LensExtension } from "./lens-extension"; import { LensExtension } from "./lens-extension";
import { getExtensionPageUrl } from "./registries/page-registry"; import { getExtensionPageUrl } from "./registries/page-registry";
export class LensRendererExtension extends LensExtension { export class LensRendererExtension extends LensExtension {
globalPages: PageRegistration[] = []; globalPages: PageRegistration[] = [];
clusterPages: PageRegistration[] = []; clusterPages: PageRegistration[] = [];
globalPageMenus: PageMenuRegistration[] = []; globalPageMenus: PageMenuRegistration[] = [];
clusterPageMenus: PageMenuRegistration[] = []; clusterPageMenus: ClusterPageMenuRegistration[] = [];
kubeObjectStatusTexts: KubeObjectStatusRegistration[] = []; kubeObjectStatusTexts: KubeObjectStatusRegistration[] = [];
appPreferences: AppPreferenceRegistration[] = []; appPreferences: AppPreferenceRegistration[] = [];
clusterFeatures: ClusterFeatureRegistration[] = []; clusterFeatures: ClusterFeatureRegistration[] = [];

View File

@ -4,7 +4,7 @@ import React from "react";
import { observer } from "mobx-react"; import { observer } from "mobx-react";
import { BaseRegistry } from "./base-registry"; import { BaseRegistry } from "./base-registry";
import { LensExtension, sanitizeExtensionName } from "../lens-extension"; import { LensExtension, sanitizeExtensionName } from "../lens-extension";
import { isPageParamInit, PageParam, PageParamInit } from "../../renderer/navigation/page-param"; import { PageParam, PageParamInit } from "../../renderer/navigation/page-param";
import { createPageParam } from "../../renderer/navigation/helpers"; import { createPageParam } from "../../renderer/navigation/helpers";
export interface PageRegistration { export interface PageRegistration {
@ -103,10 +103,11 @@ export class PageRegistry extends BaseRegistry<PageRegistration, RegisteredPage>
return; return;
} }
Object.entries(params).forEach(([name, value]) => { Object.entries(params).forEach(([name, value]) => {
const paramInit: PageParamInit = isPageParamInit(value) ? value : { name, defaultValue: value }; const paramInit: PageParamInit = typeof value === "object"
? { name, ...value }
: { name, defaultValue: value };
paramInit.name ??= name; params[paramInit.name] = createPageParam(paramInit);
params[name] = createPageParam(paramInit);
}); });
return params as PageParams<PageParam>; return params as PageParams<PageParam>;

View File

@ -20,10 +20,11 @@ export class PageParam<V = any> {
protected urlName: string; protected urlName: string;
constructor(readonly init: PageParamInit<V>, protected history: IObservableHistory) { constructor(readonly init: PageParamInit<V>, protected history: IObservableHistory) {
const { isSystem, name, skipEmpty = true } = init; const { isSystem, name } = init;
this.name = name; this.name = name;
this.init.skipEmpty = skipEmpty; this.init.skipEmpty ??= true;
this.init.multiValueSep ??= ",";
// prefixing to avoid collisions with extensions // prefixing to avoid collisions with extensions
this.urlName = `${isSystem ? PageParam.SYSTEM_PREFIX : ""}${name}`; this.urlName = `${isSystem ? PageParam.SYSTEM_PREFIX : ""}${name}`;
@ -129,12 +130,3 @@ export class PageParam<V = any> {
}; };
} }
} }
export function isPageParamInit(paramInit: PageParamInit | any = {}): paramInit is PageParamInit {
const init: PageParamInit = paramInit;
return [
init.defaultValue !== undefined || init.defaultValueStringified !== undefined,
typeof init.parse === "function" && typeof init.stringify === "function",
].some(Boolean);
}