@finos/legend-application-repl 0.0.30 → 0.0.32

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 (229) hide show
  1. package/lib/components/LegendREPLFrameworkProvider.js +1 -1
  2. package/lib/components/LegendREPLFrameworkProvider.js.map +1 -1
  3. package/lib/components/REPLStoreProvider.d.ts +1 -1
  4. package/lib/components/REPLStoreProvider.d.ts.map +1 -1
  5. package/lib/components/REPLStoreProvider.js +1 -1
  6. package/lib/components/REPLStoreProvider.js.map +1 -1
  7. package/lib/components/REPLWindow.d.ts +33 -0
  8. package/lib/components/REPLWindow.d.ts.map +1 -0
  9. package/lib/components/REPLWindow.js +117 -0
  10. package/lib/components/REPLWindow.js.map +1 -0
  11. package/lib/components/dataCube/DataCube.d.ts.map +1 -1
  12. package/lib/components/dataCube/DataCube.js +13 -9
  13. package/lib/components/dataCube/DataCube.js.map +1 -1
  14. package/lib/components/dataCube/editor/DataCubeEditor.d.ts.map +1 -1
  15. package/lib/components/dataCube/editor/DataCubeEditor.js +13 -90
  16. package/lib/components/dataCube/editor/DataCubeEditor.js.map +1 -1
  17. package/lib/components/dataCube/editor/DataCubeEditorCodePanel.d.ts.map +1 -1
  18. package/lib/components/dataCube/editor/DataCubeEditorCodePanel.js +3 -2
  19. package/lib/components/dataCube/editor/DataCubeEditorCodePanel.js.map +1 -1
  20. package/lib/components/dataCube/editor/DataCubeEditorColumnPropertiesPanel.d.ts.map +1 -1
  21. package/lib/components/dataCube/editor/DataCubeEditorColumnPropertiesPanel.js +237 -6
  22. package/lib/components/dataCube/editor/DataCubeEditorColumnPropertiesPanel.js.map +1 -1
  23. package/lib/components/dataCube/editor/DataCubeEditorColumnsPanel.js +2 -2
  24. package/lib/components/dataCube/editor/DataCubeEditorColumnsPanel.js.map +1 -1
  25. package/lib/components/dataCube/editor/DataCubeEditorColumnsSelector.d.ts +5 -0
  26. package/lib/components/dataCube/editor/DataCubeEditorColumnsSelector.d.ts.map +1 -1
  27. package/lib/components/dataCube/editor/DataCubeEditorColumnsSelector.js +130 -48
  28. package/lib/components/dataCube/editor/DataCubeEditorColumnsSelector.js.map +1 -1
  29. package/lib/{stores/dataCube/DataCubeDefaultConfig.d.ts → components/dataCube/editor/DataCubeEditorDeveloperPanel.d.ts} +4 -2
  30. package/lib/components/dataCube/editor/DataCubeEditorDeveloperPanel.d.ts.map +1 -0
  31. package/lib/components/dataCube/editor/DataCubeEditorDeveloperPanel.js +28 -0
  32. package/lib/components/dataCube/editor/DataCubeEditorDeveloperPanel.js.map +1 -0
  33. package/lib/components/dataCube/editor/DataCubeEditorExtendedColumnsPanel.d.ts.map +1 -1
  34. package/lib/components/dataCube/editor/DataCubeEditorExtendedColumnsPanel.js +3 -2
  35. package/lib/components/dataCube/editor/DataCubeEditorExtendedColumnsPanel.js.map +1 -1
  36. package/lib/components/dataCube/editor/DataCubeEditorFilterPanel.d.ts.map +1 -1
  37. package/lib/components/dataCube/editor/DataCubeEditorFilterPanel.js +3 -2
  38. package/lib/components/dataCube/editor/DataCubeEditorFilterPanel.js.map +1 -1
  39. package/lib/components/dataCube/editor/DataCubeEditorGeneralPropertiesPanel.d.ts.map +1 -1
  40. package/lib/components/dataCube/editor/DataCubeEditorGeneralPropertiesPanel.js +145 -5
  41. package/lib/components/dataCube/editor/DataCubeEditorGeneralPropertiesPanel.js.map +1 -1
  42. package/lib/components/dataCube/editor/DataCubeEditorHPivotsPanel.d.ts.map +1 -1
  43. package/lib/components/dataCube/editor/DataCubeEditorHPivotsPanel.js +3 -2
  44. package/lib/components/dataCube/editor/DataCubeEditorHPivotsPanel.js.map +1 -1
  45. package/lib/components/dataCube/editor/DataCubeEditorShared.d.ts +47 -0
  46. package/lib/components/dataCube/editor/DataCubeEditorShared.d.ts.map +1 -0
  47. package/lib/components/dataCube/editor/DataCubeEditorShared.js +188 -0
  48. package/lib/components/dataCube/editor/DataCubeEditorShared.js.map +1 -0
  49. package/lib/components/dataCube/editor/DataCubeEditorSortsPanel.d.ts.map +1 -1
  50. package/lib/components/dataCube/editor/DataCubeEditorSortsPanel.js +36 -3
  51. package/lib/components/dataCube/editor/DataCubeEditorSortsPanel.js.map +1 -1
  52. package/lib/components/dataCube/editor/DataCubeEditorVPivotsPanel.d.ts.map +1 -1
  53. package/lib/components/dataCube/editor/DataCubeEditorVPivotsPanel.js +3 -2
  54. package/lib/components/dataCube/editor/DataCubeEditorVPivotsPanel.js.map +1 -1
  55. package/lib/components/dataCube/grid/DataCubeGrid.d.ts +3 -0
  56. package/lib/components/dataCube/grid/DataCubeGrid.d.ts.map +1 -1
  57. package/lib/components/dataCube/grid/DataCubeGrid.js +190 -63
  58. package/lib/components/dataCube/grid/DataCubeGrid.js.map +1 -1
  59. package/lib/{stores/dataCube/DataCubeDefaultConfig.js → components/dataCube/grid/DataCubeGridShared.d.ts} +3 -2
  60. package/lib/components/dataCube/grid/DataCubeGridShared.d.ts.map +1 -0
  61. package/lib/components/dataCube/grid/DataCubeGridShared.js +25 -0
  62. package/lib/components/dataCube/grid/DataCubeGridShared.js.map +1 -0
  63. package/lib/components/dataCube/grid/menu/DataCubeGridMenu.d.ts +23 -0
  64. package/lib/components/dataCube/grid/menu/DataCubeGridMenu.d.ts.map +1 -0
  65. package/lib/components/dataCube/grid/menu/DataCubeGridMenu.js +413 -0
  66. package/lib/components/dataCube/grid/menu/DataCubeGridMenu.js.map +1 -0
  67. package/{src/stores/dataCube/DataCubeDefaultConfig.ts → lib/components/dataCube/grid/menu/DataCubeGridSortsMenu.d.ts} +4 -2
  68. package/lib/components/dataCube/grid/menu/DataCubeGridSortsMenu.d.ts.map +1 -0
  69. package/lib/components/dataCube/grid/menu/DataCubeGridSortsMenu.js +83 -0
  70. package/lib/components/dataCube/grid/menu/DataCubeGridSortsMenu.js.map +1 -0
  71. package/lib/index.css +2 -2
  72. package/lib/index.css.map +1 -1
  73. package/lib/package.json +14 -12
  74. package/lib/server/models/DataCubeQuery.d.ts +3 -5
  75. package/lib/server/models/DataCubeQuery.d.ts.map +1 -1
  76. package/lib/server/models/DataCubeQuery.js +0 -2
  77. package/lib/server/models/DataCubeQuery.js.map +1 -1
  78. package/lib/stores/{dataCube/REPLStore.d.ts → REPLStore.d.ts} +6 -4
  79. package/lib/stores/REPLStore.d.ts.map +1 -0
  80. package/lib/stores/{dataCube/REPLStore.js → REPLStore.js} +8 -5
  81. package/lib/stores/REPLStore.js.map +1 -0
  82. package/lib/stores/dataCube/{core/DataCubeEngine.d.ts → DataCubeInfrastructure.d.ts} +20 -4
  83. package/lib/stores/dataCube/DataCubeInfrastructure.d.ts.map +1 -0
  84. package/lib/stores/dataCube/{core/DataCubeEngine.js → DataCubeInfrastructure.js} +31 -3
  85. package/lib/stores/dataCube/DataCubeInfrastructure.js.map +1 -0
  86. package/lib/stores/dataCube/DataCubeState.d.ts +14 -5
  87. package/lib/stores/dataCube/DataCubeState.d.ts.map +1 -1
  88. package/lib/stores/dataCube/DataCubeState.js +37 -9
  89. package/lib/stores/dataCube/DataCubeState.js.map +1 -1
  90. package/lib/stores/dataCube/core/DataCubeConfiguration.d.ts +93 -0
  91. package/lib/stores/dataCube/core/DataCubeConfiguration.d.ts.map +1 -0
  92. package/lib/stores/dataCube/core/DataCubeConfiguration.js +167 -0
  93. package/lib/stores/dataCube/core/DataCubeConfiguration.js.map +1 -0
  94. package/lib/stores/dataCube/core/DataCubeConfigurationBuilder.d.ts +25 -0
  95. package/lib/stores/dataCube/core/DataCubeConfigurationBuilder.d.ts.map +1 -0
  96. package/lib/stores/dataCube/core/DataCubeConfigurationBuilder.js +45 -0
  97. package/lib/stores/dataCube/core/DataCubeConfigurationBuilder.js.map +1 -0
  98. package/lib/stores/dataCube/core/DataCubeCoreState.d.ts +1 -1
  99. package/lib/stores/dataCube/core/DataCubeCoreState.d.ts.map +1 -1
  100. package/lib/stores/dataCube/core/DataCubeCoreState.js +4 -4
  101. package/lib/stores/dataCube/core/DataCubeCoreState.js.map +1 -1
  102. package/lib/stores/dataCube/core/DataCubeQueryBuilder.js +12 -12
  103. package/lib/stores/dataCube/core/DataCubeQueryBuilder.js.map +1 -1
  104. package/lib/stores/dataCube/core/DataCubeQueryEngine.d.ts +99 -4
  105. package/lib/stores/dataCube/core/DataCubeQueryEngine.d.ts.map +1 -1
  106. package/lib/stores/dataCube/core/DataCubeQueryEngine.js +149 -3
  107. package/lib/stores/dataCube/core/DataCubeQueryEngine.js.map +1 -1
  108. package/lib/stores/dataCube/core/DataCubeQuerySnapshot.d.ts +19 -5
  109. package/lib/stores/dataCube/core/DataCubeQuerySnapshot.d.ts.map +1 -1
  110. package/lib/stores/dataCube/core/DataCubeQuerySnapshot.js +36 -6
  111. package/lib/stores/dataCube/core/DataCubeQuerySnapshot.js.map +1 -1
  112. package/lib/stores/dataCube/core/DataCubeQuerySnapshotBuilder.d.ts.map +1 -1
  113. package/lib/stores/dataCube/core/DataCubeQuerySnapshotBuilder.js +42 -23
  114. package/lib/stores/dataCube/core/DataCubeQuerySnapshotBuilder.js.map +1 -1
  115. package/lib/stores/dataCube/core/DataCubeQuerySnapshotManager.d.ts.map +1 -1
  116. package/lib/stores/dataCube/core/DataCubeQuerySnapshotManager.js +6 -2
  117. package/lib/stores/dataCube/core/DataCubeQuerySnapshotManager.js.map +1 -1
  118. package/lib/stores/dataCube/core/DataCubeQuerySnapshotSubscriber.d.ts +1 -3
  119. package/lib/stores/dataCube/core/DataCubeQuerySnapshotSubscriber.d.ts.map +1 -1
  120. package/lib/stores/dataCube/core/DataCubeQuerySnapshotSubscriber.js +2 -3
  121. package/lib/stores/dataCube/core/DataCubeQuerySnapshotSubscriber.js.map +1 -1
  122. package/lib/stores/dataCube/editor/DataCubeEditorCodePanelState.d.ts +3 -1
  123. package/lib/stores/dataCube/editor/DataCubeEditorCodePanelState.d.ts.map +1 -1
  124. package/lib/stores/dataCube/editor/DataCubeEditorCodePanelState.js +4 -2
  125. package/lib/stores/dataCube/editor/DataCubeEditorCodePanelState.js.map +1 -1
  126. package/lib/stores/dataCube/editor/DataCubeEditorColumnPropertiesPanelState.d.ts +36 -0
  127. package/lib/stores/dataCube/editor/DataCubeEditorColumnPropertiesPanelState.d.ts.map +1 -0
  128. package/lib/stores/dataCube/editor/DataCubeEditorColumnPropertiesPanelState.js +66 -0
  129. package/lib/stores/dataCube/editor/DataCubeEditorColumnPropertiesPanelState.js.map +1 -0
  130. package/lib/stores/dataCube/editor/DataCubeEditorColumnsSelectorState.d.ts +3 -0
  131. package/lib/stores/dataCube/editor/DataCubeEditorColumnsSelectorState.d.ts.map +1 -1
  132. package/lib/stores/dataCube/editor/DataCubeEditorColumnsSelectorState.js +10 -0
  133. package/lib/stores/dataCube/editor/DataCubeEditorColumnsSelectorState.js.map +1 -1
  134. package/lib/stores/dataCube/editor/DataCubeEditorGeneralPropertiesPanelState.d.ts +8 -3
  135. package/lib/stores/dataCube/editor/DataCubeEditorGeneralPropertiesPanelState.d.ts.map +1 -1
  136. package/lib/stores/dataCube/editor/DataCubeEditorGeneralPropertiesPanelState.js +20 -24
  137. package/lib/stores/dataCube/editor/DataCubeEditorGeneralPropertiesPanelState.js.map +1 -1
  138. package/lib/stores/dataCube/editor/DataCubeEditorHPivotPanelState.d.ts +27 -0
  139. package/lib/stores/dataCube/editor/DataCubeEditorHPivotPanelState.d.ts.map +1 -0
  140. package/lib/stores/dataCube/editor/DataCubeEditorHPivotPanelState.js +30 -0
  141. package/lib/stores/dataCube/editor/DataCubeEditorHPivotPanelState.js.map +1 -0
  142. package/lib/stores/dataCube/editor/DataCubeEditorPanelState.d.ts +1 -1
  143. package/lib/stores/dataCube/editor/DataCubeEditorPanelState.d.ts.map +1 -1
  144. package/lib/stores/dataCube/editor/DataCubeEditorSortsPanelState.d.ts +13 -6
  145. package/lib/stores/dataCube/editor/DataCubeEditorSortsPanelState.d.ts.map +1 -1
  146. package/lib/stores/dataCube/editor/DataCubeEditorSortsPanelState.js +64 -19
  147. package/lib/stores/dataCube/editor/DataCubeEditorSortsPanelState.js.map +1 -1
  148. package/lib/stores/dataCube/editor/DataCubeEditorState.d.ts +8 -4
  149. package/lib/stores/dataCube/editor/DataCubeEditorState.d.ts.map +1 -1
  150. package/lib/stores/dataCube/editor/DataCubeEditorState.js +26 -17
  151. package/lib/stores/dataCube/editor/DataCubeEditorState.js.map +1 -1
  152. package/lib/stores/dataCube/editor/DataCubeMutableConfiguration.d.ts +100 -0
  153. package/lib/stores/dataCube/editor/DataCubeMutableConfiguration.d.ts.map +1 -0
  154. package/lib/stores/dataCube/editor/DataCubeMutableConfiguration.js +450 -0
  155. package/lib/stores/dataCube/editor/DataCubeMutableConfiguration.js.map +1 -0
  156. package/lib/stores/dataCube/grid/DataCubeGridClientEngine.d.ts +39 -2
  157. package/lib/stores/dataCube/grid/DataCubeGridClientEngine.d.ts.map +1 -1
  158. package/lib/stores/dataCube/grid/DataCubeGridClientEngine.js +63 -3
  159. package/lib/stores/dataCube/grid/DataCubeGridClientEngine.js.map +1 -1
  160. package/lib/stores/dataCube/grid/DataCubeGridQueryBuilder.d.ts.map +1 -1
  161. package/lib/stores/dataCube/grid/DataCubeGridQueryBuilder.js +0 -9
  162. package/lib/stores/dataCube/grid/DataCubeGridQueryBuilder.js.map +1 -1
  163. package/lib/stores/dataCube/grid/DataCubeGridQuerySnapshotAnalyzer.d.ts +4 -1
  164. package/lib/stores/dataCube/grid/DataCubeGridQuerySnapshotAnalyzer.d.ts.map +1 -1
  165. package/lib/stores/dataCube/grid/DataCubeGridQuerySnapshotAnalyzer.js +330 -38
  166. package/lib/stores/dataCube/grid/DataCubeGridQuerySnapshotAnalyzer.js.map +1 -1
  167. package/lib/stores/dataCube/grid/DataCubeGridQuerySnapshotBuilder.d.ts.map +1 -1
  168. package/lib/stores/dataCube/grid/DataCubeGridQuerySnapshotBuilder.js +16 -28
  169. package/lib/stores/dataCube/grid/DataCubeGridQuerySnapshotBuilder.js.map +1 -1
  170. package/lib/stores/dataCube/grid/DataCubeGridState.d.ts +16 -2
  171. package/lib/stores/dataCube/grid/DataCubeGridState.d.ts.map +1 -1
  172. package/lib/stores/dataCube/grid/DataCubeGridState.js +51 -21
  173. package/lib/stores/dataCube/grid/DataCubeGridState.js.map +1 -1
  174. package/package.json +20 -18
  175. package/src/components/LegendREPLFrameworkProvider.tsx +1 -1
  176. package/src/components/REPLStoreProvider.tsx +1 -1
  177. package/src/components/REPLWindow.tsx +179 -0
  178. package/src/components/dataCube/DataCube.tsx +44 -23
  179. package/src/components/dataCube/editor/DataCubeEditor.tsx +80 -186
  180. package/src/components/dataCube/editor/DataCubeEditorCodePanel.tsx +4 -2
  181. package/src/components/dataCube/editor/DataCubeEditorColumnPropertiesPanel.tsx +1044 -13
  182. package/src/components/dataCube/editor/DataCubeEditorColumnsPanel.tsx +2 -2
  183. package/src/components/dataCube/editor/DataCubeEditorColumnsSelector.tsx +264 -51
  184. package/src/components/dataCube/editor/DataCubeEditorDeveloperPanel.tsx +43 -0
  185. package/src/components/dataCube/editor/DataCubeEditorExtendedColumnsPanel.tsx +4 -2
  186. package/src/components/dataCube/editor/DataCubeEditorFilterPanel.tsx +4 -2
  187. package/src/components/dataCube/editor/DataCubeEditorGeneralPropertiesPanel.tsx +743 -13
  188. package/src/components/dataCube/editor/DataCubeEditorHPivotsPanel.tsx +4 -2
  189. package/src/components/dataCube/editor/DataCubeEditorShared.tsx +484 -0
  190. package/src/components/dataCube/editor/DataCubeEditorSortsPanel.tsx +103 -4
  191. package/src/components/dataCube/editor/DataCubeEditorVPivotsPanel.tsx +4 -2
  192. package/src/components/dataCube/grid/DataCubeGrid.tsx +314 -120
  193. package/src/components/dataCube/grid/DataCubeGridShared.tsx +45 -0
  194. package/src/components/dataCube/grid/menu/DataCubeGridMenu.tsx +441 -0
  195. package/src/components/dataCube/grid/menu/DataCubeGridSortsMenu.tsx +119 -0
  196. package/src/server/models/DataCubeQuery.ts +2 -6
  197. package/src/stores/{dataCube/REPLStore.ts → REPLStore.ts} +9 -6
  198. package/src/stores/dataCube/{core/DataCubeEngine.ts → DataCubeInfrastructure.ts} +40 -3
  199. package/src/stores/dataCube/DataCubeState.ts +44 -10
  200. package/src/stores/dataCube/core/DataCubeConfiguration.ts +220 -0
  201. package/src/stores/dataCube/core/DataCubeConfigurationBuilder.ts +60 -0
  202. package/src/stores/dataCube/core/DataCubeCoreState.ts +7 -4
  203. package/src/stores/dataCube/core/DataCubeQueryBuilder.ts +18 -18
  204. package/src/stores/dataCube/core/DataCubeQueryEngine.ts +157 -4
  205. package/src/stores/dataCube/core/DataCubeQuerySnapshot.ts +43 -6
  206. package/src/stores/dataCube/core/DataCubeQuerySnapshotBuilder.ts +49 -29
  207. package/src/stores/dataCube/core/DataCubeQuerySnapshotManager.ts +9 -2
  208. package/src/stores/dataCube/core/DataCubeQuerySnapshotSubscriber.ts +6 -5
  209. package/src/stores/dataCube/editor/DataCubeEditorCodePanelState.ts +5 -2
  210. package/src/stores/dataCube/editor/DataCubeEditorColumnPropertiesPanelState.ts +96 -0
  211. package/src/stores/dataCube/editor/DataCubeEditorColumnsSelectorState.ts +12 -0
  212. package/src/stores/dataCube/editor/DataCubeEditorGeneralPropertiesPanelState.ts +31 -28
  213. package/src/stores/dataCube/editor/DataCubeEditorHPivotPanelState.ts +43 -0
  214. package/src/stores/dataCube/editor/DataCubeEditorPanelState.ts +1 -1
  215. package/src/stores/dataCube/editor/DataCubeEditorSortsPanelState.ts +92 -25
  216. package/src/stores/dataCube/editor/DataCubeEditorState.ts +32 -18
  217. package/src/stores/dataCube/editor/DataCubeMutableConfiguration.ts +641 -0
  218. package/src/stores/dataCube/grid/DataCubeGridClientEngine.ts +88 -3
  219. package/src/stores/dataCube/grid/DataCubeGridQueryBuilder.ts +0 -10
  220. package/src/stores/dataCube/grid/DataCubeGridQuerySnapshotAnalyzer.tsx +494 -45
  221. package/src/stores/dataCube/grid/DataCubeGridQuerySnapshotBuilder.ts +16 -36
  222. package/src/stores/dataCube/grid/DataCubeGridState.ts +73 -20
  223. package/tsconfig.json +13 -3
  224. package/lib/stores/dataCube/DataCubeDefaultConfig.d.ts.map +0 -1
  225. package/lib/stores/dataCube/DataCubeDefaultConfig.js.map +0 -1
  226. package/lib/stores/dataCube/REPLStore.d.ts.map +0 -1
  227. package/lib/stores/dataCube/REPLStore.js.map +0 -1
  228. package/lib/stores/dataCube/core/DataCubeEngine.d.ts.map +0 -1
  229. package/lib/stores/dataCube/core/DataCubeEngine.js.map +0 -1
@@ -0,0 +1,441 @@
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 type {
18
+ GetContextMenuItemsParams,
19
+ GetMainMenuItemsParams,
20
+ MenuItemDef,
21
+ } from '@ag-grid-community/core';
22
+ import type { DataCubeState } from '../../../../stores/dataCube/DataCubeState.js';
23
+ import { buildGridSortsMenu } from './DataCubeGridSortsMenu.js';
24
+ import { WIP_GridMenuItem } from '../DataCubeGridShared.js';
25
+ import {
26
+ DataCubeColumnPinPlacement,
27
+ DEFAULT_COLUMN_MIN_WIDTH,
28
+ } from '../../../../stores/dataCube/core/DataCubeQueryEngine.js';
29
+ import { isNonNullable } from '@finos/legend-shared';
30
+
31
+ export function buildGridMenu(
32
+ params:
33
+ | GetContextMenuItemsParams<unknown, { dataCube: DataCubeState }>
34
+ | GetMainMenuItemsParams<unknown, { dataCube: DataCubeState }>,
35
+ ): (string | MenuItemDef)[] {
36
+ const context = params.context;
37
+ const dataCube = context.dataCube;
38
+ const editor = dataCube.editor;
39
+ const column = params.column ?? undefined;
40
+ const columnConfiguration = editor.columnProperties.getColumnConfiguration(
41
+ column?.getColId(),
42
+ );
43
+ const value: unknown = 'value' in params ? params.value : undefined;
44
+
45
+ const result: (string | MenuItemDef)[] = [
46
+ {
47
+ name: 'Export',
48
+ menuItem: WIP_GridMenuItem,
49
+ cssClasses: ['!opacity-100'],
50
+ subMenu: [
51
+ {
52
+ name: 'HTML',
53
+ menuItem: WIP_GridMenuItem,
54
+ cssClasses: ['!opacity-100'],
55
+ disabled: true,
56
+ },
57
+ {
58
+ name: 'Plain Text',
59
+ menuItem: WIP_GridMenuItem,
60
+ cssClasses: ['!opacity-100'],
61
+ disabled: true,
62
+ },
63
+ {
64
+ name: 'PDF',
65
+ menuItem: WIP_GridMenuItem,
66
+ cssClasses: ['!opacity-100'],
67
+ disabled: true,
68
+ },
69
+ {
70
+ name: 'Excel',
71
+ menuItem: WIP_GridMenuItem,
72
+ cssClasses: ['!opacity-100'],
73
+ disabled: true,
74
+ },
75
+ {
76
+ name: 'CSV',
77
+ menuItem: WIP_GridMenuItem,
78
+ cssClasses: ['!opacity-100'],
79
+ disabled: true,
80
+ },
81
+ 'separator',
82
+ {
83
+ name: 'DataCube Specification',
84
+ menuItem: WIP_GridMenuItem,
85
+ cssClasses: ['!opacity-100'],
86
+ disabled: true,
87
+ },
88
+ ],
89
+ },
90
+ {
91
+ name: 'Email',
92
+ menuItem: WIP_GridMenuItem,
93
+ cssClasses: ['!opacity-100'],
94
+ subMenu: [
95
+ {
96
+ name: 'HTML',
97
+ menuItem: WIP_GridMenuItem,
98
+ cssClasses: ['!opacity-100'],
99
+ disabled: true,
100
+ },
101
+ {
102
+ name: 'Plain Text',
103
+ menuItem: WIP_GridMenuItem,
104
+ cssClasses: ['!opacity-100'],
105
+ disabled: true,
106
+ },
107
+ 'separator',
108
+ {
109
+ name: 'HTML Attachment',
110
+ menuItem: WIP_GridMenuItem,
111
+ cssClasses: ['!opacity-100'],
112
+ disabled: true,
113
+ },
114
+ {
115
+ name: 'Plain Text',
116
+ menuItem: WIP_GridMenuItem,
117
+ cssClasses: ['!opacity-100'],
118
+ disabled: true,
119
+ },
120
+ {
121
+ name: 'PDF Attachment',
122
+ menuItem: WIP_GridMenuItem,
123
+ cssClasses: ['!opacity-100'],
124
+ disabled: true,
125
+ },
126
+ {
127
+ name: 'Excel Attachment',
128
+ menuItem: WIP_GridMenuItem,
129
+ cssClasses: ['!opacity-100'],
130
+ disabled: true,
131
+ },
132
+ {
133
+ name: 'CSV Attachment',
134
+ menuItem: WIP_GridMenuItem,
135
+ cssClasses: ['!opacity-100'],
136
+ disabled: true,
137
+ },
138
+ {
139
+ name: 'DataCube Specification Attachment',
140
+ menuItem: WIP_GridMenuItem,
141
+ cssClasses: ['!opacity-100'],
142
+ disabled: true,
143
+ },
144
+ ],
145
+ },
146
+ {
147
+ name: 'Copy',
148
+ menuItem: WIP_GridMenuItem,
149
+ cssClasses: ['!opacity-100'],
150
+ subMenu: [
151
+ {
152
+ name: 'Plain Text',
153
+ menuItem: WIP_GridMenuItem,
154
+ cssClasses: ['!opacity-100'],
155
+ disabled: true,
156
+ },
157
+ {
158
+ name: 'Selected Row(s) as Plain Text',
159
+ menuItem: WIP_GridMenuItem,
160
+ cssClasses: ['!opacity-100'],
161
+ disabled: true,
162
+ },
163
+ {
164
+ name: 'Selected Column as Plain Text',
165
+ menuItem: WIP_GridMenuItem,
166
+ cssClasses: ['!opacity-100'],
167
+ disabled: true,
168
+ },
169
+ ],
170
+ },
171
+ 'separator',
172
+ buildGridSortsMenu(editor, column, value),
173
+ {
174
+ name: 'Filter',
175
+ menuItem: WIP_GridMenuItem,
176
+ disabled: true,
177
+ cssClasses: ['!opacity-100'],
178
+ subMenu: [
179
+ ...(column && value
180
+ ? [
181
+ {
182
+ name: `Add Filter: ${column.getColId()} = {value}`,
183
+ menuItem: WIP_GridMenuItem,
184
+ cssClasses: ['!opacity-100'],
185
+ disabled: true,
186
+ },
187
+ {
188
+ name: `More Filters on ${column.getColId()}...`,
189
+ menuItem: WIP_GridMenuItem,
190
+ cssClasses: ['!opacity-100'],
191
+ disabled: true,
192
+ subMenu: [], // TODO
193
+ },
194
+ 'separator',
195
+ ]
196
+ : []),
197
+ {
198
+ name: 'Filters...',
199
+ },
200
+ {
201
+ name: 'Clear All Filters',
202
+ },
203
+ ],
204
+ },
205
+ {
206
+ name: 'Pivot',
207
+ menuItem: WIP_GridMenuItem,
208
+ disabled: true,
209
+ cssClasses: ['!opacity-100'],
210
+ subMenu: [
211
+ ...(column
212
+ ? [
213
+ {
214
+ name: `VPivot on ${column.getColId()}`,
215
+ menuItem: WIP_GridMenuItem,
216
+ cssClasses: ['!opacity-100'],
217
+ disabled: true,
218
+ },
219
+ {
220
+ name: `Add VPivot on ${column.getColId()}`,
221
+ menuItem: WIP_GridMenuItem,
222
+ cssClasses: ['!opacity-100'],
223
+ disabled: true,
224
+ },
225
+ {
226
+ name: `Remove VPivot on ${column.getColId()}`,
227
+ menuItem: WIP_GridMenuItem,
228
+ cssClasses: ['!opacity-100'],
229
+ disabled: true,
230
+ },
231
+ 'separator',
232
+ ]
233
+ : []),
234
+ {
235
+ name: `Clear All VPivots`,
236
+ menuItem: WIP_GridMenuItem,
237
+ cssClasses: ['!opacity-100'],
238
+ disabled: true,
239
+ },
240
+ ],
241
+ },
242
+ {
243
+ name: 'Heatmap',
244
+ menuItem: WIP_GridMenuItem,
245
+ cssClasses: ['!opacity-100'],
246
+ disabled: !column,
247
+ subMenu: column
248
+ ? [
249
+ {
250
+ name: `Add to ${column.getColId()}`,
251
+ menuItem: WIP_GridMenuItem,
252
+ cssClasses: ['!opacity-100'],
253
+ disabled: true,
254
+ },
255
+ {
256
+ name: `Remove from ${column.getColId()}`,
257
+ menuItem: WIP_GridMenuItem,
258
+ cssClasses: ['!opacity-100'],
259
+ disabled: true,
260
+ },
261
+ ]
262
+ : [],
263
+ },
264
+ {
265
+ name: 'Extended Columns',
266
+ menuItem: WIP_GridMenuItem,
267
+ cssClasses: ['!opacity-100'],
268
+ disabled: true,
269
+ subMenu: [
270
+ {
271
+ name: `Add New Column...`,
272
+ menuItem: WIP_GridMenuItem,
273
+ cssClasses: ['!opacity-100'],
274
+ disabled: true,
275
+ },
276
+ {
277
+ name: `Edit {column}`,
278
+ menuItem: WIP_GridMenuItem,
279
+ cssClasses: ['!opacity-100'],
280
+ disabled: true,
281
+ },
282
+ {
283
+ name: `Remove {column}`,
284
+ menuItem: WIP_GridMenuItem,
285
+ cssClasses: ['!opacity-100'],
286
+ disabled: true,
287
+ },
288
+ ],
289
+ },
290
+ {
291
+ name: 'Custom Groupings',
292
+ menuItem: WIP_GridMenuItem,
293
+ cssClasses: ['!opacity-100'],
294
+ disabled: true,
295
+ subMenu: [
296
+ {
297
+ name: `Add New Grouping...`,
298
+ menuItem: WIP_GridMenuItem,
299
+ cssClasses: ['!opacity-100'],
300
+ disabled: true,
301
+ },
302
+ {
303
+ name: `Edit {column}`,
304
+ menuItem: WIP_GridMenuItem,
305
+ cssClasses: ['!opacity-100'],
306
+ disabled: true,
307
+ },
308
+ {
309
+ name: `Remove {column}`,
310
+ menuItem: WIP_GridMenuItem,
311
+ cssClasses: ['!opacity-100'],
312
+ disabled: true,
313
+ },
314
+ ],
315
+ },
316
+ 'separator',
317
+ {
318
+ name: 'Resize',
319
+ subMenu: [
320
+ {
321
+ name: `Auto-size to Fit Content`,
322
+ action: () =>
323
+ params.api.autoSizeColumns(
324
+ [column?.getColId()].filter(isNonNullable),
325
+ ),
326
+ disabled: !column,
327
+ },
328
+ {
329
+ name: `Minimize Column`,
330
+ action: () => {
331
+ if (column) {
332
+ params.api.setColumnWidths([
333
+ {
334
+ key: column.getColId(),
335
+ newWidth:
336
+ columnConfiguration?.minWidth ?? DEFAULT_COLUMN_MIN_WIDTH,
337
+ },
338
+ ]);
339
+ }
340
+ },
341
+ disabled: !column,
342
+ },
343
+ 'separator',
344
+ {
345
+ name: `Auto-size All Columns`,
346
+ action: () => params.api.autoSizeAllColumns(),
347
+ },
348
+ {
349
+ name: `Minimize All Columns`,
350
+ action: () => {
351
+ params.api.setColumnWidths(
352
+ dataCube.editor.columnProperties.columns.map((col) => ({
353
+ key: col.name,
354
+ newWidth:
355
+ columnConfiguration?.minWidth ?? DEFAULT_COLUMN_MIN_WIDTH,
356
+ })),
357
+ );
358
+ },
359
+ },
360
+ {
361
+ name: `Size Grid to Fit Screen`,
362
+ action: () => params.api.sizeColumnsToFit(),
363
+ },
364
+ ],
365
+ },
366
+ {
367
+ name: 'Pin',
368
+ subMenu: [
369
+ {
370
+ name: `Pin Left`,
371
+ disabled: !column || column.isPinnedLeft(),
372
+ checked: Boolean(column?.isPinnedLeft()),
373
+ action: () => {
374
+ columnConfiguration?.setPinned(DataCubeColumnPinPlacement.LEFT);
375
+ editor.applyChanges();
376
+ },
377
+ },
378
+ {
379
+ name: `Pin Right`,
380
+ disabled: !column || column.isPinnedRight(),
381
+ checked: Boolean(column?.isPinnedRight()),
382
+ action: () => {
383
+ columnConfiguration?.setPinned(DataCubeColumnPinPlacement.RIGHT);
384
+ editor.applyChanges();
385
+ },
386
+ },
387
+ {
388
+ name: `Unpin`,
389
+ disabled: !column?.isPinned(),
390
+ action: () => {
391
+ columnConfiguration?.setPinned(undefined);
392
+ editor.applyChanges();
393
+ },
394
+ },
395
+ 'separator',
396
+ {
397
+ name: `Remove All Pinnings`,
398
+ disabled: editor.columnProperties.columns.every(
399
+ (col) => col.pinned === undefined,
400
+ ),
401
+ action: () => {
402
+ editor.columnProperties.columns.forEach((col) =>
403
+ col.setPinned(undefined),
404
+ );
405
+ editor.applyChanges();
406
+ },
407
+ },
408
+ ],
409
+ },
410
+ {
411
+ name: 'Hide',
412
+ menuItem: WIP_GridMenuItem,
413
+ cssClasses: ['!opacity-100'],
414
+ disabled: true,
415
+ },
416
+ 'separator',
417
+ {
418
+ name: 'Show Plot...',
419
+ menuItem: WIP_GridMenuItem,
420
+ cssClasses: ['!opacity-100'],
421
+ disabled: true,
422
+ },
423
+ {
424
+ name: 'Show TreeMap...',
425
+ menuItem: WIP_GridMenuItem,
426
+ cssClasses: ['!opacity-100'],
427
+ disabled: true,
428
+ },
429
+ 'separator',
430
+ {
431
+ name: 'Properties...',
432
+ disabled: editor.isPanelOpen,
433
+ action: () => {
434
+ if (!editor.isPanelOpen) {
435
+ editor.openPanel();
436
+ }
437
+ },
438
+ },
439
+ ];
440
+ return result;
441
+ }
@@ -0,0 +1,119 @@
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 type { Column, MenuItemDef } from '@ag-grid-community/core';
18
+ import type { DataCubeEditorState } from '../../../../stores/dataCube/editor/DataCubeEditorState.js';
19
+ import { DataCubeQuerySnapshotSortOperation } from '../../../../stores/dataCube/core/DataCubeQuerySnapshot.js';
20
+ import { WIP_GridMenuItem } from '../DataCubeGridShared.js';
21
+
22
+ export function buildGridSortsMenu(
23
+ editor: DataCubeEditorState,
24
+ column: Column | undefined,
25
+ value: unknown,
26
+ ): MenuItemDef {
27
+ if (!column) {
28
+ return {
29
+ name: 'Sort',
30
+ disabled: true,
31
+ subMenu: [],
32
+ };
33
+ }
34
+
35
+ return {
36
+ name: 'Sort',
37
+ subMenu: [
38
+ {
39
+ name: 'Ascending',
40
+ disabled: !editor.sorts.getActionableSortColumn(
41
+ column.getColId(),
42
+ DataCubeQuerySnapshotSortOperation.ASCENDING,
43
+ ),
44
+ action: () =>
45
+ editor.sorts.sortByColumn(
46
+ column.getColId(),
47
+ DataCubeQuerySnapshotSortOperation.ASCENDING,
48
+ ),
49
+ },
50
+ {
51
+ name: 'Ascending Absolute',
52
+ menuItem: WIP_GridMenuItem,
53
+ cssClasses: ['!opacity-100'],
54
+ disabled: true,
55
+ },
56
+ {
57
+ name: 'Descending',
58
+ disabled: !editor.sorts.getActionableSortColumn(
59
+ column.getColId(),
60
+ DataCubeQuerySnapshotSortOperation.DESCENDING,
61
+ ),
62
+ action: () =>
63
+ editor.sorts.sortByColumn(
64
+ column.getColId(),
65
+ DataCubeQuerySnapshotSortOperation.DESCENDING,
66
+ ),
67
+ },
68
+ {
69
+ name: 'Descending Absolute',
70
+ menuItem: WIP_GridMenuItem,
71
+ cssClasses: ['!opacity-100'],
72
+ disabled: true,
73
+ },
74
+ 'separator',
75
+ {
76
+ name: 'Add Ascending',
77
+ disabled: !editor.sorts.getActionableSortColumn(
78
+ column.getColId(),
79
+ DataCubeQuerySnapshotSortOperation.ASCENDING,
80
+ ),
81
+ action: () =>
82
+ editor.sorts.addSortByColumn(
83
+ column.getColId(),
84
+ DataCubeQuerySnapshotSortOperation.ASCENDING,
85
+ ),
86
+ },
87
+ {
88
+ name: 'Add Ascending Absolute',
89
+ menuItem: WIP_GridMenuItem,
90
+ cssClasses: ['!opacity-100'],
91
+ disabled: true,
92
+ },
93
+ {
94
+ name: 'Add Descending',
95
+ disabled: !editor.sorts.getActionableSortColumn(
96
+ column.getColId(),
97
+ DataCubeQuerySnapshotSortOperation.DESCENDING,
98
+ ),
99
+ action: () =>
100
+ editor.sorts.addSortByColumn(
101
+ column.getColId(),
102
+ DataCubeQuerySnapshotSortOperation.DESCENDING,
103
+ ),
104
+ },
105
+ {
106
+ name: 'Add Descending Absolute',
107
+ menuItem: WIP_GridMenuItem,
108
+ cssClasses: ['!opacity-100'],
109
+ disabled: true,
110
+ },
111
+ 'separator',
112
+ {
113
+ name: 'Clear All Sorts',
114
+ disabled: editor.sorts.columnsSelector.selectedColumns.length === 0,
115
+ action: () => editor.sorts.clearAllSorts(),
116
+ },
117
+ ],
118
+ };
119
+ }
@@ -97,21 +97,17 @@ function serializeQuerySource(
97
97
  );
98
98
  }
99
99
 
100
- export class DataCubeConfiguration {
101
- // TODO
102
- }
103
-
104
100
  export class DataCubeQuery {
105
101
  name!: string;
106
102
  query!: string;
107
103
  partialQuery!: string;
108
104
  source!: DataCubeQuerySource;
109
- configuration!: DataCubeConfiguration;
105
+ configuration?: PlainObject | undefined;
110
106
 
111
107
  constructor(
112
108
  name: string,
113
109
  query: string,
114
- configuration: DataCubeConfiguration,
110
+ configuration?: PlainObject | undefined,
115
111
  ) {
116
112
  this.name = name;
117
113
  this.query = query;
@@ -14,22 +14,24 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- import type { LegendREPLApplicationStore } from '../LegendREPLBaseStore.js';
18
- import { REPLServerClient } from '../../server/REPLServerClient.js';
17
+ import type { LegendREPLApplicationStore } from './LegendREPLBaseStore.js';
18
+ import { REPLServerClient } from '../server/REPLServerClient.js';
19
19
  import { NetworkClient } from '@finos/legend-shared';
20
20
  import { makeObservable, observable } from 'mobx';
21
- import { DataCubeState } from './DataCubeState.js';
21
+ import { DataCubeState } from './dataCube/DataCubeState.js';
22
+ import { DataCubeInfrastructure } from './dataCube/DataCubeInfrastructure.js';
22
23
 
23
24
  export class REPLStore {
24
25
  readonly applicationStore: LegendREPLApplicationStore;
25
26
  readonly client: REPLServerClient;
26
27
 
28
+ dataCubeInfrastructure!: DataCubeInfrastructure;
27
29
  // TODO: when we support multi-view, we would need to support multiple states
28
- dataCubeState!: DataCubeState;
30
+ dataCube!: DataCubeState;
29
31
 
30
32
  constructor(applicationStore: LegendREPLApplicationStore) {
31
33
  makeObservable(this, {
32
- dataCubeState: observable,
34
+ dataCube: observable,
33
35
  });
34
36
  this.applicationStore = applicationStore;
35
37
  this.client = new REPLServerClient(
@@ -40,6 +42,7 @@ export class REPLStore {
40
42
  : this.applicationStore.config.replUrl,
41
43
  }),
42
44
  );
43
- this.dataCubeState = new DataCubeState(this);
45
+ this.dataCubeInfrastructure = new DataCubeInfrastructure(this);
46
+ this.dataCube = new DataCubeState(this);
44
47
  }
45
48
  }
@@ -23,14 +23,17 @@ import {
23
23
  V1_serializeExecutionResult,
24
24
  V1_buildExecutionResult,
25
25
  } from '@finos/legend-graph';
26
- import type { REPLServerClient } from '../../../server/REPLServerClient.js';
26
+ import type { REPLServerClient } from '../../server/REPLServerClient.js';
27
27
  import {
28
28
  DataCubeGetBaseQueryResult,
29
29
  type CompletionItem,
30
- } from '../../../server/models/DataCubeEngineModels.js';
30
+ } from '../../server/models/DataCubeEngineModels.js';
31
31
  import { guaranteeType } from '@finos/legend-shared';
32
+ import type { LegendREPLApplicationStore } from '../LegendREPLBaseStore.js';
33
+ import type { REPLStore } from '../REPLStore.js';
34
+ import { action, makeObservable, observable } from 'mobx';
32
35
 
33
- export class DataCubeEngine {
36
+ class DataCubeEngine {
34
37
  private readonly client: REPLServerClient;
35
38
 
36
39
  constructor(client: REPLServerClient) {
@@ -79,3 +82,37 @@ export class DataCubeEngine {
79
82
  );
80
83
  }
81
84
  }
85
+
86
+ /**
87
+ * Infrastructure for data cube, can be shared across multiple data cube states
88
+ */
89
+ export class DataCubeInfrastructure {
90
+ readonly replStore: REPLStore;
91
+ readonly application: LegendREPLApplicationStore;
92
+ readonly engine: DataCubeEngine;
93
+
94
+ gridClientRowBuffer = 50;
95
+ enableDebugMode = false;
96
+
97
+ constructor(replStore: REPLStore) {
98
+ makeObservable(this, {
99
+ gridClientRowBuffer: observable,
100
+ setGridClientRowBuffer: action,
101
+
102
+ enableDebugMode: observable,
103
+ setEnableDebugMode: action,
104
+ });
105
+
106
+ this.replStore = replStore;
107
+ this.application = replStore.applicationStore;
108
+ this.engine = new DataCubeEngine(replStore.client);
109
+ }
110
+
111
+ setGridClientRowBuffer(rowBuffer: number): void {
112
+ this.gridClientRowBuffer = rowBuffer;
113
+ }
114
+
115
+ setEnableDebugMode(enableDebugMode: boolean): void {
116
+ this.enableDebugMode = enableDebugMode;
117
+ }
118
+ }