@finos/legend-data-cube 0.0.43 → 0.0.44

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 (348) hide show
  1. package/docs/column-configuration.kind.md +2 -0
  2. package/lib/__lib__/DataCubeSetting.d.ts +1 -0
  3. package/lib/__lib__/DataCubeSetting.d.ts.map +1 -1
  4. package/lib/__lib__/DataCubeSetting.js +1 -0
  5. package/lib/__lib__/DataCubeSetting.js.map +1 -1
  6. package/lib/components/view/editor/DataCubeEditorColumnPropertiesPanel.d.ts.map +1 -1
  7. package/lib/components/view/editor/DataCubeEditorColumnPropertiesPanel.js +12 -6
  8. package/lib/components/view/editor/DataCubeEditorColumnPropertiesPanel.js.map +1 -1
  9. package/lib/components/view/editor/DataCubeEditorColumnSelector.d.ts +7 -1
  10. package/lib/components/view/editor/DataCubeEditorColumnSelector.d.ts.map +1 -1
  11. package/lib/components/view/editor/DataCubeEditorColumnSelector.js +23 -1
  12. package/lib/components/view/editor/DataCubeEditorColumnSelector.js.map +1 -1
  13. package/lib/components/view/editor/DataCubeEditorColumnsPanel.d.ts.map +1 -1
  14. package/lib/components/view/editor/DataCubeEditorColumnsPanel.js +2 -1
  15. package/lib/components/view/editor/DataCubeEditorColumnsPanel.js.map +1 -1
  16. package/lib/components/view/editor/DataCubeEditorHorizontalPivotsPanel.d.ts.map +1 -1
  17. package/lib/components/view/editor/DataCubeEditorHorizontalPivotsPanel.js +2 -4
  18. package/lib/components/view/editor/DataCubeEditorHorizontalPivotsPanel.js.map +1 -1
  19. package/lib/components/view/editor/DataCubeEditorSortsPanel.d.ts.map +1 -1
  20. package/lib/components/view/editor/DataCubeEditorSortsPanel.js +4 -25
  21. package/lib/components/view/editor/DataCubeEditorSortsPanel.js.map +1 -1
  22. package/lib/components/view/filter/DataCubeFilterEditor.d.ts.map +1 -1
  23. package/lib/components/view/filter/DataCubeFilterEditor.js +2 -1
  24. package/lib/components/view/filter/DataCubeFilterEditor.js.map +1 -1
  25. package/lib/index.css +2 -2
  26. package/lib/index.css.map +1 -1
  27. package/lib/package.json +5 -5
  28. package/lib/stores/core/DataCubeConfigurationBuilder.d.ts +4 -3
  29. package/lib/stores/core/DataCubeConfigurationBuilder.d.ts.map +1 -1
  30. package/lib/stores/core/DataCubeConfigurationBuilder.js +59 -3
  31. package/lib/stores/core/DataCubeConfigurationBuilder.js.map +1 -1
  32. package/lib/stores/core/DataCubeEngine.d.ts +2 -0
  33. package/lib/stores/core/DataCubeEngine.d.ts.map +1 -1
  34. package/lib/stores/core/DataCubeEngine.js +1 -2
  35. package/lib/stores/core/DataCubeEngine.js.map +1 -1
  36. package/lib/stores/core/DataCubeQueryBuilder.d.ts.map +1 -1
  37. package/lib/stores/core/DataCubeQueryBuilder.js +12 -22
  38. package/lib/stores/core/DataCubeQueryBuilder.js.map +1 -1
  39. package/lib/stores/core/DataCubeQueryBuilderUtils.d.ts +6 -5
  40. package/lib/stores/core/DataCubeQueryBuilderUtils.d.ts.map +1 -1
  41. package/lib/stores/core/DataCubeQueryBuilderUtils.js +59 -30
  42. package/lib/stores/core/DataCubeQueryBuilderUtils.js.map +1 -1
  43. package/lib/stores/core/DataCubeQueryEngine.d.ts +14 -7
  44. package/lib/stores/core/DataCubeQueryEngine.d.ts.map +1 -1
  45. package/lib/stores/core/DataCubeQueryEngine.js +76 -45
  46. package/lib/stores/core/DataCubeQueryEngine.js.map +1 -1
  47. package/lib/stores/core/DataCubeQuerySnapshot.d.ts +11 -0
  48. package/lib/stores/core/DataCubeQuerySnapshot.d.ts.map +1 -1
  49. package/lib/stores/core/DataCubeQuerySnapshot.js.map +1 -1
  50. package/lib/stores/core/DataCubeQuerySnapshotBuilder.d.ts +2 -3
  51. package/lib/stores/core/DataCubeQuerySnapshotBuilder.d.ts.map +1 -1
  52. package/lib/stores/core/DataCubeQuerySnapshotBuilder.js +226 -128
  53. package/lib/stores/core/DataCubeQuerySnapshotBuilder.js.map +1 -1
  54. package/lib/stores/core/DataCubeQuerySnapshotBuilderUtils.d.ts +36 -7
  55. package/lib/stores/core/DataCubeQuerySnapshotBuilderUtils.d.ts.map +1 -1
  56. package/lib/stores/core/DataCubeQuerySnapshotBuilderUtils.js +359 -126
  57. package/lib/stores/core/DataCubeQuerySnapshotBuilderUtils.js.map +1 -1
  58. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation.d.ts +10 -2
  59. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation.d.ts.map +1 -1
  60. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation.js +15 -6
  61. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation.js.map +1 -1
  62. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__Average.d.ts +6 -2
  63. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__Average.d.ts.map +1 -1
  64. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__Average.js +13 -3
  65. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__Average.js.map +1 -1
  66. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__Count.d.ts +6 -2
  67. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__Count.d.ts.map +1 -1
  68. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__Count.js +13 -3
  69. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__Count.js.map +1 -1
  70. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__First.d.ts +6 -2
  71. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__First.d.ts.map +1 -1
  72. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__First.js +13 -3
  73. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__First.js.map +1 -1
  74. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__JoinStrings.d.ts +6 -2
  75. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__JoinStrings.d.ts.map +1 -1
  76. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__JoinStrings.js +23 -10
  77. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__JoinStrings.js.map +1 -1
  78. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__Last.d.ts +6 -2
  79. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__Last.d.ts.map +1 -1
  80. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__Last.js +13 -3
  81. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__Last.js.map +1 -1
  82. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__Max.d.ts +6 -2
  83. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__Max.d.ts.map +1 -1
  84. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__Max.js +13 -3
  85. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__Max.js.map +1 -1
  86. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__Min.d.ts +6 -2
  87. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__Min.d.ts.map +1 -1
  88. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__Min.js +13 -3
  89. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__Min.js.map +1 -1
  90. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__StdDevPopulation.d.ts +6 -2
  91. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__StdDevPopulation.d.ts.map +1 -1
  92. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__StdDevPopulation.js +13 -3
  93. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__StdDevPopulation.js.map +1 -1
  94. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__StdDevSample.d.ts +6 -2
  95. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__StdDevSample.d.ts.map +1 -1
  96. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__StdDevSample.js +13 -3
  97. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__StdDevSample.js.map +1 -1
  98. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__Sum.d.ts +6 -2
  99. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__Sum.d.ts.map +1 -1
  100. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__Sum.js +14 -3
  101. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__Sum.js.map +1 -1
  102. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__UniqueValue.d.ts +6 -2
  103. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__UniqueValue.d.ts.map +1 -1
  104. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__UniqueValue.js +13 -3
  105. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__UniqueValue.js.map +1 -1
  106. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__VariancePopulation.d.ts +6 -2
  107. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__VariancePopulation.d.ts.map +1 -1
  108. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__VariancePopulation.js +13 -3
  109. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__VariancePopulation.js.map +1 -1
  110. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__VarianceSample.d.ts +6 -2
  111. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__VarianceSample.d.ts.map +1 -1
  112. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__VarianceSample.js +13 -3
  113. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__VarianceSample.js.map +1 -1
  114. package/lib/stores/core/filter/DataCubeQueryFilterOperation.d.ts +0 -2
  115. package/lib/stores/core/filter/DataCubeQueryFilterOperation.d.ts.map +1 -1
  116. package/lib/stores/core/filter/DataCubeQueryFilterOperation.js +1 -30
  117. package/lib/stores/core/filter/DataCubeQueryFilterOperation.js.map +1 -1
  118. package/lib/stores/core/filter/DataCubeQueryFilterOperation__Contain.d.ts.map +1 -1
  119. package/lib/stores/core/filter/DataCubeQueryFilterOperation__Contain.js +8 -7
  120. package/lib/stores/core/filter/DataCubeQueryFilterOperation__Contain.js.map +1 -1
  121. package/lib/stores/core/filter/DataCubeQueryFilterOperation__ContainCaseInsensitive.d.ts.map +1 -1
  122. package/lib/stores/core/filter/DataCubeQueryFilterOperation__ContainCaseInsensitive.js +10 -10
  123. package/lib/stores/core/filter/DataCubeQueryFilterOperation__ContainCaseInsensitive.js.map +1 -1
  124. package/lib/stores/core/filter/DataCubeQueryFilterOperation__EndWith.d.ts.map +1 -1
  125. package/lib/stores/core/filter/DataCubeQueryFilterOperation__EndWith.js +8 -7
  126. package/lib/stores/core/filter/DataCubeQueryFilterOperation__EndWith.js.map +1 -1
  127. package/lib/stores/core/filter/DataCubeQueryFilterOperation__EndWithCaseInsensitive.d.ts.map +1 -1
  128. package/lib/stores/core/filter/DataCubeQueryFilterOperation__EndWithCaseInsensitive.js +10 -10
  129. package/lib/stores/core/filter/DataCubeQueryFilterOperation__EndWithCaseInsensitive.js.map +1 -1
  130. package/lib/stores/core/filter/DataCubeQueryFilterOperation__Equal.d.ts.map +1 -1
  131. package/lib/stores/core/filter/DataCubeQueryFilterOperation__Equal.js +5 -6
  132. package/lib/stores/core/filter/DataCubeQueryFilterOperation__Equal.js.map +1 -1
  133. package/lib/stores/core/filter/DataCubeQueryFilterOperation__EqualCaseInsensitive.d.ts.map +1 -1
  134. package/lib/stores/core/filter/DataCubeQueryFilterOperation__EqualCaseInsensitive.js +10 -10
  135. package/lib/stores/core/filter/DataCubeQueryFilterOperation__EqualCaseInsensitive.js.map +1 -1
  136. package/lib/stores/core/filter/DataCubeQueryFilterOperation__EqualCaseInsensitiveColumn.d.ts.map +1 -1
  137. package/lib/stores/core/filter/DataCubeQueryFilterOperation__EqualCaseInsensitiveColumn.js +6 -7
  138. package/lib/stores/core/filter/DataCubeQueryFilterOperation__EqualCaseInsensitiveColumn.js.map +1 -1
  139. package/lib/stores/core/filter/DataCubeQueryFilterOperation__EqualColumn.d.ts.map +1 -1
  140. package/lib/stores/core/filter/DataCubeQueryFilterOperation__EqualColumn.js +6 -7
  141. package/lib/stores/core/filter/DataCubeQueryFilterOperation__EqualColumn.js.map +1 -1
  142. package/lib/stores/core/filter/DataCubeQueryFilterOperation__GreaterThan.d.ts.map +1 -1
  143. package/lib/stores/core/filter/DataCubeQueryFilterOperation__GreaterThan.js +5 -6
  144. package/lib/stores/core/filter/DataCubeQueryFilterOperation__GreaterThan.js.map +1 -1
  145. package/lib/stores/core/filter/DataCubeQueryFilterOperation__GreaterThanColumn.d.ts.map +1 -1
  146. package/lib/stores/core/filter/DataCubeQueryFilterOperation__GreaterThanColumn.js +6 -7
  147. package/lib/stores/core/filter/DataCubeQueryFilterOperation__GreaterThanColumn.js.map +1 -1
  148. package/lib/stores/core/filter/DataCubeQueryFilterOperation__GreaterThanOrEqual.d.ts.map +1 -1
  149. package/lib/stores/core/filter/DataCubeQueryFilterOperation__GreaterThanOrEqual.js +5 -6
  150. package/lib/stores/core/filter/DataCubeQueryFilterOperation__GreaterThanOrEqual.js.map +1 -1
  151. package/lib/stores/core/filter/DataCubeQueryFilterOperation__GreaterThanOrEqualColumn.d.ts.map +1 -1
  152. package/lib/stores/core/filter/DataCubeQueryFilterOperation__GreaterThanOrEqualColumn.js +6 -7
  153. package/lib/stores/core/filter/DataCubeQueryFilterOperation__GreaterThanOrEqualColumn.js.map +1 -1
  154. package/lib/stores/core/filter/DataCubeQueryFilterOperation__IsNotNull.d.ts.map +1 -1
  155. package/lib/stores/core/filter/DataCubeQueryFilterOperation__IsNotNull.js +2 -6
  156. package/lib/stores/core/filter/DataCubeQueryFilterOperation__IsNotNull.js.map +1 -1
  157. package/lib/stores/core/filter/DataCubeQueryFilterOperation__IsNull.d.ts.map +1 -1
  158. package/lib/stores/core/filter/DataCubeQueryFilterOperation__IsNull.js +2 -2
  159. package/lib/stores/core/filter/DataCubeQueryFilterOperation__IsNull.js.map +1 -1
  160. package/lib/stores/core/filter/DataCubeQueryFilterOperation__LessThan.d.ts.map +1 -1
  161. package/lib/stores/core/filter/DataCubeQueryFilterOperation__LessThan.js +5 -6
  162. package/lib/stores/core/filter/DataCubeQueryFilterOperation__LessThan.js.map +1 -1
  163. package/lib/stores/core/filter/DataCubeQueryFilterOperation__LessThanColumn.d.ts.map +1 -1
  164. package/lib/stores/core/filter/DataCubeQueryFilterOperation__LessThanColumn.js +6 -7
  165. package/lib/stores/core/filter/DataCubeQueryFilterOperation__LessThanColumn.js.map +1 -1
  166. package/lib/stores/core/filter/DataCubeQueryFilterOperation__LessThanOrEqual.d.ts.map +1 -1
  167. package/lib/stores/core/filter/DataCubeQueryFilterOperation__LessThanOrEqual.js +5 -6
  168. package/lib/stores/core/filter/DataCubeQueryFilterOperation__LessThanOrEqual.js.map +1 -1
  169. package/lib/stores/core/filter/DataCubeQueryFilterOperation__LessThanOrEqualColumn.d.ts.map +1 -1
  170. package/lib/stores/core/filter/DataCubeQueryFilterOperation__LessThanOrEqualColumn.js +6 -7
  171. package/lib/stores/core/filter/DataCubeQueryFilterOperation__LessThanOrEqualColumn.js.map +1 -1
  172. package/lib/stores/core/filter/DataCubeQueryFilterOperation__NotContain.d.ts.map +1 -1
  173. package/lib/stores/core/filter/DataCubeQueryFilterOperation__NotContain.js +8 -11
  174. package/lib/stores/core/filter/DataCubeQueryFilterOperation__NotContain.js.map +1 -1
  175. package/lib/stores/core/filter/DataCubeQueryFilterOperation__NotEndWith.d.ts.map +1 -1
  176. package/lib/stores/core/filter/DataCubeQueryFilterOperation__NotEndWith.js +8 -11
  177. package/lib/stores/core/filter/DataCubeQueryFilterOperation__NotEndWith.js.map +1 -1
  178. package/lib/stores/core/filter/DataCubeQueryFilterOperation__NotEqual.d.ts.map +1 -1
  179. package/lib/stores/core/filter/DataCubeQueryFilterOperation__NotEqual.js +6 -10
  180. package/lib/stores/core/filter/DataCubeQueryFilterOperation__NotEqual.js.map +1 -1
  181. package/lib/stores/core/filter/DataCubeQueryFilterOperation__NotEqualCaseInsensitive.d.ts.map +1 -1
  182. package/lib/stores/core/filter/DataCubeQueryFilterOperation__NotEqualCaseInsensitive.js +10 -14
  183. package/lib/stores/core/filter/DataCubeQueryFilterOperation__NotEqualCaseInsensitive.js.map +1 -1
  184. package/lib/stores/core/filter/DataCubeQueryFilterOperation__NotEqualCaseInsensitiveColumn.d.ts.map +1 -1
  185. package/lib/stores/core/filter/DataCubeQueryFilterOperation__NotEqualCaseInsensitiveColumn.js +6 -11
  186. package/lib/stores/core/filter/DataCubeQueryFilterOperation__NotEqualCaseInsensitiveColumn.js.map +1 -1
  187. package/lib/stores/core/filter/DataCubeQueryFilterOperation__NotEqualColumn.d.ts.map +1 -1
  188. package/lib/stores/core/filter/DataCubeQueryFilterOperation__NotEqualColumn.js +6 -11
  189. package/lib/stores/core/filter/DataCubeQueryFilterOperation__NotEqualColumn.js.map +1 -1
  190. package/lib/stores/core/filter/DataCubeQueryFilterOperation__NotStartWith.d.ts.map +1 -1
  191. package/lib/stores/core/filter/DataCubeQueryFilterOperation__NotStartWith.js +8 -11
  192. package/lib/stores/core/filter/DataCubeQueryFilterOperation__NotStartWith.js.map +1 -1
  193. package/lib/stores/core/filter/DataCubeQueryFilterOperation__StartWith.d.ts.map +1 -1
  194. package/lib/stores/core/filter/DataCubeQueryFilterOperation__StartWith.js +8 -7
  195. package/lib/stores/core/filter/DataCubeQueryFilterOperation__StartWith.js.map +1 -1
  196. package/lib/stores/core/filter/DataCubeQueryFilterOperation__StartWithCaseInsensitive.d.ts.map +1 -1
  197. package/lib/stores/core/filter/DataCubeQueryFilterOperation__StartWithCaseInsensitive.js +10 -10
  198. package/lib/stores/core/filter/DataCubeQueryFilterOperation__StartWithCaseInsensitive.js.map +1 -1
  199. package/lib/stores/core/model/DataCubeColumn.d.ts +1 -1
  200. package/lib/stores/core/model/DataCubeColumn.d.ts.map +1 -1
  201. package/lib/stores/core/model/DataCubeColumn.js.map +1 -1
  202. package/lib/stores/core/model/DataCubeConfiguration.d.ts +4 -3
  203. package/lib/stores/core/model/DataCubeConfiguration.d.ts.map +1 -1
  204. package/lib/stores/core/model/DataCubeConfiguration.js +4 -0
  205. package/lib/stores/core/model/DataCubeConfiguration.js.map +1 -1
  206. package/lib/stores/services/DataCubeQuerySnapshotService.d.ts.map +1 -1
  207. package/lib/stores/services/DataCubeQuerySnapshotService.js +2 -2
  208. package/lib/stores/services/DataCubeQuerySnapshotService.js.map +1 -1
  209. package/lib/stores/services/DataCubeSettingService.d.ts.map +1 -1
  210. package/lib/stores/services/DataCubeSettingService.js +8 -0
  211. package/lib/stores/services/DataCubeSettingService.js.map +1 -1
  212. package/lib/stores/view/DataCubeViewState.d.ts.map +1 -1
  213. package/lib/stores/view/DataCubeViewState.js +1 -1
  214. package/lib/stores/view/DataCubeViewState.js.map +1 -1
  215. package/lib/stores/view/editor/DataCubeEditorColumnPropertiesPanelState.d.ts.map +1 -1
  216. package/lib/stores/view/editor/DataCubeEditorColumnPropertiesPanelState.js +3 -2
  217. package/lib/stores/view/editor/DataCubeEditorColumnPropertiesPanelState.js.map +1 -1
  218. package/lib/stores/view/editor/DataCubeEditorColumnSelectorState.d.ts +7 -0
  219. package/lib/stores/view/editor/DataCubeEditorColumnSelectorState.d.ts.map +1 -1
  220. package/lib/stores/view/editor/DataCubeEditorColumnSelectorState.js +20 -3
  221. package/lib/stores/view/editor/DataCubeEditorColumnSelectorState.js.map +1 -1
  222. package/lib/stores/view/editor/DataCubeEditorColumnsPanelState.d.ts.map +1 -1
  223. package/lib/stores/view/editor/DataCubeEditorColumnsPanelState.js +2 -2
  224. package/lib/stores/view/editor/DataCubeEditorColumnsPanelState.js.map +1 -1
  225. package/lib/stores/view/editor/DataCubeEditorHorizontalPivotsPanelState.d.ts +4 -4
  226. package/lib/stores/view/editor/DataCubeEditorHorizontalPivotsPanelState.d.ts.map +1 -1
  227. package/lib/stores/view/editor/DataCubeEditorHorizontalPivotsPanelState.js +14 -8
  228. package/lib/stores/view/editor/DataCubeEditorHorizontalPivotsPanelState.js.map +1 -1
  229. package/lib/stores/view/editor/DataCubeEditorMutableConfiguration.d.ts +1 -5
  230. package/lib/stores/view/editor/DataCubeEditorMutableConfiguration.d.ts.map +1 -1
  231. package/lib/stores/view/editor/DataCubeEditorMutableConfiguration.js +2 -6
  232. package/lib/stores/view/editor/DataCubeEditorMutableConfiguration.js.map +1 -1
  233. package/lib/stores/view/editor/DataCubeEditorSortsPanelState.d.ts +1 -7
  234. package/lib/stores/view/editor/DataCubeEditorSortsPanelState.d.ts.map +1 -1
  235. package/lib/stores/view/editor/DataCubeEditorSortsPanelState.js +4 -19
  236. package/lib/stores/view/editor/DataCubeEditorSortsPanelState.js.map +1 -1
  237. package/lib/stores/view/editor/DataCubeEditorState.d.ts.map +1 -1
  238. package/lib/stores/view/editor/DataCubeEditorState.js +2 -2
  239. package/lib/stores/view/editor/DataCubeEditorState.js.map +1 -1
  240. package/lib/stores/view/editor/DataCubeEditorVerticalPivotsPanelState.d.ts.map +1 -1
  241. package/lib/stores/view/editor/DataCubeEditorVerticalPivotsPanelState.js +4 -4
  242. package/lib/stores/view/editor/DataCubeEditorVerticalPivotsPanelState.js.map +1 -1
  243. package/lib/stores/view/extend/DataCubeColumnEditorState.d.ts.map +1 -1
  244. package/lib/stores/view/extend/DataCubeColumnEditorState.js +2 -1
  245. package/lib/stores/view/extend/DataCubeColumnEditorState.js.map +1 -1
  246. package/lib/stores/view/extend/DataCubeExtendManagerState.d.ts.map +1 -1
  247. package/lib/stores/view/extend/DataCubeExtendManagerState.js +12 -12
  248. package/lib/stores/view/extend/DataCubeExtendManagerState.js.map +1 -1
  249. package/lib/stores/view/filter/DataCubeFilterEditorState.d.ts.map +1 -1
  250. package/lib/stores/view/filter/DataCubeFilterEditorState.js +2 -1
  251. package/lib/stores/view/filter/DataCubeFilterEditorState.js.map +1 -1
  252. package/lib/stores/view/grid/DataCubeGridClientEngine.d.ts.map +1 -1
  253. package/lib/stores/view/grid/DataCubeGridClientEngine.js +11 -14
  254. package/lib/stores/view/grid/DataCubeGridClientEngine.js.map +1 -1
  255. package/lib/stores/view/grid/DataCubeGridConfigurationBuilder.d.ts.map +1 -1
  256. package/lib/stores/view/grid/DataCubeGridConfigurationBuilder.js +48 -12
  257. package/lib/stores/view/grid/DataCubeGridConfigurationBuilder.js.map +1 -1
  258. package/lib/stores/view/grid/DataCubeGridControllerState.d.ts +1 -1
  259. package/lib/stores/view/grid/DataCubeGridControllerState.d.ts.map +1 -1
  260. package/lib/stores/view/grid/DataCubeGridControllerState.js +20 -20
  261. package/lib/stores/view/grid/DataCubeGridControllerState.js.map +1 -1
  262. package/lib/stores/view/grid/DataCubeGridMenuBuilder.d.ts.map +1 -1
  263. package/lib/stores/view/grid/DataCubeGridMenuBuilder.js +8 -12
  264. package/lib/stores/view/grid/DataCubeGridMenuBuilder.js.map +1 -1
  265. package/lib/stores/view/grid/DataCubeGridQueryBuilder.js +1 -1
  266. package/lib/stores/view/grid/DataCubeGridQueryBuilder.js.map +1 -1
  267. package/lib/stores/view/grid/DataCubeGridQuerySnapshotBuilder.js +1 -1
  268. package/lib/stores/view/grid/DataCubeGridQuerySnapshotBuilder.js.map +1 -1
  269. package/package.json +8 -8
  270. package/src/__lib__/DataCubeSetting.ts +1 -0
  271. package/src/components/view/editor/DataCubeEditorColumnPropertiesPanel.tsx +40 -17
  272. package/src/components/view/editor/DataCubeEditorColumnSelector.tsx +75 -1
  273. package/src/components/view/editor/DataCubeEditorColumnsPanel.tsx +3 -6
  274. package/src/components/view/editor/DataCubeEditorHorizontalPivotsPanel.tsx +5 -12
  275. package/src/components/view/editor/DataCubeEditorSortsPanel.tsx +12 -80
  276. package/src/components/view/filter/DataCubeFilterEditor.tsx +2 -3
  277. package/src/stores/core/DataCubeConfigurationBuilder.ts +80 -5
  278. package/src/stores/core/DataCubeEngine.tsx +10 -2
  279. package/src/stores/core/DataCubeQueryBuilder.ts +36 -37
  280. package/src/stores/core/DataCubeQueryBuilderUtils.ts +74 -41
  281. package/src/stores/core/DataCubeQueryEngine.ts +120 -60
  282. package/src/stores/core/DataCubeQuerySnapshot.ts +13 -0
  283. package/src/stores/core/DataCubeQuerySnapshotBuilder.ts +379 -157
  284. package/src/stores/core/DataCubeQuerySnapshotBuilderUtils.ts +597 -157
  285. package/src/stores/core/aggregation/DataCubeQueryAggregateOperation.ts +39 -16
  286. package/src/stores/core/aggregation/DataCubeQueryAggregateOperation__Average.tsx +26 -4
  287. package/src/stores/core/aggregation/DataCubeQueryAggregateOperation__Count.tsx +26 -4
  288. package/src/stores/core/aggregation/DataCubeQueryAggregateOperation__First.tsx +26 -4
  289. package/src/stores/core/aggregation/DataCubeQueryAggregateOperation__JoinStrings.tsx +41 -26
  290. package/src/stores/core/aggregation/DataCubeQueryAggregateOperation__Last.tsx +26 -4
  291. package/src/stores/core/aggregation/DataCubeQueryAggregateOperation__Max.tsx +26 -4
  292. package/src/stores/core/aggregation/DataCubeQueryAggregateOperation__Min.tsx +26 -4
  293. package/src/stores/core/aggregation/DataCubeQueryAggregateOperation__StdDevPopulation.tsx +29 -6
  294. package/src/stores/core/aggregation/DataCubeQueryAggregateOperation__StdDevSample.tsx +30 -4
  295. package/src/stores/core/aggregation/DataCubeQueryAggregateOperation__Sum.tsx +26 -4
  296. package/src/stores/core/aggregation/DataCubeQueryAggregateOperation__UniqueValue.tsx +26 -4
  297. package/src/stores/core/aggregation/DataCubeQueryAggregateOperation__VariancePopulation.tsx +26 -4
  298. package/src/stores/core/aggregation/DataCubeQueryAggregateOperation__VarianceSample.tsx +26 -4
  299. package/src/stores/core/filter/DataCubeQueryFilterOperation.ts +1 -52
  300. package/src/stores/core/filter/DataCubeQueryFilterOperation__Contain.tsx +12 -9
  301. package/src/stores/core/filter/DataCubeQueryFilterOperation__ContainCaseInsensitive.tsx +10 -13
  302. package/src/stores/core/filter/DataCubeQueryFilterOperation__EndWith.tsx +9 -10
  303. package/src/stores/core/filter/DataCubeQueryFilterOperation__EndWithCaseInsensitive.tsx +10 -13
  304. package/src/stores/core/filter/DataCubeQueryFilterOperation__Equal.tsx +5 -8
  305. package/src/stores/core/filter/DataCubeQueryFilterOperation__EqualCaseInsensitive.tsx +10 -13
  306. package/src/stores/core/filter/DataCubeQueryFilterOperation__EqualCaseInsensitiveColumn.tsx +6 -8
  307. package/src/stores/core/filter/DataCubeQueryFilterOperation__EqualColumn.tsx +5 -7
  308. package/src/stores/core/filter/DataCubeQueryFilterOperation__GreaterThan.tsx +6 -9
  309. package/src/stores/core/filter/DataCubeQueryFilterOperation__GreaterThanColumn.tsx +6 -8
  310. package/src/stores/core/filter/DataCubeQueryFilterOperation__GreaterThanOrEqual.tsx +6 -9
  311. package/src/stores/core/filter/DataCubeQueryFilterOperation__GreaterThanOrEqualColumn.tsx +6 -8
  312. package/src/stores/core/filter/DataCubeQueryFilterOperation__IsNotNull.tsx +6 -8
  313. package/src/stores/core/filter/DataCubeQueryFilterOperation__IsNull.tsx +6 -2
  314. package/src/stores/core/filter/DataCubeQueryFilterOperation__LessThan.tsx +6 -9
  315. package/src/stores/core/filter/DataCubeQueryFilterOperation__LessThanColumn.tsx +6 -8
  316. package/src/stores/core/filter/DataCubeQueryFilterOperation__LessThanOrEqual.tsx +6 -9
  317. package/src/stores/core/filter/DataCubeQueryFilterOperation__LessThanOrEqualColumn.tsx +6 -8
  318. package/src/stores/core/filter/DataCubeQueryFilterOperation__NotContain.tsx +12 -15
  319. package/src/stores/core/filter/DataCubeQueryFilterOperation__NotEndWith.tsx +12 -15
  320. package/src/stores/core/filter/DataCubeQueryFilterOperation__NotEqual.tsx +10 -14
  321. package/src/stores/core/filter/DataCubeQueryFilterOperation__NotEqualCaseInsensitive.tsx +11 -20
  322. package/src/stores/core/filter/DataCubeQueryFilterOperation__NotEqualCaseInsensitiveColumn.tsx +7 -19
  323. package/src/stores/core/filter/DataCubeQueryFilterOperation__NotEqualColumn.tsx +9 -17
  324. package/src/stores/core/filter/DataCubeQueryFilterOperation__NotStartWith.tsx +10 -17
  325. package/src/stores/core/filter/DataCubeQueryFilterOperation__StartWith.tsx +9 -10
  326. package/src/stores/core/filter/DataCubeQueryFilterOperation__StartWithCaseInsensitive.tsx +10 -13
  327. package/src/stores/core/model/DataCubeColumn.ts +1 -1
  328. package/src/stores/core/model/DataCubeConfiguration.ts +7 -1
  329. package/src/stores/services/DataCubeQuerySnapshotService.ts +2 -1
  330. package/src/stores/services/DataCubeSettingService.tsx +8 -0
  331. package/src/stores/view/DataCubeViewState.ts +2 -3
  332. package/src/stores/view/editor/DataCubeEditorColumnPropertiesPanelState.ts +3 -2
  333. package/src/stores/view/editor/DataCubeEditorColumnSelectorState.ts +31 -6
  334. package/src/stores/view/editor/DataCubeEditorColumnsPanelState.ts +2 -7
  335. package/src/stores/view/editor/DataCubeEditorHorizontalPivotsPanelState.ts +33 -10
  336. package/src/stores/view/editor/DataCubeEditorMutableConfiguration.ts +4 -20
  337. package/src/stores/view/editor/DataCubeEditorSortsPanelState.ts +6 -29
  338. package/src/stores/view/editor/DataCubeEditorState.tsx +2 -3
  339. package/src/stores/view/editor/DataCubeEditorVerticalPivotsPanelState.ts +6 -7
  340. package/src/stores/view/extend/DataCubeColumnEditorState.tsx +2 -3
  341. package/src/stores/view/extend/DataCubeExtendManagerState.tsx +14 -13
  342. package/src/stores/view/filter/DataCubeFilterEditorState.tsx +2 -4
  343. package/src/stores/view/grid/DataCubeGridClientEngine.ts +21 -20
  344. package/src/stores/view/grid/DataCubeGridConfigurationBuilder.tsx +64 -15
  345. package/src/stores/view/grid/DataCubeGridControllerState.ts +35 -34
  346. package/src/stores/view/grid/DataCubeGridMenuBuilder.tsx +17 -23
  347. package/src/stores/view/grid/DataCubeGridQueryBuilder.ts +1 -1
  348. package/src/stores/view/grid/DataCubeGridQuerySnapshotBuilder.ts +1 -1
@@ -14,45 +14,21 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- import { action, makeObservable, observable } from 'mobx';
18
17
  import { type DataCubeQuerySnapshot } from '../../core/DataCubeQuerySnapshot.js';
19
- import { _toCol } from '../../core/model/DataCubeColumn.js';
18
+ import { _findCol, _toCol } from '../../core/model/DataCubeColumn.js';
20
19
  import {
21
20
  DataCubeColumnKind,
22
21
  DataCubeQuerySortDirection,
23
22
  } from '../../core/DataCubeQueryEngine.js';
24
23
  import type { DataCubeQueryEditorPanelState } from './DataCubeEditorPanelState.js';
25
24
  import {
26
- DataCubeEditorColumnSelectorColumnState,
27
25
  DataCubeEditorColumnSelectorState,
26
+ DataCubeEditorSortColumnState,
28
27
  } from './DataCubeEditorColumnSelectorState.js';
29
28
  import type { DataCubeEditorState } from './DataCubeEditorState.js';
30
29
  import type { DataCubeConfiguration } from '../../core/model/DataCubeConfiguration.js';
31
30
  import { uniqBy } from '@finos/legend-shared';
32
31
 
33
- export class DataCubeEditorSortColumnState extends DataCubeEditorColumnSelectorColumnState {
34
- direction: DataCubeQuerySortDirection;
35
-
36
- constructor(
37
- name: string,
38
- type: string,
39
- direction: DataCubeQuerySortDirection,
40
- ) {
41
- super(name, type);
42
-
43
- makeObservable(this, {
44
- direction: observable,
45
- setDirection: action,
46
- });
47
-
48
- this.direction = direction;
49
- }
50
-
51
- setDirection(val: DataCubeQuerySortDirection) {
52
- this.direction = val;
53
- }
54
- }
55
-
56
32
  export class DataCubeEditorSortColumnSelectorState extends DataCubeEditorColumnSelectorState<DataCubeEditorSortColumnState> {
57
33
  override cloneColumn(column: DataCubeEditorSortColumnState) {
58
34
  return new DataCubeEditorSortColumnState(
@@ -78,8 +54,9 @@ export class DataCubeEditorSortColumnSelectorState extends DataCubeEditorColumnS
78
54
  this._editor.columnProperties.getColumnConfiguration(
79
55
  column.name,
80
56
  ).kind === DataCubeColumnKind.DIMENSION &&
81
- !this._editor.horizontalPivots.selector.selectedColumns.find(
82
- (col) => col.name === column.name,
57
+ !_findCol(
58
+ this._editor.horizontalPivots.selector.selectedColumns,
59
+ column.name,
83
60
  ),
84
61
  ),
85
62
  ]
@@ -113,7 +90,7 @@ export class DataCubeEditorSortsPanelState
113
90
  adaptPropagatedChanges(): void {
114
91
  this.selector.setSelectedColumns(
115
92
  this.selector.selectedColumns.filter((column) =>
116
- this.selector.availableColumns.find((col) => col.name === column.name),
93
+ _findCol(this.selector.availableColumns, column.name),
117
94
  ),
118
95
  );
119
96
  }
@@ -23,6 +23,7 @@ import {
23
23
  type DataCubeQuerySnapshotExtendedColumn,
24
24
  } from '../../core/DataCubeQuerySnapshot.js';
25
25
  import {
26
+ _findCol,
26
27
  _toCol,
27
28
  type DataCubeColumn,
28
29
  } from '../../core/model/DataCubeColumn.js';
@@ -177,9 +178,7 @@ export class DataCubeEditorState extends DataCubeQuerySnapshotController {
177
178
  this.sorts.selector.availableColumns
178
179
  .filter(
179
180
  (col) =>
180
- !tempSnapshot.data.groupExtendedColumns.find(
181
- (column) => column.name === col.name,
182
- ),
181
+ !_findCol(tempSnapshot.data.groupExtendedColumns, col.name),
183
182
  )
184
183
  .map(_toCol);
185
184
  }
@@ -18,7 +18,7 @@ import { uniqBy } from '@finos/legend-shared';
18
18
  import type { DataCubeConfiguration } from '../../core/model/DataCubeConfiguration.js';
19
19
  import { DataCubeColumnKind } from '../../core/DataCubeQueryEngine.js';
20
20
  import { type DataCubeQuerySnapshot } from '../../core/DataCubeQuerySnapshot.js';
21
- import { _toCol } from '../../core/model/DataCubeColumn.js';
21
+ import { _findCol, _toCol } from '../../core/model/DataCubeColumn.js';
22
22
  import {
23
23
  DataCubeEditorColumnSelectorColumnState,
24
24
  DataCubeEditorColumnSelectorState,
@@ -42,12 +42,11 @@ export class DataCubeEditorVerticalPivotColumnSelectorState extends DataCubeEdit
42
42
  (column) =>
43
43
  column.kind === DataCubeColumnKind.DIMENSION &&
44
44
  // exclude group-level extended columns
45
- !this._editor.groupExtendColumns.find(
46
- (col) => col.name === column.name,
47
- ) &&
45
+ !_findCol(this._editor.groupExtendColumns, column.name) &&
48
46
  // exclude pivot columns
49
- !this._editor.horizontalPivots.selector.selectedColumns.find(
50
- (col) => col.name === column.name,
47
+ !_findCol(
48
+ this._editor.horizontalPivots.selector.selectedColumns,
49
+ column.name,
51
50
  ),
52
51
  )
53
52
  .map(
@@ -69,7 +68,7 @@ export class DataCubeEditorVerticalPivotsPanelState
69
68
  adaptPropagatedChanges(): void {
70
69
  this.selector.setSelectedColumns(
71
70
  this.selector.selectedColumns.filter((column) =>
72
- this.selector.availableColumns.find((col) => col.name === column.name),
71
+ _findCol(this.selector.availableColumns, column.name),
73
72
  ),
74
73
  );
75
74
  }
@@ -52,6 +52,7 @@ import {
52
52
  _serializeValueSpecification,
53
53
  _deserializeValueSpecification,
54
54
  } from '../../core/DataCubeQueryBuilderUtils.js';
55
+ import { _findCol } from '../../core/model/DataCubeColumn.js';
55
56
 
56
57
  export abstract class DataCubeColumnBaseEditorState {
57
58
  protected readonly uuid = uuid();
@@ -244,9 +245,7 @@ export abstract class DataCubeColumnBaseEditorState {
244
245
  this.buildExtendBaseQuery(),
245
246
  this.view.source,
246
247
  );
247
- let returnType = returnRelationType.columns.find(
248
- (col) => col.name === this._name,
249
- )?.type;
248
+ let returnType = _findCol(returnRelationType.columns, this._name)?.type;
250
249
  returnType =
251
250
  returnType && isPrimitiveType(returnType) ? returnType : undefined;
252
251
  this.setReturnType(returnType);
@@ -20,6 +20,7 @@ import {
20
20
  type DataCubeQuerySnapshotExtendedColumn,
21
21
  } from '../../core/DataCubeQuerySnapshot.js';
22
22
  import {
23
+ _findCol,
23
24
  _toCol,
24
25
  type DataCubeColumn,
25
26
  } from '../../core/model/DataCubeColumn.js';
@@ -45,7 +46,7 @@ import {
45
46
  DataCubeColumnKind,
46
47
  getDataType,
47
48
  } from '../../core/DataCubeQueryEngine.js';
48
- import { buildDefaultColumnConfiguration } from '../../core/DataCubeConfigurationBuilder.js';
49
+ import { newColumnConfiguration } from '../../core/DataCubeConfigurationBuilder.js';
49
50
  import { _lambda } from '../../core/DataCubeQueryBuilderUtils.js';
50
51
  import { EngineError } from '@finos/legend-graph';
51
52
 
@@ -142,21 +143,21 @@ export class DataCubeExtendManagerState extends DataCubeQuerySnapshotController
142
143
  }
143
144
 
144
145
  if (
145
- !this.leafExtendedColumns.find((col) => col.name === columnName) &&
146
- !this.groupExtendedColumns.find((col) => col.name === columnName)
146
+ !_findCol(this.leafExtendedColumns, columnName) &&
147
+ !_findCol(this.groupExtendedColumns, columnName)
147
148
  ) {
148
149
  return;
149
150
  }
150
151
  const editor = new DataCubeExistingColumnEditorState(
151
152
  this,
152
153
  guaranteeNonNullable(
153
- this.leafExtendedColumns.find((col) => col.name === columnName) ??
154
- this.groupExtendedColumns.find((col) => col.name === columnName),
154
+ _findCol(this.leafExtendedColumns, columnName) ??
155
+ _findCol(this.groupExtendedColumns, columnName),
155
156
  ).data,
156
157
  guaranteeNonNullable(
157
- this.columnConfigurations.find((col) => col.name === columnName),
158
+ _findCol(this.columnConfigurations, columnName),
158
159
  ).kind,
159
- Boolean(this.groupExtendedColumns.find((col) => col.name === columnName)),
160
+ Boolean(_findCol(this.groupExtendedColumns, columnName)),
160
161
  );
161
162
  await editor.initialize();
162
163
  this.existingColumnEditors.push(editor);
@@ -169,7 +170,7 @@ export class DataCubeExtendManagerState extends DataCubeQuerySnapshotController
169
170
  columnKind: DataCubeColumnKind | undefined,
170
171
  editor: DataCubeNewColumnState,
171
172
  ) {
172
- const columnConfiguration = buildDefaultColumnConfiguration(column);
173
+ const columnConfiguration = newColumnConfiguration(column);
173
174
  if (columnKind) {
174
175
  columnConfiguration.kind = columnKind;
175
176
  columnConfiguration.excludedFromPivot =
@@ -197,14 +198,14 @@ export class DataCubeExtendManagerState extends DataCubeQuerySnapshotController
197
198
  columnKind: DataCubeColumnKind | undefined,
198
199
  ) {
199
200
  if (
200
- !this.leafExtendedColumns.find((col) => col.name === columnName) &&
201
- !this.groupExtendedColumns.find((col) => col.name === columnName)
201
+ !_findCol(this.leafExtendedColumns, columnName) &&
202
+ !_findCol(this.groupExtendedColumns, columnName)
202
203
  ) {
203
204
  return;
204
205
  }
205
206
 
206
207
  const columnConfiguration = guaranteeNonNullable(
207
- this.columnConfigurations.find((col) => col.name === columnName),
208
+ _findCol(this.columnConfigurations, columnName),
208
209
  );
209
210
 
210
211
  const task = this.view.taskService.newTask('Column update check');
@@ -326,8 +327,8 @@ export class DataCubeExtendManagerState extends DataCubeQuerySnapshotController
326
327
 
327
328
  async deleteColumn(columnName: string) {
328
329
  if (
329
- !this.leafExtendedColumns.find((col) => col.name === columnName) &&
330
- !this.groupExtendedColumns.find((col) => col.name === columnName)
330
+ !_findCol(this.leafExtendedColumns, columnName) &&
331
+ !_findCol(this.groupExtendedColumns, columnName)
331
332
  ) {
332
333
  return;
333
334
  }
@@ -37,6 +37,7 @@ import {
37
37
  } from '../../core/model/DataCubeConfiguration.js';
38
38
  import type { DisplayState } from '../../services/DataCubeLayoutService.js';
39
39
  import { DataCubeFilterEditor } from '../../../components/view/filter/DataCubeFilterEditor.js';
40
+ import { _findCol } from '../../core/model/DataCubeColumn.js';
40
41
 
41
42
  /**
42
43
  * This query editor state backs the form editor for filter. It batches changes made
@@ -295,10 +296,7 @@ export class DataCubeFilterEditorState extends DataCubeQuerySnapshotController {
295
296
  );
296
297
  // NOTE: filtering group-level extended columns is not supported
297
298
  this.columns = configuration.columns.filter(
298
- (column) =>
299
- !snapshot.data.groupExtendedColumns.find(
300
- (col) => col.name === column.name,
301
- ),
299
+ (column) => !_findCol(snapshot.data.groupExtendedColumns, column.name),
302
300
  );
303
301
 
304
302
  this.tree.nodes = new Map<string, DataCubeFilterEditorTreeNode>();
@@ -31,18 +31,19 @@ import {
31
31
  pruneObject,
32
32
  } from '@finos/legend-shared';
33
33
  import { buildExecutableQuery } from '../../core/DataCubeQueryBuilder.js';
34
- import { type TabularDataSet, V1_Lambda } from '@finos/legend-graph';
34
+ import {
35
+ PureClientVersion,
36
+ type TabularDataSet,
37
+ V1_Lambda,
38
+ } from '@finos/legend-graph';
35
39
  import { makeObservable, observable, runInAction } from 'mobx';
36
40
  import type {
37
41
  DataCubeConfiguration,
38
42
  DataCubeConfigurationColorKey,
39
43
  } from '../../core/model/DataCubeConfiguration.js';
40
44
  import { type DataCubeQuerySnapshot } from '../../core/DataCubeQuerySnapshot.js';
41
- import { _sortByColName } from '../../core/model/DataCubeColumn.js';
42
- import {
43
- isPivotResultColumnName,
44
- type DataCubeQueryFunctionMap,
45
- } from '../../core/DataCubeQueryEngine.js';
45
+ import { _findCol, _sortByColName } from '../../core/model/DataCubeColumn.js';
46
+ import { isPivotResultColumnName } from '../../core/DataCubeQueryEngine.js';
46
47
  import { buildQuerySnapshot } from './DataCubeGridQuerySnapshotBuilder.js';
47
48
  import { AlertType } from '../../services/DataCubeAlertService.js';
48
49
  import { sum } from 'mathjs';
@@ -260,6 +261,7 @@ async function getCastColumns(
260
261
  const snapshot = currentSnapshot.clone();
261
262
  guaranteeNonNullable(snapshot.data.pivot).castColumns = [];
262
263
  snapshot.data.groupBy = undefined;
264
+ snapshot.data.groupExtendedColumns = [];
263
265
  snapshot.data.sortColumns = [];
264
266
  snapshot.data.limit = 0;
265
267
  const query = buildExecutableQuery(
@@ -277,18 +279,6 @@ async function getCastColumns(
277
279
  filterOperations,
278
280
  aggregateOperations,
279
281
  ) => {
280
- const _unprocess = (funcMapKey: keyof DataCubeQueryFunctionMap) => {
281
- const func = funcMap[funcMapKey];
282
- if (func) {
283
- sequence.splice(sequence.indexOf(func), 1);
284
- funcMap[funcMapKey] = undefined;
285
- }
286
- };
287
-
288
- if (funcMap.groupExtend) {
289
- _unprocess('groupExtend');
290
- }
291
-
292
282
  // when both pivot and groupBy present, we need to account for the count column
293
283
  // in the cast expression
294
284
  if (funcMap.pivot && currentSnapshot.data.groupBy) {
@@ -304,6 +294,11 @@ async function getCastColumns(
304
294
  debug: view.settingService.getBooleanValue(
305
295
  DataCubeSettingKey.DEBUGGER__ENABLE_DEBUG_MODE,
306
296
  ),
297
+ clientVersion: view.settingService.getBooleanValue(
298
+ DataCubeSettingKey.DEBUGGER__USE_DEV_CLIENT_PROTOCOL_VERSION,
299
+ )
300
+ ? PureClientVersion.VX_X_X
301
+ : undefined,
307
302
  });
308
303
 
309
304
  return result.result.builder.columns.map((column) => ({
@@ -380,8 +375,9 @@ export class DataCubeGridClientServerSideDataSource
380
375
  newSnapshot.data.pivot.castColumns = castColumns;
381
376
  newSnapshot.data.sortColumns = newSnapshot.data.sortColumns.filter(
382
377
  (column) =>
383
- [...castColumns, ...newSnapshot.data.groupExtendedColumns].find(
384
- (col) => column.name === col.name,
378
+ _findCol(
379
+ [...castColumns, ...newSnapshot.data.groupExtendedColumns],
380
+ column.name,
385
381
  ),
386
382
  );
387
383
  } catch (error) {
@@ -430,6 +426,11 @@ export class DataCubeGridClientServerSideDataSource
430
426
  debug: this._view.settingService.getBooleanValue(
431
427
  DataCubeSettingKey.DEBUGGER__ENABLE_DEBUG_MODE,
432
428
  ),
429
+ clientVersion: this._view.settingService.getBooleanValue(
430
+ DataCubeSettingKey.DEBUGGER__USE_DEV_CLIENT_PROTOCOL_VERSION,
431
+ )
432
+ ? PureClientVersion.VX_X_X
433
+ : undefined,
433
434
  },
434
435
  );
435
436
  const rowData = buildRowData(result.result.result, newSnapshot);
@@ -21,9 +21,13 @@
21
21
  * AG Grid, from the query snapshot.
22
22
  ***************************************************************************************/
23
23
 
24
- import { type DataCubeQuerySnapshot } from '../../core/DataCubeQuerySnapshot.js';
24
+ import {
25
+ type DataCubeQuerySnapshot,
26
+ type DataCubeQuerySnapshotPivot,
27
+ } from '../../core/DataCubeQuerySnapshot.js';
25
28
  import {
26
29
  _findCol,
30
+ _toCol,
27
31
  type DataCubeColumn,
28
32
  } from '../../core/model/DataCubeColumn.js';
29
33
  import type {
@@ -61,11 +65,11 @@ import {
61
65
  last,
62
66
  getQueryParameters,
63
67
  getQueryParameterValue,
64
- guaranteeNonNullable,
65
68
  isNonNullable,
66
69
  isNullable,
67
70
  isNumber,
68
71
  isValidUrl,
72
+ assertTrue,
69
73
  } from '@finos/legend-shared';
70
74
  import type {
71
75
  DataCubeColumnConfiguration,
@@ -216,17 +220,15 @@ function _displaySpec(columnData: ColumnData) {
216
220
  column.hideFromView ||
217
221
  !column.isSelected ||
218
222
  (Boolean(
219
- snapshot.data.pivot &&
220
- !snapshot.data.pivot.castColumns.find((col) => col.name === name),
223
+ snapshot.data.pivot && !_findCol(snapshot.data.pivot.castColumns, name),
221
224
  ) &&
222
- !snapshot.data.groupExtendedColumns.find((col) => col.name === name)),
225
+ !_findCol(snapshot.data.groupExtendedColumns, name)),
223
226
  lockVisible:
224
227
  !column.isSelected ||
225
228
  (Boolean(
226
- snapshot.data.pivot &&
227
- !snapshot.data.pivot.castColumns.find((col) => col.name === name),
229
+ snapshot.data.pivot && !_findCol(snapshot.data.pivot.castColumns, name),
228
230
  ) &&
229
- !snapshot.data.groupExtendedColumns.find((col) => col.name === name)),
231
+ !_findCol(snapshot.data.groupExtendedColumns, name)),
230
232
  pinned:
231
233
  column.pinned !== undefined
232
234
  ? column.pinned === DataCubeColumnPinPlacement.RIGHT
@@ -643,7 +645,7 @@ function generatePivotResultColumnHeaderTooltip(
643
645
  return values.join(' / ');
644
646
  }
645
647
  if (values.length === snapshot.data.pivot.columns.length + 1) {
646
- const baseColumnName = guaranteeNonNullable(values[values.length - 1]);
648
+ const baseColumnName = at(values, values.length - 1);
647
649
  const columnConfiguration = _findCol(configuration.columns, baseColumnName);
648
650
  return `Column = ${
649
651
  columnConfiguration
@@ -783,6 +785,53 @@ function generateDefinitionForPivotResultColumns(
783
785
  return columnDefs;
784
786
  }
785
787
 
788
+ /**
789
+ * We tried to push-down to the DB level to ensure a particular order
790
+ * for the pivot result columns, we do so by preceding pivot() with a sort().
791
+ *
792
+ * Implementations of pivot() is highly non-standard across different DBs, so
793
+ * this rearranging needs to be done client-side.
794
+ */
795
+ function rearrangePivotResultColumns(
796
+ pivotResultColumns: DataCubeColumn[],
797
+ pivotData: DataCubeQuerySnapshotPivot,
798
+ configuration: DataCubeConfiguration,
799
+ ) {
800
+ try {
801
+ const columns: (DataCubeColumn & { values: string[] })[] = [];
802
+ for (const pivotResultColumn of pivotResultColumns) {
803
+ const column = {
804
+ ...pivotResultColumn,
805
+ values: pivotResultColumn.name
806
+ .split(PIVOT_COLUMN_NAME_VALUE_SEPARATOR)
807
+ .slice(0, -1), // remove the last entry
808
+ };
809
+ assertTrue(column.values.length === pivotData.columns.length);
810
+ columns.push(column);
811
+ }
812
+ const columnConfigs = pivotData.columns
813
+ .map((col) => configuration.getColumn(col.name))
814
+ .filter(isNonNullable);
815
+ assertTrue(columnConfigs.length === pivotData.columns.length);
816
+
817
+ // apply multi dimensional sorts by starting from the last pivot column to the first
818
+ for (let i = pivotData.columns.length - 1; i >= 0; i--) {
819
+ const direction =
820
+ columnConfigs[i]?.pivotSortDirection ??
821
+ DataCubeQuerySortDirection.ASCENDING;
822
+ columns.sort((a, b) =>
823
+ direction === DataCubeQuerySortDirection.ASCENDING
824
+ ? at(a.values, i).localeCompare(at(b.values, i))
825
+ : at(b.values, i).localeCompare(at(a.values, i)),
826
+ );
827
+ }
828
+
829
+ return columns.map((col) => _toCol(col));
830
+ } catch {
831
+ return pivotResultColumns;
832
+ }
833
+ }
834
+
786
835
  export function generateColumnDefs(
787
836
  snapshot: DataCubeQuerySnapshot,
788
837
  configuration: DataCubeConfiguration,
@@ -795,17 +844,17 @@ export function generateColumnDefs(
795
844
  // must still be included in the column definitions, and made hidden instead.
796
845
  const columns = configuration.columns.filter(
797
846
  (col) =>
798
- snapshot.data.selectColumns.find((column) => column.name === col.name) ??
799
- snapshot.data.groupExtendedColumns.find(
800
- (column) => column.name === col.name,
801
- ),
847
+ _findCol(snapshot.data.selectColumns, col.name) ??
848
+ _findCol(snapshot.data.groupExtendedColumns, col.name),
802
849
  );
803
850
  let pivotResultColumns: DataCubeColumn[] = [];
804
851
 
805
852
  if (snapshot.data.pivot) {
806
853
  const castColumns = snapshot.data.pivot.castColumns;
807
- pivotResultColumns = castColumns.filter((col) =>
808
- isPivotResultColumnName(col.name),
854
+ pivotResultColumns = rearrangePivotResultColumns(
855
+ castColumns.filter((col) => isPivotResultColumnName(col.name)),
856
+ snapshot.data.pivot,
857
+ configuration,
809
858
  );
810
859
  }
811
860
 
@@ -26,15 +26,16 @@ import {
26
26
  type DataCubeQuerySnapshotSortColumn,
27
27
  } from '../../core/DataCubeQuerySnapshot.js';
28
28
  import {
29
+ _findCol,
29
30
  _toCol,
30
31
  type DataCubeColumn,
31
32
  } from '../../core/model/DataCubeColumn.js';
32
33
  import { DataCubeQuerySnapshotController } from '../../services/DataCubeQuerySnapshotService.js';
33
34
  import {
34
- type DataCubeQuerySortDirection,
35
35
  type DataCubeColumnPinPlacement,
36
36
  DataCubeColumnKind,
37
37
  DataCubeQueryFilterGroupOperator,
38
+ DataCubeQuerySortDirection,
38
39
  isPivotResultColumnName,
39
40
  getPivotResultColumnBaseColumnName,
40
41
  } from '../../core/DataCubeQueryEngine.js';
@@ -92,7 +93,7 @@ export class DataCubeGridControllerState extends DataCubeQuerySnapshotController
92
93
  | undefined;
93
94
 
94
95
  getColumnConfiguration(colName: string | undefined) {
95
- return this.configuration.columns.find((col) => col.name === colName);
96
+ return _findCol(this.configuration.columns, colName);
96
97
  }
97
98
 
98
99
  // --------------------------------- FILTER ---------------------------------
@@ -184,7 +185,7 @@ export class DataCubeGridControllerState extends DataCubeQuerySnapshotController
184
185
  ];
185
186
 
186
187
  const rearrangedSelectColumns = columns
187
- .map((colName) => this.selectColumns.find((col) => col.name === colName))
188
+ .map((colName) => _findCol(this.selectColumns, colName))
188
189
  .filter(isNonNullable);
189
190
  this.selectColumns = [
190
191
  ...rearrangedSelectColumns,
@@ -221,14 +222,15 @@ export class DataCubeGridControllerState extends DataCubeQuerySnapshotController
221
222
  }
222
223
 
223
224
  getHorizontalPivotableColumn(colName: string) {
224
- return this.configuration.columns
225
- .filter(
225
+ return _findCol(
226
+ this.configuration.columns.filter(
226
227
  (col) =>
227
228
  col.kind === DataCubeColumnKind.DIMENSION &&
228
229
  // exclude group-level extended columns
229
- !this.groupExtendedColumns.find((column) => column.name === col.name),
230
- )
231
- .find((col) => col.name === colName);
230
+ !_findCol(this.groupExtendedColumns, col.name),
231
+ ),
232
+ colName,
233
+ );
232
234
  }
233
235
 
234
236
  setHorizontalPivotOnColumn(colName: string) {
@@ -277,20 +279,17 @@ export class DataCubeGridControllerState extends DataCubeQuerySnapshotController
277
279
  verticalPivotColumns: DataCubeColumn[] = [];
278
280
 
279
281
  getVerticalPivotableColumn(colName: string) {
280
- return this.configuration.columns
281
- .filter(
282
+ return _findCol(
283
+ this.configuration.columns.filter(
282
284
  (col) =>
283
285
  col.kind === DataCubeColumnKind.DIMENSION &&
284
286
  // exclude group-level extended columns
285
- !this.groupExtendedColumns.find(
286
- (column) => column.name === col.name,
287
- ) &&
287
+ !_findCol(this.groupExtendedColumns, col.name) &&
288
288
  // exclude pivot columns
289
- !this.horizontalPivotColumns.find(
290
- (column) => column.name === col.name,
291
- ),
292
- )
293
- .find((col) => col.name === colName);
289
+ !_findCol(this.horizontalPivotColumns, col.name),
290
+ ),
291
+ colName,
292
+ );
294
293
  }
295
294
 
296
295
  setVerticalPivotOnColumn(colName: string) {
@@ -349,12 +348,15 @@ export class DataCubeGridControllerState extends DataCubeQuerySnapshotController
349
348
  if (!colName) {
350
349
  return undefined;
351
350
  }
352
- return [
353
- ...(this.horizontalPivotCastColumns.length
354
- ? this.horizontalPivotCastColumns
355
- : this.selectColumns),
356
- ...this.groupExtendedColumns,
357
- ].find((col) => col.name === colName);
351
+ return _findCol(
352
+ [
353
+ ...(this.horizontalPivotCastColumns.length
354
+ ? this.horizontalPivotCastColumns
355
+ : this.selectColumns),
356
+ ...this.groupExtendedColumns,
357
+ ],
358
+ colName,
359
+ );
358
360
  }
359
361
 
360
362
  setSortByColumn(colName: string, direction: DataCubeQuerySortDirection) {
@@ -430,23 +432,24 @@ export class DataCubeGridControllerState extends DataCubeQuerySnapshotController
430
432
 
431
433
  private propagateChanges(baseSnapshot: DataCubeQuerySnapshot) {
432
434
  this.verticalPivotColumns = this.verticalPivotColumns.filter(
433
- (col) =>
434
- !this.horizontalPivotColumns.find((column) => column.name === col.name),
435
+ (col) => !_findCol(this.horizontalPivotColumns, col.name),
435
436
  );
436
437
  this.configuration.pivotLayout.expandedPaths = _pruneExpandedPaths(
437
438
  baseSnapshot.data.groupBy?.columns ?? [],
438
439
  this.verticalPivotColumns,
439
440
  this.configuration.pivotLayout.expandedPaths,
440
441
  );
442
+ this.configuration.columns.forEach((col) => {
443
+ col.pivotSortDirection = _findCol(this.horizontalPivotColumns, col.name)
444
+ ? (col.pivotSortDirection ?? DataCubeQuerySortDirection.ASCENDING)
445
+ : undefined;
446
+ });
441
447
 
442
448
  this.selectColumns = uniqBy(
443
449
  [
444
450
  ...this.configuration.columns.filter(
445
451
  (col) =>
446
- col.isSelected &&
447
- !this.groupExtendedColumns.find(
448
- (column) => column.name === col.name,
449
- ),
452
+ col.isSelected && !_findCol(this.groupExtendedColumns, col.name),
450
453
  ),
451
454
  ...this.horizontalPivotColumns,
452
455
  ...this.verticalPivotColumns,
@@ -468,9 +471,7 @@ export class DataCubeGridControllerState extends DataCubeQuerySnapshotController
468
471
  (column) =>
469
472
  this.getColumnConfiguration(column.name)?.kind ===
470
473
  DataCubeColumnKind.DIMENSION &&
471
- !this.horizontalPivotColumns.find(
472
- (col) => col.name === column.name,
473
- ),
474
+ !_findCol(this.horizontalPivotColumns, column.name),
474
475
  ),
475
476
  ]
476
477
  : [
@@ -482,7 +483,7 @@ export class DataCubeGridControllerState extends DataCubeQuerySnapshotController
482
483
  (col) => col.name,
483
484
  );
484
485
  this.sortColumns = this.sortColumns.filter((col) =>
485
- sortableColumns.find((column) => column.name === col.name),
486
+ _findCol(sortableColumns, col.name),
486
487
  );
487
488
  }
488
489