@finos/legend-query-builder 3.0.7 → 3.1.0

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 (320) hide show
  1. package/lib/__lib__/QueryBuilderDocumentation.d.ts +0 -1
  2. package/lib/__lib__/QueryBuilderDocumentation.d.ts.map +1 -1
  3. package/lib/__lib__/QueryBuilderDocumentation.js +0 -1
  4. package/lib/__lib__/QueryBuilderDocumentation.js.map +1 -1
  5. package/lib/__lib__/QueryBuilderEvent.d.ts +18 -0
  6. package/lib/__lib__/QueryBuilderEvent.d.ts.map +1 -1
  7. package/lib/__lib__/QueryBuilderEvent.js +20 -0
  8. package/lib/__lib__/QueryBuilderEvent.js.map +1 -1
  9. package/lib/__lib__/QueryBuilderTelemetryHelper.d.ts +14 -0
  10. package/lib/__lib__/QueryBuilderTelemetryHelper.d.ts.map +1 -1
  11. package/lib/__lib__/QueryBuilderTelemetryHelper.js +43 -1
  12. package/lib/__lib__/QueryBuilderTelemetryHelper.js.map +1 -1
  13. package/lib/components/QueryBuilder.d.ts +0 -1
  14. package/lib/components/QueryBuilder.d.ts.map +1 -1
  15. package/lib/components/QueryBuilder.js +74 -36
  16. package/lib/components/QueryBuilder.js.map +1 -1
  17. package/lib/components/QueryBuilderConstantExpressionPanel.d.ts +0 -1
  18. package/lib/components/QueryBuilderConstantExpressionPanel.d.ts.map +1 -1
  19. package/lib/components/QueryBuilderDiffPanel.d.ts +0 -1
  20. package/lib/components/QueryBuilderDiffPanel.d.ts.map +1 -1
  21. package/lib/components/QueryBuilderParametersPanel.d.ts +0 -1
  22. package/lib/components/QueryBuilderParametersPanel.d.ts.map +1 -1
  23. package/lib/components/QueryBuilderPropertyExpressionEditor.d.ts +0 -1
  24. package/lib/components/QueryBuilderPropertyExpressionEditor.d.ts.map +1 -1
  25. package/lib/components/QueryBuilderResultPanel.d.ts +0 -1
  26. package/lib/components/QueryBuilderResultPanel.d.ts.map +1 -1
  27. package/lib/components/QueryBuilderSideBar.d.ts +0 -1
  28. package/lib/components/QueryBuilderSideBar.d.ts.map +1 -1
  29. package/lib/components/QueryBuilderTextEditor.d.ts +0 -1
  30. package/lib/components/QueryBuilderTextEditor.d.ts.map +1 -1
  31. package/lib/components/QueryBuilderUnsupportedQueryEditor.d.ts +0 -1
  32. package/lib/components/QueryBuilderUnsupportedQueryEditor.d.ts.map +1 -1
  33. package/lib/components/explorer/QueryBuilderFunctionsExplorerPanel.d.ts +0 -1
  34. package/lib/components/explorer/QueryBuilderFunctionsExplorerPanel.d.ts.map +1 -1
  35. package/lib/components/explorer/QueryBuilderMilestoningEditor.d.ts +0 -1
  36. package/lib/components/explorer/QueryBuilderMilestoningEditor.d.ts.map +1 -1
  37. package/lib/components/explorer/QueryBuilderPropertySearchPanel.d.ts +0 -1
  38. package/lib/components/explorer/QueryBuilderPropertySearchPanel.d.ts.map +1 -1
  39. package/lib/components/fetch-structure/QueryBuilderFetchStructurePanel.d.ts +0 -1
  40. package/lib/components/fetch-structure/QueryBuilderFetchStructurePanel.d.ts.map +1 -1
  41. package/lib/components/fetch-structure/QueryBuilderGraphFetchTreePanel.d.ts +0 -1
  42. package/lib/components/fetch-structure/QueryBuilderGraphFetchTreePanel.d.ts.map +1 -1
  43. package/lib/components/fetch-structure/QueryBuilderPostFilterPanel.d.ts +0 -1
  44. package/lib/components/fetch-structure/QueryBuilderPostFilterPanel.d.ts.map +1 -1
  45. package/lib/components/fetch-structure/QueryBuilderPostFilterPanel.js +13 -3
  46. package/lib/components/fetch-structure/QueryBuilderPostFilterPanel.js.map +1 -1
  47. package/lib/components/fetch-structure/QueryBuilderPostTDSPanel.d.ts +0 -1
  48. package/lib/components/fetch-structure/QueryBuilderPostTDSPanel.d.ts.map +1 -1
  49. package/lib/components/fetch-structure/QueryBuilderResultModifierPanel.d.ts +0 -1
  50. package/lib/components/fetch-structure/QueryBuilderResultModifierPanel.d.ts.map +1 -1
  51. package/lib/components/fetch-structure/QueryBuilderTDSPanel.d.ts +17 -0
  52. package/lib/components/fetch-structure/QueryBuilderTDSPanel.d.ts.map +1 -1
  53. package/lib/components/fetch-structure/QueryBuilderTDSPanel.js +152 -15
  54. package/lib/components/fetch-structure/QueryBuilderTDSPanel.js.map +1 -1
  55. package/lib/components/fetch-structure/QueryBuilderTDSWindowPanel.d.ts +0 -1
  56. package/lib/components/fetch-structure/QueryBuilderTDSWindowPanel.d.ts.map +1 -1
  57. package/lib/components/fetch-structure/QueryBuilderTDSWindowPanel.js +2 -2
  58. package/lib/components/fetch-structure/QueryBuilderTDSWindowPanel.js.map +1 -1
  59. package/lib/components/filter/QueryBuilderFilterPanel.d.ts +0 -1
  60. package/lib/components/filter/QueryBuilderFilterPanel.d.ts.map +1 -1
  61. package/lib/components/filter/QueryBuilderFilterPanel.js +14 -3
  62. package/lib/components/filter/QueryBuilderFilterPanel.js.map +1 -1
  63. package/lib/components/shared/LambdaEditor.d.ts +0 -1
  64. package/lib/components/shared/LambdaEditor.d.ts.map +1 -1
  65. package/lib/components/shared/LambdaParameterValuesEditor.d.ts +0 -1
  66. package/lib/components/shared/LambdaParameterValuesEditor.d.ts.map +1 -1
  67. package/lib/components/shared/LambdaParameterValuesEditor.js +2 -1
  68. package/lib/components/shared/LambdaParameterValuesEditor.js.map +1 -1
  69. package/lib/components/shared/QueryBuilderVariableSelector.d.ts +0 -1
  70. package/lib/components/shared/QueryBuilderVariableSelector.d.ts.map +1 -1
  71. package/lib/components/watermark/QueryBuilderWatermark.d.ts +0 -1
  72. package/lib/components/watermark/QueryBuilderWatermark.d.ts.map +1 -1
  73. package/lib/graph/QueryBuilderMetaModelConst.d.ts +33 -0
  74. package/lib/graph/QueryBuilderMetaModelConst.d.ts.map +1 -1
  75. package/lib/graph/QueryBuilderMetaModelConst.js +34 -0
  76. package/lib/graph/QueryBuilderMetaModelConst.js.map +1 -1
  77. package/lib/graph-manager/QueryBuilderConst.d.ts +20 -0
  78. package/lib/graph-manager/QueryBuilderConst.d.ts.map +1 -0
  79. package/lib/graph-manager/QueryBuilderConst.js +21 -0
  80. package/lib/graph-manager/QueryBuilderConst.js.map +1 -0
  81. package/lib/graph-manager/protocol/pure/QueryBuilder_PureProtocolProcessorPlugin.d.ts.map +1 -1
  82. package/lib/graph-manager/protocol/pure/QueryBuilder_PureProtocolProcessorPlugin.js +3 -2
  83. package/lib/graph-manager/protocol/pure/QueryBuilder_PureProtocolProcessorPlugin.js.map +1 -1
  84. package/lib/graph-manager/protocol/pure/v1/V1_QueryValueSpecificationBuilderHelper.d.ts.map +1 -1
  85. package/lib/graph-manager/protocol/pure/v1/V1_QueryValueSpecificationBuilderHelper.js +27 -14
  86. package/lib/graph-manager/protocol/pure/v1/V1_QueryValueSpecificationBuilderHelper.js.map +1 -1
  87. package/lib/index.css +2 -2
  88. package/lib/index.css.map +1 -1
  89. package/lib/package.json +4 -4
  90. package/lib/stores/QueryBuilderState.d.ts +3 -2
  91. package/lib/stores/QueryBuilderState.d.ts.map +1 -1
  92. package/lib/stores/QueryBuilderState.js +12 -6
  93. package/lib/stores/QueryBuilderState.js.map +1 -1
  94. package/lib/stores/QueryBuilderStateBuilder.d.ts +1 -1
  95. package/lib/stores/QueryBuilderStateBuilder.d.ts.map +1 -1
  96. package/lib/stores/QueryBuilderStateBuilder.js +11 -2
  97. package/lib/stores/QueryBuilderStateBuilder.js.map +1 -1
  98. package/lib/stores/QueryBuilderStateHashUtils.d.ts +32 -1
  99. package/lib/stores/QueryBuilderStateHashUtils.d.ts.map +1 -1
  100. package/lib/stores/QueryBuilderStateHashUtils.js +32 -0
  101. package/lib/stores/QueryBuilderStateHashUtils.js.map +1 -1
  102. package/lib/stores/QueryBuilderTextEditorState.d.ts.map +1 -1
  103. package/lib/stores/QueryBuilderTextEditorState.js +12 -6
  104. package/lib/stores/QueryBuilderTextEditorState.js.map +1 -1
  105. package/lib/stores/explorer/QueryBuilderExplorerState.d.ts +1 -1
  106. package/lib/stores/explorer/QueryBuilderExplorerState.d.ts.map +1 -1
  107. package/lib/stores/explorer/QueryBuilderExplorerState.js +2 -2
  108. package/lib/stores/explorer/QueryBuilderExplorerState.js.map +1 -1
  109. package/lib/stores/fetch-structure/QueryBuilderFetchStructureState.d.ts.map +1 -1
  110. package/lib/stores/fetch-structure/QueryBuilderFetchStructureState.js +1 -0
  111. package/lib/stores/fetch-structure/QueryBuilderFetchStructureState.js.map +1 -1
  112. package/lib/stores/fetch-structure/tds/QueryBuilderTDSState.d.ts +2 -0
  113. package/lib/stores/fetch-structure/tds/QueryBuilderTDSState.d.ts.map +1 -1
  114. package/lib/stores/fetch-structure/tds/QueryBuilderTDSState.js +14 -4
  115. package/lib/stores/fetch-structure/tds/QueryBuilderTDSState.js.map +1 -1
  116. package/lib/stores/fetch-structure/tds/aggregation/QueryBuilderAggregateCalendarFunction.d.ts +38 -0
  117. package/lib/stores/fetch-structure/tds/aggregation/QueryBuilderAggregateCalendarFunction.d.ts.map +1 -0
  118. package/lib/stores/fetch-structure/tds/aggregation/QueryBuilderAggregateCalendarFunction.js +54 -0
  119. package/lib/stores/fetch-structure/tds/aggregation/QueryBuilderAggregateCalendarFunction.js.map +1 -0
  120. package/lib/stores/fetch-structure/tds/aggregation/QueryBuilderAggregateCalendarFunctionLoader.d.ts +18 -0
  121. package/lib/stores/fetch-structure/tds/aggregation/QueryBuilderAggregateCalendarFunctionLoader.d.ts.map +1 -0
  122. package/lib/stores/fetch-structure/tds/aggregation/QueryBuilderAggregateCalendarFunctionLoader.js +80 -0
  123. package/lib/stores/fetch-structure/tds/aggregation/QueryBuilderAggregateCalendarFunctionLoader.js.map +1 -0
  124. package/lib/stores/fetch-structure/tds/aggregation/QueryBuilderAggregationState.d.ts +8 -1
  125. package/lib/stores/fetch-structure/tds/aggregation/QueryBuilderAggregationState.d.ts.map +1 -1
  126. package/lib/stores/fetch-structure/tds/aggregation/QueryBuilderAggregationState.js +24 -1
  127. package/lib/stores/fetch-structure/tds/aggregation/QueryBuilderAggregationState.js.map +1 -1
  128. package/lib/stores/fetch-structure/tds/aggregation/QueryBuilderAggregationStateBuilder.d.ts.map +1 -1
  129. package/lib/stores/fetch-structure/tds/aggregation/QueryBuilderAggregationStateBuilder.js +23 -0
  130. package/lib/stores/fetch-structure/tds/aggregation/QueryBuilderAggregationStateBuilder.js.map +1 -1
  131. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunctionValueSpecificationBuilder.d.ts +22 -0
  132. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunctionValueSpecificationBuilder.d.ts.map +1 -0
  133. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunctionValueSpecificationBuilder.js +61 -0
  134. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunctionValueSpecificationBuilder.js.map +1 -0
  135. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Annualized.d.ts +28 -0
  136. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Annualized.d.ts.map +1 -0
  137. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Annualized.js +55 -0
  138. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Annualized.js.map +1 -0
  139. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Cme.d.ts +28 -0
  140. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Cme.d.ts.map +1 -0
  141. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Cme.js +55 -0
  142. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Cme.js.map +1 -0
  143. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Cw.d.ts +28 -0
  144. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Cw.d.ts.map +1 -0
  145. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Cw.js +55 -0
  146. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Cw.js.map +1 -0
  147. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Cw_Fm.d.ts +28 -0
  148. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Cw_Fm.d.ts.map +1 -0
  149. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Cw_Fm.js +55 -0
  150. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Cw_Fm.js.map +1 -0
  151. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Cy_Minus2.d.ts +28 -0
  152. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Cy_Minus2.d.ts.map +1 -0
  153. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Cy_Minus2.js +55 -0
  154. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Cy_Minus2.js.map +1 -0
  155. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Cy_Minus3.d.ts +28 -0
  156. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Cy_Minus3.d.ts.map +1 -0
  157. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Cy_Minus3.js +55 -0
  158. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Cy_Minus3.js.map +1 -0
  159. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Mtd.d.ts +28 -0
  160. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Mtd.d.ts.map +1 -0
  161. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Mtd.js +55 -0
  162. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Mtd.js.map +1 -0
  163. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_P12Wa.d.ts +28 -0
  164. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_P12Wa.d.ts.map +1 -0
  165. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_P12Wa.js +55 -0
  166. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_P12Wa.js.map +1 -0
  167. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_P12Wtd.d.ts +28 -0
  168. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_P12Wtd.d.ts.map +1 -0
  169. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_P12Wtd.js +55 -0
  170. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_P12Wtd.js.map +1 -0
  171. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_P4Wa.d.ts +28 -0
  172. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_P4Wa.d.ts.map +1 -0
  173. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_P4Wa.js +55 -0
  174. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_P4Wa.js.map +1 -0
  175. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_P4Wtd.d.ts +28 -0
  176. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_P4Wtd.d.ts.map +1 -0
  177. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_P4Wtd.js +55 -0
  178. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_P4Wtd.js.map +1 -0
  179. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_P52Wa.d.ts +28 -0
  180. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_P52Wa.d.ts.map +1 -0
  181. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_P52Wa.js +55 -0
  182. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_P52Wa.js.map +1 -0
  183. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_P52Wtd.d.ts +28 -0
  184. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_P52Wtd.d.ts.map +1 -0
  185. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_P52Wtd.js +55 -0
  186. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_P52Wtd.js.map +1 -0
  187. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pma.d.ts +28 -0
  188. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pma.d.ts.map +1 -0
  189. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pma.js +55 -0
  190. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pma.js.map +1 -0
  191. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pmtd.d.ts +28 -0
  192. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pmtd.d.ts.map +1 -0
  193. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pmtd.js +55 -0
  194. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pmtd.js.map +1 -0
  195. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pqtd.d.ts +28 -0
  196. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pqtd.d.ts.map +1 -0
  197. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pqtd.js +55 -0
  198. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pqtd.js.map +1 -0
  199. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_PriorDay.d.ts +28 -0
  200. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_PriorDay.d.ts.map +1 -0
  201. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_PriorDay.js +55 -0
  202. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_PriorDay.js.map +1 -0
  203. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_PriorYear.d.ts +28 -0
  204. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_PriorYear.d.ts.map +1 -0
  205. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_PriorYear.js +55 -0
  206. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_PriorYear.js.map +1 -0
  207. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pw.d.ts +28 -0
  208. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pw.d.ts.map +1 -0
  209. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pw.js +55 -0
  210. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pw.js.map +1 -0
  211. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pw_Fm.d.ts +28 -0
  212. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pw_Fm.d.ts.map +1 -0
  213. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pw_Fm.js +55 -0
  214. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pw_Fm.js.map +1 -0
  215. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pwa.d.ts +28 -0
  216. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pwa.d.ts.map +1 -0
  217. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pwa.js +55 -0
  218. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pwa.js.map +1 -0
  219. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pwtd.d.ts +28 -0
  220. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pwtd.d.ts.map +1 -0
  221. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pwtd.js +55 -0
  222. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pwtd.js.map +1 -0
  223. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pymtd.d.ts +28 -0
  224. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pymtd.d.ts.map +1 -0
  225. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pymtd.js +55 -0
  226. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pymtd.js.map +1 -0
  227. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pyqtd.d.ts +28 -0
  228. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pyqtd.d.ts.map +1 -0
  229. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pyqtd.js +55 -0
  230. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pyqtd.js.map +1 -0
  231. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pytd.d.ts +28 -0
  232. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pytd.d.ts.map +1 -0
  233. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pytd.js +55 -0
  234. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pytd.js.map +1 -0
  235. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pywa.d.ts +28 -0
  236. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pywa.d.ts.map +1 -0
  237. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pywa.js +55 -0
  238. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pywa.js.map +1 -0
  239. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pywtd.d.ts +28 -0
  240. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pywtd.d.ts.map +1 -0
  241. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pywtd.js +55 -0
  242. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pywtd.js.map +1 -0
  243. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Qtd.d.ts +28 -0
  244. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Qtd.d.ts.map +1 -0
  245. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Qtd.js +55 -0
  246. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Qtd.js.map +1 -0
  247. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_ReportEndDay.d.ts +28 -0
  248. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_ReportEndDay.d.ts.map +1 -0
  249. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_ReportEndDay.js +55 -0
  250. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_ReportEndDay.js.map +1 -0
  251. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Wtd.d.ts +28 -0
  252. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Wtd.d.ts.map +1 -0
  253. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Wtd.js +55 -0
  254. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Wtd.js.map +1 -0
  255. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Ytd.d.ts +28 -0
  256. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Ytd.d.ts.map +1 -0
  257. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Ytd.js +55 -0
  258. package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Ytd.js.map +1 -0
  259. package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionValueSpecificationBuilder.d.ts.map +1 -1
  260. package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionValueSpecificationBuilder.js +9 -1
  261. package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionValueSpecificationBuilder.js.map +1 -1
  262. package/package.json +10 -10
  263. package/src/__lib__/QueryBuilderDocumentation.ts +0 -2
  264. package/src/__lib__/QueryBuilderEvent.ts +20 -0
  265. package/src/__lib__/QueryBuilderTelemetryHelper.ts +131 -1
  266. package/src/components/QueryBuilder.tsx +226 -188
  267. package/src/components/fetch-structure/QueryBuilderPostFilterPanel.tsx +96 -60
  268. package/src/components/fetch-structure/QueryBuilderTDSPanel.tsx +456 -94
  269. package/src/components/fetch-structure/QueryBuilderTDSWindowPanel.tsx +2 -4
  270. package/src/components/filter/QueryBuilderFilterPanel.tsx +102 -60
  271. package/src/components/shared/LambdaParameterValuesEditor.tsx +2 -1
  272. package/src/graph/QueryBuilderMetaModelConst.ts +34 -0
  273. package/src/graph-manager/QueryBuilderConst.ts +20 -0
  274. package/src/graph-manager/protocol/pure/QueryBuilder_PureProtocolProcessorPlugin.ts +10 -1
  275. package/src/graph-manager/protocol/pure/v1/V1_QueryValueSpecificationBuilderHelper.ts +73 -28
  276. package/src/stores/QueryBuilderState.ts +12 -9
  277. package/src/stores/QueryBuilderStateBuilder.ts +33 -2
  278. package/src/stores/QueryBuilderStateHashUtils.ts +33 -0
  279. package/src/stores/QueryBuilderTextEditorState.ts +21 -14
  280. package/src/stores/explorer/QueryBuilderExplorerState.ts +2 -1
  281. package/src/stores/fetch-structure/QueryBuilderFetchStructureState.ts +1 -0
  282. package/src/stores/fetch-structure/tds/QueryBuilderTDSState.ts +22 -3
  283. package/src/stores/fetch-structure/tds/aggregation/QueryBuilderAggregateCalendarFunction.ts +98 -0
  284. package/src/stores/fetch-structure/tds/aggregation/QueryBuilderAggregateCalendarFunctionLoader.ts +83 -0
  285. package/src/stores/fetch-structure/tds/aggregation/QueryBuilderAggregationState.ts +31 -0
  286. package/src/stores/fetch-structure/tds/aggregation/QueryBuilderAggregationStateBuilder.ts +41 -0
  287. package/src/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunctionValueSpecificationBuilder.ts +175 -0
  288. package/src/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Annualized.ts +98 -0
  289. package/src/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Cme.ts +98 -0
  290. package/src/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Cw.ts +98 -0
  291. package/src/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Cw_Fm.ts +99 -0
  292. package/src/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Cy_Minus2.ts +98 -0
  293. package/src/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Cy_Minus3.ts +98 -0
  294. package/src/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Mtd.ts +98 -0
  295. package/src/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_P12Wa.ts +98 -0
  296. package/src/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_P12Wtd.ts +98 -0
  297. package/src/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_P4Wa.ts +98 -0
  298. package/src/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_P4Wtd.ts +98 -0
  299. package/src/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_P52Wa.ts +98 -0
  300. package/src/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_P52Wtd.ts +98 -0
  301. package/src/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pma.ts +98 -0
  302. package/src/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pmtd.ts +98 -0
  303. package/src/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pqtd.ts +98 -0
  304. package/src/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_PriorDay.ts +98 -0
  305. package/src/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_PriorYear.ts +98 -0
  306. package/src/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pw.ts +98 -0
  307. package/src/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pw_Fm.ts +98 -0
  308. package/src/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pwa.ts +98 -0
  309. package/src/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pwtd.ts +98 -0
  310. package/src/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pymtd.ts +98 -0
  311. package/src/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pyqtd.ts +98 -0
  312. package/src/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pytd.ts +98 -0
  313. package/src/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pywa.ts +98 -0
  314. package/src/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pywtd.ts +98 -0
  315. package/src/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Qtd.ts +98 -0
  316. package/src/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_ReportEndDay.ts +98 -0
  317. package/src/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Wtd.ts +98 -0
  318. package/src/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Ytd.ts +98 -0
  319. package/src/stores/fetch-structure/tds/projection/QueryBuilderProjectionValueSpecificationBuilder.ts +18 -1
  320. package/tsconfig.json +35 -0
@@ -169,24 +169,31 @@ export class QueryBuilderTextEditorState extends LambdaEditorState {
169
169
  }
170
170
 
171
171
  openModal(mode: QueryBuilderTextEditorMode): void {
172
- const rawLambda = this.queryBuilderState.buildQuery();
173
- if (mode === QueryBuilderTextEditorMode.TEXT) {
174
- this.setQueryRawLambdaState(new QueryBuilderRawLambdaState(rawLambda));
175
- }
176
- if (mode === QueryBuilderTextEditorMode.JSON) {
177
- this.setLambdaJson(
178
- JSON.stringify(
179
- pruneSourceInformation(
180
- this.queryBuilderState.graphManagerState.graphManager.serializeRawValueSpecification(
181
- rawLambda,
172
+ try {
173
+ const rawLambda = this.queryBuilderState.buildQuery();
174
+ if (mode === QueryBuilderTextEditorMode.TEXT) {
175
+ this.setQueryRawLambdaState(new QueryBuilderRawLambdaState(rawLambda));
176
+ }
177
+ if (mode === QueryBuilderTextEditorMode.JSON) {
178
+ this.setLambdaJson(
179
+ JSON.stringify(
180
+ pruneSourceInformation(
181
+ this.queryBuilderState.graphManagerState.graphManager.serializeRawValueSpecification(
182
+ rawLambda,
183
+ ),
182
184
  ),
185
+ null,
186
+ DEFAULT_TAB_SIZE,
183
187
  ),
184
- null,
185
- DEFAULT_TAB_SIZE,
186
- ),
188
+ );
189
+ }
190
+ this.setMode(mode);
191
+ } catch (error) {
192
+ assertErrorThrown(error);
193
+ this.queryBuilderState.applicationStore.notificationService.notifyError(
194
+ error,
187
195
  );
188
196
  }
189
- this.setMode(mode);
190
197
  }
191
198
 
192
199
  *closeModal(): GeneratorFn<void> {
@@ -193,12 +193,13 @@ export class QueryBuilderExplorerTreeSubTypeNodeData extends QueryBuilderExplore
193
193
  export const buildPropertyExpressionFromExplorerTreeNodeData = (
194
194
  node: QueryBuilderExplorerTreePropertyNodeData,
195
195
  explorerState: QueryBuilderExplorerState,
196
+ lambdaParameterName?: string,
196
197
  ): AbstractPropertyExpression => {
197
198
  const treeData = explorerState.nonNullableTreeData;
198
199
  const propertySearchIndexedTreeNodes =
199
200
  explorerState.propertySearchState.indexedExplorerTreeNodes;
200
201
  const projectionColumnLambdaVariable = new VariableExpression(
201
- DEFAULT_LAMBDA_VARIABLE_NAME,
202
+ lambdaParameterName ?? DEFAULT_LAMBDA_VARIABLE_NAME,
202
203
  Multiplicity.ONE,
203
204
  );
204
205
  const propertyExpression = new AbstractPropertyExpression('');
@@ -62,6 +62,7 @@ export class QueryBuilderFetchStructureState {
62
62
  break;
63
63
  }
64
64
  case FETCH_STRUCTURE_IMPLEMENTATION.GRAPH_FETCH: {
65
+ this.queryBuilderState.setIsCalendarEnabled(false);
65
66
  this.implementation = new QueryBuilderGraphFetchTreeState(
66
67
  this.queryBuilderState,
67
68
  this,
@@ -101,6 +101,8 @@ import { getQueryBuilderCoreWindowOperators } from './window/QueryBuilderWindowG
101
101
  import type { QueryBuilderTDSColumnState } from './QueryBuilderTDSColumnState.js';
102
102
  import { QUERY_BUILDER_SETTING_KEY } from '../../../__lib__/QueryBuilderSetting.js';
103
103
  import type { ExportDataInfo } from '../../QueryBuilderResultState.js';
104
+ import type { QueryBuilderAggregateCalendarFunction } from './aggregation/QueryBuilderAggregateCalendarFunction.js';
105
+ import { getQueryBuilderCoreAggregrationCalendarFunctions } from './aggregation/QueryBuilderAggregateCalendarFunctionLoader.js';
104
106
 
105
107
  // TODO: should we support raw once externalize() is supported on TDS ?
106
108
  export enum TDS_EXECUTION_SERIALIZATION_FORMAT {
@@ -124,6 +126,8 @@ export class QueryBuilderTDSState
124
126
  getQueryBuilderCorePostFilterOperators();
125
127
  aggregationOperators: QueryBuilderAggregateOperator[] =
126
128
  getQueryBuilderCoreAggregrationOperators();
129
+ aggregationCalendarFunctions: QueryBuilderAggregateCalendarFunction[] =
130
+ getQueryBuilderCoreAggregrationCalendarFunctions();
127
131
  windowFuncOperators: QueryBuilderTDS_WindowOperator[] =
128
132
  getQueryBuilderCoreWindowOperators();
129
133
 
@@ -158,6 +162,7 @@ export class QueryBuilderTDSState
158
162
  this.aggregationState = new QueryBuilderAggregationState(
159
163
  this,
160
164
  this.aggregationOperators,
165
+ this.aggregationCalendarFunctions,
161
166
  );
162
167
  this.windowState = new QueryBuilderWindowState(
163
168
  this,
@@ -268,19 +273,33 @@ export class QueryBuilderTDSState
268
273
  }
269
274
 
270
275
  get fetchStructureValidationIssues(): string[] {
276
+ const validationIssues: string[] = [];
277
+ const hasInValidCalendarAggregateColumns =
278
+ this.aggregationState.columns.some(
279
+ (column) =>
280
+ column.calendarFunction &&
281
+ column.calendarFunction.dateColumn === undefined,
282
+ );
283
+ if (hasInValidCalendarAggregateColumns) {
284
+ validationIssues.push(
285
+ 'Query has calendar function with no date column specified',
286
+ );
287
+ }
271
288
  const hasDuplicatedProjectionColumns = this.projectionColumns.some(
272
289
  (column) =>
273
290
  this.projectionColumns.filter((c) => c.columnName === column.columnName)
274
291
  .length > 1,
275
292
  );
276
293
  if (hasDuplicatedProjectionColumns) {
277
- return ['Query has duplicated projection columns'];
294
+ validationIssues.push('Query has duplicated projection columns');
295
+ return validationIssues;
278
296
  }
279
297
  const hasNoProjectionColumns = this.projectionColumns.length === 0;
280
298
  if (hasNoProjectionColumns) {
281
- return ['Query has no projection columns'];
299
+ validationIssues.push('Query has no projection columns');
300
+ return validationIssues;
282
301
  }
283
- return [];
302
+ return validationIssues;
284
303
  }
285
304
 
286
305
  get allValidationIssues(): string[] {
@@ -0,0 +1,98 @@
1
+ /**
2
+ * Copyright (c) 2020-present, Goldman Sachs
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ import { type Hashable, guaranteeType } from '@finos/legend-shared';
18
+ import type {
19
+ AbstractPropertyExpression,
20
+ PrimitiveInstanceValue,
21
+ SimpleFunctionExpression,
22
+ ValueSpecification,
23
+ } from '@finos/legend-graph';
24
+ import {
25
+ type QueryBuilderProjectionColumnState,
26
+ QueryBuilderSimpleProjectionColumnState,
27
+ } from '../projection/QueryBuilderProjectionColumnState.js';
28
+ import type { QueryBuilderAggregateColumnState } from './QueryBuilderAggregationState.js';
29
+ import { computed, makeObservable, observable, action } from 'mobx';
30
+ import type { QUERY_BUILDER_CALENDAR_TYPE } from '../../../../graph-manager/QueryBuilderConst.js';
31
+ import { DEFAULT_LAMBDA_VARIABLE_NAME } from '../../../QueryBuilderConfig.js';
32
+
33
+ export abstract class QueryBuilderAggregateCalendarFunction
34
+ implements Hashable
35
+ {
36
+ dateColumn?: AbstractPropertyExpression | undefined;
37
+ calendarType!: QUERY_BUILDER_CALENDAR_TYPE;
38
+ endDate!: PrimitiveInstanceValue;
39
+ lambdaParameterName: string = DEFAULT_LAMBDA_VARIABLE_NAME;
40
+
41
+ constructor() {
42
+ makeObservable(this, {
43
+ dateColumn: observable,
44
+ lambdaParameterName: observable,
45
+ calendarType: observable,
46
+ endDate: observable,
47
+ setDateColumn: action,
48
+ setCalendarType: action,
49
+ setLambdaParameterName: action,
50
+ setEndDate: action,
51
+ hashCode: computed,
52
+ });
53
+ }
54
+
55
+ abstract getLabel(): string;
56
+
57
+ abstract isCompatibleWithColumn(
58
+ projectionColumnState: QueryBuilderProjectionColumnState,
59
+ ): boolean;
60
+
61
+ abstract buildCalendarFunctionExpression(
62
+ propertyExpression: AbstractPropertyExpression,
63
+ ): ValueSpecification;
64
+
65
+ buildCalendarFunctionExpressionFromState(
66
+ aggregateColumnState: QueryBuilderAggregateColumnState,
67
+ ): ValueSpecification {
68
+ return this.buildCalendarFunctionExpression(
69
+ guaranteeType(
70
+ aggregateColumnState.projectionColumnState,
71
+ QueryBuilderSimpleProjectionColumnState,
72
+ ).propertyExpressionState.propertyExpression,
73
+ );
74
+ }
75
+
76
+ abstract updateAggregateColumnState(
77
+ expression: SimpleFunctionExpression,
78
+ aggregationColumnState: QueryBuilderAggregateColumnState,
79
+ ): void;
80
+
81
+ setDateColumn(val: AbstractPropertyExpression): void {
82
+ this.dateColumn = val;
83
+ }
84
+
85
+ setLambdaParameterName(val: string): void {
86
+ this.lambdaParameterName = val;
87
+ }
88
+
89
+ setCalendarType(val: QUERY_BUILDER_CALENDAR_TYPE): void {
90
+ this.calendarType = val;
91
+ }
92
+
93
+ setEndDate(val: PrimitiveInstanceValue): void {
94
+ this.endDate = val;
95
+ }
96
+
97
+ abstract get hashCode(): string;
98
+ }
@@ -0,0 +1,83 @@
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 { QueryBuilderAggregateCalendarFunction_Ytd } from './calendarFunctions/QueryBuilderAggregateCalendarFunction_Ytd.js';
18
+ import { QueryBuilderAggregateCalendarFunction_Annualized } from './calendarFunctions/QueryBuilderAggregateCalendarFunction_Annualized.js';
19
+ import type { QueryBuilderAggregateCalendarFunction } from './QueryBuilderAggregateCalendarFunction.js';
20
+ import { QueryBuilderAggregateCalendarFunction_Cme } from './calendarFunctions/QueryBuilderAggregateCalendarFunction_Cme.js';
21
+ import { QueryBuilderAggregateCalendarFunction_Cw } from './calendarFunctions/QueryBuilderAggregateCalendarFunction_Cw.js';
22
+ import { QueryBuilderAggregateCalendarFunction_Cw_Fm } from './calendarFunctions/QueryBuilderAggregateCalendarFunction_Cw_Fm.js';
23
+ import { QueryBuilderAggregateCalendarFunction_Cy_Minus2 } from './calendarFunctions/QueryBuilderAggregateCalendarFunction_Cy_Minus2.js';
24
+ import { QueryBuilderAggregateCalendarFunction_Cy_Minus3 } from './calendarFunctions/QueryBuilderAggregateCalendarFunction_Cy_Minus3.js';
25
+ import { QueryBuilderAggregateCalendarFunction_Mtd } from './calendarFunctions/QueryBuilderAggregateCalendarFunction_Mtd.js';
26
+ import { QueryBuilderAggregateCalendarFunction_P12Wa } from './calendarFunctions/QueryBuilderAggregateCalendarFunction_P12Wa.js';
27
+ import { QueryBuilderAggregateCalendarFunction_P12Wtd } from './calendarFunctions/QueryBuilderAggregateCalendarFunction_P12Wtd.js';
28
+ import { QueryBuilderAggregateCalendarFunction_P4Wa } from './calendarFunctions/QueryBuilderAggregateCalendarFunction_P4Wa.js';
29
+ import { QueryBuilderAggregateCalendarFunction_P4Wtd } from './calendarFunctions/QueryBuilderAggregateCalendarFunction_P4Wtd.js';
30
+ import { QueryBuilderAggregateCalendarFunction_P52Wa } from './calendarFunctions/QueryBuilderAggregateCalendarFunction_P52Wa.js';
31
+ import { QueryBuilderAggregateCalendarFunction_P52Wtd } from './calendarFunctions/QueryBuilderAggregateCalendarFunction_P52Wtd.js';
32
+ import { QueryBuilderAggregateCalendarFunction_Pma } from './calendarFunctions/QueryBuilderAggregateCalendarFunction_Pma.js';
33
+ import { QueryBuilderAggregateCalendarFunction_Pmtd } from './calendarFunctions/QueryBuilderAggregateCalendarFunction_Pmtd.js';
34
+ import { QueryBuilderAggregateCalendarFunction_Pqtd } from './calendarFunctions/QueryBuilderAggregateCalendarFunction_Pqtd.js';
35
+ import { QueryBuilderAggregateCalendarFunction_PriorDay } from './calendarFunctions/QueryBuilderAggregateCalendarFunction_PriorDay.js';
36
+ import { QueryBuilderAggregateCalendarFunction_PriorYear } from './calendarFunctions/QueryBuilderAggregateCalendarFunction_PriorYear.js';
37
+ import { QueryBuilderAggregateCalendarFunction_Pw } from './calendarFunctions/QueryBuilderAggregateCalendarFunction_Pw.js';
38
+ import { QueryBuilderAggregateCalendarFunction_Pw_Fm } from './calendarFunctions/QueryBuilderAggregateCalendarFunction_Pw_Fm.js';
39
+ import { QueryBuilderAggregateCalendarFunction_Pwa } from './calendarFunctions/QueryBuilderAggregateCalendarFunction_Pwa.js';
40
+ import { QueryBuilderAggregateCalendarFunction_Pwtd } from './calendarFunctions/QueryBuilderAggregateCalendarFunction_Pwtd.js';
41
+ import { QueryBuilderAggregateCalendarFunction_Pymtd } from './calendarFunctions/QueryBuilderAggregateCalendarFunction_Pymtd.js';
42
+ import { QueryBuilderAggregateCalendarFunction_Pyqtd } from './calendarFunctions/QueryBuilderAggregateCalendarFunction_Pyqtd.js';
43
+ import { QueryBuilderAggregateCalendarFunction_Pytd } from './calendarFunctions/QueryBuilderAggregateCalendarFunction_Pytd.js';
44
+ import { QueryBuilderAggregateCalendarFunction_Pywa } from './calendarFunctions/QueryBuilderAggregateCalendarFunction_Pywa.js';
45
+ import { QueryBuilderAggregateCalendarFunction_Pywtd } from './calendarFunctions/QueryBuilderAggregateCalendarFunction_Pywtd.js';
46
+ import { QueryBuilderAggregateCalendarFunction_Qtd } from './calendarFunctions/QueryBuilderAggregateCalendarFunction_Qtd.js';
47
+ import { QueryBuilderAggregateCalendarFunction_ReportEndDay } from './calendarFunctions/QueryBuilderAggregateCalendarFunction_ReportEndDay.js';
48
+ import { QueryBuilderAggregateCalendarFunction_Wtd } from './calendarFunctions/QueryBuilderAggregateCalendarFunction_Wtd.js';
49
+
50
+ export const getQueryBuilderCoreAggregrationCalendarFunctions =
51
+ (): QueryBuilderAggregateCalendarFunction[] => [
52
+ new QueryBuilderAggregateCalendarFunction_Annualized(),
53
+ new QueryBuilderAggregateCalendarFunction_Ytd(),
54
+ new QueryBuilderAggregateCalendarFunction_Cme(),
55
+ new QueryBuilderAggregateCalendarFunction_Cw(),
56
+ new QueryBuilderAggregateCalendarFunction_Cw_Fm(),
57
+ new QueryBuilderAggregateCalendarFunction_Cy_Minus2(),
58
+ new QueryBuilderAggregateCalendarFunction_Cy_Minus3(),
59
+ new QueryBuilderAggregateCalendarFunction_Mtd(),
60
+ new QueryBuilderAggregateCalendarFunction_P12Wa(),
61
+ new QueryBuilderAggregateCalendarFunction_P12Wtd(),
62
+ new QueryBuilderAggregateCalendarFunction_P4Wa(),
63
+ new QueryBuilderAggregateCalendarFunction_P4Wtd(),
64
+ new QueryBuilderAggregateCalendarFunction_P52Wa(),
65
+ new QueryBuilderAggregateCalendarFunction_P52Wtd(),
66
+ new QueryBuilderAggregateCalendarFunction_Pma(),
67
+ new QueryBuilderAggregateCalendarFunction_Pmtd(),
68
+ new QueryBuilderAggregateCalendarFunction_Pqtd(),
69
+ new QueryBuilderAggregateCalendarFunction_PriorDay(),
70
+ new QueryBuilderAggregateCalendarFunction_PriorYear(),
71
+ new QueryBuilderAggregateCalendarFunction_Pw(),
72
+ new QueryBuilderAggregateCalendarFunction_Pw_Fm(),
73
+ new QueryBuilderAggregateCalendarFunction_Pwa(),
74
+ new QueryBuilderAggregateCalendarFunction_Pwtd(),
75
+ new QueryBuilderAggregateCalendarFunction_Pymtd(),
76
+ new QueryBuilderAggregateCalendarFunction_Pyqtd(),
77
+ new QueryBuilderAggregateCalendarFunction_Pytd(),
78
+ new QueryBuilderAggregateCalendarFunction_Pywa(),
79
+ new QueryBuilderAggregateCalendarFunction_Pywtd(),
80
+ new QueryBuilderAggregateCalendarFunction_Qtd(),
81
+ new QueryBuilderAggregateCalendarFunction_ReportEndDay(),
82
+ new QueryBuilderAggregateCalendarFunction_Wtd(),
83
+ ];
@@ -28,6 +28,7 @@ import type { QueryBuilderAggregateOperator } from './QueryBuilderAggregateOpera
28
28
  import type { QueryBuilderProjectionColumnState } from '../projection/QueryBuilderProjectionColumnState.js';
29
29
  import { QUERY_BUILDER_STATE_HASH_STRUCTURE } from '../../../QueryBuilderStateHashUtils.js';
30
30
  import { QueryBuilderTDSColumnState } from '../QueryBuilderTDSColumnState.js';
31
+ import type { QueryBuilderAggregateCalendarFunction } from './QueryBuilderAggregateCalendarFunction.js';
31
32
 
32
33
  export class QueryBuilderAggregateColumnState
33
34
  extends QueryBuilderTDSColumnState
@@ -37,6 +38,8 @@ export class QueryBuilderAggregateColumnState
37
38
  projectionColumnState: QueryBuilderProjectionColumnState;
38
39
  lambdaParameterName: string = DEFAULT_LAMBDA_VARIABLE_NAME;
39
40
  operator: QueryBuilderAggregateOperator;
41
+ calendarFunction?: QueryBuilderAggregateCalendarFunction | undefined;
42
+ hideCalendarColumnState = true;
40
43
 
41
44
  constructor(
42
45
  aggregationState: QueryBuilderAggregationState,
@@ -47,10 +50,14 @@ export class QueryBuilderAggregateColumnState
47
50
  makeObservable(this, {
48
51
  projectionColumnState: observable,
49
52
  lambdaParameterName: observable,
53
+ calendarFunction: observable,
54
+ hideCalendarColumnState: observable,
50
55
  operator: observable,
56
+ setHideCalendarColumnState: action,
51
57
  setColumnState: action,
52
58
  setLambdaParameterName: action,
53
59
  setOperator: action,
60
+ setCalendarFunction: action,
54
61
  hashCode: computed,
55
62
  });
56
63
 
@@ -58,6 +65,7 @@ export class QueryBuilderAggregateColumnState
58
65
  this.projectionColumnState = projectionColumnState;
59
66
  this.operator = operator;
60
67
  }
68
+
61
69
  setColumnState(val: QueryBuilderProjectionColumnState): void {
62
70
  this.projectionColumnState = val;
63
71
  }
@@ -66,6 +74,16 @@ export class QueryBuilderAggregateColumnState
66
74
  this.lambdaParameterName = val;
67
75
  }
68
76
 
77
+ setHideCalendarColumnState(val: boolean): void {
78
+ this.hideCalendarColumnState = val;
79
+ }
80
+
81
+ setCalendarFunction(
82
+ val: QueryBuilderAggregateCalendarFunction | undefined,
83
+ ): void {
84
+ this.calendarFunction = val;
85
+ }
86
+
69
87
  setOperator(val: QueryBuilderAggregateOperator): void {
70
88
  this.operator = val;
71
89
  }
@@ -78,6 +96,7 @@ export class QueryBuilderAggregateColumnState
78
96
  return hashArray([
79
97
  QUERY_BUILDER_STATE_HASH_STRUCTURE.AGGREGATE_COLUMN_STATE,
80
98
  this.operator,
99
+ this.calendarFunction ?? '',
81
100
  ]);
82
101
  }
83
102
 
@@ -89,22 +108,26 @@ export class QueryBuilderAggregateColumnState
89
108
  export class QueryBuilderAggregationState implements Hashable {
90
109
  readonly tdsState: QueryBuilderTDSState;
91
110
  readonly operators: QueryBuilderAggregateOperator[] = [];
111
+ readonly calendarFunctions: QueryBuilderAggregateCalendarFunction[];
92
112
  columns: QueryBuilderAggregateColumnState[] = [];
93
113
 
94
114
  constructor(
95
115
  tdsState: QueryBuilderTDSState,
96
116
  operators: QueryBuilderAggregateOperator[],
117
+ calendarFunctions: QueryBuilderAggregateCalendarFunction[],
97
118
  ) {
98
119
  makeObservable(this, {
99
120
  columns: observable,
100
121
  removeColumn: action,
101
122
  addColumn: action,
102
123
  changeColumnAggregateOperator: action,
124
+ disableCalendar: action,
103
125
  hashCode: computed,
104
126
  });
105
127
 
106
128
  this.tdsState = tdsState;
107
129
  this.operators = operators;
130
+ this.calendarFunctions = calendarFunctions;
108
131
  }
109
132
 
110
133
  removeColumn(val: QueryBuilderAggregateColumnState): void {
@@ -163,6 +186,14 @@ export class QueryBuilderAggregationState implements Hashable {
163
186
  }
164
187
  }
165
188
 
189
+ disableCalendar(): void {
190
+ this.tdsState.queryBuilderState.setIsCalendarEnabled(false);
191
+ this.columns.forEach((column) => {
192
+ column.setCalendarFunction(undefined);
193
+ column.setHideCalendarColumnState(true);
194
+ });
195
+ }
196
+
166
197
  get hashCode(): string {
167
198
  return hashArray([
168
199
  QUERY_BUILDER_STATE_HASH_STRUCTURE.AGGREGATION_STATE,
@@ -104,6 +104,28 @@ export const processTDSAggregateExpression = (
104
104
  `Can't process agg() lambda: only support agg() lambda body with 1 expression`,
105
105
  );
106
106
 
107
+ let calendarExpression: SimpleFunctionExpression | undefined;
108
+ if (queryBuilderState.isCalendarEnabled) {
109
+ const childExpression = expression.parametersValues[0];
110
+ assertType(
111
+ childExpression,
112
+ LambdaFunctionInstanceValue,
113
+ `Can't process agg() expression: agg() expects argument #0 to be a lambda function`,
114
+ );
115
+ const lambdaFunc1 = guaranteeNonNullable(
116
+ childExpression.values[0],
117
+ `Can't process agg() lambda: agg() lambda function is missing`,
118
+ );
119
+ assertTrue(
120
+ lambdaFunc1.expressionSequence.length === 1,
121
+ `Can't process agg() lambda: only support agg() lambda body with 1 expression`,
122
+ );
123
+ calendarExpression =
124
+ lambdaFunc1.expressionSequence[0] instanceof SimpleFunctionExpression
125
+ ? lambdaFunc1.expressionSequence[0]
126
+ : undefined;
127
+ }
128
+
107
129
  assertTrue(
108
130
  lambdaFunc.functionType.parameters.length === 1,
109
131
  `Can't process agg() lambda: only support agg() lambda with 1 parameter`,
@@ -128,6 +150,25 @@ export const processTDSAggregateExpression = (
128
150
  );
129
151
  if (aggregateColumnState) {
130
152
  aggregationState.addColumn(aggregateColumnState);
153
+ if (
154
+ queryBuilderState.isCalendarEnabled &&
155
+ calendarExpression !== undefined
156
+ ) {
157
+ for (const calendarFunction of aggregationState.calendarFunctions) {
158
+ // NOTE: this allow plugin author to either return `undefined` or throw error
159
+ // if there is a problem with building the lambda. Either case, the plugin is
160
+ // considered as not supporting the lambda.
161
+ returnUndefOnError(() =>
162
+ calendarFunction.updateAggregateColumnState(
163
+ guaranteeNonNullable(calendarExpression),
164
+ aggregateColumnState,
165
+ ),
166
+ );
167
+ }
168
+ }
169
+ if (!aggregateColumnState.calendarFunction) {
170
+ aggregateColumnState.setHideCalendarColumnState(true);
171
+ }
131
172
  return;
132
173
  }
133
174
  }
@@ -0,0 +1,175 @@
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
+ type ValueSpecification,
19
+ SimpleFunctionExpression,
20
+ extractElementNameFromPath,
21
+ matchFunctionName,
22
+ AbstractPropertyExpression,
23
+ PrimitiveInstanceValue,
24
+ GenericType,
25
+ GenericTypeExplicitReference,
26
+ PrimitiveType,
27
+ PRIMITIVE_TYPE,
28
+ VariableExpression,
29
+ } from '@finos/legend-graph';
30
+ import {
31
+ guaranteeType,
32
+ assertTrue,
33
+ UnsupportedOperationError,
34
+ } from '@finos/legend-shared';
35
+ import type { QueryBuilderAggregateColumnState } from '../QueryBuilderAggregationState.js';
36
+ import { type QueryBuilderAggregateCalendarFunction } from '../QueryBuilderAggregateCalendarFunction.js';
37
+ import { QUERY_BUILDER_CALENDAR_TYPE } from '../../../../../graph-manager/QueryBuilderConst.js';
38
+
39
+ export const buildCalendarFunctionExpression = (
40
+ calendarFunctionFullPath: string,
41
+ dateColumn: AbstractPropertyExpression | undefined,
42
+ calendarType: QUERY_BUILDER_CALENDAR_TYPE,
43
+ endDate: PrimitiveInstanceValue,
44
+ targetColumn: AbstractPropertyExpression,
45
+ ): ValueSpecification => {
46
+ const expression = new SimpleFunctionExpression(
47
+ extractElementNameFromPath(calendarFunctionFullPath),
48
+ );
49
+ if (dateColumn) {
50
+ expression.parametersValues.push(dateColumn);
51
+ } else {
52
+ throw new UnsupportedOperationError(
53
+ `Please specify date column for calendar Function for column ${targetColumn.func.value.name}`,
54
+ );
55
+ }
56
+ const calendarTypeParameter = new PrimitiveInstanceValue(
57
+ GenericTypeExplicitReference.create(new GenericType(PrimitiveType.STRING)),
58
+ );
59
+ calendarTypeParameter.values = [calendarType];
60
+ expression.parametersValues.push(calendarTypeParameter);
61
+ expression.parametersValues.push(endDate);
62
+ expression.parametersValues.push(targetColumn);
63
+ return expression;
64
+ };
65
+
66
+ export const updateAggregateColumnState = (
67
+ expression: SimpleFunctionExpression,
68
+ calendarFunctionFullPath: string,
69
+ calendarFunction: QueryBuilderAggregateCalendarFunction,
70
+ aggregateColumnState: QueryBuilderAggregateColumnState,
71
+ ): void => {
72
+ if (matchFunctionName(expression.functionName, calendarFunctionFullPath)) {
73
+ assertTrue(
74
+ expression.parametersValues.length === 4,
75
+ `Can't process ${extractElementNameFromPath(
76
+ calendarFunctionFullPath,
77
+ )}() expression: ${extractElementNameFromPath(
78
+ calendarFunctionFullPath,
79
+ )}() expects four arguments`,
80
+ );
81
+
82
+ const dateColumn = guaranteeType(
83
+ expression.parametersValues[0],
84
+ AbstractPropertyExpression,
85
+ `Can't process ${extractElementNameFromPath(
86
+ calendarFunctionFullPath,
87
+ )}() expression: only support ${extractElementNameFromPath(
88
+ calendarFunctionFullPath,
89
+ )}() with first parameter as property expression`,
90
+ );
91
+ assertTrue(
92
+ dateColumn.func.value.genericType.value.rawType.name ===
93
+ PRIMITIVE_TYPE.STRICTDATE ||
94
+ dateColumn.func.value.genericType.value.rawType.name ===
95
+ PRIMITIVE_TYPE.DATE,
96
+
97
+ `Can't process ${extractElementNameFromPath(
98
+ calendarFunctionFullPath,
99
+ )}() expression: only support ${extractElementNameFromPath(
100
+ calendarFunctionFullPath,
101
+ )}() with first parameter as property expression of type StrictDate`,
102
+ );
103
+ const lambdaParameterName = guaranteeType(
104
+ dateColumn.parametersValues[0],
105
+ VariableExpression,
106
+ ).name;
107
+ calendarFunction.setLambdaParameterName(lambdaParameterName);
108
+
109
+ const calendarTypeParameter = guaranteeType(
110
+ expression.parametersValues[1],
111
+ PrimitiveInstanceValue,
112
+ `Can't process ${extractElementNameFromPath(
113
+ calendarFunctionFullPath,
114
+ )}() expression: only support ${extractElementNameFromPath(
115
+ calendarFunctionFullPath,
116
+ )}() with second parameter as PrimitiveInstancevalue`,
117
+ );
118
+ assertTrue(
119
+ Object.values(QUERY_BUILDER_CALENDAR_TYPE).find(
120
+ (val) => val === calendarTypeParameter.values[0],
121
+ ) !== undefined,
122
+ `Can't process ${extractElementNameFromPath(
123
+ calendarFunctionFullPath,
124
+ )}() expression: only support ${extractElementNameFromPath(
125
+ calendarFunctionFullPath,
126
+ )}() calendar types NY and LDN`,
127
+ );
128
+
129
+ const endDate = guaranteeType(
130
+ expression.parametersValues[2],
131
+ PrimitiveInstanceValue,
132
+ `Can't process ${extractElementNameFromPath(
133
+ calendarFunctionFullPath,
134
+ )}() expression: only support ${extractElementNameFromPath(
135
+ calendarFunctionFullPath,
136
+ )}() with third parameter as PrimitiveInstancevalue`,
137
+ );
138
+ assertTrue(
139
+ endDate.genericType.value.rawType.name === PRIMITIVE_TYPE.STRICTDATE ||
140
+ dateColumn.func.value.genericType.value.rawType.name ===
141
+ PRIMITIVE_TYPE.DATE,
142
+
143
+ `Can't process ${extractElementNameFromPath(
144
+ calendarFunctionFullPath,
145
+ )}() expression: only support ${extractElementNameFromPath(
146
+ calendarFunctionFullPath,
147
+ )}() with third parameter of type StrictDate`,
148
+ );
149
+
150
+ guaranteeType(
151
+ expression.parametersValues[3],
152
+ AbstractPropertyExpression,
153
+ `Can't process ${extractElementNameFromPath(
154
+ calendarFunctionFullPath,
155
+ )}() expression: only support ${extractElementNameFromPath(
156
+ calendarFunctionFullPath,
157
+ )}() fourth parameter as property expression`,
158
+ );
159
+
160
+ calendarFunction.calendarType = calendarTypeParameter
161
+ .values[0] as QUERY_BUILDER_CALENDAR_TYPE;
162
+ calendarFunction.endDate = endDate;
163
+ calendarFunction.dateColumn = dateColumn;
164
+ assertTrue(
165
+ calendarFunction.isCompatibleWithColumn(
166
+ aggregateColumnState.projectionColumnState,
167
+ ),
168
+ `Can't process ${extractElementNameFromPath(
169
+ calendarFunctionFullPath,
170
+ )}() expression: property is not compatible with calendar function`,
171
+ );
172
+ aggregateColumnState.setHideCalendarColumnState(false);
173
+ aggregateColumnState.setCalendarFunction(calendarFunction);
174
+ }
175
+ };