From fd63045874c7be5e3bf0da9f97379e487ec67c08 Mon Sep 17 00:00:00 2001 From: Alex Andreev Date: Mon, 18 Jan 2021 17:18:20 +0300 Subject: [PATCH] Refresh containers on pod change Signed-off-by: Alex Andreev --- src/renderer/components/dock/dock.store.ts | 6 +++++ .../components/dock/log-resource-selector.tsx | 23 ++++++++++++++----- src/renderer/components/dock/log-tab.store.ts | 2 +- src/renderer/components/dock/logs.tsx | 1 + 4 files changed, 25 insertions(+), 7 deletions(-) diff --git a/src/renderer/components/dock/dock.store.ts b/src/renderer/components/dock/dock.store.ts index 91d72d98d9..423367093e 100644 --- a/src/renderer/components/dock/dock.store.ts +++ b/src/renderer/components/dock/dock.store.ts @@ -208,6 +208,12 @@ export class DockStore { this.closeTabs(tabs); } + renameTab(tabId: TabId, title: string) { + const tab = this.getTabById(tabId); + + tab.title = title; + } + @action selectTab(tabId: TabId) { this.selectedTabId = this.getTabById(tabId)?.id ?? null; diff --git a/src/renderer/components/dock/log-resource-selector.tsx b/src/renderer/components/dock/log-resource-selector.tsx index 709542734b..3d10c928da 100644 --- a/src/renderer/components/dock/log-resource-selector.tsx +++ b/src/renderer/components/dock/log-resource-selector.tsx @@ -8,17 +8,19 @@ import { Badge } from "../badge"; import { Select, SelectOption } from "../select"; import { LogTabData } from "./log-tab.store"; import { podsStore } from "../+workloads-pods/pods.store"; +import { dockStore, TabId } from "./dock.store"; interface Props { + tabId: TabId tabData: LogTabData save: (data: Partial) => void reload: () => void } export const LogResourceSelector = observer((props: Props) => { - const { tabData, save, reload } = props; + const { tabData, save, reload, tabId } = props; const { selectedPod, selectedContainer, containers, initContainers, pods } = tabData; - const pod = new Pod(tabData.selectedPod); + const pod = new Pod(selectedPod); const onContainerChange = (option: SelectOption) => { save({ @@ -30,9 +32,18 @@ export const LogResourceSelector = observer((props: Props) => { }; const onPodChange = (option: SelectOption) => { - save({ selectedPod: podsStore.getByName(option.value, selectedPod.getNs()) }); - // Change tab title - // Refresh container list + const selectedPod = podsStore.getByName(option.value, pod.getNs()); + const { getContainers, getInitContainers, getAllContainers } = selectedPod; + + save({ + selectedPod, + containers: getContainers(), + initContainers: getInitContainers(), + selectedContainer: getAllContainers()[0] + }); + + dockStore.renameTab(tabId, `Pod ${option.value}`); + reload(); }; @@ -60,7 +71,7 @@ export const LogResourceSelector = observer((props: Props) => { const podSelectOptions = [ { label: pod.getOwnerRefs()[0]?.name, - options: getSelectOptions(pods.map(pod => pod.getName())) + options: getSelectOptions(pods.map(pod => pod.metadata.name)) } ]; diff --git a/src/renderer/components/dock/log-tab.store.ts b/src/renderer/components/dock/log-tab.store.ts index d262e0cf57..7b0b395fd2 100644 --- a/src/renderer/components/dock/log-tab.store.ts +++ b/src/renderer/components/dock/log-tab.store.ts @@ -54,7 +54,7 @@ export class LogTabStore extends DockTabStore { const title = `${workload.kind} ${selectedPod.getName()}`; this.createLogsTab(title, { - pods: pods.length ? pods : [selectedPod], + pods, selectedPod, selectedContainer }); diff --git a/src/renderer/components/dock/logs.tsx b/src/renderer/components/dock/logs.tsx index 6ba8f07b96..0aa31f95fb 100644 --- a/src/renderer/components/dock/logs.tsx +++ b/src/renderer/components/dock/logs.tsx @@ -88,6 +88,7 @@ export class Logs extends React.Component { const controls = (