@finos/legend-query-builder 3.0.7 → 3.1.0

Sign up to get free protection for your applications and to get access to all the features.
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
+ };