@finos/legend-application-repl 0.0.29 → 0.0.31

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 (189) hide show
  1. package/lib/components/dataCube/DataCube.d.ts.map +1 -1
  2. package/lib/components/dataCube/DataCube.js +13 -9
  3. package/lib/components/dataCube/DataCube.js.map +1 -1
  4. package/lib/components/dataCube/editor/DataCubeEditor.d.ts.map +1 -1
  5. package/lib/components/dataCube/editor/DataCubeEditor.js +4 -2
  6. package/lib/components/dataCube/editor/DataCubeEditor.js.map +1 -1
  7. package/lib/components/dataCube/editor/DataCubeEditorCodePanel.js +2 -2
  8. package/lib/components/dataCube/editor/DataCubeEditorCodePanel.js.map +1 -1
  9. package/lib/components/dataCube/editor/DataCubeEditorColumnPropertiesPanel.d.ts.map +1 -1
  10. package/lib/components/dataCube/editor/DataCubeEditorColumnPropertiesPanel.js +163 -6
  11. package/lib/components/dataCube/editor/DataCubeEditorColumnPropertiesPanel.js.map +1 -1
  12. package/lib/components/dataCube/editor/DataCubeEditorColumnsPanel.js +2 -2
  13. package/lib/components/dataCube/editor/DataCubeEditorColumnsPanel.js.map +1 -1
  14. package/lib/components/dataCube/editor/DataCubeEditorColumnsSelector.d.ts +5 -0
  15. package/lib/components/dataCube/editor/DataCubeEditorColumnsSelector.d.ts.map +1 -1
  16. package/lib/components/dataCube/editor/DataCubeEditorColumnsSelector.js +130 -47
  17. package/lib/components/dataCube/editor/DataCubeEditorColumnsSelector.js.map +1 -1
  18. package/lib/{stores/dataCube/DataCubeDefaultConfig.d.ts → components/dataCube/editor/DataCubeEditorDeveloperPanel.d.ts} +4 -2
  19. package/lib/components/dataCube/editor/DataCubeEditorDeveloperPanel.d.ts.map +1 -0
  20. package/lib/components/dataCube/editor/DataCubeEditorDeveloperPanel.js +27 -0
  21. package/lib/components/dataCube/editor/DataCubeEditorDeveloperPanel.js.map +1 -0
  22. package/lib/components/dataCube/editor/DataCubeEditorExtendedColumnsPanel.js +2 -2
  23. package/lib/components/dataCube/editor/DataCubeEditorExtendedColumnsPanel.js.map +1 -1
  24. package/lib/components/dataCube/editor/DataCubeEditorFilterPanel.js +2 -2
  25. package/lib/components/dataCube/editor/DataCubeEditorFilterPanel.js.map +1 -1
  26. package/lib/components/dataCube/editor/DataCubeEditorGeneralPropertiesPanel.d.ts.map +1 -1
  27. package/lib/components/dataCube/editor/DataCubeEditorGeneralPropertiesPanel.js +104 -5
  28. package/lib/components/dataCube/editor/DataCubeEditorGeneralPropertiesPanel.js.map +1 -1
  29. package/lib/components/dataCube/editor/DataCubeEditorHPivotsPanel.js +2 -2
  30. package/lib/components/dataCube/editor/DataCubeEditorHPivotsPanel.js.map +1 -1
  31. package/lib/components/dataCube/editor/DataCubeEditorShared.d.ts +46 -0
  32. package/lib/components/dataCube/editor/DataCubeEditorShared.d.ts.map +1 -0
  33. package/lib/components/dataCube/editor/DataCubeEditorShared.js +171 -0
  34. package/lib/components/dataCube/editor/DataCubeEditorShared.js.map +1 -0
  35. package/lib/components/dataCube/editor/DataCubeEditorSortsPanel.d.ts.map +1 -1
  36. package/lib/components/dataCube/editor/DataCubeEditorSortsPanel.js +36 -3
  37. package/lib/components/dataCube/editor/DataCubeEditorSortsPanel.js.map +1 -1
  38. package/lib/components/dataCube/editor/DataCubeEditorVPivotsPanel.js +2 -2
  39. package/lib/components/dataCube/editor/DataCubeEditorVPivotsPanel.js.map +1 -1
  40. package/lib/components/dataCube/grid/DataCubeGrid.d.ts.map +1 -1
  41. package/lib/components/dataCube/grid/DataCubeGrid.js +42 -26
  42. package/lib/components/dataCube/grid/DataCubeGrid.js.map +1 -1
  43. package/{src/stores/dataCube/DataCubeDefaultConfig.ts → lib/components/dataCube/grid/DataCubeGridShared.d.ts} +3 -2
  44. package/lib/components/dataCube/grid/DataCubeGridShared.d.ts.map +1 -0
  45. package/lib/components/dataCube/grid/DataCubeGridShared.js +25 -0
  46. package/lib/components/dataCube/grid/DataCubeGridShared.js.map +1 -0
  47. package/lib/components/dataCube/grid/menu/DataCubeGridMenu.d.ts +23 -0
  48. package/lib/components/dataCube/grid/menu/DataCubeGridMenu.d.ts.map +1 -0
  49. package/lib/components/dataCube/grid/menu/DataCubeGridMenu.js +382 -0
  50. package/lib/components/dataCube/grid/menu/DataCubeGridMenu.js.map +1 -0
  51. package/lib/{stores/dataCube/DataCubeDefaultConfig.js → components/dataCube/grid/menu/DataCubeGridSortsMenu.d.ts} +4 -2
  52. package/lib/components/dataCube/grid/menu/DataCubeGridSortsMenu.d.ts.map +1 -0
  53. package/lib/components/dataCube/grid/menu/DataCubeGridSortsMenu.js +83 -0
  54. package/lib/components/dataCube/grid/menu/DataCubeGridSortsMenu.js.map +1 -0
  55. package/lib/index.css +2 -2
  56. package/lib/index.css.map +1 -1
  57. package/lib/package.json +4 -2
  58. package/lib/server/models/DataCubeQuery.d.ts +3 -5
  59. package/lib/server/models/DataCubeQuery.d.ts.map +1 -1
  60. package/lib/server/models/DataCubeQuery.js +0 -2
  61. package/lib/server/models/DataCubeQuery.js.map +1 -1
  62. package/lib/stores/dataCube/DataCubeState.d.ts +11 -2
  63. package/lib/stores/dataCube/DataCubeState.d.ts.map +1 -1
  64. package/lib/stores/dataCube/DataCubeState.js +34 -5
  65. package/lib/stores/dataCube/DataCubeState.js.map +1 -1
  66. package/lib/stores/dataCube/REPLStore.d.ts +1 -1
  67. package/lib/stores/dataCube/REPLStore.d.ts.map +1 -1
  68. package/lib/stores/dataCube/REPLStore.js +3 -3
  69. package/lib/stores/dataCube/REPLStore.js.map +1 -1
  70. package/lib/stores/dataCube/core/DataCubeConfiguration.d.ts +89 -0
  71. package/lib/stores/dataCube/core/DataCubeConfiguration.d.ts.map +1 -0
  72. package/lib/stores/dataCube/core/DataCubeConfiguration.js +161 -0
  73. package/lib/stores/dataCube/core/DataCubeConfiguration.js.map +1 -0
  74. package/lib/stores/dataCube/core/DataCubeConfigurationBuilder.d.ts +25 -0
  75. package/lib/stores/dataCube/core/DataCubeConfigurationBuilder.d.ts.map +1 -0
  76. package/lib/stores/dataCube/core/DataCubeConfigurationBuilder.js +44 -0
  77. package/lib/stores/dataCube/core/DataCubeConfigurationBuilder.js.map +1 -0
  78. package/lib/stores/dataCube/core/DataCubeCoreState.d.ts.map +1 -1
  79. package/lib/stores/dataCube/core/DataCubeCoreState.js +3 -3
  80. package/lib/stores/dataCube/core/DataCubeCoreState.js.map +1 -1
  81. package/lib/stores/dataCube/core/DataCubeQueryBuilder.js +8 -8
  82. package/lib/stores/dataCube/core/DataCubeQueryBuilder.js.map +1 -1
  83. package/lib/stores/dataCube/core/DataCubeQueryEngine.d.ts +82 -4
  84. package/lib/stores/dataCube/core/DataCubeQueryEngine.d.ts.map +1 -1
  85. package/lib/stores/dataCube/core/DataCubeQueryEngine.js +131 -3
  86. package/lib/stores/dataCube/core/DataCubeQueryEngine.js.map +1 -1
  87. package/lib/stores/dataCube/core/DataCubeQuerySnapshot.d.ts +19 -5
  88. package/lib/stores/dataCube/core/DataCubeQuerySnapshot.d.ts.map +1 -1
  89. package/lib/stores/dataCube/core/DataCubeQuerySnapshot.js +36 -6
  90. package/lib/stores/dataCube/core/DataCubeQuerySnapshot.js.map +1 -1
  91. package/lib/stores/dataCube/core/DataCubeQuerySnapshotBuilder.d.ts.map +1 -1
  92. package/lib/stores/dataCube/core/DataCubeQuerySnapshotBuilder.js +37 -18
  93. package/lib/stores/dataCube/core/DataCubeQuerySnapshotBuilder.js.map +1 -1
  94. package/lib/stores/dataCube/core/DataCubeQuerySnapshotManager.d.ts.map +1 -1
  95. package/lib/stores/dataCube/core/DataCubeQuerySnapshotManager.js +6 -2
  96. package/lib/stores/dataCube/core/DataCubeQuerySnapshotManager.js.map +1 -1
  97. package/lib/stores/dataCube/editor/DataCubeEditorCodePanelState.d.ts +3 -1
  98. package/lib/stores/dataCube/editor/DataCubeEditorCodePanelState.d.ts.map +1 -1
  99. package/lib/stores/dataCube/editor/DataCubeEditorCodePanelState.js +4 -2
  100. package/lib/stores/dataCube/editor/DataCubeEditorCodePanelState.js.map +1 -1
  101. package/lib/stores/dataCube/editor/DataCubeEditorColumnPropertiesPanelState.d.ts +33 -0
  102. package/lib/stores/dataCube/editor/DataCubeEditorColumnPropertiesPanelState.d.ts.map +1 -0
  103. package/lib/stores/dataCube/editor/DataCubeEditorColumnPropertiesPanelState.js +57 -0
  104. package/lib/stores/dataCube/editor/DataCubeEditorColumnPropertiesPanelState.js.map +1 -0
  105. package/lib/stores/dataCube/editor/DataCubeEditorColumnsSelectorState.d.ts +3 -0
  106. package/lib/stores/dataCube/editor/DataCubeEditorColumnsSelectorState.d.ts.map +1 -1
  107. package/lib/stores/dataCube/editor/DataCubeEditorColumnsSelectorState.js +10 -0
  108. package/lib/stores/dataCube/editor/DataCubeEditorColumnsSelectorState.js.map +1 -1
  109. package/lib/stores/dataCube/editor/DataCubeEditorGeneralPropertiesPanelState.d.ts +8 -3
  110. package/lib/stores/dataCube/editor/DataCubeEditorGeneralPropertiesPanelState.d.ts.map +1 -1
  111. package/lib/stores/dataCube/editor/DataCubeEditorGeneralPropertiesPanelState.js +20 -24
  112. package/lib/stores/dataCube/editor/DataCubeEditorGeneralPropertiesPanelState.js.map +1 -1
  113. package/lib/stores/dataCube/editor/DataCubeEditorHPivotPanelState.d.ts +27 -0
  114. package/lib/stores/dataCube/editor/DataCubeEditorHPivotPanelState.d.ts.map +1 -0
  115. package/lib/stores/dataCube/editor/DataCubeEditorHPivotPanelState.js +30 -0
  116. package/lib/stores/dataCube/editor/DataCubeEditorHPivotPanelState.js.map +1 -0
  117. package/lib/stores/dataCube/editor/DataCubeEditorPanelState.d.ts +1 -1
  118. package/lib/stores/dataCube/editor/DataCubeEditorPanelState.d.ts.map +1 -1
  119. package/lib/stores/dataCube/editor/DataCubeEditorSortsPanelState.d.ts +13 -6
  120. package/lib/stores/dataCube/editor/DataCubeEditorSortsPanelState.d.ts.map +1 -1
  121. package/lib/stores/dataCube/editor/DataCubeEditorSortsPanelState.js +64 -19
  122. package/lib/stores/dataCube/editor/DataCubeEditorSortsPanelState.js.map +1 -1
  123. package/lib/stores/dataCube/editor/DataCubeEditorState.d.ts +4 -1
  124. package/lib/stores/dataCube/editor/DataCubeEditorState.d.ts.map +1 -1
  125. package/lib/stores/dataCube/editor/DataCubeEditorState.js +15 -10
  126. package/lib/stores/dataCube/editor/DataCubeEditorState.js.map +1 -1
  127. package/lib/stores/dataCube/editor/DataCubeMutableConfiguration.d.ts +95 -0
  128. package/lib/stores/dataCube/editor/DataCubeMutableConfiguration.d.ts.map +1 -0
  129. package/lib/stores/dataCube/editor/DataCubeMutableConfiguration.js +369 -0
  130. package/lib/stores/dataCube/editor/DataCubeMutableConfiguration.js.map +1 -0
  131. package/lib/stores/dataCube/grid/DataCubeGridClientEngine.d.ts +7 -2
  132. package/lib/stores/dataCube/grid/DataCubeGridClientEngine.d.ts.map +1 -1
  133. package/lib/stores/dataCube/grid/DataCubeGridClientEngine.js +29 -2
  134. package/lib/stores/dataCube/grid/DataCubeGridClientEngine.js.map +1 -1
  135. package/lib/stores/dataCube/grid/DataCubeGridQueryBuilder.d.ts.map +1 -1
  136. package/lib/stores/dataCube/grid/DataCubeGridQueryBuilder.js +0 -9
  137. package/lib/stores/dataCube/grid/DataCubeGridQueryBuilder.js.map +1 -1
  138. package/lib/stores/dataCube/grid/DataCubeGridQuerySnapshotAnalyzer.d.ts.map +1 -1
  139. package/lib/stores/dataCube/grid/DataCubeGridQuerySnapshotAnalyzer.js +4 -3
  140. package/lib/stores/dataCube/grid/DataCubeGridQuerySnapshotAnalyzer.js.map +1 -1
  141. package/lib/stores/dataCube/grid/DataCubeGridQuerySnapshotBuilder.d.ts.map +1 -1
  142. package/lib/stores/dataCube/grid/DataCubeGridQuerySnapshotBuilder.js +16 -28
  143. package/lib/stores/dataCube/grid/DataCubeGridQuerySnapshotBuilder.js.map +1 -1
  144. package/package.json +10 -8
  145. package/src/components/dataCube/DataCube.tsx +44 -23
  146. package/src/components/dataCube/editor/DataCubeEditor.tsx +6 -1
  147. package/src/components/dataCube/editor/DataCubeEditorCodePanel.tsx +2 -2
  148. package/src/components/dataCube/editor/DataCubeEditorColumnPropertiesPanel.tsx +837 -7
  149. package/src/components/dataCube/editor/DataCubeEditorColumnsPanel.tsx +2 -2
  150. package/src/components/dataCube/editor/DataCubeEditorColumnsSelector.tsx +264 -50
  151. package/src/components/dataCube/editor/DataCubeEditorDeveloperPanel.tsx +41 -0
  152. package/src/components/dataCube/editor/DataCubeEditorExtendedColumnsPanel.tsx +2 -2
  153. package/src/components/dataCube/editor/DataCubeEditorFilterPanel.tsx +2 -2
  154. package/src/components/dataCube/editor/DataCubeEditorGeneralPropertiesPanel.tsx +682 -13
  155. package/src/components/dataCube/editor/DataCubeEditorHPivotsPanel.tsx +2 -2
  156. package/src/components/dataCube/editor/DataCubeEditorShared.tsx +448 -0
  157. package/src/components/dataCube/editor/DataCubeEditorSortsPanel.tsx +103 -4
  158. package/src/components/dataCube/editor/DataCubeEditorVPivotsPanel.tsx +2 -2
  159. package/src/components/dataCube/grid/DataCubeGrid.tsx +65 -32
  160. package/src/components/dataCube/grid/DataCubeGridShared.tsx +41 -0
  161. package/src/components/dataCube/grid/menu/DataCubeGridMenu.tsx +394 -0
  162. package/src/components/dataCube/grid/menu/DataCubeGridSortsMenu.tsx +120 -0
  163. package/src/server/models/DataCubeQuery.ts +2 -6
  164. package/src/stores/dataCube/DataCubeState.ts +39 -5
  165. package/src/stores/dataCube/REPLStore.ts +3 -3
  166. package/src/stores/dataCube/core/DataCubeConfiguration.ts +200 -0
  167. package/src/stores/dataCube/core/DataCubeConfigurationBuilder.ts +56 -0
  168. package/src/stores/dataCube/core/DataCubeCoreState.ts +3 -3
  169. package/src/stores/dataCube/core/DataCubeQueryBuilder.ts +13 -13
  170. package/src/stores/dataCube/core/DataCubeQueryEngine.ts +136 -4
  171. package/src/stores/dataCube/core/DataCubeQuerySnapshot.ts +43 -6
  172. package/src/stores/dataCube/core/DataCubeQuerySnapshotBuilder.ts +45 -24
  173. package/src/stores/dataCube/core/DataCubeQuerySnapshotManager.ts +9 -2
  174. package/src/stores/dataCube/editor/DataCubeEditorCodePanelState.ts +5 -2
  175. package/src/stores/dataCube/editor/DataCubeEditorColumnPropertiesPanelState.ts +82 -0
  176. package/src/stores/dataCube/editor/DataCubeEditorColumnsSelectorState.ts +12 -0
  177. package/src/stores/dataCube/editor/DataCubeEditorGeneralPropertiesPanelState.ts +31 -28
  178. package/src/stores/dataCube/editor/DataCubeEditorHPivotPanelState.ts +43 -0
  179. package/src/stores/dataCube/editor/DataCubeEditorPanelState.ts +1 -1
  180. package/src/stores/dataCube/editor/DataCubeEditorSortsPanelState.ts +92 -25
  181. package/src/stores/dataCube/editor/DataCubeEditorState.ts +17 -10
  182. package/src/stores/dataCube/editor/DataCubeMutableConfiguration.ts +533 -0
  183. package/src/stores/dataCube/grid/DataCubeGridClientEngine.ts +33 -2
  184. package/src/stores/dataCube/grid/DataCubeGridQueryBuilder.ts +0 -10
  185. package/src/stores/dataCube/grid/DataCubeGridQuerySnapshotAnalyzer.tsx +4 -3
  186. package/src/stores/dataCube/grid/DataCubeGridQuerySnapshotBuilder.ts +16 -36
  187. package/tsconfig.json +10 -1
  188. package/lib/stores/dataCube/DataCubeDefaultConfig.d.ts.map +0 -1
  189. package/lib/stores/dataCube/DataCubeDefaultConfig.js.map +0 -1
@@ -17,44 +17,47 @@
17
17
  import { action, makeObservable, observable } from 'mobx';
18
18
  import type { DataCubeState } from '../DataCubeState.js';
19
19
  import {
20
- DataCubeQuerySnapshotSortDirection,
20
+ DataCubeQuerySnapshotSortOperation,
21
21
  _getCol,
22
22
  type DataCubeQuerySnapshot,
23
23
  type DataCubeQuerySnapshotColumn,
24
- type DataCubeQuerySnapshotSortColumn,
25
24
  } from '../core/DataCubeQuerySnapshot.js';
26
25
  import type { DataCubeQueryEditorPanelState } from './DataCubeEditorPanelState.js';
27
- import { deepEqual } from '@finos/legend-shared';
28
26
  import {
29
27
  DataCubeEditorColumnsSelectorColumnState,
30
28
  DataCubeEditorColumnsSelectorState,
31
29
  } from './DataCubeEditorColumnsSelectorState.js';
30
+ import type { DataCubeEditorState } from './DataCubeEditorState.js';
32
31
 
33
32
  export class DataCubeEditorSortColumnState extends DataCubeEditorColumnsSelectorColumnState {
34
33
  readonly column: DataCubeQuerySnapshotColumn;
35
- direction: DataCubeQuerySnapshotSortDirection;
34
+ operation: DataCubeQuerySnapshotSortOperation;
36
35
 
37
36
  constructor(
38
37
  column: DataCubeQuerySnapshotColumn,
39
- direction: DataCubeQuerySnapshotSortDirection,
38
+ direction: DataCubeQuerySnapshotSortOperation,
40
39
  ) {
41
40
  super();
42
41
 
43
42
  makeObservable(this, {
44
- direction: observable,
45
- setDirection: action,
43
+ operation: observable,
44
+ setOperation: action,
46
45
  });
47
46
 
48
47
  this.column = column;
49
- this.direction = direction;
48
+ this.operation = direction;
50
49
  }
51
50
 
52
51
  get name(): string {
53
52
  return this.column.name;
54
53
  }
55
54
 
56
- setDirection(val: DataCubeQuerySnapshotSortDirection): void {
57
- this.direction = val;
55
+ override resetWhenMadeAvailable(): void {
56
+ this.setOperation(DataCubeQuerySnapshotSortOperation.ASCENDING);
57
+ }
58
+
59
+ setOperation(val: DataCubeQuerySnapshotSortOperation): void {
60
+ this.operation = val;
58
61
  }
59
62
  }
60
63
 
@@ -62,13 +65,82 @@ export class DataCubeEditorSortsPanelState
62
65
  implements DataCubeQueryEditorPanelState
63
66
  {
64
67
  readonly dataCube!: DataCubeState;
68
+ readonly editor!: DataCubeEditorState;
65
69
  readonly columnsSelector!: DataCubeEditorColumnsSelectorState<DataCubeEditorSortColumnState>;
66
70
 
67
- constructor(dataCube: DataCubeState) {
68
- this.dataCube = dataCube;
71
+ constructor(editor: DataCubeEditorState) {
72
+ this.editor = editor;
73
+ this.dataCube = editor.dataCube;
69
74
  this.columnsSelector = new DataCubeEditorColumnsSelectorState();
70
75
  }
71
76
 
77
+ getActionableSortColumn(
78
+ colName: string,
79
+ operation: DataCubeQuerySnapshotSortOperation,
80
+ ): DataCubeEditorSortColumnState | undefined {
81
+ let column = this.columnsSelector.getAvailableColumn(colName);
82
+ if (!column) {
83
+ const selectedColumn = this.columnsSelector.getSelectedColumn(colName);
84
+ if (selectedColumn && selectedColumn.operation !== operation) {
85
+ column = selectedColumn;
86
+ }
87
+ }
88
+ return column;
89
+ }
90
+
91
+ sortByColumn(
92
+ colName: string,
93
+ operation: DataCubeQuerySnapshotSortOperation,
94
+ ): void {
95
+ const column = this.getActionableSortColumn(colName, operation);
96
+ if (!column) {
97
+ return;
98
+ }
99
+ column.setOperation(operation);
100
+
101
+ this.columnsSelector.setAvailableColumns(
102
+ [
103
+ ...this.columnsSelector.availableColumns,
104
+ ...this.columnsSelector.selectedColumns,
105
+ ].filter((col) => col.name !== colName),
106
+ );
107
+ this.columnsSelector.setSelectedColumns([column]);
108
+ this.editor.applyChanges();
109
+ }
110
+
111
+ addSortByColumn(
112
+ colName: string,
113
+ operation: DataCubeQuerySnapshotSortOperation,
114
+ ): void {
115
+ const column = this.getActionableSortColumn(colName, operation);
116
+ if (!column) {
117
+ return;
118
+ }
119
+ column.setOperation(operation);
120
+
121
+ this.columnsSelector.setAvailableColumns(
122
+ this.columnsSelector.availableColumns.filter(
123
+ (col) => col.name !== colName,
124
+ ),
125
+ );
126
+ this.columnsSelector.setSelectedColumns([
127
+ ...this.columnsSelector.selectedColumns,
128
+ column,
129
+ ]);
130
+ this.editor.applyChanges();
131
+ }
132
+
133
+ clearAllSorts(): void {
134
+ if (this.columnsSelector.selectedColumns.length !== 0) {
135
+ this.columnsSelector.setAvailableColumns([
136
+ ...this.columnsSelector.availableColumns,
137
+ ...this.columnsSelector.selectedColumns,
138
+ ]);
139
+ this.columnsSelector.setSelectedColumns([]);
140
+ this.editor.applyChanges();
141
+ }
142
+ }
143
+
72
144
  applySnaphot(snapshot: DataCubeQuerySnapshot): void {
73
145
  const columns = snapshot.stageCols('sort');
74
146
  const sortColumns = snapshot.data.sortColumns;
@@ -81,7 +153,7 @@ export class DataCubeEditorSortsPanelState
81
153
  (col) =>
82
154
  new DataCubeEditorSortColumnState(
83
155
  _getCol(columns, col.name),
84
- DataCubeQuerySnapshotSortDirection.ASCENDING,
156
+ DataCubeQuerySnapshotSortOperation.ASCENDING,
85
157
  ),
86
158
  ),
87
159
  );
@@ -90,7 +162,7 @@ export class DataCubeEditorSortsPanelState
90
162
  (col) =>
91
163
  new DataCubeEditorSortColumnState(
92
164
  _getCol(columns, col.name),
93
- col.direction,
165
+ col.operation,
94
166
  ),
95
167
  ),
96
168
  );
@@ -99,18 +171,13 @@ export class DataCubeEditorSortsPanelState
99
171
  buildSnapshot(
100
172
  newSnapshot: DataCubeQuerySnapshot,
101
173
  baseSnapshot: DataCubeQuerySnapshot,
102
- ): boolean {
103
- const newSortColumns: DataCubeQuerySnapshotSortColumn[] =
104
- this.columnsSelector.selectedColumns.map((sortInfo) => ({
174
+ ): void {
175
+ newSnapshot.data.sortColumns = this.columnsSelector.selectedColumns.map(
176
+ (sortInfo) => ({
105
177
  name: sortInfo.column.name,
106
178
  type: sortInfo.column.type,
107
- direction: sortInfo.direction,
108
- }));
109
-
110
- if (!deepEqual(newSortColumns, baseSnapshot.data.sortColumns)) {
111
- newSnapshot.data.sortColumns = newSortColumns;
112
- return true;
113
- }
114
- return false;
179
+ operation: sortInfo.operation,
180
+ }),
181
+ );
115
182
  }
116
183
  }
@@ -22,6 +22,7 @@ import { DataCubeQuerySnapshotSubscriber } from '../core/DataCubeQuerySnapshotSu
22
22
  import { type DataCubeQuerySnapshot } from '../core/DataCubeQuerySnapshot.js';
23
23
  import { guaranteeNonNullable } from '@finos/legend-shared';
24
24
  import { DataCubeEditorGeneralPropertiesPanelState } from './DataCubeEditorGeneralPropertiesPanelState.js';
25
+ import { DataCubeEditorColumnPropertiesPanelState } from './DataCubeEditorColumnPropertiesPanelState.js';
25
26
 
26
27
  export enum DATA_CUBE_EDITOR_TAB {
27
28
  COLUMNS = 'Columns',
@@ -33,13 +34,13 @@ export enum DATA_CUBE_EDITOR_TAB {
33
34
  GENERAL_PROPERTIES = 'General Properties',
34
35
  COLUMN_PROPERTIES = 'Column Properties',
35
36
  CODE = 'Code',
36
- // DEVELOPER_OPTIONS = 'Developer',
37
- // PIVOT_LAYOUT = 'Pivot Layout',
37
+ DEVELOPER = 'Developer',
38
38
  }
39
39
 
40
40
  export class DataCubeEditorState extends DataCubeQuerySnapshotSubscriber {
41
41
  readonly sortsPanel: DataCubeEditorSortsPanelState;
42
42
  readonly generalPropertiesPanel: DataCubeEditorGeneralPropertiesPanelState;
43
+ readonly columnPropertiesPanel: DataCubeEditorColumnPropertiesPanelState;
43
44
  readonly codePanel: DataCubeEditorCodePanelState;
44
45
 
45
46
  isPanelOpen = false;
@@ -59,11 +60,14 @@ export class DataCubeEditorState extends DataCubeQuerySnapshotSubscriber {
59
60
  closePanel: action,
60
61
  });
61
62
 
62
- this.sortsPanel = new DataCubeEditorSortsPanelState(this.dataCube);
63
+ this.sortsPanel = new DataCubeEditorSortsPanelState(this);
63
64
  this.generalPropertiesPanel = new DataCubeEditorGeneralPropertiesPanelState(
64
- this.dataCube,
65
+ this,
65
66
  );
66
- this.codePanel = new DataCubeEditorCodePanelState(this.dataCube);
67
+ this.columnPropertiesPanel = new DataCubeEditorColumnPropertiesPanelState(
68
+ this,
69
+ );
70
+ this.codePanel = new DataCubeEditorCodePanelState(this);
67
71
  }
68
72
 
69
73
  openPanel(): void {
@@ -82,12 +86,14 @@ export class DataCubeEditorState extends DataCubeQuerySnapshotSubscriber {
82
86
  const baseSnapshot = guaranteeNonNullable(this.getLatestSnapshot());
83
87
  const snapshot = baseSnapshot.clone();
84
88
 
85
- const createNew = [
86
- this.sortsPanel.buildSnapshot(snapshot, baseSnapshot),
87
- this.generalPropertiesPanel.buildSnapshot(snapshot, baseSnapshot),
88
- ].some(Boolean);
89
+ this.sortsPanel.buildSnapshot(snapshot, baseSnapshot);
90
+ // NOTE: snapshot must be processed first to build the container configuration
91
+ // before proceeding to process the columns' configuration
92
+ this.generalPropertiesPanel.buildSnapshot(snapshot, baseSnapshot);
93
+ this.columnPropertiesPanel.buildSnapshot(snapshot, baseSnapshot);
89
94
 
90
- if (createNew) {
95
+ snapshot.finalize();
96
+ if (snapshot.hashCode !== baseSnapshot.hashCode) {
91
97
  this.publishSnapshot(snapshot);
92
98
  }
93
99
  }
@@ -95,6 +101,7 @@ export class DataCubeEditorState extends DataCubeQuerySnapshotSubscriber {
95
101
  override async applySnapshot(snapshot: DataCubeQuerySnapshot): Promise<void> {
96
102
  this.sortsPanel.applySnaphot(snapshot);
97
103
  this.generalPropertiesPanel.applySnaphot(snapshot);
104
+ this.columnPropertiesPanel.applySnaphot(snapshot);
98
105
  }
99
106
 
100
107
  override async initialize(): Promise<void> {