{ + params?: P; + query?: Q; +} + +export function buildURL
(path: string | any) { + const pathBuilder = compile(String(path)); + return function ({ params, query }: IURLParams
= {}) {
+ const queryParams = query ? new URLSearchParams(Object.entries(query)).toString() : ""
+ return pathBuilder(params) + (queryParams ? `?${queryParams}` : "")
+ }
+}
diff --git a/src/common/vars.ts b/src/common/vars.ts
index ca28a2f99a..206aa59ce2 100644
--- a/src/common/vars.ts
+++ b/src/common/vars.ts
@@ -5,7 +5,9 @@ import { defineGlobal } from "./utils/defineGlobal";
export const isMac = process.platform === "darwin"
export const isWindows = process.platform === "win32"
+export const isLinux = process.platform === "linux"
export const isDebugging = process.env.DEBUG === "true";
+export const isSnap = !!process.env["SNAP"]
export const isProduction = process.env.NODE_ENV === "production"
export const isTestEnv = !!process.env.JEST_WORKER_ID;
export const isDevelopment = !isTestEnv && !isProduction;
diff --git a/src/common/workspace-store.ts b/src/common/workspace-store.ts
index 752a53f41b..b7f2467013 100644
--- a/src/common/workspace-store.ts
+++ b/src/common/workspace-store.ts
@@ -1,8 +1,7 @@
import { action, computed, observable, toJS } from "mobx";
import { BaseStore } from "./base-store";
import { clusterStore } from "./cluster-store"
-import { landingURL } from "../renderer/components/+landing-page/landing-page.route";
-import { navigate } from "../renderer/navigation";
+import { appEventBus } from "./event-bus";
export type WorkspaceId = string;
@@ -56,18 +55,13 @@ export class WorkspaceStore extends BaseStore {lb} {route} {
- params?: P;
- query?: IQueryParams & Q;
-}
-
-// todo: extract building urls to commons (also used in menu.ts)
-// fixme: missing types validation for params & query
-export function buildURL (path: string | string[]) {
- const pathBuilder = compile(path.toString());
- return function ({ params, query }: IURLParams = {}) {
- return pathBuilder(params) + (query ? getQueryString(query, false) : "")
- }
-}
-
// common params for all pages
export interface IQueryParams {
namespaces?: string[]; // selected context namespaces
@@ -100,3 +80,33 @@ export function setSearch(text: string) {
export function getSearch() {
return navigation.searchParams.get("search") || "";
}
+
+export function getMatchedClusterId(): string {
+ const matched = matchPath
+
+ {_i18n._(t`Reason`)}: {status.lastState.terminated.reason} - {_i18n._(t`exit code`)}: {status.lastState.terminated.exitCode}
+ {_i18n._(t`Started at`)}: {status.lastState.terminated.startedAt}
+ {_i18n._(t`Finished at`)}: {status.lastState.terminated.finishedAt}
+
+ )
+ }
+ }
+
render() {
const { pod, container, metrics } = this.props
if (!pod || !container) return null
const { name, image, imagePullPolicy, ports, volumeMounts, command, args } = container
const status = pod.getContainerStatuses().find(status => status.name === container.name)
const state = status ? Object.keys(status.state)[0] : ""
+ const lastState = status ? Object.keys(status.lastState)[0] : ""
const ready = status ? status.ready : ""
const liveness = pod.getLivenessProbe(container)
const readiness = pod.getReadinessProbe(container)
@@ -48,10 +73,12 @@ export class PodDetailsContainer extends React.Component