diff --git a/webapp/packages/core/src/app/shared/NavigationTabs/ITab.ts b/webapp/packages/core/src/app/shared/NavigationTabs/ITab.ts index 4f223a430b..d336f9f112 100644 --- a/webapp/packages/core/src/app/shared/NavigationTabs/ITab.ts +++ b/webapp/packages/core/src/app/shared/NavigationTabs/ITab.ts @@ -10,8 +10,6 @@ export interface ITabOptions { id?: string; handlerId: string; handlerState: T; - name?: string; - icon?: string; } export interface ITab extends ITabOptions { diff --git a/webapp/packages/core/src/app/shared/NavigationTabs/NavigationTabsService.ts b/webapp/packages/core/src/app/shared/NavigationTabs/NavigationTabsService.ts index bc4f981b91..de9259fccc 100644 --- a/webapp/packages/core/src/app/shared/NavigationTabs/NavigationTabsService.ts +++ b/webapp/packages/core/src/app/shared/NavigationTabs/NavigationTabsService.ts @@ -47,8 +47,8 @@ export class NavigationTabsService { return this.state.tabs; } - onTabSelect = new Subject(); - onTabClose = new Subject(); + readonly onTabSelect = new Subject(); + readonly onTabClose = new Subject(); constructor( private notificationService: NotificationService, @@ -64,8 +64,6 @@ export class NavigationTabsService { if ( typeof value.id === 'string' && typeof value.handlerId === 'string' - && (!value.name || typeof value.name === 'string') - && (!value.icon || typeof value.icon === 'string') ) { map[key] = value; } diff --git a/webapp/packages/core/src/app/shared/NavigationTabs/TabHandler.ts b/webapp/packages/core/src/app/shared/NavigationTabs/TabHandler.ts index b3942eeac8..6a59db0a9a 100644 --- a/webapp/packages/core/src/app/shared/NavigationTabs/TabHandler.ts +++ b/webapp/packages/core/src/app/shared/NavigationTabs/TabHandler.ts @@ -31,8 +31,6 @@ export type TabRestoreEvent = (tab: ITab) => Promise | bool export type TabHandlerOptions = { key: string; - navigatorId: string; - priority: number; getTabComponent(): TabHandlerTabComponent; getPanelComponent(): TabHandlerPanelComponent; onSelect?: TabHandlerEvent; @@ -43,7 +41,6 @@ export type TabHandlerOptions = { export class TabHandler { key: string - navigatorId: string getTabComponent: () => TabHandlerTabComponent; getPanelComponent: () => TabHandlerPanelComponent; onSelect?: TabHandlerEvent @@ -53,7 +50,6 @@ export class TabHandler { constructor(options: TabHandlerOptions) { this.key = options.key; - this.navigatorId = options.navigatorId; this.getTabComponent = options.getTabComponent; this.getPanelComponent = options.getPanelComponent; this.onSelect = options.onSelect; diff --git a/webapp/packages/data-viewer-plugin/src/TableViewer/TableViewerModel.ts b/webapp/packages/data-viewer-plugin/src/TableViewer/TableViewerModel.ts index 47b6e1bcdf..47f312c075 100644 --- a/webapp/packages/data-viewer-plugin/src/TableViewer/TableViewerModel.ts +++ b/webapp/packages/data-viewer-plugin/src/TableViewer/TableViewerModel.ts @@ -34,7 +34,7 @@ export interface ITableViewerModelOptions { containerNodePath?: string; resultId?: string | null; // will be filled after fist data fetch executionContext?: IExecutionContext | null; // will be filled before fist data fetch - sourceName?: string; + sourceName?: string; // TODO: refactor it, used for showing sql query for export initialState?: IRequestDataResult; noLoaderWhileRequestingDataAsync?: boolean; requestDataAsync(model: TableViewerModel, rowOffset: number, count: number): Promise; diff --git a/webapp/packages/object-viewer-plugin/src/IObjectViewerTabState.ts b/webapp/packages/object-viewer-plugin/src/IObjectViewerTabState.ts index 7e07f2a27c..df6d46a8a2 100644 --- a/webapp/packages/object-viewer-plugin/src/IObjectViewerTabState.ts +++ b/webapp/packages/object-viewer-plugin/src/IObjectViewerTabState.ts @@ -9,6 +9,8 @@ export interface IObjectViewerTabState { objectId: string; folderId: string; + tabIcon?: string; + tabTitle?: string; pageId: string; pagesState: Map; } diff --git a/webapp/packages/object-viewer-plugin/src/ObjectViewerTab.tsx b/webapp/packages/object-viewer-plugin/src/ObjectViewerTab.tsx index df804af32f..4e4723b91c 100644 --- a/webapp/packages/object-viewer-plugin/src/ObjectViewerTab.tsx +++ b/webapp/packages/object-viewer-plugin/src/ObjectViewerTab.tsx @@ -22,8 +22,8 @@ export const ObjectViewerTab = observer(function ObjectViewerTab({ return styled(useStyles(...style))( - - + + ); }); diff --git a/webapp/packages/object-viewer-plugin/src/ObjectViewerTabService.ts b/webapp/packages/object-viewer-plugin/src/ObjectViewerTabService.ts index 463492b970..5a724f009c 100644 --- a/webapp/packages/object-viewer-plugin/src/ObjectViewerTabService.ts +++ b/webapp/packages/object-viewer-plugin/src/ObjectViewerTabService.ts @@ -46,8 +46,6 @@ export class ObjectViewerTabService { this.tabHandler = this.navigationTabsService .registerTabHandler({ key: objectViewerTabHandlerKey, - navigatorId: 'database', - priority: 1, getTabComponent: () => ObjectViewerTab, getPanelComponent: () => ObjectViewerPanel, onRestore: this.restoreObjectTab.bind(this), @@ -132,11 +130,16 @@ export class ObjectViewerTabService { } async restoreObjectTab(tab: ITab) { - if (typeof tab.handlerState?.folderId === 'string' && typeof tab.handlerState?.objectId === 'string') { + if ( + typeof tab.handlerState?.folderId === 'string' + && typeof tab.handlerState?.objectId === 'string' + && (!tab.handlerState.tabIcon || typeof tab.handlerState.tabIcon === 'string') + && (!tab.handlerState.tabTitle || typeof tab.handlerState.tabTitle === 'string') + ) { const node = await this.nodesManagerService.loadNodeInfo(tab.handlerState.objectId); if (node) { - tab.icon = node.icon; - tab.name = node.name; + tab.handlerState.tabIcon = node.icon; + tab.handlerState.tabTitle = node.name; return this.dbObjectPageService.restorePages(tab); } @@ -162,8 +165,8 @@ export class ObjectViewerTabService { ); if (tab) { - tab.name = nodeInfo.name; - tab.icon = nodeInfo.icon; + tab.handlerState.tabIcon = nodeInfo.icon; + tab.handlerState.tabTitle = nodeInfo.name; tabInfo.registerTab(tab); } else { tabInfo.openNewTab({ @@ -173,9 +176,9 @@ export class ObjectViewerTabService { folderId: nodeInfo.folderId, pageId: '', pagesState: new Map(), + tabIcon: nodeInfo.icon, + tabTitle: nodeInfo.name, }, - name: nodeInfo.name, - icon: nodeInfo.icon, }); } } diff --git a/webapp/packages/sql-editor/src/SqlEditorTabService.ts b/webapp/packages/sql-editor/src/SqlEditorTabService.ts index f06b61c964..5078915cd8 100644 --- a/webapp/packages/sql-editor/src/SqlEditorTabService.ts +++ b/webapp/packages/sql-editor/src/SqlEditorTabService.ts @@ -43,8 +43,6 @@ export class SqlEditorTabService { this.tabHandler = this.navigationTabsService .registerTabHandler({ key: sqlEditorTabHandlerKey, - navigatorId: 'sql-editor', - priority: 1, getTabComponent: () => SqlEditorTab, getPanelComponent: () => SqlEditorPanel, onRestore: this.handleTabRestore.bind(this),