@finos/legend-application-query 5.2.6 → 5.2.7

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 (231) hide show
  1. package/lib/components/QueryBuilder.d.ts.map +1 -1
  2. package/lib/components/QueryBuilder.js +22 -11
  3. package/lib/components/QueryBuilder.js.map +1 -1
  4. package/lib/components/QueryBuilderResultPanel.d.ts.map +1 -1
  5. package/lib/components/QueryBuilderResultPanel.js +12 -7
  6. package/lib/components/QueryBuilderResultPanel.js.map +1 -1
  7. package/lib/components/QueryBuilderSetupPanel.js +1 -1
  8. package/lib/components/QueryBuilderSetupPanel.js.map +1 -1
  9. package/lib/components/explorer/QueryBuilderExplorerPanel.d.ts +1 -2
  10. package/lib/components/explorer/QueryBuilderExplorerPanel.d.ts.map +1 -1
  11. package/lib/components/explorer/QueryBuilderExplorerPanel.js +14 -16
  12. package/lib/components/explorer/QueryBuilderExplorerPanel.js.map +1 -1
  13. package/lib/components/explorer/QueryBuilderPropertySearchPanel.js +2 -2
  14. package/lib/components/explorer/QueryBuilderPropertySearchPanel.js.map +1 -1
  15. package/lib/components/fetch-structure/QueryBuilderFetchStructurePanel.d.ts.map +1 -1
  16. package/lib/components/fetch-structure/QueryBuilderFetchStructurePanel.js +22 -105
  17. package/lib/components/fetch-structure/QueryBuilderFetchStructurePanel.js.map +1 -1
  18. package/lib/components/fetch-structure/QueryBuilderGraphFetchTreePanel.d.ts +1 -2
  19. package/lib/components/fetch-structure/QueryBuilderGraphFetchTreePanel.d.ts.map +1 -1
  20. package/lib/components/fetch-structure/QueryBuilderGraphFetchTreePanel.js +8 -10
  21. package/lib/components/fetch-structure/QueryBuilderGraphFetchTreePanel.js.map +1 -1
  22. package/lib/components/fetch-structure/QueryBuilderPostFilterPanel.d.ts.map +1 -1
  23. package/lib/components/fetch-structure/QueryBuilderPostFilterPanel.js +23 -17
  24. package/lib/components/fetch-structure/QueryBuilderPostFilterPanel.js.map +1 -1
  25. package/lib/components/fetch-structure/QueryBuilderProjectionPanel.d.ts +2 -2
  26. package/lib/components/fetch-structure/QueryBuilderProjectionPanel.d.ts.map +1 -1
  27. package/lib/components/fetch-structure/QueryBuilderProjectionPanel.js +15 -12
  28. package/lib/components/fetch-structure/QueryBuilderProjectionPanel.js.map +1 -1
  29. package/lib/components/fetch-structure/QueryBuilderResultModifierPanel.d.ts +2 -2
  30. package/lib/components/fetch-structure/QueryBuilderResultModifierPanel.d.ts.map +1 -1
  31. package/lib/components/fetch-structure/QueryBuilderResultModifierPanel.js +23 -28
  32. package/lib/components/fetch-structure/QueryBuilderResultModifierPanel.js.map +1 -1
  33. package/lib/components/filter/QueryBuilderFilterPanel.js +7 -7
  34. package/lib/components/filter/QueryBuilderFilterPanel.js.map +1 -1
  35. package/lib/components/shared/QueryBuilderPanelIssueCountBadge.d.ts.map +1 -1
  36. package/lib/components/shared/QueryBuilderPanelIssueCountBadge.js +1 -1
  37. package/lib/components/shared/QueryBuilderPanelIssueCountBadge.js.map +1 -1
  38. package/lib/graphManager/protocol/pure/QueryBuilder_PureProtocolProcessorPlugin.d.ts.map +1 -1
  39. package/lib/graphManager/protocol/pure/QueryBuilder_PureProtocolProcessorPlugin.js +5 -3
  40. package/lib/graphManager/protocol/pure/QueryBuilder_PureProtocolProcessorPlugin.js.map +1 -1
  41. package/lib/index.css +2 -2
  42. package/lib/index.css.map +1 -1
  43. package/lib/package.json +7 -7
  44. package/lib/stores/QueryBuilderPreviewDataHelper.d.ts.map +1 -1
  45. package/lib/stores/QueryBuilderPreviewDataHelper.js +17 -14
  46. package/lib/stores/QueryBuilderPreviewDataHelper.js.map +1 -1
  47. package/lib/stores/QueryBuilderPropertyEditorState.d.ts.map +1 -1
  48. package/lib/stores/QueryBuilderPropertyEditorState.js +34 -24
  49. package/lib/stores/QueryBuilderPropertyEditorState.js.map +1 -1
  50. package/lib/stores/QueryBuilderState.d.ts +1 -2
  51. package/lib/stores/QueryBuilderState.d.ts.map +1 -1
  52. package/lib/stores/QueryBuilderState.js +17 -26
  53. package/lib/stores/QueryBuilderState.js.map +1 -1
  54. package/lib/stores/QueryBuilderStateBuilder.d.ts +124 -0
  55. package/lib/stores/QueryBuilderStateBuilder.d.ts.map +1 -0
  56. package/lib/stores/QueryBuilderStateBuilder.js +310 -0
  57. package/lib/stores/QueryBuilderStateBuilder.js.map +1 -0
  58. package/lib/stores/{QueryBuilderTestUtils.d.ts → QueryBuilderStateTestUtils.d.ts} +2 -2
  59. package/lib/stores/QueryBuilderStateTestUtils.d.ts.map +1 -0
  60. package/lib/stores/{QueryBuilderTestUtils.js → QueryBuilderStateTestUtils.js} +2 -2
  61. package/lib/stores/QueryBuilderStateTestUtils.js.map +1 -0
  62. package/lib/stores/QueryBuilderTypeaheadHelper.d.ts.map +1 -1
  63. package/lib/stores/QueryBuilderTypeaheadHelper.js +14 -12
  64. package/lib/stores/QueryBuilderTypeaheadHelper.js.map +1 -1
  65. package/lib/stores/QueryBuilderValueSpecificationBuilder.d.ts +3 -11
  66. package/lib/stores/QueryBuilderValueSpecificationBuilder.d.ts.map +1 -1
  67. package/lib/stores/QueryBuilderValueSpecificationBuilder.js +10 -319
  68. package/lib/stores/QueryBuilderValueSpecificationBuilder.js.map +1 -1
  69. package/lib/stores/QueryBuilderValueSpecificationBuilderHelper.d.ts +27 -0
  70. package/lib/stores/QueryBuilderValueSpecificationBuilderHelper.d.ts.map +1 -0
  71. package/lib/stores/QueryBuilderValueSpecificationBuilderHelper.js +153 -0
  72. package/lib/stores/QueryBuilderValueSpecificationBuilderHelper.js.map +1 -0
  73. package/lib/stores/QueryBuilderValueSpecificationHelper.d.ts +37 -1
  74. package/lib/stores/QueryBuilderValueSpecificationHelper.d.ts.map +1 -1
  75. package/lib/stores/QueryBuilderValueSpecificationHelper.js +79 -2
  76. package/lib/stores/QueryBuilderValueSpecificationHelper.js.map +1 -1
  77. package/lib/stores/explorer/QueryBuilderExplorerState.d.ts +12 -11
  78. package/lib/stores/explorer/QueryBuilderExplorerState.d.ts.map +1 -1
  79. package/lib/stores/explorer/QueryBuilderExplorerState.js +53 -20
  80. package/lib/stores/explorer/QueryBuilderExplorerState.js.map +1 -1
  81. package/lib/stores/explorer/QueryBuilderPropertySearchPanelState.d.ts +1 -1
  82. package/lib/stores/explorer/QueryBuilderPropertySearchPanelState.d.ts.map +1 -1
  83. package/lib/stores/explorer/QueryBuilderPropertySearchPanelState.js +3 -1
  84. package/lib/stores/explorer/QueryBuilderPropertySearchPanelState.js.map +1 -1
  85. package/lib/stores/fetch-structure/QueryBuilderFetchStructureImplementationState.d.ts +17 -0
  86. package/lib/stores/fetch-structure/QueryBuilderFetchStructureImplementationState.d.ts.map +1 -1
  87. package/lib/stores/fetch-structure/QueryBuilderFetchStructureImplementationState.js +10 -0
  88. package/lib/stores/fetch-structure/QueryBuilderFetchStructureImplementationState.js.map +1 -1
  89. package/lib/stores/fetch-structure/QueryBuilderFetchStructureState.d.ts +3 -20
  90. package/lib/stores/fetch-structure/QueryBuilderFetchStructureState.d.ts.map +1 -1
  91. package/lib/stores/fetch-structure/QueryBuilderFetchStructureState.js +31 -73
  92. package/lib/stores/fetch-structure/QueryBuilderFetchStructureState.js.map +1 -1
  93. package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeState.d.ts +17 -4
  94. package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeState.d.ts.map +1 -1
  95. package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeState.js +110 -21
  96. package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeState.js.map +1 -1
  97. package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeStateBuilder.d.ts +20 -0
  98. package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeStateBuilder.d.ts.map +1 -0
  99. package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeStateBuilder.js +62 -0
  100. package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeStateBuilder.js.map +1 -0
  101. package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeUtil.d.ts +2 -1
  102. package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeUtil.d.ts.map +1 -1
  103. package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeUtil.js +3 -8
  104. package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeUtil.js.map +1 -1
  105. package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchValueSpecificationBuilder.d.ts +9 -2
  106. package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchValueSpecificationBuilder.d.ts.map +1 -1
  107. package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchValueSpecificationBuilder.js +28 -5
  108. package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchValueSpecificationBuilder.js.map +1 -1
  109. package/lib/stores/fetch-structure/projection/QueryBuilderProjectionColumnState.js +2 -2
  110. package/lib/stores/fetch-structure/projection/QueryBuilderProjectionColumnState.js.map +1 -1
  111. package/lib/stores/fetch-structure/projection/QueryBuilderProjectionState.d.ts +10 -2
  112. package/lib/stores/fetch-structure/projection/QueryBuilderProjectionState.d.ts.map +1 -1
  113. package/lib/stores/fetch-structure/projection/QueryBuilderProjectionState.js +102 -39
  114. package/lib/stores/fetch-structure/projection/QueryBuilderProjectionState.js.map +1 -1
  115. package/lib/stores/fetch-structure/projection/QueryBuilderProjectionStateBuilder.d.ts +25 -0
  116. package/lib/stores/fetch-structure/projection/QueryBuilderProjectionStateBuilder.d.ts.map +1 -0
  117. package/lib/stores/fetch-structure/projection/QueryBuilderProjectionStateBuilder.js +186 -0
  118. package/lib/stores/fetch-structure/projection/QueryBuilderProjectionStateBuilder.js.map +1 -0
  119. package/lib/stores/fetch-structure/projection/QueryBuilderProjectionValueSpecificationBuilder.d.ts +9 -4
  120. package/lib/stores/fetch-structure/projection/QueryBuilderProjectionValueSpecificationBuilder.d.ts.map +1 -1
  121. package/lib/stores/fetch-structure/projection/QueryBuilderProjectionValueSpecificationBuilder.js +129 -13
  122. package/lib/stores/fetch-structure/projection/QueryBuilderProjectionValueSpecificationBuilder.js.map +1 -1
  123. package/lib/stores/fetch-structure/projection/aggregation/QueryBuilderAggregationStateBuilder.d.ts +20 -0
  124. package/lib/stores/fetch-structure/projection/aggregation/QueryBuilderAggregationStateBuilder.d.ts.map +1 -0
  125. package/lib/stores/fetch-structure/projection/aggregation/QueryBuilderAggregationStateBuilder.js +96 -0
  126. package/lib/stores/fetch-structure/projection/aggregation/QueryBuilderAggregationStateBuilder.js.map +1 -0
  127. package/lib/stores/fetch-structure/projection/aggregation/operators/QueryBuilderAggregateOperator_DistinctCount.js +1 -1
  128. package/lib/stores/fetch-structure/projection/aggregation/operators/QueryBuilderAggregateOperator_DistinctCount.js.map +1 -1
  129. package/lib/stores/fetch-structure/projection/post-filter/{QueryBuilderPostFilterValueSpecificationProcessor.d.ts → QueryBuilderPostFilterStateBuilder.d.ts} +4 -3
  130. package/lib/stores/fetch-structure/projection/post-filter/QueryBuilderPostFilterStateBuilder.d.ts.map +1 -0
  131. package/lib/stores/fetch-structure/projection/post-filter/{QueryBuilderPostFilterValueSpecificationProcessor.js → QueryBuilderPostFilterStateBuilder.js} +30 -21
  132. package/lib/stores/fetch-structure/projection/post-filter/QueryBuilderPostFilterStateBuilder.js.map +1 -0
  133. package/lib/stores/fetch-structure/projection/post-filter/QueryBuilderPostFilterValueSpecificationBuilder.d.ts.map +1 -1
  134. package/lib/stores/fetch-structure/projection/post-filter/QueryBuilderPostFilterValueSpecificationBuilder.js +1 -4
  135. package/lib/stores/fetch-structure/projection/post-filter/QueryBuilderPostFilterValueSpecificationBuilder.js.map +1 -1
  136. package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_Contain.js +1 -1
  137. package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_Contain.js.map +1 -1
  138. package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_EndWith.js +1 -1
  139. package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_EndWith.js.map +1 -1
  140. package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_Equal.js +1 -1
  141. package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_Equal.js.map +1 -1
  142. package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_GreaterThan.js +1 -1
  143. package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_GreaterThan.js.map +1 -1
  144. package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_GreaterThanEqual.js +1 -1
  145. package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_GreaterThanEqual.js.map +1 -1
  146. package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_In.js +1 -1
  147. package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_In.js.map +1 -1
  148. package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_IsEmpty.js +1 -1
  149. package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_IsEmpty.js.map +1 -1
  150. package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_LessThan.js +1 -1
  151. package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_LessThan.js.map +1 -1
  152. package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_LessThanEqual.js +1 -1
  153. package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_LessThanEqual.js.map +1 -1
  154. package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_StartWith.js +1 -1
  155. package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_StartWith.js.map +1 -1
  156. package/lib/stores/filter/QueryBuilderFilterStateBuilder.d.ts +19 -0
  157. package/lib/stores/filter/QueryBuilderFilterStateBuilder.d.ts.map +1 -0
  158. package/lib/stores/filter/QueryBuilderFilterStateBuilder.js +74 -0
  159. package/lib/stores/filter/QueryBuilderFilterStateBuilder.js.map +1 -0
  160. package/lib/stores/filter/{QueryBuilderValueSpecificationBuilder.d.ts → QueryBuilderFilterValueSpecificationBuilder.d.ts} +1 -1
  161. package/lib/stores/filter/QueryBuilderFilterValueSpecificationBuilder.d.ts.map +1 -0
  162. package/lib/stores/filter/{QueryBuilderValueSpecificationBuilder.js → QueryBuilderFilterValueSpecificationBuilder.js} +1 -1
  163. package/lib/stores/filter/QueryBuilderFilterValueSpecificationBuilder.js.map +1 -0
  164. package/lib/stores/filter/operators/QueryBuilderFilterOperatorHelper.d.ts.map +1 -1
  165. package/lib/stores/filter/operators/QueryBuilderFilterOperatorHelper.js +5 -5
  166. package/lib/stores/filter/operators/QueryBuilderFilterOperatorHelper.js.map +1 -1
  167. package/package.json +14 -14
  168. package/src/components/QueryBuilder.tsx +47 -28
  169. package/src/components/QueryBuilderResultPanel.tsx +21 -14
  170. package/src/components/QueryBuilderSetupPanel.tsx +1 -1
  171. package/src/components/explorer/QueryBuilderExplorerPanel.tsx +23 -38
  172. package/src/components/explorer/QueryBuilderPropertySearchPanel.tsx +2 -2
  173. package/src/components/fetch-structure/QueryBuilderFetchStructurePanel.tsx +41 -175
  174. package/src/components/fetch-structure/QueryBuilderGraphFetchTreePanel.tsx +9 -12
  175. package/src/components/fetch-structure/QueryBuilderPostFilterPanel.tsx +62 -28
  176. package/src/components/fetch-structure/QueryBuilderProjectionPanel.tsx +74 -48
  177. package/src/components/fetch-structure/QueryBuilderResultModifierPanel.tsx +33 -41
  178. package/src/components/filter/QueryBuilderFilterPanel.tsx +7 -7
  179. package/src/components/shared/QueryBuilderPanelIssueCountBadge.tsx +3 -1
  180. package/src/graphManager/protocol/pure/QueryBuilder_PureProtocolProcessorPlugin.ts +5 -8
  181. package/src/stores/QueryBuilderPreviewDataHelper.ts +27 -18
  182. package/src/stores/QueryBuilderPropertyEditorState.ts +40 -31
  183. package/src/stores/QueryBuilderState.ts +26 -32
  184. package/src/stores/QueryBuilderStateBuilder.ts +584 -0
  185. package/src/stores/{QueryBuilderTestUtils.ts → QueryBuilderStateTestUtils.ts} +1 -1
  186. package/src/stores/QueryBuilderTypeaheadHelper.ts +23 -16
  187. package/src/stores/QueryBuilderValueSpecificationBuilder.ts +24 -584
  188. package/src/stores/QueryBuilderValueSpecificationBuilderHelper.ts +248 -0
  189. package/src/stores/QueryBuilderValueSpecificationHelper.ts +114 -0
  190. package/src/stores/explorer/QueryBuilderExplorerState.ts +73 -33
  191. package/src/stores/explorer/QueryBuilderPropertySearchPanelState.ts +3 -1
  192. package/src/stores/fetch-structure/QueryBuilderFetchStructureImplementationState.ts +33 -2
  193. package/src/stores/fetch-structure/QueryBuilderFetchStructureState.ts +53 -118
  194. package/src/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeState.ts +166 -26
  195. package/src/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeStateBuilder.ts +131 -0
  196. package/src/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeUtil.ts +10 -19
  197. package/src/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchValueSpecificationBuilder.ts +68 -4
  198. package/src/stores/fetch-structure/projection/QueryBuilderProjectionColumnState.ts +2 -2
  199. package/src/stores/fetch-structure/projection/QueryBuilderProjectionState.ts +172 -67
  200. package/src/stores/fetch-structure/projection/QueryBuilderProjectionStateBuilder.ts +426 -0
  201. package/src/stores/fetch-structure/projection/QueryBuilderProjectionValueSpecificationBuilder.ts +266 -21
  202. package/src/stores/fetch-structure/projection/aggregation/QueryBuilderAggregationStateBuilder.ts +228 -0
  203. package/src/stores/fetch-structure/projection/aggregation/operators/QueryBuilderAggregateOperator_DistinctCount.ts +1 -1
  204. package/src/stores/fetch-structure/projection/post-filter/{QueryBuilderPostFilterValueSpecificationProcessor.ts → QueryBuilderPostFilterStateBuilder.ts} +68 -48
  205. package/src/stores/fetch-structure/projection/post-filter/QueryBuilderPostFilterValueSpecificationBuilder.ts +1 -11
  206. package/src/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_Contain.ts +1 -1
  207. package/src/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_EndWith.ts +1 -1
  208. package/src/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_Equal.ts +1 -1
  209. package/src/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_GreaterThan.ts +1 -1
  210. package/src/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_GreaterThanEqual.ts +1 -1
  211. package/src/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_In.ts +1 -1
  212. package/src/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_IsEmpty.ts +1 -1
  213. package/src/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_LessThan.ts +1 -1
  214. package/src/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_LessThanEqual.ts +1 -1
  215. package/src/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_StartWith.ts +1 -1
  216. package/src/stores/filter/QueryBuilderFilterStateBuilder.ts +155 -0
  217. package/src/stores/filter/{QueryBuilderValueSpecificationBuilder.ts → QueryBuilderFilterValueSpecificationBuilder.ts} +0 -0
  218. package/src/stores/filter/operators/QueryBuilderFilterOperatorHelper.ts +5 -5
  219. package/tsconfig.json +10 -5
  220. package/tsconfig.package.json +1 -1
  221. package/lib/stores/QueryBuilderTestUtils.d.ts.map +0 -1
  222. package/lib/stores/QueryBuilderTestUtils.js.map +0 -1
  223. package/lib/stores/QueryBuilderValueSpecificationProcessor.d.ts +0 -56
  224. package/lib/stores/QueryBuilderValueSpecificationProcessor.d.ts.map +0 -1
  225. package/lib/stores/QueryBuilderValueSpecificationProcessor.js +0 -548
  226. package/lib/stores/QueryBuilderValueSpecificationProcessor.js.map +0 -1
  227. package/lib/stores/fetch-structure/projection/post-filter/QueryBuilderPostFilterValueSpecificationProcessor.d.ts.map +0 -1
  228. package/lib/stores/fetch-structure/projection/post-filter/QueryBuilderPostFilterValueSpecificationProcessor.js.map +0 -1
  229. package/lib/stores/filter/QueryBuilderValueSpecificationBuilder.d.ts.map +0 -1
  230. package/lib/stores/filter/QueryBuilderValueSpecificationBuilder.js.map +0 -1
  231. package/src/stores/QueryBuilderValueSpecificationProcessor.ts +0 -1254
@@ -32,6 +32,8 @@ import {
32
32
  DragPreviewLayer,
33
33
  PanelEntryDropZonePlaceholder,
34
34
  useDragPreviewLayer,
35
+ OptionsIcon,
36
+ PlusIcon,
35
37
  } from '@finos/legend-art';
36
38
  import {
37
39
  type QueryBuilderExplorerTreeDragSource,
@@ -48,7 +50,6 @@ import {
48
50
  QUERY_BUILDER_PROJECTION_COLUMN_DND_TYPE,
49
51
  } from '../../stores/fetch-structure/projection/QueryBuilderProjectionColumnState.js';
50
52
  import { QueryBuilderPropertyExpressionBadge } from '../QueryBuilderPropertyExpressionEditor.js';
51
- import type { QueryBuilderState } from '../../stores/QueryBuilderState.js';
52
53
  import { QueryResultModifierModal } from './QueryBuilderResultModifierPanel.js';
53
54
  import { QUERY_BUILDER_TEST_ID } from '../QueryBuilder_TestID.js';
54
55
  import { QueryBuilderAggregateColumnState } from '../../stores/fetch-structure/projection/aggregation/QueryBuilderAggregationState.js';
@@ -73,6 +74,7 @@ import { DEFAULT_LAMBDA_VARIABLE_NAME } from '../../QueryBuilder_Const.js';
73
74
  import { QueryBuilderPostFilterTreeConditionNodeData } from '../../stores/fetch-structure/projection/post-filter/QueryBuilderPostFilterState.js';
74
75
  import { filterByType } from '@finos/legend-shared';
75
76
  import type { QueryBuilderAggregateOperator } from '../../stores/fetch-structure/projection/aggregation/QueryBuilderAggregateOperator.js';
77
+ import type { QueryBuilderProjectionState } from '../../stores/fetch-structure/projection/QueryBuilderProjectionState.js';
76
78
 
77
79
  const QueryBuilderProjectionColumnContextMenu = observer(
78
80
  forwardRef<
@@ -234,10 +236,7 @@ const QueryBuilderProjectionColumnEditor = observer(
234
236
  const onContextMenuClose = (): void => setIsSelectedFromContextMenu(false);
235
237
 
236
238
  const { projectionColumnState } = props;
237
- const queryBuilderState =
238
- projectionColumnState.projectionState.queryBuilderState;
239
- const projectionState =
240
- queryBuilderState.fetchStructureState.projectionState;
239
+ const projectionState = projectionColumnState.projectionState;
241
240
  const postFilterColumnStates = Array.from(
242
241
  projectionState.postFilterState.nodes.values(),
243
242
  )
@@ -496,12 +495,18 @@ const QueryBuilderProjectionColumnEditor = observer(
496
495
  );
497
496
 
498
497
  export const QueryBuilderProjectionPanel = observer(
499
- (props: { queryBuilderState: QueryBuilderState }) => {
498
+ (props: { projectionState: QueryBuilderProjectionState }) => {
500
499
  const applicationStore = useApplicationStore();
501
- const { queryBuilderState } = props;
502
- const projectionState =
503
- queryBuilderState.fetchStructureState.projectionState;
500
+ const { projectionState } = props;
504
501
  const projectionColumns = projectionState.columns;
502
+
503
+ // Toolbar
504
+ const openResultSetModifierEditor = (): void =>
505
+ projectionState.resultSetModifierState.setShowModal(true);
506
+ const addNewBlankDerivation = (): void =>
507
+ projectionState.addNewBlankDerivation();
508
+
509
+ // Drag and Drop
505
510
  const handleDrop = useCallback(
506
511
  (
507
512
  item:
@@ -514,7 +519,7 @@ export const QueryBuilderProjectionPanel = observer(
514
519
  const derivationProjectionColumn =
515
520
  new QueryBuilderDerivationProjectionColumnState(
516
521
  projectionState,
517
- queryBuilderState.graphManagerState.graphManager.createDefaultBasicRawLambda(
522
+ projectionState.queryBuilderState.graphManagerState.graphManager.createDefaultBasicRawLambda(
518
523
  { addDummyParameter: true },
519
524
  ),
520
525
  );
@@ -533,13 +538,14 @@ export const QueryBuilderProjectionPanel = observer(
533
538
  new QueryBuilderSimpleProjectionColumnState(
534
539
  projectionState,
535
540
  buildPropertyExpressionFromExplorerTreeNodeData(
536
- queryBuilderState.explorerState.nonNullableTreeData,
541
+ projectionState.queryBuilderState.explorerState
542
+ .nonNullableTreeData,
537
543
  (item as QueryBuilderExplorerTreeDragSource).node,
538
544
  projectionState.queryBuilderState.graphManagerState.graph,
539
- queryBuilderState.explorerState.propertySearchPanelState
540
- .allMappedPropertyNodes,
545
+ projectionState.queryBuilderState.explorerState
546
+ .propertySearchState.allMappedPropertyNodes,
541
547
  ),
542
- queryBuilderState.explorerState.humanizePropertyName,
548
+ projectionState.queryBuilderState.explorerState.humanizePropertyName,
543
549
  ),
544
550
  );
545
551
  break;
@@ -547,7 +553,7 @@ export const QueryBuilderProjectionPanel = observer(
547
553
  break;
548
554
  }
549
555
  },
550
- [queryBuilderState, projectionState],
556
+ [projectionState],
551
557
  );
552
558
 
553
559
  const [{ isDragOver }, dropTargetConnector] = useDrop<
@@ -582,41 +588,61 @@ export const QueryBuilderProjectionPanel = observer(
582
588
 
583
589
  return (
584
590
  <div className="panel__content">
585
- <PanelDropZone
586
- isDragOver={isDragOver}
587
- dropTargetConnector={dropTargetConnector}
588
- >
589
- {!projectionColumns.length && (
590
- <BlankPanelPlaceholder
591
- text="Add a projection column"
592
- tooltipText="Drag and drop properties here"
593
- />
594
- )}
595
- {Boolean(projectionColumns.length) && (
596
- <div
597
- data-testid={QUERY_BUILDER_TEST_ID.QUERY_BUILDER_PROJECTION}
598
- className="query-builder__projection__columns"
599
- >
600
- <DragPreviewLayer
601
- labelGetter={(
602
- item: QueryBuilderProjectionColumnDragSource,
603
- ): string =>
604
- item.columnState.columnName === ''
605
- ? '(unknown)'
606
- : item.columnState.columnName
607
- }
608
- types={[QUERY_BUILDER_PROJECTION_COLUMN_DND_TYPE]}
591
+ <div className="query-builder__projection__toolbar">
592
+ <button
593
+ className="panel__header__action"
594
+ onClick={openResultSetModifierEditor}
595
+ tabIndex={-1}
596
+ title="Configure result set modifiers..."
597
+ >
598
+ <OptionsIcon className="query-builder__icon query-builder__icon__query-option" />
599
+ </button>
600
+ <button
601
+ className="panel__header__action"
602
+ onClick={addNewBlankDerivation}
603
+ tabIndex={-1}
604
+ title="Add a new derivation"
605
+ >
606
+ <PlusIcon />
607
+ </button>
608
+ </div>
609
+ <div className="query-builder__projection__content">
610
+ <PanelDropZone
611
+ isDragOver={isDragOver}
612
+ dropTargetConnector={dropTargetConnector}
613
+ >
614
+ {!projectionColumns.length && (
615
+ <BlankPanelPlaceholder
616
+ text="Add a projection column"
617
+ tooltipText="Drag and drop properties here"
609
618
  />
610
- {projectionColumns.map((projectionColumnState) => (
611
- <QueryBuilderProjectionColumnEditor
612
- key={projectionColumnState.uuid}
613
- projectionColumnState={projectionColumnState}
619
+ )}
620
+ {Boolean(projectionColumns.length) && (
621
+ <div
622
+ data-testid={QUERY_BUILDER_TEST_ID.QUERY_BUILDER_PROJECTION}
623
+ className="query-builder__projection__columns"
624
+ >
625
+ <DragPreviewLayer
626
+ labelGetter={(
627
+ item: QueryBuilderProjectionColumnDragSource,
628
+ ): string =>
629
+ item.columnState.columnName === ''
630
+ ? '(unknown)'
631
+ : item.columnState.columnName
632
+ }
633
+ types={[QUERY_BUILDER_PROJECTION_COLUMN_DND_TYPE]}
614
634
  />
615
- ))}
616
- </div>
617
- )}
618
- <QueryResultModifierModal queryBuilderState={queryBuilderState} />
619
- </PanelDropZone>
635
+ {projectionColumns.map((projectionColumnState) => (
636
+ <QueryBuilderProjectionColumnEditor
637
+ key={projectionColumnState.uuid}
638
+ projectionColumnState={projectionColumnState}
639
+ />
640
+ ))}
641
+ </div>
642
+ )}
643
+ <QueryResultModifierModal projectionState={projectionState} />
644
+ </PanelDropZone>
645
+ </div>
620
646
  </div>
621
647
  );
622
648
  },
@@ -29,27 +29,23 @@ import {
29
29
  COLUMN_SORT_TYPE,
30
30
  SortColumnState,
31
31
  } from '../../stores/fetch-structure/projection/QueryResultSetModifierState.js';
32
- import type { QueryBuilderState } from '../../stores/QueryBuilderState.js';
33
32
  import type { QueryBuilderProjectionColumnState } from '../../stores/fetch-structure/projection/QueryBuilderProjectionColumnState.js';
34
33
  import { guaranteeNonNullable } from '@finos/legend-shared';
35
34
  import { useApplicationStore } from '@finos/legend-application';
35
+ import type { QueryBuilderProjectionState } from '../../stores/fetch-structure/projection/QueryBuilderProjectionState.js';
36
36
 
37
37
  const ColumnSortEditor = observer(
38
38
  (props: {
39
- queryBuilderState: QueryBuilderState;
40
- columnSort: SortColumnState;
39
+ projectionState: QueryBuilderProjectionState;
40
+ sortState: SortColumnState;
41
41
  }) => {
42
- const { queryBuilderState, columnSort } = props;
42
+ const { projectionState, sortState } = props;
43
43
  const applicationStore = useApplicationStore();
44
- const projectionState =
45
- queryBuilderState.fetchStructureState.projectionState;
46
- const sortColumns =
47
- queryBuilderState.fetchStructureState.projectionState
48
- .resultSetModifierState.sortColumns;
44
+ const sortColumns = projectionState.resultSetModifierState.sortColumns;
49
45
  const projectionOptions = projectionState.columns
50
46
  .filter(
51
47
  (projectionCol) =>
52
- projectionCol === columnSort.columnState ||
48
+ projectionCol === sortState.columnState ||
53
49
  !sortColumns.some((sortCol) => sortCol.columnState === projectionCol),
54
50
  )
55
51
  .map((projectionCol) => ({
@@ -57,28 +53,26 @@ const ColumnSortEditor = observer(
57
53
  value: projectionCol,
58
54
  }));
59
55
  const value = {
60
- label: columnSort.columnState.columnName,
61
- value: columnSort,
56
+ label: sortState.columnState.columnName,
57
+ value: sortState,
62
58
  };
63
59
  const onChange = (
64
60
  val: { label: string; value: QueryBuilderProjectionColumnState } | null,
65
61
  ): void => {
66
62
  if (val !== null) {
67
- columnSort.setColumnState(val.value);
63
+ sortState.setColumnState(val.value);
68
64
  }
69
65
  };
70
- const sortType = columnSort.sortType;
66
+ const sortType = sortState.sortType;
71
67
  const toggleSortType = (): void => {
72
- columnSort.setSortType(
68
+ sortState.setSortType(
73
69
  sortType === COLUMN_SORT_TYPE.ASC
74
70
  ? COLUMN_SORT_TYPE.DESC
75
71
  : COLUMN_SORT_TYPE.ASC,
76
72
  );
77
73
  };
78
74
  const deleteColumnSort = (): void =>
79
- queryBuilderState.fetchStructureState.projectionState.resultSetModifierState.deleteSortColumn(
80
- columnSort,
81
- );
75
+ projectionState.resultSetModifierState.deleteSortColumn(sortState);
82
76
 
83
77
  return (
84
78
  <div className="panel__content__form__section__list__item query-builder__projection__options__sort">
@@ -115,14 +109,10 @@ const ColumnSortEditor = observer(
115
109
  );
116
110
 
117
111
  const ColumnsSortEditor = observer(
118
- (props: { queryBuilderState: QueryBuilderState }) => {
119
- const { queryBuilderState } = props;
120
- const resultModifier =
121
- queryBuilderState.fetchStructureState.projectionState
122
- .resultSetModifierState;
123
- const sortColumns = resultModifier.sortColumns;
124
- const projectionState =
125
- queryBuilderState.fetchStructureState.projectionState;
112
+ (props: { projectionState: QueryBuilderProjectionState }) => {
113
+ const { projectionState } = props;
114
+ const resultSetModifierState = projectionState.resultSetModifierState;
115
+ const sortColumns = resultSetModifierState.sortColumns;
126
116
  const projectionOptions = projectionState.columns
127
117
  .filter(
128
118
  (projectionCol) =>
@@ -137,9 +127,10 @@ const ColumnsSortEditor = observer(
137
127
  const sortColumn = new SortColumnState(
138
128
  guaranteeNonNullable(projectionOptions[0]).value,
139
129
  );
140
- resultModifier.addSortColumn(sortColumn);
130
+ resultSetModifierState.addSortColumn(sortColumn);
141
131
  }
142
132
  };
133
+
143
134
  return (
144
135
  <div className="panel__content__form__section">
145
136
  <div className="panel__content__form__section__header__label">
@@ -155,8 +146,8 @@ const ColumnsSortEditor = observer(
155
146
  {sortColumns.map((value) => (
156
147
  <ColumnSortEditor
157
148
  key={value.columnState.uuid}
158
- queryBuilderState={queryBuilderState}
159
- columnSort={value}
149
+ projectionState={projectionState}
150
+ sortState={value}
160
151
  />
161
152
  ))}
162
153
  </div>
@@ -177,22 +168,23 @@ const ColumnsSortEditor = observer(
177
168
  );
178
169
 
179
170
  export const QueryResultModifierModal = observer(
180
- (props: { queryBuilderState: QueryBuilderState }) => {
181
- const { queryBuilderState } = props;
182
- const resultModifier =
183
- queryBuilderState.fetchStructureState.projectionState
184
- .resultSetModifierState;
185
- const limitResults = resultModifier.limit;
186
- const distinct = resultModifier.distinct;
187
- const close = (): void => resultModifier.setShowModal(false);
188
- const toggleDistinct = (): void => resultModifier.toggleDistinct();
171
+ (props: { projectionState: QueryBuilderProjectionState }) => {
172
+ const { projectionState: projectionState } = props;
173
+ const resultSetModifierState = projectionState.resultSetModifierState;
174
+ const limitResults = resultSetModifierState.limit;
175
+ const distinct = resultSetModifierState.distinct;
176
+ const close = (): void => resultSetModifierState.setShowModal(false);
177
+ const toggleDistinct = (): void => resultSetModifierState.toggleDistinct();
189
178
  const changeValue: React.ChangeEventHandler<HTMLInputElement> = (event) => {
190
179
  const val = event.target.value;
191
- resultModifier.setLimit(val === '' ? undefined : parseInt(val, 10));
180
+ resultSetModifierState.setLimit(
181
+ val === '' ? undefined : parseInt(val, 10),
182
+ );
192
183
  };
184
+
193
185
  return (
194
186
  <Dialog
195
- open={Boolean(resultModifier.showModal)}
187
+ open={Boolean(resultSetModifierState.showModal)}
196
188
  onClose={close}
197
189
  classes={{
198
190
  root: 'editor-modal__root-container',
@@ -206,7 +198,7 @@ export const QueryResultModifierModal = observer(
206
198
  </div>
207
199
  <div className="modal__body query-builder__projection__modal__body">
208
200
  <div className="query-builder__projection__options">
209
- <ColumnsSortEditor queryBuilderState={queryBuilderState} />
201
+ <ColumnsSortEditor projectionState={projectionState} />
210
202
  <div className="panel__content__form__section">
211
203
  <div className="panel__content__form__section__header__label">
212
204
  Eliminate Duplicate Rows
@@ -153,7 +153,7 @@ const QueryBuilderFilterConditionEditor = observer(
153
153
  propertyNode,
154
154
  graph,
155
155
  node.condition.filterState.queryBuilderState.explorerState
156
- .propertySearchPanelState.allMappedPropertyNodes,
156
+ .propertySearchState.allMappedPropertyNodes,
157
157
  ),
158
158
  );
159
159
  // Drag and Drop on filter condition value
@@ -405,8 +405,8 @@ const QueryBuilderFilterTreeNodeContainer = observer(
405
405
  filterState.queryBuilderState.explorerState.nonNullableTreeData,
406
406
  dropNode,
407
407
  filterState.queryBuilderState.graphManagerState.graph,
408
- filterState.queryBuilderState.explorerState
409
- .propertySearchPanelState.allMappedPropertyNodes,
408
+ filterState.queryBuilderState.explorerState.propertySearchState
409
+ .allMappedPropertyNodes,
410
410
  ),
411
411
  );
412
412
  } catch (error) {
@@ -732,8 +732,8 @@ export const QueryBuilderFilterPanel = observer(
732
732
  filterState.queryBuilderState.explorerState.nonNullableTreeData,
733
733
  (item as QueryBuilderExplorerTreeDragSource).node,
734
734
  filterState.queryBuilderState.graphManagerState.graph,
735
- filterState.queryBuilderState.explorerState
736
- .propertySearchPanelState.allMappedPropertyNodes,
735
+ filterState.queryBuilderState.explorerState.propertySearchState
736
+ .allMappedPropertyNodes,
737
737
  );
738
738
  }
739
739
  filterConditionState = new FilterConditionState(
@@ -788,7 +788,7 @@ export const QueryBuilderFilterPanel = observer(
788
788
  return (
789
789
  <div
790
790
  data-testid={QUERY_BUILDER_TEST_ID.QUERY_BUILDER_FILTER}
791
- className="panel query-builder__filter"
791
+ className="panel"
792
792
  >
793
793
  <div className="panel__header">
794
794
  <div className="panel__header__title">
@@ -860,7 +860,7 @@ export const QueryBuilderFilterPanel = observer(
860
860
  </button>
861
861
  </div>
862
862
  </div>
863
- <div className="panel__content query-builder__filter__content">
863
+ <div className="panel__content">
864
864
  <PanelDropZone
865
865
  isDragOver={isDragOver}
866
866
  dropTargetConnector={dropTargetConnector}
@@ -32,7 +32,9 @@ export const QueryBuilderPanelIssueCountBadge: React.FC<{
32
32
  .join('\n')}`}
33
33
  >
34
34
  <TimesCircleIcon className="query-builder-panel-issue-count-badge__icon" />
35
- {labelText}
35
+ <div className="query-builder-panel-issue-count-badge__text">
36
+ {labelText}
37
+ </div>
36
38
  </div>
37
39
  );
38
40
  };
@@ -70,14 +70,10 @@ export class QueryBuilder_PureProtocolProcessorPlugin extends PureProtocolProces
70
70
  processingContext,
71
71
  );
72
72
  } else if (
73
- matchFunctionName(
74
- functionName,
73
+ matchFunctionName(functionName, [
75
74
  QUERY_BUILDER_SUPPORTED_FUNCTIONS.FILTER,
76
- ) ||
77
- matchFunctionName(
78
- functionName,
79
75
  QUERY_BUILDER_SUPPORTED_FUNCTIONS.TDS_FILTER,
80
- )
76
+ ])
81
77
  ) {
82
78
  return V1_buildFilterFunctionExpression(
83
79
  functionName,
@@ -126,8 +122,9 @@ export class QueryBuilder_PureProtocolProcessorPlugin extends PureProtocolProces
126
122
  processingContext,
127
123
  );
128
124
  } else if (
129
- Object.values(QUERY_BUILDER_SUPPORTED_FUNCTIONS).some((fn) =>
130
- matchFunctionName(functionName, fn),
125
+ matchFunctionName(
126
+ functionName,
127
+ Object.values(QUERY_BUILDER_SUPPORTED_FUNCTIONS),
131
128
  )
132
129
  ) {
133
130
  // NOTE: this is a catch-all builder that is only meant for basic function expression
@@ -18,7 +18,7 @@ import type {
18
18
  RawLambda,
19
19
  AbstractPropertyExpression,
20
20
  } from '@finos/legend-graph';
21
- import { guaranteeNonNullable } from '@finos/legend-shared';
21
+ import { guaranteeNonNullable, guaranteeType } from '@finos/legend-shared';
22
22
  import { QueryBuilderAggregateOperator_Average } from './fetch-structure/projection/aggregation/operators/QueryBuilderAggregateOperator_Average.js';
23
23
  import { QueryBuilderAggregateOperator_Count } from './fetch-structure/projection/aggregation/operators/QueryBuilderAggregateOperator_Count.js';
24
24
  import { QueryBuilderAggregateOperator_DistinctCount } from './fetch-structure/projection/aggregation/operators/QueryBuilderAggregateOperator_DistinctCount.js';
@@ -34,6 +34,7 @@ import {
34
34
  SortColumnState,
35
35
  } from './fetch-structure/projection/QueryResultSetModifierState.js';
36
36
  import type { QueryBuilderAggregateOperator } from './fetch-structure/projection/aggregation/QueryBuilderAggregateOperator.js';
37
+ import { QueryBuilderProjectionState } from './fetch-structure/projection/QueryBuilderProjectionState.js';
37
38
 
38
39
  const PREVIEW_DATA_TAKE_LIMIT = 10;
39
40
  const PREVIEW_DATA_NON_NUMERIC_VALUE_COLUMN_NAME = 'Value';
@@ -73,13 +74,13 @@ const NUMERIC_AGG_FUNC_TO_AGG_OP: [
73
74
  ],
74
75
  ];
75
76
 
76
- const createProjectionColumn = (
77
- queryBuilderState: QueryBuilderState,
77
+ const createSimpleProjectionColumn = (
78
+ projectionState: QueryBuilderProjectionState,
78
79
  propertyExpression: AbstractPropertyExpression,
79
80
  columnName: string,
80
81
  ): QueryBuilderSimpleProjectionColumnState => {
81
82
  const col = new QueryBuilderSimpleProjectionColumnState(
82
- queryBuilderState.fetchStructureState.projectionState,
83
+ projectionState,
83
84
  propertyExpression,
84
85
  false,
85
86
  );
@@ -130,11 +131,14 @@ export const buildNumericPreviewDataQuery = (
130
131
  // ]
131
132
  // )
132
133
  const builderState = createQueryBuilderState(queryBuilderState);
133
- const projectionState = builderState.fetchStructureState.projectionState;
134
+ const projectionState = guaranteeType(
135
+ builderState.fetchStructureState.implementation,
136
+ QueryBuilderProjectionState,
137
+ );
134
138
  const aggregationState = projectionState.aggregationState;
135
139
  NUMERIC_AGG_FUNC_TO_AGG_OP.forEach((val) => {
136
- const colState = createProjectionColumn(
137
- builderState,
140
+ const colState = createSimpleProjectionColumn(
141
+ projectionState,
138
142
  propertyExpression,
139
143
  val[0],
140
144
  );
@@ -167,35 +171,40 @@ export const buildNonNumericPreviewDataQuery = (
167
171
  // ]
168
172
  // )->sort([desc('Count'), asc('Value')])->take(10)
169
173
  const builderState = createQueryBuilderState(queryBuilderState);
170
- const valueProjectionColState = createProjectionColumn(
171
- builderState,
174
+ const projectionState = guaranteeType(
175
+ builderState.fetchStructureState.implementation,
176
+ QueryBuilderProjectionState,
177
+ );
178
+ const valueProjectionColState = createSimpleProjectionColumn(
179
+ projectionState,
172
180
  propertyExpression,
173
181
  PREVIEW_DATA_NON_NUMERIC_VALUE_COLUMN_NAME,
174
182
  );
175
- const valueCountProjectionState = createProjectionColumn(
176
- builderState,
183
+ const valueCountProjectionState = createSimpleProjectionColumn(
184
+ projectionState,
177
185
  propertyExpression,
178
186
  PREVIEW_DATA_NON_NUMERIC_COUNT_COLUMN_NAME,
179
187
  );
180
- builderState.fetchStructureState.projectionState.columns = [
188
+ projectionState.columns = [
181
189
  valueProjectionColState,
182
190
  valueCountProjectionState,
183
191
  ];
184
192
  const distinctCountOp = guaranteeNonNullable(
185
- builderState.fetchStructureState.projectionState.aggregationState.operators.find(
193
+ projectionState.aggregationState.operators.find(
186
194
  (t) => t instanceof QueryBuilderAggregateOperator_Count,
187
195
  ),
188
196
  );
189
- builderState.fetchStructureState.projectionState.aggregationState.changeColumnAggregateOperator(
197
+ projectionState.aggregationState.changeColumnAggregateOperator(
190
198
  distinctCountOp,
191
199
  valueCountProjectionState,
192
200
  );
193
201
  // result set
194
- builderState.fetchStructureState.projectionState.resultSetModifierState.limit =
195
- PREVIEW_DATA_TAKE_LIMIT;
202
+ projectionState.resultSetModifierState.limit = PREVIEW_DATA_TAKE_LIMIT;
196
203
  const sortValueCount = new SortColumnState(valueCountProjectionState);
197
204
  sortValueCount.sortType = COLUMN_SORT_TYPE.DESC;
198
- builderState.fetchStructureState.projectionState.resultSetModifierState.sortColumns =
199
- [sortValueCount, new SortColumnState(valueProjectionColState)];
205
+ projectionState.resultSetModifierState.sortColumns = [
206
+ sortValueCount,
207
+ new SortColumnState(valueProjectionColState),
208
+ ];
200
209
  return builderState.resultState.buildExecutionRawLambda();
201
210
  };
@@ -312,21 +312,14 @@ export const getPropertyChainName = (
312
312
  const propertyNameDecorator = humanizePropertyName
313
313
  ? prettyPropertyName
314
314
  : (val: string): string => val;
315
- const propertyNameChain = [
316
- propertyNameDecorator(propertyExpression.func.name),
317
- ];
315
+ const chunks = [propertyNameDecorator(propertyExpression.func.name)];
318
316
  let currentExpression: ValueSpecification | undefined = propertyExpression;
319
317
  while (currentExpression instanceof AbstractPropertyExpression) {
320
318
  currentExpression = getNullableFirstElement(
321
319
  currentExpression.parametersValues,
322
320
  );
323
- if (currentExpression instanceof AbstractPropertyExpression) {
324
- propertyNameChain.unshift(
325
- propertyNameDecorator(currentExpression.func.name),
326
- );
327
- }
328
- // Take care of chains of subtype (a pattern that is not useful, but we want to support and rectify)
329
- // $x.employees->subType(@Person)->subType(@Staff)
321
+ // Take care of chain of subtypes (a pattern that is not useful, but we want to support and potentially rectify)
322
+ // $x.employees->subType(@Person)->subType(@Staff).department
330
323
  while (
331
324
  currentExpression instanceof SimpleFunctionExpression &&
332
325
  matchFunctionName(
@@ -334,23 +327,38 @@ export const getPropertyChainName = (
334
327
  QUERY_BUILDER_SUPPORTED_FUNCTIONS.SUBTYPE,
335
328
  )
336
329
  ) {
337
- const propertyWithSubtype = `(${TYPE_CAST_TOKEN}${propertyNameDecorator(
330
+ const subtypeChunk = `${TYPE_CAST_TOKEN}(${propertyNameDecorator(
338
331
  currentExpression.parametersValues.filter(
339
332
  (param) => param instanceof InstanceValue,
340
333
  )[0]?.genericType?.value.rawType.name ?? '',
341
- )})${propertyNameDecorator(
342
- currentExpression.parametersValues[0] instanceof
343
- AbstractPropertyExpression
344
- ? currentExpression.parametersValues[0]?.func.name
345
- : '',
346
- )}`;
347
- propertyNameChain.unshift(propertyWithSubtype);
334
+ )})`;
335
+ chunks.unshift(subtypeChunk);
348
336
  currentExpression = getNullableFirstElement(
349
337
  currentExpression.parametersValues,
350
338
  );
351
339
  }
340
+ if (currentExpression instanceof AbstractPropertyExpression) {
341
+ chunks.unshift(propertyNameDecorator(currentExpression.func.name));
342
+ }
352
343
  }
353
- return propertyNameChain.join(humanizePropertyName ? '/' : '.');
344
+ const processedChunks: string[] = [];
345
+ for (const chunk of chunks) {
346
+ if (!processedChunks.length) {
347
+ processedChunks.push(chunk);
348
+ } else {
349
+ const latestProcessedChunk = guaranteeNonNullable(
350
+ processedChunks[processedChunks.length - 1],
351
+ );
352
+ if (latestProcessedChunk.startsWith(TYPE_CAST_TOKEN)) {
353
+ processedChunks[
354
+ processedChunks.length - 1
355
+ ] = `${latestProcessedChunk}${chunk}`;
356
+ } else {
357
+ processedChunks.push(chunk);
358
+ }
359
+ }
360
+ }
361
+ return processedChunks.join(humanizePropertyName ? '/' : '.');
354
362
  };
355
363
 
356
364
  export const getPropertyPath = (
@@ -373,16 +381,8 @@ export const generateValueSpecificationForParameter = (
373
381
  parameter: VariableExpression,
374
382
  graph: PureModel,
375
383
  ): ValueSpecification => {
376
- const genericType = parameter.genericType;
377
- if (genericType) {
378
- const type = genericType.value.rawType;
379
- // Clone the generic type reference and avoid directly using the
380
- // reference of the parameter so when we edit the value specification
381
- // we don't accidentally modify the type of the parameter which is constant
382
- // See https://github.com/finos/legend-studio/issues/1099
383
- const genericTypeExplicitReference = GenericTypeExplicitReference.create(
384
- new GenericType(type),
385
- );
384
+ if (parameter.genericType) {
385
+ const type = parameter.genericType.value.rawType;
386
386
  if (
387
387
  (
388
388
  [
@@ -400,7 +400,16 @@ export const generateValueSpecificationForParameter = (
400
400
  ).includes(type.name)
401
401
  ) {
402
402
  const primitiveInstanceValue = new PrimitiveInstanceValue(
403
- genericTypeExplicitReference,
403
+ GenericTypeExplicitReference.create(
404
+ new GenericType(
405
+ // NOTE: since the default generated value for type Date is a StrictDate
406
+ // we need to adjust the generic type accordingly
407
+ // See https://github.com/finos/legend-studio/issues/1391
408
+ type.name === PRIMITIVE_TYPE.DATE
409
+ ? graph.getType(PRIMITIVE_TYPE.STRICTDATE)
410
+ : type,
411
+ ),
412
+ ),
404
413
  parameter.multiplicity,
405
414
  );
406
415
  if (type.name !== PRIMITIVE_TYPE.LATESTDATE) {
@@ -411,7 +420,7 @@ export const generateValueSpecificationForParameter = (
411
420
  return primitiveInstanceValue;
412
421
  } else if (type instanceof Enumeration) {
413
422
  const enumValueInstanceValue = new EnumValueInstanceValue(
414
- genericTypeExplicitReference,
423
+ GenericTypeExplicitReference.create(new GenericType(type)),
415
424
  parameter.multiplicity,
416
425
  );
417
426
  if (type.values.length) {