@finos/legend-query-builder 4.14.34 → 4.14.36

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 (330) hide show
  1. package/lib/__lib__/QueryBuilderTesting.d.ts +1 -0
  2. package/lib/__lib__/QueryBuilderTesting.d.ts.map +1 -1
  3. package/lib/__lib__/QueryBuilderTesting.js +1 -0
  4. package/lib/__lib__/QueryBuilderTesting.js.map +1 -1
  5. package/lib/components/QueryBuilder.d.ts.map +1 -1
  6. package/lib/components/QueryBuilder.js +37 -17
  7. package/lib/components/QueryBuilder.js.map +1 -1
  8. package/lib/components/QueryBuilderConstantExpressionPanel.d.ts.map +1 -1
  9. package/lib/components/QueryBuilderConstantExpressionPanel.js +30 -13
  10. package/lib/components/QueryBuilderConstantExpressionPanel.js.map +1 -1
  11. package/lib/components/QueryBuilderParametersPanel.js.map +1 -1
  12. package/lib/components/QueryBuilderPropertyExpressionEditor.d.ts.map +1 -1
  13. package/lib/components/QueryBuilderPropertyExpressionEditor.js +2 -1
  14. package/lib/components/QueryBuilderPropertyExpressionEditor.js.map +1 -1
  15. package/lib/components/QueryBuilderSideBar.d.ts +2 -18
  16. package/lib/components/QueryBuilderSideBar.d.ts.map +1 -1
  17. package/lib/components/QueryBuilderSideBar.js +32 -104
  18. package/lib/components/QueryBuilderSideBar.js.map +1 -1
  19. package/lib/components/QueryLoader.js.map +1 -1
  20. package/lib/components/__test-utils__/QueryBuilderComponentTestUtils.d.ts.map +1 -1
  21. package/lib/components/__test-utils__/QueryBuilderComponentTestUtils.js.map +1 -1
  22. package/lib/components/data-access/DataAccessOverview.js.map +1 -1
  23. package/lib/components/execution-plan/ConstantExecutionNodeViewer.js.map +1 -1
  24. package/lib/components/execution-plan/DataTypeResultTypeViewer.js.map +1 -1
  25. package/lib/components/execution-plan/ExecutionPlanViewer.js.map +1 -1
  26. package/lib/components/execution-plan/FunctionParametersValidationNodeViewer.d.ts.map +1 -1
  27. package/lib/components/execution-plan/FunctionParametersValidationNodeViewer.js +1 -2
  28. package/lib/components/execution-plan/FunctionParametersValidationNodeViewer.js.map +1 -1
  29. package/lib/components/execution-plan/ImplementationViewer.js.map +1 -1
  30. package/lib/components/execution-plan/ResultTypeViewer.js.map +1 -1
  31. package/lib/components/execution-plan/SQLExecutionNodeViewer.js.map +1 -1
  32. package/lib/components/execution-plan/SequenceExecutionNodeViewer.js.map +1 -1
  33. package/lib/components/execution-plan/StoreMappingGlobalGraphFetchExecutionNodeViewer.js.map +1 -1
  34. package/lib/components/execution-plan/TempTableStrategyViewer.js.map +1 -1
  35. package/lib/components/explorer/QueryBuilderExplorerPanel.js.map +1 -1
  36. package/lib/components/explorer/QueryBuilderFunctionsExplorerPanel.js.map +1 -1
  37. package/lib/components/explorer/QueryBuilderMilestoningEditor.js.map +1 -1
  38. package/lib/components/explorer/QueryBuilderPropertySearchPanel.js.map +1 -1
  39. package/lib/components/fetch-structure/QueryBuilderFetchStructurePanel.js.map +1 -1
  40. package/lib/components/fetch-structure/QueryBuilderGraphFetchTreePanel.d.ts.map +1 -1
  41. package/lib/components/fetch-structure/QueryBuilderGraphFetchTreePanel.js.map +1 -1
  42. package/lib/components/fetch-structure/QueryBuilderPostFilterPanel.d.ts.map +1 -1
  43. package/lib/components/fetch-structure/QueryBuilderPostFilterPanel.js +2 -1
  44. package/lib/components/fetch-structure/QueryBuilderPostFilterPanel.js.map +1 -1
  45. package/lib/components/fetch-structure/QueryBuilderPostTDSPanel.js.map +1 -1
  46. package/lib/components/fetch-structure/QueryBuilderResultModifierPanel.d.ts.map +1 -1
  47. package/lib/components/fetch-structure/QueryBuilderResultModifierPanel.js +50 -5
  48. package/lib/components/fetch-structure/QueryBuilderResultModifierPanel.js.map +1 -1
  49. package/lib/components/fetch-structure/QueryBuilderTDSComponentHelper.js.map +1 -1
  50. package/lib/components/fetch-structure/QueryBuilderTDSPanel.d.ts.map +1 -1
  51. package/lib/components/fetch-structure/QueryBuilderTDSPanel.js +2 -1
  52. package/lib/components/fetch-structure/QueryBuilderTDSPanel.js.map +1 -1
  53. package/lib/components/fetch-structure/QueryBuilderTDSWindowPanel.js.map +1 -1
  54. package/lib/components/filter/QueryBuilderFilterPanel.d.ts.map +1 -1
  55. package/lib/components/filter/QueryBuilderFilterPanel.js +2 -1
  56. package/lib/components/filter/QueryBuilderFilterPanel.js.map +1 -1
  57. package/lib/components/result/QueryBuilderResultPanel.js.map +1 -1
  58. package/lib/components/result/tds/QueryBuilderTDSGridResult.js.map +1 -1
  59. package/lib/components/result/tds/QueryBuilderTDSResultShared.js.map +1 -1
  60. package/lib/components/result/tds/QueryBuilderTDSSimpleGridResult.js.map +1 -1
  61. package/lib/components/shared/BasicValueSpecificationEditor.d.ts +0 -1
  62. package/lib/components/shared/BasicValueSpecificationEditor.d.ts.map +1 -1
  63. package/lib/components/shared/BasicValueSpecificationEditor.js +62 -28
  64. package/lib/components/shared/BasicValueSpecificationEditor.js.map +1 -1
  65. package/lib/components/shared/CustomDatePicker.d.ts +1 -0
  66. package/lib/components/shared/CustomDatePicker.d.ts.map +1 -1
  67. package/lib/components/shared/CustomDatePicker.js +15 -10
  68. package/lib/components/shared/CustomDatePicker.js.map +1 -1
  69. package/lib/components/shared/LambdaEditor.js +1 -1
  70. package/lib/components/shared/LambdaEditor.js.map +1 -1
  71. package/lib/components/shared/LambdaParameterValuesEditor.js.map +1 -1
  72. package/lib/components/shared/QueryBuilderPanelIssueCountBadge.js.map +1 -1
  73. package/lib/components/shared/QueryBuilderVariableSelector.d.ts +1 -0
  74. package/lib/components/shared/QueryBuilderVariableSelector.d.ts.map +1 -1
  75. package/lib/components/shared/QueryBuilderVariableSelector.js +2 -2
  76. package/lib/components/shared/QueryBuilderVariableSelector.js.map +1 -1
  77. package/lib/components/workflows/ClassQueryBuilder.d.ts.map +1 -1
  78. package/lib/components/workflows/ClassQueryBuilder.js +19 -16
  79. package/lib/components/workflows/ClassQueryBuilder.js.map +1 -1
  80. package/lib/components/workflows/MappingQueryBuilder.d.ts.map +1 -1
  81. package/lib/components/workflows/MappingQueryBuilder.js +18 -15
  82. package/lib/components/workflows/MappingQueryBuilder.js.map +1 -1
  83. package/lib/components/workflows/ServiceQueryBuilder.d.ts.map +1 -1
  84. package/lib/components/workflows/ServiceQueryBuilder.js +13 -10
  85. package/lib/components/workflows/ServiceQueryBuilder.js.map +1 -1
  86. package/lib/graph-manager/protocol/pure/QueryBuilder_PureProtocolProcessorPlugin.js.map +1 -1
  87. package/lib/graph-manager/protocol/pure/v1/V1_QueryBuilder_PureGraphManagerExtension.js.map +1 -1
  88. package/lib/graph-manager/protocol/pure/v1/V1_QueryValueSpecificationBuilderHelper.js.map +1 -1
  89. package/lib/index.css +2 -2
  90. package/lib/index.css.map +1 -1
  91. package/lib/index.d.ts +2 -1
  92. package/lib/index.d.ts.map +1 -1
  93. package/lib/index.js +1 -0
  94. package/lib/index.js.map +1 -1
  95. package/lib/package.json +16 -16
  96. package/lib/stores/QueryBuilderChangeDetectionState.js.map +1 -1
  97. package/lib/stores/QueryBuilderChangeHistoryState.js.map +1 -1
  98. package/lib/stores/QueryBuilderConstantsState.d.ts.map +1 -1
  99. package/lib/stores/QueryBuilderConstantsState.js +2 -1
  100. package/lib/stores/QueryBuilderConstantsState.js.map +1 -1
  101. package/lib/stores/QueryBuilderGroupOperationHelper.js.map +1 -1
  102. package/lib/stores/QueryBuilderPropertyEditorState.d.ts +1 -1
  103. package/lib/stores/QueryBuilderPropertyEditorState.d.ts.map +1 -1
  104. package/lib/stores/QueryBuilderPropertyEditorState.js +14 -35
  105. package/lib/stores/QueryBuilderPropertyEditorState.js.map +1 -1
  106. package/lib/stores/QueryBuilderResultState.js.map +1 -1
  107. package/lib/stores/QueryBuilderState.d.ts +3 -0
  108. package/lib/stores/QueryBuilderState.d.ts.map +1 -1
  109. package/lib/stores/QueryBuilderState.js +15 -1
  110. package/lib/stores/QueryBuilderState.js.map +1 -1
  111. package/lib/stores/QueryBuilderStateBuilder.js.map +1 -1
  112. package/lib/stores/QueryBuilderTextEditorState.js.map +1 -1
  113. package/lib/stores/QueryBuilderTypeaheadHelper.js.map +1 -1
  114. package/lib/stores/QueryBuilderValueSpecificationBuilder.js.map +1 -1
  115. package/lib/stores/QueryBuilderValueSpecificationBuilderHelper.js.map +1 -1
  116. package/lib/stores/QueryBuilderValueSpecificationHelper.d.ts +2 -1
  117. package/lib/stores/QueryBuilderValueSpecificationHelper.d.ts.map +1 -1
  118. package/lib/stores/QueryBuilderValueSpecificationHelper.js +23 -1
  119. package/lib/stores/QueryBuilderValueSpecificationHelper.js.map +1 -1
  120. package/lib/stores/QueryBuilder_LegendApplicationPlugin_Extension.d.ts +13 -0
  121. package/lib/stores/QueryBuilder_LegendApplicationPlugin_Extension.d.ts.map +1 -1
  122. package/lib/stores/QueryLoaderState.js.map +1 -1
  123. package/lib/stores/__test-utils__/QueryBuilderStateTestUtils.js.map +1 -1
  124. package/lib/stores/data-access/DataAccessState.js.map +1 -1
  125. package/lib/stores/entitlements/QueryBuilderCheckEntitlementsState.js.map +1 -1
  126. package/lib/stores/execution-plan/ExecutionPlanState.js.map +1 -1
  127. package/lib/stores/explorer/QueryBuilderExplorerState.js.map +1 -1
  128. package/lib/stores/explorer/QueryBuilderPropertySearchState.js.map +1 -1
  129. package/lib/stores/explorer/QueryFunctionsExplorerState.js.map +1 -1
  130. package/lib/stores/fetch-structure/QueryBuilderFetchStructureImplementationState.d.ts +2 -0
  131. package/lib/stores/fetch-structure/QueryBuilderFetchStructureImplementationState.d.ts.map +1 -1
  132. package/lib/stores/fetch-structure/QueryBuilderFetchStructureImplementationState.js +2 -0
  133. package/lib/stores/fetch-structure/QueryBuilderFetchStructureImplementationState.js.map +1 -1
  134. package/lib/stores/fetch-structure/QueryBuilderFetchStructureState.js.map +1 -1
  135. package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeState.d.ts +2 -0
  136. package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeState.d.ts.map +1 -1
  137. package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeState.js +6 -0
  138. package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeState.js.map +1 -1
  139. package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeStateBuilder.js.map +1 -1
  140. package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeUtil.js.map +1 -1
  141. package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeValueSpecificationBuilder.js.map +1 -1
  142. package/lib/stores/fetch-structure/tds/QueryBuilderTDSHelper.js.map +1 -1
  143. package/lib/stores/fetch-structure/tds/QueryBuilderTDSState.d.ts +2 -0
  144. package/lib/stores/fetch-structure/tds/QueryBuilderTDSState.d.ts.map +1 -1
  145. package/lib/stores/fetch-structure/tds/QueryBuilderTDSState.js +16 -0
  146. package/lib/stores/fetch-structure/tds/QueryBuilderTDSState.js.map +1 -1
  147. package/lib/stores/fetch-structure/tds/aggregation/QueryBuilderAggregateCalendarFunction.js.map +1 -1
  148. package/lib/stores/fetch-structure/tds/aggregation/QueryBuilderAggregateCalendarFunctionValueSpecificationBuilder.js.map +1 -1
  149. package/lib/stores/fetch-structure/tds/aggregation/QueryBuilderAggregationState.js.map +1 -1
  150. package/lib/stores/fetch-structure/tds/aggregation/QueryBuilderAggregationStateBuilder.js.map +1 -1
  151. package/lib/stores/fetch-structure/tds/aggregation/operators/QueryBuilderAggregateOperatorValueSpecificationBuilder.js.map +1 -1
  152. package/lib/stores/fetch-structure/tds/aggregation/operators/QueryBuilderAggregateOperator_Average.js.map +1 -1
  153. package/lib/stores/fetch-structure/tds/aggregation/operators/QueryBuilderAggregateOperator_Count.js.map +1 -1
  154. package/lib/stores/fetch-structure/tds/aggregation/operators/QueryBuilderAggregateOperator_Distinct.js.map +1 -1
  155. package/lib/stores/fetch-structure/tds/aggregation/operators/QueryBuilderAggregateOperator_DistinctCount.js.map +1 -1
  156. package/lib/stores/fetch-structure/tds/aggregation/operators/QueryBuilderAggregateOperator_JoinString.js.map +1 -1
  157. package/lib/stores/fetch-structure/tds/aggregation/operators/QueryBuilderAggregateOperator_Max.js.map +1 -1
  158. package/lib/stores/fetch-structure/tds/aggregation/operators/QueryBuilderAggregateOperator_Min.js.map +1 -1
  159. package/lib/stores/fetch-structure/tds/aggregation/operators/QueryBuilderAggregateOperator_StdDev_Population.js.map +1 -1
  160. package/lib/stores/fetch-structure/tds/aggregation/operators/QueryBuilderAggregateOperator_StdDev_Sample.js.map +1 -1
  161. package/lib/stores/fetch-structure/tds/aggregation/operators/QueryBuilderAggregateOperator_Sum.js.map +1 -1
  162. package/lib/stores/fetch-structure/tds/post-filter/QueryBuilderPostFilterOperator.js.map +1 -1
  163. package/lib/stores/fetch-structure/tds/post-filter/QueryBuilderPostFilterState.d.ts +3 -0
  164. package/lib/stores/fetch-structure/tds/post-filter/QueryBuilderPostFilterState.d.ts.map +1 -1
  165. package/lib/stores/fetch-structure/tds/post-filter/QueryBuilderPostFilterState.js +42 -3
  166. package/lib/stores/fetch-structure/tds/post-filter/QueryBuilderPostFilterState.js.map +1 -1
  167. package/lib/stores/fetch-structure/tds/post-filter/QueryBuilderPostFilterStateBuilder.js.map +1 -1
  168. package/lib/stores/fetch-structure/tds/post-filter/QueryBuilderPostFilterValueSpecificationBuilder.js.map +1 -1
  169. package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperatorHelper.js.map +1 -1
  170. package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperatorValueSpecificationBuilder.js.map +1 -1
  171. package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_Contain.d.ts.map +1 -1
  172. package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_Contain.js +6 -5
  173. package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_Contain.js.map +1 -1
  174. package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_EndWith.d.ts.map +1 -1
  175. package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_EndWith.js +6 -5
  176. package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_EndWith.js.map +1 -1
  177. package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_Equal.d.ts.map +1 -1
  178. package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_Equal.js +8 -37
  179. package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_Equal.js.map +1 -1
  180. package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_GreaterThan.d.ts.map +1 -1
  181. package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_GreaterThan.js +7 -10
  182. package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_GreaterThan.js.map +1 -1
  183. package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_In.js.map +1 -1
  184. package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_IsEmpty.js.map +1 -1
  185. package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_LessThan.d.ts.map +1 -1
  186. package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_LessThan.js +7 -10
  187. package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_LessThan.js.map +1 -1
  188. package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_StartWith.d.ts.map +1 -1
  189. package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_StartWith.js +6 -5
  190. package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_StartWith.js.map +1 -1
  191. package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionColumnState.js.map +1 -1
  192. package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionStateBuilder.js.map +1 -1
  193. package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionValueSpecificationBuilder.js.map +1 -1
  194. package/lib/stores/fetch-structure/tds/projection/QueryBuilderRelationProjectValueSpecBuidler.js.map +1 -1
  195. package/lib/stores/fetch-structure/tds/projection/QueryBuilderTypedProjectionStateBuilder.js.map +1 -1
  196. package/lib/stores/fetch-structure/tds/window/QueryBuilderWindowState.js.map +1 -1
  197. package/lib/stores/fetch-structure/tds/window/QueryBuilderWindowStateBuilder.js.map +1 -1
  198. package/lib/stores/fetch-structure/tds/window/QueryBuilderWindowValueSpecificationBuilder.js.map +1 -1
  199. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Average.js.map +1 -1
  200. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Count.js.map +1 -1
  201. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Max.js.map +1 -1
  202. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Min.js.map +1 -1
  203. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Sum.js.map +1 -1
  204. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_AverageRank.js.map +1 -1
  205. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_DenseRank.js.map +1 -1
  206. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_Rank.js.map +1 -1
  207. package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_RowNumber.js.map +1 -1
  208. package/lib/stores/filter/QueryBuilderFilterState.d.ts +3 -0
  209. package/lib/stores/filter/QueryBuilderFilterState.d.ts.map +1 -1
  210. package/lib/stores/filter/QueryBuilderFilterState.js +30 -2
  211. package/lib/stores/filter/QueryBuilderFilterState.js.map +1 -1
  212. package/lib/stores/filter/QueryBuilderFilterStateBuilder.js.map +1 -1
  213. package/lib/stores/filter/QueryBuilderFilterValueSpecificationBuilder.js.map +1 -1
  214. package/lib/stores/filter/operators/QueryBuilderFilterOperatorValueSpecificationBuilder.js.map +1 -1
  215. package/lib/stores/filter/operators/QueryBuilderFilterOperator_Contain.d.ts.map +1 -1
  216. package/lib/stores/filter/operators/QueryBuilderFilterOperator_Contain.js +5 -4
  217. package/lib/stores/filter/operators/QueryBuilderFilterOperator_Contain.js.map +1 -1
  218. package/lib/stores/filter/operators/QueryBuilderFilterOperator_EndWith.d.ts.map +1 -1
  219. package/lib/stores/filter/operators/QueryBuilderFilterOperator_EndWith.js +5 -4
  220. package/lib/stores/filter/operators/QueryBuilderFilterOperator_EndWith.js.map +1 -1
  221. package/lib/stores/filter/operators/QueryBuilderFilterOperator_Equal.d.ts.map +1 -1
  222. package/lib/stores/filter/operators/QueryBuilderFilterOperator_Equal.js +7 -35
  223. package/lib/stores/filter/operators/QueryBuilderFilterOperator_Equal.js.map +1 -1
  224. package/lib/stores/filter/operators/QueryBuilderFilterOperator_GreaterThan.d.ts.map +1 -1
  225. package/lib/stores/filter/operators/QueryBuilderFilterOperator_GreaterThan.js +6 -8
  226. package/lib/stores/filter/operators/QueryBuilderFilterOperator_GreaterThan.js.map +1 -1
  227. package/lib/stores/filter/operators/QueryBuilderFilterOperator_GreaterThanEqual.d.ts.map +1 -1
  228. package/lib/stores/filter/operators/QueryBuilderFilterOperator_GreaterThanEqual.js +6 -8
  229. package/lib/stores/filter/operators/QueryBuilderFilterOperator_GreaterThanEqual.js.map +1 -1
  230. package/lib/stores/filter/operators/QueryBuilderFilterOperator_In.js.map +1 -1
  231. package/lib/stores/filter/operators/QueryBuilderFilterOperator_IsEmpty.js.map +1 -1
  232. package/lib/stores/filter/operators/QueryBuilderFilterOperator_LessThan.d.ts.map +1 -1
  233. package/lib/stores/filter/operators/QueryBuilderFilterOperator_LessThan.js +6 -8
  234. package/lib/stores/filter/operators/QueryBuilderFilterOperator_LessThan.js.map +1 -1
  235. package/lib/stores/filter/operators/QueryBuilderFilterOperator_LessThanEqual.d.ts.map +1 -1
  236. package/lib/stores/filter/operators/QueryBuilderFilterOperator_LessThanEqual.js +6 -8
  237. package/lib/stores/filter/operators/QueryBuilderFilterOperator_LessThanEqual.js.map +1 -1
  238. package/lib/stores/filter/operators/QueryBuilderFilterOperator_StartWith.d.ts.map +1 -1
  239. package/lib/stores/filter/operators/QueryBuilderFilterOperator_StartWith.js +5 -4
  240. package/lib/stores/filter/operators/QueryBuilderFilterOperator_StartWith.js.map +1 -1
  241. package/lib/stores/milestoning/QueryBuilderBitemporalMilestoningImplementation.js.map +1 -1
  242. package/lib/stores/milestoning/QueryBuilderBusinessTemporalMilestoningImplementation.js.map +1 -1
  243. package/lib/stores/milestoning/QueryBuilderMilestoningHelper.js.map +1 -1
  244. package/lib/stores/milestoning/QueryBuilderMilestoningState.js.map +1 -1
  245. package/lib/stores/milestoning/QueryBuilderProcessingTemporalMilestoningImplementation.js.map +1 -1
  246. package/lib/stores/query-workflow/QueryBuilderWorkFlowState.d.ts +5 -0
  247. package/lib/stores/query-workflow/QueryBuilderWorkFlowState.d.ts.map +1 -1
  248. package/lib/stores/query-workflow/QueryBuilderWorkFlowState.js +7 -0
  249. package/lib/stores/query-workflow/QueryBuilderWorkFlowState.js.map +1 -1
  250. package/lib/stores/shared/LambdaEditorState.js.map +1 -1
  251. package/lib/stores/shared/LambdaParameterState.js.map +1 -1
  252. package/lib/stores/shared/ValueSpecificationEditorHelper.d.ts +1 -1
  253. package/lib/stores/shared/ValueSpecificationEditorHelper.d.ts.map +1 -1
  254. package/lib/stores/shared/ValueSpecificationEditorHelper.js +20 -10
  255. package/lib/stores/shared/ValueSpecificationEditorHelper.js.map +1 -1
  256. package/lib/stores/watermark/QueryBuilderWatermarkState.d.ts +0 -2
  257. package/lib/stores/watermark/QueryBuilderWatermarkState.d.ts.map +1 -1
  258. package/lib/stores/watermark/QueryBuilderWatermarkState.js +0 -6
  259. package/lib/stores/watermark/QueryBuilderWatermarkState.js.map +1 -1
  260. package/lib/stores/watermark/QueryBuilderWatermarkValueSpecificationBuilder.js.map +1 -1
  261. package/lib/stores/workflows/ClassQueryBuilderState.js.map +1 -1
  262. package/lib/stores/workflows/MappingQueryBuilderState.d.ts +2 -2
  263. package/lib/stores/workflows/MappingQueryBuilderState.d.ts.map +1 -1
  264. package/lib/stores/workflows/MappingQueryBuilderState.js +2 -1
  265. package/lib/stores/workflows/MappingQueryBuilderState.js.map +1 -1
  266. package/lib/stores/workflows/ServiceQueryBuilderState.d.ts +2 -2
  267. package/lib/stores/workflows/ServiceQueryBuilderState.d.ts.map +1 -1
  268. package/lib/stores/workflows/ServiceQueryBuilderState.js +2 -1
  269. package/lib/stores/workflows/ServiceQueryBuilderState.js.map +1 -1
  270. package/package.json +24 -24
  271. package/src/__lib__/QueryBuilderTesting.ts +1 -0
  272. package/src/components/QueryBuilder.tsx +89 -46
  273. package/src/components/QueryBuilderConstantExpressionPanel.tsx +41 -19
  274. package/src/components/QueryBuilderParametersPanel.tsx +7 -7
  275. package/src/components/QueryBuilderPropertyExpressionEditor.tsx +2 -0
  276. package/src/components/QueryBuilderSideBar.tsx +138 -339
  277. package/src/components/execution-plan/FunctionParametersValidationNodeViewer.tsx +3 -2
  278. package/src/components/explorer/QueryBuilderExplorerPanel.tsx +4 -4
  279. package/src/components/explorer/QueryBuilderPropertySearchPanel.tsx +4 -4
  280. package/src/components/fetch-structure/QueryBuilderPostFilterPanel.tsx +8 -3
  281. package/src/components/fetch-structure/QueryBuilderResultModifierPanel.tsx +139 -1
  282. package/src/components/fetch-structure/QueryBuilderTDSPanel.tsx +21 -4
  283. package/src/components/fetch-structure/QueryBuilderTDSWindowPanel.tsx +4 -4
  284. package/src/components/filter/QueryBuilderFilterPanel.tsx +12 -6
  285. package/src/components/result/tds/QueryBuilderTDSResultShared.tsx +2 -2
  286. package/src/components/result/tds/QueryBuilderTDSSimpleGridResult.tsx +1 -1
  287. package/src/components/shared/BasicValueSpecificationEditor.tsx +96 -34
  288. package/src/components/shared/CustomDatePicker.tsx +30 -22
  289. package/src/components/shared/QueryBuilderVariableSelector.tsx +2 -2
  290. package/src/components/workflows/ClassQueryBuilder.tsx +79 -77
  291. package/src/components/workflows/MappingQueryBuilder.tsx +75 -76
  292. package/src/components/workflows/ServiceQueryBuilder.tsx +71 -70
  293. package/src/index.ts +2 -1
  294. package/src/stores/QueryBuilderConstantsState.ts +2 -0
  295. package/src/stores/QueryBuilderPropertyEditorState.ts +17 -56
  296. package/src/stores/QueryBuilderState.ts +23 -1
  297. package/src/stores/QueryBuilderValueSpecificationHelper.ts +32 -0
  298. package/src/stores/QueryBuilder_LegendApplicationPlugin_Extension.ts +18 -0
  299. package/src/stores/explorer/QueryBuilderExplorerState.ts +2 -2
  300. package/src/stores/fetch-structure/QueryBuilderFetchStructureImplementationState.ts +4 -0
  301. package/src/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeState.ts +8 -0
  302. package/src/stores/fetch-structure/tds/QueryBuilderTDSState.ts +33 -0
  303. package/src/stores/fetch-structure/tds/post-filter/QueryBuilderPostFilterState.ts +59 -0
  304. package/src/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_Contain.ts +5 -5
  305. package/src/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_EndWith.ts +5 -5
  306. package/src/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_Equal.ts +10 -69
  307. package/src/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_GreaterThan.ts +7 -18
  308. package/src/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_LessThan.ts +7 -18
  309. package/src/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_StartWith.ts +5 -5
  310. package/src/stores/filter/QueryBuilderFilterState.ts +48 -2
  311. package/src/stores/filter/operators/QueryBuilderFilterOperator_Contain.ts +5 -5
  312. package/src/stores/filter/operators/QueryBuilderFilterOperator_EndWith.ts +5 -5
  313. package/src/stores/filter/operators/QueryBuilderFilterOperator_Equal.ts +10 -71
  314. package/src/stores/filter/operators/QueryBuilderFilterOperator_GreaterThan.ts +6 -14
  315. package/src/stores/filter/operators/QueryBuilderFilterOperator_GreaterThanEqual.ts +6 -14
  316. package/src/stores/filter/operators/QueryBuilderFilterOperator_LessThan.ts +6 -14
  317. package/src/stores/filter/operators/QueryBuilderFilterOperator_LessThanEqual.ts +6 -14
  318. package/src/stores/filter/operators/QueryBuilderFilterOperator_StartWith.ts +5 -5
  319. package/src/stores/query-workflow/QueryBuilderWorkFlowState.ts +10 -0
  320. package/src/stores/shared/ValueSpecificationEditorHelper.ts +32 -16
  321. package/src/stores/watermark/QueryBuilderWatermarkState.ts +0 -7
  322. package/src/stores/workflows/MappingQueryBuilderState.ts +7 -1
  323. package/src/stores/workflows/ServiceQueryBuilderState.ts +6 -1
  324. package/tsconfig.json +17 -2
  325. package/tsconfig.package.json +17 -1
  326. package/lib/components/watermark/QueryBuilderWatermark.d.ts +0 -22
  327. package/lib/components/watermark/QueryBuilderWatermark.d.ts.map +0 -1
  328. package/lib/components/watermark/QueryBuilderWatermark.js +0 -83
  329. package/lib/components/watermark/QueryBuilderWatermark.js.map +0 -1
  330. package/src/components/watermark/QueryBuilderWatermark.tsx +0 -218
@@ -14,7 +14,7 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- import { CustomSelectorInput, PlayIcon, RobotIcon } from '@finos/legend-art';
17
+ import { CustomSelectorInput, PanelHeader } from '@finos/legend-art';
18
18
  import { observer } from 'mobx-react-lite';
19
19
  import { getMappingCompatibleClasses, type Service } from '@finos/legend-graph';
20
20
  import { useApplicationStore } from '@finos/legend-application';
@@ -55,7 +55,9 @@ const ServiceQueryBuilderSetupPanelContent = observer(
55
55
 
56
56
  // execution context
57
57
  const serviceOptions =
58
- queryBuilderState.usableServices?.map(buildElementOption) ?? [];
58
+ queryBuilderState.usableServices
59
+ ?.map(buildElementOption)
60
+ .sort((a, b) => a.label.localeCompare(b.label)) ?? [];
59
61
  const selectedServiceOption = buildElementOption(queryBuilderState.service);
60
62
  const onServiceOptionChange = (
61
63
  option: PackageableElementOption<Service>,
@@ -67,9 +69,9 @@ const ServiceQueryBuilderSetupPanelContent = observer(
67
69
  };
68
70
 
69
71
  // execution context
70
- const executionContextOptions = queryBuilderState.executionContexts.map(
71
- buildExecutionContextOption,
72
- );
72
+ const executionContextOptions = queryBuilderState.executionContexts
73
+ .map(buildExecutionContextOption)
74
+ .sort((a, b) => a.label.localeCompare(b.label));
73
75
  const selectedExecutionContextOption =
74
76
  queryBuilderState.selectedExecutionContext
75
77
  ? buildExecutionContextOption(
@@ -96,75 +98,74 @@ const ServiceQueryBuilderSetupPanelContent = observer(
96
98
  : [];
97
99
 
98
100
  return (
99
- <>
100
- <div className="query-builder__setup__config-group">
101
- <div className="query-builder__setup__config-group__header">
102
- <div className="query-builder__setup__config-group__header__title">
103
- service execution context
104
- </div>
101
+ <div className="query-builder__setup__config-group">
102
+ <PanelHeader title="properties" />
103
+ <div className="query-builder__setup__config-group__content">
104
+ <div className="query-builder__setup__config-group__item">
105
+ <label
106
+ className="btn--sm query-builder__setup__config-group__item__label"
107
+ title="service"
108
+ htmlFor="query-builder__setup__service-selector"
109
+ >
110
+ Service
111
+ </label>
112
+ <CustomSelectorInput
113
+ inputId="query-builder__setup__service-selector"
114
+ className="panel__content__form__section__dropdown query-builder__setup__config-group__item__selector"
115
+ placeholder="Choose a service..."
116
+ options={serviceOptions}
117
+ disabled={
118
+ serviceOptions.length < 1 ||
119
+ (serviceOptions.length === 1 && Boolean(selectedServiceOption))
120
+ }
121
+ onChange={onServiceOptionChange}
122
+ value={selectedServiceOption}
123
+ darkMode={
124
+ !applicationStore.layoutService
125
+ .TEMPORARY__isLightColorThemeEnabled
126
+ }
127
+ />
105
128
  </div>
106
- <div className="query-builder__setup__config-group__content">
107
- <div className="query-builder__setup__config-group__item">
108
- <div
109
- className="btn--sm query-builder__setup__config-group__item__label"
110
- title="service"
111
- >
112
- <RobotIcon className="query-builder__setup__service__icon__service" />
129
+ {/* We will display mapping and runtime selector for single-execution and execution context for multi-execution */}
130
+ {Boolean(queryBuilderState.executionContexts.length) && (
131
+ <>
132
+ <div className="query-builder__setup__config-group__item">
133
+ <label
134
+ className="btn--sm query-builder__setup__config-group__item__label"
135
+ title="execution context"
136
+ htmlFor="query-builder__setup__context-selector"
137
+ >
138
+ Context
139
+ </label>
140
+ <CustomSelectorInput
141
+ inputId="query-builder__setup__context-selector"
142
+ className="panel__content__form__section__dropdown query-builder__setup__config-group__item__selector"
143
+ placeholder="Choose an execution context..."
144
+ options={executionContextOptions}
145
+ disabled={
146
+ executionContextOptions.length < 1 ||
147
+ (executionContextOptions.length === 1 &&
148
+ Boolean(selectedExecutionContextOption))
149
+ }
150
+ onChange={onExecutionContextOptionChange}
151
+ value={selectedExecutionContextOption}
152
+ darkMode={
153
+ !applicationStore.layoutService
154
+ .TEMPORARY__isLightColorThemeEnabled
155
+ }
156
+ />
113
157
  </div>
114
- <CustomSelectorInput
115
- className="panel__content__form__section__dropdown query-builder__setup__config-group__item__selector"
116
- placeholder="Choose a service..."
117
- options={serviceOptions}
118
- disabled={
119
- serviceOptions.length < 1 ||
120
- (serviceOptions.length === 1 &&
121
- Boolean(selectedServiceOption))
122
- }
123
- onChange={onServiceOptionChange}
124
- value={selectedServiceOption}
125
- darkMode={
126
- !applicationStore.layoutService
127
- .TEMPORARY__isLightColorThemeEnabled
128
- }
129
- />
130
- </div>
131
- {/* We will display mapping and runtime selector for single-execution and execution context for multi-execution */}
132
- {Boolean(queryBuilderState.executionContexts.length) && (
133
- <>
134
- <div className="query-builder__setup__config-group__item">
135
- <div
136
- className="btn--sm query-builder__setup__config-group__item__label"
137
- title="execution context"
138
- >
139
- <PlayIcon className="query-builder__setup__service__icon__execution-context" />
140
- </div>
141
- <CustomSelectorInput
142
- className="panel__content__form__section__dropdown query-builder__setup__config-group__item__selector"
143
- placeholder="Choose an execution context..."
144
- options={executionContextOptions}
145
- disabled={
146
- executionContextOptions.length < 1 ||
147
- (executionContextOptions.length === 1 &&
148
- Boolean(selectedExecutionContextOption))
149
- }
150
- onChange={onExecutionContextOptionChange}
151
- value={selectedExecutionContextOption}
152
- darkMode={
153
- !applicationStore.layoutService
154
- .TEMPORARY__isLightColorThemeEnabled
155
- }
156
- />
157
- </div>
158
- </>
159
- )}
158
+ </>
159
+ )}
160
+ <div className="query-builder__setup__config-group__item">
161
+ <QueryBuilderClassSelector
162
+ queryBuilderState={queryBuilderState}
163
+ classes={classes}
164
+ noMatchMessage="No compatible entity found for specified execution context"
165
+ />
160
166
  </div>
161
167
  </div>
162
- <QueryBuilderClassSelector
163
- queryBuilderState={queryBuilderState}
164
- classes={classes}
165
- noMatchMessage="No compatible class found for specified execution context"
166
- />
167
- </>
168
+ </div>
168
169
  );
169
170
  },
170
171
  );
package/src/index.ts CHANGED
@@ -21,6 +21,7 @@ export * from './__lib__/QueryBuilderEvent.js';
21
21
  export { QueryBuilder_GraphManagerPreset } from './graph-manager/QueryBuilder_GraphManagerPreset.js';
22
22
  export { QueryBuilderConfig } from './graph-manager/QueryBuilderConfig.js';
23
23
  export { QUERY_BUILDER_TEST_ID } from './__lib__/QueryBuilderTesting.js';
24
+ export { dragAndDrop } from './components/__test-utils__/QueryBuilderComponentTestUtils.js';
24
25
  export {
25
26
  type CheckEntitlementEditorRender,
26
27
  QueryBuilder_LegendApplicationPlugin,
@@ -29,8 +30,8 @@ export { QueryBuilderNavigationBlocker } from './components/QueryBuilderNavigati
29
30
  export { QueryBuilder } from './components/QueryBuilder.js';
30
31
  export { QUERY_BUILDER_COMPONENT_ELEMENT_ID } from './components/QueryBuilderComponentElement.js';
31
32
  export {
32
- QueryBuilderState,
33
33
  type QuerySDLC,
34
+ QueryBuilderState,
34
35
  } from './stores/QueryBuilderState.js';
35
36
  export {
36
37
  getTDSColumnDerivedProperyFromType,
@@ -131,6 +131,8 @@ export class QueryBuilderSimpleConstantExpressionState
131
131
  this.queryBuilderState.graphManagerState.graph,
132
132
  type,
133
133
  this.queryBuilderState.observerContext,
134
+ this.queryBuilderState
135
+ .INTERNAL__enableInitializingDefaultSimpleExpressionValue,
134
136
  );
135
137
  this.setValueSpec(valSpec);
136
138
  } catch (error) {
@@ -26,17 +26,13 @@ import {
26
26
  import {
27
27
  Class,
28
28
  type AbstractProperty,
29
- type Enum,
30
29
  type ValueSpecification,
31
30
  type PureModel,
32
31
  AbstractPropertyExpression,
33
32
  DerivedProperty,
34
33
  Enumeration,
35
- EnumValueExplicitReference,
36
- EnumValueInstanceValue,
37
34
  InstanceValue,
38
35
  PrimitiveInstanceValue,
39
- type PRIMITIVE_TYPE,
40
36
  VariableExpression,
41
37
  SimpleFunctionExpression,
42
38
  matchFunctionName,
@@ -50,7 +46,7 @@ import {
50
46
  } from '@finos/legend-graph';
51
47
  import {
52
48
  createNullishValue,
53
- generateDefaultValueForPrimitiveType,
49
+ isValidInstanceValue,
54
50
  } from './QueryBuilderValueSpecificationHelper.js';
55
51
  import type { QueryBuilderState } from './QueryBuilderState.js';
56
52
  import { QUERY_BUILDER_SUPPORTED_FUNCTIONS } from '../graph/QueryBuilderMetaModelConst.js';
@@ -58,9 +54,9 @@ import { QUERY_BUILDER_STATE_HASH_STRUCTURE } from './QueryBuilderStateHashUtils
58
54
  import {
59
55
  propertyExpression_setFunc,
60
56
  functionExpression_setParametersValues,
61
- instanceValue_setValues,
62
57
  } from './shared/ValueSpecificationModifierHelper.js';
63
58
  import { generateMilestonedPropertyParameterValue } from './milestoning/QueryBuilderMilestoningHelper.js';
59
+ import { buildDefaultInstanceValue } from './shared/ValueSpecificationEditorHelper.js';
64
60
 
65
61
  export const getPropertyChainName = (
66
62
  propertyExpression: AbstractPropertyExpression,
@@ -107,9 +103,8 @@ export const getPropertyChainName = (
107
103
  processedChunks[processedChunks.length - 1],
108
104
  );
109
105
  if (latestProcessedChunk.startsWith(TYPE_CAST_TOKEN)) {
110
- processedChunks[
111
- processedChunks.length - 1
112
- ] = `${latestProcessedChunk}${chunk}`;
106
+ processedChunks[processedChunks.length - 1] =
107
+ `${latestProcessedChunk}${chunk}`;
113
108
  } else {
114
109
  processedChunks.push(chunk);
115
110
  }
@@ -142,44 +137,23 @@ export const getPropertyPath = (
142
137
  export const generateValueSpecificationForParameter = (
143
138
  parameter: VariableExpression,
144
139
  graph: PureModel,
140
+ initializeDefaultValue: boolean,
145
141
  observerContext: ObserverContext,
146
142
  ): ValueSpecification => {
147
143
  if (parameter.genericType) {
148
144
  const type = parameter.genericType.value.rawType;
149
- if (type instanceof PrimitiveType) {
150
- const primitiveInstanceValue = new PrimitiveInstanceValue(
151
- GenericTypeExplicitReference.create(
152
- new GenericType(
153
- // NOTE: since the default generated value for type Date is a StrictDate
154
- // we need to adjust the generic type accordingly
155
- // See https://github.com/finos/legend-studio/issues/1391
156
- type === PrimitiveType.DATE ? PrimitiveType.STRICTDATE : type,
157
- ),
158
- ),
159
- );
160
- if (type !== PrimitiveType.LATESTDATE) {
161
- instanceValue_setValues(
162
- primitiveInstanceValue,
163
- [generateDefaultValueForPrimitiveType(type.name as PRIMITIVE_TYPE)],
164
- observerContext,
145
+ if (type instanceof PrimitiveType || type instanceof Enumeration) {
146
+ if (type === PrimitiveType.LATESTDATE) {
147
+ return new PrimitiveInstanceValue(
148
+ GenericTypeExplicitReference.create(new GenericType(type)),
165
149
  );
166
150
  }
167
- return primitiveInstanceValue;
168
- } else if (type instanceof Enumeration) {
169
- const enumValueInstanceValue = new EnumValueInstanceValue(
170
- GenericTypeExplicitReference.create(new GenericType(type)),
151
+ return buildDefaultInstanceValue(
152
+ graph,
153
+ type,
154
+ observerContext,
155
+ initializeDefaultValue || parameter.multiplicity.lowerBound === 0,
171
156
  );
172
- if (type.values.length) {
173
- const enumValueRef = EnumValueExplicitReference.create(
174
- type.values[0] as Enum,
175
- );
176
- instanceValue_setValues(
177
- enumValueInstanceValue,
178
- [enumValueRef],
179
- observerContext,
180
- );
181
- }
182
- return enumValueInstanceValue;
183
157
  }
184
158
  }
185
159
  // for arguments of types we don't support, we will fill them with `[]`
@@ -216,6 +190,8 @@ const fillDerivedPropertyParameterValues = (
216
190
  parameter,
217
191
  derivedPropertyExpressionState.queryBuilderState.graphManagerState
218
192
  .graph,
193
+ derivedPropertyExpressionState.queryBuilderState
194
+ .INTERNAL__enableInitializingDefaultSimpleExpressionValue,
219
195
  derivedPropertyExpressionState.queryBuilderState.observerContext,
220
196
  ),
221
197
  );
@@ -285,22 +261,7 @@ export class QueryBuilderDerivedPropertyExpressionState {
285
261
  // TODO: more type matching logic here (take into account multiplicity, type, etc.)
286
262
  return this.parameterValues.every((paramValue) => {
287
263
  if (paramValue instanceof InstanceValue) {
288
- const isRequired = paramValue.multiplicity.lowerBound >= 1;
289
- // required and no values provided. LatestDate doesn't have any values so we skip that check for it.
290
- if (
291
- isRequired &&
292
- paramValue.genericType?.value.rawType !== PrimitiveType.LATESTDATE &&
293
- !paramValue.values.length
294
- ) {
295
- return false;
296
- }
297
- // more values than allowed
298
- if (
299
- paramValue.multiplicity.upperBound &&
300
- paramValue.values.length > paramValue.multiplicity.upperBound
301
- ) {
302
- return false;
303
- }
264
+ return isValidInstanceValue(paramValue);
304
265
  }
305
266
  return true;
306
267
  });
@@ -156,6 +156,7 @@ export abstract class QueryBuilderState implements CommandRegistrar {
156
156
  isCalendarEnabled = false;
157
157
  isQueryChatOpened = false;
158
158
  isLocalModeEnabled = false;
159
+ INTERNAL__enableInitializingDefaultSimpleExpressionValue = false;
159
160
 
160
161
  lambdaWriteMode = QUERY_BUILDER_LAMBDA_WRITER_MODE.STANDARD;
161
162
 
@@ -207,10 +208,12 @@ export abstract class QueryBuilderState implements CommandRegistrar {
207
208
  isLocalModeEnabled: observable,
208
209
  getAllFunction: observable,
209
210
  lambdaWriteMode: observable,
211
+ INTERNAL__enableInitializingDefaultSimpleExpressionValue: observable,
210
212
 
211
213
  sideBarClassName: computed,
212
214
  isQuerySupported: computed,
213
215
  allValidationIssues: computed,
216
+ canBuildQuery: computed,
214
217
 
215
218
  setShowFunctionsExplorerPanel: action,
216
219
  setShowParametersPanel: action,
@@ -222,6 +225,7 @@ export abstract class QueryBuilderState implements CommandRegistrar {
222
225
  setIsLocalModeEnabled: action,
223
226
  setGetAllFunction: action,
224
227
  setLambdaWriteMode: action,
228
+ setINTERNAL__enableInitializingDefaultSimpleExpressionValue: action,
225
229
 
226
230
  resetQueryResult: action,
227
231
  resetQueryContent: action,
@@ -402,6 +406,12 @@ export abstract class QueryBuilderState implements CommandRegistrar {
402
406
  this.getAllFunction = val;
403
407
  }
404
408
 
409
+ setINTERNAL__enableInitializingDefaultSimpleExpressionValue(
410
+ val: boolean,
411
+ ): void {
412
+ this.INTERNAL__enableInitializingDefaultSimpleExpressionValue = val;
413
+ }
414
+
405
415
  get isQuerySupported(): boolean {
406
416
  return !this.unsupportedQueryState.rawLambda;
407
417
  }
@@ -802,7 +812,19 @@ export abstract class QueryBuilderState implements CommandRegistrar {
802
812
  }
803
813
 
804
814
  get allValidationIssues(): string[] {
805
- return this.fetchStructureState.implementation.allValidationIssues;
815
+ return this.fetchStructureState.implementation.allValidationIssues.concat(
816
+ this.filterState.allValidationIssues,
817
+ );
818
+ }
819
+
820
+ get canBuildQuery(): boolean {
821
+ return (
822
+ !this.filterState.hasInvalidFilterValues &&
823
+ !this.filterState.hasInvalidDerivedPropertyParameters &&
824
+ !this.fetchStructureState.implementation.hasInvalidFilterValues &&
825
+ !this.fetchStructureState.implementation
826
+ .hasInvalidDerivedPropertyParameters
827
+ );
806
828
  }
807
829
 
808
830
  /**
@@ -46,6 +46,7 @@ import {
46
46
  INTERNAL__PropagatedValue,
47
47
  isSubType,
48
48
  type ObserverContext,
49
+ InstanceValue,
49
50
  } from '@finos/legend-graph';
50
51
  import {
51
52
  addUniqueEntry,
@@ -130,6 +131,37 @@ export const getCollectionValueSpecificationType = (
130
131
  return undefined;
131
132
  };
132
133
 
134
+ export const isValidInstanceValue = (value: InstanceValue): boolean => {
135
+ const isRequired = value.multiplicity.lowerBound >= 1;
136
+ // required and no values provided. LatestDate doesn't have any values so we skip that check for it.
137
+ if (
138
+ isRequired &&
139
+ value.genericType?.value.rawType !== PrimitiveType.LATESTDATE &&
140
+ (!value.values.length ||
141
+ value.values.some((val) => val === null || val === undefined))
142
+ ) {
143
+ return false;
144
+ }
145
+ // more values than allowed
146
+ if (
147
+ !(value instanceof CollectionInstanceValue) &&
148
+ value.multiplicity.upperBound &&
149
+ value.values.length > value.multiplicity.upperBound
150
+ ) {
151
+ return false;
152
+ }
153
+ // collection instance with invalid values
154
+ if (
155
+ value instanceof CollectionInstanceValue &&
156
+ value.values.some(
157
+ (val) => val instanceof InstanceValue && !isValidInstanceValue(val),
158
+ )
159
+ ) {
160
+ return false;
161
+ }
162
+ return true;
163
+ };
164
+
133
165
  export const unwrapNotExpression = (
134
166
  expression: SimpleFunctionExpression,
135
167
  ): SimpleFunctionExpression | undefined => {
@@ -75,6 +75,14 @@ export type TemplateQueryPanelContentRenderer = (
75
75
  queryBuilderState: QueryBuilderState,
76
76
  ) => React.ReactNode;
77
77
 
78
+ export type QueryBuilderHeaderActionConfiguration = {
79
+ key: string;
80
+ category: number;
81
+ renderer: (
82
+ queryBuilderState: QueryBuilderState,
83
+ ) => React.ReactNode | undefined;
84
+ };
85
+
78
86
  export interface QueryBuilder_LegendApplicationPlugin_Extension
79
87
  extends LegendApplicationPlugin {
80
88
  /**
@@ -118,4 +126,14 @@ export interface QueryBuilder_LegendApplicationPlugin_Extension
118
126
  * Get the list of template query panel content render
119
127
  */
120
128
  getExtraTemplateQueryPanelContentRenderer?(): TemplateQueryPanelContentRenderer[];
129
+
130
+ /**
131
+ * Get the list of action configurations
132
+ */
133
+ getExtraQueryBuilderHeaderActionConfigurations?(): QueryBuilderHeaderActionConfiguration[];
134
+
135
+ /**
136
+ * Get the list of action configurations
137
+ */
138
+ getExtraQueryBuilderHeaderTitleConfigurations?(): QueryBuilderHeaderActionConfiguration[];
121
139
  }
@@ -586,8 +586,8 @@ export const getQueryBuilderSubTypeNodeData = (
586
586
  parentNode instanceof QueryBuilderExplorerTreePropertyNodeData
587
587
  ? parentNode.property.multiplicity
588
588
  : parentNode instanceof QueryBuilderExplorerTreeSubTypeNodeData
589
- ? parentNode.multiplicity
590
- : Multiplicity.ONE,
589
+ ? parentNode.multiplicity
590
+ : Multiplicity.ONE,
591
591
  );
592
592
  subTypeNode.childrenIds =
593
593
  generateExplorerTreeClassNodeChildrenIDs(subTypeNode);
@@ -47,6 +47,8 @@ export abstract class QueryBuilderFetchStructureImplementationState
47
47
  usedExplorerTreePropertyNodeIDs: computed,
48
48
  fetchStructureValidationIssues: computed,
49
49
  allValidationIssues: computed,
50
+ hasInvalidFilterValues: computed,
51
+ hasInvalidDerivedPropertyParameters: computed,
50
52
  hashCode: computed,
51
53
  });
52
54
 
@@ -75,6 +77,8 @@ export abstract class QueryBuilderFetchStructureImplementationState
75
77
  ): void;
76
78
  abstract initialize(): void;
77
79
  abstract initializeWithQuery(): void;
80
+ abstract get hasInvalidFilterValues(): boolean;
81
+ abstract get hasInvalidDerivedPropertyParameters(): boolean;
78
82
  abstract get hashCode(): string;
79
83
 
80
84
  get TEMPORARY__showPostFetchStructurePanel(): boolean {
@@ -529,6 +529,14 @@ export class QueryBuilderGraphFetchTreeState
529
529
  );
530
530
  }
531
531
 
532
+ get hasInvalidFilterValues(): boolean {
533
+ return false;
534
+ }
535
+
536
+ get hasInvalidDerivedPropertyParameters(): boolean {
537
+ return false;
538
+ }
539
+
532
540
  get hashCode(): string {
533
541
  return hashArray([
534
542
  QUERY_BUILDER_STATE_HASH_STRUCTURE.GRAPH_FETCH_STATE,
@@ -149,6 +149,7 @@ export class QueryBuilderTDSState
149
149
  addColumn: action,
150
150
  moveColumn: action,
151
151
  removeAllColumns: action,
152
+ removeColumn: action,
152
153
  replaceColumn: action,
153
154
  initialize: action,
154
155
  initializeWithQuery: action,
@@ -328,6 +329,20 @@ export class QueryBuilderTDSState
328
329
  if (hasNoProjectionColumns) {
329
330
  validationIssues.push('Query has no projection columns');
330
331
  }
332
+
333
+ this.projectionColumns.forEach((column) => {
334
+ if (
335
+ column instanceof QueryBuilderSimpleProjectionColumnState &&
336
+ column.propertyExpressionState.derivedPropertyExpressionStates.some(
337
+ (p) => !p.isValid,
338
+ )
339
+ ) {
340
+ validationIssues.push(
341
+ `Derived property parameter value for ${column.propertyExpressionState.title} is missing`,
342
+ );
343
+ }
344
+ });
345
+
331
346
  return validationIssues;
332
347
  }
333
348
 
@@ -335,6 +350,7 @@ export class QueryBuilderTDSState
335
350
  const fetchStructureValidationIssues = [
336
351
  ...this.fetchStructureValidationIssues,
337
352
  ...this.windowState.windowValidationIssues,
353
+ ...this.postFilterState.allValidationIssues,
338
354
  ];
339
355
 
340
356
  return fetchStructureValidationIssues;
@@ -785,6 +801,23 @@ export class QueryBuilderTDSState
785
801
  return Boolean(usedInProjection ?? usedInPostFilter);
786
802
  }
787
803
 
804
+ get hasInvalidFilterValues(): boolean {
805
+ return (
806
+ this.postFilterState.hasInvalidFilterValues ||
807
+ this.postFilterState.hasInvalidDerivedPropertyParameters
808
+ );
809
+ }
810
+
811
+ get hasInvalidDerivedPropertyParameters(): boolean {
812
+ return this.projectionColumns.some(
813
+ (column) =>
814
+ column instanceof QueryBuilderSimpleProjectionColumnState &&
815
+ column.propertyExpressionState.derivedPropertyExpressionStates.some(
816
+ (p) => !p.isValid,
817
+ ),
818
+ );
819
+ }
820
+
788
821
  get hashCode(): string {
789
822
  return hashArray([
790
823
  QUERY_BUILDER_STATE_HASH_STRUCTURE.PROJECTION_STATE,
@@ -25,6 +25,7 @@ import {
25
25
  observe_ValueSpecification,
26
26
  PrimitiveType,
27
27
  CollectionInstanceValue,
28
+ InstanceValue,
28
29
  } from '@finos/legend-graph';
29
30
  import {
30
31
  type GeneratorFn,
@@ -59,6 +60,7 @@ import {
59
60
  QueryBuilderProjectionColumnState,
60
61
  type QueryBuilderProjectionColumnDragSource,
61
62
  QueryBuilderDerivationProjectionColumnState,
63
+ QueryBuilderSimpleProjectionColumnState,
62
64
  } from '../projection/QueryBuilderProjectionColumnState.js';
63
65
  import {
64
66
  buildProjectionColumnTypeaheadQuery,
@@ -72,6 +74,7 @@ import type { QueryBuilderTDSColumnState } from '../QueryBuilderTDSColumnState.j
72
74
  import {
73
75
  getCollectionValueSpecificationType,
74
76
  getNonCollectionValueSpecificationType,
77
+ isValidInstanceValue,
75
78
  isValueExpressionReferencedInValue,
76
79
  } from '../../../QueryBuilderValueSpecificationHelper.js';
77
80
  import { buildtdsPropertyExpressionFromColState } from './operators/QueryBuilderPostFilterOperatorValueSpecificationBuilder.js';
@@ -604,6 +607,9 @@ export class QueryBuilderPostFilterState
604
607
  replaceBlankNodeWithNode: action,
605
608
  setRearrangingConditions: action,
606
609
  setDerivedColumnBeingDropped: action,
610
+ allValidationIssues: computed,
611
+ hasInvalidFilterValues: computed,
612
+ hasInvalidDerivedPropertyParameters: computed,
607
613
  hashCode: computed,
608
614
  });
609
615
 
@@ -986,6 +992,59 @@ export class QueryBuilderPostFilterState
986
992
  );
987
993
  }
988
994
 
995
+ get allValidationIssues(): string[] {
996
+ const validationIssues: string[] = [];
997
+ Array.from(this.nodes.values()).forEach((node) => {
998
+ if (node instanceof QueryBuilderPostFilterTreeConditionNodeData) {
999
+ if (
1000
+ node.condition.rightConditionValue instanceof
1001
+ PostFilterValueSpecConditionValueState &&
1002
+ node.condition.rightConditionValue.value instanceof InstanceValue &&
1003
+ !isValidInstanceValue(node.condition.rightConditionValue.value) &&
1004
+ node.condition.leftConditionValue instanceof
1005
+ QueryBuilderSimpleProjectionColumnState
1006
+ ) {
1007
+ validationIssues.push(
1008
+ `Filter value for ${node.condition.leftConditionValue.propertyExpressionState.title} is missing or invalid`,
1009
+ );
1010
+ }
1011
+ if (
1012
+ node.condition.leftConditionValue instanceof
1013
+ QueryBuilderSimpleProjectionColumnState &&
1014
+ !node.condition.leftConditionValue.propertyExpressionState.isValid
1015
+ ) {
1016
+ validationIssues.push(
1017
+ `Derived property parameter value for ${node.condition.leftConditionValue.propertyExpressionState.title} is missing or invalid`,
1018
+ );
1019
+ }
1020
+ }
1021
+ });
1022
+ return validationIssues;
1023
+ }
1024
+
1025
+ get hasInvalidFilterValues(): boolean {
1026
+ return Array.from(this.nodes.values()).some(
1027
+ (node) =>
1028
+ node instanceof QueryBuilderPostFilterTreeConditionNodeData &&
1029
+ node.condition.rightConditionValue instanceof
1030
+ PostFilterValueSpecConditionValueState &&
1031
+ node.condition.rightConditionValue.value instanceof InstanceValue &&
1032
+ !isValidInstanceValue(node.condition.rightConditionValue.value) &&
1033
+ node.condition.leftConditionValue instanceof
1034
+ QueryBuilderSimpleProjectionColumnState,
1035
+ );
1036
+ }
1037
+
1038
+ get hasInvalidDerivedPropertyParameters(): boolean {
1039
+ return Array.from(this.nodes.values()).some(
1040
+ (node) =>
1041
+ node instanceof QueryBuilderPostFilterTreeConditionNodeData &&
1042
+ node.condition.leftConditionValue instanceof
1043
+ QueryBuilderSimpleProjectionColumnState &&
1044
+ !node.condition.leftConditionValue.propertyExpressionState.isValid,
1045
+ );
1046
+ }
1047
+
989
1048
  get hashCode(): string {
990
1049
  return hashArray([
991
1050
  QUERY_BUILDER_STATE_HASH_STRUCTURE.POST_FILTER_STATE,