@finos/legend-application-query 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (553) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +3 -0
  3. package/lib/LegendQueryAppEvent.d.ts +19 -0
  4. package/lib/LegendQueryAppEvent.d.ts.map +1 -0
  5. package/lib/LegendQueryAppEvent.js +21 -0
  6. package/lib/LegendQueryAppEvent.js.map +1 -0
  7. package/lib/QueryBuilder_Const.d.ts +77 -0
  8. package/lib/QueryBuilder_Const.d.ts.map +1 -0
  9. package/lib/QueryBuilder_Const.js +85 -0
  10. package/lib/QueryBuilder_Const.js.map +1 -0
  11. package/lib/application/LegendQuery.d.ts +27 -0
  12. package/lib/application/LegendQuery.d.ts.map +1 -0
  13. package/lib/application/LegendQuery.js +58 -0
  14. package/lib/application/LegendQuery.js.map +1 -0
  15. package/lib/application/LegendQueryApplicationConfig.d.ts +46 -0
  16. package/lib/application/LegendQueryApplicationConfig.d.ts.map +1 -0
  17. package/lib/application/LegendQueryApplicationConfig.js +35 -0
  18. package/lib/application/LegendQueryApplicationConfig.js.map +1 -0
  19. package/lib/application/LegendQueryPluginManager.d.ts +32 -0
  20. package/lib/application/LegendQueryPluginManager.d.ts.map +1 -0
  21. package/lib/application/LegendQueryPluginManager.js +46 -0
  22. package/lib/application/LegendQueryPluginManager.js.map +1 -0
  23. package/lib/components/LegendQueryApplication.d.ts +25 -0
  24. package/lib/components/LegendQueryApplication.d.ts.map +1 -0
  25. package/lib/components/LegendQueryApplication.js +39 -0
  26. package/lib/components/LegendQueryApplication.js.map +1 -0
  27. package/lib/components/LegendQueryBaseStoreProvider.d.ts +28 -0
  28. package/lib/components/LegendQueryBaseStoreProvider.d.ts.map +1 -0
  29. package/lib/components/LegendQueryBaseStoreProvider.js +32 -0
  30. package/lib/components/LegendQueryBaseStoreProvider.js.map +1 -0
  31. package/lib/components/QueryBuilder.d.ts +23 -0
  32. package/lib/components/QueryBuilder.d.ts.map +1 -0
  33. package/lib/components/QueryBuilder.js +91 -0
  34. package/lib/components/QueryBuilder.js.map +1 -0
  35. package/lib/components/QueryBuilderExplorerPanel.d.ts +34 -0
  36. package/lib/components/QueryBuilderExplorerPanel.d.ts.map +1 -0
  37. package/lib/components/QueryBuilderExplorerPanel.js +379 -0
  38. package/lib/components/QueryBuilderExplorerPanel.js.map +1 -0
  39. package/lib/components/QueryBuilderFetchStructurePanel.d.ts +23 -0
  40. package/lib/components/QueryBuilderFetchStructurePanel.d.ts.map +1 -0
  41. package/lib/components/QueryBuilderFetchStructurePanel.js +89 -0
  42. package/lib/components/QueryBuilderFetchStructurePanel.js.map +1 -0
  43. package/lib/components/QueryBuilderFilterPanel.d.ts +23 -0
  44. package/lib/components/QueryBuilderFilterPanel.d.ts.map +1 -0
  45. package/lib/components/QueryBuilderFilterPanel.js +301 -0
  46. package/lib/components/QueryBuilderFilterPanel.js.map +1 -0
  47. package/lib/components/QueryBuilderFunctionsExplorerPanel.d.ts +23 -0
  48. package/lib/components/QueryBuilderFunctionsExplorerPanel.d.ts.map +1 -0
  49. package/lib/components/QueryBuilderFunctionsExplorerPanel.js +177 -0
  50. package/lib/components/QueryBuilderFunctionsExplorerPanel.js.map +1 -0
  51. package/lib/components/QueryBuilderGraphFetchTreePanel.d.ts +33 -0
  52. package/lib/components/QueryBuilderGraphFetchTreePanel.d.ts.map +1 -0
  53. package/lib/components/QueryBuilderGraphFetchTreePanel.js +96 -0
  54. package/lib/components/QueryBuilderGraphFetchTreePanel.js.map +1 -0
  55. package/lib/components/QueryBuilderLambdaEditor.d.ts +42 -0
  56. package/lib/components/QueryBuilderLambdaEditor.d.ts.map +1 -0
  57. package/lib/components/QueryBuilderLambdaEditor.js +47 -0
  58. package/lib/components/QueryBuilderLambdaEditor.js.map +1 -0
  59. package/lib/components/QueryBuilderMilestoneEditor.d.ts +24 -0
  60. package/lib/components/QueryBuilderMilestoneEditor.d.ts.map +1 -0
  61. package/lib/components/QueryBuilderMilestoneEditor.js +120 -0
  62. package/lib/components/QueryBuilderMilestoneEditor.js.map +1 -0
  63. package/lib/components/QueryBuilderParameterPanel.d.ts +30 -0
  64. package/lib/components/QueryBuilderParameterPanel.d.ts.map +1 -0
  65. package/lib/components/QueryBuilderParameterPanel.js +148 -0
  66. package/lib/components/QueryBuilderParameterPanel.js.map +1 -0
  67. package/lib/components/QueryBuilderPostFilterPanel.d.ts +31 -0
  68. package/lib/components/QueryBuilderPostFilterPanel.d.ts.map +1 -0
  69. package/lib/components/QueryBuilderPostFilterPanel.js +373 -0
  70. package/lib/components/QueryBuilderPostFilterPanel.js.map +1 -0
  71. package/lib/components/QueryBuilderProjectionPanel.d.ts +23 -0
  72. package/lib/components/QueryBuilderProjectionPanel.d.ts.map +1 -0
  73. package/lib/components/QueryBuilderProjectionPanel.js +229 -0
  74. package/lib/components/QueryBuilderProjectionPanel.js.map +1 -0
  75. package/lib/components/QueryBuilderPropertyExpressionEditor.d.ts +30 -0
  76. package/lib/components/QueryBuilderPropertyExpressionEditor.d.ts.map +1 -0
  77. package/lib/components/QueryBuilderPropertyExpressionEditor.js +116 -0
  78. package/lib/components/QueryBuilderPropertyExpressionEditor.js.map +1 -0
  79. package/lib/components/QueryBuilderPropertyInfoTooltip.d.ts +26 -0
  80. package/lib/components/QueryBuilderPropertyInfoTooltip.d.ts.map +1 -0
  81. package/lib/components/QueryBuilderPropertyInfoTooltip.js +32 -0
  82. package/lib/components/QueryBuilderPropertyInfoTooltip.js.map +1 -0
  83. package/lib/components/QueryBuilderPropertySearchPanel.d.ts +24 -0
  84. package/lib/components/QueryBuilderPropertySearchPanel.d.ts.map +1 -0
  85. package/lib/components/QueryBuilderPropertySearchPanel.js +202 -0
  86. package/lib/components/QueryBuilderPropertySearchPanel.js.map +1 -0
  87. package/lib/components/QueryBuilderResultModifierPanel.d.ts +23 -0
  88. package/lib/components/QueryBuilderResultModifierPanel.d.ts.map +1 -0
  89. package/lib/components/QueryBuilderResultModifierPanel.js +88 -0
  90. package/lib/components/QueryBuilderResultModifierPanel.js.map +1 -0
  91. package/lib/components/QueryBuilderResultPanel.d.ts +23 -0
  92. package/lib/components/QueryBuilderResultPanel.d.ts.map +1 -0
  93. package/lib/components/QueryBuilderResultPanel.js +223 -0
  94. package/lib/components/QueryBuilderResultPanel.js.map +1 -0
  95. package/lib/components/QueryBuilderSetupPanel.d.ts +23 -0
  96. package/lib/components/QueryBuilderSetupPanel.d.ts.map +1 -0
  97. package/lib/components/QueryBuilderSetupPanel.js +148 -0
  98. package/lib/components/QueryBuilderSetupPanel.js.map +1 -0
  99. package/lib/components/QueryBuilderTextEditor.d.ts +23 -0
  100. package/lib/components/QueryBuilderTextEditor.d.ts.map +1 -0
  101. package/lib/components/QueryBuilderTextEditor.js +48 -0
  102. package/lib/components/QueryBuilderTextEditor.js.map +1 -0
  103. package/lib/components/QueryBuilderUnsupportedQueryEditor.d.ts +23 -0
  104. package/lib/components/QueryBuilderUnsupportedQueryEditor.d.ts.map +1 -0
  105. package/lib/components/QueryBuilderUnsupportedQueryEditor.js +35 -0
  106. package/lib/components/QueryBuilderUnsupportedQueryEditor.js.map +1 -0
  107. package/lib/components/QueryBuilder_TestID.d.ts +26 -0
  108. package/lib/components/QueryBuilder_TestID.d.ts.map +1 -0
  109. package/lib/components/QueryBuilder_TestID.js +27 -0
  110. package/lib/components/QueryBuilder_TestID.js.map +1 -0
  111. package/lib/components/QueryEditor.d.ts +29 -0
  112. package/lib/components/QueryEditor.d.ts.map +1 -0
  113. package/lib/components/QueryEditor.js +130 -0
  114. package/lib/components/QueryEditor.js.map +1 -0
  115. package/lib/components/QueryEditorComponentTestUtils.d.ts +35 -0
  116. package/lib/components/QueryEditorComponentTestUtils.d.ts.map +1 -0
  117. package/lib/components/QueryEditorComponentTestUtils.js +108 -0
  118. package/lib/components/QueryEditorComponentTestUtils.js.map +1 -0
  119. package/lib/components/QueryEditorStoreProvider.d.ts +37 -0
  120. package/lib/components/QueryEditorStoreProvider.d.ts.map +1 -0
  121. package/lib/components/QueryEditorStoreProvider.js +48 -0
  122. package/lib/components/QueryEditorStoreProvider.js.map +1 -0
  123. package/lib/components/QuerySetup.d.ts +18 -0
  124. package/lib/components/QuerySetup.d.ts.map +1 -0
  125. package/lib/components/QuerySetup.js +388 -0
  126. package/lib/components/QuerySetup.js.map +1 -0
  127. package/lib/components/QuerySetupStoreProvider.d.ts +23 -0
  128. package/lib/components/QuerySetupStoreProvider.d.ts.map +1 -0
  129. package/lib/components/QuerySetupStoreProvider.js +35 -0
  130. package/lib/components/QuerySetupStoreProvider.js.map +1 -0
  131. package/lib/components/shared/ElementIconUtils.d.ts +18 -0
  132. package/lib/components/shared/ElementIconUtils.d.ts.map +1 -0
  133. package/lib/components/shared/ElementIconUtils.js +37 -0
  134. package/lib/components/shared/ElementIconUtils.js.map +1 -0
  135. package/lib/graphManager/QueryBuilder_GraphManagerPlugin.d.ts +21 -0
  136. package/lib/graphManager/QueryBuilder_GraphManagerPlugin.d.ts.map +1 -0
  137. package/lib/graphManager/QueryBuilder_GraphManagerPlugin.js +27 -0
  138. package/lib/graphManager/QueryBuilder_GraphManagerPlugin.js.map +1 -0
  139. package/lib/graphManager/QueryBuilder_GraphManagerPreset.d.ts +24 -0
  140. package/lib/graphManager/QueryBuilder_GraphManagerPreset.d.ts.map +1 -0
  141. package/lib/graphManager/QueryBuilder_GraphManagerPreset.js +32 -0
  142. package/lib/graphManager/QueryBuilder_GraphManagerPreset.js.map +1 -0
  143. package/lib/graphManager/action/analytics/MappingRuntimeCompatibilityAnalysis.d.ts +21 -0
  144. package/lib/graphManager/action/analytics/MappingRuntimeCompatibilityAnalysis.d.ts.map +1 -0
  145. package/lib/graphManager/action/analytics/MappingRuntimeCompatibilityAnalysis.js +20 -0
  146. package/lib/graphManager/action/analytics/MappingRuntimeCompatibilityAnalysis.js.map +1 -0
  147. package/lib/graphManager/action/analytics/ServiceExecutionAnalysis.d.ts +21 -0
  148. package/lib/graphManager/action/analytics/ServiceExecutionAnalysis.d.ts.map +1 -0
  149. package/lib/graphManager/action/analytics/ServiceExecutionAnalysis.js +20 -0
  150. package/lib/graphManager/action/analytics/ServiceExecutionAnalysis.js.map +1 -0
  151. package/lib/graphManager/protocol/pure/QueryBuilder_PureGraphManagerExtension.d.ts +25 -0
  152. package/lib/graphManager/protocol/pure/QueryBuilder_PureGraphManagerExtension.d.ts.map +1 -0
  153. package/lib/graphManager/protocol/pure/QueryBuilder_PureGraphManagerExtension.js +21 -0
  154. package/lib/graphManager/protocol/pure/QueryBuilder_PureGraphManagerExtension.js.map +1 -0
  155. package/lib/graphManager/protocol/pure/QueryBuilder_PureGraphManagerExtensionBuilder.d.ts +18 -0
  156. package/lib/graphManager/protocol/pure/QueryBuilder_PureGraphManagerExtensionBuilder.d.ts.map +1 -0
  157. package/lib/graphManager/protocol/pure/QueryBuilder_PureGraphManagerExtensionBuilder.js +20 -0
  158. package/lib/graphManager/protocol/pure/QueryBuilder_PureGraphManagerExtensionBuilder.js.map +1 -0
  159. package/lib/graphManager/protocol/pure/QueryBuilder_PureProtocolProcessorPlugin.d.ts +22 -0
  160. package/lib/graphManager/protocol/pure/QueryBuilder_PureProtocolProcessorPlugin.d.ts.map +1 -0
  161. package/lib/graphManager/protocol/pure/QueryBuilder_PureProtocolProcessorPlugin.js +68 -0
  162. package/lib/graphManager/protocol/pure/QueryBuilder_PureProtocolProcessorPlugin.js.map +1 -0
  163. package/lib/graphManager/protocol/pure/v1/V1_QueryBuilder_FunctionExpressionBuilder.d.ts +22 -0
  164. package/lib/graphManager/protocol/pure/v1/V1_QueryBuilder_FunctionExpressionBuilder.d.ts.map +1 -0
  165. package/lib/graphManager/protocol/pure/v1/V1_QueryBuilder_FunctionExpressionBuilder.js +207 -0
  166. package/lib/graphManager/protocol/pure/v1/V1_QueryBuilder_FunctionExpressionBuilder.js.map +1 -0
  167. package/lib/graphManager/protocol/pure/v1/V1_QueryBuilder_PropertyExpressionTypeInferenceBuilder.d.ts +18 -0
  168. package/lib/graphManager/protocol/pure/v1/V1_QueryBuilder_PropertyExpressionTypeInferenceBuilder.d.ts.map +1 -0
  169. package/lib/graphManager/protocol/pure/v1/V1_QueryBuilder_PropertyExpressionTypeInferenceBuilder.js +18 -0
  170. package/lib/graphManager/protocol/pure/v1/V1_QueryBuilder_PropertyExpressionTypeInferenceBuilder.js.map +1 -0
  171. package/lib/graphManager/protocol/pure/v1/V1_QueryBuilder_PureGraphManagerExtension.d.ts +29 -0
  172. package/lib/graphManager/protocol/pure/v1/V1_QueryBuilder_PureGraphManagerExtension.d.ts.map +1 -0
  173. package/lib/graphManager/protocol/pure/v1/V1_QueryBuilder_PureGraphManagerExtension.js +182 -0
  174. package/lib/graphManager/protocol/pure/v1/V1_QueryBuilder_PureGraphManagerExtension.js.map +1 -0
  175. package/lib/index.css +17 -0
  176. package/lib/index.css.map +1 -0
  177. package/lib/index.d.ts +36 -0
  178. package/lib/index.d.ts.map +1 -0
  179. package/lib/index.js +36 -0
  180. package/lib/index.js.map +1 -0
  181. package/lib/package.json +99 -0
  182. package/lib/stores/LegendQueryApplicationPlugin.d.ts +47 -0
  183. package/lib/stores/LegendQueryApplicationPlugin.d.ts.map +1 -0
  184. package/lib/stores/LegendQueryApplicationPlugin.js +27 -0
  185. package/lib/stores/LegendQueryApplicationPlugin.js.map +1 -0
  186. package/lib/stores/LegendQueryBaseStore.d.ts +28 -0
  187. package/lib/stores/LegendQueryBaseStore.d.ts.map +1 -0
  188. package/lib/stores/LegendQueryBaseStore.js +28 -0
  189. package/lib/stores/LegendQueryBaseStore.js.map +1 -0
  190. package/lib/stores/LegendQueryEventService.d.ts +27 -0
  191. package/lib/stores/LegendQueryEventService.d.ts.map +1 -0
  192. package/lib/stores/LegendQueryEventService.js +29 -0
  193. package/lib/stores/LegendQueryEventService.js.map +1 -0
  194. package/lib/stores/LegendQueryRouter.d.ts +55 -0
  195. package/lib/stores/LegendQueryRouter.d.ts.map +1 -0
  196. package/lib/stores/LegendQueryRouter.js +50 -0
  197. package/lib/stores/LegendQueryRouter.js.map +1 -0
  198. package/lib/stores/QueryBuilderAggregationState.d.ts +53 -0
  199. package/lib/stores/QueryBuilderAggregationState.d.ts.map +1 -0
  200. package/lib/stores/QueryBuilderAggregationState.js +122 -0
  201. package/lib/stores/QueryBuilderAggregationState.js.map +1 -0
  202. package/lib/stores/QueryBuilderExplorerState.d.ts +93 -0
  203. package/lib/stores/QueryBuilderExplorerState.d.ts.map +1 -0
  204. package/lib/stores/QueryBuilderExplorerState.js +310 -0
  205. package/lib/stores/QueryBuilderExplorerState.js.map +1 -0
  206. package/lib/stores/QueryBuilderFetchStructureState.d.ts +33 -0
  207. package/lib/stores/QueryBuilderFetchStructureState.d.ts.map +1 -0
  208. package/lib/stores/QueryBuilderFetchStructureState.js +50 -0
  209. package/lib/stores/QueryBuilderFetchStructureState.js.map +1 -0
  210. package/lib/stores/QueryBuilderFilterState.d.ts +127 -0
  211. package/lib/stores/QueryBuilderFilterState.d.ts.map +1 -0
  212. package/lib/stores/QueryBuilderFilterState.js +566 -0
  213. package/lib/stores/QueryBuilderFilterState.js.map +1 -0
  214. package/lib/stores/QueryBuilderGraphFetchTreeState.d.ts +35 -0
  215. package/lib/stores/QueryBuilderGraphFetchTreeState.d.ts.map +1 -0
  216. package/lib/stores/QueryBuilderGraphFetchTreeState.js +65 -0
  217. package/lib/stores/QueryBuilderGraphFetchTreeState.js.map +1 -0
  218. package/lib/stores/QueryBuilderGraphFetchTreeUtil.d.ts +41 -0
  219. package/lib/stores/QueryBuilderGraphFetchTreeUtil.d.ts.map +1 -0
  220. package/lib/stores/QueryBuilderGraphFetchTreeUtil.js +173 -0
  221. package/lib/stores/QueryBuilderGraphFetchTreeUtil.js.map +1 -0
  222. package/lib/stores/QueryBuilderLambdaBuilder.d.ts +30 -0
  223. package/lib/stores/QueryBuilderLambdaBuilder.d.ts.map +1 -0
  224. package/lib/stores/QueryBuilderLambdaBuilder.js +407 -0
  225. package/lib/stores/QueryBuilderLambdaBuilder.js.map +1 -0
  226. package/lib/stores/QueryBuilderLambdaProcessor.d.ts +56 -0
  227. package/lib/stores/QueryBuilderLambdaProcessor.d.ts.map +1 -0
  228. package/lib/stores/QueryBuilderLambdaProcessor.js +544 -0
  229. package/lib/stores/QueryBuilderLambdaProcessor.js.map +1 -0
  230. package/lib/stores/QueryBuilderOperatorsHelper.d.ts +28 -0
  231. package/lib/stores/QueryBuilderOperatorsHelper.d.ts.map +1 -0
  232. package/lib/stores/QueryBuilderOperatorsHelper.js +123 -0
  233. package/lib/stores/QueryBuilderOperatorsHelper.js.map +1 -0
  234. package/lib/stores/QueryBuilderPostFilterOperator.d.ts +29 -0
  235. package/lib/stores/QueryBuilderPostFilterOperator.d.ts.map +1 -0
  236. package/lib/stores/QueryBuilderPostFilterOperator.js +30 -0
  237. package/lib/stores/QueryBuilderPostFilterOperator.js.map +1 -0
  238. package/lib/stores/QueryBuilderPostFilterProcessor.d.ts +24 -0
  239. package/lib/stores/QueryBuilderPostFilterProcessor.d.ts.map +1 -0
  240. package/lib/stores/QueryBuilderPostFilterProcessor.js +111 -0
  241. package/lib/stores/QueryBuilderPostFilterProcessor.js.map +1 -0
  242. package/lib/stores/QueryBuilderPostFilterState.d.ts +132 -0
  243. package/lib/stores/QueryBuilderPostFilterState.d.ts.map +1 -0
  244. package/lib/stores/QueryBuilderPostFilterState.js +559 -0
  245. package/lib/stores/QueryBuilderPostFilterState.js.map +1 -0
  246. package/lib/stores/QueryBuilderPreviewDataHelper.d.ts +25 -0
  247. package/lib/stores/QueryBuilderPreviewDataHelper.d.ts.map +1 -0
  248. package/lib/stores/QueryBuilderPreviewDataHelper.js +161 -0
  249. package/lib/stores/QueryBuilderPreviewDataHelper.js.map +1 -0
  250. package/lib/stores/QueryBuilderProjectionState.d.ts +104 -0
  251. package/lib/stores/QueryBuilderProjectionState.d.ts.map +1 -0
  252. package/lib/stores/QueryBuilderProjectionState.js +432 -0
  253. package/lib/stores/QueryBuilderProjectionState.js.map +1 -0
  254. package/lib/stores/QueryBuilderPropertyEditorState.d.ts +62 -0
  255. package/lib/stores/QueryBuilderPropertyEditorState.d.ts.map +1 -0
  256. package/lib/stores/QueryBuilderPropertyEditorState.js +384 -0
  257. package/lib/stores/QueryBuilderPropertyEditorState.js.map +1 -0
  258. package/lib/stores/QueryBuilderPropertySearchPanelState.d.ts +46 -0
  259. package/lib/stores/QueryBuilderPropertySearchPanelState.d.ts.map +1 -0
  260. package/lib/stores/QueryBuilderPropertySearchPanelState.js +240 -0
  261. package/lib/stores/QueryBuilderPropertySearchPanelState.js.map +1 -0
  262. package/lib/stores/QueryBuilderResultState.d.ts +38 -0
  263. package/lib/stores/QueryBuilderResultState.d.ts.map +1 -0
  264. package/lib/stores/QueryBuilderResultState.js +164 -0
  265. package/lib/stores/QueryBuilderResultState.js.map +1 -0
  266. package/lib/stores/QueryBuilderSetupState.d.ts +46 -0
  267. package/lib/stores/QueryBuilderSetupState.d.ts.map +1 -0
  268. package/lib/stores/QueryBuilderSetupState.js +163 -0
  269. package/lib/stores/QueryBuilderSetupState.js.map +1 -0
  270. package/lib/stores/QueryBuilderState.d.ts +101 -0
  271. package/lib/stores/QueryBuilderState.d.ts.map +1 -0
  272. package/lib/stores/QueryBuilderState.js +371 -0
  273. package/lib/stores/QueryBuilderState.js.map +1 -0
  274. package/lib/stores/QueryBuilderUnsupportedState.d.ts +26 -0
  275. package/lib/stores/QueryBuilderUnsupportedState.d.ts.map +1 -0
  276. package/lib/stores/QueryBuilderUnsupportedState.js +36 -0
  277. package/lib/stores/QueryBuilderUnsupportedState.js.map +1 -0
  278. package/lib/stores/QueryBuilderValueSpecificationBuilderHelper.d.ts +19 -0
  279. package/lib/stores/QueryBuilderValueSpecificationBuilderHelper.d.ts.map +1 -0
  280. package/lib/stores/QueryBuilderValueSpecificationBuilderHelper.js +50 -0
  281. package/lib/stores/QueryBuilderValueSpecificationBuilderHelper.js.map +1 -0
  282. package/lib/stores/QueryEditorStore.d.ts +98 -0
  283. package/lib/stores/QueryEditorStore.d.ts.map +1 -0
  284. package/lib/stores/QueryEditorStore.js +370 -0
  285. package/lib/stores/QueryEditorStore.js.map +1 -0
  286. package/lib/stores/QueryEditorStoreTestUtils.d.ts +18 -0
  287. package/lib/stores/QueryEditorStoreTestUtils.d.ts.map +1 -0
  288. package/lib/stores/QueryEditorStoreTestUtils.js +42 -0
  289. package/lib/stores/QueryEditorStoreTestUtils.js.map +1 -0
  290. package/lib/stores/QueryFunctionsExplorerState.d.ts +63 -0
  291. package/lib/stores/QueryFunctionsExplorerState.d.ts.map +1 -0
  292. package/lib/stores/QueryFunctionsExplorerState.js +238 -0
  293. package/lib/stores/QueryFunctionsExplorerState.js.map +1 -0
  294. package/lib/stores/QueryParametersState.d.ts +30 -0
  295. package/lib/stores/QueryParametersState.d.ts.map +1 -0
  296. package/lib/stores/QueryParametersState.js +42 -0
  297. package/lib/stores/QueryParametersState.js.map +1 -0
  298. package/lib/stores/QueryResultSetModifierState.d.ts +52 -0
  299. package/lib/stores/QueryResultSetModifierState.d.ts.map +1 -0
  300. package/lib/stores/QueryResultSetModifierState.js +165 -0
  301. package/lib/stores/QueryResultSetModifierState.js.map +1 -0
  302. package/lib/stores/QuerySetupStore.d.ts +86 -0
  303. package/lib/stores/QuerySetupStore.d.ts.map +1 -0
  304. package/lib/stores/QuerySetupStore.js +297 -0
  305. package/lib/stores/QuerySetupStore.js.map +1 -0
  306. package/lib/stores/QueryTextEditorState.d.ts +49 -0
  307. package/lib/stores/QueryTextEditorState.d.ts.map +1 -0
  308. package/lib/stores/QueryTextEditorState.js +145 -0
  309. package/lib/stores/QueryTextEditorState.js.map +1 -0
  310. package/lib/stores/aggregateOperators/QueryBuilderAggregateOperatorHelper.d.ts +21 -0
  311. package/lib/stores/aggregateOperators/QueryBuilderAggregateOperatorHelper.d.ts.map +1 -0
  312. package/lib/stores/aggregateOperators/QueryBuilderAggregateOperatorHelper.js +40 -0
  313. package/lib/stores/aggregateOperators/QueryBuilderAggregateOperatorHelper.js.map +1 -0
  314. package/lib/stores/aggregateOperators/QueryBuilderAggregateOperator_Average.d.ts +26 -0
  315. package/lib/stores/aggregateOperators/QueryBuilderAggregateOperator_Average.d.ts.map +1 -0
  316. package/lib/stores/aggregateOperators/QueryBuilderAggregateOperator_Average.js +50 -0
  317. package/lib/stores/aggregateOperators/QueryBuilderAggregateOperator_Average.js.map +1 -0
  318. package/lib/stores/aggregateOperators/QueryBuilderAggregateOperator_Count.d.ts +26 -0
  319. package/lib/stores/aggregateOperators/QueryBuilderAggregateOperator_Count.d.ts.map +1 -0
  320. package/lib/stores/aggregateOperators/QueryBuilderAggregateOperator_Count.js +55 -0
  321. package/lib/stores/aggregateOperators/QueryBuilderAggregateOperator_Count.js.map +1 -0
  322. package/lib/stores/aggregateOperators/QueryBuilderAggregateOperator_Distinct.d.ts +25 -0
  323. package/lib/stores/aggregateOperators/QueryBuilderAggregateOperator_Distinct.d.ts.map +1 -0
  324. package/lib/stores/aggregateOperators/QueryBuilderAggregateOperator_Distinct.js +50 -0
  325. package/lib/stores/aggregateOperators/QueryBuilderAggregateOperator_Distinct.js.map +1 -0
  326. package/lib/stores/aggregateOperators/QueryBuilderAggregateOperator_DistinctCount.d.ts +26 -0
  327. package/lib/stores/aggregateOperators/QueryBuilderAggregateOperator_DistinctCount.d.ts.map +1 -0
  328. package/lib/stores/aggregateOperators/QueryBuilderAggregateOperator_DistinctCount.js +77 -0
  329. package/lib/stores/aggregateOperators/QueryBuilderAggregateOperator_DistinctCount.js.map +1 -0
  330. package/lib/stores/aggregateOperators/QueryBuilderAggregateOperator_JoinString.d.ts +26 -0
  331. package/lib/stores/aggregateOperators/QueryBuilderAggregateOperator_JoinString.d.ts.map +1 -0
  332. package/lib/stores/aggregateOperators/QueryBuilderAggregateOperator_JoinString.js +66 -0
  333. package/lib/stores/aggregateOperators/QueryBuilderAggregateOperator_JoinString.js.map +1 -0
  334. package/lib/stores/aggregateOperators/QueryBuilderAggregateOperator_Max.d.ts +25 -0
  335. package/lib/stores/aggregateOperators/QueryBuilderAggregateOperator_Max.d.ts.map +1 -0
  336. package/lib/stores/aggregateOperators/QueryBuilderAggregateOperator_Max.js +86 -0
  337. package/lib/stores/aggregateOperators/QueryBuilderAggregateOperator_Max.js.map +1 -0
  338. package/lib/stores/aggregateOperators/QueryBuilderAggregateOperator_Min.d.ts +25 -0
  339. package/lib/stores/aggregateOperators/QueryBuilderAggregateOperator_Min.d.ts.map +1 -0
  340. package/lib/stores/aggregateOperators/QueryBuilderAggregateOperator_Min.js +86 -0
  341. package/lib/stores/aggregateOperators/QueryBuilderAggregateOperator_Min.js.map +1 -0
  342. package/lib/stores/aggregateOperators/QueryBuilderAggregateOperator_StdDev_Population.d.ts +26 -0
  343. package/lib/stores/aggregateOperators/QueryBuilderAggregateOperator_StdDev_Population.d.ts.map +1 -0
  344. package/lib/stores/aggregateOperators/QueryBuilderAggregateOperator_StdDev_Population.js +50 -0
  345. package/lib/stores/aggregateOperators/QueryBuilderAggregateOperator_StdDev_Population.js.map +1 -0
  346. package/lib/stores/aggregateOperators/QueryBuilderAggregateOperator_StdDev_Sample.d.ts +26 -0
  347. package/lib/stores/aggregateOperators/QueryBuilderAggregateOperator_StdDev_Sample.d.ts.map +1 -0
  348. package/lib/stores/aggregateOperators/QueryBuilderAggregateOperator_StdDev_Sample.js +50 -0
  349. package/lib/stores/aggregateOperators/QueryBuilderAggregateOperator_StdDev_Sample.js.map +1 -0
  350. package/lib/stores/aggregateOperators/QueryBuilderAggregateOperator_Sum.d.ts +25 -0
  351. package/lib/stores/aggregateOperators/QueryBuilderAggregateOperator_Sum.d.ts.map +1 -0
  352. package/lib/stores/aggregateOperators/QueryBuilderAggregateOperator_Sum.js +45 -0
  353. package/lib/stores/aggregateOperators/QueryBuilderAggregateOperator_Sum.js.map +1 -0
  354. package/lib/stores/filterOperators/QueryBuilderFilterOperatorHelper.d.ts +20 -0
  355. package/lib/stores/filterOperators/QueryBuilderFilterOperatorHelper.d.ts.map +1 -0
  356. package/lib/stores/filterOperators/QueryBuilderFilterOperatorHelper.js +257 -0
  357. package/lib/stores/filterOperators/QueryBuilderFilterOperatorHelper.js.map +1 -0
  358. package/lib/stores/filterOperators/QueryBuilderFilterOperator_Contain.d.ts +31 -0
  359. package/lib/stores/filterOperators/QueryBuilderFilterOperator_Contain.d.ts.map +1 -0
  360. package/lib/stores/filterOperators/QueryBuilderFilterOperator_Contain.js +72 -0
  361. package/lib/stores/filterOperators/QueryBuilderFilterOperator_Contain.js.map +1 -0
  362. package/lib/stores/filterOperators/QueryBuilderFilterOperator_EndWith.d.ts +31 -0
  363. package/lib/stores/filterOperators/QueryBuilderFilterOperator_EndWith.d.ts.map +1 -0
  364. package/lib/stores/filterOperators/QueryBuilderFilterOperator_EndWith.js +72 -0
  365. package/lib/stores/filterOperators/QueryBuilderFilterOperator_EndWith.js.map +1 -0
  366. package/lib/stores/filterOperators/QueryBuilderFilterOperator_Equal.d.ts +31 -0
  367. package/lib/stores/filterOperators/QueryBuilderFilterOperator_Equal.d.ts.map +1 -0
  368. package/lib/stores/filterOperators/QueryBuilderFilterOperator_Equal.js +139 -0
  369. package/lib/stores/filterOperators/QueryBuilderFilterOperator_Equal.js.map +1 -0
  370. package/lib/stores/filterOperators/QueryBuilderFilterOperator_GreaterThan.d.ts +26 -0
  371. package/lib/stores/filterOperators/QueryBuilderFilterOperator_GreaterThan.d.ts.map +1 -0
  372. package/lib/stores/filterOperators/QueryBuilderFilterOperator_GreaterThan.js +107 -0
  373. package/lib/stores/filterOperators/QueryBuilderFilterOperator_GreaterThan.js.map +1 -0
  374. package/lib/stores/filterOperators/QueryBuilderFilterOperator_GreaterThanEqual.d.ts +26 -0
  375. package/lib/stores/filterOperators/QueryBuilderFilterOperator_GreaterThanEqual.d.ts.map +1 -0
  376. package/lib/stores/filterOperators/QueryBuilderFilterOperator_GreaterThanEqual.js +107 -0
  377. package/lib/stores/filterOperators/QueryBuilderFilterOperator_GreaterThanEqual.js.map +1 -0
  378. package/lib/stores/filterOperators/QueryBuilderFilterOperator_In.d.ts +31 -0
  379. package/lib/stores/filterOperators/QueryBuilderFilterOperator_In.d.ts.map +1 -0
  380. package/lib/stores/filterOperators/QueryBuilderFilterOperator_In.js +103 -0
  381. package/lib/stores/filterOperators/QueryBuilderFilterOperator_In.js.map +1 -0
  382. package/lib/stores/filterOperators/QueryBuilderFilterOperator_IsEmpty.d.ts +31 -0
  383. package/lib/stores/filterOperators/QueryBuilderFilterOperator_IsEmpty.d.ts.map +1 -0
  384. package/lib/stores/filterOperators/QueryBuilderFilterOperator_IsEmpty.js +65 -0
  385. package/lib/stores/filterOperators/QueryBuilderFilterOperator_IsEmpty.js.map +1 -0
  386. package/lib/stores/filterOperators/QueryBuilderFilterOperator_LessThan.d.ts +26 -0
  387. package/lib/stores/filterOperators/QueryBuilderFilterOperator_LessThan.d.ts.map +1 -0
  388. package/lib/stores/filterOperators/QueryBuilderFilterOperator_LessThan.js +108 -0
  389. package/lib/stores/filterOperators/QueryBuilderFilterOperator_LessThan.js.map +1 -0
  390. package/lib/stores/filterOperators/QueryBuilderFilterOperator_LessThanEqual.d.ts +26 -0
  391. package/lib/stores/filterOperators/QueryBuilderFilterOperator_LessThanEqual.d.ts.map +1 -0
  392. package/lib/stores/filterOperators/QueryBuilderFilterOperator_LessThanEqual.js +107 -0
  393. package/lib/stores/filterOperators/QueryBuilderFilterOperator_LessThanEqual.js.map +1 -0
  394. package/lib/stores/filterOperators/QueryBuilderFilterOperator_StartWith.d.ts +31 -0
  395. package/lib/stores/filterOperators/QueryBuilderFilterOperator_StartWith.d.ts.map +1 -0
  396. package/lib/stores/filterOperators/QueryBuilderFilterOperator_StartWith.js +72 -0
  397. package/lib/stores/filterOperators/QueryBuilderFilterOperator_StartWith.js.map +1 -0
  398. package/lib/stores/postFilterOperators/QueryBuilderPostFilterOperatorHelper.d.ts +23 -0
  399. package/lib/stores/postFilterOperators/QueryBuilderPostFilterOperatorHelper.d.ts.map +1 -0
  400. package/lib/stores/postFilterOperators/QueryBuilderPostFilterOperatorHelper.js +74 -0
  401. package/lib/stores/postFilterOperators/QueryBuilderPostFilterOperatorHelper.js.map +1 -0
  402. package/lib/stores/postFilterOperators/QueryBuilderPostFilterOperator_Contain.d.ts +32 -0
  403. package/lib/stores/postFilterOperators/QueryBuilderPostFilterOperator_Contain.d.ts.map +1 -0
  404. package/lib/stores/postFilterOperators/QueryBuilderPostFilterOperator_Contain.js +76 -0
  405. package/lib/stores/postFilterOperators/QueryBuilderPostFilterOperator_Contain.js.map +1 -0
  406. package/lib/stores/postFilterOperators/QueryBuilderPostFilterOperator_EndWith.d.ts +32 -0
  407. package/lib/stores/postFilterOperators/QueryBuilderPostFilterOperator_EndWith.d.ts.map +1 -0
  408. package/lib/stores/postFilterOperators/QueryBuilderPostFilterOperator_EndWith.js +76 -0
  409. package/lib/stores/postFilterOperators/QueryBuilderPostFilterOperator_EndWith.js.map +1 -0
  410. package/lib/stores/postFilterOperators/QueryBuilderPostFilterOperator_Equal.d.ts +32 -0
  411. package/lib/stores/postFilterOperators/QueryBuilderPostFilterOperator_Equal.d.ts.map +1 -0
  412. package/lib/stores/postFilterOperators/QueryBuilderPostFilterOperator_Equal.js +142 -0
  413. package/lib/stores/postFilterOperators/QueryBuilderPostFilterOperator_Equal.js.map +1 -0
  414. package/lib/stores/postFilterOperators/QueryBuilderPostFilterOperator_GreaterThan.d.ts +27 -0
  415. package/lib/stores/postFilterOperators/QueryBuilderPostFilterOperator_GreaterThan.d.ts.map +1 -0
  416. package/lib/stores/postFilterOperators/QueryBuilderPostFilterOperator_GreaterThan.js +105 -0
  417. package/lib/stores/postFilterOperators/QueryBuilderPostFilterOperator_GreaterThan.js.map +1 -0
  418. package/lib/stores/postFilterOperators/QueryBuilderPostFilterOperator_GreaterThanEqual.d.ts +24 -0
  419. package/lib/stores/postFilterOperators/QueryBuilderPostFilterOperator_GreaterThanEqual.d.ts.map +1 -0
  420. package/lib/stores/postFilterOperators/QueryBuilderPostFilterOperator_GreaterThanEqual.js +43 -0
  421. package/lib/stores/postFilterOperators/QueryBuilderPostFilterOperator_GreaterThanEqual.js.map +1 -0
  422. package/lib/stores/postFilterOperators/QueryBuilderPostFilterOperator_In.d.ts +32 -0
  423. package/lib/stores/postFilterOperators/QueryBuilderPostFilterOperator_In.d.ts.map +1 -0
  424. package/lib/stores/postFilterOperators/QueryBuilderPostFilterOperator_In.js +104 -0
  425. package/lib/stores/postFilterOperators/QueryBuilderPostFilterOperator_In.js.map +1 -0
  426. package/lib/stores/postFilterOperators/QueryBuilderPostFilterOperator_IsEmpty.d.ts +33 -0
  427. package/lib/stores/postFilterOperators/QueryBuilderPostFilterOperator_IsEmpty.d.ts.map +1 -0
  428. package/lib/stores/postFilterOperators/QueryBuilderPostFilterOperator_IsEmpty.js +67 -0
  429. package/lib/stores/postFilterOperators/QueryBuilderPostFilterOperator_IsEmpty.js.map +1 -0
  430. package/lib/stores/postFilterOperators/QueryBuilderPostFilterOperator_LessThan.d.ts +27 -0
  431. package/lib/stores/postFilterOperators/QueryBuilderPostFilterOperator_LessThan.d.ts.map +1 -0
  432. package/lib/stores/postFilterOperators/QueryBuilderPostFilterOperator_LessThan.js +105 -0
  433. package/lib/stores/postFilterOperators/QueryBuilderPostFilterOperator_LessThan.js.map +1 -0
  434. package/lib/stores/postFilterOperators/QueryBuilderPostFilterOperator_LessThanEqual.d.ts +24 -0
  435. package/lib/stores/postFilterOperators/QueryBuilderPostFilterOperator_LessThanEqual.d.ts.map +1 -0
  436. package/lib/stores/postFilterOperators/QueryBuilderPostFilterOperator_LessThanEqual.js +43 -0
  437. package/lib/stores/postFilterOperators/QueryBuilderPostFilterOperator_LessThanEqual.js.map +1 -0
  438. package/lib/stores/postFilterOperators/QueryBuilderPostFilterOperator_StartWith.d.ts +32 -0
  439. package/lib/stores/postFilterOperators/QueryBuilderPostFilterOperator_StartWith.d.ts.map +1 -0
  440. package/lib/stores/postFilterOperators/QueryBuilderPostFilterOperator_StartWith.js +76 -0
  441. package/lib/stores/postFilterOperators/QueryBuilderPostFilterOperator_StartWith.js.map +1 -0
  442. package/package.json +99 -0
  443. package/src/LegendQueryAppEvent.ts +20 -0
  444. package/src/QueryBuilder_Const.ts +88 -0
  445. package/src/application/LegendQuery.tsx +92 -0
  446. package/src/application/LegendQueryApplicationConfig.ts +77 -0
  447. package/src/application/LegendQueryPluginManager.ts +67 -0
  448. package/src/components/LegendQueryApplication.tsx +104 -0
  449. package/src/components/LegendQueryBaseStoreProvider.tsx +68 -0
  450. package/src/components/QueryBuilder.tsx +375 -0
  451. package/src/components/QueryBuilderExplorerPanel.tsx +998 -0
  452. package/src/components/QueryBuilderFetchStructurePanel.tsx +184 -0
  453. package/src/components/QueryBuilderFilterPanel.tsx +858 -0
  454. package/src/components/QueryBuilderFunctionsExplorerPanel.tsx +598 -0
  455. package/src/components/QueryBuilderGraphFetchTreePanel.tsx +270 -0
  456. package/src/components/QueryBuilderLambdaEditor.tsx +117 -0
  457. package/src/components/QueryBuilderMilestoneEditor.tsx +291 -0
  458. package/src/components/QueryBuilderParameterPanel.tsx +434 -0
  459. package/src/components/QueryBuilderPostFilterPanel.tsx +1061 -0
  460. package/src/components/QueryBuilderProjectionPanel.tsx +652 -0
  461. package/src/components/QueryBuilderPropertyExpressionEditor.tsx +370 -0
  462. package/src/components/QueryBuilderPropertyInfoTooltip.tsx +87 -0
  463. package/src/components/QueryBuilderPropertySearchPanel.tsx +617 -0
  464. package/src/components/QueryBuilderResultModifierPanel.tsx +252 -0
  465. package/src/components/QueryBuilderResultPanel.tsx +582 -0
  466. package/src/components/QueryBuilderSetupPanel.tsx +341 -0
  467. package/src/components/QueryBuilderTextEditor.tsx +127 -0
  468. package/src/components/QueryBuilderUnsupportedQueryEditor.tsx +110 -0
  469. package/src/components/QueryBuilder_TestID.ts +26 -0
  470. package/src/components/QueryEditor.tsx +345 -0
  471. package/src/components/QueryEditorComponentTestUtils.tsx +200 -0
  472. package/src/components/QueryEditorStoreProvider.tsx +128 -0
  473. package/src/components/QuerySetup.tsx +907 -0
  474. package/src/components/QuerySetupStoreProvider.tsx +65 -0
  475. package/src/components/shared/ElementIconUtils.tsx +47 -0
  476. package/src/graphManager/QueryBuilder_GraphManagerPlugin.ts +32 -0
  477. package/src/graphManager/QueryBuilder_GraphManagerPreset.ts +33 -0
  478. package/src/graphManager/action/analytics/MappingRuntimeCompatibilityAnalysis.ts +22 -0
  479. package/src/graphManager/action/analytics/ServiceExecutionAnalysis.ts +22 -0
  480. package/src/graphManager/protocol/pure/QueryBuilder_PureGraphManagerExtension.ts +47 -0
  481. package/src/graphManager/protocol/pure/QueryBuilder_PureGraphManagerExtensionBuilder.ts +27 -0
  482. package/src/graphManager/protocol/pure/QueryBuilder_PureProtocolProcessorPlugin.ts +170 -0
  483. package/src/graphManager/protocol/pure/v1/V1_QueryBuilder_FunctionExpressionBuilder.ts +573 -0
  484. package/src/graphManager/protocol/pure/v1/V1_QueryBuilder_PropertyExpressionTypeInferenceBuilder.ts +28 -0
  485. package/src/graphManager/protocol/pure/v1/V1_QueryBuilder_PureGraphManagerExtension.ts +296 -0
  486. package/src/index.ts +57 -0
  487. package/src/stores/LegendQueryApplicationPlugin.ts +61 -0
  488. package/src/stores/LegendQueryBaseStore.ts +47 -0
  489. package/src/stores/LegendQueryEventService.ts +38 -0
  490. package/src/stores/LegendQueryRouter.ts +114 -0
  491. package/src/stores/QueryBuilderAggregationState.ts +208 -0
  492. package/src/stores/QueryBuilderExplorerState.ts +590 -0
  493. package/src/stores/QueryBuilderFetchStructureState.ts +59 -0
  494. package/src/stores/QueryBuilderFilterState.ts +815 -0
  495. package/src/stores/QueryBuilderGraphFetchTreeState.ts +90 -0
  496. package/src/stores/QueryBuilderGraphFetchTreeUtil.ts +281 -0
  497. package/src/stores/QueryBuilderLambdaBuilder.ts +755 -0
  498. package/src/stores/QueryBuilderLambdaProcessor.ts +1239 -0
  499. package/src/stores/QueryBuilderOperatorsHelper.ts +191 -0
  500. package/src/stores/QueryBuilderPostFilterOperator.ts +66 -0
  501. package/src/stores/QueryBuilderPostFilterProcessor.ts +275 -0
  502. package/src/stores/QueryBuilderPostFilterState.ts +762 -0
  503. package/src/stores/QueryBuilderPreviewDataHelper.ts +300 -0
  504. package/src/stores/QueryBuilderProjectionState.ts +796 -0
  505. package/src/stores/QueryBuilderPropertyEditorState.ts +656 -0
  506. package/src/stores/QueryBuilderPropertySearchPanelState.ts +331 -0
  507. package/src/stores/QueryBuilderResultState.ts +263 -0
  508. package/src/stores/QueryBuilderSetupState.ts +236 -0
  509. package/src/stores/QueryBuilderState.ts +561 -0
  510. package/src/stores/QueryBuilderUnsupportedState.ts +42 -0
  511. package/src/stores/QueryBuilderValueSpecificationBuilderHelper.ts +76 -0
  512. package/src/stores/QueryEditorStore.ts +648 -0
  513. package/src/stores/QueryEditorStoreTestUtils.ts +46 -0
  514. package/src/stores/QueryFunctionsExplorerState.ts +386 -0
  515. package/src/stores/QueryParametersState.ts +54 -0
  516. package/src/stores/QueryResultSetModifierState.ts +307 -0
  517. package/src/stores/QuerySetupStore.ts +430 -0
  518. package/src/stores/QueryTextEditorState.ts +203 -0
  519. package/src/stores/aggregateOperators/QueryBuilderAggregateOperatorHelper.ts +111 -0
  520. package/src/stores/aggregateOperators/QueryBuilderAggregateOperator_Average.ts +100 -0
  521. package/src/stores/aggregateOperators/QueryBuilderAggregateOperator_Count.ts +108 -0
  522. package/src/stores/aggregateOperators/QueryBuilderAggregateOperator_Distinct.ts +98 -0
  523. package/src/stores/aggregateOperators/QueryBuilderAggregateOperator_DistinctCount.ts +175 -0
  524. package/src/stores/aggregateOperators/QueryBuilderAggregateOperator_JoinString.ts +157 -0
  525. package/src/stores/aggregateOperators/QueryBuilderAggregateOperator_Max.ts +176 -0
  526. package/src/stores/aggregateOperators/QueryBuilderAggregateOperator_Min.ts +176 -0
  527. package/src/stores/aggregateOperators/QueryBuilderAggregateOperator_StdDev_Population.ts +100 -0
  528. package/src/stores/aggregateOperators/QueryBuilderAggregateOperator_StdDev_Sample.ts +100 -0
  529. package/src/stores/aggregateOperators/QueryBuilderAggregateOperator_Sum.ts +90 -0
  530. package/src/stores/filterOperators/QueryBuilderFilterOperatorHelper.ts +524 -0
  531. package/src/stores/filterOperators/QueryBuilderFilterOperator_Contain.ts +134 -0
  532. package/src/stores/filterOperators/QueryBuilderFilterOperator_EndWith.ts +134 -0
  533. package/src/stores/filterOperators/QueryBuilderFilterOperator_Equal.ts +233 -0
  534. package/src/stores/filterOperators/QueryBuilderFilterOperator_GreaterThan.ts +164 -0
  535. package/src/stores/filterOperators/QueryBuilderFilterOperator_GreaterThanEqual.ts +164 -0
  536. package/src/stores/filterOperators/QueryBuilderFilterOperator_In.ts +181 -0
  537. package/src/stores/filterOperators/QueryBuilderFilterOperator_IsEmpty.ts +125 -0
  538. package/src/stores/filterOperators/QueryBuilderFilterOperator_LessThan.ts +165 -0
  539. package/src/stores/filterOperators/QueryBuilderFilterOperator_LessThanEqual.ts +164 -0
  540. package/src/stores/filterOperators/QueryBuilderFilterOperator_StartWith.ts +134 -0
  541. package/src/stores/postFilterOperators/QueryBuilderPostFilterOperatorHelper.ts +129 -0
  542. package/src/stores/postFilterOperators/QueryBuilderPostFilterOperator_Contain.ts +140 -0
  543. package/src/stores/postFilterOperators/QueryBuilderPostFilterOperator_EndWith.ts +135 -0
  544. package/src/stores/postFilterOperators/QueryBuilderPostFilterOperator_Equal.ts +238 -0
  545. package/src/stores/postFilterOperators/QueryBuilderPostFilterOperator_GreaterThan.ts +161 -0
  546. package/src/stores/postFilterOperators/QueryBuilderPostFilterOperator_GreaterThanEqual.ts +70 -0
  547. package/src/stores/postFilterOperators/QueryBuilderPostFilterOperator_In.ts +183 -0
  548. package/src/stores/postFilterOperators/QueryBuilderPostFilterOperator_IsEmpty.ts +113 -0
  549. package/src/stores/postFilterOperators/QueryBuilderPostFilterOperator_LessThan.ts +161 -0
  550. package/src/stores/postFilterOperators/QueryBuilderPostFilterOperator_LessThanEqual.ts +70 -0
  551. package/src/stores/postFilterOperators/QueryBuilderPostFilterOperator_StartWith.ts +135 -0
  552. package/tsconfig.json +155 -0
  553. package/tsconfig.package.json +38 -0
@@ -0,0 +1,998 @@
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 { forwardRef, useEffect, useRef, useState } from 'react';
18
+ import { observer } from 'mobx-react-lite';
19
+ import {
20
+ type TreeNodeContainerProps,
21
+ type TreeNodeViewProps,
22
+ type TooltipPlacement,
23
+ type TreeData,
24
+ Tooltip,
25
+ clsx,
26
+ Dialog,
27
+ TreeView,
28
+ BlankPanelContent,
29
+ DropdownMenu,
30
+ ContextMenu,
31
+ MenuContent,
32
+ MenuContentItem,
33
+ MenuContentItemIcon,
34
+ MenuContentItemLabel,
35
+ StringTypeIcon,
36
+ ToggleIcon,
37
+ HashtagIcon,
38
+ ClockIcon,
39
+ ChevronDownIcon,
40
+ ChevronRightIcon,
41
+ MoreVerticalIcon,
42
+ CompressIcon,
43
+ EyeIcon,
44
+ InfoCircleIcon,
45
+ PURE_ClassIcon,
46
+ CheckIcon,
47
+ SearchIcon,
48
+ PanelLoadingIndicator,
49
+ } from '@finos/legend-art';
50
+ import {
51
+ type QueryBuilderExplorerTreeDragSource,
52
+ type QueryBuilderExplorerTreeNodeData,
53
+ QUERY_BUILDER_EXPLORER_TREE_DND_TYPE,
54
+ QueryBuilderExplorerTreeRootNodeData,
55
+ QueryBuilderExplorerTreePropertyNodeData,
56
+ buildPropertyExpressionFromExplorerTreeNodeData,
57
+ QueryBuilderExplorerTreeSubTypeNodeData,
58
+ getQueryBuilderPropertyNodeData,
59
+ getQueryBuilderSubTypeNodeData,
60
+ } from '../stores/QueryBuilderExplorerState.js';
61
+ import { useDrag, useDragLayer } from 'react-dnd';
62
+ import { QueryBuilderPropertyInfoTooltip } from './QueryBuilderPropertyInfoTooltip.js';
63
+ import { getEmptyImage } from 'react-dnd-html5-backend';
64
+ import type { QueryBuilderState } from '../stores/QueryBuilderState.js';
65
+ import { addQueryBuilderPropertyNode } from '../stores/QueryBuilderGraphFetchTreeUtil.js';
66
+ import { QueryBuilderSimpleProjectionColumnState } from '../stores/QueryBuilderProjectionState.js';
67
+ import { flowResult } from 'mobx';
68
+ import { prettyPropertyName } from '../stores/QueryBuilderPropertyEditorState.js';
69
+ import {
70
+ type Type,
71
+ type Multiplicity,
72
+ type PureModel,
73
+ Class,
74
+ DerivedProperty,
75
+ PrimitiveType,
76
+ PRIMITIVE_TYPE,
77
+ Enumeration,
78
+ TYPE_CAST_TOKEN,
79
+ getAllClassDerivedProperties,
80
+ getMultiplicityDescription,
81
+ getAllClassProperties,
82
+ getAllOwnClassProperties,
83
+ isElementDeprecated,
84
+ } from '@finos/legend-graph';
85
+ import { useApplicationStore } from '@finos/legend-application';
86
+ import { getClassPropertyIcon } from './shared/ElementIconUtils.js';
87
+ import { QUERY_BUILDER_TEST_ID } from './QueryBuilder_TestID.js';
88
+ import { filterByType, guaranteeNonNullable } from '@finos/legend-shared';
89
+ import { QueryBuilderPropertySearchPanel } from './QueryBuilderPropertySearchPanel.js';
90
+
91
+ const checkForDeprecatedNode = (
92
+ node: QueryBuilderExplorerTreeNodeData,
93
+ graph: PureModel,
94
+ treeData: TreeData<QueryBuilderExplorerTreeNodeData>,
95
+ ): boolean => {
96
+ if (node.type instanceof Class && isElementDeprecated(node.type, graph)) {
97
+ return true;
98
+ }
99
+ if (node instanceof QueryBuilderExplorerTreePropertyNodeData) {
100
+ if (isElementDeprecated(node.property, graph)) {
101
+ return true;
102
+ }
103
+ }
104
+ if (node instanceof QueryBuilderExplorerTreeSubTypeNodeData) {
105
+ const parentNode = treeData.nodes.get(node.parentId);
106
+ if (
107
+ parentNode?.type instanceof Class &&
108
+ isElementDeprecated(parentNode.type, graph)
109
+ ) {
110
+ return true;
111
+ }
112
+ }
113
+ return false;
114
+ };
115
+
116
+ export const QueryBuilderSubclassInfoTooltip: React.FC<{
117
+ subclass: Class;
118
+ path: string;
119
+ isMapped: boolean;
120
+ children: React.ReactElement;
121
+ placement?: TooltipPlacement | undefined;
122
+ multiplicity: Multiplicity;
123
+ }> = (props) => {
124
+ const { subclass, path, isMapped, children, placement, multiplicity } = props;
125
+ return (
126
+ <Tooltip
127
+ arrow={true}
128
+ {...(placement !== undefined ? { placement } : {})}
129
+ classes={{
130
+ tooltip: 'query-builder__tooltip',
131
+ arrow: 'query-builder__tooltip__arrow',
132
+ tooltipPlacementRight: 'query-builder__tooltip--right',
133
+ }}
134
+ TransitionProps={{
135
+ // disable transition
136
+ // NOTE: somehow, this is the only workaround we have, if for example
137
+ // we set `appear = true`, the tooltip will jump out of position
138
+ timeout: 0,
139
+ }}
140
+ title={
141
+ <div className="query-builder__tooltip__content">
142
+ <div className="query-builder__tooltip__item">
143
+ <div className="query-builder__tooltip__item__label">Type</div>
144
+ <div className="query-builder__tooltip__item__value">
145
+ {subclass.path}
146
+ </div>
147
+ </div>
148
+ <div className="query-builder__tooltip__item">
149
+ <div className="query-builder__tooltip__item__label">Path</div>
150
+ <div className="query-builder__tooltip__item__value">{path}</div>
151
+ </div>
152
+ <div className="query-builder__tooltip__item">
153
+ <div className="query-builder__tooltip__item__label">
154
+ Multiplicity
155
+ </div>
156
+ <div className="query-builder__tooltip__item__value">
157
+ {getMultiplicityDescription(multiplicity)}
158
+ </div>
159
+ </div>
160
+ <div className="query-builder__tooltip__item">
161
+ <div className="query-builder__tooltip__item__label">Mapped</div>
162
+ <div className="query-builder__tooltip__item__value">
163
+ {isMapped ? 'Yes' : 'No'}
164
+ </div>
165
+ </div>
166
+ </div>
167
+ }
168
+ >
169
+ {children}
170
+ </Tooltip>
171
+ );
172
+ };
173
+
174
+ const QueryBuilderExplorerPreviewDataModal = observer(
175
+ (props: { queryBuilderState: QueryBuilderState }) => {
176
+ const { queryBuilderState } = props;
177
+ const previewDataState = queryBuilderState.explorerState.previewDataState;
178
+ const close = (): void => previewDataState.setPreviewData(undefined);
179
+
180
+ return (
181
+ <Dialog
182
+ open={Boolean(previewDataState.previewData)}
183
+ onClose={close}
184
+ classes={{
185
+ root: 'editor-modal__root-container',
186
+ container: 'editor-modal__container',
187
+ paper: 'editor-modal__content',
188
+ }}
189
+ >
190
+ <div className="modal modal--dark editor-modal query-builder__explorer__preview-data-modal">
191
+ <div className="modal__header">
192
+ <div className="modal__title">
193
+ {prettyPropertyName(previewDataState.propertyName)}
194
+ </div>
195
+ </div>
196
+ <div className="modal__body query-builder__explorer__preview-data-modal__body">
197
+ {previewDataState.previewData && (
198
+ <table className="table">
199
+ <thead>
200
+ <tr>
201
+ {previewDataState.previewData.columns.map((column, idx) => (
202
+ // eslint-disable-next-line react/no-array-index-key
203
+ <th key={idx} className="table__cell--left">
204
+ {column}
205
+ </th>
206
+ ))}
207
+ </tr>
208
+ </thead>
209
+ <tbody>
210
+ {previewDataState.previewData.rows.map((row, rowIdx) => (
211
+ // eslint-disable-next-line react/no-array-index-key
212
+ <tr key={rowIdx}>
213
+ {row.values.map((value, idx) => (
214
+ // eslint-disable-next-line react/no-array-index-key
215
+ <td key={idx} className="table__cell--left">
216
+ {value}
217
+ </td>
218
+ ))}
219
+ </tr>
220
+ ))}
221
+ </tbody>
222
+ </table>
223
+ )}
224
+ </div>
225
+ <div className="modal__footer">
226
+ <button className="btn modal__footer__close-btn" onClick={close}>
227
+ Close
228
+ </button>
229
+ </div>
230
+ </div>
231
+ </Dialog>
232
+ );
233
+ },
234
+ );
235
+
236
+ const QueryBuilderExplorerPropertyDragLayer = observer(
237
+ (props: { queryBuilderState: QueryBuilderState }) => {
238
+ const { queryBuilderState } = props;
239
+ const explorerState = queryBuilderState.explorerState;
240
+ const { itemType, item, isDragging, currentPosition } = useDragLayer(
241
+ (monitor) => ({
242
+ itemType: monitor.getItemType() as QUERY_BUILDER_EXPLORER_TREE_DND_TYPE,
243
+ item: monitor.getItem<QueryBuilderExplorerTreeDragSource | null>(),
244
+ isDragging: monitor.isDragging(),
245
+ initialOffset: monitor.getInitialSourceClientOffset(),
246
+ currentPosition: monitor.getClientOffset(),
247
+ }),
248
+ );
249
+
250
+ if (
251
+ !isDragging ||
252
+ !item ||
253
+ !Object.values(QUERY_BUILDER_EXPLORER_TREE_DND_TYPE).includes(itemType)
254
+ ) {
255
+ return null;
256
+ }
257
+ return (
258
+ <div className="query-builder-explorer-tree__drag-preview-layer">
259
+ <div
260
+ className="query-builder-explorer-tree__drag-preview"
261
+ // added some offset so the mouse doesn't overlap the label too much
262
+ style={
263
+ !currentPosition
264
+ ? { display: 'none' }
265
+ : {
266
+ transform: `translate(${currentPosition.x + 20}px, ${
267
+ currentPosition.y + 10
268
+ }px)`,
269
+ }
270
+ }
271
+ >
272
+ {explorerState.humanizePropertyName
273
+ ? prettyPropertyName(item.node.label)
274
+ : item.node.label}
275
+ </div>
276
+ </div>
277
+ );
278
+ },
279
+ );
280
+
281
+ const QueryBuilderExplorerContextMenu = observer(
282
+ forwardRef<
283
+ HTMLDivElement,
284
+ {
285
+ queryBuilderState: QueryBuilderState;
286
+ openNode: () => void;
287
+ node: QueryBuilderExplorerTreeNodeData;
288
+ }
289
+ >(function QueryBuilderExplorerContextMenu(props, ref) {
290
+ const { queryBuilderState, openNode, node } = props;
291
+ const applicationStore = useApplicationStore();
292
+ const viewType = (): void =>
293
+ applicationStore.notifyUnsupportedFeature('View Type');
294
+ const addNodeToFetchStructure = (): void => {
295
+ if (
296
+ node instanceof QueryBuilderExplorerTreePropertyNodeData &&
297
+ !(node.type instanceof Class)
298
+ ) {
299
+ if (queryBuilderState.fetchStructureState.isGraphFetchMode()) {
300
+ queryBuilderState.fetchStructureState.graphFetchTreeState.addProperty(
301
+ node,
302
+ );
303
+ } else if (queryBuilderState.fetchStructureState.isProjectionMode()) {
304
+ const projectionState =
305
+ queryBuilderState.fetchStructureState.projectionState;
306
+ projectionState.addColumn(
307
+ new QueryBuilderSimpleProjectionColumnState(
308
+ projectionState,
309
+ buildPropertyExpressionFromExplorerTreeNodeData(
310
+ queryBuilderState.explorerState.nonNullableTreeData,
311
+ node,
312
+ projectionState.queryBuilderState.graphManagerState.graph,
313
+ queryBuilderState.explorerState.propertySearchPanelState
314
+ .allMappedPropertyNodes,
315
+ ),
316
+ projectionState.queryBuilderState.explorerState.humanizePropertyName,
317
+ ),
318
+ );
319
+ }
320
+ }
321
+ };
322
+ const addAllChildrenToFetchStructure = (): void => {
323
+ openNode();
324
+ if (node.type instanceof Class) {
325
+ // NOTE: here we require the node to already been expanded so the child nodes are generated
326
+ // we don't allow adding unopened node. Maybe if it helps, we can show a warning.
327
+ const nodesToAdd = node.childrenIds
328
+ .map((childId) =>
329
+ queryBuilderState.explorerState.nonNullableTreeData.nodes.get(
330
+ childId,
331
+ ),
332
+ )
333
+ .filter(filterByType(QueryBuilderExplorerTreePropertyNodeData))
334
+ .filter(
335
+ (childNode) =>
336
+ !(childNode.type instanceof Class) &&
337
+ childNode.mappingData.mapped,
338
+ );
339
+ if (queryBuilderState.fetchStructureState.isGraphFetchMode()) {
340
+ const graphFetchTreeData =
341
+ queryBuilderState.fetchStructureState.graphFetchTreeState.treeData;
342
+ if (graphFetchTreeData) {
343
+ nodesToAdd.forEach((nodeToAdd) =>
344
+ addQueryBuilderPropertyNode(
345
+ graphFetchTreeData,
346
+ queryBuilderState.explorerState.nonNullableTreeData,
347
+ nodeToAdd,
348
+ queryBuilderState,
349
+ ),
350
+ );
351
+ queryBuilderState.fetchStructureState.graphFetchTreeState.setGraphFetchTree(
352
+ {
353
+ ...graphFetchTreeData,
354
+ },
355
+ );
356
+ }
357
+ } else if (queryBuilderState.fetchStructureState.isProjectionMode()) {
358
+ nodesToAdd.forEach((nodeToAdd) => {
359
+ const projectionState =
360
+ queryBuilderState.fetchStructureState.projectionState;
361
+ projectionState.addColumn(
362
+ new QueryBuilderSimpleProjectionColumnState(
363
+ projectionState,
364
+ buildPropertyExpressionFromExplorerTreeNodeData(
365
+ queryBuilderState.explorerState.nonNullableTreeData,
366
+ nodeToAdd,
367
+ projectionState.queryBuilderState.graphManagerState.graph,
368
+ queryBuilderState.explorerState.propertySearchPanelState
369
+ .allMappedPropertyNodes,
370
+ ),
371
+ projectionState.queryBuilderState.explorerState.humanizePropertyName,
372
+ ),
373
+ );
374
+ });
375
+ }
376
+ }
377
+ };
378
+
379
+ return (
380
+ <MenuContent ref={ref}>
381
+ {node instanceof QueryBuilderExplorerTreePropertyNodeData &&
382
+ !(node.type instanceof Class) && (
383
+ <MenuContentItem onClick={addNodeToFetchStructure}>
384
+ Add Property to Fetch Structure
385
+ </MenuContentItem>
386
+ )}
387
+ {node.type instanceof Class && (
388
+ <MenuContentItem onClick={addAllChildrenToFetchStructure}>
389
+ Add Properties to Fetch Structure
390
+ </MenuContentItem>
391
+ )}
392
+ <MenuContentItem onClick={viewType}>View Type</MenuContentItem>
393
+ </MenuContent>
394
+ );
395
+ }),
396
+ );
397
+
398
+ export const renderPropertyTypeIcon = (type: Type): React.ReactNode => {
399
+ if (type instanceof PrimitiveType) {
400
+ if (type.name === PRIMITIVE_TYPE.STRING) {
401
+ return (
402
+ <StringTypeIcon className="query-builder-explorer-tree__icon query-builder-explorer-tree__icon__string" />
403
+ );
404
+ } else if (type.name === PRIMITIVE_TYPE.BOOLEAN) {
405
+ return (
406
+ <ToggleIcon className="query-builder-explorer-tree__icon query-builder-explorer-tree__icon__boolean" />
407
+ );
408
+ } else if (
409
+ type.name === PRIMITIVE_TYPE.NUMBER ||
410
+ type.name === PRIMITIVE_TYPE.INTEGER ||
411
+ type.name === PRIMITIVE_TYPE.FLOAT ||
412
+ type.name === PRIMITIVE_TYPE.DECIMAL
413
+ ) {
414
+ return (
415
+ <HashtagIcon className="query-builder-explorer-tree__icon query-builder-explorer-tree__icon__number" />
416
+ );
417
+ } else if (
418
+ type.name === PRIMITIVE_TYPE.DATE ||
419
+ type.name === PRIMITIVE_TYPE.DATETIME ||
420
+ type.name === PRIMITIVE_TYPE.STRICTDATE
421
+ ) {
422
+ return (
423
+ <ClockIcon className="query-builder-explorer-tree__icon query-builder-explorer-tree__icon__time" />
424
+ );
425
+ }
426
+ }
427
+ return getClassPropertyIcon(type);
428
+ };
429
+
430
+ const QueryBuilderExplorerTreeNodeContainer = observer(
431
+ (
432
+ props: TreeNodeContainerProps<
433
+ QueryBuilderExplorerTreeNodeData,
434
+ {
435
+ queryBuilderState: QueryBuilderState;
436
+ }
437
+ >,
438
+ ) => {
439
+ const { node, level, stepPaddingInRem, onNodeSelect, innerProps } = props;
440
+ const { queryBuilderState } = innerProps;
441
+ const [isSelectedFromContextMenu, setIsSelectedFromContextMenu] =
442
+ useState(false);
443
+ const applicationStore = useApplicationStore();
444
+ const explorerState = queryBuilderState.explorerState;
445
+ const [, dragConnector, dragPreviewConnector] = useDrag(
446
+ () => ({
447
+ type:
448
+ node instanceof QueryBuilderExplorerTreePropertyNodeData
449
+ ? node.type instanceof Enumeration
450
+ ? QUERY_BUILDER_EXPLORER_TREE_DND_TYPE.ENUM_PROPERTY
451
+ : node.type instanceof Class
452
+ ? QUERY_BUILDER_EXPLORER_TREE_DND_TYPE.CLASS_PROPERTY
453
+ : QUERY_BUILDER_EXPLORER_TREE_DND_TYPE.PRIMITIVE_PROPERTY
454
+ : QUERY_BUILDER_EXPLORER_TREE_DND_TYPE.ROOT,
455
+ item: (): { node?: QueryBuilderExplorerTreePropertyNodeData } =>
456
+ node instanceof QueryBuilderExplorerTreePropertyNodeData
457
+ ? { node }
458
+ : {},
459
+ }),
460
+ [node],
461
+ );
462
+ const isExpandable = Boolean(node.childrenIds.length);
463
+ const isDerivedProperty =
464
+ node instanceof QueryBuilderExplorerTreePropertyNodeData &&
465
+ node.property instanceof DerivedProperty;
466
+ const isMultiple =
467
+ (node instanceof QueryBuilderExplorerTreePropertyNodeData &&
468
+ (node.property.multiplicity.upperBound === undefined ||
469
+ node.property.multiplicity.upperBound > 1)) ||
470
+ (node instanceof QueryBuilderExplorerTreeSubTypeNodeData &&
471
+ (node.multiplicity.upperBound === undefined ||
472
+ node.multiplicity.upperBound > 1));
473
+ const allowPreview =
474
+ node.mappingData.mapped &&
475
+ node instanceof QueryBuilderExplorerTreePropertyNodeData &&
476
+ node.type instanceof PrimitiveType &&
477
+ !node.isPartOfDerivedPropertyBranch;
478
+ const nodeExpandIcon = isExpandable ? (
479
+ node.isOpen ? (
480
+ <ChevronDownIcon />
481
+ ) : (
482
+ <ChevronRightIcon />
483
+ )
484
+ ) : (
485
+ <div />
486
+ );
487
+ const selectNode = (): void => onNodeSelect?.(node);
488
+ const openNode = (): void => {
489
+ if (!node.isOpen) {
490
+ onNodeSelect?.(node);
491
+ }
492
+ };
493
+ // context menu
494
+ const showContextMenu =
495
+ node instanceof QueryBuilderExplorerTreeRootNodeData ||
496
+ (node instanceof QueryBuilderExplorerTreePropertyNodeData &&
497
+ !(node.type instanceof PrimitiveType));
498
+ const onContextMenuOpen = (): void => setIsSelectedFromContextMenu(true);
499
+ const onContextMenuClose = (): void => setIsSelectedFromContextMenu(false);
500
+ const previewData = (): void => {
501
+ if (node instanceof QueryBuilderExplorerTreePropertyNodeData) {
502
+ flowResult(
503
+ queryBuilderState.fetchStructureState.projectionState.previewData(
504
+ node,
505
+ ),
506
+ ).catch(applicationStore.alertUnhandledError);
507
+ }
508
+ };
509
+ // hide default HTML5 preview image
510
+ useEffect(() => {
511
+ dragPreviewConnector(getEmptyImage(), { captureDraggingState: true });
512
+ }, [dragPreviewConnector]);
513
+
514
+ if (!node.mappingData.mapped && !explorerState.showUnmappedProperties) {
515
+ return null;
516
+ }
517
+ return (
518
+ <ContextMenu
519
+ content={
520
+ <QueryBuilderExplorerContextMenu
521
+ queryBuilderState={queryBuilderState}
522
+ openNode={openNode}
523
+ node={node}
524
+ />
525
+ }
526
+ disabled={
527
+ !showContextMenu ||
528
+ // NOTE: this might make it hard to modularize
529
+ // See https://github.com/finos/legend-studio/issues/731
530
+ queryBuilderState.fetchStructureState.projectionState.hasParserError
531
+ }
532
+ menuProps={{ elevation: 7 }}
533
+ onOpen={onContextMenuOpen}
534
+ onClose={onContextMenuClose}
535
+ >
536
+ <div
537
+ className={clsx(
538
+ 'tree-view__node__container query-builder-explorer-tree__node__container',
539
+ {
540
+ 'query-builder-explorer-tree__node__container--selected-from-context-menu':
541
+ isSelectedFromContextMenu,
542
+ 'query-builder-explorer-tree__node__container--unmapped':
543
+ !node.mappingData.mapped,
544
+ 'query-builder-explorer-tree__node__container--selected':
545
+ node.isSelected,
546
+ },
547
+ )}
548
+ title={
549
+ !node.mappingData.mapped ? 'Property is not mapped' : undefined
550
+ }
551
+ onClick={selectNode}
552
+ ref={
553
+ node.mappingData.mapped && !isExpandable ? dragConnector : undefined
554
+ }
555
+ style={{
556
+ paddingLeft: `${(level - 1) * (stepPaddingInRem ?? 1) + 0.5}rem`,
557
+ display: 'flex',
558
+ }}
559
+ >
560
+ {node instanceof QueryBuilderExplorerTreeRootNodeData && (
561
+ // NOTE: since the root of the tree is the class, not the property, we want to display it differently
562
+ <>
563
+ <div className="query-builder-explorer-tree__expand-icon">
564
+ {nodeExpandIcon}
565
+ </div>
566
+ <div className="tree-view__node__label query-builder-explorer-tree__root-node__label">
567
+ <div className="query-builder-explorer-tree__root-node__label__icon">
568
+ <PURE_ClassIcon />
569
+ </div>
570
+ <div className="query-builder-explorer-tree__root-node__label__text">
571
+ {node.label}
572
+ </div>
573
+ </div>
574
+ </>
575
+ )}
576
+ {(node instanceof QueryBuilderExplorerTreePropertyNodeData ||
577
+ node instanceof QueryBuilderExplorerTreeSubTypeNodeData) && (
578
+ <>
579
+ <div className="tree-view__node__icon query-builder-explorer-tree__node__icon">
580
+ <div className="query-builder-explorer-tree__expand-icon">
581
+ {nodeExpandIcon}
582
+ </div>
583
+ <div className="query-builder-explorer-tree__type-icon">
584
+ {renderPropertyTypeIcon(node.type)}
585
+ </div>
586
+ </div>
587
+ <div
588
+ className={clsx(
589
+ 'tree-view__node__label query-builder-explorer-tree__node__label query-builder-explorer-tree__node__label--with-action',
590
+ {
591
+ 'query-builder-explorer-tree__node__label--with-preview':
592
+ allowPreview,
593
+ },
594
+ )}
595
+ >
596
+ <div
597
+ className={clsx(
598
+ 'query-builder-explorer-tree__node__label--property--name',
599
+ {
600
+ 'query-builder-explorer-tree__node__label--deprecated':
601
+ checkForDeprecatedNode(
602
+ node,
603
+ explorerState.queryBuilderState.graphManagerState
604
+ .graph,
605
+ explorerState.nonNullableTreeData,
606
+ ),
607
+ },
608
+ )}
609
+ >
610
+ {explorerState.humanizePropertyName
611
+ ? node instanceof QueryBuilderExplorerTreeSubTypeNodeData
612
+ ? TYPE_CAST_TOKEN + prettyPropertyName(node.label)
613
+ : prettyPropertyName(node.label)
614
+ : node instanceof QueryBuilderExplorerTreeSubTypeNodeData
615
+ ? TYPE_CAST_TOKEN + node.label
616
+ : node.label}
617
+ </div>
618
+ {isDerivedProperty && (
619
+ <div
620
+ className="query-builder-explorer-tree__node__label__derived-property"
621
+ title="Property is derived and may require user to specify parameter values"
622
+ >
623
+ (...)
624
+ </div>
625
+ )}
626
+ {isMultiple && (
627
+ <div
628
+ className="query-builder-explorer-tree__node__label__multiple"
629
+ title="Multiple values of this property can cause row explosion"
630
+ >
631
+ *
632
+ </div>
633
+ )}
634
+ </div>
635
+ <div className="query-builder-explorer-tree__node__actions">
636
+ {allowPreview && (
637
+ <button
638
+ className="query-builder-explorer-tree__node__action"
639
+ disabled={
640
+ explorerState.previewDataState.isGeneratingPreviewData
641
+ }
642
+ tabIndex={-1}
643
+ title="Preview Data"
644
+ onClick={previewData}
645
+ >
646
+ <EyeIcon />
647
+ </button>
648
+ )}
649
+ {node instanceof QueryBuilderExplorerTreePropertyNodeData && (
650
+ <QueryBuilderPropertyInfoTooltip
651
+ property={node.property}
652
+ path={node.id}
653
+ isMapped={node.mappingData.mapped}
654
+ >
655
+ <div className="query-builder-explorer-tree__node__action query-builder-explorer-tree__node__info">
656
+ <InfoCircleIcon />
657
+ </div>
658
+ </QueryBuilderPropertyInfoTooltip>
659
+ )}
660
+ {node instanceof QueryBuilderExplorerTreeSubTypeNodeData && (
661
+ <QueryBuilderSubclassInfoTooltip
662
+ subclass={node.subclass}
663
+ path={node.id}
664
+ isMapped={node.mappingData.mapped}
665
+ multiplicity={node.multiplicity}
666
+ >
667
+ <div className="query-builder-explorer-tree__node__action query-builder-explorer-tree__node__info">
668
+ <InfoCircleIcon />
669
+ </div>
670
+ </QueryBuilderSubclassInfoTooltip>
671
+ )}
672
+ </div>
673
+ </>
674
+ )}
675
+ </div>
676
+ </ContextMenu>
677
+ );
678
+ },
679
+ );
680
+
681
+ const QueryBuilderExplorerTreeNodeView = observer(
682
+ (
683
+ props: TreeNodeViewProps<
684
+ QueryBuilderExplorerTreeNodeData,
685
+ {
686
+ queryBuilderState: QueryBuilderState;
687
+ }
688
+ >,
689
+ ) => {
690
+ const {
691
+ node,
692
+ level,
693
+ onNodeSelect,
694
+ getChildNodes,
695
+ stepPaddingInRem,
696
+ innerProps,
697
+ } = props;
698
+ const { queryBuilderState } = innerProps;
699
+
700
+ if (
701
+ !node.mappingData.mapped &&
702
+ !queryBuilderState.explorerState.showUnmappedProperties
703
+ ) {
704
+ return null;
705
+ }
706
+ return (
707
+ <div className="tree-view__node__block">
708
+ <QueryBuilderExplorerTreeNodeContainer
709
+ node={node}
710
+ level={level + 1}
711
+ stepPaddingInRem={stepPaddingInRem}
712
+ onNodeSelect={onNodeSelect}
713
+ innerProps={innerProps}
714
+ />
715
+ {node.isOpen &&
716
+ getChildNodes(node).map((childNode) => (
717
+ <QueryBuilderExplorerTreeNodeView
718
+ key={childNode.id}
719
+ node={childNode}
720
+ level={level + 1}
721
+ onNodeSelect={onNodeSelect}
722
+ getChildNodes={getChildNodes}
723
+ innerProps={innerProps}
724
+ />
725
+ ))}
726
+ </div>
727
+ );
728
+ },
729
+ );
730
+
731
+ /**
732
+ * Sort order for Query Builder tree nodes will be ranked by return type as followed:
733
+ * 1. Primitive
734
+ * 2. Enumeration
735
+ * 3. Class
736
+ * 4. Class Subtypes
737
+ * Note: Derived property nodes will be ranked lower for each relevant return type
738
+ */
739
+ const getQueryBuilderExplorerTreeNodeSortRank = (
740
+ node: QueryBuilderExplorerTreeNodeData,
741
+ ): number => {
742
+ if (node instanceof QueryBuilderExplorerTreeSubTypeNodeData) {
743
+ return 0;
744
+ } else if (node.type instanceof Class) {
745
+ return node.isPartOfDerivedPropertyBranch ? 1 : 2;
746
+ } else if (node.type instanceof Enumeration) {
747
+ return node.isPartOfDerivedPropertyBranch ? 3 : 4;
748
+ } else {
749
+ return node.isPartOfDerivedPropertyBranch ? 5 : 6;
750
+ }
751
+ };
752
+
753
+ const QueryBuilderExplorerTree = observer(
754
+ (props: { queryBuilderState: QueryBuilderState }) => {
755
+ const { queryBuilderState } = props;
756
+ const explorerState = queryBuilderState.explorerState;
757
+ const treeData = explorerState.nonNullableTreeData;
758
+ const onNodeSelect = (node: QueryBuilderExplorerTreeNodeData): void => {
759
+ if (node.childrenIds.length) {
760
+ node.isOpen = !node.isOpen;
761
+ if (
762
+ node.isOpen &&
763
+ (node instanceof QueryBuilderExplorerTreePropertyNodeData ||
764
+ node instanceof QueryBuilderExplorerTreeSubTypeNodeData) &&
765
+ node.type instanceof Class
766
+ ) {
767
+ (node instanceof QueryBuilderExplorerTreeSubTypeNodeData
768
+ ? getAllOwnClassProperties(node.type)
769
+ : getAllClassProperties(node.type).concat(
770
+ getAllClassDerivedProperties(node.type),
771
+ )
772
+ ).forEach((property) => {
773
+ const propertyTreeNodeData = getQueryBuilderPropertyNodeData(
774
+ property,
775
+ node,
776
+ guaranteeNonNullable(
777
+ explorerState.mappingModelCoverageAnalysisResult,
778
+ ),
779
+ );
780
+ treeData.nodes.set(propertyTreeNodeData.id, propertyTreeNodeData);
781
+ });
782
+ node.type._subclasses.forEach((subclass) => {
783
+ const subTypeTreeNodeData = getQueryBuilderSubTypeNodeData(
784
+ subclass,
785
+ node,
786
+ guaranteeNonNullable(
787
+ explorerState.mappingModelCoverageAnalysisResult,
788
+ ),
789
+ );
790
+ treeData.nodes.set(subTypeTreeNodeData.id, subTypeTreeNodeData);
791
+ });
792
+ }
793
+ }
794
+ explorerState.refreshTree();
795
+ };
796
+ const getChildNodes = (
797
+ node: QueryBuilderExplorerTreeNodeData,
798
+ ): QueryBuilderExplorerTreeNodeData[] =>
799
+ node.childrenIds
800
+ .map((id) => treeData.nodes.get(id))
801
+ .filter(
802
+ (
803
+ childNode,
804
+ ): childNode is
805
+ | QueryBuilderExplorerTreePropertyNodeData
806
+ | QueryBuilderExplorerTreeSubTypeNodeData =>
807
+ childNode instanceof QueryBuilderExplorerTreeSubTypeNodeData ||
808
+ childNode instanceof QueryBuilderExplorerTreePropertyNodeData,
809
+ )
810
+ // simple properties come first
811
+ .sort((a, b) => a.label.localeCompare(b.label))
812
+ .sort(
813
+ (a, b) =>
814
+ getQueryBuilderExplorerTreeNodeSortRank(b) -
815
+ getQueryBuilderExplorerTreeNodeSortRank(a),
816
+ );
817
+
818
+ return (
819
+ <TreeView
820
+ components={{
821
+ TreeNodeContainer: QueryBuilderExplorerTreeNodeContainer,
822
+ TreeNodeView: QueryBuilderExplorerTreeNodeView,
823
+ }}
824
+ className="query-builder-explorer-tree__root"
825
+ treeData={treeData}
826
+ onNodeSelect={onNodeSelect}
827
+ getChildNodes={getChildNodes}
828
+ innerProps={{
829
+ queryBuilderState,
830
+ }}
831
+ />
832
+ );
833
+ },
834
+ );
835
+
836
+ export const QueryBuilderExplorerPanel = observer(
837
+ (props: { queryBuilderState: QueryBuilderState }) => {
838
+ const { queryBuilderState } = props;
839
+ const searchButtonRef = useRef<HTMLButtonElement>(null);
840
+ const explorerState = queryBuilderState.explorerState;
841
+ const propertySearchPanelState = explorerState.propertySearchPanelState;
842
+ const applicationStore = useApplicationStore();
843
+ const collapseTree = (): void => {
844
+ if (explorerState.treeData) {
845
+ Array.from(explorerState.treeData.nodes.values()).forEach((node) => {
846
+ node.isOpen = false;
847
+ });
848
+ explorerState.refreshTree();
849
+ }
850
+ };
851
+ const toggleShowUnmappedProperties = (): void =>
852
+ explorerState.setShowUnmappedProperties(
853
+ !explorerState.showUnmappedProperties,
854
+ );
855
+ const toggleHumanizePropertyName = (): void =>
856
+ explorerState.setHumanizePropertyName(
857
+ !explorerState.humanizePropertyName,
858
+ );
859
+ const togglePropertySearch = (): void => {
860
+ if (explorerState.treeData) {
861
+ if (!propertySearchPanelState.isSearchPanelOpen) {
862
+ propertySearchPanelState.setIsSearchPanelOpen(true);
863
+ if (!propertySearchPanelState.allMappedPropertyNodes.length) {
864
+ propertySearchPanelState.fetchAllPropertyNodes();
865
+ }
866
+ } else {
867
+ propertySearchPanelState.setIsSearchPanelOpen(false);
868
+ }
869
+ }
870
+ };
871
+
872
+ useEffect(() => {
873
+ flowResult(explorerState.analyzeMappingModelCoverage()).catch(
874
+ applicationStore.alertUnhandledError,
875
+ );
876
+ }, [
877
+ applicationStore,
878
+ explorerState,
879
+ queryBuilderState.querySetupState.mapping,
880
+ ]);
881
+
882
+ return (
883
+ <div
884
+ data-testid={QUERY_BUILDER_TEST_ID.QUERY_BUILDER_EXPLORER}
885
+ className={clsx('panel query-builder__explorer', {
886
+ // NOTE: this might make it hard to modularize
887
+ // See https://github.com/finos/legend-studio/issues/731
888
+ backdrop__element:
889
+ queryBuilderState.fetchStructureState.projectionState
890
+ .hasParserError,
891
+ })}
892
+ >
893
+ <div className="panel__header">
894
+ <div className="panel__header__title">
895
+ <div className="panel__header__title__label">explorer</div>
896
+ </div>
897
+ <div className="panel__header__actions">
898
+ <button
899
+ ref={searchButtonRef}
900
+ className={clsx('panel__header__action', {
901
+ 'query-builder__explorer__header__action--active':
902
+ propertySearchPanelState.isSearchPanelOpen,
903
+ })}
904
+ onClick={togglePropertySearch}
905
+ tabIndex={-1}
906
+ title="Toggle property search"
907
+ >
908
+ <SearchIcon />
909
+ </button>
910
+ <button
911
+ className="panel__header__action"
912
+ onClick={collapseTree}
913
+ tabIndex={-1}
914
+ title="Collapse Tree"
915
+ >
916
+ <CompressIcon />
917
+ </button>
918
+ <DropdownMenu
919
+ className="panel__header__action"
920
+ content={
921
+ <MenuContent>
922
+ <MenuContentItem onClick={toggleShowUnmappedProperties}>
923
+ <MenuContentItemIcon>
924
+ {explorerState.showUnmappedProperties ? (
925
+ <CheckIcon />
926
+ ) : null}
927
+ </MenuContentItemIcon>
928
+ <MenuContentItemLabel>
929
+ Show Unmapped Properties
930
+ </MenuContentItemLabel>
931
+ </MenuContentItem>
932
+ <MenuContentItem onClick={toggleHumanizePropertyName}>
933
+ <MenuContentItemIcon>
934
+ {explorerState.humanizePropertyName ? (
935
+ <CheckIcon />
936
+ ) : null}
937
+ </MenuContentItemIcon>
938
+ <MenuContentItemLabel>
939
+ Humanize Property Name
940
+ </MenuContentItemLabel>
941
+ </MenuContentItem>
942
+ </MenuContent>
943
+ }
944
+ menuProps={{
945
+ anchorOrigin: { vertical: 'bottom', horizontal: 'left' },
946
+ transformOrigin: { vertical: 'top', horizontal: 'left' },
947
+ elevation: 7,
948
+ }}
949
+ >
950
+ <MoreVerticalIcon
951
+ title="Show Options Menu..."
952
+ className="query-builder__icon__more-options"
953
+ />
954
+ </DropdownMenu>
955
+ </div>
956
+ {propertySearchPanelState.isSearchPanelOpen && (
957
+ <QueryBuilderPropertySearchPanel
958
+ queryBuilderState={queryBuilderState}
959
+ triggerElement={searchButtonRef.current}
960
+ />
961
+ )}
962
+ </div>
963
+ <div className="panel__content query-builder-explorer-tree__content">
964
+ <PanelLoadingIndicator
965
+ isLoading={
966
+ explorerState.mappingModelCoverageAnalysisState.isInProgress
967
+ }
968
+ />
969
+ <QueryBuilderExplorerPropertyDragLayer
970
+ queryBuilderState={queryBuilderState}
971
+ />
972
+ {explorerState.mappingModelCoverageAnalysisState.isInProgress ? (
973
+ <BlankPanelContent>
974
+ {explorerState.mappingModelCoverageAnalysisState.message}
975
+ </BlankPanelContent>
976
+ ) : (
977
+ <>
978
+ {!explorerState.treeData && (
979
+ <BlankPanelContent>
980
+ Specify the class, mapping, and runtime to start building
981
+ query
982
+ </BlankPanelContent>
983
+ )}
984
+ {explorerState.treeData && (
985
+ <QueryBuilderExplorerTree
986
+ queryBuilderState={queryBuilderState}
987
+ />
988
+ )}
989
+ </>
990
+ )}
991
+ <QueryBuilderExplorerPreviewDataModal
992
+ queryBuilderState={queryBuilderState}
993
+ />
994
+ </div>
995
+ </div>
996
+ );
997
+ },
998
+ );