@finos/legend-application-query 5.0.1 → 5.2.1
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.
- package/lib/application/LegendQueryApplicationConfig.d.ts +17 -1
- package/lib/application/LegendQueryApplicationConfig.d.ts.map +1 -1
- package/lib/application/LegendQueryApplicationConfig.js +23 -1
- package/lib/application/LegendQueryApplicationConfig.js.map +1 -1
- package/lib/components/QueryBuilder.d.ts.map +1 -1
- package/lib/components/QueryBuilder.js +3 -1
- package/lib/components/QueryBuilder.js.map +1 -1
- package/lib/components/QueryBuilderExplorerPanel.d.ts.map +1 -1
- package/lib/components/QueryBuilderExplorerPanel.js +10 -35
- package/lib/components/QueryBuilderExplorerPanel.js.map +1 -1
- package/lib/components/QueryBuilderFetchStructurePanel.d.ts.map +1 -1
- package/lib/components/QueryBuilderFetchStructurePanel.js +78 -35
- package/lib/components/QueryBuilderFetchStructurePanel.js.map +1 -1
- package/lib/components/QueryBuilderFilterPanel.d.ts.map +1 -1
- package/lib/components/QueryBuilderFilterPanel.js +80 -66
- package/lib/components/QueryBuilderFilterPanel.js.map +1 -1
- package/lib/components/QueryBuilderFunctionsExplorerPanel.d.ts.map +1 -1
- package/lib/components/QueryBuilderFunctionsExplorerPanel.js +9 -39
- package/lib/components/QueryBuilderFunctionsExplorerPanel.js.map +1 -1
- package/lib/components/QueryBuilderGraphFetchTreePanel.d.ts.map +1 -1
- package/lib/components/QueryBuilderGraphFetchTreePanel.js +5 -5
- package/lib/components/QueryBuilderGraphFetchTreePanel.js.map +1 -1
- package/lib/components/QueryBuilderLambdaEditor.d.ts +1 -0
- package/lib/components/QueryBuilderLambdaEditor.d.ts.map +1 -1
- package/lib/components/QueryBuilderLambdaEditor.js +2 -2
- package/lib/components/QueryBuilderLambdaEditor.js.map +1 -1
- package/lib/components/QueryBuilderMilestoneEditor.js +5 -5
- package/lib/components/QueryBuilderMilestoneEditor.js.map +1 -1
- package/lib/components/QueryBuilderPanelIssueCountBadge.d.ts +20 -0
- package/lib/components/QueryBuilderPanelIssueCountBadge.d.ts.map +1 -0
- package/lib/components/QueryBuilderPanelIssueCountBadge.js +28 -0
- package/lib/components/QueryBuilderPanelIssueCountBadge.js.map +1 -0
- package/lib/components/QueryBuilderParameterPanel.d.ts.map +1 -1
- package/lib/components/QueryBuilderParameterPanel.js +13 -33
- package/lib/components/QueryBuilderParameterPanel.js.map +1 -1
- package/lib/components/QueryBuilderPostFilterPanel.d.ts.map +1 -1
- package/lib/components/QueryBuilderPostFilterPanel.js +59 -62
- package/lib/components/QueryBuilderPostFilterPanel.js.map +1 -1
- package/lib/components/QueryBuilderProjectionPanel.d.ts.map +1 -1
- package/lib/components/QueryBuilderProjectionPanel.js +47 -63
- package/lib/components/QueryBuilderProjectionPanel.js.map +1 -1
- package/lib/components/QueryBuilderPropertyExpressionEditor.d.ts.map +1 -1
- package/lib/components/QueryBuilderPropertyExpressionEditor.js +11 -11
- package/lib/components/QueryBuilderPropertyExpressionEditor.js.map +1 -1
- package/lib/components/QueryBuilderPropertySearchPanel.js +5 -7
- package/lib/components/QueryBuilderPropertySearchPanel.js.map +1 -1
- package/lib/components/QueryBuilderResultModifierPanel.d.ts.map +1 -1
- package/lib/components/QueryBuilderResultModifierPanel.js +3 -1
- package/lib/components/QueryBuilderResultModifierPanel.js.map +1 -1
- package/lib/components/QueryBuilderResultPanel.d.ts.map +1 -1
- package/lib/components/QueryBuilderResultPanel.js +37 -23
- package/lib/components/QueryBuilderResultPanel.js.map +1 -1
- package/lib/components/QueryBuilderSetupPanel.d.ts.map +1 -1
- package/lib/components/QueryBuilderSetupPanel.js +10 -9
- package/lib/components/QueryBuilderSetupPanel.js.map +1 -1
- package/lib/components/QueryBuilderUnsupportedQueryEditor.d.ts.map +1 -1
- package/lib/components/QueryBuilderUnsupportedQueryEditor.js +4 -2
- package/lib/components/QueryBuilderUnsupportedQueryEditor.js.map +1 -1
- package/lib/components/QueryEditor.d.ts.map +1 -1
- package/lib/components/QueryEditor.js +16 -4
- package/lib/components/QueryEditor.js.map +1 -1
- package/lib/index.css +2 -2
- package/lib/index.css.map +1 -1
- package/lib/package.json +10 -9
- package/lib/stores/QueryBuilderExplorerState.d.ts +1 -1
- package/lib/stores/QueryBuilderExplorerState.d.ts.map +1 -1
- package/lib/stores/QueryBuilderExplorerState.js +18 -3
- package/lib/stores/QueryBuilderExplorerState.js.map +1 -1
- package/lib/stores/QueryBuilderFetchStructureState.d.ts +8 -1
- package/lib/stores/QueryBuilderFetchStructureState.d.ts.map +1 -1
- package/lib/stores/QueryBuilderFetchStructureState.js +10 -2
- package/lib/stores/QueryBuilderFetchStructureState.js.map +1 -1
- package/lib/stores/QueryBuilderFilterState.d.ts +10 -5
- package/lib/stores/QueryBuilderFilterState.d.ts.map +1 -1
- package/lib/stores/QueryBuilderFilterState.js +34 -8
- package/lib/stores/QueryBuilderFilterState.js.map +1 -1
- package/lib/stores/QueryBuilderGraphFetchTreeState.d.ts.map +1 -1
- package/lib/stores/QueryBuilderGraphFetchTreeState.js +6 -3
- package/lib/stores/QueryBuilderGraphFetchTreeState.js.map +1 -1
- package/lib/stores/QueryBuilderLambdaProcessor.d.ts.map +1 -1
- package/lib/stores/QueryBuilderLambdaProcessor.js +2 -0
- package/lib/stores/QueryBuilderLambdaProcessor.js.map +1 -1
- package/lib/stores/QueryBuilderOperatorLoader.d.ts +47 -0
- package/lib/stores/QueryBuilderOperatorLoader.d.ts.map +1 -0
- package/lib/stores/QueryBuilderOperatorLoader.js +94 -0
- package/lib/stores/QueryBuilderOperatorLoader.js.map +1 -0
- package/lib/stores/QueryBuilderOperatorsHelper.d.ts +1 -0
- package/lib/stores/QueryBuilderOperatorsHelper.d.ts.map +1 -1
- package/lib/stores/QueryBuilderOperatorsHelper.js +28 -1
- package/lib/stores/QueryBuilderOperatorsHelper.js.map +1 -1
- package/lib/stores/QueryBuilderPostFilterState.d.ts +9 -6
- package/lib/stores/QueryBuilderPostFilterState.d.ts.map +1 -1
- package/lib/stores/QueryBuilderPostFilterState.js +31 -7
- package/lib/stores/QueryBuilderPostFilterState.js.map +1 -1
- package/lib/stores/QueryBuilderPreviewDataHelper.d.ts +4 -3
- package/lib/stores/QueryBuilderPreviewDataHelper.d.ts.map +1 -1
- package/lib/stores/QueryBuilderPreviewDataHelper.js +77 -97
- package/lib/stores/QueryBuilderPreviewDataHelper.js.map +1 -1
- package/lib/stores/QueryBuilderProjectionState.d.ts +4 -7
- package/lib/stores/QueryBuilderProjectionState.d.ts.map +1 -1
- package/lib/stores/QueryBuilderProjectionState.js +23 -39
- package/lib/stores/QueryBuilderProjectionState.js.map +1 -1
- package/lib/stores/QueryBuilderPropertySearchPanelState.js +1 -1
- package/lib/stores/QueryBuilderPropertySearchPanelState.js.map +1 -1
- package/lib/stores/QueryBuilderResultState.d.ts +5 -2
- package/lib/stores/QueryBuilderResultState.d.ts.map +1 -1
- package/lib/stores/QueryBuilderResultState.js +19 -7
- package/lib/stores/QueryBuilderResultState.js.map +1 -1
- package/lib/stores/QueryBuilderSetupState.js +1 -1
- package/lib/stores/QueryBuilderSetupState.js.map +1 -1
- package/lib/stores/QueryBuilderState.d.ts +7 -0
- package/lib/stores/QueryBuilderState.d.ts.map +1 -1
- package/lib/stores/QueryBuilderState.js +18 -58
- package/lib/stores/QueryBuilderState.js.map +1 -1
- package/lib/stores/QueryBuilderTestUtils.d.ts +24 -0
- package/lib/stores/QueryBuilderTestUtils.d.ts.map +1 -0
- package/lib/stores/QueryBuilderTestUtils.js +49 -0
- package/lib/stores/QueryBuilderTestUtils.js.map +1 -0
- package/lib/stores/QueryBuilderTypeaheadHelper.d.ts +24 -0
- package/lib/stores/QueryBuilderTypeaheadHelper.d.ts.map +1 -0
- package/lib/stores/QueryBuilderTypeaheadHelper.js +89 -0
- package/lib/stores/QueryBuilderTypeaheadHelper.js.map +1 -0
- package/lib/stores/QueryBuilderValueSpecificationBuilderHelper.d.ts.map +1 -1
- package/lib/stores/QueryBuilderValueSpecificationBuilderHelper.js +7 -7
- package/lib/stores/QueryBuilderValueSpecificationBuilderHelper.js.map +1 -1
- package/lib/stores/QueryEditorStore.d.ts.map +1 -1
- package/lib/stores/QueryEditorStore.js +14 -3
- package/lib/stores/QueryEditorStore.js.map +1 -1
- package/lib/stores/QueryFunctionsExplorerState.d.ts +2 -6
- package/lib/stores/QueryFunctionsExplorerState.d.ts.map +1 -1
- package/lib/stores/QueryFunctionsExplorerState.js +2 -11
- package/lib/stores/QueryFunctionsExplorerState.js.map +1 -1
- package/lib/stores/QueryParametersState.d.ts +1 -3
- package/lib/stores/QueryParametersState.d.ts.map +1 -1
- package/lib/stores/QueryParametersState.js +1 -4
- package/lib/stores/QueryParametersState.js.map +1 -1
- package/lib/stores/filterOperators/QueryBuilderFilterOperator_Equal.d.ts.map +1 -1
- package/lib/stores/filterOperators/QueryBuilderFilterOperator_Equal.js +9 -32
- package/lib/stores/filterOperators/QueryBuilderFilterOperator_Equal.js.map +1 -1
- package/lib/stores/filterOperators/QueryBuilderFilterOperator_GreaterThan.d.ts.map +1 -1
- package/lib/stores/filterOperators/QueryBuilderFilterOperator_GreaterThan.js +9 -32
- package/lib/stores/filterOperators/QueryBuilderFilterOperator_GreaterThan.js.map +1 -1
- package/lib/stores/filterOperators/QueryBuilderFilterOperator_GreaterThanEqual.d.ts.map +1 -1
- package/lib/stores/filterOperators/QueryBuilderFilterOperator_GreaterThanEqual.js +9 -32
- package/lib/stores/filterOperators/QueryBuilderFilterOperator_GreaterThanEqual.js.map +1 -1
- package/lib/stores/filterOperators/QueryBuilderFilterOperator_LessThan.d.ts.map +1 -1
- package/lib/stores/filterOperators/QueryBuilderFilterOperator_LessThan.js +9 -33
- package/lib/stores/filterOperators/QueryBuilderFilterOperator_LessThan.js.map +1 -1
- package/lib/stores/filterOperators/QueryBuilderFilterOperator_LessThanEqual.d.ts.map +1 -1
- package/lib/stores/filterOperators/QueryBuilderFilterOperator_LessThanEqual.js +9 -32
- package/lib/stores/filterOperators/QueryBuilderFilterOperator_LessThanEqual.js.map +1 -1
- package/lib/stores/postFilterOperators/QueryBuilderPostFilterOperator_Equal.d.ts.map +1 -1
- package/lib/stores/postFilterOperators/QueryBuilderPostFilterOperator_Equal.js +7 -30
- package/lib/stores/postFilterOperators/QueryBuilderPostFilterOperator_Equal.js.map +1 -1
- package/lib/stores/postFilterOperators/QueryBuilderPostFilterOperator_GreaterThan.d.ts.map +1 -1
- package/lib/stores/postFilterOperators/QueryBuilderPostFilterOperator_GreaterThan.js +8 -31
- package/lib/stores/postFilterOperators/QueryBuilderPostFilterOperator_GreaterThan.js.map +1 -1
- package/lib/stores/postFilterOperators/QueryBuilderPostFilterOperator_LessThan.d.ts.map +1 -1
- package/lib/stores/postFilterOperators/QueryBuilderPostFilterOperator_LessThan.js +8 -31
- package/lib/stores/postFilterOperators/QueryBuilderPostFilterOperator_LessThan.js.map +1 -1
- package/package.json +17 -16
- package/src/application/LegendQueryApplicationConfig.ts +35 -1
- package/src/components/QueryBuilder.tsx +13 -2
- package/src/components/QueryBuilderExplorerPanel.tsx +20 -57
- package/src/components/QueryBuilderFetchStructurePanel.tsx +94 -41
- package/src/components/QueryBuilderFilterPanel.tsx +271 -232
- package/src/components/QueryBuilderFunctionsExplorerPanel.tsx +24 -68
- package/src/components/QueryBuilderGraphFetchTreePanel.tsx +34 -25
- package/src/components/QueryBuilderLambdaEditor.tsx +3 -0
- package/src/components/QueryBuilderMilestoneEditor.tsx +34 -34
- package/src/components/QueryBuilderPanelIssueCountBadge.tsx +38 -0
- package/src/components/QueryBuilderParameterPanel.tsx +23 -55
- package/src/components/QueryBuilderPostFilterPanel.tsx +245 -233
- package/src/components/QueryBuilderProjectionPanel.tsx +127 -154
- package/src/components/QueryBuilderPropertyExpressionEditor.tsx +61 -57
- package/src/components/QueryBuilderPropertySearchPanel.tsx +9 -9
- package/src/components/QueryBuilderResultModifierPanel.tsx +4 -2
- package/src/components/QueryBuilderResultPanel.tsx +139 -91
- package/src/components/QueryBuilderSetupPanel.tsx +13 -12
- package/src/components/QueryBuilderUnsupportedQueryEditor.tsx +4 -2
- package/src/components/QueryEditor.tsx +39 -1
- package/src/stores/QueryBuilderExplorerState.ts +22 -3
- package/src/stores/QueryBuilderFetchStructureState.ts +18 -2
- package/src/stores/QueryBuilderFilterState.ts +52 -7
- package/src/stores/QueryBuilderGraphFetchTreeState.ts +14 -8
- package/src/stores/QueryBuilderLambdaProcessor.ts +8 -0
- package/src/stores/QueryBuilderOperatorLoader.ts +133 -0
- package/src/stores/QueryBuilderOperatorsHelper.ts +35 -0
- package/src/stores/QueryBuilderPostFilterState.ts +47 -8
- package/src/stores/QueryBuilderPreviewDataHelper.ts +122 -217
- package/src/stores/QueryBuilderProjectionState.ts +40 -53
- package/src/stores/QueryBuilderPropertySearchPanelState.ts +1 -1
- package/src/stores/QueryBuilderResultState.ts +27 -9
- package/src/stores/QueryBuilderSetupState.ts +1 -1
- package/src/stores/QueryBuilderState.ts +35 -94
- package/src/stores/QueryBuilderTestUtils.ts +93 -0
- package/src/stores/QueryBuilderTypeaheadHelper.ts +149 -0
- package/src/stores/QueryBuilderValueSpecificationBuilderHelper.ts +9 -7
- package/src/stores/QueryEditorStore.ts +19 -3
- package/src/stores/QueryFunctionsExplorerState.ts +1 -11
- package/src/stores/QueryParametersState.ts +1 -3
- package/src/stores/filterOperators/QueryBuilderFilterOperator_Equal.ts +14 -36
- package/src/stores/filterOperators/QueryBuilderFilterOperator_GreaterThan.ts +17 -36
- package/src/stores/filterOperators/QueryBuilderFilterOperator_GreaterThanEqual.ts +17 -36
- package/src/stores/filterOperators/QueryBuilderFilterOperator_LessThan.ts +17 -37
- package/src/stores/filterOperators/QueryBuilderFilterOperator_LessThanEqual.ts +17 -36
- package/src/stores/postFilterOperators/QueryBuilderPostFilterOperator_Equal.ts +14 -34
- package/src/stores/postFilterOperators/QueryBuilderPostFilterOperator_GreaterThan.ts +19 -37
- package/src/stores/postFilterOperators/QueryBuilderPostFilterOperator_LessThan.ts +19 -37
- package/tsconfig.json +4 -0
@@ -176,7 +176,13 @@ export const QueryBuilder = observer(
|
|
176
176
|
Show Function(s)
|
177
177
|
</MenuContentItemLabel>
|
178
178
|
</MenuContentItem>
|
179
|
-
<MenuContentItem
|
179
|
+
<MenuContentItem
|
180
|
+
onClick={toggleShowParameterPanel}
|
181
|
+
disabled={
|
182
|
+
queryBuilderState.queryParametersState.parameterStates
|
183
|
+
.length > 0
|
184
|
+
}
|
185
|
+
>
|
180
186
|
<MenuContentItemIcon>
|
181
187
|
{queryBuilderState.showParameterPanel ? (
|
182
188
|
<CheckIcon />
|
@@ -188,7 +194,12 @@ export const QueryBuilder = observer(
|
|
188
194
|
</MenuContentItem>
|
189
195
|
<MenuContentItem
|
190
196
|
onClick={toggleShowPostFilterPanel}
|
191
|
-
disabled={
|
197
|
+
disabled={
|
198
|
+
queryBuilderState.fetchStructureState.isGraphFetchMode() ||
|
199
|
+
Array.from(
|
200
|
+
queryBuilderState.postFilterState.nodes.values(),
|
201
|
+
).length > 0
|
202
|
+
}
|
192
203
|
>
|
193
204
|
<MenuContentItemIcon>
|
194
205
|
{queryBuilderState.showPostFilterPanel ? (
|
@@ -46,6 +46,8 @@ import {
|
|
46
46
|
CheckIcon,
|
47
47
|
SearchIcon,
|
48
48
|
PanelLoadingIndicator,
|
49
|
+
DragPreviewLayer,
|
50
|
+
useDragPreviewLayer,
|
49
51
|
} from '@finos/legend-art';
|
50
52
|
import {
|
51
53
|
type QueryBuilderExplorerTreeDragSource,
|
@@ -58,9 +60,8 @@ import {
|
|
58
60
|
getQueryBuilderPropertyNodeData,
|
59
61
|
getQueryBuilderSubTypeNodeData,
|
60
62
|
} from '../stores/QueryBuilderExplorerState.js';
|
61
|
-
import { useDrag
|
63
|
+
import { useDrag } from 'react-dnd';
|
62
64
|
import { QueryBuilderPropertyInfoTooltip } from './QueryBuilderPropertyInfoTooltip.js';
|
63
|
-
import { getEmptyImage } from 'react-dnd-html5-backend';
|
64
65
|
import type { QueryBuilderState } from '../stores/QueryBuilderState.js';
|
65
66
|
import { addQueryBuilderPropertyNode } from '../stores/QueryBuilderGraphFetchTreeUtil.js';
|
66
67
|
import { QueryBuilderSimpleProjectionColumnState } from '../stores/QueryBuilderProjectionState.js';
|
@@ -233,51 +234,6 @@ const QueryBuilderExplorerPreviewDataModal = observer(
|
|
233
234
|
},
|
234
235
|
);
|
235
236
|
|
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
237
|
const QueryBuilderExplorerContextMenu = observer(
|
282
238
|
forwardRef<
|
283
239
|
HTMLDivElement,
|
@@ -442,7 +398,9 @@ const QueryBuilderExplorerTreeNodeContainer = observer(
|
|
442
398
|
useState(false);
|
443
399
|
const applicationStore = useApplicationStore();
|
444
400
|
const explorerState = queryBuilderState.explorerState;
|
445
|
-
const [, dragConnector, dragPreviewConnector] = useDrag
|
401
|
+
const [, dragConnector, dragPreviewConnector] = useDrag<{
|
402
|
+
node?: QueryBuilderExplorerTreePropertyNodeData;
|
403
|
+
}>(
|
446
404
|
() => ({
|
447
405
|
type:
|
448
406
|
node instanceof QueryBuilderExplorerTreePropertyNodeData
|
@@ -452,13 +410,15 @@ const QueryBuilderExplorerTreeNodeContainer = observer(
|
|
452
410
|
? QUERY_BUILDER_EXPLORER_TREE_DND_TYPE.CLASS_PROPERTY
|
453
411
|
: QUERY_BUILDER_EXPLORER_TREE_DND_TYPE.PRIMITIVE_PROPERTY
|
454
412
|
: QUERY_BUILDER_EXPLORER_TREE_DND_TYPE.ROOT,
|
455
|
-
item: ()
|
413
|
+
item: () =>
|
456
414
|
node instanceof QueryBuilderExplorerTreePropertyNodeData
|
457
415
|
? { node }
|
458
416
|
: {},
|
459
417
|
}),
|
460
418
|
[node],
|
461
419
|
);
|
420
|
+
useDragPreviewLayer(dragPreviewConnector);
|
421
|
+
|
462
422
|
const isExpandable = Boolean(node.childrenIds.length);
|
463
423
|
const isDerivedProperty =
|
464
424
|
node instanceof QueryBuilderExplorerTreePropertyNodeData &&
|
@@ -506,10 +466,6 @@ const QueryBuilderExplorerTreeNodeContainer = observer(
|
|
506
466
|
).catch(applicationStore.alertUnhandledError);
|
507
467
|
}
|
508
468
|
};
|
509
|
-
// hide default HTML5 preview image
|
510
|
-
useEffect(() => {
|
511
|
-
dragPreviewConnector(getEmptyImage(), { captureDraggingState: true });
|
512
|
-
}, [dragPreviewConnector]);
|
513
469
|
|
514
470
|
if (!node.mappingData.mapped && !explorerState.showUnmappedProperties) {
|
515
471
|
return null;
|
@@ -595,7 +551,7 @@ const QueryBuilderExplorerTreeNodeContainer = observer(
|
|
595
551
|
>
|
596
552
|
<div
|
597
553
|
className={clsx(
|
598
|
-
'query-builder-explorer-tree__node__label--
|
554
|
+
'query-builder-explorer-tree__node__label--property__name',
|
599
555
|
{
|
600
556
|
'query-builder-explorer-tree__node__label--deprecated':
|
601
557
|
checkForDeprecatedNode(
|
@@ -777,7 +733,9 @@ const QueryBuilderExplorerTree = observer(
|
|
777
733
|
explorerState.mappingModelCoverageAnalysisResult,
|
778
734
|
),
|
779
735
|
);
|
780
|
-
|
736
|
+
if (propertyTreeNodeData) {
|
737
|
+
treeData.nodes.set(propertyTreeNodeData.id, propertyTreeNodeData);
|
738
|
+
}
|
781
739
|
});
|
782
740
|
node.type._subclasses.forEach((subclass) => {
|
783
741
|
const subTypeTreeNodeData = getQueryBuilderSubTypeNodeData(
|
@@ -966,8 +924,13 @@ export const QueryBuilderExplorerPanel = observer(
|
|
966
924
|
explorerState.mappingModelCoverageAnalysisState.isInProgress
|
967
925
|
}
|
968
926
|
/>
|
969
|
-
<
|
970
|
-
|
927
|
+
<DragPreviewLayer
|
928
|
+
labelGetter={(item: QueryBuilderExplorerTreeDragSource): string =>
|
929
|
+
explorerState.humanizePropertyName
|
930
|
+
? prettyPropertyName(item.node.label)
|
931
|
+
: item.node.label
|
932
|
+
}
|
933
|
+
types={Object.values(QUERY_BUILDER_EXPLORER_TREE_DND_TYPE)}
|
971
934
|
/>
|
972
935
|
{explorerState.mappingModelCoverageAnalysisState.isInProgress ? (
|
973
936
|
<BlankPanelContent>
|
@@ -32,6 +32,9 @@ import {
|
|
32
32
|
ActionAlertType,
|
33
33
|
useApplicationStore,
|
34
34
|
} from '@finos/legend-application';
|
35
|
+
import { QueryBuilderProjectionState } from '../stores/QueryBuilderProjectionState.js';
|
36
|
+
import { QueryBuilderGraphFetchTreeState } from '../stores/QueryBuilderGraphFetchTreeState.js';
|
37
|
+
import { QueryBuilderPanelIssueCountBadge } from './QueryBuilderPanelIssueCountBadge.js';
|
35
38
|
|
36
39
|
const QueryBuilderUnsupportedFetchStructure = observer(
|
37
40
|
(props: { mode: FETCH_STRUCTURE_MODE }) => {
|
@@ -87,49 +90,96 @@ export const QueryBuilderFetchStructurePanel = observer(
|
|
87
90
|
const onChangeFetchStructureMode =
|
88
91
|
(fetchMode: FETCH_STRUCTURE_MODE): (() => void) =>
|
89
92
|
(): void => {
|
93
|
+
const reset = (): void => {
|
94
|
+
fetchStructureState.setFetchStructureMode(fetchMode);
|
95
|
+
queryBuilderState.changeFetchStructure();
|
96
|
+
queryBuilderState.postFilterState = new QueryBuilderPostFilterState(
|
97
|
+
queryBuilderState,
|
98
|
+
queryBuilderState.postFilterOperators,
|
99
|
+
);
|
100
|
+
queryBuilderState.setShowPostFilterPanel(false);
|
101
|
+
};
|
90
102
|
if (fetchStructureState.fetchStructureMode !== fetchMode) {
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
103
|
+
switch (fetchMode) {
|
104
|
+
case FETCH_STRUCTURE_MODE.GRAPH_FETCH: {
|
105
|
+
if (
|
106
|
+
queryBuilderState.fetchStructureState.projectionState.columns
|
107
|
+
.length > 0
|
108
|
+
// NOTE: here we could potentially check for the presence of post-filter as well
|
109
|
+
// but we make the assumption that if there is no projection column, there should
|
110
|
+
// not be any post-filter at all
|
111
|
+
) {
|
112
|
+
applicationStore.setActionAlertInfo({
|
113
|
+
message:
|
114
|
+
queryBuilderState.showPostFilterPanel &&
|
115
|
+
queryBuilderState.postFilterState.nodes.size > 0
|
116
|
+
? 'With graph-fetch mode, post filter is not supported. Current projection columns and post filters will be lost when switching to the graph-fetch mode. Do you still want to proceed?'
|
117
|
+
: 'Current projection columns will be lost when switching to the graph-fetch mode. Do you still want to proceed?',
|
118
|
+
type: ActionAlertType.CAUTION,
|
119
|
+
actions: [
|
120
|
+
{
|
121
|
+
label: 'Proceed',
|
122
|
+
type: ActionAlertActionType.PROCEED_WITH_CAUTION,
|
123
|
+
handler: applicationStore.guardUnhandledError(
|
124
|
+
async () => {
|
125
|
+
queryBuilderState.fetchStructureState.projectionState =
|
126
|
+
new QueryBuilderProjectionState(
|
127
|
+
queryBuilderState,
|
128
|
+
queryBuilderState.fetchStructureState.projectionState.aggregationState.operators,
|
129
|
+
);
|
130
|
+
reset();
|
131
|
+
},
|
132
|
+
),
|
133
|
+
},
|
134
|
+
{
|
135
|
+
label: 'Cancel',
|
136
|
+
type: ActionAlertActionType.PROCEED,
|
137
|
+
default: true,
|
138
|
+
},
|
139
|
+
],
|
140
|
+
});
|
141
|
+
} else {
|
142
|
+
reset();
|
143
|
+
}
|
144
|
+
return;
|
145
|
+
}
|
146
|
+
case FETCH_STRUCTURE_MODE.PROJECTION: {
|
147
|
+
if (
|
148
|
+
queryBuilderState.fetchStructureState.graphFetchTreeState
|
149
|
+
.treeData?.rootIds.length
|
150
|
+
) {
|
151
|
+
applicationStore.setActionAlertInfo({
|
152
|
+
message:
|
153
|
+
'Current graph-fetch will be lost when switching to projection mode. Do you still want to proceed?',
|
154
|
+
type: ActionAlertType.CAUTION,
|
155
|
+
actions: [
|
156
|
+
{
|
157
|
+
label: 'Proceed',
|
158
|
+
type: ActionAlertActionType.PROCEED_WITH_CAUTION,
|
159
|
+
handler: applicationStore.guardUnhandledError(
|
160
|
+
async () => {
|
161
|
+
queryBuilderState.fetchStructureState.graphFetchTreeState =
|
162
|
+
new QueryBuilderGraphFetchTreeState(
|
163
|
+
queryBuilderState,
|
164
|
+
);
|
165
|
+
reset();
|
166
|
+
},
|
167
|
+
),
|
168
|
+
},
|
169
|
+
{
|
170
|
+
label: 'Cancel',
|
171
|
+
type: ActionAlertActionType.PROCEED,
|
172
|
+
default: true,
|
173
|
+
},
|
174
|
+
],
|
175
|
+
});
|
176
|
+
} else {
|
177
|
+
reset();
|
178
|
+
}
|
179
|
+
return;
|
132
180
|
}
|
181
|
+
default:
|
182
|
+
return;
|
133
183
|
}
|
134
184
|
}
|
135
185
|
};
|
@@ -139,6 +189,9 @@ export const QueryBuilderFetchStructurePanel = observer(
|
|
139
189
|
<div className="panel__header">
|
140
190
|
<div className="panel__header__title">
|
141
191
|
<div className="panel__header__title__label">fetch structure</div>
|
192
|
+
<QueryBuilderPanelIssueCountBadge
|
193
|
+
issues={fetchStructureState.validationIssues}
|
194
|
+
/>
|
142
195
|
</div>
|
143
196
|
<div className="panel__header__actions">
|
144
197
|
{fetchStructureStateMode === FETCH_STRUCTURE_MODE.PROJECTION && (
|