fix(core-administration): configuration exit

CB-273
This commit is contained in:
Wroud
2020-09-06 23:38:50 +03:00
parent 77b0d4bbbb
commit df42e8e88e
6 changed files with 47 additions and 5 deletions
@@ -8,6 +8,8 @@
import { Style } from '@cloudbeaver/core-theming';
import { IRouteParams } from '../AdministrationScreen/IRouteParams';
export enum AdministrationItemType {
Default,
Administration,
@@ -54,6 +56,7 @@ export interface IAdministrationItemSubItem {
export interface IConfigurationWizardItemOptions {
description: string;
defaultRoute?: IRouteParams;
onValidate?: () => Promise<boolean> | boolean;
isDisabled?: () => boolean;
isHidden?: () => boolean;
@@ -14,6 +14,7 @@ import { ScreenService, RouterService } from '@cloudbeaver/core-routing';
import { LocalStorageSaveService } from '@cloudbeaver/core-settings';
import { AdministrationItemService } from '../AdministrationItem/AdministrationItemService';
import { IRouteParams } from './IRouteParams';
const ADMINISTRATION_ITEMS_STATE = 'administration_items_state';
@@ -77,6 +78,14 @@ export class AdministrationScreenService {
}
}
navigateTo(item: string, params?: IRouteParams) {
if (!params) {
this.navigateToItem(item);
} else {
this.navigateToItemSub(item, params.sub, params.param);
}
}
navigateToItem(item: string) {
if (this.isConfigurationMode) {
this.routerService.router.navigate(AdministrationScreenService.setupItemRouteName, { item });
@@ -85,13 +85,22 @@ export class AdministrationScreenServiceBootstrap extends Bootstrap {
],
component: ConfigurationWizardScreen,
onActivate: this.handleActivate.bind(this),
onDeactivate: this.handleDeactivate.bind(this),
});
}
async load() {
const config = await this.serverConfigResource.load(null);
await this.serverConfigResource.load(null);
if (config?.configurationMode && !this.screenService.isActive(AdministrationScreenService.setupName)) {
if (this.administrationScreenService.isConfigurationMode
&& !this.screenService.isActive(AdministrationScreenService.setupName)) {
this.administrationScreenService.navigateToRoot();
}
}
private async handleDeactivate() {
if (this.administrationScreenService.isConfigurationMode
&& !this.screenService.isActive(AdministrationScreenService.setupName)) {
this.administrationScreenService.navigateToRoot();
}
}
@@ -14,19 +14,24 @@ import { Translate } from '@cloudbeaver/core-localization';
import { usePermission } from '@cloudbeaver/core-root';
import { Administration } from '../../Administration/Administration';
import { AdministrationItemService } from '../../AdministrationItem/AdministrationItemService';
import { EAdminPermission } from '../../EAdminPermission';
import { AdministrationScreenService } from '../AdministrationScreenService';
import { WizardStepper } from './WizardStepper';
import { WizardTopAppBar } from './WizardTopAppBar/WizardTopAppBar';
export const ConfigurationWizardScreen = observer(function ConfigurationWizardScreen() {
const administrationItemService = useService(AdministrationItemService);
const administrationScreenService = useService(AdministrationScreenService);
if (!usePermission(EAdminPermission.admin)) {
return <Translate token='root_permission_denied'/>;
}
const handleSelect = useCallback(
(item: string) => administrationScreenService.navigateToItem(item),
(item: string) => {
const route = administrationItemService.getItem(item, true)?.configurationWizardOptions?.defaultRoute;
administrationScreenService.navigateTo(item, route);
},
[administrationScreenService]
);
@@ -130,7 +130,10 @@ export class ConfigurationWizardService {
if (this.currentStepIndex + 1 < this.steps.length) {
if (this.nextStep) {
this.administrationScreenService.navigateToItem(this.nextStep.name);
this.administrationScreenService.navigateTo(
this.nextStep.name,
this.nextStep.configurationWizardOptions?.defaultRoute
);
}
} else {
await this.finish();
@@ -143,7 +146,8 @@ export class ConfigurationWizardService {
}
if (this.currentStepIndex - 1 >= 0) {
this.administrationScreenService.navigateToItem(this.steps[this.currentStepIndex - 1].name);
const step = this.steps[this.currentStepIndex - 1];
this.administrationScreenService.navigateTo(step.name, step.configurationWizardOptions?.defaultRoute);
}
}
@@ -0,0 +1,12 @@
/*
* cloudbeaver - Cloud Database Manager
* Copyright (C) 2020 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0.
* you may not use this file except in compliance with the License.
*/
export interface IRouteParams {
sub: string;
param?: string;
}