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

fixes / responding to comments

Signed-off-by: Roman <ixrock@gmail.com>
This commit is contained in:
Roman 2021-10-13 09:59:54 +03:00
parent e966c1149d
commit bfacb86438
8 changed files with 70 additions and 39 deletions

View File

@ -363,11 +363,7 @@ utils.describeIf(minikubeReady(TEST_NAMESPACE))("Minikube based tests", () => {
await kubeApiServerRow.click();
await frame.waitForSelector(".Drawer", { state: "visible" });
const podLogsIcon = await frame.waitForSelector(".Drawer .drawer-title .Icon >> text=subject");
await podLogsIcon.click();
await frame.waitForSelector(".Drawer .drawer-title .Icon >> text=subject").then(button => button.click());
await frame.waitForSelector(".Dock.isOpen");
// Check if controls are available

View File

@ -319,4 +319,5 @@ export const DESCRIPTORS = {
export const CONSTANTS = {
defaultUpdateChannel,
updateChannels,
defaultEditorConfig,
};

View File

@ -29,7 +29,7 @@ import { kubeConfigDefaultPath } from "../kube-helpers";
import { appEventBus } from "../event-bus";
import path from "path";
import { ObservableToggleSet, toJS } from "../../renderer/utils";
import { defaultEditorConfig, DESCRIPTORS, EditorConfiguration, KubeconfigSyncValue, UserPreferencesModel, CONSTANTS } from "./preferences-helpers";
import { CONSTANTS, DESCRIPTORS, EditorConfiguration, KubeconfigSyncValue, UserPreferencesModel } from "./preferences-helpers";
import logger from "../../main/logger";
import { getPath } from "../utils/getPath";
@ -90,7 +90,7 @@ export class UserStore extends BaseStore<UserStoreModel> /* implements UserStore
/**
* Monaco editor configs
*/
@observable editorConfiguration: EditorConfiguration = defaultEditorConfig;
@observable editorConfiguration: EditorConfiguration = CONSTANTS.defaultEditorConfig;
/**
* The set of file/folder paths to be synced

View File

@ -21,7 +21,7 @@
export * from "./dock";
// registered dock-tab view components
// Registered React components to handle contents per {DockTab.kind}
export * from "./terminal-window";
export * from "./create-resource";
export * from "./edit-resource";

View File

@ -33,5 +33,13 @@
.InstallChartDone {
--flex-gap: #{$padding * 1.5};
position: absolute;
left: 0;
top: 0;
right: 0;
bottom: 0;
z-index: 1;
background: black;
padding: $padding * 2;
}

View File

@ -51,7 +51,7 @@ export class TerminalWindow extends React.Component<Props> {
]);
}
activate(tabId: TabId = dockStore.selectedTabId) {
activate(tabId: TabId) {
if (this.terminal) this.terminal.detach(); // detach previous
this.terminal = TerminalStore.getInstance().getTerminal(tabId);
this.terminal.attachTo(this.elem);

View File

@ -43,7 +43,6 @@ export class UpgradeChartStore extends DockTabStore<IChartUpgradeData> {
async init() {
super.init();
await releaseStore.loadFromContextNamespaces();
this.dispose.push(
dockStore.onTabChange(({ tabId }) => this.loadData(tabId), {
@ -53,20 +52,17 @@ export class UpgradeChartStore extends DockTabStore<IChartUpgradeData> {
);
}
hasValues(tabId: TabId) {
return this.values.has(tabId);
}
async loadData(tabId: TabId) {
await this.whenReady;
await Promise.all([
return Promise.all([
!releaseStore.isLoaded && releaseStore.loadFromContextNamespaces(),
this.loadValues(tabId),
this.loadVersions(tabId),
]);
}
getRelease(tabId: TabId) {
getRelease(tabId: TabId): HelmRelease | null {
const releaseName = this.getData(tabId)?.releaseName;
if (!releaseName) return null;
@ -75,34 +71,44 @@ export class UpgradeChartStore extends DockTabStore<IChartUpgradeData> {
}
@action
private async loadVersions(tabId: TabId) {
private async loadVersions(tabId: TabId): Promise<IChartVersion[]> {
try {
const { releaseName } = this.getData(tabId);
this.versions.clear();
console.info(`[UPGRADE-CHART]: loading versions for release "${releaseName}"`);
const versions = await helmChartStore.getVersions(releaseName);
this.versions.replace(versions);
return versions;
} catch (error) {
console.error(`[UPGRADE-CHART]: loading versions has failed: ${error}`);
}
return [];
}
@action
private async loadValues(tabId: TabId, { forceReload = false } = {}) {
if (this.hasValues(tabId) && !forceReload) {
return;
private async loadValues(tabId: TabId): Promise<string> {
if (this.values.has(tabId)) {
return this.values.get(tabId); // use cached values
}
try {
this.values.delete(tabId);
const { releaseName, releaseNamespace } = this.getData(tabId);
console.info(`[UPGRADE-CHART]: loading values for release "${releaseName}"`);
const values = await getReleaseValues(releaseName, releaseNamespace, true);
this.values.set(tabId, values);
return values;
} catch (error) {
console.error(`[UPGRADE-CHART]: loading values has failed: ${error}`);
}
return "";
}
getTabByRelease(releaseName: string): DockTab | null {

View File

@ -42,8 +42,6 @@ export class UpgradeChart extends React.Component<Props> {
makeObservable(this);
}
@observable selectedVersion: IChartVersion;
get tabId() {
return this.props.tabId;
}
@ -52,22 +50,45 @@ export class UpgradeChart extends React.Component<Props> {
return upgradeChartStore.getRelease(this.tabId);
}
@computed get versions(): SelectOption<IChartVersion>[] {
return upgradeChartStore.versions.map(version => ({ value: version }));
@observable selectedVersion: IChartVersion | undefined;
@computed get releaseVersion(): IChartVersion {
return this.getChartVersionByRelease(this.release);
}
get value() {
@computed get chartVersionOptions(): SelectOption<IChartVersion>[] {
return upgradeChartStore.versions.map(version => ({
value: version,
disabled: this.selectedVersion == this.releaseVersion,
}));
}
@computed get chartValues(): string {
return upgradeChartStore.values.get(this.tabId);
}
getChartVersionByRelease(release: HelmRelease): IChartVersion | undefined {
return upgradeChartStore.versions.find(({ version, repo }) => (
release?.getChart() == repo &&
release?.getVersion() === version
));
}
upgrade = async () => {
const { version, repo } = this.selectedVersion;
const releaseName = this.release.getName();
const releaseNs = this.release.getNs();
const { releaseVersion, selectedVersion, release, chartValues } = this;
const newVersionNotSelected = !selectedVersion || selectedVersion == releaseVersion;
if (!release || newVersionNotSelected) {
throw new Error(`You have not selected new version for "${releaseVersion}"`); // skip: nothing to upgrade
}
const { version, repo } = selectedVersion;
const releaseName = release.getName();
const releaseNs = release.getNs();
await releaseStore.update(releaseName, releaseNs, {
chart: this.release.getChart(),
values: this.value,
chart: release.getChart(),
values: chartValues,
repo, version,
});
@ -86,8 +107,7 @@ export class UpgradeChart extends React.Component<Props> {
};
render() {
const { release, versions, selectedVersion } = this;
const currentVersion = release.getVersion();
const { release, chartVersionOptions } = this;
return (
<InfoPanel
@ -97,16 +117,16 @@ export class UpgradeChart extends React.Component<Props> {
submittingMessage="Updating.."
controls={
<div className="upgrade flex gaps align-center">
<span>Release</span> <Badge label={release.getName()}/>
<span>Namespace</span> <Badge label={release.getNs()}/>
<span>Version</span> <Badge label={currentVersion}/>
<span>Release</span> <Badge label={release?.getName()}/>
<span>Namespace</span> <Badge label={release?.getNs()}/>
<span>Version</span> <Badge label={release?.getVersion()}/>
<span>Upgrade version</span>
<Select
className="chart-version"
menuPlacement="top"
themeName="outlined"
value={selectedVersion ?? versions[0]}
options={versions}
value={this.selectedVersion ?? this.releaseVersion}
options={chartVersionOptions}
formatOptionLabel={this.formatVersionLabel}
onChange={({ value }: SelectOption<IChartVersion>) => this.selectedVersion = value}
/>