@finos/legend-query-builder 0.2.3 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (261) hide show
  1. package/lib/components/QueryBuilder.d.ts.map +1 -1
  2. package/lib/components/QueryBuilder.js +42 -9
  3. package/lib/components/QueryBuilder.js.map +1 -1
  4. package/lib/components/QueryBuilderComponentTestUtils.d.ts.map +1 -1
  5. package/lib/components/QueryBuilderComponentTestUtils.js +2 -5
  6. package/lib/components/QueryBuilderComponentTestUtils.js.map +1 -1
  7. package/lib/components/QueryBuilderDiffPanel.js +2 -2
  8. package/lib/components/QueryBuilderDiffPanel.js.map +1 -1
  9. package/lib/components/QueryBuilderResultPanel.js +3 -3
  10. package/lib/components/QueryBuilderSideBar.d.ts.map +1 -1
  11. package/lib/components/QueryBuilderSideBar.js +2 -1
  12. package/lib/components/QueryBuilderSideBar.js.map +1 -1
  13. package/lib/components/QueryBuilder_TestID.d.ts +1 -0
  14. package/lib/components/QueryBuilder_TestID.d.ts.map +1 -1
  15. package/lib/components/QueryBuilder_TestID.js +1 -0
  16. package/lib/components/QueryBuilder_TestID.js.map +1 -1
  17. package/lib/components/explorer/QueryBuilderMilestoningEditor.d.ts.map +1 -1
  18. package/lib/components/explorer/QueryBuilderMilestoningEditor.js +2 -2
  19. package/lib/components/explorer/QueryBuilderMilestoningEditor.js.map +1 -1
  20. package/lib/components/fetch-structure/QueryBuilderOlapGroupByPanel.d.ts +23 -0
  21. package/lib/components/fetch-structure/QueryBuilderOlapGroupByPanel.d.ts.map +1 -0
  22. package/lib/components/fetch-structure/QueryBuilderOlapGroupByPanel.js +363 -0
  23. package/lib/components/fetch-structure/QueryBuilderOlapGroupByPanel.js.map +1 -0
  24. package/lib/components/fetch-structure/QueryBuilderPostFilterPanel.d.ts.map +1 -1
  25. package/lib/components/fetch-structure/QueryBuilderPostFilterPanel.js +21 -53
  26. package/lib/components/fetch-structure/QueryBuilderPostFilterPanel.js.map +1 -1
  27. package/lib/components/fetch-structure/QueryBuilderPostTDSPanel.d.ts +23 -0
  28. package/lib/components/fetch-structure/QueryBuilderPostTDSPanel.d.ts.map +1 -0
  29. package/lib/components/fetch-structure/QueryBuilderPostTDSPanel.js +32 -0
  30. package/lib/components/fetch-structure/QueryBuilderPostTDSPanel.js.map +1 -0
  31. package/lib/components/fetch-structure/QueryBuilderResultModifierPanel.d.ts.map +1 -1
  32. package/lib/components/fetch-structure/QueryBuilderResultModifierPanel.js +2 -1
  33. package/lib/components/fetch-structure/QueryBuilderResultModifierPanel.js.map +1 -1
  34. package/lib/components/fetch-structure/QueryBuilderTDSComponentHelper.d.ts +27 -0
  35. package/lib/components/fetch-structure/QueryBuilderTDSComponentHelper.d.ts.map +1 -0
  36. package/lib/components/fetch-structure/QueryBuilderTDSComponentHelper.js +61 -0
  37. package/lib/components/fetch-structure/QueryBuilderTDSComponentHelper.js.map +1 -0
  38. package/lib/components/fetch-structure/QueryBuilderTDSPanel.d.ts.map +1 -1
  39. package/lib/components/fetch-structure/QueryBuilderTDSPanel.js +4 -13
  40. package/lib/components/fetch-structure/QueryBuilderTDSPanel.js.map +1 -1
  41. package/lib/components/shared/LambdaEditor.d.ts.map +1 -1
  42. package/lib/components/shared/LambdaEditor.js +23 -7
  43. package/lib/components/shared/LambdaEditor.js.map +1 -1
  44. package/lib/components/workflows/ServiceQueryBuilder.d.ts.map +1 -1
  45. package/lib/components/workflows/ServiceQueryBuilder.js +5 -1
  46. package/lib/components/workflows/ServiceQueryBuilder.js.map +1 -1
  47. package/lib/graphManager/QueryBuilderHashUtils.d.ts +14 -0
  48. package/lib/graphManager/QueryBuilderHashUtils.d.ts.map +1 -1
  49. package/lib/graphManager/QueryBuilderHashUtils.js +15 -0
  50. package/lib/graphManager/QueryBuilderHashUtils.js.map +1 -1
  51. package/lib/graphManager/QueryBuilderSupportedFunctions.d.ts +7 -1
  52. package/lib/graphManager/QueryBuilderSupportedFunctions.d.ts.map +1 -1
  53. package/lib/graphManager/QueryBuilderSupportedFunctions.js +7 -0
  54. package/lib/graphManager/QueryBuilderSupportedFunctions.js.map +1 -1
  55. package/lib/graphManager/protocol/pure/QueryBuilder_PureProtocolProcessorPlugin.d.ts.map +1 -1
  56. package/lib/graphManager/protocol/pure/QueryBuilder_PureProtocolProcessorPlugin.js +4 -1
  57. package/lib/graphManager/protocol/pure/QueryBuilder_PureProtocolProcessorPlugin.js.map +1 -1
  58. package/lib/graphManager/protocol/pure/v1/V1_QueryValueSpecificationBuilderHelper.d.ts +1 -0
  59. package/lib/graphManager/protocol/pure/v1/V1_QueryValueSpecificationBuilderHelper.d.ts.map +1 -1
  60. package/lib/graphManager/protocol/pure/v1/V1_QueryValueSpecificationBuilderHelper.js +50 -0
  61. package/lib/graphManager/protocol/pure/v1/V1_QueryValueSpecificationBuilderHelper.js.map +1 -1
  62. package/lib/index.css +2 -2
  63. package/lib/index.css.map +1 -1
  64. package/lib/package.json +6 -6
  65. package/lib/stores/QueryBuilderStateBuilder.d.ts.map +1 -1
  66. package/lib/stores/QueryBuilderStateBuilder.js +7 -1
  67. package/lib/stores/QueryBuilderStateBuilder.js.map +1 -1
  68. package/lib/stores/QueryBuilderStateTestUtils.d.ts.map +1 -1
  69. package/lib/stores/QueryBuilderStateTestUtils.js +2 -4
  70. package/lib/stores/QueryBuilderStateTestUtils.js.map +1 -1
  71. package/lib/stores/QueryBuilderTypeaheadHelper.js +2 -2
  72. package/lib/stores/explorer/QueryBuilderExplorerState.js +3 -3
  73. package/lib/stores/fetch-structure/QueryBuilderFetchStructureImplementationState.d.ts +1 -0
  74. package/lib/stores/fetch-structure/QueryBuilderFetchStructureImplementationState.d.ts.map +1 -1
  75. package/lib/stores/fetch-structure/QueryBuilderFetchStructureImplementationState.js +3 -0
  76. package/lib/stores/fetch-structure/QueryBuilderFetchStructureImplementationState.js.map +1 -1
  77. package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeState.d.ts.map +1 -1
  78. package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeState.js +2 -1
  79. package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeState.js.map +1 -1
  80. package/lib/stores/fetch-structure/tds/QueryBuilderTDSColumnState_.d.ts +24 -0
  81. package/lib/stores/fetch-structure/tds/QueryBuilderTDSColumnState_.d.ts.map +1 -0
  82. package/lib/stores/fetch-structure/tds/QueryBuilderTDSColumnState_.js +20 -0
  83. package/lib/stores/fetch-structure/tds/QueryBuilderTDSColumnState_.js.map +1 -0
  84. package/lib/stores/fetch-structure/tds/QueryBuilderTDSHelper.d.ts +23 -0
  85. package/lib/stores/fetch-structure/tds/QueryBuilderTDSHelper.d.ts.map +1 -0
  86. package/lib/stores/fetch-structure/tds/QueryBuilderTDSHelper.js +41 -0
  87. package/lib/stores/fetch-structure/tds/QueryBuilderTDSHelper.js.map +1 -0
  88. package/lib/stores/fetch-structure/tds/QueryBuilderTDSState.d.ts +11 -0
  89. package/lib/stores/fetch-structure/tds/QueryBuilderTDSState.d.ts.map +1 -1
  90. package/lib/stores/fetch-structure/tds/QueryBuilderTDSState.js +44 -1
  91. package/lib/stores/fetch-structure/tds/QueryBuilderTDSState.js.map +1 -1
  92. package/lib/stores/fetch-structure/tds/QueryResultSetModifierState.d.ts +2 -2
  93. package/lib/stores/fetch-structure/tds/QueryResultSetModifierState.d.ts.map +1 -1
  94. package/lib/stores/fetch-structure/tds/QueryResultSetModifierState.js +2 -2
  95. package/lib/stores/fetch-structure/tds/QueryResultSetModifierState.js.map +1 -1
  96. package/lib/stores/fetch-structure/tds/aggregation/QueryBuilderAggregateOperator.js +1 -1
  97. package/lib/stores/fetch-structure/tds/aggregation/QueryBuilderAggregationState.d.ts +4 -4
  98. package/lib/stores/fetch-structure/tds/aggregation/QueryBuilderAggregationState.d.ts.map +1 -1
  99. package/lib/stores/fetch-structure/tds/aggregation/QueryBuilderAggregationState.js +8 -7
  100. package/lib/stores/fetch-structure/tds/aggregation/QueryBuilderAggregationState.js.map +1 -1
  101. package/lib/stores/fetch-structure/tds/olapGroupBy/QueryBuilderOlapGroupByOperatorLoader.d.ts +18 -0
  102. package/lib/stores/fetch-structure/tds/olapGroupBy/QueryBuilderOlapGroupByOperatorLoader.d.ts.map +1 -0
  103. package/lib/stores/fetch-structure/tds/olapGroupBy/QueryBuilderOlapGroupByOperatorLoader.js +36 -0
  104. package/lib/stores/fetch-structure/tds/olapGroupBy/QueryBuilderOlapGroupByOperatorLoader.js.map +1 -0
  105. package/lib/stores/fetch-structure/tds/olapGroupBy/QueryBuilderOlapGroupByState.d.ts +91 -0
  106. package/lib/stores/fetch-structure/tds/olapGroupBy/QueryBuilderOlapGroupByState.d.ts.map +1 -0
  107. package/lib/stores/fetch-structure/tds/olapGroupBy/QueryBuilderOlapGroupByState.js +272 -0
  108. package/lib/stores/fetch-structure/tds/olapGroupBy/QueryBuilderOlapGroupByState.js.map +1 -0
  109. package/lib/stores/fetch-structure/tds/olapGroupBy/QueryBuilderOlapGroupByStateBuilder.d.ts +19 -0
  110. package/lib/stores/fetch-structure/tds/olapGroupBy/QueryBuilderOlapGroupByStateBuilder.d.ts.map +1 -0
  111. package/lib/stores/fetch-structure/tds/olapGroupBy/QueryBuilderOlapGroupByStateBuilder.js +100 -0
  112. package/lib/stores/fetch-structure/tds/olapGroupBy/QueryBuilderOlapGroupByStateBuilder.js.map +1 -0
  113. package/lib/stores/fetch-structure/tds/olapGroupBy/QueryBuilderOlapGroupByValueSpecificationBuilder.d.ts +19 -0
  114. package/lib/stores/fetch-structure/tds/olapGroupBy/QueryBuilderOlapGroupByValueSpecificationBuilder.d.ts.map +1 -0
  115. package/lib/stores/fetch-structure/tds/olapGroupBy/QueryBuilderOlapGroupByValueSpecificationBuilder.js +83 -0
  116. package/lib/stores/fetch-structure/tds/olapGroupBy/QueryBuilderOlapGroupByValueSpecificationBuilder.js.map +1 -0
  117. package/lib/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapOperator_.d.ts +29 -0
  118. package/lib/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapOperator_.d.ts.map +1 -0
  119. package/lib/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapOperator_.js +30 -0
  120. package/lib/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapOperator_.js.map +1 -0
  121. package/lib/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapOperator_Average.d.ts +25 -0
  122. package/lib/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapOperator_Average.d.ts.map +1 -0
  123. package/lib/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapOperator_Average.js +50 -0
  124. package/lib/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapOperator_Average.js.map +1 -0
  125. package/lib/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapOperator_Count.d.ts +25 -0
  126. package/lib/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapOperator_Count.d.ts.map +1 -0
  127. package/lib/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapOperator_Count.js +51 -0
  128. package/lib/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapOperator_Count.js.map +1 -0
  129. package/lib/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapOperator_Max.d.ts +25 -0
  130. package/lib/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapOperator_Max.d.ts.map +1 -0
  131. package/lib/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapOperator_Max.js +50 -0
  132. package/lib/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapOperator_Max.js.map +1 -0
  133. package/lib/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapOperator_Min.d.ts +25 -0
  134. package/lib/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapOperator_Min.d.ts.map +1 -0
  135. package/lib/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapOperator_Min.js +50 -0
  136. package/lib/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapOperator_Min.js.map +1 -0
  137. package/lib/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapOperator_Sum.d.ts +25 -0
  138. package/lib/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapOperator_Sum.d.ts.map +1 -0
  139. package/lib/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapOperator_Sum.js +51 -0
  140. package/lib/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapOperator_Sum.js.map +1 -0
  141. package/lib/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapRankOperator_AverageRank_.d.ts +24 -0
  142. package/lib/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapRankOperator_AverageRank_.d.ts.map +1 -0
  143. package/lib/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapRankOperator_AverageRank_.js +48 -0
  144. package/lib/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapRankOperator_AverageRank_.js.map +1 -0
  145. package/lib/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapRankOperator_DenseRank_.d.ts +24 -0
  146. package/lib/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapRankOperator_DenseRank_.d.ts.map +1 -0
  147. package/lib/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapRankOperator_DenseRank_.js +48 -0
  148. package/lib/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapRankOperator_DenseRank_.js.map +1 -0
  149. package/lib/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapRankOperator_Rank_.d.ts +24 -0
  150. package/lib/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapRankOperator_Rank_.d.ts.map +1 -0
  151. package/lib/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapRankOperator_Rank_.js +48 -0
  152. package/lib/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapRankOperator_Rank_.js.map +1 -0
  153. package/lib/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapRankOperator_RowNumber_.d.ts +24 -0
  154. package/lib/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapRankOperator_RowNumber_.d.ts.map +1 -0
  155. package/lib/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapRankOperator_RowNumber_.js +48 -0
  156. package/lib/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapRankOperator_RowNumber_.js.map +1 -0
  157. package/lib/stores/fetch-structure/tds/post-filter/QueryBuilderPostFilterOperator.d.ts +1 -1
  158. package/lib/stores/fetch-structure/tds/post-filter/QueryBuilderPostFilterOperator.js +2 -2
  159. package/lib/stores/fetch-structure/tds/post-filter/QueryBuilderPostFilterState.d.ts +6 -4
  160. package/lib/stores/fetch-structure/tds/post-filter/QueryBuilderPostFilterState.d.ts.map +1 -1
  161. package/lib/stores/fetch-structure/tds/post-filter/QueryBuilderPostFilterState.js +14 -3
  162. package/lib/stores/fetch-structure/tds/post-filter/QueryBuilderPostFilterState.js.map +1 -1
  163. package/lib/stores/fetch-structure/tds/post-filter/QueryBuilderPostFilterStateBuilder.d.ts.map +1 -1
  164. package/lib/stores/fetch-structure/tds/post-filter/QueryBuilderPostFilterStateBuilder.js +8 -11
  165. package/lib/stores/fetch-structure/tds/post-filter/QueryBuilderPostFilterStateBuilder.js.map +1 -1
  166. package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperatorHelper.d.ts +2 -2
  167. package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperatorHelper.d.ts.map +1 -1
  168. package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperatorHelper.js +5 -1
  169. package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperatorHelper.js.map +1 -1
  170. package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperatorValueSpecificationBuilder.js +4 -4
  171. package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_Contain.js +1 -1
  172. package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_EndWith.js +1 -1
  173. package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_Equal.js +3 -3
  174. package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_GreaterThan.js +3 -3
  175. package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_GreaterThanEqual.js +1 -1
  176. package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_In.js +2 -2
  177. package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_IsEmpty.d.ts +2 -2
  178. package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_IsEmpty.js +3 -3
  179. package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_LessThan.js +3 -3
  180. package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_LessThanEqual.js +1 -1
  181. package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_StartWith.js +1 -1
  182. package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionColumnState.d.ts +4 -6
  183. package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionColumnState.d.ts.map +1 -1
  184. package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionColumnState.js +6 -5
  185. package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionColumnState.js.map +1 -1
  186. package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionStateBuilder.d.ts.map +1 -1
  187. package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionStateBuilder.js +1 -0
  188. package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionStateBuilder.js.map +1 -1
  189. package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionValueSpecificationBuilder.d.ts.map +1 -1
  190. package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionValueSpecificationBuilder.js +6 -3
  191. package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionValueSpecificationBuilder.js.map +1 -1
  192. package/lib/stores/filter/QueryBuilderFilterState.d.ts +2 -0
  193. package/lib/stores/filter/QueryBuilderFilterState.d.ts.map +1 -1
  194. package/lib/stores/filter/QueryBuilderFilterState.js +6 -0
  195. package/lib/stores/filter/QueryBuilderFilterState.js.map +1 -1
  196. package/package.json +13 -13
  197. package/src/components/QueryBuilder.tsx +110 -35
  198. package/src/components/QueryBuilderComponentTestUtils.tsx +9 -11
  199. package/src/components/QueryBuilderDiffPanel.tsx +2 -2
  200. package/src/components/QueryBuilderResultPanel.tsx +4 -4
  201. package/src/components/QueryBuilderSideBar.tsx +4 -1
  202. package/src/components/QueryBuilder_TestID.ts +1 -0
  203. package/src/components/explorer/QueryBuilderMilestoningEditor.tsx +2 -3
  204. package/src/components/fetch-structure/QueryBuilderOlapGroupByPanel.tsx +1140 -0
  205. package/src/components/fetch-structure/QueryBuilderPostFilterPanel.tsx +31 -106
  206. package/src/components/fetch-structure/QueryBuilderPostTDSPanel.tsx +69 -0
  207. package/src/components/fetch-structure/QueryBuilderResultModifierPanel.tsx +4 -1
  208. package/src/components/fetch-structure/QueryBuilderTDSComponentHelper.tsx +118 -0
  209. package/src/components/fetch-structure/QueryBuilderTDSPanel.tsx +4 -23
  210. package/src/components/shared/LambdaEditor.tsx +25 -22
  211. package/src/components/workflows/ServiceQueryBuilder.tsx +10 -2
  212. package/src/graphManager/QueryBuilderHashUtils.ts +16 -0
  213. package/src/graphManager/QueryBuilderSupportedFunctions.ts +7 -0
  214. package/src/graphManager/protocol/pure/QueryBuilder_PureProtocolProcessorPlugin.ts +14 -0
  215. package/src/graphManager/protocol/pure/v1/V1_QueryValueSpecificationBuilderHelper.ts +129 -0
  216. package/src/stores/QueryBuilderStateBuilder.ts +14 -1
  217. package/src/stores/QueryBuilderStateTestUtils.ts +9 -13
  218. package/src/stores/QueryBuilderTypeaheadHelper.ts +2 -2
  219. package/src/stores/explorer/QueryBuilderExplorerState.ts +3 -3
  220. package/src/stores/fetch-structure/QueryBuilderFetchStructureImplementationState.ts +4 -0
  221. package/src/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeState.ts +2 -1
  222. package/src/stores/fetch-structure/tds/QueryBuilderTDSColumnState_.ts +28 -0
  223. package/src/stores/fetch-structure/tds/QueryBuilderTDSHelper.ts +79 -0
  224. package/src/stores/fetch-structure/tds/QueryBuilderTDSState.ts +68 -1
  225. package/src/stores/fetch-structure/tds/QueryResultSetModifierState.ts +2 -2
  226. package/src/stores/fetch-structure/tds/aggregation/QueryBuilderAggregateOperator.ts +1 -1
  227. package/src/stores/fetch-structure/tds/aggregation/QueryBuilderAggregationState.ts +11 -9
  228. package/src/stores/fetch-structure/tds/olapGroupBy/QueryBuilderOlapGroupByOperatorLoader.ts +39 -0
  229. package/src/stores/fetch-structure/tds/olapGroupBy/QueryBuilderOlapGroupByState.ts +377 -0
  230. package/src/stores/fetch-structure/tds/olapGroupBy/QueryBuilderOlapGroupByStateBuilder.ts +237 -0
  231. package/src/stores/fetch-structure/tds/olapGroupBy/QueryBuilderOlapGroupByValueSpecificationBuilder.ts +148 -0
  232. package/src/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapOperator_.ts +43 -0
  233. package/src/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapOperator_Average.ts +56 -0
  234. package/src/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapOperator_Count.ts +57 -0
  235. package/src/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapOperator_Max.ts +56 -0
  236. package/src/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapOperator_Min.ts +56 -0
  237. package/src/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapOperator_Sum.ts +57 -0
  238. package/src/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapRankOperator_AverageRank_.ts +54 -0
  239. package/src/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapRankOperator_DenseRank_.ts +54 -0
  240. package/src/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapRankOperator_Rank_.ts +54 -0
  241. package/src/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapRankOperator_RowNumber_.ts +54 -0
  242. package/src/stores/fetch-structure/tds/post-filter/QueryBuilderPostFilterOperator.ts +2 -2
  243. package/src/stores/fetch-structure/tds/post-filter/QueryBuilderPostFilterState.ts +22 -10
  244. package/src/stores/fetch-structure/tds/post-filter/QueryBuilderPostFilterStateBuilder.ts +11 -19
  245. package/src/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperatorHelper.ts +8 -7
  246. package/src/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperatorValueSpecificationBuilder.ts +4 -4
  247. package/src/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_Contain.ts +1 -1
  248. package/src/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_EndWith.ts +1 -1
  249. package/src/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_Equal.ts +3 -3
  250. package/src/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_GreaterThan.ts +3 -3
  251. package/src/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_GreaterThanEqual.ts +1 -1
  252. package/src/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_In.ts +2 -2
  253. package/src/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_IsEmpty.ts +3 -3
  254. package/src/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_LessThan.ts +3 -3
  255. package/src/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_LessThanEqual.ts +1 -1
  256. package/src/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_StartWith.ts +1 -1
  257. package/src/stores/fetch-structure/tds/projection/QueryBuilderProjectionColumnState.ts +9 -11
  258. package/src/stores/fetch-structure/tds/projection/QueryBuilderProjectionStateBuilder.ts +1 -0
  259. package/src/stores/fetch-structure/tds/projection/QueryBuilderProjectionValueSpecificationBuilder.ts +8 -4
  260. package/src/stores/filter/QueryBuilderFilterState.ts +7 -0
  261. package/tsconfig.json +19 -0
@@ -0,0 +1,54 @@
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 { PRIMITIVE_TYPE, type Type } from '@finos/legend-graph';
18
+ import { hashArray } from '@finos/legend-shared';
19
+ import { QUERY_BUILDER_HASH_STRUCTURE } from '../../../../../graphManager/QueryBuilderHashUtils.js';
20
+ import { QUERY_BUILDER_SUPPORTED_FUNCTIONS } from '../../../../../graphManager/QueryBuilderSupportedFunctions.js';
21
+ import { QueryBuilderTDSOlapOperator } from './QueryBuilderTDSOlapOperator_.js';
22
+
23
+ export class QueryBuilderTDSOlapRankOperator_RowNumber extends QueryBuilderTDSOlapOperator {
24
+ getLabel(): string {
25
+ return 'row number';
26
+ }
27
+
28
+ get pureFunc(): string {
29
+ return QUERY_BUILDER_SUPPORTED_FUNCTIONS.OLAP_ROW_NUMBER;
30
+ }
31
+
32
+ get hashCode(): string {
33
+ return hashArray([QUERY_BUILDER_HASH_STRUCTURE.OLAP_OPERATOR_ROW_NUMBER]);
34
+ }
35
+
36
+ isCompatibleWithType(type: Type | undefined): boolean {
37
+ if (type) {
38
+ return (
39
+ [
40
+ PRIMITIVE_TYPE.STRING,
41
+ PRIMITIVE_TYPE.BOOLEAN,
42
+ PRIMITIVE_TYPE.NUMBER,
43
+ PRIMITIVE_TYPE.INTEGER,
44
+ PRIMITIVE_TYPE.DECIMAL,
45
+ PRIMITIVE_TYPE.FLOAT,
46
+ PRIMITIVE_TYPE.DATE,
47
+ PRIMITIVE_TYPE.STRICTDATE,
48
+ PRIMITIVE_TYPE.DATETIME,
49
+ ] as string[]
50
+ ).includes(type.path);
51
+ }
52
+ return true;
53
+ }
54
+ }
@@ -31,7 +31,7 @@ export abstract class QueryBuilderPostFilterOperator implements Hashable {
31
31
 
32
32
  abstract getLabel(): string;
33
33
 
34
- getTdsColumnGetter(): TDS_COLUMN_GETTER | undefined {
34
+ getTDSColumnGetter(): TDS_COLUMN_GETTER | undefined {
35
35
  return undefined;
36
36
  }
37
37
 
@@ -48,7 +48,7 @@ export abstract class QueryBuilderPostFilterOperator implements Hashable {
48
48
  isCompatibleWithPostFilterColumn(
49
49
  postFilterState: PostFilterConditionState,
50
50
  ): boolean {
51
- const columnType = postFilterState.columnState.getReturnType();
51
+ const columnType = postFilterState.columnState.getColumnType();
52
52
  if (columnType) {
53
53
  return this.isCompatibleWithType(columnType);
54
54
  }
@@ -38,8 +38,9 @@ import {
38
38
  uuid,
39
39
  filterByType,
40
40
  ActionState,
41
- type Hashable,
42
41
  hashArray,
42
+ uniq,
43
+ type Hashable,
43
44
  } from '@finos/legend-shared';
44
45
  import {
45
46
  action,
@@ -50,10 +51,10 @@ import {
50
51
  observable,
51
52
  } from 'mobx';
52
53
  import { DEFAULT_POST_FILTER_LAMBDA_VARIABLE_NAME } from '../../../QueryBuilderConfig.js';
53
- import type { QueryBuilderAggregateColumnState } from '../aggregation/QueryBuilderAggregationState.js';
54
+ import { QueryBuilderAggregateColumnState } from '../aggregation/QueryBuilderAggregationState.js';
54
55
  import type { QueryBuilderPostFilterOperator } from './QueryBuilderPostFilterOperator.js';
55
56
  import {
56
- type QueryBuilderProjectionColumnState,
57
+ QueryBuilderProjectionColumnState,
57
58
  type QueryBuilderProjectionColumnDragSource,
58
59
  QueryBuilderDerivationProjectionColumnState,
59
60
  } from '../projection/QueryBuilderProjectionColumnState.js';
@@ -65,6 +66,7 @@ import {
65
66
  import { QUERY_BUILDER_GROUP_OPERATION } from '../../../QueryBuilderGroupOperationHelper.js';
66
67
  import type { QueryBuilderTDSState } from '../QueryBuilderTDSState.js';
67
68
  import { QUERY_BUILDER_HASH_STRUCTURE } from '../../../../graphManager/QueryBuilderHashUtils.js';
69
+ import type { QueryBuilderTDSColumnState } from '../QueryBuilderTDSColumnState_.js';
68
70
 
69
71
  export enum QUERY_BUILDER_POST_FILTER_DND_TYPE {
70
72
  GROUP_CONDITION = 'GROUP_CONDITION',
@@ -303,9 +305,7 @@ export class QueryBuilderPostFilterTreeBlankConditionNodeData
303
305
 
304
306
  export class PostFilterConditionState implements Hashable {
305
307
  readonly postFilterState: QueryBuilderPostFilterState;
306
- columnState:
307
- | QueryBuilderProjectionColumnState
308
- | QueryBuilderAggregateColumnState;
308
+ columnState: QueryBuilderTDSColumnState;
309
309
  value?: ValueSpecification | undefined;
310
310
  operator: QueryBuilderPostFilterOperator;
311
311
  typeaheadSearchResults: string[] | undefined;
@@ -313,9 +313,7 @@ export class PostFilterConditionState implements Hashable {
313
313
 
314
314
  constructor(
315
315
  postFilterState: QueryBuilderPostFilterState,
316
- colState:
317
- | QueryBuilderProjectionColumnState
318
- | QueryBuilderAggregateColumnState,
316
+ colState: QueryBuilderTDSColumnState,
319
317
  value: ValueSpecification | undefined,
320
318
  operator: QueryBuilderPostFilterOperator | undefined,
321
319
  ) {
@@ -363,12 +361,18 @@ export class PostFilterConditionState implements Hashable {
363
361
  try {
364
362
  this.typeaheadSearchState.inProgress();
365
363
  this.typeaheadSearchResults = undefined;
364
+ const _columnState =
365
+ this.columnState instanceof QueryBuilderProjectionColumnState ||
366
+ this.columnState instanceof QueryBuilderAggregateColumnState
367
+ ? this.columnState
368
+ : undefined;
369
+ const columnState = guaranteeNonNullable(_columnState);
366
370
  if (performTypeahead(this.value)) {
367
371
  const result =
368
372
  (yield this.postFilterState.tdsState.queryBuilderState.graphManagerState.graphManager.executeMapping(
369
373
  buildProjectionColumnTypeaheadQuery(
370
374
  this.postFilterState.tdsState.queryBuilderState,
371
- this.columnState,
375
+ columnState,
372
376
  this.value,
373
377
  ),
374
378
  guaranteeNonNullable(
@@ -536,6 +540,14 @@ export class QueryBuilderPostFilterState
536
540
  : undefined;
537
541
  }
538
542
 
543
+ get referencedTDSColumns(): QueryBuilderTDSColumnState[] {
544
+ return uniq(
545
+ Array.from(this.nodes.values())
546
+ .filter(filterByType(QueryBuilderPostFilterTreeConditionNodeData))
547
+ .map((n) => n.condition.columnState),
548
+ );
549
+ }
550
+
539
551
  getRootNode(): QueryBuilderPostFilterTreeNodeData | undefined {
540
552
  assertTrue(
541
553
  this.rootIds.length < 2,
@@ -32,7 +32,9 @@ import {
32
32
  guaranteeType,
33
33
  UnsupportedOperationError,
34
34
  } from '@finos/legend-shared';
35
- import type { QueryBuilderAggregateColumnState } from '../aggregation/QueryBuilderAggregationState.js';
35
+ import { QueryBuilderDerivationProjectionColumnState } from '../projection/QueryBuilderProjectionColumnState.js';
36
+ import type { QueryBuilderTDSColumnState } from '../QueryBuilderTDSColumnState_.js';
37
+ import { getTDSColumnState } from '../QueryBuilderTDSHelper.js';
36
38
  import type { QueryBuilderPostFilterOperator } from './QueryBuilderPostFilterOperator.js';
37
39
  import {
38
40
  type QueryBuilderPostFilterState,
@@ -43,20 +45,16 @@ import {
43
45
  TDS_COLUMN_GETTER,
44
46
  getTypeFromDerivedProperty,
45
47
  } from './QueryBuilderPostFilterState.js';
46
- import {
47
- type QueryBuilderProjectionColumnState,
48
- QueryBuilderDerivationProjectionColumnState,
49
- } from '../projection/QueryBuilderProjectionColumnState.js';
50
- import { toGroupOperation } from '../../../QueryBuilderGroupOperationHelper.js';
51
- import { QueryBuilderTDSState } from '../QueryBuilderTDSState.js';
52
- import type { QueryBuilderState } from '../../../QueryBuilderState.js';
53
48
  import { QUERY_BUILDER_SUPPORTED_FUNCTIONS } from '../../../../graphManager/QueryBuilderSupportedFunctions.js';
49
+ import type { QueryBuilderState } from '../../../QueryBuilderState.js';
50
+ import { QueryBuilderTDSState } from '../QueryBuilderTDSState.js';
51
+ import { toGroupOperation } from '../../../QueryBuilderGroupOperationHelper.js';
54
52
 
55
53
  const findProjectionColumnState = (
56
54
  propertyExpression: AbstractPropertyExpression,
57
55
  postFilterState: QueryBuilderPostFilterState,
58
- ): QueryBuilderProjectionColumnState | QueryBuilderAggregateColumnState => {
59
- const tdsState = postFilterState.tdsState;
56
+ ): QueryBuilderTDSColumnState => {
57
+ const projectionState = postFilterState.tdsState;
60
58
  const properyExpressionName = propertyExpression.func.value.name;
61
59
  assertTrue(
62
60
  Object.values(TDS_COLUMN_GETTER).includes(
@@ -76,13 +74,7 @@ const findProjectionColumnState = (
76
74
  ).values[0],
77
75
  'Can`t process TDS column expression: Column should be a string primitive instance value',
78
76
  );
79
- const columnStates = [
80
- ...tdsState.aggregationState.columns,
81
- ...tdsState.projectionColumns,
82
- ];
83
- const columnState = guaranteeNonNullable(
84
- columnStates.find((c) => c.columnName === columnName),
85
- );
77
+ const columnState = getTDSColumnState(projectionState, columnName);
86
78
  if (
87
79
  tdsColumnGetter !== TDS_COLUMN_GETTER.IS_NULL &&
88
80
  tdsColumnGetter !== TDS_COLUMN_GETTER.IS_NOT_NULL
@@ -97,7 +89,7 @@ const findProjectionColumnState = (
97
89
  }
98
90
  return columnState;
99
91
  }
100
- const columnType = guaranteeNonNullable(columnState.getReturnType());
92
+ const columnType = guaranteeNonNullable(columnState.getColumnType());
101
93
  assertTrue(
102
94
  (getTDSColumnDerivedProperyFromType(columnType) as string) ===
103
95
  tdsColumnGetter,
@@ -116,7 +108,7 @@ export const buildPostFilterConditionState = (
116
108
  operator: QueryBuilderPostFilterOperator,
117
109
  ): PostFilterConditionState | undefined => {
118
110
  let postConditionState: PostFilterConditionState | undefined;
119
- const tdsColumnGetter = operator.getTdsColumnGetter();
111
+ const tdsColumnGetter = operator.getTDSColumnGetter();
120
112
  if (
121
113
  tdsColumnGetter &&
122
114
  expression instanceof AbstractPropertyExpression &&
@@ -20,20 +20,21 @@ import {
20
20
  } from '@finos/legend-graph';
21
21
  import { UnsupportedOperationError } from '@finos/legend-shared';
22
22
  import { QueryBuilderAggregateColumnState } from '../../aggregation/QueryBuilderAggregationState.js';
23
- import {
24
- type QueryBuilderProjectionColumnState,
25
- QueryBuilderSimpleProjectionColumnState,
26
- } from '../../projection/QueryBuilderProjectionColumnState.js';
23
+ import { QueryBuilderOlapGroupByColumnState } from '../../olapGroupBy/QueryBuilderOlapGroupByState.js';
24
+ import { QueryBuilderSimpleProjectionColumnState } from '../../projection/QueryBuilderProjectionColumnState.js';
25
+ import type { QueryBuilderTDSColumnState } from '../../QueryBuilderTDSColumnState_.js';
27
26
 
28
27
  export const getColumnMultiplicity = (
29
- columnState:
30
- | QueryBuilderProjectionColumnState
31
- | QueryBuilderAggregateColumnState,
28
+ columnState: QueryBuilderTDSColumnState | QueryBuilderAggregateColumnState,
32
29
  ): Multiplicity => {
33
30
  if (columnState instanceof QueryBuilderAggregateColumnState) {
34
31
  return columnState.aggregationState.tdsState.queryBuilderState.graphManagerState.graph.getTypicalMultiplicity(
35
32
  TYPICAL_MULTIPLICITY_TYPE.ONE,
36
33
  );
34
+ } else if (columnState instanceof QueryBuilderOlapGroupByColumnState) {
35
+ return columnState.olapState.tdsState.queryBuilderState.graphManagerState.graph.getTypicalMultiplicity(
36
+ TYPICAL_MULTIPLICITY_TYPE.ONE,
37
+ );
37
38
  } else if (columnState instanceof QueryBuilderSimpleProjectionColumnState) {
38
39
  return columnState.propertyExpressionState.propertyExpression.func.value
39
40
  .multiplicity;
@@ -63,11 +63,11 @@ export const buildPostFilterConditionExpression = (
63
63
  multiplicityOne,
64
64
  );
65
65
  let tdsDerivedPropertyName: TDS_COLUMN_GETTER;
66
- const correspondingTdsDerivedProperty = operator.getTdsColumnGetter();
67
- if (correspondingTdsDerivedProperty) {
68
- tdsDerivedPropertyName = correspondingTdsDerivedProperty;
66
+ const correspondingTDSDerivedProperty = operator.getTDSColumnGetter();
67
+ if (correspondingTDSDerivedProperty) {
68
+ tdsDerivedPropertyName = correspondingTDSDerivedProperty;
69
69
  } else {
70
- const type = guaranteeNonNullable(colState.getReturnType());
70
+ const type = guaranteeNonNullable(colState.getColumnType());
71
71
  tdsDerivedPropertyName = getTDSColumnDerivedProperyFromType(type);
72
72
  }
73
73
  tdsPropertyExpression.func = PropertyExplicitReference.create(
@@ -72,7 +72,7 @@ export class QueryBuilderPostFilterOperator_Contain
72
72
  postFilterConditionState: PostFilterConditionState,
73
73
  ): ValueSpecification {
74
74
  const propertyType = guaranteeNonNullable(
75
- postFilterConditionState.columnState.getReturnType(),
75
+ postFilterConditionState.columnState.getColumnType(),
76
76
  );
77
77
  switch (propertyType.path) {
78
78
  case PRIMITIVE_TYPE.STRING: {
@@ -69,7 +69,7 @@ export class QueryBuilderPostFilterOperator_EndWith
69
69
  getDefaultFilterConditionValue(
70
70
  postFilterConditionState: PostFilterConditionState,
71
71
  ): ValueSpecification {
72
- const propertyType = postFilterConditionState.columnState.getReturnType();
72
+ const propertyType = postFilterConditionState.columnState.getColumnType();
73
73
  switch (propertyType?.path) {
74
74
  case PRIMITIVE_TYPE.STRING: {
75
75
  return buildPrimitiveInstanceValue(
@@ -91,7 +91,7 @@ export class QueryBuilderPostFilterOperator_Equal
91
91
  return isTypeCompatibleForAssignment(
92
92
  getNonCollectionValueSpecificationType(valueSpecification),
93
93
  guaranteeNonNullable(
94
- postFilterConditionState.columnState.getReturnType(),
94
+ postFilterConditionState.columnState.getColumnType(),
95
95
  ),
96
96
  );
97
97
  }
@@ -102,7 +102,7 @@ export class QueryBuilderPostFilterOperator_Equal
102
102
  postFilterConditionState: PostFilterConditionState,
103
103
  ): ValueSpecification {
104
104
  const propertyType = guaranteeNonNullable(
105
- postFilterConditionState.columnState.getReturnType(),
105
+ postFilterConditionState.columnState.getColumnType(),
106
106
  );
107
107
  switch (propertyType.path) {
108
108
  case PRIMITIVE_TYPE.STRING:
@@ -166,7 +166,7 @@ export class QueryBuilderPostFilterOperator_Equal
166
166
  return buildPostFilterConditionExpression(
167
167
  postFilterConditionState,
168
168
  this,
169
- postFilterConditionState.columnState.getReturnType()?.path ===
169
+ postFilterConditionState.columnState.getColumnType()?.path ===
170
170
  PRIMITIVE_TYPE.DATETIME &&
171
171
  postFilterConditionState.value?.genericType?.value.rawType.path !==
172
172
  PRIMITIVE_TYPE.DATETIME
@@ -74,7 +74,7 @@ export class QueryBuilderPostFilterOperator_GreaterThan
74
74
  ? getNonCollectionValueSpecificationType(postFilterConditionState.value)
75
75
  : undefined,
76
76
  guaranteeNonNullable(
77
- postFilterConditionState.columnState.getReturnType(),
77
+ postFilterConditionState.columnState.getColumnType(),
78
78
  ),
79
79
  );
80
80
  }
@@ -82,7 +82,7 @@ export class QueryBuilderPostFilterOperator_GreaterThan
82
82
  getDefaultFilterConditionValue(
83
83
  postFilterConditionState: PostFilterConditionState,
84
84
  ): ValueSpecification {
85
- const propertyType = postFilterConditionState.columnState.getReturnType();
85
+ const propertyType = postFilterConditionState.columnState.getColumnType();
86
86
  switch (propertyType?.path) {
87
87
  case PRIMITIVE_TYPE.NUMBER:
88
88
  case PRIMITIVE_TYPE.DECIMAL:
@@ -120,7 +120,7 @@ export class QueryBuilderPostFilterOperator_GreaterThan
120
120
  return buildPostFilterConditionExpression(
121
121
  postFilterConditionState,
122
122
  this,
123
- postFilterConditionState.columnState.getReturnType()?.path ===
123
+ postFilterConditionState.columnState.getColumnType()?.path ===
124
124
  PRIMITIVE_TYPE.DATETIME &&
125
125
  postFilterConditionState.value?.genericType?.value.rawType.path !==
126
126
  PRIMITIVE_TYPE.DATETIME
@@ -43,7 +43,7 @@ export class QueryBuilderPostFilterOperator_GreaterThanEqual extends QueryBuilde
43
43
  return buildPostFilterConditionExpression(
44
44
  postFilterConditionState,
45
45
  this,
46
- postFilterConditionState.columnState.getReturnType()?.path ===
46
+ postFilterConditionState.columnState.getColumnType()?.path ===
47
47
  PRIMITIVE_TYPE.DATETIME &&
48
48
  postFilterConditionState.value?.genericType?.value.rawType.path !==
49
49
  PRIMITIVE_TYPE.DATETIME
@@ -75,7 +75,7 @@ export class QueryBuilderPostFilterOperator_In
75
75
  postFilterConditionState: PostFilterConditionState,
76
76
  ): boolean {
77
77
  const propertyType = guaranteeNonNullable(
78
- postFilterConditionState.columnState.getReturnType(),
78
+ postFilterConditionState.columnState.getColumnType(),
79
79
  );
80
80
  const valueSpec = postFilterConditionState.value;
81
81
  if (valueSpec instanceof CollectionInstanceValue) {
@@ -128,7 +128,7 @@ export class QueryBuilderPostFilterOperator_In
128
128
  TYPICAL_MULTIPLICITY_TYPE.ONE,
129
129
  );
130
130
  const propertyType = guaranteeNonNullable(
131
- postFilterConditionState.columnState.getReturnType(),
131
+ postFilterConditionState.columnState.getColumnType(),
132
132
  );
133
133
  return new CollectionInstanceValue(
134
134
  multiplicityOne,
@@ -42,7 +42,7 @@ export class QueryBuilderPostFilterOperator_IsEmpty
42
42
  return 'is empty';
43
43
  }
44
44
 
45
- override getTdsColumnGetter(): TDS_COLUMN_GETTER | undefined {
45
+ override getTDSColumnGetter(): TDS_COLUMN_GETTER | undefined {
46
46
  return TDS_COLUMN_GETTER.IS_NULL;
47
47
  }
48
48
 
@@ -62,7 +62,7 @@ export class QueryBuilderPostFilterOperator_IsEmpty
62
62
  override isCompatibleWithPostFilterColumn(
63
63
  postFilterState: PostFilterConditionState,
64
64
  ): boolean {
65
- const columnType = postFilterState.columnState.getReturnType();
65
+ const columnType = postFilterState.columnState.getColumnType();
66
66
  if (columnType && this.isCompatibleWithType(columnType)) {
67
67
  if (
68
68
  postFilterState.columnState instanceof
@@ -118,7 +118,7 @@ export class QueryBuilderPostFilterOperator_IsNotEmpty extends QueryBuilderPostF
118
118
  return `is not empty`;
119
119
  }
120
120
 
121
- override getTdsColumnGetter(): TDS_COLUMN_GETTER | undefined {
121
+ override getTDSColumnGetter(): TDS_COLUMN_GETTER | undefined {
122
122
  return TDS_COLUMN_GETTER.IS_NOT_NULL;
123
123
  }
124
124
 
@@ -74,7 +74,7 @@ export class QueryBuilderPostFilterOperator_LessThan
74
74
  ? getNonCollectionValueSpecificationType(postFilterConditionState.value)
75
75
  : undefined,
76
76
  guaranteeNonNullable(
77
- postFilterConditionState.columnState.getReturnType(),
77
+ postFilterConditionState.columnState.getColumnType(),
78
78
  ),
79
79
  );
80
80
  }
@@ -82,7 +82,7 @@ export class QueryBuilderPostFilterOperator_LessThan
82
82
  getDefaultFilterConditionValue(
83
83
  postFilterConditionState: PostFilterConditionState,
84
84
  ): ValueSpecification {
85
- const propertyType = postFilterConditionState.columnState.getReturnType();
85
+ const propertyType = postFilterConditionState.columnState.getColumnType();
86
86
  switch (propertyType?.path) {
87
87
  case PRIMITIVE_TYPE.NUMBER:
88
88
  case PRIMITIVE_TYPE.DECIMAL:
@@ -120,7 +120,7 @@ export class QueryBuilderPostFilterOperator_LessThan
120
120
  return buildPostFilterConditionExpression(
121
121
  postFilterConditionState,
122
122
  this,
123
- postFilterConditionState.columnState.getReturnType()?.path ===
123
+ postFilterConditionState.columnState.getColumnType()?.path ===
124
124
  PRIMITIVE_TYPE.DATETIME &&
125
125
  postFilterConditionState.value?.genericType?.value.rawType.path !==
126
126
  PRIMITIVE_TYPE.DATETIME
@@ -46,7 +46,7 @@ export class QueryBuilderPostFilterOperator_LessThanEqual
46
46
  return buildPostFilterConditionExpression(
47
47
  postFilterConditionState,
48
48
  this,
49
- postFilterConditionState.columnState.getReturnType()?.path ===
49
+ postFilterConditionState.columnState.getColumnType()?.path ===
50
50
  PRIMITIVE_TYPE.DATETIME &&
51
51
  postFilterConditionState.value?.genericType?.value.rawType.path !==
52
52
  PRIMITIVE_TYPE.DATETIME
@@ -70,7 +70,7 @@ export class QueryBuilderPostFilterOperator_StartWith
70
70
  getDefaultFilterConditionValue(
71
71
  postFilterConditionState: PostFilterConditionState,
72
72
  ): ValueSpecification {
73
- const propertyType = postFilterConditionState.columnState.getReturnType();
73
+ const propertyType = postFilterConditionState.columnState.getColumnType();
74
74
  switch (propertyType?.path) {
75
75
  case PRIMITIVE_TYPE.STRING: {
76
76
  return buildPrimitiveInstanceValue(
@@ -19,7 +19,6 @@ import {
19
19
  type GeneratorFn,
20
20
  LogEvent,
21
21
  assertErrorThrown,
22
- uuid,
23
22
  guaranteeNonNullable,
24
23
  assertTrue,
25
24
  assertNonEmptyString,
@@ -50,11 +49,12 @@ import {
50
49
  RawLambda,
51
50
  stub_RawLambda,
52
51
  } from '@finos/legend-graph';
52
+ import { QueryBuilderTDSColumnState } from '../QueryBuilderTDSColumnState_.js';
53
+ import type { QueryBuilderTDSState } from '../QueryBuilderTDSState.js';
53
54
  import {
54
55
  DEFAULT_LAMBDA_VARIABLE_NAME,
55
56
  QUERY_BUILDER_SOURCE_ID_LABEL,
56
57
  } from '../../../QueryBuilderConfig.js';
57
- import type { QueryBuilderTDSState } from '../QueryBuilderTDSState.js';
58
58
  import { QUERY_BUILDER_HASH_STRUCTURE } from '../../../../graphManager/QueryBuilderHashUtils.js';
59
59
  import { LambdaEditorState } from '../../../shared/LambdaEditorState.js';
60
60
 
@@ -64,12 +64,15 @@ export interface QueryBuilderProjectionColumnDragSource {
64
64
  columnState: QueryBuilderProjectionColumnState;
65
65
  }
66
66
 
67
- export abstract class QueryBuilderProjectionColumnState implements Hashable {
68
- readonly uuid = uuid();
67
+ export abstract class QueryBuilderProjectionColumnState
68
+ extends QueryBuilderTDSColumnState
69
+ implements Hashable
70
+ {
69
71
  tdsState: QueryBuilderTDSState;
70
72
  columnName: string;
71
73
 
72
74
  constructor(tdsState: QueryBuilderTDSState, columnName: string) {
75
+ super();
73
76
  makeObservable(this, {
74
77
  uuid: false,
75
78
  tdsState: false,
@@ -77,7 +80,6 @@ export abstract class QueryBuilderProjectionColumnState implements Hashable {
77
80
  setColumnName: action,
78
81
  hashCode: computed,
79
82
  });
80
-
81
83
  this.tdsState = tdsState;
82
84
  this.columnName = columnName;
83
85
  }
@@ -85,10 +87,6 @@ export abstract class QueryBuilderProjectionColumnState implements Hashable {
85
87
  setColumnName(val: string): void {
86
88
  this.columnName = val;
87
89
  }
88
-
89
- abstract getReturnType(): Type | undefined;
90
-
91
- abstract get hashCode(): string;
92
90
  }
93
91
 
94
92
  export class QueryBuilderSimpleProjectionColumnState
@@ -143,7 +141,7 @@ export class QueryBuilderSimpleProjectionColumnState
143
141
  );
144
142
  }
145
143
 
146
- override getReturnType(): Type | undefined {
144
+ override getColumnType(): Type | undefined {
147
145
  return this.propertyExpressionState.propertyExpression.func.value
148
146
  .genericType.value.rawType;
149
147
  }
@@ -333,7 +331,7 @@ export class QueryBuilderDerivationProjectionColumnState
333
331
  this.setReturnType(resolvedType);
334
332
  }
335
333
 
336
- override getReturnType(): Type | undefined {
334
+ override getColumnType(): Type | undefined {
337
335
  return this.returnType;
338
336
  }
339
337
 
@@ -346,6 +346,7 @@ export const processTDSSortExpression = (
346
346
  QUERY_BUILDER_SUPPORTED_FUNCTIONS.TDS_PROJECT,
347
347
  QUERY_BUILDER_SUPPORTED_FUNCTIONS.TDS_GROUP_BY,
348
348
  QUERY_BUILDER_SUPPORTED_FUNCTIONS.TDS_FILTER,
349
+ QUERY_BUILDER_SUPPORTED_FUNCTIONS.OLAP_GROUPBY,
349
350
  ]),
350
351
  `Can't process sort() expression: only support sort() in TDS expression`,
351
352
  );
@@ -35,10 +35,6 @@ import {
35
35
  guaranteeNonNullable,
36
36
  UnsupportedOperationError,
37
37
  } from '@finos/legend-shared';
38
- import { QUERY_BUILDER_SUPPORTED_FUNCTIONS } from '../../../../graphManager/QueryBuilderSupportedFunctions.js';
39
- import { buildPropertyExpressionChain } from '../../../QueryBuilderValueSpecificationBuilderHelper.js';
40
- import { buildGenericLambdaFunctionInstanceValue } from '../../../QueryBuilderValueSpecificationHelper.js';
41
- import { appendPostFilter } from '../post-filter/QueryBuilderPostFilterValueSpecificationBuilder.js';
42
38
  import {
43
39
  QueryBuilderDerivationProjectionColumnState,
44
40
  QueryBuilderSimpleProjectionColumnState,
@@ -49,6 +45,11 @@ import {
49
45
  type QueryResultSetModifierState,
50
46
  type SortColumnState,
51
47
  } from '../QueryResultSetModifierState.js';
48
+ import { QUERY_BUILDER_SUPPORTED_FUNCTIONS } from '../../../../graphManager/QueryBuilderSupportedFunctions.js';
49
+ import { buildGenericLambdaFunctionInstanceValue } from '../../../QueryBuilderValueSpecificationHelper.js';
50
+ import { buildPropertyExpressionChain } from '../../../QueryBuilderValueSpecificationBuilderHelper.js';
51
+ import { appendOlapGroupByState } from '../olapGroupBy/QueryBuilderOlapGroupByValueSpecificationBuilder.js';
52
+ import { appendPostFilter } from '../post-filter/QueryBuilderPostFilterValueSpecificationBuilder.js';
52
53
 
53
54
  const buildSortExpression = (
54
55
  sortColumnState: SortColumnState,
@@ -396,6 +397,9 @@ export const appendProjection = (
396
397
  lambdaFunction.expressionSequence[0] = projectFunction;
397
398
  }
398
399
 
400
+ // build olapGroupBy
401
+ appendOlapGroupByState(tdsState.olapGroupByState, lambdaFunction);
402
+
399
403
  // build post-filter
400
404
  appendPostFilter(tdsState.postFilterState, lambdaFunction);
401
405
 
@@ -374,6 +374,7 @@ export class QueryBuilderFilterState
374
374
  isRearrangingConditions = false;
375
375
  operators: QueryBuilderFilterOperator[] = [];
376
376
  private _suppressClickawayEventListener = false;
377
+ showPanel = true;
377
378
 
378
379
  constructor(
379
380
  queryBuilderState: QueryBuilderState,
@@ -385,6 +386,7 @@ export class QueryBuilderFilterState
385
386
  selectedNode: observable,
386
387
  isRearrangingConditions: observable,
387
388
  lambdaParameterName: observable,
389
+ showPanel: observable,
388
390
  setLambdaParameterName: action,
389
391
  setRearrangingConditions: action,
390
392
  suppressClickawayEventListener: action,
@@ -398,6 +400,7 @@ export class QueryBuilderFilterState
398
400
  pruneTree: action,
399
401
  simplifyTree: action,
400
402
  collapseTree: action,
403
+ setShowPanel: action,
401
404
  expandTree: action,
402
405
  hashCode: computed,
403
406
  });
@@ -414,6 +417,10 @@ export class QueryBuilderFilterState
414
417
  this.lambdaParameterName = val;
415
418
  }
416
419
 
420
+ setShowPanel(val: boolean): void {
421
+ this.showPanel = val;
422
+ }
423
+
417
424
  setRearrangingConditions(val: boolean): void {
418
425
  this.isRearrangingConditions = val;
419
426
  }
package/tsconfig.json CHANGED
@@ -77,6 +77,8 @@
77
77
  "./src/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeStateBuilder.ts",
78
78
  "./src/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeUtil.ts",
79
79
  "./src/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeValueSpecificationBuilder.ts",
80
+ "./src/stores/fetch-structure/tds/QueryBuilderTDSColumnState_.ts",
81
+ "./src/stores/fetch-structure/tds/QueryBuilderTDSHelper.ts",
80
82
  "./src/stores/fetch-structure/tds/QueryBuilderTDSState.ts",
81
83
  "./src/stores/fetch-structure/tds/QueryResultSetModifierState.ts",
82
84
  "./src/stores/fetch-structure/tds/aggregation/QueryBuilderAggregateOperator.ts",
@@ -94,6 +96,20 @@
94
96
  "./src/stores/fetch-structure/tds/aggregation/operators/QueryBuilderAggregateOperator_StdDev_Population.ts",
95
97
  "./src/stores/fetch-structure/tds/aggregation/operators/QueryBuilderAggregateOperator_StdDev_Sample.ts",
96
98
  "./src/stores/fetch-structure/tds/aggregation/operators/QueryBuilderAggregateOperator_Sum.ts",
99
+ "./src/stores/fetch-structure/tds/olapGroupBy/QueryBuilderOlapGroupByOperatorLoader.ts",
100
+ "./src/stores/fetch-structure/tds/olapGroupBy/QueryBuilderOlapGroupByState.ts",
101
+ "./src/stores/fetch-structure/tds/olapGroupBy/QueryBuilderOlapGroupByStateBuilder.ts",
102
+ "./src/stores/fetch-structure/tds/olapGroupBy/QueryBuilderOlapGroupByValueSpecificationBuilder.ts",
103
+ "./src/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapOperator_.ts",
104
+ "./src/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapOperator_Average.ts",
105
+ "./src/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapOperator_Count.ts",
106
+ "./src/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapOperator_Max.ts",
107
+ "./src/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapOperator_Min.ts",
108
+ "./src/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapOperator_Sum.ts",
109
+ "./src/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapRankOperator_AverageRank_.ts",
110
+ "./src/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapRankOperator_DenseRank_.ts",
111
+ "./src/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapRankOperator_Rank_.ts",
112
+ "./src/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapRankOperator_RowNumber_.ts",
97
113
  "./src/stores/fetch-structure/tds/post-filter/QueryBuilderPostFilterOperator.ts",
98
114
  "./src/stores/fetch-structure/tds/post-filter/QueryBuilderPostFilterOperatorLoader.ts",
99
115
  "./src/stores/fetch-structure/tds/post-filter/QueryBuilderPostFilterState.ts",
@@ -154,8 +170,11 @@
154
170
  "./src/components/explorer/QueryBuilderPropertySearchPanel.tsx",
155
171
  "./src/components/fetch-structure/QueryBuilderFetchStructurePanel.tsx",
156
172
  "./src/components/fetch-structure/QueryBuilderGraphFetchTreePanel.tsx",
173
+ "./src/components/fetch-structure/QueryBuilderOlapGroupByPanel.tsx",
157
174
  "./src/components/fetch-structure/QueryBuilderPostFilterPanel.tsx",
175
+ "./src/components/fetch-structure/QueryBuilderPostTDSPanel.tsx",
158
176
  "./src/components/fetch-structure/QueryBuilderResultModifierPanel.tsx",
177
+ "./src/components/fetch-structure/QueryBuilderTDSComponentHelper.tsx",
159
178
  "./src/components/fetch-structure/QueryBuilderTDSPanel.tsx",
160
179
  "./src/components/filter/QueryBuilderFilterPanel.tsx",
161
180
  "./src/components/shared/BasicValueSpecificationEditor.tsx",