diff --git a/server/bundles/io.cloudbeaver.connect.provider.sample/META-INF/MANIFEST.MF b/server/bundles/io.cloudbeaver.connect.provider.sample/META-INF/MANIFEST.MF
index 177f61efb7..2d8f7386e4 100644
--- a/server/bundles/io.cloudbeaver.connect.provider.sample/META-INF/MANIFEST.MF
+++ b/server/bundles/io.cloudbeaver.connect.provider.sample/META-INF/MANIFEST.MF
@@ -3,8 +3,8 @@ Bundle-ManifestVersion: 2
Bundle-Vendor: %Bundle-Vendor
Bundle-Name: %Bundle-Name
Bundle-SymbolicName: io.cloudbeaver.connect.provider.sample;singleton:=true
-Bundle-Version: 1.0.29.qualifier
-Bundle-Release-Date: 20210531
+Bundle-Version: 1.0.30.qualifier
+Bundle-Release-Date: 20210621
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Bundle-ActivationPolicy: lazy
Bundle-ClassPath: .
diff --git a/server/bundles/io.cloudbeaver.connect.provider.sample/pom.xml b/server/bundles/io.cloudbeaver.connect.provider.sample/pom.xml
index a7d33560bc..5f7e7c8c3a 100644
--- a/server/bundles/io.cloudbeaver.connect.provider.sample/pom.xml
+++ b/server/bundles/io.cloudbeaver.connect.provider.sample/pom.xml
@@ -10,7 +10,7 @@
../
io.cloudbeaver.connect.provider.sample
- 1.0.29-SNAPSHOT
+ 1.0.30-SNAPSHOT
eclipse-plugin
diff --git a/server/bundles/io.cloudbeaver.product.ce/META-INF/MANIFEST.MF b/server/bundles/io.cloudbeaver.product.ce/META-INF/MANIFEST.MF
index e332d780a1..b3c83021fe 100644
--- a/server/bundles/io.cloudbeaver.product.ce/META-INF/MANIFEST.MF
+++ b/server/bundles/io.cloudbeaver.product.ce/META-INF/MANIFEST.MF
@@ -3,8 +3,8 @@ Bundle-ManifestVersion: 2
Bundle-Vendor: %Bundle-Vendor
Bundle-Name: %Bundle-Name
Bundle-SymbolicName: io.cloudbeaver.product.ce;singleton:=true
-Bundle-Version: 21.0.3.qualifier
-Bundle-Release-Date: 20210531
+Bundle-Version: 21.0.4.qualifier
+Bundle-Release-Date: 20210621
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Bundle-ActivationPolicy: lazy
Bundle-ClassPath: .
diff --git a/server/bundles/io.cloudbeaver.product.ce/pom.xml b/server/bundles/io.cloudbeaver.product.ce/pom.xml
index b98587d87c..b2981dc690 100644
--- a/server/bundles/io.cloudbeaver.product.ce/pom.xml
+++ b/server/bundles/io.cloudbeaver.product.ce/pom.xml
@@ -10,7 +10,7 @@
../
io.cloudbeaver.product.ce
- 21.0.3-SNAPSHOT
+ 21.0.4-SNAPSHOT
eclipse-plugin
diff --git a/server/bundles/io.cloudbeaver.resources.drivers.base/META-INF/MANIFEST.MF b/server/bundles/io.cloudbeaver.resources.drivers.base/META-INF/MANIFEST.MF
index 94e929ac85..075ef5f14b 100644
--- a/server/bundles/io.cloudbeaver.resources.drivers.base/META-INF/MANIFEST.MF
+++ b/server/bundles/io.cloudbeaver.resources.drivers.base/META-INF/MANIFEST.MF
@@ -2,8 +2,8 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Base JDBC drivers
Bundle-SymbolicName: io.cloudbeaver.resources.drivers.base;singleton:=true
-Bundle-Version: 1.0.26.qualifier
-Bundle-Release-Date: 20210531
+Bundle-Version: 1.0.27.qualifier
+Bundle-Release-Date: 20210621
Bundle-Vendor: DBeaver Corp
Bundle-ActivationPolicy: lazy
Automatic-Module-Name: io.cloudbeaver.resources.drivers.base
diff --git a/server/bundles/io.cloudbeaver.resources.drivers.base/pom.xml b/server/bundles/io.cloudbeaver.resources.drivers.base/pom.xml
index 8ed6248341..177e4de7c2 100644
--- a/server/bundles/io.cloudbeaver.resources.drivers.base/pom.xml
+++ b/server/bundles/io.cloudbeaver.resources.drivers.base/pom.xml
@@ -9,6 +9,6 @@
../
io.cloudbeaver.resources.drivers.base
- 1.0.26-SNAPSHOT
+ 1.0.27-SNAPSHOT
eclipse-plugin
diff --git a/server/bundles/io.cloudbeaver.server/META-INF/MANIFEST.MF b/server/bundles/io.cloudbeaver.server/META-INF/MANIFEST.MF
index 4d6949db7c..beae35d521 100644
--- a/server/bundles/io.cloudbeaver.server/META-INF/MANIFEST.MF
+++ b/server/bundles/io.cloudbeaver.server/META-INF/MANIFEST.MF
@@ -3,8 +3,8 @@ Bundle-ManifestVersion: 2
Bundle-Vendor: %Bundle-Vendor
Bundle-Name: %Bundle-Name
Bundle-SymbolicName: io.cloudbeaver.server;singleton:=true
-Bundle-Version: 21.0.3.qualifier
-Bundle-Release-Date: 20210531
+Bundle-Version: 21.0.4.qualifier
+Bundle-Release-Date: 20210621
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Bundle-ActivationPolicy: lazy
Bundle-Activator: io.cloudbeaver.server.WebPlatformActivator
diff --git a/server/bundles/io.cloudbeaver.server/pom.xml b/server/bundles/io.cloudbeaver.server/pom.xml
index 1b6196f9f1..ff3f12bc0a 100644
--- a/server/bundles/io.cloudbeaver.server/pom.xml
+++ b/server/bundles/io.cloudbeaver.server/pom.xml
@@ -10,7 +10,7 @@
../
io.cloudbeaver.server
- 21.0.3-SNAPSHOT
+ 21.0.4-SNAPSHOT
eclipse-plugin
diff --git a/server/bundles/io.cloudbeaver.service.admin/META-INF/MANIFEST.MF b/server/bundles/io.cloudbeaver.service.admin/META-INF/MANIFEST.MF
index e002589f69..3a699d43f5 100644
--- a/server/bundles/io.cloudbeaver.service.admin/META-INF/MANIFEST.MF
+++ b/server/bundles/io.cloudbeaver.service.admin/META-INF/MANIFEST.MF
@@ -3,8 +3,8 @@ Bundle-ManifestVersion: 2
Bundle-Vendor: %Bundle-Vendor
Bundle-Name: %Bundle-Name
Bundle-SymbolicName: io.cloudbeaver.service.admin;singleton:=true
-Bundle-Version: 1.0.25.qualifier
-Bundle-Release-Date: 20210531
+Bundle-Version: 1.0.26.qualifier
+Bundle-Release-Date: 20210621
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Bundle-ActivationPolicy: lazy
Bundle-ClassPath: .
diff --git a/server/bundles/io.cloudbeaver.service.admin/pom.xml b/server/bundles/io.cloudbeaver.service.admin/pom.xml
index ff3c4fae86..448e69c570 100644
--- a/server/bundles/io.cloudbeaver.service.admin/pom.xml
+++ b/server/bundles/io.cloudbeaver.service.admin/pom.xml
@@ -10,7 +10,7 @@
../
io.cloudbeaver.service.admin
- 1.0.25-SNAPSHOT
+ 1.0.26-SNAPSHOT
eclipse-plugin
diff --git a/server/bundles/io.cloudbeaver.service.auth/META-INF/MANIFEST.MF b/server/bundles/io.cloudbeaver.service.auth/META-INF/MANIFEST.MF
index b80e845d21..157691c6b5 100644
--- a/server/bundles/io.cloudbeaver.service.auth/META-INF/MANIFEST.MF
+++ b/server/bundles/io.cloudbeaver.service.auth/META-INF/MANIFEST.MF
@@ -3,8 +3,8 @@ Bundle-ManifestVersion: 2
Bundle-Vendor: %Bundle-Vendor
Bundle-Name: %Bundle-Name
Bundle-SymbolicName: io.cloudbeaver.service.auth;singleton:=true
-Bundle-Version: 1.0.25.qualifier
-Bundle-Release-Date: 20210531
+Bundle-Version: 1.0.26.qualifier
+Bundle-Release-Date: 20210621
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Bundle-ActivationPolicy: lazy
Bundle-ClassPath: .
diff --git a/server/bundles/io.cloudbeaver.service.auth/pom.xml b/server/bundles/io.cloudbeaver.service.auth/pom.xml
index a0d85fa2ab..2c5e6aea76 100644
--- a/server/bundles/io.cloudbeaver.service.auth/pom.xml
+++ b/server/bundles/io.cloudbeaver.service.auth/pom.xml
@@ -10,7 +10,7 @@
../
io.cloudbeaver.service.auth
- 1.0.25-SNAPSHOT
+ 1.0.26-SNAPSHOT
eclipse-plugin
diff --git a/server/bundles/io.cloudbeaver.service.data.transfer/META-INF/MANIFEST.MF b/server/bundles/io.cloudbeaver.service.data.transfer/META-INF/MANIFEST.MF
index 9883068cf4..6f7e78c8aa 100644
--- a/server/bundles/io.cloudbeaver.service.data.transfer/META-INF/MANIFEST.MF
+++ b/server/bundles/io.cloudbeaver.service.data.transfer/META-INF/MANIFEST.MF
@@ -3,8 +3,8 @@ Bundle-ManifestVersion: 2
Bundle-Vendor: %Bundle-Vendor
Bundle-Name: %Bundle-Name
Bundle-SymbolicName: io.cloudbeaver.service.data.transfer;singleton:=true
-Bundle-Version: 1.0.26.qualifier
-Bundle-Release-Date: 20210531
+Bundle-Version: 1.0.27.qualifier
+Bundle-Release-Date: 20210621
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Bundle-ActivationPolicy: lazy
Bundle-ClassPath: .
diff --git a/server/bundles/io.cloudbeaver.service.data.transfer/pom.xml b/server/bundles/io.cloudbeaver.service.data.transfer/pom.xml
index b31f68fe1c..326eab9404 100644
--- a/server/bundles/io.cloudbeaver.service.data.transfer/pom.xml
+++ b/server/bundles/io.cloudbeaver.service.data.transfer/pom.xml
@@ -10,7 +10,7 @@
../
io.cloudbeaver.service.data.transfer
- 1.0.26-SNAPSHOT
+ 1.0.27-SNAPSHOT
eclipse-plugin
diff --git a/server/bundles/io.cloudbeaver.service.metadata/META-INF/MANIFEST.MF b/server/bundles/io.cloudbeaver.service.metadata/META-INF/MANIFEST.MF
index b54b58f721..5e70086ebb 100644
--- a/server/bundles/io.cloudbeaver.service.metadata/META-INF/MANIFEST.MF
+++ b/server/bundles/io.cloudbeaver.service.metadata/META-INF/MANIFEST.MF
@@ -3,8 +3,8 @@ Bundle-ManifestVersion: 2
Bundle-Vendor: %Bundle-Vendor
Bundle-Name: %Bundle-Name
Bundle-SymbolicName: io.cloudbeaver.service.metadata;singleton:=true
-Bundle-Version: 1.0.29.qualifier
-Bundle-Release-Date: 20210531
+Bundle-Version: 1.0.30.qualifier
+Bundle-Release-Date: 20210621
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Bundle-ActivationPolicy: lazy
Bundle-ClassPath: .
diff --git a/server/bundles/io.cloudbeaver.service.metadata/pom.xml b/server/bundles/io.cloudbeaver.service.metadata/pom.xml
index 88f05c8c0c..fccbc09b4c 100644
--- a/server/bundles/io.cloudbeaver.service.metadata/pom.xml
+++ b/server/bundles/io.cloudbeaver.service.metadata/pom.xml
@@ -10,7 +10,7 @@
../
io.cloudbeaver.service.metadata
- 1.0.29-SNAPSHOT
+ 1.0.30-SNAPSHOT
eclipse-plugin
diff --git a/server/features/io.cloudbeaver.ce.drivers.feature/feature.xml b/server/features/io.cloudbeaver.ce.drivers.feature/feature.xml
index c21af48fcb..eb1111d96b 100644
--- a/server/features/io.cloudbeaver.ce.drivers.feature/feature.xml
+++ b/server/features/io.cloudbeaver.ce.drivers.feature/feature.xml
@@ -2,7 +2,7 @@
diff --git a/server/features/io.cloudbeaver.ce.drivers.feature/pom.xml b/server/features/io.cloudbeaver.ce.drivers.feature/pom.xml
index 8f851320d1..3671ea1d30 100644
--- a/server/features/io.cloudbeaver.ce.drivers.feature/pom.xml
+++ b/server/features/io.cloudbeaver.ce.drivers.feature/pom.xml
@@ -9,6 +9,6 @@
../
io.cloudbeaver.ce.drivers.feature
- 1.0.49-SNAPSHOT
+ 1.0.50-SNAPSHOT
eclipse-feature
diff --git a/server/features/io.cloudbeaver.product.ce.feature/feature.xml b/server/features/io.cloudbeaver.product.ce.feature/feature.xml
index 964b1ac2f8..97117eb235 100644
--- a/server/features/io.cloudbeaver.product.ce.feature/feature.xml
+++ b/server/features/io.cloudbeaver.product.ce.feature/feature.xml
@@ -2,7 +2,7 @@
diff --git a/server/features/io.cloudbeaver.product.ce.feature/pom.xml b/server/features/io.cloudbeaver.product.ce.feature/pom.xml
index 19221d9238..bc9f5ac11c 100644
--- a/server/features/io.cloudbeaver.product.ce.feature/pom.xml
+++ b/server/features/io.cloudbeaver.product.ce.feature/pom.xml
@@ -10,7 +10,7 @@
../
io.cloudbeaver.product.ce.feature
- 21.0.3-SNAPSHOT
+ 21.0.4-SNAPSHOT
eclipse-feature
diff --git a/server/features/io.cloudbeaver.sample.feature/feature.xml b/server/features/io.cloudbeaver.sample.feature/feature.xml
index fa40616e71..ed5b6777af 100644
--- a/server/features/io.cloudbeaver.sample.feature/feature.xml
+++ b/server/features/io.cloudbeaver.sample.feature/feature.xml
@@ -2,7 +2,7 @@
diff --git a/server/features/io.cloudbeaver.sample.feature/pom.xml b/server/features/io.cloudbeaver.sample.feature/pom.xml
index e30d030414..df34174c99 100644
--- a/server/features/io.cloudbeaver.sample.feature/pom.xml
+++ b/server/features/io.cloudbeaver.sample.feature/pom.xml
@@ -9,6 +9,6 @@
../
io.cloudbeaver.sample.feature
- 1.0.29-SNAPSHOT
+ 1.0.30-SNAPSHOT
eclipse-feature
diff --git a/server/features/io.cloudbeaver.server.feature/feature.xml b/server/features/io.cloudbeaver.server.feature/feature.xml
index bafd1dcbbf..02f5e65abe 100644
--- a/server/features/io.cloudbeaver.server.feature/feature.xml
+++ b/server/features/io.cloudbeaver.server.feature/feature.xml
@@ -2,7 +2,7 @@
diff --git a/server/features/io.cloudbeaver.server.feature/pom.xml b/server/features/io.cloudbeaver.server.feature/pom.xml
index de7657549f..5f0602448b 100644
--- a/server/features/io.cloudbeaver.server.feature/pom.xml
+++ b/server/features/io.cloudbeaver.server.feature/pom.xml
@@ -10,6 +10,6 @@
../
io.cloudbeaver.server.feature
- 21.0.3-SNAPSHOT
+ 21.0.4-SNAPSHOT
eclipse-feature
diff --git a/server/pom.xml b/server/pom.xml
index b360b0ee2e..e3d8bdabd2 100644
--- a/server/pom.xml
+++ b/server/pom.xml
@@ -19,7 +19,7 @@
CloudBeaver CE
- 21.0.3
+ 21.0.4
diff --git a/server/product/provided-sample/DBeaverWebProvidedSample.product b/server/product/provided-sample/DBeaverWebProvidedSample.product
index c507ff36d5..a405ed57ac 100644
--- a/server/product/provided-sample/DBeaverWebProvidedSample.product
+++ b/server/product/provided-sample/DBeaverWebProvidedSample.product
@@ -1,7 +1,7 @@
-
+
diff --git a/server/product/provided-sample/pom.xml b/server/product/provided-sample/pom.xml
index 56cc490dde..3ae7bb43c4 100644
--- a/server/product/provided-sample/pom.xml
+++ b/server/product/provided-sample/pom.xml
@@ -9,7 +9,7 @@
1.0.0-SNAPSHOT
../../
- 21.0.3-SNAPSHOT
+ 21.0.4-SNAPSHOT
provided-sample
eclipse-repository
Cloudbeaver Provided Sample Product
diff --git a/server/product/web-server/CloudbeaverServer.product b/server/product/web-server/CloudbeaverServer.product
index 6dce70e6af..ddfae9f5e2 100644
--- a/server/product/web-server/CloudbeaverServer.product
+++ b/server/product/web-server/CloudbeaverServer.product
@@ -2,7 +2,7 @@
diff --git a/server/product/web-server/pom.xml b/server/product/web-server/pom.xml
index a025f4b150..7503095451 100644
--- a/server/product/web-server/pom.xml
+++ b/server/product/web-server/pom.xml
@@ -9,7 +9,7 @@
1.0.0-SNAPSHOT
../../
- 21.0.3-SNAPSHOT
+ 21.0.4-SNAPSHOT
web-server
eclipse-repository
Cloudbeaver Server Product
diff --git a/webapp/packages/core-blocks/src/ComplexLoader.tsx b/webapp/packages/core-blocks/src/ComplexLoader.tsx
index 94d4f96933..fd127b254b 100644
--- a/webapp/packages/core-blocks/src/ComplexLoader.tsx
+++ b/webapp/packages/core-blocks/src/ComplexLoader.tsx
@@ -11,25 +11,35 @@ import { useState, useEffect } from 'react';
import { useService } from '@cloudbeaver/core-di';
import { NotificationService } from '@cloudbeaver/core-events';
-export interface ComplexLoaderProps {
+interface IComplexLoaderData {
+ promise: Promise | undefined;
+ data: T | undefined;
+ error: Error | undefined;
loader: () => Promise;
+}
+
+export interface ComplexLoaderProps {
+ loader: IComplexLoaderData;
placeholder: React.ReactElement;
keepLoading?: boolean;
children: (content: T) => JSX.Element;
}
export const ComplexLoader: React.FC> = function ComplexLoader(props) {
- const [content, setContent] = useState(null);
+ const [content, setContent] = useState(props.loader.data);
const notificationService = useService(NotificationService);
useEffect(() => {
let unmounted = false;
+
if (!content) {
props
+ .loader
.loader()
.then(value => !unmounted && setContent(value))
.catch(exception => !unmounted && notificationService.logException(exception, 'Can\'t load resource'));
}
+
return () => {
unmounted = true;
};
@@ -41,3 +51,35 @@ export const ComplexLoader: React.FC> = function Complex
return props.children(content);
};
+
+export function createComplexLoader(loader: () => Promise): IComplexLoaderData {
+ return {
+ promise: undefined,
+ data: undefined,
+ error: undefined,
+ async loader() {
+ if (this.data !== undefined) {
+ return this.data;
+ }
+
+ if (this.error) {
+ throw this.error;
+ }
+
+ if (this.promise) {
+ return await this.promise;
+ }
+
+ this.promise = loader();
+
+ try {
+ this.data = await this.promise;
+ return this.data;
+ } catch (exception) {
+ this.error = exception;
+
+ throw exception;
+ }
+ },
+ };
+}
diff --git a/webapp/packages/core-blocks/src/SanitizedHTML/SanitizedHTML.tsx b/webapp/packages/core-blocks/src/SanitizedHTML/SanitizedHTML.tsx
index d05c0f7401..a529aede36 100644
--- a/webapp/packages/core-blocks/src/SanitizedHTML/SanitizedHTML.tsx
+++ b/webapp/packages/core-blocks/src/SanitizedHTML/SanitizedHTML.tsx
@@ -6,12 +6,12 @@
* you may not use this file except in compliance with the License.
*/
-import { ComplexLoader, Loader } from '@cloudbeaver/core-blocks';
+import { ComplexLoader, createComplexLoader, Loader } from '@cloudbeaver/core-blocks';
-async function loader() {
+const loader = createComplexLoader(async function loader() {
const { ReactSanitizedHTML } = await import('./ReactSanitizedHTML');
return { ReactSanitizedHTML };
-}
+});
interface Props {
html: string;
diff --git a/webapp/packages/plugin-codemirror/src/CodeEditorLoader.tsx b/webapp/packages/plugin-codemirror/src/CodeEditorLoader.tsx
index dcb0270b9c..2fda730f24 100644
--- a/webapp/packages/plugin-codemirror/src/CodeEditorLoader.tsx
+++ b/webapp/packages/plugin-codemirror/src/CodeEditorLoader.tsx
@@ -6,14 +6,14 @@
* you may not use this file except in compliance with the License.
*/
-import { ComplexLoader, Loader } from '@cloudbeaver/core-blocks';
+import { ComplexLoader, createComplexLoader, Loader } from '@cloudbeaver/core-blocks';
import type { ICodeEditorProps } from './ICodeEditorProps';
-async function loader() {
+const loader = createComplexLoader(async function loader() {
const { CodeEditor } = await import('./CodeEditor');
return { CodeEditor };
-}
+});
export const CodeEditorLoader: React.FC = function CodeEditorLoader(props) {
return (
diff --git a/webapp/packages/plugin-data-spreadsheet-new/src/DataGrid/DataGridLoader.tsx b/webapp/packages/plugin-data-spreadsheet-new/src/DataGrid/DataGridLoader.tsx
index a4fdc2eb67..1706126dc0 100644
--- a/webapp/packages/plugin-data-spreadsheet-new/src/DataGrid/DataGridLoader.tsx
+++ b/webapp/packages/plugin-data-spreadsheet-new/src/DataGrid/DataGridLoader.tsx
@@ -8,7 +8,7 @@
import { observer } from 'mobx-react-lite';
-import { ComplexLoader, Loader } from '@cloudbeaver/core-blocks';
+import { ComplexLoader, createComplexLoader, Loader } from '@cloudbeaver/core-blocks';
import type { IDatabaseDataModel } from '@cloudbeaver/plugin-data-viewer';
interface Props {
@@ -17,10 +17,10 @@ interface Props {
className?: string;
}
-async function loader() {
+const loader = createComplexLoader(async function loader() {
const { DataGridTable } = await import('./DataGridTable');
return { DataGridTable };
-}
+});
export const DataGridLoader: React.FC = observer(function DataGridLoader({
tableModel, resultIndex, className,
diff --git a/webapp/packages/plugin-data-viewer/src/DatabaseDataModel/Actions/Document/DocumentEditAction.ts b/webapp/packages/plugin-data-viewer/src/DatabaseDataModel/Actions/Document/DocumentEditAction.ts
index 8e3dddc068..40e781c6ac 100644
--- a/webapp/packages/plugin-data-viewer/src/DatabaseDataModel/Actions/Document/DocumentEditAction.ts
+++ b/webapp/packages/plugin-data-viewer/src/DatabaseDataModel/Actions/Document/DocumentEditAction.ts
@@ -8,6 +8,7 @@
import { makeObservable, observable } from 'mobx';
+import { Executor, IExecutor } from '@cloudbeaver/core-executor';
import { ResultDataFormat } from '@cloudbeaver/core-sdk';
import { DatabaseDataAction } from '../../DatabaseDataAction';
@@ -15,7 +16,7 @@ import type { IDatabaseDataEditorActionsData } from '../../IDatabaseDataEditor';
import type { IDatabaseDataSource } from '../../IDatabaseDataSource';
import type { IDatabaseResultSet } from '../../IDatabaseResultSet';
import { databaseDataAction } from '../DatabaseDataActionDecorator';
-import type { IDatabaseDataEditAction } from '../IDatabaseDataEditAction';
+import type { IDatabaseDataEditAction, IDatabaseDataEditActionData } from '../IDatabaseDataEditAction';
import { DocumentDataAction } from './DocumentDataAction';
import type { IDatabaseDataDocument } from './IDatabaseDataDocument';
import type { IDocumentElementKey } from './IDocumentElementKey';
@@ -25,12 +26,14 @@ export class DocumentEditAction extends DatabaseDataAction {
static dataFormat = ResultDataFormat.Document;
+ readonly action: IExecutor>;
readonly editedElements: Map;
constructor(source: IDatabaseDataSource, result: IDatabaseResultSet) {
super(source, result);
this.editedElements = new Map();
this.resetEditedElements = this.resetEditedElements.bind(this);
+ this.action = new Executor();
makeObservable(this, {
editedElements: observable,
@@ -54,9 +57,28 @@ export class DocumentEditAction extends DatabaseDataAction {
+ key: TKey;
+ value?: TValue;
+ prevValue?: TValue;
+}
+
+export interface IDatabaseDataEditActionData {
+ type: 'edit' | 'revert';
+ resultId: string;
+ value?: IDatabaseDataEditActionValue;
+}
+
export interface IDatabaseDataEditAction
extends IDatabaseDataAction {
+ readonly action: IExecutor>;
isEdited: () => boolean;
isElementEdited: (key: TKey) => boolean;
set: (key: TKey, value: TValue) => void;
diff --git a/webapp/packages/plugin-gis-viewer/src/GISViewer.tsx b/webapp/packages/plugin-gis-viewer/src/GISViewer.tsx
index 88b915dc72..587dab6ae2 100644
--- a/webapp/packages/plugin-gis-viewer/src/GISViewer.tsx
+++ b/webapp/packages/plugin-gis-viewer/src/GISViewer.tsx
@@ -6,14 +6,14 @@
* you may not use this file except in compliance with the License.
*/
-import type { TabContainerPanelComponent } from '@cloudbeaver/core-blocks';
+import { createComplexLoader, TabContainerPanelComponent } from '@cloudbeaver/core-blocks';
import { ComplexLoader, Loader } from '@cloudbeaver/core-blocks';
import type { IDataValuePanelProps, IDatabaseResultSet } from '@cloudbeaver/plugin-data-viewer';
-async function loader() {
+const loader = createComplexLoader(async function loader() {
const { GISValuePresentation } = await import('./GISValuePresentation');
return { GISValuePresentation };
-}
+});
export const GISViewer: TabContainerPanelComponent> = function GISViewer({ model, resultIndex }) {
return (
diff --git a/webapp/packages/plugin-sql-editor/src/SqlEditor/SQLCodeEditor/SQLCodeEditorLoader.tsx b/webapp/packages/plugin-sql-editor/src/SqlEditor/SQLCodeEditor/SQLCodeEditorLoader.tsx
index efea2523e9..38b756804b 100644
--- a/webapp/packages/plugin-sql-editor/src/SqlEditor/SQLCodeEditor/SQLCodeEditorLoader.tsx
+++ b/webapp/packages/plugin-sql-editor/src/SqlEditor/SQLCodeEditor/SQLCodeEditorLoader.tsx
@@ -8,15 +8,15 @@
import { observer } from 'mobx-react-lite';
-import { ComplexLoader, Loader } from '@cloudbeaver/core-blocks';
+import { ComplexLoader, createComplexLoader, Loader } from '@cloudbeaver/core-blocks';
import type { ISQLCodeEditorProps } from './ISQLCodeEditorProps';
import type { SQLCodeEditorController } from './SQLCodeEditorController';
-async function loader() {
+const loader = createComplexLoader(async function loader() {
const { SQLCodeEditor } = await import('./SQLCodeEditor');
return { SQLCodeEditor };
-}
+});
export const SQLCodeEditorLoader = observer(function SQLCodeEditorLoader(props, ref) {
return (
diff --git a/webapp/packages/product-default/package.json b/webapp/packages/product-default/package.json
index fa5005f17d..965fb3e999 100644
--- a/webapp/packages/product-default/package.json
+++ b/webapp/packages/product-default/package.json
@@ -1,7 +1,7 @@
{
"name": "@cloudbeaver/product-default",
"sideEffects": false,
- "version": "21.0.3",
+ "version": "21.0.4",
"description": "",
"license": "Apache-2.0",
"main": "lib/index.js",