@finos/legend-application-data-cube 0.1.19 → 0.1.21
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/lib/__lib__/LegendDataCubeNavigation.d.ts +2 -1
- package/lib/__lib__/LegendDataCubeNavigation.d.ts.map +1 -1
- package/lib/__lib__/LegendDataCubeNavigation.js +1 -0
- package/lib/__lib__/LegendDataCubeNavigation.js.map +1 -1
- package/lib/components/query-builder/LegendDataCubeQueryBuilder.d.ts.map +1 -1
- package/lib/components/query-builder/LegendDataCubeQueryBuilder.js +17 -4
- package/lib/components/query-builder/LegendDataCubeQueryBuilder.js.map +1 -1
- package/lib/index.css +1 -1
- package/lib/package.json +1 -1
- package/lib/stores/query-builder/LegendDataCubeNewQueryState.d.ts +2 -2
- package/lib/stores/query-builder/LegendDataCubeNewQueryState.d.ts.map +1 -1
- package/lib/stores/query-builder/LegendDataCubeNewQueryState.js +3 -3
- package/lib/stores/query-builder/LegendDataCubeNewQueryState.js.map +1 -1
- package/package.json +1 -1
- package/src/__lib__/LegendDataCubeNavigation.ts +1 -0
- package/src/components/query-builder/LegendDataCubeQueryBuilder.tsx +20 -4
- package/src/stores/query-builder/LegendDataCubeNewQueryState.tsx +4 -4
|
@@ -14,7 +14,8 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
export declare enum LEGEND_DATA_CUBE_ROUTE_PATTERN_TOKEN {
|
|
17
|
-
QUERY_ID = "queryId"
|
|
17
|
+
QUERY_ID = "queryId",
|
|
18
|
+
SOURCE_DATA = "sourceData"
|
|
18
19
|
}
|
|
19
20
|
export declare const LEGEND_DATA_CUBE_ROUTE_PATTERN: Readonly<{
|
|
20
21
|
QUERY_BUILDER: "/:queryId?";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LegendDataCubeNavigation.d.ts","sourceRoot":"","sources":["../../src/__lib__/LegendDataCubeNavigation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,oBAAY,oCAAoC;IAC9C,QAAQ,YAAY;
|
|
1
|
+
{"version":3,"file":"LegendDataCubeNavigation.d.ts","sourceRoot":"","sources":["../../src/__lib__/LegendDataCubeNavigation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,oBAAY,oCAAoC;IAC9C,QAAQ,YAAY;IACpB,WAAW,eAAe;CAC3B;AAED,eAAO,MAAM,8BAA8B;;EAEzC,CAAC;AAEH,MAAM,MAAM,yCAAyC,GAAG;IACtD,CAAC,oCAAoC,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACzD,CAAC;AAEF,eAAO,MAAM,yBAAyB,YAAa,MAAM,GAAG,IAAI,KAAG,MAIlE,CAAC"}
|
|
@@ -17,6 +17,7 @@ import { generatePath } from '@finos/legend-application/browser';
|
|
|
17
17
|
export var LEGEND_DATA_CUBE_ROUTE_PATTERN_TOKEN;
|
|
18
18
|
(function (LEGEND_DATA_CUBE_ROUTE_PATTERN_TOKEN) {
|
|
19
19
|
LEGEND_DATA_CUBE_ROUTE_PATTERN_TOKEN["QUERY_ID"] = "queryId";
|
|
20
|
+
LEGEND_DATA_CUBE_ROUTE_PATTERN_TOKEN["SOURCE_DATA"] = "sourceData";
|
|
20
21
|
})(LEGEND_DATA_CUBE_ROUTE_PATTERN_TOKEN || (LEGEND_DATA_CUBE_ROUTE_PATTERN_TOKEN = {}));
|
|
21
22
|
export const LEGEND_DATA_CUBE_ROUTE_PATTERN = Object.freeze({
|
|
22
23
|
QUERY_BUILDER: `/:${LEGEND_DATA_CUBE_ROUTE_PATTERN_TOKEN.QUERY_ID}?`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LegendDataCubeNavigation.js","sourceRoot":"","sources":["../../src/__lib__/LegendDataCubeNavigation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAEjE,MAAM,CAAN,IAAY,
|
|
1
|
+
{"version":3,"file":"LegendDataCubeNavigation.js","sourceRoot":"","sources":["../../src/__lib__/LegendDataCubeNavigation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAEjE,MAAM,CAAN,IAAY,oCAGX;AAHD,WAAY,oCAAoC;IAC9C,4DAAoB,CAAA;IACpB,kEAA0B,CAAA;AAC5B,CAAC,EAHW,oCAAoC,KAApC,oCAAoC,QAG/C;AAED,MAAM,CAAC,MAAM,8BAA8B,GAAG,MAAM,CAAC,MAAM,CAAC;IAC1D,aAAa,EAAE,KAAK,oCAAoC,CAAC,QAAQ,GAAG;CACrE,CAAC,CAAC;AAMH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,OAAsB,EAAU,EAAE;IAC1E,OAAO,YAAY,CAAC,8BAA8B,CAAC,aAAa,EAAE;QAChE,CAAC,oCAAoC,CAAC,QAAQ,CAAC,EAAE,OAAO;KACzD,CAAC,CAAC;AACL,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LegendDataCubeQueryBuilder.d.ts","sourceRoot":"","sources":["../../../src/components/query-builder/LegendDataCubeQueryBuilder.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;
|
|
1
|
+
{"version":3,"file":"LegendDataCubeQueryBuilder.d.ts","sourceRoot":"","sources":["../../../src/components/query-builder/LegendDataCubeQueryBuilder.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAkDH,eAAO,MAAM,0BAA0B,+CAmGtC,CAAC"}
|
|
@@ -22,6 +22,7 @@ import { useParams } from '@finos/legend-application/browser';
|
|
|
22
22
|
import { LEGEND_DATA_CUBE_ROUTE_PATTERN_TOKEN, } from '../../__lib__/LegendDataCubeNavigation.js';
|
|
23
23
|
import { useEffect } from 'react';
|
|
24
24
|
import { LegendDataCubeSettingStorageKey } from '../../__lib__/LegendDataCubeSetting.js';
|
|
25
|
+
import { assertErrorThrown } from '@finos/legend-shared';
|
|
25
26
|
const LegendDataCubeQueryBuilderHeader = observer(() => {
|
|
26
27
|
const store = useLegendDataCubeQueryBuilderStore();
|
|
27
28
|
return (_jsxs("div", { className: "flex h-full items-center", children: [_jsx(FormButton, { compact: true, onClick: () => store.loader.display.open(), children: "Load Query" }), _jsx(FormButton, { compact: true, className: "ml-1.5", onClick: () => store.newQueryState.display.open(), children: "New Query" }), _jsx(FormButton, { compact: true, className: "ml-1.5", disabled: !store.builder?.dataCube, onClick: () => store.saverDisplay.open(), children: "Save Query" })] }));
|
|
@@ -32,18 +33,30 @@ export const LegendDataCubeQueryBuilder = withLegendDataCubeQueryBuilderStore(ob
|
|
|
32
33
|
const application = store.application;
|
|
33
34
|
const params = useParams();
|
|
34
35
|
const queryId = params[LEGEND_DATA_CUBE_ROUTE_PATTERN_TOKEN.QUERY_ID];
|
|
36
|
+
const sourceData = application.navigationService.navigator.getCurrentLocationParameterValue(LEGEND_DATA_CUBE_ROUTE_PATTERN_TOKEN.SOURCE_DATA);
|
|
35
37
|
useEffect(() => {
|
|
36
|
-
if (
|
|
38
|
+
if (sourceData) {
|
|
39
|
+
try {
|
|
40
|
+
const sourceDataJson = JSON.parse(decodeURIComponent(atob(sourceData)));
|
|
41
|
+
store.newQueryState
|
|
42
|
+
.finalize(sourceDataJson)
|
|
43
|
+
.catch((error) => store.alertService.alertUnhandledError(error));
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
assertErrorThrown(error);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
else if (queryId !== store.builder?.persistentQuery?.id) {
|
|
37
50
|
store
|
|
38
51
|
.loadQuery(queryId)
|
|
39
52
|
.catch((error) => store.alertService.alertUnhandledError(error));
|
|
40
53
|
}
|
|
41
|
-
}, [store, queryId]);
|
|
54
|
+
}, [store, queryId, sourceData]);
|
|
42
55
|
useEffect(() => {
|
|
43
|
-
if (!store.builder && !queryId) {
|
|
56
|
+
if (!store.builder && !queryId && !sourceData) {
|
|
44
57
|
store.loader.display.open();
|
|
45
58
|
}
|
|
46
|
-
}, [store, queryId]);
|
|
59
|
+
}, [store, queryId, sourceData]);
|
|
47
60
|
if (!builder) {
|
|
48
61
|
return (_jsx(DataCubePlaceholder, { title: "[ Legend DataCube ]", layoutManager: store.layoutService.manager, taskManager: store.taskService.manager, headerContent: _jsx(LegendDataCubeQueryBuilderHeader, {}), menuItems: [
|
|
49
62
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LegendDataCubeQueryBuilder.js","sourceRoot":"","sources":["../../../src/components/query-builder/LegendDataCubeQueryBuilder.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EACL,QAAQ,EACR,UAAU,EAEV,mBAAmB,GACpB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACnC,OAAO,EACL,kCAAkC,EAClC,mCAAmC,GACpC,MAAM,8CAA8C,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAC9D,OAAO,EACL,oCAAoC,GAErC,MAAM,2CAA2C,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,+BAA+B,EAAE,MAAM,wCAAwC,CAAC;
|
|
1
|
+
{"version":3,"file":"LegendDataCubeQueryBuilder.js","sourceRoot":"","sources":["../../../src/components/query-builder/LegendDataCubeQueryBuilder.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EACL,QAAQ,EACR,UAAU,EAEV,mBAAmB,GACpB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACnC,OAAO,EACL,kCAAkC,EAClC,mCAAmC,GACpC,MAAM,8CAA8C,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAC9D,OAAO,EACL,oCAAoC,GAErC,MAAM,2CAA2C,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,+BAA+B,EAAE,MAAM,wCAAwC,CAAC;AACzF,OAAO,EAAE,iBAAiB,EAAoB,MAAM,sBAAsB,CAAC;AAE3E,MAAM,gCAAgC,GAAG,QAAQ,CAAC,GAAG,EAAE;IACrD,MAAM,KAAK,GAAG,kCAAkC,EAAE,CAAC;IAEnD,OAAO,CACL,eAAK,SAAS,EAAC,0BAA0B,aACvC,KAAC,UAAU,IAAC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,2BAExD,EACb,KAAC,UAAU,IACT,OAAO,EAAE,IAAI,EACb,SAAS,EAAC,QAAQ,EAClB,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,0BAGtC,EACb,KAAC,UAAU,IACT,OAAO,EAAE,IAAI,EACb,SAAS,EAAC,QAAQ,EAClB,QAAQ,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,QAAQ,EAClC,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,2BAG7B,IACT,CACP,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,0BAA0B,GAAG,mCAAmC,CAC3E,QAAQ,CAAC,GAAG,EAAE;IACZ,MAAM,KAAK,GAAG,kCAAkC,EAAE,CAAC;IACnD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IAC9B,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;IACtC,MAAM,MAAM,GAAG,SAAS,EAA6C,CAAC;IACtE,MAAM,OAAO,GAAG,MAAM,CAAC,oCAAoC,CAAC,QAAQ,CAAC,CAAC;IACtE,MAAM,UAAU,GACd,WAAW,CAAC,iBAAiB,CAAC,SAAS,CAAC,gCAAgC,CACtE,oCAAoC,CAAC,WAAW,CACjD,CAAC;IAEJ,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,CAAC;gBACH,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAC/B,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CACtB,CAAC;gBACjB,KAAK,CAAC,aAAa;qBAChB,QAAQ,CAAC,cAAc,CAAC;qBACxB,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;YACrE,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC;aAAM,IAAI,OAAO,KAAK,KAAK,CAAC,OAAO,EAAE,eAAe,EAAE,EAAE,EAAE,CAAC;YAC1D,KAAK;iBACF,SAAS,CAAC,OAAO,CAAC;iBAClB,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;QACrE,CAAC;IACH,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;IAEjC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;YAC9C,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAC9B,CAAC;IACH,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;IAEjC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CACL,KAAC,mBAAmB,IAClB,KAAK,EAAC,qBAAqB,EAC3B,aAAa,EAAE,KAAK,CAAC,aAAa,CAAC,OAAO,EAC1C,WAAW,EAAE,KAAK,CAAC,WAAW,CAAC,OAAO,EACtC,aAAa,EAAE,KAAC,gCAAgC,KAAG,EACnD,SAAS,EAAE;gBACT;oBACE,KAAK,EAAE,mBAAmB;oBAC1B,MAAM,EAAE,GAAG,EAAE;wBACX,MAAM,GAAG,GAAG,WAAW,CAAC,oBAAoB,CAAC,GAAG,CAAC;wBACjD,IAAI,GAAG,EAAE,CAAC;4BACR,WAAW,CAAC,iBAAiB,CAAC,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;wBAC5D,CAAC;oBACH,CAAC;oBACD,QAAQ,EAAE,IAAI,EAAE,uDAAuD;iBACxE;aACF,YAED,eAAK,SAAS,EAAC,mBAAmB,aAChC,wDAAsC,EACtC,KAAC,UAAU,IACT,SAAS,EAAC,QAAQ,EAClB,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,0BAGtC,IACT,GACc,CACvB,CAAC;IACJ,CAAC;IACD,OAAO,CACL,KAAC,QAAQ,IAEP,KAAK,EAAE,OAAO,CAAC,KAAK,EACpB,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,EAC9B,OAAO,EAAE;YACP,aAAa,EAAE,KAAK,CAAC,aAAa,CAAC,OAAO;YAC1C,WAAW,EAAE,KAAK,CAAC,WAAW,CAAC,OAAO;YACtC,iBAAiB,EAAE,KAAK,CAAC,SAAS,CAAC,iBAAiB;YACpD,aAAa,CAAC,KAAK;gBACjB,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACjC,CAAC;YACD,mBAAmB,EAAE,GAAG,EAAE,CAAC,KAAC,gCAAgC,KAAG;YAC/D,YAAY,EAAE;gBACZ,cAAc,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ;gBACxC,MAAM,EAAE,WAAW,CAAC,cAAc,CAAC,cAAc,CAC/C,+BAA+B,CAAC,SAAS,CACL;aACvC;YACD,iBAAiB,CAAC,KAAK;gBACrB,WAAW,CAAC,cAAc,CAAC,YAAY,CACrC,+BAA+B,CAAC,SAAS,EACzC,KAAK,CAAC,MAAM,CACb,CAAC;YACJ,CAAC;YACD,gBAAgB,EAAE,WAAW,CAAC,oBAAoB,CAAC,GAAG;SACvD,IAxBI,OAAO,CAAC,IAAI,CAyBjB,CACH,CAAC;AACJ,CAAC,CAAC,CACH,CAAC"}
|
package/lib/index.css
CHANGED
package/lib/package.json
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
import { ActionState } from '@finos/legend-shared';
|
|
16
|
+
import { ActionState, type PlainObject } from '@finos/legend-shared';
|
|
17
17
|
import { LegendDataCubeSourceBuilderType, type LegendDataCubeSourceBuilderState } from './source-builder/LegendDataCubeSourceBuilderState.js';
|
|
18
18
|
import { type DisplayState } from '@finos/legend-data-cube';
|
|
19
19
|
import { type LegendDataCubeQueryBuilderStore } from './LegendDataCubeQueryBuilderStore.js';
|
|
@@ -28,6 +28,6 @@ export declare class LegendDataCubeNewQueryState {
|
|
|
28
28
|
constructor(store: LegendDataCubeQueryBuilderStore);
|
|
29
29
|
changeSourceBuilder(type: LegendDataCubeSourceBuilderType, skipCheck?: boolean | undefined): void;
|
|
30
30
|
private createSourceBuilder;
|
|
31
|
-
finalize(): Promise<void>;
|
|
31
|
+
finalize(sourceData?: PlainObject): Promise<void>;
|
|
32
32
|
}
|
|
33
33
|
//# sourceMappingURL=LegendDataCubeNewQueryState.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LegendDataCubeNewQueryState.d.ts","sourceRoot":"","sources":["../../../src/stores/query-builder/LegendDataCubeNewQueryState.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EACL,WAAW,
|
|
1
|
+
{"version":3,"file":"LegendDataCubeNewQueryState.d.ts","sourceRoot":"","sources":["../../../src/stores/query-builder/LegendDataCubeNewQueryState.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EACL,WAAW,EAIX,KAAK,WAAW,EACjB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,+BAA+B,EAC/B,KAAK,gCAAgC,EACtC,MAAM,sDAAsD,CAAC;AAC9D,OAAO,EAKL,KAAK,YAAY,EAClB,MAAM,yBAAyB,CAAC;AAIjC,OAAO,EAEL,KAAK,+BAA+B,EACrC,MAAM,sCAAsC,CAAC;AAG9C,qBAAa,2BAA2B;IACtC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAiC;IAC9D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkC;IACzD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA+B;IACvD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAuB;IAErD,QAAQ,CAAC,aAAa,cAAwB;IAC9C,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAE/B,aAAa,EAAE,gCAAgC,CAAC;gBAEpC,KAAK,EAAE,+BAA+B;IA0BlD,mBAAmB,CACjB,IAAI,EAAE,+BAA+B,EACrC,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,GAC9B,IAAI;IAMP,OAAO,CAAC,mBAAmB;IAwBrB,QAAQ,CAAC,UAAU,CAAC,EAAE,WAAW;CAoCxC"}
|
|
@@ -62,13 +62,13 @@ export class LegendDataCubeNewQueryState {
|
|
|
62
62
|
throw new UnsupportedOperationError(`Can't create source builder for unsupported type '${type}'`);
|
|
63
63
|
}
|
|
64
64
|
}
|
|
65
|
-
async finalize() {
|
|
66
|
-
if (!this.sourceBuilder.isValid) {
|
|
65
|
+
async finalize(sourceData) {
|
|
66
|
+
if (!this.sourceBuilder.isValid && !sourceData) {
|
|
67
67
|
throw new IllegalStateError(`Can't generate query: source is not valid`);
|
|
68
68
|
}
|
|
69
69
|
this.finalizeState.inProgress();
|
|
70
70
|
try {
|
|
71
|
-
const source = await this.sourceBuilder.build();
|
|
71
|
+
const source = sourceData ?? (await this.sourceBuilder.build());
|
|
72
72
|
const query = new DataCubeQuery();
|
|
73
73
|
const processedSource = await this._engine.processQuerySource(source);
|
|
74
74
|
query.source = source;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LegendDataCubeNewQueryState.js","sourceRoot":"","sources":["../../../src/stores/query-builder/LegendDataCubeNewQueryState.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAC1D,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,iBAAiB,EACjB,yBAAyB,
|
|
1
|
+
{"version":3,"file":"LegendDataCubeNewQueryState.js","sourceRoot":"","sources":["../../../src/stores/query-builder/LegendDataCubeNewQueryState.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -33,6 +33,7 @@ import {
|
|
|
33
33
|
} from '../../__lib__/LegendDataCubeNavigation.js';
|
|
34
34
|
import { useEffect } from 'react';
|
|
35
35
|
import { LegendDataCubeSettingStorageKey } from '../../__lib__/LegendDataCubeSetting.js';
|
|
36
|
+
import { assertErrorThrown, type PlainObject } from '@finos/legend-shared';
|
|
36
37
|
|
|
37
38
|
const LegendDataCubeQueryBuilderHeader = observer(() => {
|
|
38
39
|
const store = useLegendDataCubeQueryBuilderStore();
|
|
@@ -68,20 +69,35 @@ export const LegendDataCubeQueryBuilder = withLegendDataCubeQueryBuilderStore(
|
|
|
68
69
|
const application = store.application;
|
|
69
70
|
const params = useParams<LegendDataCubeQueryBuilderQueryPathParams>();
|
|
70
71
|
const queryId = params[LEGEND_DATA_CUBE_ROUTE_PATTERN_TOKEN.QUERY_ID];
|
|
72
|
+
const sourceData =
|
|
73
|
+
application.navigationService.navigator.getCurrentLocationParameterValue(
|
|
74
|
+
LEGEND_DATA_CUBE_ROUTE_PATTERN_TOKEN.SOURCE_DATA,
|
|
75
|
+
);
|
|
71
76
|
|
|
72
77
|
useEffect(() => {
|
|
73
|
-
if (
|
|
78
|
+
if (sourceData) {
|
|
79
|
+
try {
|
|
80
|
+
const sourceDataJson = JSON.parse(
|
|
81
|
+
decodeURIComponent(atob(sourceData)),
|
|
82
|
+
) as PlainObject;
|
|
83
|
+
store.newQueryState
|
|
84
|
+
.finalize(sourceDataJson)
|
|
85
|
+
.catch((error) => store.alertService.alertUnhandledError(error));
|
|
86
|
+
} catch (error) {
|
|
87
|
+
assertErrorThrown(error);
|
|
88
|
+
}
|
|
89
|
+
} else if (queryId !== store.builder?.persistentQuery?.id) {
|
|
74
90
|
store
|
|
75
91
|
.loadQuery(queryId)
|
|
76
92
|
.catch((error) => store.alertService.alertUnhandledError(error));
|
|
77
93
|
}
|
|
78
|
-
}, [store, queryId]);
|
|
94
|
+
}, [store, queryId, sourceData]);
|
|
79
95
|
|
|
80
96
|
useEffect(() => {
|
|
81
|
-
if (!store.builder && !queryId) {
|
|
97
|
+
if (!store.builder && !queryId && !sourceData) {
|
|
82
98
|
store.loader.display.open();
|
|
83
99
|
}
|
|
84
|
-
}, [store, queryId]);
|
|
100
|
+
}, [store, queryId, sourceData]);
|
|
85
101
|
|
|
86
102
|
if (!builder) {
|
|
87
103
|
return (
|
|
@@ -20,6 +20,7 @@ import {
|
|
|
20
20
|
assertErrorThrown,
|
|
21
21
|
IllegalStateError,
|
|
22
22
|
UnsupportedOperationError,
|
|
23
|
+
type PlainObject,
|
|
23
24
|
} from '@finos/legend-shared';
|
|
24
25
|
import { LegendQueryDataCubeSourceBuilderState } from './source-builder/LegendQueryDataCubeSourceBuilderState.js';
|
|
25
26
|
import type { LegendDataCubeApplicationStore } from '../LegendDataCubeBaseStore.js';
|
|
@@ -113,21 +114,20 @@ export class LegendDataCubeNewQueryState {
|
|
|
113
114
|
}
|
|
114
115
|
}
|
|
115
116
|
|
|
116
|
-
async finalize() {
|
|
117
|
-
if (!this.sourceBuilder.isValid) {
|
|
117
|
+
async finalize(sourceData?: PlainObject) {
|
|
118
|
+
if (!this.sourceBuilder.isValid && !sourceData) {
|
|
118
119
|
throw new IllegalStateError(`Can't generate query: source is not valid`);
|
|
119
120
|
}
|
|
120
121
|
|
|
121
122
|
this.finalizeState.inProgress();
|
|
122
123
|
try {
|
|
123
|
-
const source = await this.sourceBuilder.build();
|
|
124
|
+
const source = sourceData ?? (await this.sourceBuilder.build());
|
|
124
125
|
const query = new DataCubeQuery();
|
|
125
126
|
const processedSource = await this._engine.processQuerySource(source);
|
|
126
127
|
query.source = source;
|
|
127
128
|
query.query = await this._engine.getValueSpecificationCode(
|
|
128
129
|
_selectFunction(processedSource.columns),
|
|
129
130
|
);
|
|
130
|
-
|
|
131
131
|
this._store.setBuilder(new LegendDataCubeQueryBuilderState(query));
|
|
132
132
|
// only update the route instead of reloading in case we are creating
|
|
133
133
|
// a new query when we are editing another query
|