@finos/legend-application-data-cube 0.2.4 → 0.2.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/lib/__lib__/LegendDataCubeNavigation.d.ts +9 -5
- package/lib/__lib__/LegendDataCubeNavigation.d.ts.map +1 -1
- package/lib/__lib__/LegendDataCubeNavigation.js +9 -5
- package/lib/__lib__/LegendDataCubeNavigation.js.map +1 -1
- package/lib/__lib__/LegendDataCubeUserData.d.ts +2 -2
- package/lib/__lib__/LegendDataCubeUserData.d.ts.map +1 -1
- package/lib/__lib__/LegendDataCubeUserData.js +2 -2
- package/lib/__lib__/LegendDataCubeUserData.js.map +1 -1
- package/lib/application/LegendDataCubeApplicationConfig.d.ts +4 -0
- package/lib/application/LegendDataCubeApplicationConfig.d.ts.map +1 -1
- package/lib/application/LegendDataCubeApplicationConfig.js +5 -0
- package/lib/application/LegendDataCubeApplicationConfig.js.map +1 -1
- package/lib/components/LegendDataCubeBlockingWindow.d.ts +29 -0
- package/lib/components/LegendDataCubeBlockingWindow.d.ts.map +1 -0
- package/lib/components/LegendDataCubeBlockingWindow.js +75 -0
- package/lib/components/LegendDataCubeBlockingWindow.js.map +1 -0
- package/lib/components/LegendDataCubeWebApplication.js +2 -2
- package/lib/components/LegendDataCubeWebApplication.js.map +1 -1
- package/lib/components/builder/LegendDataCubeBuilder.d.ts +20 -0
- package/lib/components/builder/LegendDataCubeBuilder.d.ts.map +1 -0
- package/lib/components/builder/LegendDataCubeBuilder.js +162 -0
- package/lib/components/builder/LegendDataCubeBuilder.js.map +1 -0
- package/lib/components/builder/LegendDataCubeBuilderStoreProvider.d.ts +19 -0
- package/lib/components/builder/LegendDataCubeBuilderStoreProvider.d.ts.map +1 -0
- package/lib/components/builder/LegendDataCubeBuilderStoreProvider.js +34 -0
- package/lib/components/builder/LegendDataCubeBuilderStoreProvider.js.map +1 -0
- package/lib/components/{query-builder/LegendDataCubeQuerySaver.d.ts → builder/LegendDataCubeCreator.d.ts} +2 -2
- package/lib/components/builder/LegendDataCubeCreator.d.ts.map +1 -0
- package/lib/components/{query-builder/LegendDataCubeNewQueryBuilder.js → builder/LegendDataCubeCreator.js} +10 -10
- package/lib/components/builder/LegendDataCubeCreator.js.map +1 -0
- package/lib/components/builder/LegendDataCubeDeleteConfirmation.d.ts +19 -0
- package/lib/components/builder/LegendDataCubeDeleteConfirmation.d.ts.map +1 -0
- package/lib/components/builder/LegendDataCubeDeleteConfirmation.js +43 -0
- package/lib/components/builder/LegendDataCubeDeleteConfirmation.js.map +1 -0
- package/lib/components/{query-builder/LegendDataCubeQueryLoader.d.ts → builder/LegendDataCubeLoader.d.ts} +2 -2
- package/lib/components/builder/LegendDataCubeLoader.d.ts.map +1 -0
- package/lib/components/builder/LegendDataCubeLoader.js +113 -0
- package/lib/components/builder/LegendDataCubeLoader.js.map +1 -0
- package/lib/components/{query-builder/LegendDataCubeNewQueryBuilder.d.ts → builder/LegendDataCubeSaver.d.ts} +2 -2
- package/lib/components/builder/LegendDataCubeSaver.d.ts.map +1 -0
- package/lib/components/builder/LegendDataCubeSaver.js +73 -0
- package/lib/components/builder/LegendDataCubeSaver.js.map +1 -0
- package/lib/components/{query-builder/LegendDataCubeQueryBuilder.d.ts → builder/LegendDataCubeSourceViewer.d.ts} +4 -2
- package/lib/components/builder/LegendDataCubeSourceViewer.d.ts.map +1 -0
- package/lib/components/builder/LegendDataCubeSourceViewer.js +46 -0
- package/lib/components/builder/LegendDataCubeSourceViewer.js.map +1 -0
- package/lib/components/{query-builder/source-builder → builder/source}/AdhocQueryDataCubeSourceBuilder.d.ts +1 -1
- package/lib/components/builder/source/AdhocQueryDataCubeSourceBuilder.d.ts.map +1 -0
- package/lib/components/builder/source/AdhocQueryDataCubeSourceBuilder.js.map +1 -0
- package/lib/components/{query-builder/source-builder → builder/source}/LegendQueryDataCubeSourceBuilder.d.ts +1 -1
- package/lib/components/builder/source/LegendQueryDataCubeSourceBuilder.d.ts.map +1 -0
- package/lib/components/{query-builder/source-builder → builder/source}/LegendQueryDataCubeSourceBuilder.js +13 -13
- package/lib/components/builder/source/LegendQueryDataCubeSourceBuilder.js.map +1 -0
- package/lib/index.css +1 -1
- package/lib/package.json +1 -1
- package/lib/stores/LegendDataCubeCacheManager.d.ts.map +1 -1
- package/lib/stores/LegendDataCubeCacheManager.js +11 -12
- package/lib/stores/LegendDataCubeCacheManager.js.map +1 -1
- package/lib/stores/LegendDataCubeDataCubeEngine.d.ts +1 -1
- package/lib/stores/LegendDataCubeDataCubeEngine.d.ts.map +1 -1
- package/lib/stores/LegendDataCubeDataCubeEngine.js +5 -11
- package/lib/stores/LegendDataCubeDataCubeEngine.js.map +1 -1
- package/lib/stores/builder/LegendDataCubeBuilderStore.d.ts +80 -0
- package/lib/stores/builder/LegendDataCubeBuilderStore.d.ts.map +1 -0
- package/lib/stores/builder/LegendDataCubeBuilderStore.js +353 -0
- package/lib/stores/builder/LegendDataCubeBuilderStore.js.map +1 -0
- package/lib/stores/{query-builder/LegendDataCubeNewQueryState.d.ts → builder/LegendDataCubeCreatorState.d.ts} +5 -5
- package/lib/stores/builder/LegendDataCubeCreatorState.d.ts.map +1 -0
- package/lib/stores/{query-builder/LegendDataCubeNewQueryState.js → builder/LegendDataCubeCreatorState.js} +17 -17
- package/lib/stores/builder/LegendDataCubeCreatorState.js.map +1 -0
- package/lib/stores/{query-builder/LegendDataCubeQueryLoaderState.d.ts → builder/LegendDataCubeLoaderState.d.ts} +20 -20
- package/lib/stores/builder/LegendDataCubeLoaderState.d.ts.map +1 -0
- package/lib/stores/builder/LegendDataCubeLoaderState.js +187 -0
- package/lib/stores/builder/LegendDataCubeLoaderState.js.map +1 -0
- package/lib/stores/builder/source/AdhocQueryDataCubeSourceBuilderState.d.ts.map +1 -0
- package/lib/stores/builder/source/AdhocQueryDataCubeSourceBuilderState.js.map +1 -0
- package/lib/stores/builder/source/LegendDataCubeSourceBuilderState.d.ts.map +1 -0
- package/lib/stores/{query-builder/source-builder → builder/source}/LegendDataCubeSourceBuilderState.js +1 -1
- package/lib/stores/builder/source/LegendDataCubeSourceBuilderState.js.map +1 -0
- package/lib/stores/builder/source/LegendQueryDataCubeSourceBuilderState.d.ts.map +1 -0
- package/lib/stores/builder/source/LegendQueryDataCubeSourceBuilderState.js.map +1 -0
- package/package.json +5 -5
- package/src/__lib__/LegendDataCubeNavigation.ts +15 -7
- package/src/__lib__/LegendDataCubeUserData.ts +2 -2
- package/src/application/LegendDataCubeApplicationConfig.ts +12 -0
- package/src/components/LegendDataCubeBlockingWindow.tsx +120 -0
- package/src/components/LegendDataCubeWebApplication.tsx +3 -3
- package/src/components/builder/LegendDataCubeBuilder.tsx +331 -0
- package/src/components/{query-builder/LegendDataCubeQueryBuilderStoreProvider.tsx → builder/LegendDataCubeBuilderStoreProvider.tsx} +19 -16
- package/src/components/{query-builder/LegendDataCubeNewQueryBuilder.tsx → builder/LegendDataCubeCreator.tsx} +9 -9
- package/src/components/builder/LegendDataCubeDeleteConfirmation.tsx +87 -0
- package/src/components/{query-builder/LegendDataCubeQueryLoader.tsx → builder/LegendDataCubeLoader.tsx} +122 -59
- package/src/components/builder/LegendDataCubeSaver.tsx +184 -0
- package/src/components/builder/LegendDataCubeSourceViewer.tsx +108 -0
- package/src/components/{query-builder/source-builder → builder/source}/AdhocQueryDataCubeSourceBuilder.tsx +1 -1
- package/src/components/{query-builder/source-builder → builder/source}/LegendQueryDataCubeSourceBuilder.tsx +16 -15
- package/src/stores/LegendDataCubeCacheManager.ts +11 -12
- package/src/stores/LegendDataCubeDataCubeEngine.ts +4 -14
- package/src/stores/builder/LegendDataCubeBuilderStore.tsx +516 -0
- package/src/stores/{query-builder/LegendDataCubeNewQueryState.tsx → builder/LegendDataCubeCreatorState.tsx} +23 -21
- package/src/stores/builder/LegendDataCubeLoaderState.tsx +248 -0
- package/src/stores/{query-builder/source-builder → builder/source}/LegendDataCubeSourceBuilderState.ts +1 -1
- package/tsconfig.json +16 -13
- package/lib/components/query-builder/LegendDataCubeNewQueryBuilder.d.ts.map +0 -1
- package/lib/components/query-builder/LegendDataCubeNewQueryBuilder.js.map +0 -1
- package/lib/components/query-builder/LegendDataCubeQueryBuilder.d.ts.map +0 -1
- package/lib/components/query-builder/LegendDataCubeQueryBuilder.js +0 -93
- package/lib/components/query-builder/LegendDataCubeQueryBuilder.js.map +0 -1
- package/lib/components/query-builder/LegendDataCubeQueryBuilderStoreProvider.d.ts +0 -19
- package/lib/components/query-builder/LegendDataCubeQueryBuilderStoreProvider.d.ts.map +0 -1
- package/lib/components/query-builder/LegendDataCubeQueryBuilderStoreProvider.js +0 -33
- package/lib/components/query-builder/LegendDataCubeQueryBuilderStoreProvider.js.map +0 -1
- package/lib/components/query-builder/LegendDataCubeQueryLoader.d.ts.map +0 -1
- package/lib/components/query-builder/LegendDataCubeQueryLoader.js +0 -97
- package/lib/components/query-builder/LegendDataCubeQueryLoader.js.map +0 -1
- package/lib/components/query-builder/LegendDataCubeQuerySaver.d.ts.map +0 -1
- package/lib/components/query-builder/LegendDataCubeQuerySaver.js +0 -51
- package/lib/components/query-builder/LegendDataCubeQuerySaver.js.map +0 -1
- package/lib/components/query-builder/source-builder/AdhocQueryDataCubeSourceBuilder.d.ts.map +0 -1
- package/lib/components/query-builder/source-builder/AdhocQueryDataCubeSourceBuilder.js.map +0 -1
- package/lib/components/query-builder/source-builder/LegendQueryDataCubeSourceBuilder.d.ts.map +0 -1
- package/lib/components/query-builder/source-builder/LegendQueryDataCubeSourceBuilder.js.map +0 -1
- package/lib/stores/query-builder/LegendDataCubeNewQueryState.d.ts.map +0 -1
- package/lib/stores/query-builder/LegendDataCubeNewQueryState.js.map +0 -1
- package/lib/stores/query-builder/LegendDataCubeQueryBuilderStore.d.ts +0 -58
- package/lib/stores/query-builder/LegendDataCubeQueryBuilderStore.d.ts.map +0 -1
- package/lib/stores/query-builder/LegendDataCubeQueryBuilderStore.js +0 -228
- package/lib/stores/query-builder/LegendDataCubeQueryBuilderStore.js.map +0 -1
- package/lib/stores/query-builder/LegendDataCubeQueryLoaderState.d.ts.map +0 -1
- package/lib/stores/query-builder/LegendDataCubeQueryLoaderState.js +0 -198
- package/lib/stores/query-builder/LegendDataCubeQueryLoaderState.js.map +0 -1
- package/lib/stores/query-builder/source-builder/AdhocQueryDataCubeSourceBuilderState.d.ts.map +0 -1
- package/lib/stores/query-builder/source-builder/AdhocQueryDataCubeSourceBuilderState.js.map +0 -1
- package/lib/stores/query-builder/source-builder/LegendDataCubeSourceBuilderState.d.ts.map +0 -1
- package/lib/stores/query-builder/source-builder/LegendDataCubeSourceBuilderState.js.map +0 -1
- package/lib/stores/query-builder/source-builder/LegendQueryDataCubeSourceBuilderState.d.ts.map +0 -1
- package/lib/stores/query-builder/source-builder/LegendQueryDataCubeSourceBuilderState.js.map +0 -1
- package/src/components/query-builder/LegendDataCubeQueryBuilder.tsx +0 -164
- package/src/components/query-builder/LegendDataCubeQuerySaver.tsx +0 -116
- package/src/stores/query-builder/LegendDataCubeQueryBuilderStore.tsx +0 -323
- package/src/stores/query-builder/LegendDataCubeQueryLoaderState.tsx +0 -260
- /package/lib/components/{query-builder/source-builder → builder/source}/AdhocQueryDataCubeSourceBuilder.js +0 -0
- /package/lib/stores/{query-builder/source-builder → builder/source}/AdhocQueryDataCubeSourceBuilderState.d.ts +0 -0
- /package/lib/stores/{query-builder/source-builder → builder/source}/AdhocQueryDataCubeSourceBuilderState.js +0 -0
- /package/lib/stores/{query-builder/source-builder → builder/source}/LegendDataCubeSourceBuilderState.d.ts +0 -0
- /package/lib/stores/{query-builder/source-builder → builder/source}/LegendQueryDataCubeSourceBuilderState.d.ts +0 -0
- /package/lib/stores/{query-builder/source-builder → builder/source}/LegendQueryDataCubeSourceBuilderState.js +0 -0
- /package/src/stores/{query-builder/source-builder → builder/source}/AdhocQueryDataCubeSourceBuilderState.ts +0 -0
- /package/src/stores/{query-builder/source-builder → builder/source}/LegendQueryDataCubeSourceBuilderState.ts +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"LegendDataCubeSourceBuilderState.d.ts","sourceRoot":"","sources":["../../../../src/stores/query-builder/source-builder/LegendDataCubeSourceBuilderState.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,kCAAkC,CAAC;AACvF,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,uCAAuC,CAAC;AAC1F,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAErE,oBAAY,+BAA+B;IACzC,YAAY,iBAAiB;IAC7B,WAAW,iBAAiB;CAC7B;AAED,8BAAsB,gCAAgC;IACpD,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,8BAA8B,CAAC;IAChE,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,4BAA4B,CAAC;gBAGvD,WAAW,EAAE,8BAA8B,EAC3C,MAAM,EAAE,4BAA4B;IAMtC,QAAQ,KAAK,KAAK,IAAI,+BAA+B,CAAC;IACtD,QAAQ,KAAK,OAAO,IAAI,OAAO,CAAC;IAChC,QAAQ,CAAC,kBAAkB,IAAI,OAAO,CAAC,WAAW,CAAC;IAGnD,qBAAqB,CAAC,aAAa,EAAE,qBAAqB;CAG3D"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"LegendDataCubeSourceBuilderState.js","sourceRoot":"","sources":["../../../../src/stores/query-builder/source-builder/LegendDataCubeSourceBuilderState.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAoB,MAAM,sBAAsB,CAAC;AAKxD,MAAM,CAAN,IAAY,+BAGX;AAHD,WAAY,+BAA+B;IACzC,gEAA6B,CAAA;IAC7B,+DAA4B,CAAA;AAC9B,CAAC,EAHW,+BAA+B,KAA/B,+BAA+B,QAG1C;AAED,MAAM,OAAgB,gCAAgC;IACjC,YAAY,CAAiC;IAC7C,OAAO,CAA+B;IAEzD,YACE,WAA2C,EAC3C,MAAoC;QAEpC,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;QAChC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IACxB,CAAC;IAMD,4FAA4F;IAC5F,qBAAqB,CAAC,aAAoC;QACxD,aAAa;IACf,CAAC;CACF"}
|
package/lib/stores/query-builder/source-builder/LegendQueryDataCubeSourceBuilderState.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"LegendQueryDataCubeSourceBuilderState.d.ts","sourceRoot":"","sources":["../../../../src/stores/query-builder/source-builder/LegendQueryDataCubeSourceBuilderState.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAOH,OAAO,EAEL,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EAExB,KAAK,UAAU,EAChB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAEL,gBAAgB,EACjB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EACL,gCAAgC,EAChC,+BAA+B,EAChC,MAAM,uCAAuC,CAAC;AAG/C,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,uCAAuC,CAAC;AAC1F,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,kCAAkC,CAAC;AACvF,OAAO,KAAK,EACV,oBAAoB,EACpB,qBAAqB,EACtB,MAAM,yBAAyB,CAAC;AAEjC,qBAAa,qCAAsC,SAAQ,gCAAgC;IACzF,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAwB;IAC5D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAsB;IACpD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAuB;IAErD,QAAQ,CAAC,WAAW,EAAE,gBAAgB,CAAC;IAEvC,KAAK,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;gBAG7B,WAAW,EAAE,8BAA8B,EAC3C,MAAM,EAAE,4BAA4B,EACpC,kBAAkB,EAAE,qBAAqB,EACzC,YAAY,EAAE,mBAAmB,EACjC,YAAY,EAAE,oBAAoB;IAqC9B,QAAQ,CAAC,UAAU,EAAE,UAAU;IA0BrC,UAAU,IAAI,IAAI;IAKlB,IAAa,KAAK,oCAEjB;IAED,IAAa,OAAO,IAAI,OAAO,CAE9B;IAEc,kBAAkB;IASxB,qBAAqB,CAAC,aAAa,EAAE,qBAAqB;CAKpE"}
|
package/lib/stores/query-builder/source-builder/LegendQueryDataCubeSourceBuilderState.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"LegendQueryDataCubeSourceBuilderState.js","sourceRoot":"","sources":["../../../../src/stores/query-builder/source-builder/LegendQueryDataCubeSourceBuilderState.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,164 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) 2020-present, Goldman Sachs
|
|
3
|
-
*
|
|
4
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
-
* you may not use this file except in compliance with the License.
|
|
6
|
-
* You may obtain a copy of the License at
|
|
7
|
-
*
|
|
8
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
-
*
|
|
10
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
-
* See the License for the specific language governing permissions and
|
|
14
|
-
* limitations under the License.
|
|
15
|
-
*/
|
|
16
|
-
|
|
17
|
-
import { observer } from 'mobx-react-lite';
|
|
18
|
-
import {
|
|
19
|
-
DataCube,
|
|
20
|
-
FormButton,
|
|
21
|
-
type DataCubeSettingValues,
|
|
22
|
-
DataCubePlaceholder,
|
|
23
|
-
} from '@finos/legend-data-cube';
|
|
24
|
-
import {} from '@finos/legend-art';
|
|
25
|
-
import {
|
|
26
|
-
useLegendDataCubeQueryBuilderStore,
|
|
27
|
-
withLegendDataCubeQueryBuilderStore,
|
|
28
|
-
} from './LegendDataCubeQueryBuilderStoreProvider.js';
|
|
29
|
-
import { useParams } from '@finos/legend-application/browser';
|
|
30
|
-
import {
|
|
31
|
-
LEGEND_DATA_CUBE_ROUTE_PATTERN_TOKEN,
|
|
32
|
-
type LegendDataCubeQueryBuilderPathParams,
|
|
33
|
-
} from '../../__lib__/LegendDataCubeNavigation.js';
|
|
34
|
-
import { useEffect } from 'react';
|
|
35
|
-
import { LegendDataCubeSettingStorageKey } from '../../__lib__/LegendDataCubeSetting.js';
|
|
36
|
-
|
|
37
|
-
const LegendDataCubeQueryBuilderHeader = observer(() => {
|
|
38
|
-
const store = useLegendDataCubeQueryBuilderStore();
|
|
39
|
-
|
|
40
|
-
return (
|
|
41
|
-
<div className="flex h-full items-center">
|
|
42
|
-
<FormButton compact={true} onClick={() => store.loader.display.open()}>
|
|
43
|
-
Load Query
|
|
44
|
-
</FormButton>
|
|
45
|
-
<FormButton
|
|
46
|
-
compact={true}
|
|
47
|
-
className="ml-1.5"
|
|
48
|
-
onClick={() => store.newQueryState.display.open()}
|
|
49
|
-
>
|
|
50
|
-
New Query
|
|
51
|
-
</FormButton>
|
|
52
|
-
<FormButton
|
|
53
|
-
compact={true}
|
|
54
|
-
className="ml-1.5"
|
|
55
|
-
disabled={!store.builder?.dataCube}
|
|
56
|
-
onClick={() => store.saverDisplay.open()}
|
|
57
|
-
>
|
|
58
|
-
Save Query
|
|
59
|
-
</FormButton>
|
|
60
|
-
</div>
|
|
61
|
-
);
|
|
62
|
-
});
|
|
63
|
-
|
|
64
|
-
export const LegendDataCubeQueryBuilder = withLegendDataCubeQueryBuilderStore(
|
|
65
|
-
observer(() => {
|
|
66
|
-
const store = useLegendDataCubeQueryBuilderStore();
|
|
67
|
-
const builder = store.builder;
|
|
68
|
-
const application = store.application;
|
|
69
|
-
const params = useParams<LegendDataCubeQueryBuilderPathParams>();
|
|
70
|
-
const queryId = params[LEGEND_DATA_CUBE_ROUTE_PATTERN_TOKEN.QUERY_ID];
|
|
71
|
-
|
|
72
|
-
useEffect(() => {
|
|
73
|
-
application.navigationService.navigator.blockNavigation(
|
|
74
|
-
// Only block navigation in production, in development, we should have
|
|
75
|
-
// the flexibility to reload the page quickly
|
|
76
|
-
// eslint-disable-next-line no-process-env
|
|
77
|
-
[() => process.env.NODE_ENV === 'production'],
|
|
78
|
-
);
|
|
79
|
-
return (): void => {
|
|
80
|
-
application.navigationService.navigator.unblockNavigation();
|
|
81
|
-
};
|
|
82
|
-
}, [application]);
|
|
83
|
-
|
|
84
|
-
useEffect(() => {
|
|
85
|
-
store
|
|
86
|
-
.loadQuery(queryId)
|
|
87
|
-
.catch((error) => store.alertService.alertUnhandledError(error));
|
|
88
|
-
}, [store, queryId]);
|
|
89
|
-
|
|
90
|
-
useEffect(() => {
|
|
91
|
-
store.engine
|
|
92
|
-
.initializeCacheManager()
|
|
93
|
-
.catch((error) => store.alertService.alertUnhandledError(error));
|
|
94
|
-
return () => {
|
|
95
|
-
store.engine
|
|
96
|
-
.disposeCacheManager()
|
|
97
|
-
.catch((error) => store.alertService.alertUnhandledError(error));
|
|
98
|
-
};
|
|
99
|
-
}, [store]);
|
|
100
|
-
|
|
101
|
-
if (!builder) {
|
|
102
|
-
return (
|
|
103
|
-
<DataCubePlaceholder
|
|
104
|
-
title="[ Legend DataCube ]"
|
|
105
|
-
layoutManager={store.layoutService.manager}
|
|
106
|
-
taskManager={store.taskService.manager}
|
|
107
|
-
headerContent={<LegendDataCubeQueryBuilderHeader />}
|
|
108
|
-
menuItems={[
|
|
109
|
-
{
|
|
110
|
-
label: 'See Documentation',
|
|
111
|
-
action: () => {
|
|
112
|
-
const url = application.documentationService.url;
|
|
113
|
-
if (url) {
|
|
114
|
-
application.navigationService.navigator.visitAddress(url);
|
|
115
|
-
}
|
|
116
|
-
},
|
|
117
|
-
disabled: true, // TODO: enable when we set up the documentation websit
|
|
118
|
-
},
|
|
119
|
-
]}
|
|
120
|
-
>
|
|
121
|
-
<div className="h-full w-full p-2">
|
|
122
|
-
<div>Create a new query to start</div>
|
|
123
|
-
<FormButton
|
|
124
|
-
className="mt-1.5"
|
|
125
|
-
onClick={() => store.newQueryState.display.open()}
|
|
126
|
-
>
|
|
127
|
-
New Query
|
|
128
|
-
</FormButton>
|
|
129
|
-
</div>
|
|
130
|
-
</DataCubePlaceholder>
|
|
131
|
-
);
|
|
132
|
-
}
|
|
133
|
-
return (
|
|
134
|
-
<DataCube
|
|
135
|
-
key={builder.uuid} // used as mechanism to reload data-cube component when changing between queries or create/edit mode
|
|
136
|
-
query={builder.query}
|
|
137
|
-
engine={store.baseStore.engine}
|
|
138
|
-
options={{
|
|
139
|
-
layoutManager: store.layoutService.manager,
|
|
140
|
-
taskManager: store.taskService.manager,
|
|
141
|
-
gridClientLicense: store.baseStore.gridClientLicense,
|
|
142
|
-
onInitialized(event) {
|
|
143
|
-
builder.setDataCube(event.api);
|
|
144
|
-
},
|
|
145
|
-
innerHeaderRenderer: () => <LegendDataCubeQueryBuilderHeader />,
|
|
146
|
-
settingsData: {
|
|
147
|
-
configurations: store.baseStore.settings,
|
|
148
|
-
values: application.settingService.getObjectValue(
|
|
149
|
-
LegendDataCubeSettingStorageKey.DATA_CUBE,
|
|
150
|
-
) as DataCubeSettingValues | undefined,
|
|
151
|
-
},
|
|
152
|
-
onSettingsChanged(event) {
|
|
153
|
-
application.settingService.persistValue(
|
|
154
|
-
LegendDataCubeSettingStorageKey.DATA_CUBE,
|
|
155
|
-
event.values,
|
|
156
|
-
);
|
|
157
|
-
},
|
|
158
|
-
documentationUrl: application.documentationService.url,
|
|
159
|
-
enableCache: true,
|
|
160
|
-
}}
|
|
161
|
-
/>
|
|
162
|
-
);
|
|
163
|
-
}),
|
|
164
|
-
);
|
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) 2020-present, Goldman Sachs
|
|
3
|
-
*
|
|
4
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
-
* you may not use this file except in compliance with the License.
|
|
6
|
-
* You may obtain a copy of the License at
|
|
7
|
-
*
|
|
8
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
-
*
|
|
10
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
-
* See the License for the specific language governing permissions and
|
|
14
|
-
* limitations under the License.
|
|
15
|
-
*/
|
|
16
|
-
|
|
17
|
-
import {
|
|
18
|
-
DEFAULT_REPORT_NAME,
|
|
19
|
-
FormButton,
|
|
20
|
-
FormTextInput,
|
|
21
|
-
} from '@finos/legend-data-cube';
|
|
22
|
-
import { observer } from 'mobx-react-lite';
|
|
23
|
-
import { useEffect, useState } from 'react';
|
|
24
|
-
import { useLegendDataCubeQueryBuilderStore } from './LegendDataCubeQueryBuilderStoreProvider.js';
|
|
25
|
-
import { guaranteeNonNullable } from '@finos/legend-shared';
|
|
26
|
-
|
|
27
|
-
export const LegendDataCubeQuerySaver = observer(() => {
|
|
28
|
-
const [name, setName] = useState(DEFAULT_REPORT_NAME);
|
|
29
|
-
const store = useLegendDataCubeQueryBuilderStore();
|
|
30
|
-
const builder = guaranteeNonNullable(store.builder);
|
|
31
|
-
|
|
32
|
-
useEffect(() => {
|
|
33
|
-
setName(
|
|
34
|
-
builder.persistentQuery?.name ??
|
|
35
|
-
builder.query.configuration?.name ??
|
|
36
|
-
DEFAULT_REPORT_NAME,
|
|
37
|
-
);
|
|
38
|
-
}, [builder]);
|
|
39
|
-
|
|
40
|
-
return (
|
|
41
|
-
<>
|
|
42
|
-
<div className="h-[calc(100%_-_40px)] w-full px-2 pt-2">
|
|
43
|
-
<div className="h-full w-full overflow-auto border border-neutral-300 bg-white">
|
|
44
|
-
<div className="h-full w-full select-none p-2">
|
|
45
|
-
<div className="flex h-6 w-full items-center">
|
|
46
|
-
<div className="flex h-full w-32 flex-shrink-0 items-center text-sm">
|
|
47
|
-
Name:
|
|
48
|
-
</div>
|
|
49
|
-
<FormTextInput
|
|
50
|
-
className="w-80"
|
|
51
|
-
value={name}
|
|
52
|
-
onChange={(event) => {
|
|
53
|
-
setName(event.target.value);
|
|
54
|
-
}}
|
|
55
|
-
autoFocus={true}
|
|
56
|
-
/>
|
|
57
|
-
</div>
|
|
58
|
-
</div>
|
|
59
|
-
</div>
|
|
60
|
-
</div>
|
|
61
|
-
<div className="flex h-10 items-center justify-end px-2">
|
|
62
|
-
<FormButton onClick={() => store.saverDisplay.close()}>
|
|
63
|
-
Cancel
|
|
64
|
-
</FormButton>
|
|
65
|
-
{builder.persistentQuery ? (
|
|
66
|
-
// updating existing query
|
|
67
|
-
<>
|
|
68
|
-
<FormButton
|
|
69
|
-
className="ml-2"
|
|
70
|
-
disabled={!builder.dataCube || store.saveQueryState.isInProgress}
|
|
71
|
-
onClick={() => {
|
|
72
|
-
store
|
|
73
|
-
.saveQuery(name, false)
|
|
74
|
-
.catch((error) =>
|
|
75
|
-
store.alertService.alertUnhandledError(error),
|
|
76
|
-
);
|
|
77
|
-
}}
|
|
78
|
-
>
|
|
79
|
-
Save
|
|
80
|
-
</FormButton>
|
|
81
|
-
<FormButton
|
|
82
|
-
className="ml-2"
|
|
83
|
-
disabled={!builder.dataCube || store.saveQueryState.isInProgress}
|
|
84
|
-
onClick={() => {
|
|
85
|
-
store
|
|
86
|
-
.saveQuery(name, true)
|
|
87
|
-
.catch((error) =>
|
|
88
|
-
store.alertService.alertUnhandledError(error),
|
|
89
|
-
);
|
|
90
|
-
}}
|
|
91
|
-
>
|
|
92
|
-
Save As
|
|
93
|
-
</FormButton>
|
|
94
|
-
</>
|
|
95
|
-
) : (
|
|
96
|
-
// creating new query
|
|
97
|
-
<>
|
|
98
|
-
<FormButton
|
|
99
|
-
className="ml-2"
|
|
100
|
-
disabled={!builder.dataCube || store.saveQueryState.isInProgress}
|
|
101
|
-
onClick={() => {
|
|
102
|
-
store
|
|
103
|
-
.createQuery(name)
|
|
104
|
-
.catch((error) =>
|
|
105
|
-
store.alertService.alertUnhandledError(error),
|
|
106
|
-
);
|
|
107
|
-
}}
|
|
108
|
-
>
|
|
109
|
-
Save
|
|
110
|
-
</FormButton>
|
|
111
|
-
</>
|
|
112
|
-
)}
|
|
113
|
-
</div>
|
|
114
|
-
</>
|
|
115
|
-
);
|
|
116
|
-
});
|
|
@@ -1,323 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) 2020-present, Goldman Sachs
|
|
3
|
-
*
|
|
4
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
-
* you may not use this file except in compliance with the License.
|
|
6
|
-
* You may obtain a copy of the License at
|
|
7
|
-
*
|
|
8
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
-
*
|
|
10
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
-
* See the License for the specific language governing permissions and
|
|
14
|
-
* limitations under the License.
|
|
15
|
-
*/
|
|
16
|
-
|
|
17
|
-
import { action, makeObservable, observable } from 'mobx';
|
|
18
|
-
import type {
|
|
19
|
-
LegendDataCubeApplicationStore,
|
|
20
|
-
LegendDataCubeBaseStore,
|
|
21
|
-
} from '../LegendDataCubeBaseStore.js';
|
|
22
|
-
import {
|
|
23
|
-
type DataCubeAlertService,
|
|
24
|
-
type DataCubeAPI,
|
|
25
|
-
type DataCubeLayoutService,
|
|
26
|
-
type DataCubeTaskService,
|
|
27
|
-
DataCubeQuery,
|
|
28
|
-
DEFAULT_ALERT_WINDOW_CONFIG,
|
|
29
|
-
type DisplayState,
|
|
30
|
-
} from '@finos/legend-data-cube';
|
|
31
|
-
import { LegendDataCubeNewQueryState } from './LegendDataCubeNewQueryState.js';
|
|
32
|
-
import {
|
|
33
|
-
PersistentDataCubeQuery,
|
|
34
|
-
type V1_EngineServerClient,
|
|
35
|
-
type V1_PureGraphManager,
|
|
36
|
-
} from '@finos/legend-graph';
|
|
37
|
-
import {
|
|
38
|
-
ActionState,
|
|
39
|
-
assertErrorThrown,
|
|
40
|
-
formatDate,
|
|
41
|
-
isString,
|
|
42
|
-
uuid,
|
|
43
|
-
} from '@finos/legend-shared';
|
|
44
|
-
import type { LegendDataCubeDataCubeEngine } from '../LegendDataCubeDataCubeEngine.js';
|
|
45
|
-
import { LegendDataCubeQuerySaver } from '../../components/query-builder/LegendDataCubeQuerySaver.js';
|
|
46
|
-
import {
|
|
47
|
-
generateQueryBuilderRoute,
|
|
48
|
-
LEGEND_DATA_CUBE_ROUTE_PATTERN_TOKEN,
|
|
49
|
-
} from '../../__lib__/LegendDataCubeNavigation.js';
|
|
50
|
-
import { LegendDataCubeQueryLoaderState } from './LegendDataCubeQueryLoaderState.js';
|
|
51
|
-
import {
|
|
52
|
-
LegendDataCubeUserDataKey,
|
|
53
|
-
RECENTLY_VIEWED_QUERIES_LIMIT,
|
|
54
|
-
} from '../../__lib__/LegendDataCubeUserData.js';
|
|
55
|
-
import type { DepotServerClient } from '@finos/legend-server-depot';
|
|
56
|
-
|
|
57
|
-
export class LegendDataCubeQueryBuilderState {
|
|
58
|
-
uuid = uuid();
|
|
59
|
-
startTime = Date.now();
|
|
60
|
-
query!: DataCubeQuery;
|
|
61
|
-
persistentQuery?: PersistentDataCubeQuery | undefined;
|
|
62
|
-
dataCube?: DataCubeAPI | undefined;
|
|
63
|
-
|
|
64
|
-
constructor(
|
|
65
|
-
query: DataCubeQuery,
|
|
66
|
-
persistentQuery?: PersistentDataCubeQuery | undefined,
|
|
67
|
-
) {
|
|
68
|
-
makeObservable(this, {
|
|
69
|
-
dataCube: observable,
|
|
70
|
-
setDataCube: action,
|
|
71
|
-
|
|
72
|
-
query: observable,
|
|
73
|
-
persistentQuery: observable,
|
|
74
|
-
});
|
|
75
|
-
|
|
76
|
-
this.query = query;
|
|
77
|
-
this.persistentQuery = persistentQuery;
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
setDataCube(val: DataCubeAPI | undefined) {
|
|
81
|
-
this.dataCube = val;
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
export class LegendDataCubeQueryBuilderStore {
|
|
86
|
-
readonly application: LegendDataCubeApplicationStore;
|
|
87
|
-
readonly baseStore: LegendDataCubeBaseStore;
|
|
88
|
-
readonly engine: LegendDataCubeDataCubeEngine;
|
|
89
|
-
readonly depotServerClient: DepotServerClient;
|
|
90
|
-
readonly engineServerClient: V1_EngineServerClient;
|
|
91
|
-
readonly graphManager: V1_PureGraphManager;
|
|
92
|
-
readonly taskService: DataCubeTaskService;
|
|
93
|
-
readonly layoutService: DataCubeLayoutService;
|
|
94
|
-
readonly alertService: DataCubeAlertService;
|
|
95
|
-
|
|
96
|
-
readonly newQueryState: LegendDataCubeNewQueryState;
|
|
97
|
-
|
|
98
|
-
readonly saveQueryState = ActionState.create();
|
|
99
|
-
readonly saverDisplay: DisplayState;
|
|
100
|
-
|
|
101
|
-
readonly loadQueryState = ActionState.create();
|
|
102
|
-
loader: LegendDataCubeQueryLoaderState;
|
|
103
|
-
builder?: LegendDataCubeQueryBuilderState | undefined;
|
|
104
|
-
|
|
105
|
-
constructor(baseStore: LegendDataCubeBaseStore) {
|
|
106
|
-
makeObservable(this, {
|
|
107
|
-
builder: observable,
|
|
108
|
-
setBuilder: action,
|
|
109
|
-
});
|
|
110
|
-
|
|
111
|
-
this.application = baseStore.application;
|
|
112
|
-
this.baseStore = baseStore;
|
|
113
|
-
this.engine = baseStore.engine;
|
|
114
|
-
this.depotServerClient = baseStore.depotServerClient;
|
|
115
|
-
this.engineServerClient = baseStore.engineServerClient;
|
|
116
|
-
this.graphManager = baseStore.graphManager;
|
|
117
|
-
this.taskService = baseStore.taskService;
|
|
118
|
-
this.alertService = baseStore.alertService;
|
|
119
|
-
this.layoutService = baseStore.layoutService;
|
|
120
|
-
|
|
121
|
-
this.newQueryState = new LegendDataCubeNewQueryState(this);
|
|
122
|
-
this.loader = new LegendDataCubeQueryLoaderState(this);
|
|
123
|
-
this.saverDisplay = this.layoutService.newDisplay(
|
|
124
|
-
'Save Query',
|
|
125
|
-
() => <LegendDataCubeQuerySaver />,
|
|
126
|
-
{
|
|
127
|
-
...DEFAULT_ALERT_WINDOW_CONFIG,
|
|
128
|
-
height: 140,
|
|
129
|
-
},
|
|
130
|
-
);
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
setBuilder(val: LegendDataCubeQueryBuilderState | undefined) {
|
|
134
|
-
this.builder = val;
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
private updateWindowTitle(persistentQuery: PersistentDataCubeQuery) {
|
|
138
|
-
this.application.layoutService.setWindowTitle(
|
|
139
|
-
`\u229E ${persistentQuery.name}${this.builder ? ` - ${formatDate(new Date(this.builder.startTime), 'HH:mm:ss EEE MMM dd yyyy')}` : ''}`,
|
|
140
|
-
);
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
getRecentlyViewedQueries() {
|
|
144
|
-
const data = this.application.userDataService.getObjectValue(
|
|
145
|
-
LegendDataCubeUserDataKey.RECENTLY_VIEWED_QUERIES,
|
|
146
|
-
);
|
|
147
|
-
return data && Array.isArray(data) && data.every((id) => isString(id))
|
|
148
|
-
? data
|
|
149
|
-
: [];
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
async loadQuery(queryId: string | undefined) {
|
|
153
|
-
// internalize the parameters and clean them from the URL
|
|
154
|
-
const sourceData =
|
|
155
|
-
this.application.navigationService.navigator.getCurrentLocationParameterValue(
|
|
156
|
-
LEGEND_DATA_CUBE_ROUTE_PATTERN_TOKEN.SOURCE_DATA,
|
|
157
|
-
);
|
|
158
|
-
if (sourceData && !queryId) {
|
|
159
|
-
this.application.navigationService.navigator.updateCurrentLocation(
|
|
160
|
-
generateQueryBuilderRoute(null),
|
|
161
|
-
);
|
|
162
|
-
// populate the new query state if source data is specified
|
|
163
|
-
try {
|
|
164
|
-
await this.newQueryState.finalize(JSON.parse(atob(sourceData)));
|
|
165
|
-
} catch (error) {
|
|
166
|
-
assertErrorThrown(error);
|
|
167
|
-
this.alertService.alertError(error, {
|
|
168
|
-
message: `Query Creation Failure: Can't materialize query source from source data. Error: ${error.message}`,
|
|
169
|
-
});
|
|
170
|
-
this.setBuilder(undefined);
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
if (queryId !== this.builder?.persistentQuery?.id) {
|
|
175
|
-
if (!queryId) {
|
|
176
|
-
this.setBuilder(undefined);
|
|
177
|
-
this.loader.display.open();
|
|
178
|
-
return;
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
this.loadQueryState.inProgress();
|
|
182
|
-
|
|
183
|
-
try {
|
|
184
|
-
const persistentQuery =
|
|
185
|
-
await this.baseStore.graphManager.getDataCubeQuery(queryId);
|
|
186
|
-
const query = DataCubeQuery.serialization.fromJson(
|
|
187
|
-
persistentQuery.content,
|
|
188
|
-
);
|
|
189
|
-
this.setBuilder(
|
|
190
|
-
new LegendDataCubeQueryBuilderState(query, persistentQuery),
|
|
191
|
-
);
|
|
192
|
-
this.updateWindowTitle(persistentQuery);
|
|
193
|
-
|
|
194
|
-
// update the list of stack of recently viewed queries
|
|
195
|
-
const recentlyViewedQueries = this.getRecentlyViewedQueries();
|
|
196
|
-
const idx = recentlyViewedQueries.findIndex((data) => data === queryId);
|
|
197
|
-
if (idx === -1) {
|
|
198
|
-
if (recentlyViewedQueries.length >= RECENTLY_VIEWED_QUERIES_LIMIT) {
|
|
199
|
-
recentlyViewedQueries.pop();
|
|
200
|
-
}
|
|
201
|
-
recentlyViewedQueries.unshift(queryId);
|
|
202
|
-
} else {
|
|
203
|
-
recentlyViewedQueries.splice(idx, 1);
|
|
204
|
-
recentlyViewedQueries.unshift(queryId);
|
|
205
|
-
}
|
|
206
|
-
this.application.userDataService.persistValue(
|
|
207
|
-
LegendDataCubeUserDataKey.RECENTLY_VIEWED_QUERIES,
|
|
208
|
-
recentlyViewedQueries,
|
|
209
|
-
);
|
|
210
|
-
|
|
211
|
-
this.loadQueryState.pass();
|
|
212
|
-
} catch (error) {
|
|
213
|
-
assertErrorThrown(error);
|
|
214
|
-
this.alertService.alertError(error, {
|
|
215
|
-
message: `Query Load Failure: ${error.message}`,
|
|
216
|
-
});
|
|
217
|
-
this.loadQueryState.fail();
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
private async generatePersistentQuery(
|
|
223
|
-
api: DataCubeAPI,
|
|
224
|
-
name: string,
|
|
225
|
-
existingPersistentQuery?: PersistentDataCubeQuery | undefined,
|
|
226
|
-
) {
|
|
227
|
-
const query = await api.generateDataCubeQuery();
|
|
228
|
-
let persistentQuery: PersistentDataCubeQuery;
|
|
229
|
-
if (existingPersistentQuery) {
|
|
230
|
-
persistentQuery = existingPersistentQuery.clone();
|
|
231
|
-
} else {
|
|
232
|
-
persistentQuery = new PersistentDataCubeQuery();
|
|
233
|
-
persistentQuery.id = uuid();
|
|
234
|
-
}
|
|
235
|
-
persistentQuery.name = name;
|
|
236
|
-
persistentQuery.content = DataCubeQuery.serialization.toJson(query);
|
|
237
|
-
return persistentQuery;
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
async createQuery(name: string) {
|
|
241
|
-
if (!this.builder?.dataCube || this.saveQueryState.isInProgress) {
|
|
242
|
-
return;
|
|
243
|
-
}
|
|
244
|
-
|
|
245
|
-
this.saveQueryState.inProgress();
|
|
246
|
-
try {
|
|
247
|
-
const persistentQuery = await this.generatePersistentQuery(
|
|
248
|
-
this.builder.dataCube,
|
|
249
|
-
name,
|
|
250
|
-
);
|
|
251
|
-
|
|
252
|
-
const newQuery =
|
|
253
|
-
await this.baseStore.graphManager.createDataCubeQuery(persistentQuery);
|
|
254
|
-
// NOTE: reload is the cleanest, least bug-prone handling here
|
|
255
|
-
// but we can opt for just updating the URL to reflect the new query
|
|
256
|
-
// as an optimization. Also, it helps preserve the edition history
|
|
257
|
-
// on the existing data-cube.
|
|
258
|
-
//
|
|
259
|
-
// Another way to avoid reloading the whole app it to force update
|
|
260
|
-
// the <DataCube/> component using the key prop that ties to an ID
|
|
261
|
-
// of the builder.
|
|
262
|
-
this.application.navigationService.navigator.updateCurrentLocation(
|
|
263
|
-
generateQueryBuilderRoute(newQuery.id),
|
|
264
|
-
);
|
|
265
|
-
this.updateWindowTitle(persistentQuery);
|
|
266
|
-
|
|
267
|
-
this.saverDisplay.close();
|
|
268
|
-
this.saveQueryState.pass();
|
|
269
|
-
} catch (error) {
|
|
270
|
-
assertErrorThrown(error);
|
|
271
|
-
this.alertService.alertError(error, {
|
|
272
|
-
message: `Query Creation Failure: ${error.message}`,
|
|
273
|
-
});
|
|
274
|
-
this.saveQueryState.fail();
|
|
275
|
-
}
|
|
276
|
-
}
|
|
277
|
-
|
|
278
|
-
async saveQuery(name: string, saveAsNewQuery: boolean) {
|
|
279
|
-
if (!this.builder?.dataCube || this.saveQueryState.isInProgress) {
|
|
280
|
-
return;
|
|
281
|
-
}
|
|
282
|
-
|
|
283
|
-
this.saveQueryState.inProgress();
|
|
284
|
-
try {
|
|
285
|
-
const persistentQuery = await this.generatePersistentQuery(
|
|
286
|
-
this.builder.dataCube,
|
|
287
|
-
name,
|
|
288
|
-
this.builder.persistentQuery,
|
|
289
|
-
);
|
|
290
|
-
|
|
291
|
-
if (saveAsNewQuery) {
|
|
292
|
-
persistentQuery.id = uuid();
|
|
293
|
-
const newQuery =
|
|
294
|
-
await this.baseStore.graphManager.createDataCubeQuery(
|
|
295
|
-
persistentQuery,
|
|
296
|
-
);
|
|
297
|
-
// NOTE: reload is the cleanest, least bug-prone handling here
|
|
298
|
-
// but we can opt for just updating the URL to reflect the new query
|
|
299
|
-
// as an optimization. Also, it helps preserve the edition history
|
|
300
|
-
// on the existing data-cube.
|
|
301
|
-
//
|
|
302
|
-
// Another way to avoid reloading the whole app it to force update
|
|
303
|
-
// the <DataCube/> component using the key prop that ties to an ID
|
|
304
|
-
// of the builder.
|
|
305
|
-
this.application.navigationService.navigator.updateCurrentLocation(
|
|
306
|
-
generateQueryBuilderRoute(newQuery.id),
|
|
307
|
-
);
|
|
308
|
-
} else {
|
|
309
|
-
await this.baseStore.graphManager.updateDataCubeQuery(persistentQuery);
|
|
310
|
-
}
|
|
311
|
-
this.updateWindowTitle(persistentQuery);
|
|
312
|
-
|
|
313
|
-
this.saverDisplay.close();
|
|
314
|
-
this.saveQueryState.pass();
|
|
315
|
-
} catch (error) {
|
|
316
|
-
assertErrorThrown(error);
|
|
317
|
-
this.alertService.alertError(error, {
|
|
318
|
-
message: `Query Update Failure: ${error.message}`,
|
|
319
|
-
});
|
|
320
|
-
this.saveQueryState.fail();
|
|
321
|
-
}
|
|
322
|
-
}
|
|
323
|
-
}
|