mirror of
https://github.com/dbeaver/cloudbeaver.git
synced 2026-09-24 16:04:36 +08:00
63 lines
2.2 KiB
TypeScript
63 lines
2.2 KiB
TypeScript
/*
|
|
* CloudBeaver - Cloud Database Manager
|
|
* Copyright (C) 2020-2022 DBeaver Corp and others
|
|
*
|
|
* Licensed under the Apache License, Version 2.0.
|
|
* you may not use this file except in compliance with the License.
|
|
*/
|
|
|
|
import { Bootstrap, injectable } from '@cloudbeaver/core-di';
|
|
import { CommonDialogService } from '@cloudbeaver/core-dialogs';
|
|
import { NotificationService } from '@cloudbeaver/core-events';
|
|
import { PermissionsService, EPermission } from '@cloudbeaver/core-root';
|
|
import { MainMenuService, EMainMenu } from '@cloudbeaver/plugin-top-app-bar';
|
|
|
|
import { ConnectionDialog } from './ConnectionDialog/ConnectionDialog';
|
|
import { TemplateConnectionsResource } from './TemplateConnectionsResource';
|
|
|
|
@injectable()
|
|
export class TemplateConnectionPluginBootstrap extends Bootstrap {
|
|
constructor(
|
|
private readonly mainMenuService: MainMenuService,
|
|
private readonly templateConnectionsResource: TemplateConnectionsResource,
|
|
private readonly commonDialogService: CommonDialogService,
|
|
private readonly notificationService: NotificationService,
|
|
private readonly permissionsService: PermissionsService
|
|
) {
|
|
super();
|
|
}
|
|
|
|
register(): void | Promise<void> {
|
|
this.mainMenuService.onConnectionClick.addHandler(this.loadTemplateConnections.bind(this));
|
|
this.mainMenuService.registerMenuItem(EMainMenu.mainMenuConnectionsPanel, {
|
|
id: 'mainMenuConnect',
|
|
order: 1,
|
|
titleGetter: this.getMenuTitle.bind(this),
|
|
onClick: this.openConnectionsDialog.bind(this),
|
|
isHidden: () => !this.permissionsService.has(EPermission.public) || !this.templateConnectionsResource.data.length,
|
|
});
|
|
}
|
|
|
|
load(): void | Promise<void> { }
|
|
|
|
private getMenuTitle(): string {
|
|
if (this.templateConnectionsResource.isLoading()) {
|
|
return 'ui_processing_loading';
|
|
}
|
|
return 'basicConnection_main_menu_item';
|
|
}
|
|
|
|
private async openConnectionsDialog() {
|
|
this.loadTemplateConnections();
|
|
await this.commonDialogService.open(ConnectionDialog, null);
|
|
}
|
|
|
|
private async loadTemplateConnections() {
|
|
try {
|
|
await this.templateConnectionsResource.load();
|
|
} catch (error: any) {
|
|
this.notificationService.logException(error, 'Template Connections loading failed');
|
|
}
|
|
}
|
|
}
|