@finos/legend-query-builder 4.17.100 → 4.18.1

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 (278) hide show
  1. package/lib/__test__.d.ts +1 -0
  2. package/lib/__test__.d.ts.map +1 -1
  3. package/lib/__test__.js +1 -0
  4. package/lib/__test__.js.map +1 -1
  5. package/lib/components/QueryBuilder.d.ts.map +1 -1
  6. package/lib/components/QueryBuilder.js +2 -1
  7. package/lib/components/QueryBuilder.js.map +1 -1
  8. package/lib/components/QueryBuilderSideBar.d.ts.map +1 -1
  9. package/lib/components/QueryBuilderSideBar.js +9 -8
  10. package/lib/components/QueryBuilderSideBar.js.map +1 -1
  11. package/lib/components/__test-utils__/QueryBuilderComponentTestUtils.d.ts +5 -0
  12. package/lib/components/__test-utils__/QueryBuilderComponentTestUtils.d.ts.map +1 -1
  13. package/lib/components/__test-utils__/QueryBuilderComponentTestUtils.js +28 -2
  14. package/lib/components/__test-utils__/QueryBuilderComponentTestUtils.js.map +1 -1
  15. package/lib/components/explorer/QueryBuilderExplorerPanel.d.ts.map +1 -1
  16. package/lib/components/explorer/QueryBuilderExplorerPanel.js +48 -5
  17. package/lib/components/explorer/QueryBuilderExplorerPanel.js.map +1 -1
  18. package/lib/components/explorer/QueryBuilderRelationExplorerPanel.d.ts +24 -0
  19. package/lib/components/explorer/QueryBuilderRelationExplorerPanel.d.ts.map +1 -0
  20. package/lib/components/explorer/QueryBuilderRelationExplorerPanel.js +202 -0
  21. package/lib/components/explorer/QueryBuilderRelationExplorerPanel.js.map +1 -0
  22. package/lib/components/fetch-structure/QueryBuilderPostFilterPanel.d.ts.map +1 -1
  23. package/lib/components/fetch-structure/QueryBuilderPostFilterPanel.js.map +1 -1
  24. package/lib/components/fetch-structure/QueryBuilderResultModifierPanel.js +3 -3
  25. package/lib/components/fetch-structure/QueryBuilderResultModifierPanel.js.map +1 -1
  26. package/lib/components/fetch-structure/QueryBuilderTDSPanel.d.ts.map +1 -1
  27. package/lib/components/fetch-structure/QueryBuilderTDSPanel.js +25 -6
  28. package/lib/components/fetch-structure/QueryBuilderTDSPanel.js.map +1 -1
  29. package/lib/components/fetch-structure/QueryBuilderTDSWindowPanel.d.ts.map +1 -1
  30. package/lib/components/fetch-structure/QueryBuilderTDSWindowPanel.js +8 -2
  31. package/lib/components/fetch-structure/QueryBuilderTDSWindowPanel.js.map +1 -1
  32. package/lib/components/workflows/AccessorQueryBuilder.d.ts +18 -0
  33. package/lib/components/workflows/AccessorQueryBuilder.d.ts.map +1 -0
  34. package/lib/components/workflows/AccessorQueryBuilder.js +87 -0
  35. package/lib/components/workflows/AccessorQueryBuilder.js.map +1 -0
  36. package/lib/components/workflows/ClassQueryBuilder.js +5 -5
  37. package/lib/components/workflows/ClassQueryBuilder.js.map +1 -1
  38. package/lib/components/workflows/DataProductQueryBuilder.d.ts.map +1 -1
  39. package/lib/components/workflows/DataProductQueryBuilder.js +13 -12
  40. package/lib/components/workflows/DataProductQueryBuilder.js.map +1 -1
  41. package/lib/data-access-overview.css +1 -1
  42. package/lib/graph/QueryBuilderMetaModelConst.d.ts +6 -0
  43. package/lib/graph/QueryBuilderMetaModelConst.d.ts.map +1 -1
  44. package/lib/graph/QueryBuilderMetaModelConst.js +6 -0
  45. package/lib/graph/QueryBuilderMetaModelConst.js.map +1 -1
  46. package/lib/graph-manager/protocol/pure/QueryBuilder_PureProtocolProcessorPlugin.d.ts.map +1 -1
  47. package/lib/graph-manager/protocol/pure/QueryBuilder_PureProtocolProcessorPlugin.js +7 -1
  48. package/lib/graph-manager/protocol/pure/QueryBuilder_PureProtocolProcessorPlugin.js.map +1 -1
  49. package/lib/graph-manager/protocol/pure/v1/V1_QueryValueSpecificationBuilderHelper.d.ts +2 -0
  50. package/lib/graph-manager/protocol/pure/v1/V1_QueryValueSpecificationBuilderHelper.d.ts.map +1 -1
  51. package/lib/graph-manager/protocol/pure/v1/V1_QueryValueSpecificationBuilderHelper.js +93 -3
  52. package/lib/graph-manager/protocol/pure/v1/V1_QueryValueSpecificationBuilderHelper.js.map +1 -1
  53. package/lib/index.css +2 -2
  54. package/lib/index.css.map +1 -1
  55. package/lib/index.d.ts +3 -1
  56. package/lib/index.d.ts.map +1 -1
  57. package/lib/index.js +3 -1
  58. package/lib/index.js.map +1 -1
  59. package/lib/package.json +1 -1
  60. package/lib/stores/QueryBuilderConfig.d.ts +3 -0
  61. package/lib/stores/QueryBuilderConfig.d.ts.map +1 -1
  62. package/lib/stores/QueryBuilderConfig.js +3 -0
  63. package/lib/stores/QueryBuilderConfig.js.map +1 -1
  64. package/lib/stores/QueryBuilderResultState.d.ts.map +1 -1
  65. package/lib/stores/QueryBuilderResultState.js +6 -2
  66. package/lib/stores/QueryBuilderResultState.js.map +1 -1
  67. package/lib/stores/QueryBuilderState.d.ts +14 -4
  68. package/lib/stores/QueryBuilderState.d.ts.map +1 -1
  69. package/lib/stores/QueryBuilderState.js +41 -13
  70. package/lib/stores/QueryBuilderState.js.map +1 -1
  71. package/lib/stores/QueryBuilderStateBuilder.d.ts +2 -1
  72. package/lib/stores/QueryBuilderStateBuilder.d.ts.map +1 -1
  73. package/lib/stores/QueryBuilderStateBuilder.js +51 -20
  74. package/lib/stores/QueryBuilderStateBuilder.js.map +1 -1
  75. package/lib/stores/QueryBuilderStateHashUtils.d.ts +2 -0
  76. package/lib/stores/QueryBuilderStateHashUtils.d.ts.map +1 -1
  77. package/lib/stores/QueryBuilderStateHashUtils.js +2 -0
  78. package/lib/stores/QueryBuilderStateHashUtils.js.map +1 -1
  79. package/lib/stores/QueryBuilderTypeaheadHelper.js +6 -6
  80. package/lib/stores/QueryBuilderTypeaheadHelper.js.map +1 -1
  81. package/lib/stores/QueryBuilderValueSpecificationBuilder.d.ts +1 -1
  82. package/lib/stores/QueryBuilderValueSpecificationBuilder.d.ts.map +1 -1
  83. package/lib/stores/QueryBuilderValueSpecificationBuilder.js +54 -45
  84. package/lib/stores/QueryBuilderValueSpecificationBuilder.js.map +1 -1
  85. package/lib/stores/QueryBuilderValueSpecificationHelper.d.ts +1 -1
  86. package/lib/stores/QueryBuilderValueSpecificationHelper.d.ts.map +1 -1
  87. package/lib/stores/QueryBuilderValueSpecificationHelper.js +2 -2
  88. package/lib/stores/QueryBuilderValueSpecificationHelper.js.map +1 -1
  89. package/lib/stores/__test-utils__/QueryBuilderStateTestUtils.js +1 -1
  90. package/lib/stores/__test-utils__/QueryBuilderStateTestUtils.js.map +1 -1
  91. package/lib/stores/__test-utils__/TEST_DATA__QueryBuilder_Accessors.d.ts +374 -0
  92. package/lib/stores/__test-utils__/TEST_DATA__QueryBuilder_Accessors.d.ts.map +1 -0
  93. package/lib/stores/__test-utils__/TEST_DATA__QueryBuilder_Accessors.js +625 -0
  94. package/lib/stores/__test-utils__/TEST_DATA__QueryBuilder_Accessors.js.map +1 -0
  95. package/lib/stores/explorer/QueryBuilderExplorerState.d.ts +12 -2
  96. package/lib/stores/explorer/QueryBuilderExplorerState.d.ts.map +1 -1
  97. package/lib/stores/explorer/QueryBuilderExplorerState.js +12 -2
  98. package/lib/stores/explorer/QueryBuilderExplorerState.js.map +1 -1
  99. package/lib/stores/fetch-structure/QueryBuilderFetchStructureImplementationState.d.ts +2 -2
  100. package/lib/stores/fetch-structure/QueryBuilderFetchStructureImplementationState.d.ts.map +1 -1
  101. package/lib/stores/fetch-structure/QueryBuilderFetchStructureImplementationState.js.map +1 -1
  102. package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeState.d.ts +2 -2
  103. package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeState.d.ts.map +1 -1
  104. package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeState.js +4 -3
  105. package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeState.js.map +1 -1
  106. package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeStateBuilder.js +1 -1
  107. package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeStateBuilder.js.map +1 -1
  108. package/lib/stores/fetch-structure/tds/QueryBuilderTDSHelper.d.ts +2 -0
  109. package/lib/stores/fetch-structure/tds/QueryBuilderTDSHelper.d.ts.map +1 -1
  110. package/lib/stores/fetch-structure/tds/QueryBuilderTDSHelper.js +19 -0
  111. package/lib/stores/fetch-structure/tds/QueryBuilderTDSHelper.js.map +1 -1
  112. package/lib/stores/fetch-structure/tds/QueryBuilderTDSState.d.ts +7 -4
  113. package/lib/stores/fetch-structure/tds/QueryBuilderTDSState.d.ts.map +1 -1
  114. package/lib/stores/fetch-structure/tds/QueryBuilderTDSState.js +61 -13
  115. package/lib/stores/fetch-structure/tds/QueryBuilderTDSState.js.map +1 -1
  116. package/lib/stores/fetch-structure/tds/aggregation/QueryBuilderRelationAggregationValueSpecBuilder.js +2 -2
  117. package/lib/stores/fetch-structure/tds/aggregation/QueryBuilderRelationAggregationValueSpecBuilder.js.map +1 -1
  118. package/lib/stores/fetch-structure/tds/post-filter/QueryBuilderPostFilterValueSpecificationBuilder.js +1 -1
  119. package/lib/stores/fetch-structure/tds/post-filter/QueryBuilderPostFilterValueSpecificationBuilder.js.map +1 -1
  120. package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionColumnState.d.ts +16 -3
  121. package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionColumnState.d.ts.map +1 -1
  122. package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionColumnState.js +102 -24
  123. package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionColumnState.js.map +1 -1
  124. package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionStateBuilder.d.ts +2 -1
  125. package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionStateBuilder.d.ts.map +1 -1
  126. package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionStateBuilder.js +16 -1
  127. package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionStateBuilder.js.map +1 -1
  128. package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionValueSpecificationBuilder.d.ts.map +1 -1
  129. package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionValueSpecificationBuilder.js +11 -9
  130. package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionValueSpecificationBuilder.js.map +1 -1
  131. package/lib/stores/fetch-structure/tds/projection/QueryBuilderRelationProjectValueSpecBuilder.d.ts.map +1 -1
  132. package/lib/stores/fetch-structure/tds/projection/QueryBuilderRelationProjectValueSpecBuilder.js +12 -3
  133. package/lib/stores/fetch-structure/tds/projection/QueryBuilderRelationProjectValueSpecBuilder.js.map +1 -1
  134. package/lib/stores/fetch-structure/tds/projection/QueryBuilderTypedProjectionStateBuilder.d.ts.map +1 -1
  135. package/lib/stores/fetch-structure/tds/projection/QueryBuilderTypedProjectionStateBuilder.js +16 -12
  136. package/lib/stores/fetch-structure/tds/projection/QueryBuilderTypedProjectionStateBuilder.js.map +1 -1
  137. package/lib/stores/fetch-structure/tds/window/QueryBuilderWindowGroupByOperatorLoader.d.ts.map +1 -1
  138. package/lib/stores/fetch-structure/tds/window/QueryBuilderWindowGroupByOperatorLoader.js +2 -0
  139. package/lib/stores/fetch-structure/tds/window/QueryBuilderWindowGroupByOperatorLoader.js.map +1 -1
  140. package/lib/stores/fetch-structure/tds/window/QueryBuilderWindowState.d.ts +4 -3
  141. package/lib/stores/fetch-structure/tds/window/QueryBuilderWindowState.d.ts.map +1 -1
  142. package/lib/stores/fetch-structure/tds/window/QueryBuilderWindowState.js +19 -9
  143. package/lib/stores/fetch-structure/tds/window/QueryBuilderWindowState.js.map +1 -1
  144. package/lib/stores/fetch-structure/tds/window/QueryBuilderWindowStateBuilder.d.ts +1 -0
  145. package/lib/stores/fetch-structure/tds/window/QueryBuilderWindowStateBuilder.d.ts.map +1 -1
  146. package/lib/stores/fetch-structure/tds/window/QueryBuilderWindowStateBuilder.js +83 -5
  147. package/lib/stores/fetch-structure/tds/window/QueryBuilderWindowStateBuilder.js.map +1 -1
  148. package/lib/stores/fetch-structure/tds/window/QueryBuilderWindowValueSpecificationBuilder.d.ts +4 -3
  149. package/lib/stores/fetch-structure/tds/window/QueryBuilderWindowValueSpecificationBuilder.d.ts.map +1 -1
  150. package/lib/stores/fetch-structure/tds/window/QueryBuilderWindowValueSpecificationBuilder.js +130 -9
  151. package/lib/stores/fetch-structure/tds/window/QueryBuilderWindowValueSpecificationBuilder.js.map +1 -1
  152. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator.d.ts +2 -1
  153. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator.d.ts.map +1 -1
  154. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator.js.map +1 -1
  155. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Average.d.ts +1 -0
  156. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Average.d.ts.map +1 -1
  157. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Average.js +3 -0
  158. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Average.js.map +1 -1
  159. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Count.d.ts +1 -0
  160. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Count.d.ts.map +1 -1
  161. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Count.js +3 -0
  162. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Count.js.map +1 -1
  163. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Max.d.ts +1 -0
  164. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Max.d.ts.map +1 -1
  165. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Max.js +3 -0
  166. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Max.js.map +1 -1
  167. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Min.d.ts +1 -0
  168. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Min.d.ts.map +1 -1
  169. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Min.js +3 -0
  170. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Min.js.map +1 -1
  171. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_PercentRank.d.ts +25 -0
  172. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_PercentRank.d.ts.map +1 -0
  173. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_PercentRank.js +54 -0
  174. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_PercentRank.js.map +1 -0
  175. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Sum.d.ts +1 -0
  176. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Sum.d.ts.map +1 -1
  177. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Sum.js +3 -0
  178. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Sum.js.map +1 -1
  179. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_AverageRank.d.ts +1 -0
  180. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_AverageRank.d.ts.map +1 -1
  181. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_AverageRank.js +4 -0
  182. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_AverageRank.js.map +1 -1
  183. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_DenseRank.d.ts +1 -0
  184. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_DenseRank.d.ts.map +1 -1
  185. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_DenseRank.js +3 -0
  186. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_DenseRank.js.map +1 -1
  187. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_Rank.d.ts +1 -0
  188. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_Rank.d.ts.map +1 -1
  189. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_Rank.js +3 -0
  190. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_Rank.js.map +1 -1
  191. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_RowNumber.d.ts +1 -0
  192. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_RowNumber.d.ts.map +1 -1
  193. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_RowNumber.js +3 -0
  194. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_RowNumber.js.map +1 -1
  195. package/lib/stores/filter/QueryBuilderFilterValueSpecificationBuilder.js +3 -3
  196. package/lib/stores/filter/QueryBuilderFilterValueSpecificationBuilder.js.map +1 -1
  197. package/lib/stores/milestoning/QueryBuilderMilestoningState.js +4 -4
  198. package/lib/stores/milestoning/QueryBuilderMilestoningState.js.map +1 -1
  199. package/lib/stores/workflows/MappingQueryBuilderState.js +2 -2
  200. package/lib/stores/workflows/MappingQueryBuilderState.js.map +1 -1
  201. package/lib/stores/workflows/ServiceQueryBuilderState.js +2 -2
  202. package/lib/stores/workflows/ServiceQueryBuilderState.js.map +1 -1
  203. package/lib/stores/workflows/accessor/AccessorQueryBuilderHelper.d.ts +18 -0
  204. package/lib/stores/workflows/accessor/AccessorQueryBuilderHelper.d.ts.map +1 -0
  205. package/lib/stores/workflows/accessor/AccessorQueryBuilderHelper.js +32 -0
  206. package/lib/stores/workflows/accessor/AccessorQueryBuilderHelper.js.map +1 -0
  207. package/lib/stores/workflows/accessor/AccessorQueryBuilderState.d.ts +58 -0
  208. package/lib/stores/workflows/accessor/AccessorQueryBuilderState.d.ts.map +1 -0
  209. package/lib/stores/workflows/accessor/AccessorQueryBuilderState.js +129 -0
  210. package/lib/stores/workflows/accessor/AccessorQueryBuilderState.js.map +1 -0
  211. package/lib/stores/workflows/dataProduct/DataProductQueryBuilderState.d.ts +31 -6
  212. package/lib/stores/workflows/dataProduct/DataProductQueryBuilderState.d.ts.map +1 -1
  213. package/lib/stores/workflows/dataProduct/DataProductQueryBuilderState.js +164 -17
  214. package/lib/stores/workflows/dataProduct/DataProductQueryBuilderState.js.map +1 -1
  215. package/package.json +7 -7
  216. package/src/__test__.ts +1 -0
  217. package/src/components/QueryBuilder.tsx +2 -1
  218. package/src/components/QueryBuilderSideBar.tsx +12 -8
  219. package/src/components/__test-utils__/QueryBuilderComponentTestUtils.tsx +73 -1
  220. package/src/components/explorer/QueryBuilderExplorerPanel.tsx +77 -14
  221. package/src/components/explorer/QueryBuilderRelationExplorerPanel.tsx +536 -0
  222. package/src/components/fetch-structure/QueryBuilderPostFilterPanel.tsx +1 -0
  223. package/src/components/fetch-structure/QueryBuilderResultModifierPanel.tsx +3 -3
  224. package/src/components/fetch-structure/QueryBuilderTDSPanel.tsx +62 -4
  225. package/src/components/fetch-structure/QueryBuilderTDSWindowPanel.tsx +10 -4
  226. package/src/components/workflows/AccessorQueryBuilder.tsx +211 -0
  227. package/src/components/workflows/ClassQueryBuilder.tsx +5 -5
  228. package/src/components/workflows/DataProductQueryBuilder.tsx +40 -62
  229. package/src/graph/QueryBuilderMetaModelConst.ts +7 -0
  230. package/src/graph-manager/protocol/pure/QueryBuilder_PureProtocolProcessorPlugin.ts +28 -0
  231. package/src/graph-manager/protocol/pure/v1/V1_QueryValueSpecificationBuilderHelper.ts +223 -4
  232. package/src/index.ts +5 -0
  233. package/src/stores/QueryBuilderConfig.ts +3 -0
  234. package/src/stores/QueryBuilderResultState.ts +12 -8
  235. package/src/stores/QueryBuilderState.ts +47 -12
  236. package/src/stores/QueryBuilderStateBuilder.ts +107 -43
  237. package/src/stores/QueryBuilderStateHashUtils.ts +2 -0
  238. package/src/stores/QueryBuilderTypeaheadHelper.ts +6 -6
  239. package/src/stores/QueryBuilderValueSpecificationBuilder.ts +72 -59
  240. package/src/stores/QueryBuilderValueSpecificationHelper.ts +5 -3
  241. package/src/stores/__test-utils__/QueryBuilderStateTestUtils.ts +1 -1
  242. package/src/stores/__test-utils__/TEST_DATA__QueryBuilder_Accessors.ts +630 -0
  243. package/src/stores/explorer/QueryBuilderExplorerState.ts +26 -2
  244. package/src/stores/fetch-structure/QueryBuilderFetchStructureImplementationState.ts +1 -2
  245. package/src/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeState.ts +4 -3
  246. package/src/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeStateBuilder.ts +1 -1
  247. package/src/stores/fetch-structure/tds/QueryBuilderTDSHelper.ts +42 -0
  248. package/src/stores/fetch-structure/tds/QueryBuilderTDSState.ts +137 -20
  249. package/src/stores/fetch-structure/tds/aggregation/QueryBuilderRelationAggregationValueSpecBuilder.ts +2 -2
  250. package/src/stores/fetch-structure/tds/post-filter/QueryBuilderPostFilterValueSpecificationBuilder.ts +1 -1
  251. package/src/stores/fetch-structure/tds/projection/QueryBuilderProjectionColumnState.ts +197 -38
  252. package/src/stores/fetch-structure/tds/projection/QueryBuilderProjectionStateBuilder.ts +30 -0
  253. package/src/stores/fetch-structure/tds/projection/QueryBuilderProjectionValueSpecificationBuilder.ts +11 -9
  254. package/src/stores/fetch-structure/tds/projection/QueryBuilderRelationProjectValueSpecBuilder.ts +22 -1
  255. package/src/stores/fetch-structure/tds/projection/QueryBuilderTypedProjectionStateBuilder.ts +25 -16
  256. package/src/stores/fetch-structure/tds/window/QueryBuilderWindowGroupByOperatorLoader.ts +2 -0
  257. package/src/stores/fetch-structure/tds/window/QueryBuilderWindowState.ts +23 -9
  258. package/src/stores/fetch-structure/tds/window/QueryBuilderWindowStateBuilder.ts +206 -4
  259. package/src/stores/fetch-structure/tds/window/QueryBuilderWindowValueSpecificationBuilder.ts +250 -12
  260. package/src/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator.ts +3 -1
  261. package/src/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Average.ts +4 -0
  262. package/src/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Count.ts +4 -0
  263. package/src/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Max.ts +4 -0
  264. package/src/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Min.ts +4 -0
  265. package/src/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_PercentRank.ts +57 -0
  266. package/src/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Sum.ts +4 -0
  267. package/src/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_AverageRank.ts +5 -0
  268. package/src/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_DenseRank.ts +4 -0
  269. package/src/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_Rank.ts +4 -0
  270. package/src/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_RowNumber.ts +4 -0
  271. package/src/stores/filter/QueryBuilderFilterValueSpecificationBuilder.ts +3 -3
  272. package/src/stores/milestoning/QueryBuilderMilestoningState.ts +4 -4
  273. package/src/stores/workflows/MappingQueryBuilderState.ts +2 -2
  274. package/src/stores/workflows/ServiceQueryBuilderState.ts +2 -2
  275. package/src/stores/workflows/accessor/AccessorQueryBuilderHelper.ts +51 -0
  276. package/src/stores/workflows/accessor/AccessorQueryBuilderState.ts +200 -0
  277. package/src/stores/workflows/dataProduct/DataProductQueryBuilderState.ts +277 -26
  278. package/tsconfig.json +6 -0
@@ -233,6 +233,9 @@ const QueryBuilderWindowColumnModalEditor = observer(
233
233
 
234
234
  // Window operator
235
235
  const operators = windowState.operators;
236
+ const supportedOperators = tdsState.queryBuilderState.useRelation
237
+ ? operators.filter((op) => op.relationFunc !== undefined)
238
+ : operators.filter((op) => op.pureFunc !== undefined);
236
239
  const operatorState = windowColumnState.operatorState;
237
240
  const [selectedOperatorState, setSelectedOperatorState] = useState(() => {
238
241
  if (
@@ -449,10 +452,10 @@ const QueryBuilderWindowColumnModalEditor = observer(
449
452
  <ControlledDropdownMenu
450
453
  className="query-builder__olap__column__operation__operator__dropdown"
451
454
  title="Choose Window Function Operator..."
452
- disabled={!operators.length}
455
+ disabled={!supportedOperators.length}
453
456
  content={
454
457
  <MenuContent>
455
- {operators.map((op) => (
458
+ {supportedOperators.map((op) => (
456
459
  <MenuContentItem
457
460
  key={op.uuid}
458
461
  className="query-builder__olap__column__operation__operator__dropdown__option"
@@ -779,6 +782,9 @@ const QueryBuilderWindowColumnEditor = observer(
779
782
  const windowState = windowColumnState.windowState;
780
783
  const tdsState = windowState.tdsState;
781
784
  const operators = windowState.operators;
785
+ const supportedOperators = tdsState.queryBuilderState.useRelation
786
+ ? operators.filter((op) => op.relationFunc !== undefined)
787
+ : operators.filter((op) => op.pureFunc !== undefined);
782
788
  // state
783
789
  const ref = useRef<HTMLDivElement>(null);
784
790
  const handleRef = useRef<HTMLDivElement>(null);
@@ -1021,11 +1027,11 @@ const QueryBuilderWindowColumnEditor = observer(
1021
1027
  </div>
1022
1028
  <ControlledDropdownMenu
1023
1029
  className="query-builder__olap__column__operation__operator__dropdown"
1024
- disabled={!operators.length}
1030
+ disabled={!supportedOperators.length}
1025
1031
  title="Choose Window Function Operator..."
1026
1032
  content={
1027
1033
  <MenuContent>
1028
- {operators.map((op) => (
1034
+ {supportedOperators.map((op) => (
1029
1035
  <MenuContentItem
1030
1036
  key={op.uuid}
1031
1037
  className="query-builder__olap__column__operation__operator__dropdown__option"
@@ -0,0 +1,211 @@
1
+ /**
2
+ * Copyright (c) 2020-present, Goldman Sachs
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ import {
18
+ CustomSelectorInput,
19
+ PanelHeader,
20
+ compareLabelFn,
21
+ createFilter,
22
+ } from '@finos/legend-art';
23
+ import { observer } from 'mobx-react-lite';
24
+ import {
25
+ type Runtime,
26
+ RuntimePointer,
27
+ PackageableElementExplicitReference,
28
+ } from '@finos/legend-graph';
29
+ import { useApplicationStore } from '@finos/legend-application';
30
+ import {
31
+ buildRuntimeValueOption,
32
+ getRuntimeOptionFormatter,
33
+ } from '../QueryBuilderSideBar.js';
34
+ import type {
35
+ AccessorQueryBuilderState,
36
+ AccessorOwnerOption,
37
+ } from '../../stores/workflows/accessor/AccessorQueryBuilderState.js';
38
+ import { getPackageableElementOptionFormatter } from '@finos/legend-lego/graph-editor';
39
+
40
+ type AccessorOption = {
41
+ label: string;
42
+ value: { schemaName?: string | undefined; tableName: string };
43
+ };
44
+
45
+ const AccessorQueryBuilderSetupPanelContent = observer(
46
+ (props: { queryBuilderState: AccessorQueryBuilderState }) => {
47
+ const { queryBuilderState } = props;
48
+ const applicationStore = useApplicationStore();
49
+
50
+ // accessor owner (IngestDefinition or Database)
51
+ const accessorOwnerOptions =
52
+ queryBuilderState.accessorOwnerOptions.sort(compareLabelFn);
53
+ const selectedAccessorOwnerOption = queryBuilderState.selectedAccessorOwner
54
+ ? (queryBuilderState.accessorOwnerOptions.find(
55
+ (opt) => opt.value === queryBuilderState.selectedAccessorOwner,
56
+ ) ?? null)
57
+ : null;
58
+ const changeAccessorOwner = (val: AccessorOwnerOption): void => {
59
+ if (val.value === queryBuilderState.selectedAccessorOwner) {
60
+ return;
61
+ }
62
+ queryBuilderState.changeAccessorOwner(val.value);
63
+ };
64
+ const accessorOwnerFilterOption = createFilter({
65
+ ignoreCase: true,
66
+ ignoreAccents: false,
67
+ stringify: (option: { data: AccessorOwnerOption }): string =>
68
+ option.data.value.path,
69
+ });
70
+
71
+ // accessor (dataset / table)
72
+ const accessorOptions =
73
+ queryBuilderState.accessorsOptions.sort(compareLabelFn);
74
+ const selectedAccessorOption = queryBuilderState.sourceAccessor
75
+ ? (queryBuilderState.accessorsOptions.find(
76
+ (opt) =>
77
+ opt.value.tableName ===
78
+ queryBuilderState.sourceAccessor?.accessor &&
79
+ opt.value.schemaName === queryBuilderState.sourceAccessor.schema,
80
+ ) ?? null)
81
+ : null;
82
+ const changeAccessor = (val: AccessorOption): void => {
83
+ queryBuilderState.changeAccessor(val.value);
84
+ };
85
+ const showAccessorSelector = accessorOptions.length > 0;
86
+
87
+ // runtime
88
+ const runtimeOptions = queryBuilderState.compatibleRuntimes
89
+ .map(
90
+ (rt) =>
91
+ new RuntimePointer(PackageableElementExplicitReference.create(rt)),
92
+ )
93
+ .map(buildRuntimeValueOption)
94
+ .sort(compareLabelFn);
95
+ const selectedRuntimeOption = queryBuilderState.executionContextState
96
+ .runtimeValue
97
+ ? buildRuntimeValueOption(
98
+ queryBuilderState.executionContextState.runtimeValue,
99
+ )
100
+ : null;
101
+ const changeRuntime = (val: { value: Runtime }): void => {
102
+ if (val.value === queryBuilderState.executionContextState.runtimeValue) {
103
+ return;
104
+ }
105
+ queryBuilderState.changeRuntime(val.value);
106
+ };
107
+ const runtimeFilterOption = createFilter({
108
+ ignoreCase: true,
109
+ ignoreAccents: false,
110
+ stringify: (option: { data: { value: Runtime } }): string =>
111
+ option.data.value instanceof RuntimePointer
112
+ ? option.data.value.packageableRuntime.value.path
113
+ : 'custom',
114
+ });
115
+
116
+ return (
117
+ <div className="query-builder__setup__config-group">
118
+ <PanelHeader title="properties" />
119
+ <div className="query-builder__setup__config-group__content">
120
+ <div className="query-builder__setup__config-group__item">
121
+ <label
122
+ className="btn--sm query-builder__setup__config-group__item__label"
123
+ title="source"
124
+ htmlFor="query-builder__setup__source-selector"
125
+ >
126
+ Source
127
+ </label>
128
+ <CustomSelectorInput
129
+ inputId="query-builder__setup__source-selector"
130
+ className="panel__content__form__section__dropdown query-builder__setup__config-group__item__selector"
131
+ placeholder="Choose a source..."
132
+ options={accessorOwnerOptions}
133
+ onChange={changeAccessorOwner}
134
+ value={selectedAccessorOwnerOption}
135
+ darkMode={
136
+ !applicationStore.layoutService
137
+ .TEMPORARY__isLightColorThemeEnabled
138
+ }
139
+ filterOption={accessorOwnerFilterOption}
140
+ formatOptionLabel={getPackageableElementOptionFormatter({
141
+ darkMode:
142
+ !applicationStore.layoutService
143
+ .TEMPORARY__isLightColorThemeEnabled,
144
+ })}
145
+ />
146
+ </div>
147
+ {showAccessorSelector && (
148
+ <div className="query-builder__setup__config-group__item">
149
+ <label
150
+ className="btn--sm query-builder__setup__config-group__item__label"
151
+ title="accessor"
152
+ htmlFor="query-builder__setup__accessor-selector"
153
+ >
154
+ {queryBuilderState.accessorLabel}
155
+ </label>
156
+ <CustomSelectorInput
157
+ inputId="query-builder__setup__accessor-selector"
158
+ className="panel__content__form__section__dropdown query-builder__setup__config-group__item__selector"
159
+ placeholder={`Choose a ${queryBuilderState.accessorLabel.toLocaleLowerCase()}...`}
160
+ options={accessorOptions}
161
+ onChange={changeAccessor}
162
+ value={selectedAccessorOption}
163
+ darkMode={
164
+ !applicationStore.layoutService
165
+ .TEMPORARY__isLightColorThemeEnabled
166
+ }
167
+ />
168
+ </div>
169
+ )}
170
+ <div className="query-builder__setup__config-group__item">
171
+ <label
172
+ className="btn--sm query-builder__setup__config-group__item__label"
173
+ title="runtime"
174
+ htmlFor="query-builder__setup__runtime-selector"
175
+ >
176
+ Runtime
177
+ </label>
178
+ <CustomSelectorInput
179
+ inputId="query-builder__setup__runtime-selector"
180
+ className="panel__content__form__section__dropdown query-builder__setup__config-group__item__selector"
181
+ placeholder="Choose a runtime..."
182
+ noMatchMessage="No compatible runtime found"
183
+ disabled={!queryBuilderState.selectedAccessorOwner}
184
+ options={runtimeOptions}
185
+ onChange={changeRuntime}
186
+ value={selectedRuntimeOption}
187
+ darkMode={
188
+ !applicationStore.layoutService
189
+ .TEMPORARY__isLightColorThemeEnabled
190
+ }
191
+ filterOption={runtimeFilterOption}
192
+ formatOptionLabel={getRuntimeOptionFormatter({
193
+ darkMode:
194
+ !applicationStore.layoutService
195
+ .TEMPORARY__isLightColorThemeEnabled,
196
+ })}
197
+ />
198
+ </div>
199
+ </div>
200
+ </div>
201
+ );
202
+ },
203
+ );
204
+
205
+ export const renderAccessorQueryBuilderSetupPanelContent = (
206
+ queryBuilderState: AccessorQueryBuilderState,
207
+ ): React.ReactNode => (
208
+ <AccessorQueryBuilderSetupPanelContent
209
+ queryBuilderState={queryBuilderState}
210
+ />
211
+ );
@@ -64,9 +64,9 @@ const ClassQueryBuilderSetupPanelContent = observer(
64
64
 
65
65
  // mapping
66
66
  const mappingOptions = (
67
- queryBuilderState.class
67
+ queryBuilderState.sourceClass
68
68
  ? getClassCompatibleMappings(
69
- queryBuilderState.class,
69
+ queryBuilderState.sourceClass,
70
70
  queryBuilderState.graphManagerState.usableMappings,
71
71
  )
72
72
  : []
@@ -79,7 +79,7 @@ const ClassQueryBuilderSetupPanelContent = observer(
79
79
  : null;
80
80
  const changeMapping = (val: PackageableElementOption<Mapping>): void => {
81
81
  if (
82
- !queryBuilderState.class ||
82
+ !queryBuilderState.sourceElement ||
83
83
  val.value === queryBuilderState.executionContextState.mapping
84
84
  ) {
85
85
  return;
@@ -152,7 +152,7 @@ const ClassQueryBuilderSetupPanelContent = observer(
152
152
  : 'No compatible mapping found for class'
153
153
  }
154
154
  noMatchMessage="No compatible mapping found for specified class"
155
- disabled={!queryBuilderState.class}
155
+ disabled={!queryBuilderState.sourceElement}
156
156
  options={mappingOptions}
157
157
  onChange={changeMapping}
158
158
  value={selectedMappingOption}
@@ -182,7 +182,7 @@ const ClassQueryBuilderSetupPanelContent = observer(
182
182
  placeholder="Choose a runtime..."
183
183
  noMatchMessage="No compatible runtime found for specified mapping"
184
184
  disabled={
185
- !queryBuilderState.class ||
185
+ !queryBuilderState.sourceElement ||
186
186
  !queryBuilderState.executionContextState.mapping
187
187
  }
188
188
  options={runtimeOptions}
@@ -18,6 +18,8 @@ import { useApplicationStore } from '@finos/legend-application';
18
18
  import {
19
19
  type DataProductOption,
20
20
  type DataProductQueryBuilderState,
21
+ type ExecutionIdOption,
22
+ LakehouseDataProductExecutionState,
21
23
  ModelAccessPointDataProductExecutionState,
22
24
  } from '../../stores/workflows/dataProduct/DataProductQueryBuilderState.js';
23
25
  import {
@@ -27,11 +29,7 @@ import {
27
29
  import { CustomSelectorInput } from '@finos/legend-art';
28
30
  import { QueryBuilderClassSelector } from '../QueryBuilderSideBar.js';
29
31
  import { observer } from 'mobx-react-lite';
30
- import type {
31
- PackageableRuntime,
32
- NativeModelExecutionContext,
33
- ModelAccessPointGroup,
34
- } from '@finos/legend-graph';
32
+ import type { PackageableRuntime } from '@finos/legend-graph';
35
33
  import { useEffect } from 'react';
36
34
  import { flowResult } from 'mobx';
37
35
 
@@ -95,29 +93,35 @@ export const DataProductQueryBuilderSetupFormContent = observer(
95
93
  {...(formatOptionLabel ? { formatOptionLabel } : {})}
96
94
  />
97
95
  </div>
98
- {Boolean(queryBuilderState.showExecutionContextOptions) && (
96
+ {Boolean(queryBuilderState.showExecutionIdSelector) && (
99
97
  <div className="query-builder__setup__config-group__item">
100
98
  <label
101
99
  className="btn--sm query-builder__setup__config-group__item__label"
102
- title="execution context"
103
- htmlFor="query-builder__setup__context-selector"
100
+ title="execution id"
101
+ htmlFor="query-builder__setup__execution-id-selector"
104
102
  >
105
- Context
103
+ Execution ID
106
104
  </label>
107
105
  <CustomSelectorInput
108
- inputId="query-builder__setup__context-selector"
106
+ inputId="query-builder__setup__execution-id-selector"
109
107
  className="panel__content__form__section__dropdown query-builder__setup__config-group__item__selector"
110
- placeholder="Choose an execution context..."
111
- options={queryBuilderState.execOptions}
112
- disabled={
113
- queryBuilderState.execOptions.length < 1 ||
114
- (queryBuilderState.execOptions.length === 1 &&
115
- Boolean(queryBuilderState.selectedExecOption))
116
- }
117
- onChange={(option: { value: NativeModelExecutionContext }) =>
118
- queryBuilderState.changeNativeExecutionContext(option.value)
119
- }
120
- value={queryBuilderState.selectedExecOption}
108
+ placeholder="Choose an execution id..."
109
+ options={queryBuilderState.executionIdOptions}
110
+ disabled={queryBuilderState.executionIdOptions.length < 2}
111
+ onChange={(option: ExecutionIdOption) => {
112
+ queryBuilderState
113
+ .changeExecutionId(option)
114
+ .catch(applicationStore.alertUnhandledError);
115
+ }}
116
+ value={queryBuilderState.selectedExecutionIdOption}
117
+ formatOptionLabel={(option: ExecutionIdOption) => (
118
+ <div className="query-builder__setup__config-group__item__selector__option">
119
+ <span>{option.label}</span>
120
+ <span className="query-builder__setup__config-group__item__selector__option__tag">
121
+ {option.tag}
122
+ </span>
123
+ </div>
124
+ )}
121
125
  darkMode={
122
126
  !applicationStore.layoutService
123
127
  .TEMPORARY__isLightColorThemeEnabled
@@ -125,42 +129,16 @@ export const DataProductQueryBuilderSetupFormContent = observer(
125
129
  />
126
130
  </div>
127
131
  )}
128
- {Boolean(queryBuilderState.showModelAccessPointGroupSelector) && (
132
+ {!queryBuilderState.isLakehouseMode && (
129
133
  <div className="query-builder__setup__config-group__item">
130
- <label
131
- className="btn--sm query-builder__setup__config-group__item__label"
132
- title="access point group"
133
- htmlFor="query-builder__setup__access-point-group-selector"
134
- >
135
- Access Point Group
136
- </label>
137
- <CustomSelectorInput
138
- inputId="query-builder__setup__access-point-group-selector"
139
- className="panel__content__form__section__dropdown query-builder__setup__config-group__item__selector"
140
- placeholder="Choose an access point group..."
141
- options={queryBuilderState.modelAccessPointGroupOptions}
142
- disabled={
143
- queryBuilderState.modelAccessPointGroupOptions.length < 1
144
- }
145
- onChange={(option: { value: ModelAccessPointGroup }) =>
146
- queryBuilderState.changeModelAccessPointGroupValue(option.value)
147
- }
148
- value={queryBuilderState.selectedModelAccessPointGroupOption}
149
- darkMode={
150
- !applicationStore.layoutService
151
- .TEMPORARY__isLightColorThemeEnabled
152
- }
134
+ <QueryBuilderClassSelector
135
+ queryBuilderState={queryBuilderState}
136
+ classes={queryBuilderState.usableClasses}
137
+ onClassChange={queryBuilderState.onClassChange}
138
+ noMatchMessage="No compatible entity found for specified execution context"
153
139
  />
154
140
  </div>
155
141
  )}
156
- <div className="query-builder__setup__config-group__item">
157
- <QueryBuilderClassSelector
158
- queryBuilderState={queryBuilderState}
159
- classes={queryBuilderState.usableClasses}
160
- onClassChange={queryBuilderState.onClassChange}
161
- noMatchMessage="No compatible entity found for specified execution context"
162
- />
163
- </div>
164
142
  </>
165
143
  );
166
144
  },
@@ -173,23 +151,23 @@ const DataProductQueryBuilderSetupPanelContent = observer(
173
151
  const executionState = queryBuilderState.executionState;
174
152
 
175
153
  // runtime options (only for model access point group)
154
+ const runtimeRequired =
155
+ executionState instanceof ModelAccessPointDataProductExecutionState ||
156
+ executionState instanceof LakehouseDataProductExecutionState;
176
157
  const showRuntimeSelector =
177
- executionState instanceof ModelAccessPointDataProductExecutionState &&
178
- executionState.showRuntimeOptions;
179
- const runtimeOptions =
180
- executionState instanceof ModelAccessPointDataProductExecutionState
181
- ? executionState.compatibleRuntimes.map(buildElementOption)
182
- : [];
158
+ runtimeRequired && executionState.showRuntimeOptions;
159
+ const runtimeOptions = runtimeRequired
160
+ ? executionState.compatibleRuntimes.map(buildElementOption)
161
+ : [];
183
162
  const selectedRuntimeOption =
184
- executionState instanceof ModelAccessPointDataProductExecutionState &&
185
- executionState.selectedRuntime
163
+ runtimeRequired && executionState.selectedRuntime
186
164
  ? buildElementOption(executionState.selectedRuntime)
187
165
  : null;
188
166
 
189
167
  const onRuntimeOptionChange = (
190
168
  option: PackageableElementOption<PackageableRuntime>,
191
169
  ): void => {
192
- if (executionState instanceof ModelAccessPointDataProductExecutionState) {
170
+ if (runtimeRequired) {
193
171
  if (option.value === executionState.selectedRuntime) {
194
172
  return;
195
173
  }
@@ -127,6 +127,13 @@ export enum QUERY_BUILDER_SUPPORTED_FUNCTIONS {
127
127
  RELATION_SORT = 'meta::pure::functions::relation::sort',
128
128
  RELATION_SLICE = 'meta::pure::functions::relation::slice',
129
129
  RELATION_GROUP_BY = 'meta::pure::functions::relation::groupBy',
130
+ RELATION_EXTEND = 'meta::pure::functions::relation::extend',
131
+ RELATION_OVER = 'meta::pure::functions::relation::over',
132
+ RELATION_RANK = 'meta::pure::functions::relation::rank',
133
+ RELATION_DENSE_RANK = 'meta::pure::functions::relation::denseRank',
134
+ RELATION_ROW_NUMBER = 'meta::pure::functions::relation::rowNumber',
135
+ RELATION_PERCENT_RANK = 'meta::pure::functions::relation::percentRank',
136
+
130
137
  // filter
131
138
  CONTAINS = 'meta::pure::functions::string::contains',
132
139
  ENDS_WITH = 'meta::pure::functions::string::endsWith',
@@ -26,6 +26,8 @@ import {
26
26
  V1_buildSubTypePropertyExpressionTypeInference,
27
27
  V1_buildWatermarkFunctionExpression,
28
28
  V1_buildGroupByFunctionExpression,
29
+ V1_buildOverFunctionExpression,
30
+ V1_buildExtendFunctionExpression,
29
31
  } from './v1/V1_QueryValueSpecificationBuilderHelper.js';
30
32
  import {
31
33
  type V1_GraphBuilderContext,
@@ -237,6 +239,32 @@ export class QueryBuilder_PureProtocolProcessorPlugin extends PureProtocolProces
237
239
  new GenericType(PrimitiveType.DATE),
238
240
  );
239
241
  return expression;
242
+ } else if (
243
+ matchFunctionName(
244
+ functionName,
245
+ QUERY_BUILDER_SUPPORTED_FUNCTIONS.RELATION_EXTEND,
246
+ )
247
+ ) {
248
+ return V1_buildExtendFunctionExpression(
249
+ functionName,
250
+ parameters,
251
+ openVariables,
252
+ compileContext,
253
+ processingContext,
254
+ );
255
+ } else if (
256
+ matchFunctionName(
257
+ functionName,
258
+ QUERY_BUILDER_SUPPORTED_FUNCTIONS.RELATION_OVER,
259
+ )
260
+ ) {
261
+ return V1_buildOverFunctionExpression(
262
+ functionName,
263
+ parameters,
264
+ openVariables,
265
+ compileContext,
266
+ processingContext,
267
+ );
240
268
  } else if (
241
269
  matchFunctionName(
242
270
  functionName,