@finos/legend-application-query 5.1.0 → 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 +7 -34
- package/lib/components/QueryBuilderExplorerPanel.js.map +1 -1
- package/lib/components/QueryBuilderFetchStructurePanel.d.ts.map +1 -1
- package/lib/components/QueryBuilderFetchStructurePanel.js +77 -66
- package/lib/components/QueryBuilderFetchStructurePanel.js.map +1 -1
- package/lib/components/QueryBuilderFilterPanel.d.ts.map +1 -1
- package/lib/components/QueryBuilderFilterPanel.js +28 -58
- 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 -34
- package/lib/components/QueryBuilderParameterPanel.js.map +1 -1
- package/lib/components/QueryBuilderPostFilterPanel.d.ts.map +1 -1
- package/lib/components/QueryBuilderPostFilterPanel.js +33 -58
- package/lib/components/QueryBuilderPostFilterPanel.js.map +1 -1
- package/lib/components/QueryBuilderProjectionPanel.d.ts.map +1 -1
- package/lib/components/QueryBuilderProjectionPanel.js +47 -67
- 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.d.ts.map +1 -1
- package/lib/components/QueryBuilderPropertySearchPanel.js +3 -6
- 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 +28 -20
- package/lib/components/QueryBuilderResultPanel.js.map +1 -1
- package/lib/components/QueryBuilderSetupPanel.d.ts.map +1 -1
- package/lib/components/QueryBuilderSetupPanel.js +10 -11
- 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.map +1 -1
- package/lib/stores/QueryBuilderExplorerState.js +5 -0
- package/lib/stores/QueryBuilderExplorerState.js.map +1 -1
- package/lib/stores/QueryBuilderFetchStructureState.d.ts +6 -0
- package/lib/stores/QueryBuilderFetchStructureState.d.ts.map +1 -1
- package/lib/stores/QueryBuilderFetchStructureState.js +8 -0
- package/lib/stores/QueryBuilderFetchStructureState.js.map +1 -1
- package/lib/stores/QueryBuilderFilterState.d.ts +4 -9
- package/lib/stores/QueryBuilderFilterState.d.ts.map +1 -1
- package/lib/stores/QueryBuilderFilterState.js +6 -11
- 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/QueryBuilderPostFilterState.d.ts +4 -4
- package/lib/stores/QueryBuilderPostFilterState.d.ts.map +1 -1
- package/lib/stores/QueryBuilderPostFilterState.js +6 -6
- package/lib/stores/QueryBuilderPostFilterState.js.map +1 -1
- package/lib/stores/QueryBuilderProjectionState.d.ts +2 -7
- package/lib/stores/QueryBuilderProjectionState.d.ts.map +1 -1
- package/lib/stores/QueryBuilderProjectionState.js +5 -17
- package/lib/stores/QueryBuilderProjectionState.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 +6 -1
- package/lib/stores/QueryBuilderState.d.ts.map +1 -1
- package/lib/stores/QueryBuilderState.js +9 -2
- package/lib/stores/QueryBuilderState.js.map +1 -1
- 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 +4 -1
- 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 +4 -1
- 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 +4 -1
- 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 +4 -1
- 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 +4 -1
- 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 +4 -1
- 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 +4 -1
- 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 +4 -1
- 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 +17 -56
- package/src/components/QueryBuilderFetchStructurePanel.tsx +93 -80
- package/src/components/QueryBuilderFilterPanel.tsx +184 -225
- package/src/components/QueryBuilderFunctionsExplorerPanel.tsx +23 -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 +21 -54
- package/src/components/QueryBuilderPostFilterPanel.tsx +202 -236
- package/src/components/QueryBuilderProjectionPanel.tsx +126 -170
- package/src/components/QueryBuilderPropertyExpressionEditor.tsx +61 -57
- package/src/components/QueryBuilderPropertySearchPanel.tsx +8 -9
- package/src/components/QueryBuilderResultModifierPanel.tsx +4 -2
- package/src/components/QueryBuilderResultPanel.tsx +71 -52
- package/src/components/QueryBuilderSetupPanel.tsx +10 -11
- package/src/components/QueryBuilderUnsupportedQueryEditor.tsx +4 -2
- package/src/components/QueryEditor.tsx +39 -1
- package/src/stores/QueryBuilderExplorerState.ts +5 -0
- package/src/stores/QueryBuilderFetchStructureState.ts +9 -0
- package/src/stores/QueryBuilderFilterState.ts +7 -12
- package/src/stores/QueryBuilderGraphFetchTreeState.ts +14 -8
- package/src/stores/QueryBuilderLambdaProcessor.ts +8 -0
- package/src/stores/QueryBuilderPostFilterState.ts +7 -7
- package/src/stores/QueryBuilderProjectionState.ts +7 -18
- package/src/stores/QueryBuilderSetupState.ts +1 -1
- package/src/stores/QueryBuilderState.ts +10 -2
- 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 +8 -1
- package/src/stores/filterOperators/QueryBuilderFilterOperator_GreaterThan.ts +8 -1
- package/src/stores/filterOperators/QueryBuilderFilterOperator_GreaterThanEqual.ts +8 -1
- package/src/stores/filterOperators/QueryBuilderFilterOperator_LessThan.ts +8 -1
- package/src/stores/filterOperators/QueryBuilderFilterOperator_LessThanEqual.ts +8 -1
- package/src/stores/postFilterOperators/QueryBuilderPostFilterOperator_Equal.ts +8 -1
- package/src/stores/postFilterOperators/QueryBuilderPostFilterOperator_GreaterThan.ts +8 -1
- package/src/stores/postFilterOperators/QueryBuilderPostFilterOperator_LessThan.ts +8 -1
- package/tsconfig.json +1 -0
@@ -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(
|
@@ -968,8 +924,13 @@ export const QueryBuilderExplorerPanel = observer(
|
|
968
924
|
explorerState.mappingModelCoverageAnalysisState.isInProgress
|
969
925
|
}
|
970
926
|
/>
|
971
|
-
<
|
972
|
-
|
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)}
|
973
934
|
/>
|
974
935
|
{explorerState.mappingModelCoverageAnalysisState.isInProgress ? (
|
975
936
|
<BlankPanelContent>
|
@@ -34,6 +34,7 @@ import {
|
|
34
34
|
} from '@finos/legend-application';
|
35
35
|
import { QueryBuilderProjectionState } from '../stores/QueryBuilderProjectionState.js';
|
36
36
|
import { QueryBuilderGraphFetchTreeState } from '../stores/QueryBuilderGraphFetchTreeState.js';
|
37
|
+
import { QueryBuilderPanelIssueCountBadge } from './QueryBuilderPanelIssueCountBadge.js';
|
37
38
|
|
38
39
|
const QueryBuilderUnsupportedFetchStructure = observer(
|
39
40
|
(props: { mode: FETCH_STRUCTURE_MODE }) => {
|
@@ -89,87 +90,96 @@ export const QueryBuilderFetchStructurePanel = observer(
|
|
89
90
|
const onChangeFetchStructureMode =
|
90
91
|
(fetchMode: FETCH_STRUCTURE_MODE): (() => void) =>
|
91
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
|
+
};
|
92
102
|
if (fetchStructureState.fetchStructureMode !== fetchMode) {
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
:
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
type:
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
type:
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
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;
|
180
|
+
}
|
181
|
+
default:
|
182
|
+
return;
|
173
183
|
}
|
174
184
|
}
|
175
185
|
};
|
@@ -179,6 +189,9 @@ export const QueryBuilderFetchStructurePanel = observer(
|
|
179
189
|
<div className="panel__header">
|
180
190
|
<div className="panel__header__title">
|
181
191
|
<div className="panel__header__title__label">fetch structure</div>
|
192
|
+
<QueryBuilderPanelIssueCountBadge
|
193
|
+
issues={fetchStructureState.validationIssues}
|
194
|
+
/>
|
182
195
|
</div>
|
183
196
|
<div className="panel__header__actions">
|
184
197
|
{fetchStructureStateMode === FETCH_STRUCTURE_MODE.PROJECTION && (
|