mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
Enforce some naming conventions (#4813)
This commit is contained in:
parent
dc6615f98f
commit
0b32775d40
23
.eslintrc.js
23
.eslintrc.js
@ -146,6 +146,29 @@ module.exports = {
|
|||||||
"named": "never",
|
"named": "never",
|
||||||
"asyncArrow": "always",
|
"asyncArrow": "always",
|
||||||
}],
|
}],
|
||||||
|
"@typescript-eslint/naming-convention": ["error",
|
||||||
|
{
|
||||||
|
"selector": "interface",
|
||||||
|
"format": ["PascalCase"],
|
||||||
|
"leadingUnderscore": "forbid",
|
||||||
|
"trailingUnderscore": "forbid",
|
||||||
|
"custom": {
|
||||||
|
"regex": "^Props$",
|
||||||
|
"match": false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"selector": "typeAlias",
|
||||||
|
"format": ["PascalCase"],
|
||||||
|
"leadingUnderscore": "forbid",
|
||||||
|
"trailingUnderscore": "forbid",
|
||||||
|
"custom": {
|
||||||
|
"regex": "^(Props|State)$",
|
||||||
|
"match": false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"@typescript-eslint/consistent-type-definitions": ["error", "interface"],
|
||||||
"unused-imports/no-unused-imports-ts": process.env.PROD === "true" ? "error" : "warn",
|
"unused-imports/no-unused-imports-ts": process.env.PROD === "true" ? "error" : "warn",
|
||||||
"unused-imports/no-unused-vars-ts": [
|
"unused-imports/no-unused-vars-ts": [
|
||||||
"warn", {
|
"warn", {
|
||||||
|
|||||||
@ -724,11 +724,11 @@ const {
|
|||||||
|
|
||||||
type Pod = Renderer.K8sApi.Pod;
|
type Pod = Renderer.K8sApi.Pod;
|
||||||
|
|
||||||
interface Props {
|
interface PodsDetailsListProps {
|
||||||
pods?: Pod[];
|
pods?: Pod[];
|
||||||
}
|
}
|
||||||
|
|
||||||
export class PodsDetailsList extends React.Component<Props> {
|
export class PodsDetailsList extends React.Component<PodsDetailsListProps> {
|
||||||
getTableRow = (pod: Pod) => {
|
getTableRow = (pod: Pod) => {
|
||||||
return (
|
return (
|
||||||
<TableRow key={index} nowrap>
|
<TableRow key={index} nowrap>
|
||||||
|
|||||||
@ -109,13 +109,13 @@ To allow the end-user to control the life cycle of this cluster feature the foll
|
|||||||
}
|
}
|
||||||
} = Renderer;
|
} = Renderer;
|
||||||
|
|
||||||
interface Props {
|
interface ExampleClusterFeatureSettingsProps {
|
||||||
cluster: Common.Catalog.KubernetesCluster;
|
cluster: Common.Catalog.KubernetesCluster;
|
||||||
}
|
}
|
||||||
|
|
||||||
@observer
|
@observer
|
||||||
export class ExampleClusterFeatureSettings extends React.Component<Props> {
|
export class ExampleClusterFeatureSettings extends React.Component<ExampleClusterFeatureSettingsProps> {
|
||||||
constructor(props: Props) {
|
constructor(props: ExampleClusterFeatureSettingsProps) {
|
||||||
super(props);
|
super(props);
|
||||||
makeObservable(this);
|
makeObservable(this);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -17,13 +17,13 @@ const {
|
|||||||
},
|
},
|
||||||
} = Renderer;
|
} = Renderer;
|
||||||
|
|
||||||
interface Props {
|
export interface MetricsSettingsProps {
|
||||||
cluster: Common.Catalog.KubernetesCluster;
|
cluster: Common.Catalog.KubernetesCluster;
|
||||||
}
|
}
|
||||||
|
|
||||||
@observer
|
@observer
|
||||||
export class MetricsSettings extends React.Component<Props> {
|
export class MetricsSettings extends React.Component<MetricsSettingsProps> {
|
||||||
constructor(props: Props) {
|
constructor(props: MetricsSettingsProps) {
|
||||||
super(props);
|
super(props);
|
||||||
makeObservable(this);
|
makeObservable(this);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -43,7 +43,7 @@ users:
|
|||||||
command: foo
|
command: foo
|
||||||
`;
|
`;
|
||||||
|
|
||||||
interface kubeconfig {
|
interface Kubeconfig {
|
||||||
apiVersion: string;
|
apiVersion: string;
|
||||||
clusters: [{
|
clusters: [{
|
||||||
name: string;
|
name: string;
|
||||||
@ -66,7 +66,7 @@ interface kubeconfig {
|
|||||||
preferences: {};
|
preferences: {};
|
||||||
}
|
}
|
||||||
|
|
||||||
let mockKubeConfig: kubeconfig;
|
let mockKubeConfig: Kubeconfig;
|
||||||
|
|
||||||
describe("kube helpers", () => {
|
describe("kube helpers", () => {
|
||||||
describe("validateKubeconfig", () => {
|
describe("validateKubeconfig", () => {
|
||||||
|
|||||||
@ -5,10 +5,10 @@
|
|||||||
|
|
||||||
import { EventEmitter } from "../event-emitter";
|
import { EventEmitter } from "../event-emitter";
|
||||||
|
|
||||||
export type AppEvent = {
|
export interface AppEvent {
|
||||||
name: string;
|
name: string;
|
||||||
action: string;
|
action: string;
|
||||||
params?: object;
|
params?: object;
|
||||||
};
|
}
|
||||||
|
|
||||||
export const appEventBus = new EventEmitter<[AppEvent]>();
|
export const appEventBus = new EventEmitter<[AppEvent]>();
|
||||||
|
|||||||
@ -14,9 +14,9 @@ export interface WebLinkStatus extends CatalogEntityStatus {
|
|||||||
phase: WebLinkStatusPhase;
|
phase: WebLinkStatusPhase;
|
||||||
}
|
}
|
||||||
|
|
||||||
export type WebLinkSpec = {
|
export interface WebLinkSpec {
|
||||||
url: string;
|
url: string;
|
||||||
};
|
}
|
||||||
|
|
||||||
export class WebLink extends CatalogEntity<CatalogEntityMetadata, WebLinkStatus, WebLinkSpec> {
|
export class WebLink extends CatalogEntity<CatalogEntityMetadata, WebLinkStatus, WebLinkSpec> {
|
||||||
public static readonly apiVersion = "entity.k8slens.dev/v1alpha1";
|
public static readonly apiVersion = "entity.k8slens.dev/v1alpha1";
|
||||||
|
|||||||
@ -9,12 +9,12 @@ import { crdResourcesURL } from "../../routes";
|
|||||||
import { isClusterPageContext } from "../../utils/cluster-id-url-parsing";
|
import { isClusterPageContext } from "../../utils/cluster-id-url-parsing";
|
||||||
import type { KubeJsonApiData } from "../kube-json-api";
|
import type { KubeJsonApiData } from "../kube-json-api";
|
||||||
|
|
||||||
type AdditionalPrinterColumnsCommon = {
|
interface AdditionalPrinterColumnsCommon {
|
||||||
name: string;
|
name: string;
|
||||||
type: "integer" | "number" | "string" | "boolean" | "date";
|
type: "integer" | "number" | "string" | "boolean" | "date";
|
||||||
priority: number;
|
priority: number;
|
||||||
description: string;
|
description: string;
|
||||||
};
|
}
|
||||||
|
|
||||||
export type AdditionalPrinterColumnsV1 = AdditionalPrinterColumnsCommon & {
|
export type AdditionalPrinterColumnsV1 = AdditionalPrinterColumnsCommon & {
|
||||||
jsonPath: string;
|
jsonPath: string;
|
||||||
|
|||||||
@ -216,7 +216,7 @@ export function ensureObjectSelfLink(api: KubeApi<KubeObject>, object: KubeJsonA
|
|||||||
|
|
||||||
export type KubeApiWatchCallback = (data: IKubeWatchEvent<KubeJsonApiData>, error: any) => void;
|
export type KubeApiWatchCallback = (data: IKubeWatchEvent<KubeJsonApiData>, error: any) => void;
|
||||||
|
|
||||||
export type KubeApiWatchOptions = {
|
export interface KubeApiWatchOptions {
|
||||||
namespace: string;
|
namespace: string;
|
||||||
callback?: KubeApiWatchCallback;
|
callback?: KubeApiWatchCallback;
|
||||||
abortController?: AbortController;
|
abortController?: AbortController;
|
||||||
@ -225,7 +225,7 @@ export type KubeApiWatchOptions = {
|
|||||||
|
|
||||||
// timeout in seconds
|
// timeout in seconds
|
||||||
timeout?: number;
|
timeout?: number;
|
||||||
};
|
}
|
||||||
|
|
||||||
export type KubeApiPatchType = "merge" | "json" | "strategic";
|
export type KubeApiPatchType = "merge" | "json" | "strategic";
|
||||||
|
|
||||||
|
|||||||
@ -40,9 +40,10 @@ export * from "./splitArray";
|
|||||||
export * from "./tar";
|
export * from "./tar";
|
||||||
export * from "./toJS";
|
export * from "./toJS";
|
||||||
export * from "./type-narrowing";
|
export * from "./type-narrowing";
|
||||||
export * from "./types";
|
|
||||||
export * from "./wait-for-path";
|
export * from "./wait-for-path";
|
||||||
|
|
||||||
|
export type { Tuple } from "./tuple";
|
||||||
|
|
||||||
import * as iter from "./iter";
|
import * as iter from "./iter";
|
||||||
import * as array from "./array";
|
import * as array from "./array";
|
||||||
import * as tuple from "./tuple";
|
import * as tuple from "./tuple";
|
||||||
|
|||||||
@ -3,7 +3,7 @@
|
|||||||
* Licensed under MIT License. See LICENSE in root directory for more information.
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
type StaticThis<T, R extends any[]> = { new(...args: R): T };
|
interface StaticThis<T, R extends any[]> { new(...args: R): T }
|
||||||
|
|
||||||
export class Singleton {
|
export class Singleton {
|
||||||
private static instances = new WeakMap<object, Singleton>();
|
private static instances = new WeakMap<object, Singleton>();
|
||||||
|
|||||||
@ -8,8 +8,14 @@ import * as array from "../utils/array";
|
|||||||
/**
|
/**
|
||||||
* A strict N-tuple of type T
|
* A strict N-tuple of type T
|
||||||
*/
|
*/
|
||||||
export type Tuple<T, N extends number> = N extends N ? number extends N ? T[] : _TupleOf<T, N, []> : never;
|
export type Tuple<T, N extends number> = N extends N
|
||||||
type _TupleOf<T, N extends number, R extends unknown[]> = R["length"] extends N ? R : _TupleOf<T, N, [T, ...R]>;
|
? number extends N
|
||||||
|
? T[]
|
||||||
|
: TupleOfImpl<T, N, []>
|
||||||
|
: never;
|
||||||
|
type TupleOfImpl<T, N extends number, R extends unknown[]> = R["length"] extends N
|
||||||
|
? R
|
||||||
|
: TupleOfImpl<T, N, [T, ...R]>;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Iterates over `sources` yielding full tuples until one of the tuple arrays
|
* Iterates over `sources` yielding full tuples until one of the tuple arrays
|
||||||
|
|||||||
@ -1,10 +0,0 @@
|
|||||||
/**
|
|
||||||
* Copyright (c) OpenLens Authors. All rights reserved.
|
|
||||||
* Licensed under MIT License. See LICENSE in root directory for more information.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* An N length tuple of T
|
|
||||||
*/
|
|
||||||
export type Tuple<T, N extends number> = N extends N ? number extends N ? T[] : _TupleOf<T, N, []> : never;
|
|
||||||
type _TupleOf<T, N extends number, R extends unknown[]> = R["length"] extends N ? R : _TupleOf<T, N, [T, ...R]>;
|
|
||||||
@ -3,11 +3,11 @@
|
|||||||
* Licensed under MIT License. See LICENSE in root directory for more information.
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
export type KubeObjectStatus = {
|
export interface KubeObjectStatus {
|
||||||
level: KubeObjectStatusLevel;
|
level: KubeObjectStatusLevel;
|
||||||
text: string;
|
text: string;
|
||||||
timestamp?: string;
|
timestamp?: string;
|
||||||
};
|
}
|
||||||
|
|
||||||
export enum KubeObjectStatusLevel {
|
export enum KubeObjectStatusLevel {
|
||||||
INFO = 1,
|
INFO = 1,
|
||||||
|
|||||||
@ -7,10 +7,10 @@ import type { RequestPromiseOptions } from "request-promise-native";
|
|||||||
import type { Cluster } from "../../common/cluster/cluster";
|
import type { Cluster } from "../../common/cluster/cluster";
|
||||||
import { k8sRequest } from "../k8s-request";
|
import { k8sRequest } from "../k8s-request";
|
||||||
|
|
||||||
export type ClusterDetectionResult = {
|
export interface ClusterDetectionResult {
|
||||||
value: string | number | boolean;
|
value: string | number | boolean;
|
||||||
accuracy: number;
|
accuracy: number;
|
||||||
};
|
}
|
||||||
|
|
||||||
export class BaseClusterDetector {
|
export class BaseClusterDetector {
|
||||||
key: string;
|
key: string;
|
||||||
|
|||||||
@ -11,13 +11,13 @@ import * as tar from "tar";
|
|||||||
import { isWindows } from "../common/vars";
|
import { isWindows } from "../common/vars";
|
||||||
import type winston from "winston";
|
import type winston from "winston";
|
||||||
|
|
||||||
export type LensBinaryOpts = {
|
export interface LensBinaryOpts {
|
||||||
version: string;
|
version: string;
|
||||||
baseDir: string;
|
baseDir: string;
|
||||||
originalBinaryName: string;
|
originalBinaryName: string;
|
||||||
newBinaryName?: string;
|
newBinaryName?: string;
|
||||||
requestOpts?: request.Options;
|
requestOpts?: request.Options;
|
||||||
};
|
}
|
||||||
|
|
||||||
export class LensBinary {
|
export class LensBinary {
|
||||||
|
|
||||||
|
|||||||
@ -7,12 +7,12 @@ import type { CoreV1Api } from "@kubernetes/client-node";
|
|||||||
import { inspect } from "util";
|
import { inspect } from "util";
|
||||||
import { Singleton } from "../../common/utils";
|
import { Singleton } from "../../common/utils";
|
||||||
|
|
||||||
export type PrometheusService = {
|
export interface PrometheusService {
|
||||||
id: string;
|
id: string;
|
||||||
namespace: string;
|
namespace: string;
|
||||||
service: string;
|
service: string;
|
||||||
port: number;
|
port: number;
|
||||||
};
|
}
|
||||||
|
|
||||||
export abstract class PrometheusProvider {
|
export abstract class PrometheusProvider {
|
||||||
abstract readonly id: string;
|
abstract readonly id: string;
|
||||||
|
|||||||
@ -15,9 +15,9 @@ import { EventEmitter } from "events";
|
|||||||
import { navigate } from "../../navigation";
|
import { navigate } from "../../navigation";
|
||||||
import { catalogCategoryRegistry } from "../../api/catalog-category-registry";
|
import { catalogCategoryRegistry } from "../../api/catalog-category-registry";
|
||||||
|
|
||||||
export type CatalogAddButtonProps = {
|
export interface CatalogAddButtonProps {
|
||||||
category: CatalogCategory;
|
category: CatalogCategory;
|
||||||
};
|
}
|
||||||
|
|
||||||
type CategoryId = string;
|
type CategoryId = string;
|
||||||
|
|
||||||
|
|||||||
@ -16,14 +16,14 @@ import { cssNames } from "../../utils";
|
|||||||
import { Avatar } from "../avatar";
|
import { Avatar } from "../avatar";
|
||||||
import { getLabelBadges } from "./helpers";
|
import { getLabelBadges } from "./helpers";
|
||||||
|
|
||||||
interface Props<T extends CatalogEntity> {
|
export interface CatalogEntityDetailsProps<T extends CatalogEntity> {
|
||||||
entity: T;
|
entity: T;
|
||||||
hideDetails(): void;
|
hideDetails(): void;
|
||||||
onRun: () => void;
|
onRun: () => void;
|
||||||
}
|
}
|
||||||
|
|
||||||
@observer
|
@observer
|
||||||
export class CatalogEntityDetails<T extends CatalogEntity> extends Component<Props<T>> {
|
export class CatalogEntityDetails<T extends CatalogEntity> extends Component<CatalogEntityDetailsProps<T>> {
|
||||||
categoryIcon(category: CatalogCategory) {
|
categoryIcon(category: CatalogCategory) {
|
||||||
if (Icon.isSvg(category.metadata.icon)) {
|
if (Icon.isSvg(category.metadata.icon)) {
|
||||||
return <Icon svg={category.metadata.icon} smallest />;
|
return <Icon svg={category.metadata.icon} smallest />;
|
||||||
|
|||||||
@ -15,10 +15,10 @@ import { cssNames } from "../../utils";
|
|||||||
import type { CatalogCategory } from "../../api/catalog-entity";
|
import type { CatalogCategory } from "../../api/catalog-entity";
|
||||||
import { observer } from "mobx-react";
|
import { observer } from "mobx-react";
|
||||||
|
|
||||||
type Props = {
|
export interface CatalogMenuProps {
|
||||||
activeItem: string;
|
activeItem: string;
|
||||||
onItemClick: (id: string) => void;
|
onItemClick: (id: string) => void;
|
||||||
};
|
}
|
||||||
|
|
||||||
function getCategories() {
|
function getCategories() {
|
||||||
return catalogCategoryRegistry.filteredItems;
|
return catalogCategoryRegistry.filteredItems;
|
||||||
@ -42,7 +42,7 @@ function Item(props: TreeItemProps) {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
export const CatalogMenu = observer((props: Props) => {
|
export const CatalogMenu = observer((props: CatalogMenuProps) => {
|
||||||
return (
|
return (
|
||||||
// Overwrite Material UI styles with injectFirst https://material-ui.com/guides/interoperability/#controlling-priority-4
|
// Overwrite Material UI styles with injectFirst https://material-ui.com/guides/interoperability/#controlling-priority-4
|
||||||
<StylesProvider injectFirst>
|
<StylesProvider injectFirst>
|
||||||
|
|||||||
@ -37,7 +37,7 @@ import type { RegisteredCustomCategoryViewDecl } from "./custom-views.injectable
|
|||||||
import customCategoryViewsInjectable from "./custom-views.injectable";
|
import customCategoryViewsInjectable from "./custom-views.injectable";
|
||||||
import type { CustomCategoryViewComponents } from "./custom-views";
|
import type { CustomCategoryViewComponents } from "./custom-views";
|
||||||
|
|
||||||
interface Props extends RouteComponentProps<CatalogViewRouteParam> {}
|
export interface CatalogProps extends RouteComponentProps<CatalogViewRouteParam> {}
|
||||||
|
|
||||||
interface Dependencies {
|
interface Dependencies {
|
||||||
catalogPreviousActiveTabStorage: { set: (value: string ) => void };
|
catalogPreviousActiveTabStorage: { set: (value: string ) => void };
|
||||||
@ -47,11 +47,11 @@ interface Dependencies {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@observer
|
@observer
|
||||||
class NonInjectedCatalog extends React.Component<Props & Dependencies> {
|
class NonInjectedCatalog extends React.Component<CatalogProps & Dependencies> {
|
||||||
@observable private contextMenu: CatalogEntityContextMenuContext;
|
@observable private contextMenu: CatalogEntityContextMenuContext;
|
||||||
@observable activeTab?: string;
|
@observable activeTab?: string;
|
||||||
|
|
||||||
constructor(props: Props & Dependencies) {
|
constructor(props: CatalogProps & Dependencies) {
|
||||||
super(props);
|
super(props);
|
||||||
makeObservable(this);
|
makeObservable(this);
|
||||||
}
|
}
|
||||||
@ -305,7 +305,7 @@ class NonInjectedCatalog extends React.Component<Props & Dependencies> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export const Catalog = withInjectables<Dependencies, Props>( NonInjectedCatalog, {
|
export const Catalog = withInjectables<Dependencies, CatalogProps>( NonInjectedCatalog, {
|
||||||
getProps: (di, props) => ({
|
getProps: (di, props) => ({
|
||||||
catalogEntityStore: di.inject(catalogEntityStoreInjectable),
|
catalogEntityStore: di.inject(catalogEntityStoreInjectable),
|
||||||
catalogPreviousActiveTabStorage: di.inject(catalogPreviousActiveTabStorageInjectable),
|
catalogPreviousActiveTabStorage: di.inject(catalogPreviousActiveTabStorageInjectable),
|
||||||
|
|||||||
@ -20,7 +20,7 @@ import { ThemeStore } from "../../theme.store";
|
|||||||
import { kubeSelectedUrlParam, toggleDetails } from "../kube-detail-params";
|
import { kubeSelectedUrlParam, toggleDetails } from "../kube-detail-params";
|
||||||
import { apiManager } from "../../../common/k8s-api/api-manager";
|
import { apiManager } from "../../../common/k8s-api/api-manager";
|
||||||
|
|
||||||
interface Props {
|
export interface ClusterIssuesProps {
|
||||||
className?: string;
|
className?: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -39,14 +39,14 @@ enum sortBy {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@observer
|
@observer
|
||||||
export class ClusterIssues extends React.Component<Props> {
|
export class ClusterIssues extends React.Component<ClusterIssuesProps> {
|
||||||
private sortCallbacks = {
|
private sortCallbacks = {
|
||||||
[sortBy.type]: (warning: IWarning) => warning.kind,
|
[sortBy.type]: (warning: IWarning) => warning.kind,
|
||||||
[sortBy.object]: (warning: IWarning) => warning.getName(),
|
[sortBy.object]: (warning: IWarning) => warning.getName(),
|
||||||
[sortBy.age]: (warning: IWarning) => warning.timeDiffFromNow,
|
[sortBy.age]: (warning: IWarning) => warning.timeDiffFromNow,
|
||||||
};
|
};
|
||||||
|
|
||||||
constructor(props: Props) {
|
constructor(props: ClusterIssuesProps) {
|
||||||
super(props);
|
super(props);
|
||||||
makeObservable(this);
|
makeObservable(this);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -7,11 +7,11 @@ import React from "react";
|
|||||||
import { Icon } from "../icon";
|
import { Icon } from "../icon";
|
||||||
import { cssNames } from "../../utils";
|
import { cssNames } from "../../utils";
|
||||||
|
|
||||||
interface Props {
|
export interface ClusterNoMetricsProps {
|
||||||
className: string;
|
className: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function ClusterNoMetrics({ className }: Props) {
|
export function ClusterNoMetrics({ className }: ClusterNoMetricsProps) {
|
||||||
return (
|
return (
|
||||||
<div className={cssNames("ClusterNoMetrics flex column box grow justify-center align-center", className)}>
|
<div className={cssNames("ClusterNoMetrics flex column box grow justify-center align-center", className)}>
|
||||||
<Icon material="info"/>
|
<Icon material="info"/>
|
||||||
|
|||||||
@ -27,11 +27,11 @@ enum columnId {
|
|||||||
status = "status",
|
status = "status",
|
||||||
}
|
}
|
||||||
|
|
||||||
interface Props extends RouteComponentProps<HpaRouteParams> {
|
export interface HorizontalPodAutoscalersProps extends RouteComponentProps<HpaRouteParams> {
|
||||||
}
|
}
|
||||||
|
|
||||||
@observer
|
@observer
|
||||||
export class HorizontalPodAutoscalers extends React.Component<Props> {
|
export class HorizontalPodAutoscalers extends React.Component<HorizontalPodAutoscalersProps> {
|
||||||
getTargets(hpa: HorizontalPodAutoscaler) {
|
getTargets(hpa: HorizontalPodAutoscaler) {
|
||||||
const metrics = hpa.getMetrics();
|
const metrics = hpa.getMetrics();
|
||||||
|
|
||||||
|
|||||||
@ -14,7 +14,7 @@ import { DrawerItem } from "../drawer/drawer-item";
|
|||||||
import { Badge } from "../badge";
|
import { Badge } from "../badge";
|
||||||
import logger from "../../../common/logger";
|
import logger from "../../../common/logger";
|
||||||
|
|
||||||
interface Props extends KubeObjectDetailsProps<LimitRange> {
|
export interface LimitRangeDetailsProps extends KubeObjectDetailsProps<LimitRange> {
|
||||||
}
|
}
|
||||||
|
|
||||||
function renderLimit(limit: LimitRangeItem, part: LimitPart, resource: Resource) {
|
function renderLimit(limit: LimitRangeItem, part: LimitPart, resource: Resource) {
|
||||||
@ -52,7 +52,7 @@ function renderLimitDetails(limits: LimitRangeItem[], resources: Resource[]) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@observer
|
@observer
|
||||||
export class LimitRangeDetails extends React.Component<Props> {
|
export class LimitRangeDetails extends React.Component<LimitRangeDetailsProps> {
|
||||||
render() {
|
render() {
|
||||||
const { object: limitRange } = this.props;
|
const { object: limitRange } = this.props;
|
||||||
|
|
||||||
|
|||||||
@ -19,11 +19,11 @@ enum columnId {
|
|||||||
age = "age",
|
age = "age",
|
||||||
}
|
}
|
||||||
|
|
||||||
interface Props extends RouteComponentProps<LimitRangeRouteParams> {
|
export interface LimitRangesProps extends RouteComponentProps<LimitRangeRouteParams> {
|
||||||
}
|
}
|
||||||
|
|
||||||
@observer
|
@observer
|
||||||
export class LimitRanges extends React.Component<Props> {
|
export class LimitRanges extends React.Component<LimitRangesProps> {
|
||||||
render() {
|
render() {
|
||||||
return (
|
return (
|
||||||
<KubeObjectListLayout
|
<KubeObjectListLayout
|
||||||
|
|||||||
@ -18,15 +18,15 @@ import { ConfigMap } from "../../../common/k8s-api/endpoints";
|
|||||||
import { KubeObjectMeta } from "../kube-object-meta";
|
import { KubeObjectMeta } from "../kube-object-meta";
|
||||||
import logger from "../../../common/logger";
|
import logger from "../../../common/logger";
|
||||||
|
|
||||||
interface Props extends KubeObjectDetailsProps<ConfigMap> {
|
export interface ConfigMapDetailsProps extends KubeObjectDetailsProps<ConfigMap> {
|
||||||
}
|
}
|
||||||
|
|
||||||
@observer
|
@observer
|
||||||
export class ConfigMapDetails extends React.Component<Props> {
|
export class ConfigMapDetails extends React.Component<ConfigMapDetailsProps> {
|
||||||
@observable isSaving = false;
|
@observable isSaving = false;
|
||||||
@observable data = observable.map<string, string>();
|
@observable data = observable.map<string, string>();
|
||||||
|
|
||||||
constructor(props: Props) {
|
constructor(props: ConfigMapDetailsProps) {
|
||||||
super(props);
|
super(props);
|
||||||
makeObservable(this);
|
makeObservable(this);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -20,11 +20,11 @@ enum columnId {
|
|||||||
age = "age",
|
age = "age",
|
||||||
}
|
}
|
||||||
|
|
||||||
interface Props extends RouteComponentProps<ConfigMapsRouteParams> {
|
export interface ConfigMapsProps extends RouteComponentProps<ConfigMapsRouteParams> {
|
||||||
}
|
}
|
||||||
|
|
||||||
@observer
|
@observer
|
||||||
export class ConfigMaps extends React.Component<Props> {
|
export class ConfigMaps extends React.Component<ConfigMapsProps> {
|
||||||
render() {
|
render() {
|
||||||
return (
|
return (
|
||||||
<KubeObjectListLayout
|
<KubeObjectListLayout
|
||||||
|
|||||||
@ -14,11 +14,11 @@ import { PodDisruptionBudget } from "../../../common/k8s-api/endpoints";
|
|||||||
import { KubeObjectMeta } from "../kube-object-meta";
|
import { KubeObjectMeta } from "../kube-object-meta";
|
||||||
import logger from "../../../common/logger";
|
import logger from "../../../common/logger";
|
||||||
|
|
||||||
interface Props extends KubeObjectDetailsProps<PodDisruptionBudget> {
|
export interface PodDisruptionBudgetDetailsProps extends KubeObjectDetailsProps<PodDisruptionBudget> {
|
||||||
}
|
}
|
||||||
|
|
||||||
@observer
|
@observer
|
||||||
export class PodDisruptionBudgetDetails extends React.Component<Props> {
|
export class PodDisruptionBudgetDetails extends React.Component<PodDisruptionBudgetDetailsProps> {
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
const { object: pdb } = this.props;
|
const { object: pdb } = this.props;
|
||||||
|
|||||||
@ -23,11 +23,11 @@ enum columnId {
|
|||||||
age = "age",
|
age = "age",
|
||||||
}
|
}
|
||||||
|
|
||||||
interface Props extends KubeObjectDetailsProps<PodDisruptionBudget> {
|
export interface PodDisruptionBudgetsProps extends KubeObjectDetailsProps<PodDisruptionBudget> {
|
||||||
}
|
}
|
||||||
|
|
||||||
@observer
|
@observer
|
||||||
export class PodDisruptionBudgets extends React.Component<Props> {
|
export class PodDisruptionBudgets extends React.Component<PodDisruptionBudgetsProps> {
|
||||||
render() {
|
render() {
|
||||||
return (
|
return (
|
||||||
<KubeObjectListLayout
|
<KubeObjectListLayout
|
||||||
|
|||||||
@ -20,7 +20,7 @@ import { Notifications } from "../notifications";
|
|||||||
import { NamespaceSelect } from "../+namespaces/namespace-select";
|
import { NamespaceSelect } from "../+namespaces/namespace-select";
|
||||||
import { SubTitle } from "../layout/sub-title";
|
import { SubTitle } from "../layout/sub-title";
|
||||||
|
|
||||||
interface Props extends DialogProps {
|
export interface AddQuotaDialogProps extends DialogProps {
|
||||||
}
|
}
|
||||||
|
|
||||||
const dialogState = observable.object({
|
const dialogState = observable.object({
|
||||||
@ -28,7 +28,7 @@ const dialogState = observable.object({
|
|||||||
});
|
});
|
||||||
|
|
||||||
@observer
|
@observer
|
||||||
export class AddQuotaDialog extends React.Component<Props> {
|
export class AddQuotaDialog extends React.Component<AddQuotaDialogProps> {
|
||||||
static defaultQuotas: IResourceQuotaValues = {
|
static defaultQuotas: IResourceQuotaValues = {
|
||||||
"limits.cpu": "",
|
"limits.cpu": "",
|
||||||
"limits.memory": "",
|
"limits.memory": "",
|
||||||
@ -58,7 +58,7 @@ export class AddQuotaDialog extends React.Component<Props> {
|
|||||||
@observable namespace = this.defaultNamespace;
|
@observable namespace = this.defaultNamespace;
|
||||||
@observable quotas = AddQuotaDialog.defaultQuotas;
|
@observable quotas = AddQuotaDialog.defaultQuotas;
|
||||||
|
|
||||||
constructor(props: Props) {
|
constructor(props: AddQuotaDialogProps) {
|
||||||
super(props);
|
super(props);
|
||||||
makeObservable(this);
|
makeObservable(this);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -16,7 +16,7 @@ import { Table, TableCell, TableHead, TableRow } from "../table";
|
|||||||
import { KubeObjectMeta } from "../kube-object-meta";
|
import { KubeObjectMeta } from "../kube-object-meta";
|
||||||
import logger from "../../../common/logger";
|
import logger from "../../../common/logger";
|
||||||
|
|
||||||
interface Props extends KubeObjectDetailsProps<ResourceQuota> {
|
export interface ResourceQuotaDetailsProps extends KubeObjectDetailsProps<ResourceQuota> {
|
||||||
}
|
}
|
||||||
|
|
||||||
function transformUnit(name: string, value: string): number {
|
function transformUnit(name: string, value: string): number {
|
||||||
@ -58,7 +58,7 @@ function renderQuotas(quota: ResourceQuota): JSX.Element[] {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@observer
|
@observer
|
||||||
export class ResourceQuotaDetails extends React.Component<Props> {
|
export class ResourceQuotaDetails extends React.Component<ResourceQuotaDetailsProps> {
|
||||||
render() {
|
render() {
|
||||||
const { object: quota } = this.props;
|
const { object: quota } = this.props;
|
||||||
|
|
||||||
|
|||||||
@ -20,11 +20,11 @@ enum columnId {
|
|||||||
age = "age",
|
age = "age",
|
||||||
}
|
}
|
||||||
|
|
||||||
interface Props extends RouteComponentProps<ResourceQuotaRouteParams> {
|
export interface ResourceQuotasProps extends RouteComponentProps<ResourceQuotaRouteParams> {
|
||||||
}
|
}
|
||||||
|
|
||||||
@observer
|
@observer
|
||||||
export class ResourceQuotas extends React.Component<Props> {
|
export class ResourceQuotas extends React.Component<ResourceQuotasProps> {
|
||||||
render() {
|
render() {
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
|
|||||||
@ -23,7 +23,7 @@ import { Notifications } from "../notifications";
|
|||||||
import upperFirst from "lodash/upperFirst";
|
import upperFirst from "lodash/upperFirst";
|
||||||
import { showDetails } from "../kube-detail-params";
|
import { showDetails } from "../kube-detail-params";
|
||||||
|
|
||||||
interface Props extends Partial<DialogProps> {
|
export interface AddSecretDialogProps extends Partial<DialogProps> {
|
||||||
}
|
}
|
||||||
|
|
||||||
interface ISecretTemplateField {
|
interface ISecretTemplateField {
|
||||||
@ -46,8 +46,8 @@ const dialogState = observable.object({
|
|||||||
});
|
});
|
||||||
|
|
||||||
@observer
|
@observer
|
||||||
export class AddSecretDialog extends React.Component<Props> {
|
export class AddSecretDialog extends React.Component<AddSecretDialogProps> {
|
||||||
constructor(props: Props) {
|
constructor(props: AddSecretDialogProps) {
|
||||||
super(props);
|
super(props);
|
||||||
makeObservable(this);
|
makeObservable(this);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -20,16 +20,16 @@ import { Secret } from "../../../common/k8s-api/endpoints";
|
|||||||
import { KubeObjectMeta } from "../kube-object-meta";
|
import { KubeObjectMeta } from "../kube-object-meta";
|
||||||
import logger from "../../../common/logger";
|
import logger from "../../../common/logger";
|
||||||
|
|
||||||
interface Props extends KubeObjectDetailsProps<Secret> {
|
export interface SecretDetailsProps extends KubeObjectDetailsProps<Secret> {
|
||||||
}
|
}
|
||||||
|
|
||||||
@observer
|
@observer
|
||||||
export class SecretDetails extends React.Component<Props> {
|
export class SecretDetails extends React.Component<SecretDetailsProps> {
|
||||||
@observable isSaving = false;
|
@observable isSaving = false;
|
||||||
@observable data: { [name: string]: string } = {};
|
@observable data: { [name: string]: string } = {};
|
||||||
@observable revealSecret = observable.set<string>();
|
@observable revealSecret = observable.set<string>();
|
||||||
|
|
||||||
constructor(props: Props) {
|
constructor(props: SecretDetailsProps) {
|
||||||
super(props);
|
super(props);
|
||||||
makeObservable(this);
|
makeObservable(this);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -24,11 +24,11 @@ enum columnId {
|
|||||||
age = "age",
|
age = "age",
|
||||||
}
|
}
|
||||||
|
|
||||||
interface Props extends RouteComponentProps<SecretsRouteParams> {
|
export interface SecretsProps extends RouteComponentProps<SecretsRouteParams> {
|
||||||
}
|
}
|
||||||
|
|
||||||
@observer
|
@observer
|
||||||
export class Secrets extends React.Component<Props> {
|
export class Secrets extends React.Component<SecretsProps> {
|
||||||
render() {
|
render() {
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
|
|||||||
@ -18,11 +18,11 @@ import { KubeObjectMeta } from "../kube-object-meta";
|
|||||||
import { MonacoEditor } from "../monaco-editor";
|
import { MonacoEditor } from "../monaco-editor";
|
||||||
import logger from "../../../common/logger";
|
import logger from "../../../common/logger";
|
||||||
|
|
||||||
interface Props extends KubeObjectDetailsProps<CustomResourceDefinition> {
|
export interface CRDDetailsProps extends KubeObjectDetailsProps<CustomResourceDefinition> {
|
||||||
}
|
}
|
||||||
|
|
||||||
@observer
|
@observer
|
||||||
export class CRDDetails extends React.Component<Props> {
|
export class CRDDetails extends React.Component<CRDDetailsProps> {
|
||||||
render() {
|
render() {
|
||||||
const { object: crd } = this.props;
|
const { object: crd } = this.props;
|
||||||
|
|
||||||
|
|||||||
@ -32,7 +32,7 @@ enum columnId {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@observer
|
@observer
|
||||||
export class CrdList extends React.Component {
|
export class CustomResourceDefinitions extends React.Component {
|
||||||
constructor(props: {}) {
|
constructor(props: {}) {
|
||||||
super(props);
|
super(props);
|
||||||
makeObservable(this);
|
makeObservable(this);
|
||||||
|
|||||||
@ -19,7 +19,7 @@ import { parseJsonPath } from "../../utils/jsonPath";
|
|||||||
import { KubeObject, KubeObjectMetadata, KubeObjectStatus } from "../../../common/k8s-api/kube-object";
|
import { KubeObject, KubeObjectMetadata, KubeObjectStatus } from "../../../common/k8s-api/kube-object";
|
||||||
import logger from "../../../common/logger";
|
import logger from "../../../common/logger";
|
||||||
|
|
||||||
interface Props extends KubeObjectDetailsProps<KubeObject> {
|
export interface CustomResourceDetailsProps extends KubeObjectDetailsProps<KubeObject> {
|
||||||
crd: CustomResourceDefinition;
|
crd: CustomResourceDefinition;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -44,7 +44,7 @@ function convertSpecValue(value: any): any {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@observer
|
@observer
|
||||||
export class CrdResourceDetails extends React.Component<Props> {
|
export class CustomResourceDetails extends React.Component<CustomResourceDetailsProps> {
|
||||||
renderAdditionalColumns(resource: KubeObject, columns: AdditionalPrinterColumnsV1[]) {
|
renderAdditionalColumns(resource: KubeObject, columns: AdditionalPrinterColumnsV1[]) {
|
||||||
return columns.map(({ name, jsonPath: jp }) => (
|
return columns.map(({ name, jsonPath: jp }) => (
|
||||||
<DrawerItem key={name} name={name} renderBoolean>
|
<DrawerItem key={name} name={name} renderBoolean>
|
||||||
|
|||||||
@ -18,7 +18,7 @@ import { apiManager } from "../../../common/k8s-api/api-manager";
|
|||||||
import { parseJsonPath } from "../../utils/jsonPath";
|
import { parseJsonPath } from "../../utils/jsonPath";
|
||||||
import type { CRDRouteParams } from "../../../common/routes";
|
import type { CRDRouteParams } from "../../../common/routes";
|
||||||
|
|
||||||
interface Props extends RouteComponentProps<CRDRouteParams> {
|
export interface CustomResourceDefinitionResourcesProps extends RouteComponentProps<CRDRouteParams> {
|
||||||
}
|
}
|
||||||
|
|
||||||
enum columnId {
|
enum columnId {
|
||||||
@ -28,8 +28,8 @@ enum columnId {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@observer
|
@observer
|
||||||
export class CrdResources extends React.Component<Props> {
|
export class CustomResourceDefinitionResources extends React.Component<CustomResourceDefinitionResourcesProps> {
|
||||||
constructor(props: Props) {
|
constructor(props: CustomResourceDefinitionResourcesProps) {
|
||||||
super(props);
|
super(props);
|
||||||
makeObservable(this);
|
makeObservable(this);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -7,13 +7,14 @@ import React from "react";
|
|||||||
import { Redirect, Route, Switch } from "react-router";
|
import { Redirect, Route, Switch } from "react-router";
|
||||||
import { TabLayout } from "../layout/tab-layout";
|
import { TabLayout } from "../layout/tab-layout";
|
||||||
import { crdDefinitionsRoute, crdResourcesRoute, crdURL } from "../../../common/routes";
|
import { crdDefinitionsRoute, crdResourcesRoute, crdURL } from "../../../common/routes";
|
||||||
import { CrdList, CrdResources } from ".";
|
import { CustomResourceDefinitions } from "./crd-list";
|
||||||
|
import { CustomResourceDefinitionResources } from "./crd-resources";
|
||||||
|
|
||||||
export const CustomResourcesRoute = () => (
|
export const CustomResourcesRoute = () => (
|
||||||
<TabLayout>
|
<TabLayout>
|
||||||
<Switch>
|
<Switch>
|
||||||
<Route component={CrdList} {...crdDefinitionsRoute} exact/>
|
<Route component={CustomResourceDefinitions} {...crdDefinitionsRoute} exact/>
|
||||||
<Route component={CrdResources} {...crdResourcesRoute}/>
|
<Route component={CustomResourceDefinitionResources} {...crdResourcesRoute}/>
|
||||||
<Redirect to={crdURL()}/>
|
<Redirect to={crdURL()}/>
|
||||||
</Switch>
|
</Switch>
|
||||||
</TabLayout>
|
</TabLayout>
|
||||||
|
|||||||
@ -20,14 +20,14 @@ import { SettingLayout } from "../layout/setting-layout";
|
|||||||
import logger from "../../../common/logger";
|
import logger from "../../../common/logger";
|
||||||
import { Avatar } from "../avatar";
|
import { Avatar } from "../avatar";
|
||||||
|
|
||||||
interface Props extends RouteComponentProps<EntitySettingsRouteParams> {
|
export interface EntitySettingsProps extends RouteComponentProps<EntitySettingsRouteParams> {
|
||||||
}
|
}
|
||||||
|
|
||||||
@observer
|
@observer
|
||||||
export class EntitySettings extends React.Component<Props> {
|
export class EntitySettings extends React.Component<EntitySettingsProps> {
|
||||||
@observable activeTab: string;
|
@observable activeTab: string;
|
||||||
|
|
||||||
constructor(props: Props) {
|
constructor(props: EntitySettingsProps) {
|
||||||
super(props);
|
super(props);
|
||||||
makeObservable(this);
|
makeObservable(this);
|
||||||
|
|
||||||
|
|||||||
@ -19,11 +19,11 @@ import { getDetailsUrl } from "../kube-detail-params";
|
|||||||
import { apiManager } from "../../../common/k8s-api/api-manager";
|
import { apiManager } from "../../../common/k8s-api/api-manager";
|
||||||
import logger from "../../../common/logger";
|
import logger from "../../../common/logger";
|
||||||
|
|
||||||
interface Props extends KubeObjectDetailsProps<KubeEvent> {
|
export interface EventDetailsProps extends KubeObjectDetailsProps<KubeEvent> {
|
||||||
}
|
}
|
||||||
|
|
||||||
@observer
|
@observer
|
||||||
export class EventDetails extends React.Component<Props> {
|
export class EventDetails extends React.Component<EventDetailsProps> {
|
||||||
render() {
|
render() {
|
||||||
const { object: event } = this.props;
|
const { object: event } = this.props;
|
||||||
|
|
||||||
|
|||||||
@ -34,18 +34,18 @@ enum columnId {
|
|||||||
lastSeen = "last-seen",
|
lastSeen = "last-seen",
|
||||||
}
|
}
|
||||||
|
|
||||||
interface Props extends Partial<KubeObjectListLayoutProps<KubeEvent>> {
|
export interface EventsProps extends Partial<KubeObjectListLayoutProps<KubeEvent>> {
|
||||||
className?: IClassName;
|
className?: IClassName;
|
||||||
compact?: boolean;
|
compact?: boolean;
|
||||||
compactLimit?: number;
|
compactLimit?: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
const defaultProps: Partial<Props> = {
|
const defaultProps: Partial<EventsProps> = {
|
||||||
compactLimit: 10,
|
compactLimit: 10,
|
||||||
};
|
};
|
||||||
|
|
||||||
@observer
|
@observer
|
||||||
export class Events extends React.Component<Props> {
|
export class Events extends React.Component<EventsProps> {
|
||||||
static defaultProps = defaultProps as object;
|
static defaultProps = defaultProps as object;
|
||||||
now = Date.now();
|
now = Date.now();
|
||||||
|
|
||||||
@ -63,7 +63,7 @@ export class Events extends React.Component<Props> {
|
|||||||
[columnId.lastSeen]: event => this.now - new Date(event.lastTimestamp).getTime(),
|
[columnId.lastSeen]: event => this.now - new Date(event.lastTimestamp).getTime(),
|
||||||
};
|
};
|
||||||
|
|
||||||
constructor(props: Props) {
|
constructor(props: EventsProps) {
|
||||||
super(props);
|
super(props);
|
||||||
makeObservable(this);
|
makeObservable(this);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -12,17 +12,18 @@ import { eventStore } from "./event.store";
|
|||||||
import { cssNames } from "../../utils";
|
import { cssNames } from "../../utils";
|
||||||
import type { KubeEvent } from "../../../common/k8s-api/endpoints/events.api";
|
import type { KubeEvent } from "../../../common/k8s-api/endpoints/events.api";
|
||||||
|
|
||||||
interface Props {
|
export interface KubeEventIconProps {
|
||||||
object: KubeObject;
|
object: KubeObject;
|
||||||
showWarningsOnly?: boolean;
|
showWarningsOnly?: boolean;
|
||||||
filterEvents?: (events: KubeEvent[]) => KubeEvent[];
|
filterEvents?: (events: KubeEvent[]) => KubeEvent[];
|
||||||
}
|
}
|
||||||
|
|
||||||
const defaultProps: Partial<Props> = {
|
|
||||||
|
const defaultProps: Partial<KubeEventIconProps> = {
|
||||||
showWarningsOnly: true,
|
showWarningsOnly: true,
|
||||||
};
|
};
|
||||||
|
|
||||||
export class KubeEventIcon extends React.Component<Props> {
|
export class KubeEventIcon extends React.Component<KubeEventIconProps> {
|
||||||
static defaultProps = defaultProps as object;
|
static defaultProps = defaultProps as object;
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
|
|||||||
@ -17,7 +17,7 @@ import extensionInstallationStateStoreInjectable
|
|||||||
from "../../../extensions/extension-installation-state-store/extension-installation-state-store.injectable";
|
from "../../../extensions/extension-installation-state-store/extension-installation-state-store.injectable";
|
||||||
import { withInjectables } from "@ogre-tools/injectable-react";
|
import { withInjectables } from "@ogre-tools/injectable-react";
|
||||||
|
|
||||||
interface Props {
|
export interface InstallProps {
|
||||||
installPath: string;
|
installPath: string;
|
||||||
supportedFormats: string[];
|
supportedFormats: string[];
|
||||||
onChange: (path: string) => void;
|
onChange: (path: string) => void;
|
||||||
@ -42,7 +42,7 @@ const installInputValidator: InputValidator = {
|
|||||||
),
|
),
|
||||||
};
|
};
|
||||||
|
|
||||||
const NonInjectedInstall: React.FC<Dependencies & Props> = ({
|
const NonInjectedInstall: React.FC<Dependencies & InstallProps> = ({
|
||||||
installPath,
|
installPath,
|
||||||
supportedFormats,
|
supportedFormats,
|
||||||
onChange,
|
onChange,
|
||||||
@ -99,7 +99,7 @@ const NonInjectedInstall: React.FC<Dependencies & Props> = ({
|
|||||||
</section>
|
</section>
|
||||||
);
|
);
|
||||||
|
|
||||||
export const Install = withInjectables<Dependencies, Props>(
|
export const Install = withInjectables<Dependencies, InstallProps>(
|
||||||
observer(NonInjectedInstall),
|
observer(NonInjectedInstall),
|
||||||
{
|
{
|
||||||
getProps: (di, props) => ({
|
getProps: (di, props) => ({
|
||||||
|
|||||||
@ -25,7 +25,7 @@ import extensionInstallationStateStoreInjectable
|
|||||||
from "../../../extensions/extension-installation-state-store/extension-installation-state-store.injectable";
|
from "../../../extensions/extension-installation-state-store/extension-installation-state-store.injectable";
|
||||||
import type { ExtensionInstallationStateStore } from "../../../extensions/extension-installation-state-store/extension-installation-state-store";
|
import type { ExtensionInstallationStateStore } from "../../../extensions/extension-installation-state-store/extension-installation-state-store";
|
||||||
|
|
||||||
interface Props {
|
export interface InstalledExtensionsProps {
|
||||||
extensions: InstalledExtension[];
|
extensions: InstalledExtension[];
|
||||||
enable: (id: LensExtensionId) => void;
|
enable: (id: LensExtensionId) => void;
|
||||||
disable: (id: LensExtensionId) => void;
|
disable: (id: LensExtensionId) => void;
|
||||||
@ -45,7 +45,7 @@ function getStatus(extension: InstalledExtension) {
|
|||||||
return extension.isEnabled ? "Enabled" : "Disabled";
|
return extension.isEnabled ? "Enabled" : "Disabled";
|
||||||
}
|
}
|
||||||
|
|
||||||
const NonInjectedInstalledExtensions : React.FC<Dependencies & Props> = (({ extensionDiscovery, extensionInstallationStateStore, extensions, uninstall, enable, disable }) => {
|
const NonInjectedInstalledExtensions = observer(({ extensionDiscovery, extensionInstallationStateStore, extensions, uninstall, enable, disable }: Dependencies & InstalledExtensionsProps) => {
|
||||||
const filters = [
|
const filters = [
|
||||||
(extension: InstalledExtension) => extension.manifest.name,
|
(extension: InstalledExtension) => extension.manifest.name,
|
||||||
(extension: InstalledExtension) => getStatus(extension),
|
(extension: InstalledExtension) => getStatus(extension),
|
||||||
@ -175,15 +175,10 @@ const NonInjectedInstalledExtensions : React.FC<Dependencies & Props> = (({ exte
|
|||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
export const InstalledExtensions = withInjectables<Dependencies, Props>(
|
export const InstalledExtensions = withInjectables<Dependencies, InstalledExtensionsProps>(NonInjectedInstalledExtensions, {
|
||||||
observer(NonInjectedInstalledExtensions),
|
|
||||||
|
|
||||||
{
|
|
||||||
getProps: (di, props) => ({
|
getProps: (di, props) => ({
|
||||||
extensionDiscovery: di.inject(extensionDiscoveryInjectable),
|
extensionDiscovery: di.inject(extensionDiscoveryInjectable),
|
||||||
extensionInstallationStateStore: di.inject(extensionInstallationStateStoreInjectable),
|
extensionInstallationStateStore: di.inject(extensionInstallationStateStoreInjectable),
|
||||||
|
|
||||||
...props,
|
...props,
|
||||||
}),
|
}),
|
||||||
},
|
});
|
||||||
);
|
|
||||||
|
|||||||
@ -7,11 +7,11 @@ import styles from "./notice.module.scss";
|
|||||||
import React, { DOMAttributes } from "react";
|
import React, { DOMAttributes } from "react";
|
||||||
import { cssNames } from "../../utils";
|
import { cssNames } from "../../utils";
|
||||||
|
|
||||||
interface Props extends DOMAttributes<any> {
|
export interface NoticeProps extends DOMAttributes<any> {
|
||||||
className?: string;
|
className?: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function Notice(props: Props) {
|
export function Notice(props: NoticeProps) {
|
||||||
return (
|
return (
|
||||||
<div className={cssNames(styles.notice, props.className)}>
|
<div className={cssNames(styles.notice, props.className)}>
|
||||||
{props.children}
|
{props.children}
|
||||||
|
|||||||
@ -21,7 +21,7 @@ import { withInjectables } from "@ogre-tools/injectable-react";
|
|||||||
import createInstallChartTabInjectable from "../dock/install-chart/create-install-chart-tab.injectable";
|
import createInstallChartTabInjectable from "../dock/install-chart/create-install-chart-tab.injectable";
|
||||||
import { Notifications } from "../notifications";
|
import { Notifications } from "../notifications";
|
||||||
|
|
||||||
interface Props {
|
export interface HelmChartDetailsProps {
|
||||||
chart: HelmChart;
|
chart: HelmChart;
|
||||||
hideDetails(): void;
|
hideDetails(): void;
|
||||||
}
|
}
|
||||||
@ -37,14 +37,14 @@ interface Dependencies {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@observer
|
@observer
|
||||||
class NonInjectedHelmChartDetails extends Component<Props & Dependencies> {
|
class NonInjectedHelmChartDetails extends Component<HelmChartDetailsProps & Dependencies> {
|
||||||
@observable chartVersions: HelmChart[];
|
@observable chartVersions: HelmChart[];
|
||||||
@observable selectedChart?: HelmChart;
|
@observable selectedChart?: HelmChart;
|
||||||
@observable readme?: string;
|
@observable readme?: string;
|
||||||
|
|
||||||
private abortController?: AbortController;
|
private abortController?: AbortController;
|
||||||
|
|
||||||
constructor(props: Props & Dependencies) {
|
constructor(props: HelmChartDetailsProps & Dependencies) {
|
||||||
super(props);
|
super(props);
|
||||||
makeObservable(this);
|
makeObservable(this);
|
||||||
}
|
}
|
||||||
@ -197,7 +197,7 @@ class NonInjectedHelmChartDetails extends Component<Props & Dependencies> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export const HelmChartDetails = withInjectables<Dependencies, Props>(
|
export const HelmChartDetails = withInjectables<Dependencies, HelmChartDetailsProps>(
|
||||||
NonInjectedHelmChartDetails,
|
NonInjectedHelmChartDetails,
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|||||||
@ -24,11 +24,11 @@ enum columnId {
|
|||||||
repo = "repo",
|
repo = "repo",
|
||||||
}
|
}
|
||||||
|
|
||||||
interface Props extends RouteComponentProps<HelmChartsRouteParams> {
|
export interface HelmChartsProps extends RouteComponentProps<HelmChartsRouteParams> {
|
||||||
}
|
}
|
||||||
|
|
||||||
@observer
|
@observer
|
||||||
export class HelmCharts extends Component<Props> {
|
export class HelmCharts extends Component<HelmChartsProps> {
|
||||||
componentDidMount() {
|
componentDidMount() {
|
||||||
helmChartStore.loadAll();
|
helmChartStore.loadAll();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -34,7 +34,7 @@ import releaseDetailsInjectable from "./release-details.injectable";
|
|||||||
import releaseValuesInjectable from "./release-values.injectable";
|
import releaseValuesInjectable from "./release-values.injectable";
|
||||||
import userSuppliedValuesAreShownInjectable from "./user-supplied-values-are-shown.injectable";
|
import userSuppliedValuesAreShownInjectable from "./user-supplied-values-are-shown.injectable";
|
||||||
|
|
||||||
interface Props {
|
export interface ReleaseDetailsProps {
|
||||||
hideDetails(): void;
|
hideDetails(): void;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -48,12 +48,12 @@ interface Dependencies {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@observer
|
@observer
|
||||||
class NonInjectedReleaseDetails extends Component<Props & Dependencies> {
|
class NonInjectedReleaseDetails extends Component<ReleaseDetailsProps & Dependencies> {
|
||||||
@observable saving = false;
|
@observable saving = false;
|
||||||
|
|
||||||
private nonSavedValues: string;
|
private nonSavedValues: string;
|
||||||
|
|
||||||
constructor(props: Props & Dependencies) {
|
constructor(props: ReleaseDetailsProps & Dependencies) {
|
||||||
super(props);
|
super(props);
|
||||||
makeObservable(this);
|
makeObservable(this);
|
||||||
}
|
}
|
||||||
@ -261,7 +261,7 @@ class NonInjectedReleaseDetails extends Component<Props & Dependencies> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export const ReleaseDetails = withInjectables<Dependencies, Props>(
|
export const ReleaseDetails = withInjectables<Dependencies, ReleaseDetailsProps>(
|
||||||
NonInjectedReleaseDetails,
|
NonInjectedReleaseDetails,
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|||||||
@ -14,7 +14,7 @@ import createUpgradeChartTabInjectable from "../dock/upgrade-chart/create-upgrad
|
|||||||
import releaseRollbackDialogModelInjectable from "./release-rollback-dialog-model/release-rollback-dialog-model.injectable";
|
import releaseRollbackDialogModelInjectable from "./release-rollback-dialog-model/release-rollback-dialog-model.injectable";
|
||||||
import deleteReleaseInjectable from "./delete-release/delete-release.injectable";
|
import deleteReleaseInjectable from "./delete-release/delete-release.injectable";
|
||||||
|
|
||||||
interface Props extends MenuActionsProps {
|
export interface HelmReleaseMenuProps extends MenuActionsProps {
|
||||||
release: HelmRelease;
|
release: HelmRelease;
|
||||||
hideDetails?(): void;
|
hideDetails?(): void;
|
||||||
}
|
}
|
||||||
@ -25,7 +25,7 @@ interface Dependencies {
|
|||||||
openRollbackDialog: (release: HelmRelease) => void;
|
openRollbackDialog: (release: HelmRelease) => void;
|
||||||
}
|
}
|
||||||
|
|
||||||
class NonInjectedHelmReleaseMenu extends React.Component<Props & Dependencies> {
|
class NonInjectedHelmReleaseMenu extends React.Component<HelmReleaseMenuProps & Dependencies> {
|
||||||
remove = () => {
|
remove = () => {
|
||||||
return this.props.deleteRelease(this.props.release);
|
return this.props.deleteRelease(this.props.release);
|
||||||
};
|
};
|
||||||
@ -79,7 +79,7 @@ class NonInjectedHelmReleaseMenu extends React.Component<Props & Dependencies> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export const HelmReleaseMenu = withInjectables<Dependencies, Props>(
|
export const HelmReleaseMenu = withInjectables<Dependencies, HelmReleaseMenuProps>(
|
||||||
NonInjectedHelmReleaseMenu,
|
NonInjectedHelmReleaseMenu,
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|||||||
@ -20,7 +20,7 @@ import releaseRollbackDialogModelInjectable
|
|||||||
import type { ReleaseRollbackDialogModel } from "./release-rollback-dialog-model/release-rollback-dialog-model";
|
import type { ReleaseRollbackDialogModel } from "./release-rollback-dialog-model/release-rollback-dialog-model";
|
||||||
import rollbackReleaseInjectable from "./rollback-release/rollback-release.injectable";
|
import rollbackReleaseInjectable from "./rollback-release/rollback-release.injectable";
|
||||||
|
|
||||||
interface Props extends DialogProps {
|
export interface ReleaseRollbackDialogProps extends DialogProps {
|
||||||
}
|
}
|
||||||
|
|
||||||
interface Dependencies {
|
interface Dependencies {
|
||||||
@ -29,12 +29,12 @@ interface Dependencies {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@observer
|
@observer
|
||||||
class NonInjectedReleaseRollbackDialog extends React.Component<Props & Dependencies> {
|
class NonInjectedReleaseRollbackDialog extends React.Component<ReleaseRollbackDialogProps & Dependencies> {
|
||||||
@observable isLoading = false;
|
@observable isLoading = false;
|
||||||
@observable revision: IReleaseRevision;
|
@observable revision: IReleaseRevision;
|
||||||
@observable revisions = observable.array<IReleaseRevision>();
|
@observable revisions = observable.array<IReleaseRevision>();
|
||||||
|
|
||||||
constructor(props: Props & Dependencies) {
|
constructor(props: ReleaseRollbackDialogProps & Dependencies) {
|
||||||
super(props);
|
super(props);
|
||||||
makeObservable(this);
|
makeObservable(this);
|
||||||
}
|
}
|
||||||
@ -114,7 +114,7 @@ class NonInjectedReleaseRollbackDialog extends React.Component<Props & Dependenc
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export const ReleaseRollbackDialog = withInjectables<Dependencies, Props>(
|
export const ReleaseRollbackDialog = withInjectables<Dependencies, ReleaseRollbackDialogProps>(
|
||||||
NonInjectedReleaseRollbackDialog,
|
NonInjectedReleaseRollbackDialog,
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|||||||
@ -37,7 +37,7 @@ enum columnId {
|
|||||||
updated = "update",
|
updated = "update",
|
||||||
}
|
}
|
||||||
|
|
||||||
interface Props extends RouteComponentProps<ReleaseRouteParams> {
|
export interface HelmReleasesProps extends RouteComponentProps<ReleaseRouteParams> {
|
||||||
}
|
}
|
||||||
|
|
||||||
interface Dependencies {
|
interface Dependencies {
|
||||||
@ -46,7 +46,7 @@ interface Dependencies {
|
|||||||
selectNamespace: (namespace: string) => void;
|
selectNamespace: (namespace: string) => void;
|
||||||
}
|
}
|
||||||
|
|
||||||
class NonInjectedHelmReleases extends Component<Dependencies & Props> {
|
class NonInjectedHelmReleases extends Component<Dependencies & HelmReleasesProps> {
|
||||||
componentDidMount() {
|
componentDidMount() {
|
||||||
const { match: { params: { namespace }}} = this.props;
|
const { match: { params: { namespace }}} = this.props;
|
||||||
|
|
||||||
@ -223,7 +223,7 @@ class NonInjectedHelmReleases extends Component<Dependencies & Props> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export const HelmReleases = withInjectables<Dependencies, Props>(
|
export const HelmReleases = withInjectables<Dependencies, HelmReleasesProps>(
|
||||||
NonInjectedHelmReleases,
|
NonInjectedHelmReleases,
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|||||||
@ -21,7 +21,7 @@ import addNamespaceDialogModelInjectable
|
|||||||
from "./add-namespace-dialog-model/add-namespace-dialog-model.injectable";
|
from "./add-namespace-dialog-model/add-namespace-dialog-model.injectable";
|
||||||
import type { NamespaceStore } from "./namespace-store/namespace.store";
|
import type { NamespaceStore } from "./namespace-store/namespace.store";
|
||||||
|
|
||||||
interface Props extends DialogProps {
|
export interface AddNamespaceDialogProps extends DialogProps {
|
||||||
onSuccess?(ns: Namespace): void;
|
onSuccess?(ns: Namespace): void;
|
||||||
onError?(error: any): void;
|
onError?(error: any): void;
|
||||||
}
|
}
|
||||||
@ -32,10 +32,10 @@ interface Dependencies {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@observer
|
@observer
|
||||||
class NonInjectedAddNamespaceDialog extends React.Component<Props & Dependencies> {
|
class NonInjectedAddNamespaceDialog extends React.Component<AddNamespaceDialogProps & Dependencies> {
|
||||||
@observable namespace = "";
|
@observable namespace = "";
|
||||||
|
|
||||||
constructor(props: Props & Dependencies) {
|
constructor(props: AddNamespaceDialogProps & Dependencies) {
|
||||||
super(props);
|
super(props);
|
||||||
makeObservable(this);
|
makeObservable(this);
|
||||||
}
|
}
|
||||||
@ -93,7 +93,7 @@ class NonInjectedAddNamespaceDialog extends React.Component<Props & Dependencies
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export const AddNamespaceDialog = withInjectables<Dependencies, Props>(
|
export const AddNamespaceDialog = withInjectables<Dependencies, AddNamespaceDialogProps>(
|
||||||
NonInjectedAddNamespaceDialog,
|
NonInjectedAddNamespaceDialog,
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|||||||
@ -29,7 +29,7 @@ import { withInjectables } from "@ogre-tools/injectable-react";
|
|||||||
import kubeWatchApiInjectable
|
import kubeWatchApiInjectable
|
||||||
from "../../kube-watch-api/kube-watch-api.injectable";
|
from "../../kube-watch-api/kube-watch-api.injectable";
|
||||||
|
|
||||||
interface Props extends KubeObjectDetailsProps<Namespace> {
|
export interface NamespaceDetailsProps extends KubeObjectDetailsProps<Namespace> {
|
||||||
}
|
}
|
||||||
|
|
||||||
interface Dependencies {
|
interface Dependencies {
|
||||||
@ -37,10 +37,10 @@ interface Dependencies {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@observer
|
@observer
|
||||||
class NonInjectedNamespaceDetails extends React.Component<Props & Dependencies> {
|
class NonInjectedNamespaceDetails extends React.Component<NamespaceDetailsProps & Dependencies> {
|
||||||
@observable metrics: IPodMetrics = null;
|
@observable metrics: IPodMetrics = null;
|
||||||
|
|
||||||
constructor(props: Props & Dependencies) {
|
constructor(props: NamespaceDetailsProps & Dependencies) {
|
||||||
super(props);
|
super(props);
|
||||||
makeObservable(this);
|
makeObservable(this);
|
||||||
}
|
}
|
||||||
@ -132,7 +132,7 @@ class NonInjectedNamespaceDetails extends React.Component<Props & Dependencies>
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export const NamespaceDetails = withInjectables<Dependencies, Props>(
|
export const NamespaceDetails = withInjectables<Dependencies, NamespaceDetailsProps>(
|
||||||
NonInjectedNamespaceDetails,
|
NonInjectedNamespaceDetails,
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|||||||
@ -7,7 +7,7 @@ import "./namespace-select-filter.scss";
|
|||||||
|
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import { observer } from "mobx-react";
|
import { observer } from "mobx-react";
|
||||||
import { components, PlaceholderProps } from "react-select";
|
import { components, OptionTypeBase, PlaceholderProps } from "react-select";
|
||||||
|
|
||||||
import { Icon } from "../icon";
|
import { Icon } from "../icon";
|
||||||
import { NamespaceSelect } from "./namespace-select";
|
import { NamespaceSelect } from "./namespace-select";
|
||||||
@ -23,38 +23,33 @@ interface Dependencies {
|
|||||||
model: NamespaceSelectFilterModel;
|
model: NamespaceSelectFilterModel;
|
||||||
}
|
}
|
||||||
|
|
||||||
class NonInjectedNamespaceSelectFilter extends React.Component<
|
const NonInjectedNamespaceSelectFilter = observer(({ model }: SelectProps & Dependencies) => (
|
||||||
SelectProps & Dependencies
|
|
||||||
> {
|
|
||||||
render() {
|
|
||||||
return (
|
|
||||||
<div
|
<div
|
||||||
onKeyUp={this.props.model.onKeyUp}
|
onKeyUp={model.onKeyUp}
|
||||||
onKeyDown={this.props.model.onKeyDown}
|
onKeyDown={model.onKeyDown}
|
||||||
onClick={this.props.model.onClick}
|
onClick={model.onClick}
|
||||||
>
|
>
|
||||||
<NamespaceSelect
|
<NamespaceSelect
|
||||||
isMulti={true}
|
isMulti={true}
|
||||||
menuIsOpen={this.props.model.menuIsOpen}
|
menuIsOpen={model.menuIsOpen}
|
||||||
components={{ Placeholder }}
|
components={{ Placeholder }}
|
||||||
showAllNamespacesOption={true}
|
showAllNamespacesOption={true}
|
||||||
closeMenuOnSelect={false}
|
closeMenuOnSelect={false}
|
||||||
controlShouldRenderValue={false}
|
controlShouldRenderValue={false}
|
||||||
placeholder={""}
|
placeholder={""}
|
||||||
onChange={this.props.model.onChange}
|
onChange={model.onChange}
|
||||||
onBlur={this.props.model.reset}
|
onBlur={model.reset}
|
||||||
formatOptionLabel={formatOptionLabelFor(this.props.model)}
|
formatOptionLabel={formatOptionLabelFor(model)}
|
||||||
className="NamespaceSelectFilter"
|
className="NamespaceSelectFilter"
|
||||||
menuClass="NamespaceSelectFilterMenu"
|
menuClass="NamespaceSelectFilterMenu"
|
||||||
sort={(left, right) =>
|
sort={(left, right) =>
|
||||||
+this.props.model.selectedNames.has(right.value) -
|
+model.selectedNames.has(right.value)
|
||||||
+this.props.model.selectedNames.has(left.value)
|
- +model.selectedNames.has(left.value)
|
||||||
}
|
}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
);
|
));
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const formatOptionLabelFor =
|
const formatOptionLabelFor =
|
||||||
(model: NamespaceSelectFilterModel) =>
|
(model: NamespaceSelectFilterModel) =>
|
||||||
@ -74,37 +69,32 @@ const formatOptionLabelFor =
|
|||||||
return label;
|
return label;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const NamespaceSelectFilter = withInjectables<Dependencies, SelectProps>(
|
export const NamespaceSelectFilter = withInjectables<Dependencies, SelectProps>(NonInjectedNamespaceSelectFilter, {
|
||||||
observer(NonInjectedNamespaceSelectFilter),
|
|
||||||
|
|
||||||
{
|
|
||||||
getProps: (di, props) => ({
|
getProps: (di, props) => ({
|
||||||
model: di.inject(namespaceSelectFilterModelInjectable),
|
model: di.inject(namespaceSelectFilterModelInjectable),
|
||||||
...props,
|
...props,
|
||||||
}),
|
}),
|
||||||
},
|
});
|
||||||
);
|
|
||||||
|
|
||||||
type CustomPlaceholderProps = PlaceholderProps<any, boolean>;
|
export interface CustomPlaceholderProps extends PlaceholderProps<OptionTypeBase, boolean> {}
|
||||||
|
|
||||||
interface PlaceholderDependencies {
|
interface PlaceholderDependencies {
|
||||||
namespaceStore: NamespaceStore;
|
namespaceStore: NamespaceStore;
|
||||||
}
|
}
|
||||||
|
|
||||||
const NonInjectedPlaceholder = observer(
|
const NonInjectedPlaceholder = observer(({ namespaceStore, ...props }: CustomPlaceholderProps & PlaceholderDependencies) => {
|
||||||
({ namespaceStore, ...props }: CustomPlaceholderProps & PlaceholderDependencies) => {
|
const getPlaceholder = () => {
|
||||||
const getPlaceholder = (): React.ReactNode => {
|
|
||||||
const namespaces = namespaceStore.contextNamespaces;
|
const namespaces = namespaceStore.contextNamespaces;
|
||||||
|
|
||||||
if (namespaceStore.areAllSelectedImplicitly || !namespaces.length) {
|
if (namespaceStore.areAllSelectedImplicitly || namespaces.length === 0) {
|
||||||
return <>All namespaces</>;
|
return "All namespaces";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (namespaces.length === 1) {
|
const prefix = namespaces.length === 1
|
||||||
return <>Namespace: {namespaces[0]}</>;
|
? "Namespace"
|
||||||
}
|
: "Namespaces";
|
||||||
|
|
||||||
return <>Namespaces: {namespaces.join(", ")}</>;
|
return `${prefix}: ${namespaces.join(", ")}`;
|
||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
@ -115,13 +105,9 @@ const NonInjectedPlaceholder = observer(
|
|||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
const Placeholder = withInjectables<PlaceholderDependencies, CustomPlaceholderProps>(
|
const Placeholder = withInjectables<PlaceholderDependencies, CustomPlaceholderProps>( NonInjectedPlaceholder, {
|
||||||
NonInjectedPlaceholder,
|
|
||||||
|
|
||||||
{
|
|
||||||
getProps: (di, props) => ({
|
getProps: (di, props) => ({
|
||||||
namespaceStore: di.inject(namespaceStoreInjectable),
|
namespaceStore: di.inject(namespaceStoreInjectable),
|
||||||
...props,
|
...props,
|
||||||
}),
|
}),
|
||||||
},
|
});
|
||||||
);
|
|
||||||
|
|||||||
@ -15,14 +15,14 @@ import type { NamespaceStore } from "./namespace-store/namespace.store";
|
|||||||
import { withInjectables } from "@ogre-tools/injectable-react";
|
import { withInjectables } from "@ogre-tools/injectable-react";
|
||||||
import namespaceStoreInjectable from "./namespace-store/namespace-store.injectable";
|
import namespaceStoreInjectable from "./namespace-store/namespace-store.injectable";
|
||||||
|
|
||||||
interface Props extends SelectProps {
|
export interface NamespaceSelectProps extends SelectProps {
|
||||||
showIcons?: boolean;
|
showIcons?: boolean;
|
||||||
sort?: (a: SelectOption<string>, b: SelectOption<string>) => number;
|
sort?: (a: SelectOption<string>, b: SelectOption<string>) => number;
|
||||||
showAllNamespacesOption?: boolean; // show "All namespaces" option on the top (default: false)
|
showAllNamespacesOption?: boolean; // show "All namespaces" option on the top (default: false)
|
||||||
customizeOptions?(options: SelectOption[]): SelectOption[];
|
customizeOptions?(options: SelectOption[]): SelectOption[];
|
||||||
}
|
}
|
||||||
|
|
||||||
const defaultProps: Partial<Props> = {
|
const defaultProps: Partial<NamespaceSelectProps> = {
|
||||||
showIcons: true,
|
showIcons: true,
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -31,10 +31,10 @@ interface Dependencies {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@observer
|
@observer
|
||||||
class NonInjectedNamespaceSelect extends React.Component<Props & Dependencies> {
|
class NonInjectedNamespaceSelect extends React.Component<NamespaceSelectProps & Dependencies> {
|
||||||
static defaultProps = defaultProps as object;
|
static defaultProps = defaultProps as object;
|
||||||
|
|
||||||
constructor(props: Props & Dependencies) {
|
constructor(props: NamespaceSelectProps & Dependencies) {
|
||||||
super(props);
|
super(props);
|
||||||
makeObservable(this);
|
makeObservable(this);
|
||||||
}
|
}
|
||||||
@ -88,7 +88,7 @@ class NonInjectedNamespaceSelect extends React.Component<Props & Dependencies> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export const NamespaceSelect = withInjectables<Dependencies, Props>(
|
export const NamespaceSelect = withInjectables<Dependencies, NamespaceSelectProps>(
|
||||||
NonInjectedNamespaceSelect,
|
NonInjectedNamespaceSelect,
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|||||||
@ -14,11 +14,11 @@ import { KubeObjectMeta } from "../kube-object-meta";
|
|||||||
import { EndpointSubsetList } from "./endpoint-subset-list";
|
import { EndpointSubsetList } from "./endpoint-subset-list";
|
||||||
import logger from "../../../common/logger";
|
import logger from "../../../common/logger";
|
||||||
|
|
||||||
interface Props extends KubeObjectDetailsProps<Endpoint> {
|
export interface EndpointDetailsProps extends KubeObjectDetailsProps<Endpoint> {
|
||||||
}
|
}
|
||||||
|
|
||||||
@observer
|
@observer
|
||||||
export class EndpointDetails extends React.Component<Props> {
|
export class EndpointDetails extends React.Component<EndpointDetailsProps> {
|
||||||
render() {
|
render() {
|
||||||
const { object: endpoint } = this.props;
|
const { object: endpoint } = this.props;
|
||||||
|
|
||||||
|
|||||||
@ -14,13 +14,13 @@ import { apiManager } from "../../../common/k8s-api/api-manager";
|
|||||||
import { Link } from "react-router-dom";
|
import { Link } from "react-router-dom";
|
||||||
import { getDetailsUrl } from "../kube-detail-params";
|
import { getDetailsUrl } from "../kube-detail-params";
|
||||||
|
|
||||||
interface Props {
|
export interface EndpointSubsetListProps {
|
||||||
subset: EndpointSubset;
|
subset: EndpointSubset;
|
||||||
endpoint: Endpoint;
|
endpoint: Endpoint;
|
||||||
}
|
}
|
||||||
|
|
||||||
@observer
|
@observer
|
||||||
export class EndpointSubsetList extends React.Component<Props> {
|
export class EndpointSubsetList extends React.Component<EndpointSubsetListProps> {
|
||||||
|
|
||||||
getAddressTableRow(ip: string) {
|
getAddressTableRow(ip: string) {
|
||||||
const { subset } = this.props;
|
const { subset } = this.props;
|
||||||
|
|||||||
@ -20,11 +20,11 @@ enum columnId {
|
|||||||
age = "age",
|
age = "age",
|
||||||
}
|
}
|
||||||
|
|
||||||
interface Props extends RouteComponentProps<EndpointRouteParams> {
|
export interface EndpointsProps extends RouteComponentProps<EndpointRouteParams> {
|
||||||
}
|
}
|
||||||
|
|
||||||
@observer
|
@observer
|
||||||
export class Endpoints extends React.Component<Props> {
|
export class Endpoints extends React.Component<EndpointsProps> {
|
||||||
render() {
|
render() {
|
||||||
return (
|
return (
|
||||||
<KubeObjectListLayout
|
<KubeObjectListLayout
|
||||||
|
|||||||
@ -21,14 +21,14 @@ import { ClusterMetricsResourceType } from "../../../common/cluster-types";
|
|||||||
import { boundMethod } from "../../utils";
|
import { boundMethod } from "../../utils";
|
||||||
import logger from "../../../common/logger";
|
import logger from "../../../common/logger";
|
||||||
|
|
||||||
interface Props extends KubeObjectDetailsProps<Ingress> {
|
export interface IngressDetailsProps extends KubeObjectDetailsProps<Ingress> {
|
||||||
}
|
}
|
||||||
|
|
||||||
@observer
|
@observer
|
||||||
export class IngressDetails extends React.Component<Props> {
|
export class IngressDetails extends React.Component<IngressDetailsProps> {
|
||||||
@observable metrics: IIngressMetrics = null;
|
@observable metrics: IIngressMetrics = null;
|
||||||
|
|
||||||
constructor(props: Props) {
|
constructor(props: IngressDetailsProps) {
|
||||||
super(props);
|
super(props);
|
||||||
makeObservable(this);
|
makeObservable(this);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -21,11 +21,11 @@ enum columnId {
|
|||||||
age = "age",
|
age = "age",
|
||||||
}
|
}
|
||||||
|
|
||||||
interface Props extends RouteComponentProps<IngressRouteParams> {
|
export interface IngressesProps extends RouteComponentProps<IngressRouteParams> {
|
||||||
}
|
}
|
||||||
|
|
||||||
@observer
|
@observer
|
||||||
export class Ingresses extends React.Component<Props> {
|
export class Ingresses extends React.Component<IngressesProps> {
|
||||||
render() {
|
render() {
|
||||||
return (
|
return (
|
||||||
<KubeObjectListLayout
|
<KubeObjectListLayout
|
||||||
|
|||||||
@ -20,11 +20,11 @@ enum columnId {
|
|||||||
age = "age",
|
age = "age",
|
||||||
}
|
}
|
||||||
|
|
||||||
interface Props extends RouteComponentProps<NetworkPoliciesRouteParams> {
|
export interface NetworkPoliciesProps extends RouteComponentProps<NetworkPoliciesRouteParams> {
|
||||||
}
|
}
|
||||||
|
|
||||||
@observer
|
@observer
|
||||||
export class NetworkPolicies extends React.Component<Props> {
|
export class NetworkPolicies extends React.Component<NetworkPoliciesProps> {
|
||||||
render() {
|
render() {
|
||||||
return (
|
return (
|
||||||
<KubeObjectListLayout
|
<KubeObjectListLayout
|
||||||
|
|||||||
@ -17,11 +17,11 @@ import logger from "../../../common/logger";
|
|||||||
import type { LabelMatchExpression, LabelSelector } from "../../../common/k8s-api/kube-object";
|
import type { LabelMatchExpression, LabelSelector } from "../../../common/k8s-api/kube-object";
|
||||||
import { isEmpty } from "lodash";
|
import { isEmpty } from "lodash";
|
||||||
|
|
||||||
interface Props extends KubeObjectDetailsProps<NetworkPolicy> {
|
export interface NetworkPolicyDetailsProps extends KubeObjectDetailsProps<NetworkPolicy> {
|
||||||
}
|
}
|
||||||
|
|
||||||
@observer
|
@observer
|
||||||
export class NetworkPolicyDetails extends React.Component<Props> {
|
export class NetworkPolicyDetails extends React.Component<NetworkPolicyDetailsProps> {
|
||||||
renderIPolicyIpBlock(ipBlock: IPolicyIpBlock | undefined) {
|
renderIPolicyIpBlock(ipBlock: IPolicyIpBlock | undefined) {
|
||||||
if (!ipBlock) {
|
if (!ipBlock) {
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
@ -14,12 +14,12 @@ import { podsApi, serviceApi } from "../../../common/k8s-api/endpoints";
|
|||||||
import { getDetailsUrl } from "../kube-detail-params";
|
import { getDetailsUrl } from "../kube-detail-params";
|
||||||
import { PortForwardMenu } from "./port-forward-menu";
|
import { PortForwardMenu } from "./port-forward-menu";
|
||||||
|
|
||||||
interface Props {
|
export interface PortForwardDetailsProps {
|
||||||
portForward: PortForwardItem;
|
portForward: PortForwardItem;
|
||||||
hideDetails(): void;
|
hideDetails(): void;
|
||||||
}
|
}
|
||||||
|
|
||||||
export class PortForwardDetails extends React.Component<Props> {
|
export class PortForwardDetails extends React.Component<PortForwardDetailsProps> {
|
||||||
|
|
||||||
renderResourceName() {
|
renderResourceName() {
|
||||||
const { portForward } = this.props;
|
const { portForward } = this.props;
|
||||||
|
|||||||
@ -14,7 +14,7 @@ import { withInjectables } from "@ogre-tools/injectable-react";
|
|||||||
import portForwardDialogModelInjectable from "../../port-forward/port-forward-dialog-model/port-forward-dialog-model.injectable";
|
import portForwardDialogModelInjectable from "../../port-forward/port-forward-dialog-model/port-forward-dialog-model.injectable";
|
||||||
import portForwardStoreInjectable from "../../port-forward/port-forward-store/port-forward-store.injectable";
|
import portForwardStoreInjectable from "../../port-forward/port-forward-store/port-forward-store.injectable";
|
||||||
|
|
||||||
interface Props extends MenuActionsProps {
|
export interface PortForwardMenuProps extends MenuActionsProps {
|
||||||
portForward: PortForwardItem;
|
portForward: PortForwardItem;
|
||||||
hideDetails?(): void;
|
hideDetails?(): void;
|
||||||
}
|
}
|
||||||
@ -24,7 +24,7 @@ interface Dependencies {
|
|||||||
openPortForwardDialog: (item: PortForwardItem) => void;
|
openPortForwardDialog: (item: PortForwardItem) => void;
|
||||||
}
|
}
|
||||||
|
|
||||||
class NonInjectedPortForwardMenu extends React.Component<Props & Dependencies> {
|
class NonInjectedPortForwardMenu extends React.Component<PortForwardMenuProps & Dependencies> {
|
||||||
@boundMethod
|
@boundMethod
|
||||||
remove() {
|
remove() {
|
||||||
const { portForward } = this.props;
|
const { portForward } = this.props;
|
||||||
@ -109,7 +109,7 @@ class NonInjectedPortForwardMenu extends React.Component<Props & Dependencies> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export const PortForwardMenu = withInjectables<Dependencies, Props>(
|
export const PortForwardMenu = withInjectables<Dependencies, PortForwardMenuProps>(
|
||||||
NonInjectedPortForwardMenu,
|
NonInjectedPortForwardMenu,
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|||||||
@ -27,7 +27,7 @@ enum columnId {
|
|||||||
status = "status",
|
status = "status",
|
||||||
}
|
}
|
||||||
|
|
||||||
interface Props extends RouteComponentProps<PortForwardsRouteParams> {
|
export interface PortForwardsProps extends RouteComponentProps<PortForwardsRouteParams> {
|
||||||
}
|
}
|
||||||
|
|
||||||
interface Dependencies {
|
interface Dependencies {
|
||||||
@ -35,7 +35,7 @@ interface Dependencies {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@observer
|
@observer
|
||||||
class NonInjectedPortForwards extends React.Component<Props & Dependencies> {
|
class NonInjectedPortForwards extends React.Component<PortForwardsProps & Dependencies> {
|
||||||
|
|
||||||
componentDidMount() {
|
componentDidMount() {
|
||||||
disposeOnUnmount(this, [
|
disposeOnUnmount(this, [
|
||||||
@ -143,7 +143,7 @@ class NonInjectedPortForwards extends React.Component<Props & Dependencies> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export const PortForwards = withInjectables<Dependencies, Props>(
|
export const PortForwards = withInjectables<Dependencies, PortForwardsProps>(
|
||||||
NonInjectedPortForwards,
|
NonInjectedPortForwards,
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|||||||
@ -12,12 +12,12 @@ import { endpointStore } from "../+network-endpoints/endpoints.store";
|
|||||||
import { Spinner } from "../spinner";
|
import { Spinner } from "../spinner";
|
||||||
import { showDetails } from "../kube-detail-params";
|
import { showDetails } from "../kube-detail-params";
|
||||||
|
|
||||||
interface Props {
|
export interface ServiceDetailsEndpointProps {
|
||||||
endpoint: KubeObject;
|
endpoint: KubeObject;
|
||||||
}
|
}
|
||||||
|
|
||||||
@observer
|
@observer
|
||||||
export class ServiceDetailsEndpoint extends React.Component<Props> {
|
export class ServiceDetailsEndpoint extends React.Component<ServiceDetailsEndpointProps> {
|
||||||
render() {
|
render() {
|
||||||
const { endpoint } = this.props;
|
const { endpoint } = this.props;
|
||||||
|
|
||||||
|
|||||||
@ -26,7 +26,7 @@ import kubeWatchApiInjectable
|
|||||||
import portForwardStoreInjectable from "../../port-forward/port-forward-store/port-forward-store.injectable";
|
import portForwardStoreInjectable from "../../port-forward/port-forward-store/port-forward-store.injectable";
|
||||||
import type { KubeWatchSubscribeStoreOptions } from "../../kube-watch-api/kube-watch-api";
|
import type { KubeWatchSubscribeStoreOptions } from "../../kube-watch-api/kube-watch-api";
|
||||||
|
|
||||||
interface Props extends KubeObjectDetailsProps<Service> {
|
export interface ServiceDetailsProps extends KubeObjectDetailsProps<Service> {
|
||||||
}
|
}
|
||||||
|
|
||||||
interface Dependencies {
|
interface Dependencies {
|
||||||
@ -35,7 +35,7 @@ interface Dependencies {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@observer
|
@observer
|
||||||
class NonInjectedServiceDetails extends React.Component<Props & Dependencies> {
|
class NonInjectedServiceDetails extends React.Component<ServiceDetailsProps & Dependencies> {
|
||||||
componentDidMount() {
|
componentDidMount() {
|
||||||
const { object: service } = this.props;
|
const { object: service } = this.props;
|
||||||
|
|
||||||
@ -137,7 +137,7 @@ class NonInjectedServiceDetails extends React.Component<Props & Dependencies> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export const ServiceDetails = withInjectables<Dependencies, Props>(
|
export const ServiceDetails = withInjectables<Dependencies, ServiceDetailsProps>(
|
||||||
NonInjectedServiceDetails,
|
NonInjectedServiceDetails,
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|||||||
@ -25,7 +25,7 @@ import portForwardStoreInjectable from "../../port-forward/port-forward-store/po
|
|||||||
import portForwardDialogModelInjectable from "../../port-forward/port-forward-dialog-model/port-forward-dialog-model.injectable";
|
import portForwardDialogModelInjectable from "../../port-forward/port-forward-dialog-model/port-forward-dialog-model.injectable";
|
||||||
import logger from "../../../common/logger";
|
import logger from "../../../common/logger";
|
||||||
|
|
||||||
interface Props {
|
export interface ServicePortComponentProps {
|
||||||
service: Service;
|
service: Service;
|
||||||
port: ServicePort;
|
port: ServicePort;
|
||||||
}
|
}
|
||||||
@ -36,13 +36,13 @@ interface Dependencies {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@observer
|
@observer
|
||||||
class NonInjectedServicePortComponent extends React.Component<Props & Dependencies> {
|
class NonInjectedServicePortComponent extends React.Component<ServicePortComponentProps & Dependencies> {
|
||||||
@observable waiting = false;
|
@observable waiting = false;
|
||||||
@observable forwardPort = 0;
|
@observable forwardPort = 0;
|
||||||
@observable isPortForwarded = false;
|
@observable isPortForwarded = false;
|
||||||
@observable isActive = false;
|
@observable isActive = false;
|
||||||
|
|
||||||
constructor(props: Props & Dependencies) {
|
constructor(props: ServicePortComponentProps & Dependencies) {
|
||||||
super(props);
|
super(props);
|
||||||
makeObservable(this);
|
makeObservable(this);
|
||||||
this.checkExistingPortForwarding();
|
this.checkExistingPortForwarding();
|
||||||
@ -186,7 +186,7 @@ class NonInjectedServicePortComponent extends React.Component<Props & Dependenci
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export const ServicePortComponent = withInjectables<Dependencies, Props>(
|
export const ServicePortComponent = withInjectables<Dependencies, ServicePortComponentProps>(
|
||||||
NonInjectedServicePortComponent,
|
NonInjectedServicePortComponent,
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|||||||
@ -26,11 +26,11 @@ enum columnId {
|
|||||||
status = "status",
|
status = "status",
|
||||||
}
|
}
|
||||||
|
|
||||||
interface Props extends RouteComponentProps<ServicesRouteParams> {
|
export interface ServicesProps extends RouteComponentProps<ServicesRouteParams> {
|
||||||
}
|
}
|
||||||
|
|
||||||
@observer
|
@observer
|
||||||
export class Services extends React.Component<Props> {
|
export class Services extends React.Component<ServicesProps> {
|
||||||
render() {
|
render() {
|
||||||
return (
|
return (
|
||||||
<KubeObjectListLayout
|
<KubeObjectListLayout
|
||||||
|
|||||||
@ -12,12 +12,12 @@ import React from "react";
|
|||||||
import type { Node } from "../../../common/k8s-api/endpoints";
|
import type { Node } from "../../../common/k8s-api/endpoints";
|
||||||
import { TableCell } from "../table/table-cell";
|
import { TableCell } from "../table/table-cell";
|
||||||
|
|
||||||
interface Props {
|
export interface NodeDetailsResourcesProps {
|
||||||
node: Node;
|
node: Node;
|
||||||
type: "allocatable" | "capacity";
|
type: "allocatable" | "capacity";
|
||||||
}
|
}
|
||||||
|
|
||||||
export class NodeDetailsResources extends React.Component<Props> {
|
export class NodeDetailsResources extends React.Component<NodeDetailsResourcesProps> {
|
||||||
toMi(resource: string) {
|
toMi(resource: string) {
|
||||||
if (resource?.endsWith("Ki")) {
|
if (resource?.endsWith("Ki")) {
|
||||||
return `${(parseInt(resource) / 1024).toFixed(1)}Mi`;
|
return `${(parseInt(resource) / 1024).toFixed(1)}Mi`;
|
||||||
|
|||||||
@ -31,7 +31,7 @@ import { withInjectables } from "@ogre-tools/injectable-react";
|
|||||||
import kubeWatchApiInjectable
|
import kubeWatchApiInjectable
|
||||||
from "../../kube-watch-api/kube-watch-api.injectable";
|
from "../../kube-watch-api/kube-watch-api.injectable";
|
||||||
|
|
||||||
interface Props extends KubeObjectDetailsProps<Node> {
|
export interface NodeDetailsProps extends KubeObjectDetailsProps<Node> {
|
||||||
}
|
}
|
||||||
|
|
||||||
interface Dependencies {
|
interface Dependencies {
|
||||||
@ -39,10 +39,10 @@ interface Dependencies {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@observer
|
@observer
|
||||||
class NonInjectedNodeDetails extends React.Component<Props & Dependencies> {
|
class NonInjectedNodeDetails extends React.Component<NodeDetailsProps & Dependencies> {
|
||||||
@observable metrics: Partial<IClusterMetrics>;
|
@observable metrics: Partial<IClusterMetrics>;
|
||||||
|
|
||||||
constructor(props: Props & Dependencies) {
|
constructor(props: NodeDetailsProps & Dependencies) {
|
||||||
super(props);
|
super(props);
|
||||||
makeObservable(this);
|
makeObservable(this);
|
||||||
}
|
}
|
||||||
@ -184,7 +184,7 @@ class NonInjectedNodeDetails extends React.Component<Props & Dependencies> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export const NodeDetails = withInjectables<Dependencies, Props>(
|
export const NodeDetails = withInjectables<Dependencies, NodeDetailsProps>(
|
||||||
NonInjectedNodeDetails,
|
NonInjectedNodeDetails,
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|||||||
@ -37,7 +37,7 @@ enum columnId {
|
|||||||
status = "status",
|
status = "status",
|
||||||
}
|
}
|
||||||
|
|
||||||
interface Props extends RouteComponentProps<NodesRouteParams> {
|
export interface NodesRouteProps extends RouteComponentProps<NodesRouteParams> {
|
||||||
}
|
}
|
||||||
|
|
||||||
type MetricsTooltipFormatter = (metrics: [number, number]) => string;
|
type MetricsTooltipFormatter = (metrics: [number, number]) => string;
|
||||||
@ -50,11 +50,11 @@ interface UsageArgs {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@observer
|
@observer
|
||||||
export class NodesRoute extends React.Component<Props> {
|
export class NodesRoute extends React.Component<NodesRouteProps> {
|
||||||
@observable.ref metrics: Partial<INodeMetrics> = {};
|
@observable.ref metrics: Partial<INodeMetrics> = {};
|
||||||
private metricsWatcher = interval(30, async () => this.metrics = await getMetricsForAllNodes());
|
private metricsWatcher = interval(30, async () => this.metrics = await getMetricsForAllNodes());
|
||||||
|
|
||||||
constructor(props: Props) {
|
constructor(props: NodesRouteProps) {
|
||||||
super(props);
|
super(props);
|
||||||
makeObservable(this);
|
makeObservable(this);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -15,7 +15,7 @@ import { Table, TableCell, TableHead, TableRow } from "../table";
|
|||||||
import { KubeObjectMeta } from "../kube-object-meta";
|
import { KubeObjectMeta } from "../kube-object-meta";
|
||||||
import logger from "../../../common/logger";
|
import logger from "../../../common/logger";
|
||||||
|
|
||||||
interface Props extends KubeObjectDetailsProps<PodSecurityPolicy> {
|
export interface PodSecurityPolicyDetailsProps extends KubeObjectDetailsProps<PodSecurityPolicy> {
|
||||||
}
|
}
|
||||||
|
|
||||||
interface RuleGroup {
|
interface RuleGroup {
|
||||||
@ -27,7 +27,7 @@ interface RuleGroup {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@observer
|
@observer
|
||||||
export class PodSecurityPolicyDetails extends React.Component<Props> {
|
export class PodSecurityPolicyDetails extends React.Component<PodSecurityPolicyDetailsProps> {
|
||||||
renderRuleGroup( title: React.ReactNode, group: RuleGroup) {
|
renderRuleGroup( title: React.ReactNode, group: RuleGroup) {
|
||||||
if (!group) return null;
|
if (!group) return null;
|
||||||
const { rule, ranges } = group;
|
const { rule, ranges } = group;
|
||||||
|
|||||||
@ -21,8 +21,8 @@ import { Notifications } from "../notifications";
|
|||||||
import { type HelmRepo, HelmRepoManager } from "../../../main/helm/helm-repo-manager";
|
import { type HelmRepo, HelmRepoManager } from "../../../main/helm/helm-repo-manager";
|
||||||
import { requestOpenFilePickingDialog } from "../../ipc";
|
import { requestOpenFilePickingDialog } from "../../ipc";
|
||||||
|
|
||||||
interface Props extends Partial<DialogProps> {
|
export interface AddHelmRepoDialogProps extends Partial<DialogProps> {
|
||||||
onAddRepo: Function;
|
onAddRepo: () => void;
|
||||||
}
|
}
|
||||||
|
|
||||||
enum FileType {
|
enum FileType {
|
||||||
@ -40,11 +40,11 @@ function getEmptyRepo(): HelmRepo {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@observer
|
@observer
|
||||||
export class AddHelmRepoDialog extends React.Component<Props> {
|
export class AddHelmRepoDialog extends React.Component<AddHelmRepoDialogProps> {
|
||||||
private static keyExtensions = ["key", "keystore", "jks", "p12", "pfx", "pem"];
|
private static keyExtensions = ["key", "keystore", "jks", "p12", "pfx", "pem"];
|
||||||
private static certExtensions = ["crt", "cer", "ca-bundle", "p7b", "p7c", "p7s", "p12", "pfx", "pem"];
|
private static certExtensions = ["crt", "cer", "ca-bundle", "p7b", "p7c", "p7s", "p12", "pfx", "pem"];
|
||||||
|
|
||||||
constructor(props: Props) {
|
constructor(props: AddHelmRepoDialogProps) {
|
||||||
super(props);
|
super(props);
|
||||||
makeObservable(this);
|
makeObservable(this);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -7,7 +7,7 @@ import type { AppPreferenceRegistration } from "./app-preferences/app-preference
|
|||||||
import React from "react";
|
import React from "react";
|
||||||
import { cssNames } from "../../../renderer/utils";
|
import { cssNames } from "../../../renderer/utils";
|
||||||
|
|
||||||
interface ExtensionSettingsProps {
|
export interface ExtensionSettingsProps {
|
||||||
setting: AppPreferenceRegistration;
|
setting: AppPreferenceRegistration;
|
||||||
size: "small" | "normal";
|
size: "small" | "normal";
|
||||||
}
|
}
|
||||||
|
|||||||
@ -9,13 +9,13 @@ import React, { DOMAttributes } from "react";
|
|||||||
import { cssNames } from "../../utils";
|
import { cssNames } from "../../utils";
|
||||||
import { Icon } from "../icon";
|
import { Icon } from "../icon";
|
||||||
|
|
||||||
interface Props extends DOMAttributes<any>{
|
export interface RemovableItemProps extends DOMAttributes<any>{
|
||||||
icon?: string;
|
icon?: string;
|
||||||
onRemove: () => void;
|
onRemove: () => void;
|
||||||
className?: string;
|
className?: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function RemovableItem({ icon, onRemove, children, className, ...rest }: Props) {
|
export function RemovableItem({ icon, onRemove, children, className, ...rest }: RemovableItemProps) {
|
||||||
return (
|
return (
|
||||||
<div className={cssNames(styles.item, "flex gaps align-center justify-space-between", className)} {...rest}>
|
<div className={cssNames(styles.item, "flex gaps align-center justify-space-between", className)} {...rest}>
|
||||||
{icon && (
|
{icon && (
|
||||||
|
|||||||
@ -24,7 +24,7 @@ import { withInjectables } from "@ogre-tools/injectable-react";
|
|||||||
import kubeWatchApiInjectable
|
import kubeWatchApiInjectable
|
||||||
from "../../kube-watch-api/kube-watch-api.injectable";
|
from "../../kube-watch-api/kube-watch-api.injectable";
|
||||||
|
|
||||||
interface Props extends KubeObjectDetailsProps<StorageClass> {
|
export interface StorageClassDetailsProps extends KubeObjectDetailsProps<StorageClass> {
|
||||||
}
|
}
|
||||||
|
|
||||||
interface Dependencies {
|
interface Dependencies {
|
||||||
@ -32,7 +32,7 @@ interface Dependencies {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@observer
|
@observer
|
||||||
class NonInjectedStorageClassDetails extends React.Component<Props & Dependencies> {
|
class NonInjectedStorageClassDetails extends React.Component<StorageClassDetailsProps & Dependencies> {
|
||||||
componentDidMount() {
|
componentDidMount() {
|
||||||
disposeOnUnmount(this, [
|
disposeOnUnmount(this, [
|
||||||
this.props.subscribeStores([
|
this.props.subscribeStores([
|
||||||
@ -96,7 +96,7 @@ class NonInjectedStorageClassDetails extends React.Component<Props & Dependencie
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export const StorageClassDetails = withInjectables<Dependencies, Props>(
|
export const StorageClassDetails = withInjectables<Dependencies, StorageClassDetailsProps>(
|
||||||
NonInjectedStorageClassDetails,
|
NonInjectedStorageClassDetails,
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|||||||
@ -21,11 +21,11 @@ enum columnId {
|
|||||||
reclaimPolicy = "reclaim",
|
reclaimPolicy = "reclaim",
|
||||||
}
|
}
|
||||||
|
|
||||||
interface Props extends RouteComponentProps<StorageClassesRouteParams> {
|
export interface StorageClassesProps extends RouteComponentProps<StorageClassesRouteParams> {
|
||||||
}
|
}
|
||||||
|
|
||||||
@observer
|
@observer
|
||||||
export class StorageClasses extends React.Component<Props> {
|
export class StorageClasses extends React.Component<StorageClassesProps> {
|
||||||
render() {
|
render() {
|
||||||
return (
|
return (
|
||||||
<KubeObjectListLayout
|
<KubeObjectListLayout
|
||||||
|
|||||||
@ -23,14 +23,14 @@ import { getDetailsUrl } from "../kube-detail-params";
|
|||||||
import { boundMethod } from "../../utils";
|
import { boundMethod } from "../../utils";
|
||||||
import logger from "../../../common/logger";
|
import logger from "../../../common/logger";
|
||||||
|
|
||||||
interface Props extends KubeObjectDetailsProps<PersistentVolumeClaim> {
|
export interface PersistentVolumeClaimDetailsProps extends KubeObjectDetailsProps<PersistentVolumeClaim> {
|
||||||
}
|
}
|
||||||
|
|
||||||
@observer
|
@observer
|
||||||
export class PersistentVolumeClaimDetails extends React.Component<Props> {
|
export class PersistentVolumeClaimDetails extends React.Component<PersistentVolumeClaimDetailsProps> {
|
||||||
@observable metrics: IPvcMetrics = null;
|
@observable metrics: IPvcMetrics = null;
|
||||||
|
|
||||||
constructor(props: Props) {
|
constructor(props: PersistentVolumeClaimDetailsProps) {
|
||||||
super(props);
|
super(props);
|
||||||
makeObservable(this);
|
makeObservable(this);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -28,11 +28,11 @@ enum columnId {
|
|||||||
age = "age",
|
age = "age",
|
||||||
}
|
}
|
||||||
|
|
||||||
interface Props extends RouteComponentProps<VolumeClaimsRouteParams> {
|
export interface PersistentVolumeClaimsProps extends RouteComponentProps<VolumeClaimsRouteParams> {
|
||||||
}
|
}
|
||||||
|
|
||||||
@observer
|
@observer
|
||||||
export class PersistentVolumeClaims extends React.Component<Props> {
|
export class PersistentVolumeClaims extends React.Component<PersistentVolumeClaimsProps> {
|
||||||
render() {
|
render() {
|
||||||
return (
|
return (
|
||||||
<KubeObjectListLayout
|
<KubeObjectListLayout
|
||||||
|
|||||||
@ -20,7 +20,7 @@ import { TableHead } from "../table/table-head";
|
|||||||
import { volumesStore } from "./volumes.store";
|
import { volumesStore } from "./volumes.store";
|
||||||
import kebabCase from "lodash/kebabCase";
|
import kebabCase from "lodash/kebabCase";
|
||||||
|
|
||||||
interface Props {
|
export interface VolumeDetailsListProps {
|
||||||
persistentVolumes: PersistentVolume[];
|
persistentVolumes: PersistentVolume[];
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -31,7 +31,7 @@ enum sortBy {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@observer
|
@observer
|
||||||
export class VolumeDetailsList extends React.Component<Props> {
|
export class VolumeDetailsList extends React.Component<VolumeDetailsListProps> {
|
||||||
private sortingCallbacks = {
|
private sortingCallbacks = {
|
||||||
[sortBy.name]: (volume: PersistentVolume) => volume.getName(),
|
[sortBy.name]: (volume: PersistentVolume) => volume.getName(),
|
||||||
[sortBy.capacity]: (volume: PersistentVolume) => volume.getCapacity(),
|
[sortBy.capacity]: (volume: PersistentVolume) => volume.getCapacity(),
|
||||||
|
|||||||
@ -17,11 +17,11 @@ import { KubeObjectMeta } from "../kube-object-meta";
|
|||||||
import { getDetailsUrl } from "../kube-detail-params";
|
import { getDetailsUrl } from "../kube-detail-params";
|
||||||
import logger from "../../../common/logger";
|
import logger from "../../../common/logger";
|
||||||
|
|
||||||
interface Props extends KubeObjectDetailsProps<PersistentVolume> {
|
export interface PersistentVolumeDetailsProps extends KubeObjectDetailsProps<PersistentVolume> {
|
||||||
}
|
}
|
||||||
|
|
||||||
@observer
|
@observer
|
||||||
export class PersistentVolumeDetails extends React.Component<Props> {
|
export class PersistentVolumeDetails extends React.Component<PersistentVolumeDetailsProps> {
|
||||||
render() {
|
render() {
|
||||||
const { object: volume } = this.props;
|
const { object: volume } = this.props;
|
||||||
|
|
||||||
|
|||||||
@ -25,11 +25,11 @@ enum columnId {
|
|||||||
age = "age",
|
age = "age",
|
||||||
}
|
}
|
||||||
|
|
||||||
interface Props extends RouteComponentProps<VolumesRouteParams> {
|
export interface PersistentVolumesProps extends RouteComponentProps<VolumesRouteParams> {
|
||||||
}
|
}
|
||||||
|
|
||||||
@observer
|
@observer
|
||||||
export class PersistentVolumes extends React.Component<Props> {
|
export class PersistentVolumes extends React.Component<PersistentVolumesProps> {
|
||||||
render() {
|
render() {
|
||||||
return (
|
return (
|
||||||
<KubeObjectListLayout
|
<KubeObjectListLayout
|
||||||
|
|||||||
@ -21,14 +21,14 @@ import { ClusterRoleBindingDialog } from "./dialog";
|
|||||||
import { clusterRoleBindingsStore } from "./store";
|
import { clusterRoleBindingsStore } from "./store";
|
||||||
import { hashClusterRoleBindingSubject } from "./hashers";
|
import { hashClusterRoleBindingSubject } from "./hashers";
|
||||||
|
|
||||||
interface Props extends KubeObjectDetailsProps<ClusterRoleBinding> {
|
export interface ClusterRoleBindingDetailsProps extends KubeObjectDetailsProps<ClusterRoleBinding> {
|
||||||
}
|
}
|
||||||
|
|
||||||
@observer
|
@observer
|
||||||
export class ClusterRoleBindingDetails extends React.Component<Props> {
|
export class ClusterRoleBindingDetails extends React.Component<ClusterRoleBindingDetailsProps> {
|
||||||
selectedSubjects = new ObservableHashSet<ClusterRoleBindingSubject>([], hashClusterRoleBindingSubject);
|
selectedSubjects = new ObservableHashSet<ClusterRoleBindingSubject>([], hashClusterRoleBindingSubject);
|
||||||
|
|
||||||
constructor(props: Props) {
|
constructor(props: ClusterRoleBindingDetailsProps) {
|
||||||
super(props);
|
super(props);
|
||||||
autoBind(this);
|
autoBind(this);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -25,7 +25,7 @@ import { ObservableHashSet, nFircate } from "../../../utils";
|
|||||||
import { Input } from "../../input";
|
import { Input } from "../../input";
|
||||||
import { TooltipPosition } from "../../tooltip";
|
import { TooltipPosition } from "../../tooltip";
|
||||||
|
|
||||||
interface Props extends Partial<DialogProps> {
|
export interface ClusterRoleBindingDialogProps extends Partial<DialogProps> {
|
||||||
}
|
}
|
||||||
|
|
||||||
interface DialogState {
|
interface DialogState {
|
||||||
@ -34,12 +34,12 @@ interface DialogState {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@observer
|
@observer
|
||||||
export class ClusterRoleBindingDialog extends React.Component<Props> {
|
export class ClusterRoleBindingDialog extends React.Component<ClusterRoleBindingDialogProps> {
|
||||||
static state = observable.object<DialogState>({
|
static state = observable.object<DialogState>({
|
||||||
isOpen: false,
|
isOpen: false,
|
||||||
});
|
});
|
||||||
|
|
||||||
constructor(props: Props) {
|
constructor(props: ClusterRoleBindingDialogProps) {
|
||||||
super(props);
|
super(props);
|
||||||
makeObservable(this);
|
makeObservable(this);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -23,11 +23,11 @@ enum columnId {
|
|||||||
age = "age",
|
age = "age",
|
||||||
}
|
}
|
||||||
|
|
||||||
interface Props extends RouteComponentProps<ClusterRoleBindingsRouteParams> {
|
export interface ClusterRoleBindingsProps extends RouteComponentProps<ClusterRoleBindingsRouteParams> {
|
||||||
}
|
}
|
||||||
|
|
||||||
@observer
|
@observer
|
||||||
export class ClusterRoleBindings extends React.Component<Props> {
|
export class ClusterRoleBindings extends React.Component<ClusterRoleBindingsProps> {
|
||||||
render() {
|
render() {
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
|
|||||||
@ -16,16 +16,16 @@ import { Notifications } from "../../notifications";
|
|||||||
import { Wizard, WizardStep } from "../../wizard";
|
import { Wizard, WizardStep } from "../../wizard";
|
||||||
import { clusterRolesStore } from "./store";
|
import { clusterRolesStore } from "./store";
|
||||||
|
|
||||||
interface Props extends Partial<DialogProps> {
|
export interface AddClusterRoleDialogProps extends Partial<DialogProps> {
|
||||||
}
|
}
|
||||||
|
|
||||||
@observer
|
@observer
|
||||||
export class AddClusterRoleDialog extends React.Component<Props> {
|
export class AddClusterRoleDialog extends React.Component<AddClusterRoleDialogProps> {
|
||||||
static isOpen = observable.box(false);
|
static isOpen = observable.box(false);
|
||||||
|
|
||||||
@observable clusterRoleName = "";
|
@observable clusterRoleName = "";
|
||||||
|
|
||||||
constructor(props: Props) {
|
constructor(props: AddClusterRoleDialogProps) {
|
||||||
super(props);
|
super(props);
|
||||||
makeObservable(this);
|
makeObservable(this);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -13,11 +13,11 @@ import type { KubeObjectDetailsProps } from "../../kube-object-details";
|
|||||||
import { KubeObjectMeta } from "../../kube-object-meta";
|
import { KubeObjectMeta } from "../../kube-object-meta";
|
||||||
import type { ClusterRole } from "../../../../common/k8s-api/endpoints";
|
import type { ClusterRole } from "../../../../common/k8s-api/endpoints";
|
||||||
|
|
||||||
interface Props extends KubeObjectDetailsProps<ClusterRole> {
|
export interface ClusterRoleDetailsProps extends KubeObjectDetailsProps<ClusterRole> {
|
||||||
}
|
}
|
||||||
|
|
||||||
@observer
|
@observer
|
||||||
export class ClusterRoleDetails extends React.Component<Props> {
|
export class ClusterRoleDetails extends React.Component<ClusterRoleDetailsProps> {
|
||||||
render() {
|
render() {
|
||||||
const { object: clusterRole } = this.props;
|
const { object: clusterRole } = this.props;
|
||||||
|
|
||||||
|
|||||||
@ -20,11 +20,11 @@ enum columnId {
|
|||||||
age = "age",
|
age = "age",
|
||||||
}
|
}
|
||||||
|
|
||||||
interface Props extends RouteComponentProps<ClusterRolesRouteParams> {
|
export interface ClusterRolesProps extends RouteComponentProps<ClusterRolesRouteParams> {
|
||||||
}
|
}
|
||||||
|
|
||||||
@observer
|
@observer
|
||||||
export class ClusterRoles extends React.Component<Props> {
|
export class ClusterRoles extends React.Component<ClusterRolesProps> {
|
||||||
render() {
|
render() {
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
|
|||||||
@ -21,11 +21,11 @@ import { roleBindingsStore } from "./store";
|
|||||||
import { ObservableHashSet } from "../../../../common/utils/hash-set";
|
import { ObservableHashSet } from "../../../../common/utils/hash-set";
|
||||||
import { hashRoleBindingSubject } from "./hashers";
|
import { hashRoleBindingSubject } from "./hashers";
|
||||||
|
|
||||||
interface Props extends KubeObjectDetailsProps<RoleBinding> {
|
export interface RoleBindingDetailsProps extends KubeObjectDetailsProps<RoleBinding> {
|
||||||
}
|
}
|
||||||
|
|
||||||
@observer
|
@observer
|
||||||
export class RoleBindingDetails extends React.Component<Props> {
|
export class RoleBindingDetails extends React.Component<RoleBindingDetailsProps> {
|
||||||
selectedSubjects = new ObservableHashSet<RoleBindingSubject>([], hashRoleBindingSubject);
|
selectedSubjects = new ObservableHashSet<RoleBindingSubject>([], hashRoleBindingSubject);
|
||||||
|
|
||||||
async componentDidMount() {
|
async componentDidMount() {
|
||||||
|
|||||||
@ -26,7 +26,7 @@ import { clusterRolesStore } from "../+cluster-roles/store";
|
|||||||
import { Input } from "../../input";
|
import { Input } from "../../input";
|
||||||
import { ObservableHashSet, nFircate } from "../../../utils";
|
import { ObservableHashSet, nFircate } from "../../../utils";
|
||||||
|
|
||||||
interface Props extends Partial<DialogProps> {
|
export interface RoleBindingDialogProps extends Partial<DialogProps> {
|
||||||
}
|
}
|
||||||
|
|
||||||
interface DialogState {
|
interface DialogState {
|
||||||
@ -35,12 +35,12 @@ interface DialogState {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@observer
|
@observer
|
||||||
export class RoleBindingDialog extends React.Component<Props> {
|
export class RoleBindingDialog extends React.Component<RoleBindingDialogProps> {
|
||||||
static state = observable.object<DialogState>({
|
static state = observable.object<DialogState>({
|
||||||
isOpen: false,
|
isOpen: false,
|
||||||
});
|
});
|
||||||
|
|
||||||
constructor(props: Props) {
|
constructor(props: RoleBindingDialogProps) {
|
||||||
super(props);
|
super(props);
|
||||||
makeObservable(this);
|
makeObservable(this);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -23,11 +23,11 @@ enum columnId {
|
|||||||
age = "age",
|
age = "age",
|
||||||
}
|
}
|
||||||
|
|
||||||
interface Props extends RouteComponentProps<RoleBindingsRouteParams> {
|
export interface RoleBindingsProps extends RouteComponentProps<RoleBindingsRouteParams> {
|
||||||
}
|
}
|
||||||
|
|
||||||
@observer
|
@observer
|
||||||
export class RoleBindings extends React.Component<Props> {
|
export class RoleBindings extends React.Component<RoleBindingsProps> {
|
||||||
render() {
|
render() {
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
|
|||||||
@ -18,17 +18,17 @@ import { Notifications } from "../../notifications";
|
|||||||
import { Wizard, WizardStep } from "../../wizard";
|
import { Wizard, WizardStep } from "../../wizard";
|
||||||
import { rolesStore } from "./store";
|
import { rolesStore } from "./store";
|
||||||
|
|
||||||
interface Props extends Partial<DialogProps> {
|
export interface AddRoleDialogProps extends Partial<DialogProps> {
|
||||||
}
|
}
|
||||||
|
|
||||||
@observer
|
@observer
|
||||||
export class AddRoleDialog extends React.Component<Props> {
|
export class AddRoleDialog extends React.Component<AddRoleDialogProps> {
|
||||||
static isOpen = observable.box(false);
|
static isOpen = observable.box(false);
|
||||||
|
|
||||||
@observable roleName = "";
|
@observable roleName = "";
|
||||||
@observable namespace = "";
|
@observable namespace = "";
|
||||||
|
|
||||||
constructor(props: Props) {
|
constructor(props: AddRoleDialogProps) {
|
||||||
super(props);
|
super(props);
|
||||||
makeObservable(this);
|
makeObservable(this);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -13,11 +13,11 @@ import { DrawerTitle } from "../../drawer";
|
|||||||
import type { KubeObjectDetailsProps } from "../../kube-object-details";
|
import type { KubeObjectDetailsProps } from "../../kube-object-details";
|
||||||
import { KubeObjectMeta } from "../../kube-object-meta";
|
import { KubeObjectMeta } from "../../kube-object-meta";
|
||||||
|
|
||||||
interface Props extends KubeObjectDetailsProps<Role> {
|
export interface RoleDetailsProps extends KubeObjectDetailsProps<Role> {
|
||||||
}
|
}
|
||||||
|
|
||||||
@observer
|
@observer
|
||||||
export class RoleDetails extends React.Component<Props> {
|
export class RoleDetails extends React.Component<RoleDetailsProps> {
|
||||||
render() {
|
render() {
|
||||||
const { object: role } = this.props;
|
const { object: role } = this.props;
|
||||||
|
|
||||||
|
|||||||
@ -20,11 +20,11 @@ enum columnId {
|
|||||||
age = "age",
|
age = "age",
|
||||||
}
|
}
|
||||||
|
|
||||||
interface Props extends RouteComponentProps<RolesRouteParams> {
|
export interface RolesProps extends RouteComponentProps<RolesRouteParams> {
|
||||||
}
|
}
|
||||||
|
|
||||||
@observer
|
@observer
|
||||||
export class Roles extends React.Component<Props> {
|
export class Roles extends React.Component<RolesProps> {
|
||||||
render() {
|
render() {
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
|
|||||||
@ -19,17 +19,17 @@ import { Notifications } from "../../notifications";
|
|||||||
import { Wizard, WizardStep } from "../../wizard";
|
import { Wizard, WizardStep } from "../../wizard";
|
||||||
import { serviceAccountsStore } from "./store";
|
import { serviceAccountsStore } from "./store";
|
||||||
|
|
||||||
interface Props extends Partial<DialogProps> {
|
export interface CreateServiceAccountDialogProps extends Partial<DialogProps> {
|
||||||
}
|
}
|
||||||
|
|
||||||
@observer
|
@observer
|
||||||
export class CreateServiceAccountDialog extends React.Component<Props> {
|
export class CreateServiceAccountDialog extends React.Component<CreateServiceAccountDialogProps> {
|
||||||
static isOpen = observable.box(false);
|
static isOpen = observable.box(false);
|
||||||
|
|
||||||
@observable name = "";
|
@observable name = "";
|
||||||
@observable namespace = "default";
|
@observable namespace = "default";
|
||||||
|
|
||||||
constructor(props: Props) {
|
constructor(props: CreateServiceAccountDialogProps) {
|
||||||
super(props);
|
super(props);
|
||||||
makeObservable(this);
|
makeObservable(this);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -20,11 +20,11 @@ import { Spinner } from "../../spinner";
|
|||||||
import { ServiceAccountsSecret } from "./secret";
|
import { ServiceAccountsSecret } from "./secret";
|
||||||
import { getDetailsUrl } from "../../kube-detail-params";
|
import { getDetailsUrl } from "../../kube-detail-params";
|
||||||
|
|
||||||
interface Props extends KubeObjectDetailsProps<ServiceAccount> {
|
export interface ServiceAccountsDetailsProps extends KubeObjectDetailsProps<ServiceAccount> {
|
||||||
}
|
}
|
||||||
|
|
||||||
@observer
|
@observer
|
||||||
export class ServiceAccountsDetails extends React.Component<Props> {
|
export class ServiceAccountsDetails extends React.Component<ServiceAccountsDetailsProps> {
|
||||||
@observable secrets: Secret[];
|
@observable secrets: Secret[];
|
||||||
@observable imagePullSecrets: Secret[];
|
@observable imagePullSecrets: Secret[];
|
||||||
|
|
||||||
@ -53,7 +53,7 @@ export class ServiceAccountsDetails extends React.Component<Props> {
|
|||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
constructor(props: Props) {
|
constructor(props: ServiceAccountsDetailsProps) {
|
||||||
super(props);
|
super(props);
|
||||||
makeObservable(this);
|
makeObservable(this);
|
||||||
}
|
}
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user