From f0f4b577a8e894119732f9af2b80158372351d1f Mon Sep 17 00:00:00 2001 From: Naumov Alexey Date: Fri, 24 Jun 2022 00:38:13 +0200 Subject: [PATCH 1/4] fix(core-app): CB-2201 take data context from the capture view --- .../ElementsTree/ElementsTreeTools/ElementsTreeTools.tsx | 2 +- .../ElementsTree/ElementsTreeTools/ElementsTreeToolsMenu.tsx | 5 +---- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/webapp/packages/core-app/src/NavigationTree/ElementsTree/ElementsTreeTools/ElementsTreeTools.tsx b/webapp/packages/core-app/src/NavigationTree/ElementsTree/ElementsTreeTools/ElementsTreeTools.tsx index 0ce963543a..8a1ab7c016 100644 --- a/webapp/packages/core-app/src/NavigationTree/ElementsTree/ElementsTreeTools/ElementsTreeTools.tsx +++ b/webapp/packages/core-app/src/NavigationTree/ElementsTree/ElementsTreeTools/ElementsTreeTools.tsx @@ -81,7 +81,7 @@ export const ElementsTreeTools = observer>(functi - + {tree.settings?.configurable && ( (function ElementsTreeToolsMenu({ tree, className }) { +export const ElementsTreeToolsMenu = observer(function ElementsTreeToolsMenu({ className }) { const menu = useMenu({ menu: MENU_ELEMENTS_TREE_TOOLS }); - menu.context.set(DATA_CONTEXT_ELEMENTS_TREE, tree); - return styled(style)( From 7d5005d87d649afd3153ad26ad9e65607cff0054 Mon Sep 17 00:00:00 2001 From: Naumov Alexey Date: Fri, 24 Jun 2022 01:51:10 +0200 Subject: [PATCH 2/4] fix(plugin-sql-editor): CB-2201 pass tab id as data context --- .../src/PluginBootstrap.ts | 8 ++++++-- .../src/SqlEditorPanel.tsx | 3 ++- .../plugin-sql-editor/src/SqlEditor/SqlEditor.tsx | 7 ++++--- .../src/SqlEditor/SqlEditorActionsMenu.tsx | 7 ++++--- 4 files changed, 16 insertions(+), 9 deletions(-) diff --git a/webapp/packages/plugin-sql-editor-navigation-tab-resource/src/PluginBootstrap.ts b/webapp/packages/plugin-sql-editor-navigation-tab-resource/src/PluginBootstrap.ts index 35a858bbfd..12a006c23e 100644 --- a/webapp/packages/plugin-sql-editor-navigation-tab-resource/src/PluginBootstrap.ts +++ b/webapp/packages/plugin-sql-editor-navigation-tab-resource/src/PluginBootstrap.ts @@ -10,6 +10,7 @@ import { INodeNavigationData, NavigationTabsService, NavNodeInfoResource, NavNod import { Bootstrap, injectable } from '@cloudbeaver/core-di'; import { CommonDialogService, DialogueStateResult } from '@cloudbeaver/core-dialogs'; import { NotificationService } from '@cloudbeaver/core-events'; +import { DATA_CONTEXT_TAB_ID } from '@cloudbeaver/core-ui'; import { createPath } from '@cloudbeaver/core-utils'; import { ActionService, ACTION_SAVE, DATA_CONTEXT_MENU, MenuService } from '@cloudbeaver/core-view'; import { NavResourceNodeService, RESOURCE_NODE_TYPE, SaveScriptDialog, ResourceManagerService, ProjectsResource, RESOURCES_NODE_PATH } from '@cloudbeaver/plugin-resource-manager'; @@ -50,9 +51,10 @@ export class PluginBootstrap extends Bootstrap { id: 'scripts-base-handler', isActionApplicable: (context, action): boolean => { if (action === ACTION_SAVE) { + const tabId = context.tryGet(DATA_CONTEXT_TAB_ID); const state = context.tryGet(DATA_CONTEXT_SQL_EDITOR_STATE); - if (!state) { + if (!state || !tabId) { return false; } @@ -62,9 +64,11 @@ export class PluginBootstrap extends Bootstrap { return false; }, handler: async (context, action) => { + const tabId = context.get(DATA_CONTEXT_TAB_ID); const state = context.get(DATA_CONTEXT_SQL_EDITOR_STATE); + const dataSource = this.sqlDataSourceService.get(state.editorId); - const tab = this.navigationTabsService.currentTab; + const tab = this.navigationTabsService.getTab(tabId); if (!dataSource) { return; diff --git a/webapp/packages/plugin-sql-editor-navigation-tab/src/SqlEditorPanel.tsx b/webapp/packages/plugin-sql-editor-navigation-tab/src/SqlEditorPanel.tsx index 222d3a61c5..3651e8e87c 100644 --- a/webapp/packages/plugin-sql-editor-navigation-tab/src/SqlEditorPanel.tsx +++ b/webapp/packages/plugin-sql-editor-navigation-tab/src/SqlEditorPanel.tsx @@ -7,7 +7,7 @@ */ import type { TabHandlerPanelComponent } from '@cloudbeaver/core-app'; -import { useTab } from '@cloudbeaver/core-ui'; +import { DATA_CONTEXT_TAB_ID, useTab } from '@cloudbeaver/core-ui'; import { useCaptureViewContext } from '@cloudbeaver/core-view'; import { DATA_CONTEXT_SQL_EDITOR_STATE, ISqlEditorTabState, SqlEditor } from '@cloudbeaver/plugin-sql-editor'; @@ -16,6 +16,7 @@ export const SqlEditorPanel: TabHandlerPanelComponent = func useCaptureViewContext(context => { if (baseTab.selected) { + context?.set(DATA_CONTEXT_TAB_ID, tab.id); context?.set(DATA_CONTEXT_SQL_EDITOR_STATE, tab.handlerState); } }); diff --git a/webapp/packages/plugin-sql-editor/src/SqlEditor/SqlEditor.tsx b/webapp/packages/plugin-sql-editor/src/SqlEditor/SqlEditor.tsx index 9adb4f3c46..f0979b3321 100644 --- a/webapp/packages/plugin-sql-editor/src/SqlEditor/SqlEditor.tsx +++ b/webapp/packages/plugin-sql-editor/src/SqlEditor/SqlEditor.tsx @@ -7,7 +7,7 @@ */ import { observer } from 'mobx-react-lite'; -import { useMemo, useState } from 'react'; +import { useContext, useMemo, useState } from 'react'; import styled, { css } from 'reshadow'; import { StaticImage, UploadArea } from '@cloudbeaver/core-blocks'; @@ -15,7 +15,7 @@ import { useService } from '@cloudbeaver/core-di'; import { useTranslate } from '@cloudbeaver/core-localization'; import { BASE_TAB_STYLES, ITabData, TabList, TabPanelList, TabsState, VERTICAL_ROTATED_TAB_STYLES } from '@cloudbeaver/core-ui'; import { MetadataMap } from '@cloudbeaver/core-utils'; -import { useCaptureViewContext } from '@cloudbeaver/core-view'; +import { CaptureViewContext, useCaptureViewContext } from '@cloudbeaver/core-view'; import { ISqlEditorModeProps, SqlEditorModeService } from '../SqlEditorModeService'; import { DATA_CONTEXT_SQL_EDITOR_DATA } from './DATA_CONTEXT_SQL_EDITOR_DATA'; @@ -108,6 +108,7 @@ const tabStyles = css` export const SqlEditor = observer(function SqlEditor({ state, className }) { const translate = useTranslate(); + const captureViewContext = useContext(CaptureViewContext); const sqlEditorModeService = useService(SqlEditorModeService); const data = useSqlEditor(state); const tools = useTools(state); @@ -192,7 +193,7 @@ export const SqlEditor = observer(function SqlEditor({ state, c )} - +