@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.
Files changed (150) hide show
  1. package/README.md +1 -1
  2. package/lib/__lib__/LegendDataCubeNavigation.d.ts +9 -5
  3. package/lib/__lib__/LegendDataCubeNavigation.d.ts.map +1 -1
  4. package/lib/__lib__/LegendDataCubeNavigation.js +9 -5
  5. package/lib/__lib__/LegendDataCubeNavigation.js.map +1 -1
  6. package/lib/__lib__/LegendDataCubeUserData.d.ts +2 -2
  7. package/lib/__lib__/LegendDataCubeUserData.d.ts.map +1 -1
  8. package/lib/__lib__/LegendDataCubeUserData.js +2 -2
  9. package/lib/__lib__/LegendDataCubeUserData.js.map +1 -1
  10. package/lib/application/LegendDataCubeApplicationConfig.d.ts +4 -0
  11. package/lib/application/LegendDataCubeApplicationConfig.d.ts.map +1 -1
  12. package/lib/application/LegendDataCubeApplicationConfig.js +5 -0
  13. package/lib/application/LegendDataCubeApplicationConfig.js.map +1 -1
  14. package/lib/components/LegendDataCubeBlockingWindow.d.ts +29 -0
  15. package/lib/components/LegendDataCubeBlockingWindow.d.ts.map +1 -0
  16. package/lib/components/LegendDataCubeBlockingWindow.js +75 -0
  17. package/lib/components/LegendDataCubeBlockingWindow.js.map +1 -0
  18. package/lib/components/LegendDataCubeWebApplication.js +2 -2
  19. package/lib/components/LegendDataCubeWebApplication.js.map +1 -1
  20. package/lib/components/builder/LegendDataCubeBuilder.d.ts +20 -0
  21. package/lib/components/builder/LegendDataCubeBuilder.d.ts.map +1 -0
  22. package/lib/components/builder/LegendDataCubeBuilder.js +162 -0
  23. package/lib/components/builder/LegendDataCubeBuilder.js.map +1 -0
  24. package/lib/components/builder/LegendDataCubeBuilderStoreProvider.d.ts +19 -0
  25. package/lib/components/builder/LegendDataCubeBuilderStoreProvider.d.ts.map +1 -0
  26. package/lib/components/builder/LegendDataCubeBuilderStoreProvider.js +34 -0
  27. package/lib/components/builder/LegendDataCubeBuilderStoreProvider.js.map +1 -0
  28. package/lib/components/{query-builder/LegendDataCubeQuerySaver.d.ts → builder/LegendDataCubeCreator.d.ts} +2 -2
  29. package/lib/components/builder/LegendDataCubeCreator.d.ts.map +1 -0
  30. package/lib/components/{query-builder/LegendDataCubeNewQueryBuilder.js → builder/LegendDataCubeCreator.js} +10 -10
  31. package/lib/components/builder/LegendDataCubeCreator.js.map +1 -0
  32. package/lib/components/builder/LegendDataCubeDeleteConfirmation.d.ts +19 -0
  33. package/lib/components/builder/LegendDataCubeDeleteConfirmation.d.ts.map +1 -0
  34. package/lib/components/builder/LegendDataCubeDeleteConfirmation.js +43 -0
  35. package/lib/components/builder/LegendDataCubeDeleteConfirmation.js.map +1 -0
  36. package/lib/components/{query-builder/LegendDataCubeQueryLoader.d.ts → builder/LegendDataCubeLoader.d.ts} +2 -2
  37. package/lib/components/builder/LegendDataCubeLoader.d.ts.map +1 -0
  38. package/lib/components/builder/LegendDataCubeLoader.js +113 -0
  39. package/lib/components/builder/LegendDataCubeLoader.js.map +1 -0
  40. package/lib/components/{query-builder/LegendDataCubeNewQueryBuilder.d.ts → builder/LegendDataCubeSaver.d.ts} +2 -2
  41. package/lib/components/builder/LegendDataCubeSaver.d.ts.map +1 -0
  42. package/lib/components/builder/LegendDataCubeSaver.js +73 -0
  43. package/lib/components/builder/LegendDataCubeSaver.js.map +1 -0
  44. package/lib/components/{query-builder/LegendDataCubeQueryBuilder.d.ts → builder/LegendDataCubeSourceViewer.d.ts} +4 -2
  45. package/lib/components/builder/LegendDataCubeSourceViewer.d.ts.map +1 -0
  46. package/lib/components/builder/LegendDataCubeSourceViewer.js +46 -0
  47. package/lib/components/builder/LegendDataCubeSourceViewer.js.map +1 -0
  48. package/lib/components/{query-builder/source-builder → builder/source}/AdhocQueryDataCubeSourceBuilder.d.ts +1 -1
  49. package/lib/components/builder/source/AdhocQueryDataCubeSourceBuilder.d.ts.map +1 -0
  50. package/lib/components/builder/source/AdhocQueryDataCubeSourceBuilder.js.map +1 -0
  51. package/lib/components/{query-builder/source-builder → builder/source}/LegendQueryDataCubeSourceBuilder.d.ts +1 -1
  52. package/lib/components/builder/source/LegendQueryDataCubeSourceBuilder.d.ts.map +1 -0
  53. package/lib/components/{query-builder/source-builder → builder/source}/LegendQueryDataCubeSourceBuilder.js +13 -13
  54. package/lib/components/builder/source/LegendQueryDataCubeSourceBuilder.js.map +1 -0
  55. package/lib/index.css +1 -1
  56. package/lib/package.json +1 -1
  57. package/lib/stores/LegendDataCubeCacheManager.d.ts.map +1 -1
  58. package/lib/stores/LegendDataCubeCacheManager.js +11 -12
  59. package/lib/stores/LegendDataCubeCacheManager.js.map +1 -1
  60. package/lib/stores/LegendDataCubeDataCubeEngine.d.ts +1 -1
  61. package/lib/stores/LegendDataCubeDataCubeEngine.d.ts.map +1 -1
  62. package/lib/stores/LegendDataCubeDataCubeEngine.js +5 -11
  63. package/lib/stores/LegendDataCubeDataCubeEngine.js.map +1 -1
  64. package/lib/stores/builder/LegendDataCubeBuilderStore.d.ts +80 -0
  65. package/lib/stores/builder/LegendDataCubeBuilderStore.d.ts.map +1 -0
  66. package/lib/stores/builder/LegendDataCubeBuilderStore.js +353 -0
  67. package/lib/stores/builder/LegendDataCubeBuilderStore.js.map +1 -0
  68. package/lib/stores/{query-builder/LegendDataCubeNewQueryState.d.ts → builder/LegendDataCubeCreatorState.d.ts} +5 -5
  69. package/lib/stores/builder/LegendDataCubeCreatorState.d.ts.map +1 -0
  70. package/lib/stores/{query-builder/LegendDataCubeNewQueryState.js → builder/LegendDataCubeCreatorState.js} +17 -17
  71. package/lib/stores/builder/LegendDataCubeCreatorState.js.map +1 -0
  72. package/lib/stores/{query-builder/LegendDataCubeQueryLoaderState.d.ts → builder/LegendDataCubeLoaderState.d.ts} +20 -20
  73. package/lib/stores/builder/LegendDataCubeLoaderState.d.ts.map +1 -0
  74. package/lib/stores/builder/LegendDataCubeLoaderState.js +187 -0
  75. package/lib/stores/builder/LegendDataCubeLoaderState.js.map +1 -0
  76. package/lib/stores/builder/source/AdhocQueryDataCubeSourceBuilderState.d.ts.map +1 -0
  77. package/lib/stores/builder/source/AdhocQueryDataCubeSourceBuilderState.js.map +1 -0
  78. package/lib/stores/builder/source/LegendDataCubeSourceBuilderState.d.ts.map +1 -0
  79. package/lib/stores/{query-builder/source-builder → builder/source}/LegendDataCubeSourceBuilderState.js +1 -1
  80. package/lib/stores/builder/source/LegendDataCubeSourceBuilderState.js.map +1 -0
  81. package/lib/stores/builder/source/LegendQueryDataCubeSourceBuilderState.d.ts.map +1 -0
  82. package/lib/stores/builder/source/LegendQueryDataCubeSourceBuilderState.js.map +1 -0
  83. package/package.json +5 -5
  84. package/src/__lib__/LegendDataCubeNavigation.ts +15 -7
  85. package/src/__lib__/LegendDataCubeUserData.ts +2 -2
  86. package/src/application/LegendDataCubeApplicationConfig.ts +12 -0
  87. package/src/components/LegendDataCubeBlockingWindow.tsx +120 -0
  88. package/src/components/LegendDataCubeWebApplication.tsx +3 -3
  89. package/src/components/builder/LegendDataCubeBuilder.tsx +331 -0
  90. package/src/components/{query-builder/LegendDataCubeQueryBuilderStoreProvider.tsx → builder/LegendDataCubeBuilderStoreProvider.tsx} +19 -16
  91. package/src/components/{query-builder/LegendDataCubeNewQueryBuilder.tsx → builder/LegendDataCubeCreator.tsx} +9 -9
  92. package/src/components/builder/LegendDataCubeDeleteConfirmation.tsx +87 -0
  93. package/src/components/{query-builder/LegendDataCubeQueryLoader.tsx → builder/LegendDataCubeLoader.tsx} +122 -59
  94. package/src/components/builder/LegendDataCubeSaver.tsx +184 -0
  95. package/src/components/builder/LegendDataCubeSourceViewer.tsx +108 -0
  96. package/src/components/{query-builder/source-builder → builder/source}/AdhocQueryDataCubeSourceBuilder.tsx +1 -1
  97. package/src/components/{query-builder/source-builder → builder/source}/LegendQueryDataCubeSourceBuilder.tsx +16 -15
  98. package/src/stores/LegendDataCubeCacheManager.ts +11 -12
  99. package/src/stores/LegendDataCubeDataCubeEngine.ts +4 -14
  100. package/src/stores/builder/LegendDataCubeBuilderStore.tsx +516 -0
  101. package/src/stores/{query-builder/LegendDataCubeNewQueryState.tsx → builder/LegendDataCubeCreatorState.tsx} +23 -21
  102. package/src/stores/builder/LegendDataCubeLoaderState.tsx +248 -0
  103. package/src/stores/{query-builder/source-builder → builder/source}/LegendDataCubeSourceBuilderState.ts +1 -1
  104. package/tsconfig.json +16 -13
  105. package/lib/components/query-builder/LegendDataCubeNewQueryBuilder.d.ts.map +0 -1
  106. package/lib/components/query-builder/LegendDataCubeNewQueryBuilder.js.map +0 -1
  107. package/lib/components/query-builder/LegendDataCubeQueryBuilder.d.ts.map +0 -1
  108. package/lib/components/query-builder/LegendDataCubeQueryBuilder.js +0 -93
  109. package/lib/components/query-builder/LegendDataCubeQueryBuilder.js.map +0 -1
  110. package/lib/components/query-builder/LegendDataCubeQueryBuilderStoreProvider.d.ts +0 -19
  111. package/lib/components/query-builder/LegendDataCubeQueryBuilderStoreProvider.d.ts.map +0 -1
  112. package/lib/components/query-builder/LegendDataCubeQueryBuilderStoreProvider.js +0 -33
  113. package/lib/components/query-builder/LegendDataCubeQueryBuilderStoreProvider.js.map +0 -1
  114. package/lib/components/query-builder/LegendDataCubeQueryLoader.d.ts.map +0 -1
  115. package/lib/components/query-builder/LegendDataCubeQueryLoader.js +0 -97
  116. package/lib/components/query-builder/LegendDataCubeQueryLoader.js.map +0 -1
  117. package/lib/components/query-builder/LegendDataCubeQuerySaver.d.ts.map +0 -1
  118. package/lib/components/query-builder/LegendDataCubeQuerySaver.js +0 -51
  119. package/lib/components/query-builder/LegendDataCubeQuerySaver.js.map +0 -1
  120. package/lib/components/query-builder/source-builder/AdhocQueryDataCubeSourceBuilder.d.ts.map +0 -1
  121. package/lib/components/query-builder/source-builder/AdhocQueryDataCubeSourceBuilder.js.map +0 -1
  122. package/lib/components/query-builder/source-builder/LegendQueryDataCubeSourceBuilder.d.ts.map +0 -1
  123. package/lib/components/query-builder/source-builder/LegendQueryDataCubeSourceBuilder.js.map +0 -1
  124. package/lib/stores/query-builder/LegendDataCubeNewQueryState.d.ts.map +0 -1
  125. package/lib/stores/query-builder/LegendDataCubeNewQueryState.js.map +0 -1
  126. package/lib/stores/query-builder/LegendDataCubeQueryBuilderStore.d.ts +0 -58
  127. package/lib/stores/query-builder/LegendDataCubeQueryBuilderStore.d.ts.map +0 -1
  128. package/lib/stores/query-builder/LegendDataCubeQueryBuilderStore.js +0 -228
  129. package/lib/stores/query-builder/LegendDataCubeQueryBuilderStore.js.map +0 -1
  130. package/lib/stores/query-builder/LegendDataCubeQueryLoaderState.d.ts.map +0 -1
  131. package/lib/stores/query-builder/LegendDataCubeQueryLoaderState.js +0 -198
  132. package/lib/stores/query-builder/LegendDataCubeQueryLoaderState.js.map +0 -1
  133. package/lib/stores/query-builder/source-builder/AdhocQueryDataCubeSourceBuilderState.d.ts.map +0 -1
  134. package/lib/stores/query-builder/source-builder/AdhocQueryDataCubeSourceBuilderState.js.map +0 -1
  135. package/lib/stores/query-builder/source-builder/LegendDataCubeSourceBuilderState.d.ts.map +0 -1
  136. package/lib/stores/query-builder/source-builder/LegendDataCubeSourceBuilderState.js.map +0 -1
  137. package/lib/stores/query-builder/source-builder/LegendQueryDataCubeSourceBuilderState.d.ts.map +0 -1
  138. package/lib/stores/query-builder/source-builder/LegendQueryDataCubeSourceBuilderState.js.map +0 -1
  139. package/src/components/query-builder/LegendDataCubeQueryBuilder.tsx +0 -164
  140. package/src/components/query-builder/LegendDataCubeQuerySaver.tsx +0 -116
  141. package/src/stores/query-builder/LegendDataCubeQueryBuilderStore.tsx +0 -323
  142. package/src/stores/query-builder/LegendDataCubeQueryLoaderState.tsx +0 -260
  143. /package/lib/components/{query-builder/source-builder → builder/source}/AdhocQueryDataCubeSourceBuilder.js +0 -0
  144. /package/lib/stores/{query-builder/source-builder → builder/source}/AdhocQueryDataCubeSourceBuilderState.d.ts +0 -0
  145. /package/lib/stores/{query-builder/source-builder → builder/source}/AdhocQueryDataCubeSourceBuilderState.js +0 -0
  146. /package/lib/stores/{query-builder/source-builder → builder/source}/LegendDataCubeSourceBuilderState.d.ts +0 -0
  147. /package/lib/stores/{query-builder/source-builder → builder/source}/LegendQueryDataCubeSourceBuilderState.d.ts +0 -0
  148. /package/lib/stores/{query-builder/source-builder → builder/source}/LegendQueryDataCubeSourceBuilderState.js +0 -0
  149. /package/src/stores/{query-builder/source-builder → builder/source}/AdhocQueryDataCubeSourceBuilderState.ts +0 -0
  150. /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"}
@@ -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"}
@@ -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
- }