mirror of
https://github.com/dbeaver/cloudbeaver.git
synced 2026-09-24 16:04:36 +08:00
fix(core-administration): configuration exit
CB-273
This commit is contained in:
@@ -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;
|
||||
|
||||
+9
@@ -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 });
|
||||
|
||||
+11
-2
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
+6
-1
@@ -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]
|
||||
);
|
||||
|
||||
|
||||
+6
-2
@@ -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;
|
||||
}
|
||||
Reference in New Issue
Block a user