@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
@@ -14,6 +14,7 @@
|
|
14
14
|
* limitations under the License.
|
15
15
|
*/
|
16
16
|
|
17
|
+
import { useState } from 'react';
|
17
18
|
import { observer } from 'mobx-react-lite';
|
18
19
|
import {
|
19
20
|
type TooltipPlacement,
|
@@ -37,15 +38,17 @@ import {
|
|
37
38
|
MenuContentItemIcon,
|
38
39
|
MenuContentItemLabel,
|
39
40
|
MoreVerticalIcon,
|
41
|
+
DragPreviewLayer,
|
42
|
+
useDragPreviewLayer,
|
40
43
|
} from '@finos/legend-art';
|
41
44
|
import {
|
42
45
|
type QueryBuilderFunctionsExplorerTreeNodeData,
|
43
46
|
type QueryBuilderFunctionsExplorerDragSource,
|
44
|
-
QUERY_BUILDER_FUNCTIONS_EXPLORER_TREE_DND_TYPE,
|
45
47
|
generateFunctionsExplorerTreeNodeData,
|
46
48
|
getFunctionsExplorerTreeNodeChildren,
|
49
|
+
QUERY_BUILDER_FUNCTION_DND_TYPE,
|
47
50
|
} from '../stores/QueryFunctionsExplorerState.js';
|
48
|
-
import { useDrag
|
51
|
+
import { useDrag } from 'react-dnd';
|
49
52
|
import {
|
50
53
|
ConcreteFunctionDefinition,
|
51
54
|
generateFunctionSignature,
|
@@ -54,8 +57,6 @@ import {
|
|
54
57
|
ROOT_PACKAGE_NAME,
|
55
58
|
getMultiplicityDescription,
|
56
59
|
} from '@finos/legend-graph';
|
57
|
-
import { getEmptyImage } from 'react-dnd-html5-backend';
|
58
|
-
import { useEffect, useState } from 'react';
|
59
60
|
import type { QueryBuilderState } from '../stores/QueryBuilderState.js';
|
60
61
|
|
61
62
|
const isDependencyTreeNode = (
|
@@ -134,53 +135,6 @@ const QueryBuilderFunctionInfoTooltip: React.FC<{
|
|
134
135
|
);
|
135
136
|
};
|
136
137
|
|
137
|
-
const QueryBuilderFunctionDragLayer = observer(
|
138
|
-
(props: { queryBuilderState: QueryBuilderState }) => {
|
139
|
-
const { itemType, item, isDragging, currentPosition } = useDragLayer(
|
140
|
-
(monitor) => ({
|
141
|
-
itemType:
|
142
|
-
monitor.getItemType() as QUERY_BUILDER_FUNCTIONS_EXPLORER_TREE_DND_TYPE,
|
143
|
-
item: monitor.getItem<QueryBuilderFunctionsExplorerDragSource | null>(),
|
144
|
-
isDragging: monitor.isDragging(),
|
145
|
-
initialOffset: monitor.getInitialSourceClientOffset(),
|
146
|
-
currentPosition: monitor.getClientOffset(),
|
147
|
-
}),
|
148
|
-
);
|
149
|
-
if (
|
150
|
-
!isDragging ||
|
151
|
-
!item ||
|
152
|
-
!Object.values(QUERY_BUILDER_FUNCTIONS_EXPLORER_TREE_DND_TYPE).includes(
|
153
|
-
itemType,
|
154
|
-
) ||
|
155
|
-
item.node.dndType ===
|
156
|
-
QUERY_BUILDER_FUNCTIONS_EXPLORER_TREE_DND_TYPE.PACKAGE
|
157
|
-
) {
|
158
|
-
return null;
|
159
|
-
}
|
160
|
-
return (
|
161
|
-
<div className="query-builder__functions-explorer__tree__drag-preview-layer">
|
162
|
-
<div
|
163
|
-
className="query-builder__functions-explorer__tree__drag-preview"
|
164
|
-
style={
|
165
|
-
!currentPosition
|
166
|
-
? { display: 'none' }
|
167
|
-
: {
|
168
|
-
transform: `translate(${currentPosition.x + 20}px, ${
|
169
|
-
currentPosition.y + 10
|
170
|
-
}px)`,
|
171
|
-
}
|
172
|
-
}
|
173
|
-
>
|
174
|
-
{generateFunctionSignature(
|
175
|
-
item.node.packageableElement as ConcreteFunctionDefinition,
|
176
|
-
true,
|
177
|
-
)}
|
178
|
-
</div>
|
179
|
-
</div>
|
180
|
-
);
|
181
|
-
},
|
182
|
-
);
|
183
|
-
|
184
138
|
const QueryBuilderFunctionsExplorerListEntry = observer(
|
185
139
|
(props: {
|
186
140
|
queryBuilderState: QueryBuilderState;
|
@@ -196,15 +150,12 @@ const QueryBuilderFunctionsExplorerListEntry = observer(
|
|
196
150
|
const functionSignature = generateFunctionSignature(element, true);
|
197
151
|
const [, dragConnector, dragPreviewConnector] = useDrag(
|
198
152
|
() => ({
|
199
|
-
type:
|
153
|
+
type: QUERY_BUILDER_FUNCTION_DND_TYPE,
|
200
154
|
item: { node: node },
|
201
155
|
}),
|
202
156
|
[node],
|
203
157
|
);
|
204
|
-
|
205
|
-
useEffect(() => {
|
206
|
-
dragPreviewConnector(getEmptyImage(), { captureDraggingState: true });
|
207
|
-
}, [dragPreviewConnector]);
|
158
|
+
useDragPreviewLayer(dragPreviewConnector);
|
208
159
|
|
209
160
|
return (
|
210
161
|
<div
|
@@ -263,6 +214,7 @@ const QueryBuilderFunctionsExplorerTreeNodeContainer = observer(
|
|
263
214
|
) : (
|
264
215
|
<div />
|
265
216
|
);
|
217
|
+
|
266
218
|
const iconPackageColor = isDependencyTreeNode(node)
|
267
219
|
? 'color--dependency'
|
268
220
|
: '';
|
@@ -278,23 +230,19 @@ const QueryBuilderFunctionsExplorerTreeNodeContainer = observer(
|
|
278
230
|
const selectNode = (): void => {
|
279
231
|
onNodeSelect?.(node);
|
280
232
|
};
|
281
|
-
const [, dragConnector, dragPreviewConnector] = useDrag
|
233
|
+
const [, dragConnector, dragPreviewConnector] = useDrag<{
|
234
|
+
node?: QueryBuilderFunctionsExplorerTreeNodeData;
|
235
|
+
}>(
|
282
236
|
() => ({
|
283
|
-
type:
|
284
|
-
|
285
|
-
? QUERY_BUILDER_FUNCTIONS_EXPLORER_TREE_DND_TYPE.FUNCTION
|
286
|
-
: QUERY_BUILDER_FUNCTIONS_EXPLORER_TREE_DND_TYPE.PACKAGE,
|
287
|
-
item: (): { node?: QueryBuilderFunctionsExplorerTreeNodeData } =>
|
237
|
+
type: QUERY_BUILDER_FUNCTION_DND_TYPE,
|
238
|
+
item: () =>
|
288
239
|
node.packageableElement instanceof ConcreteFunctionDefinition
|
289
240
|
? { node }
|
290
241
|
: {},
|
291
242
|
}),
|
292
243
|
[node],
|
293
244
|
);
|
294
|
-
|
295
|
-
useEffect(() => {
|
296
|
-
dragPreviewConnector(getEmptyImage(), { captureDraggingState: true });
|
297
|
-
}, [dragPreviewConnector]);
|
245
|
+
useDragPreviewLayer(dragPreviewConnector);
|
298
246
|
|
299
247
|
return (
|
300
248
|
<div>
|
@@ -522,8 +470,16 @@ export const QueryBuilderFunctionsExplorerPanel = observer(
|
|
522
470
|
</div>
|
523
471
|
</div>
|
524
472
|
<div className="panel__content query-builder__functions-explorer__content">
|
525
|
-
<
|
526
|
-
|
473
|
+
<DragPreviewLayer
|
474
|
+
labelGetter={(
|
475
|
+
item: QueryBuilderFunctionsExplorerDragSource,
|
476
|
+
): string =>
|
477
|
+
generateFunctionSignature(
|
478
|
+
item.node.packageableElement as ConcreteFunctionDefinition,
|
479
|
+
true,
|
480
|
+
)
|
481
|
+
}
|
482
|
+
types={[QUERY_BUILDER_FUNCTION_DND_TYPE]}
|
527
483
|
/>
|
528
484
|
{((showDependencyFuncions &&
|
529
485
|
(!queryFunctionsState.dependencyTreeData ||
|
@@ -16,7 +16,7 @@
|
|
16
16
|
|
17
17
|
import { useCallback } from 'react';
|
18
18
|
import { observer } from 'mobx-react-lite';
|
19
|
-
import {
|
19
|
+
import { useDrop } from 'react-dnd';
|
20
20
|
import {
|
21
21
|
type TreeNodeContainerProps,
|
22
22
|
clsx,
|
@@ -27,6 +27,8 @@ import {
|
|
27
27
|
TimesIcon,
|
28
28
|
CheckSquareIcon,
|
29
29
|
SquareIcon,
|
30
|
+
InfoCircleIcon,
|
31
|
+
PanelDropZone,
|
30
32
|
} from '@finos/legend-art';
|
31
33
|
import type { QueryBuilderState } from '../stores/QueryBuilderState.js';
|
32
34
|
import { QUERY_BUILDER_TEST_ID } from './QueryBuilder_TestID.js';
|
@@ -182,6 +184,9 @@ export const QueryBuilderGraphFetchTreeExplorer = observer(
|
|
182
184
|
<div className="panel__content__form__section__toggler__prompt">
|
183
185
|
Check graph fetch
|
184
186
|
</div>
|
187
|
+
<div className="query-builder-graph-fetch-tree__settings__hint-icon">
|
188
|
+
<InfoCircleIcon title="With this enabled, while executing, violations of constraints will reported as part of the result, rather than causing a failure" />
|
189
|
+
</div>
|
185
190
|
</div>
|
186
191
|
</div>
|
187
192
|
<div className="query-builder-graph-fetch-tree__container">
|
@@ -222,22 +227,23 @@ export const QueryBuilderGraphFetchTreePanel = observer(
|
|
222
227
|
},
|
223
228
|
[graphFetchState],
|
224
229
|
);
|
225
|
-
const [{
|
230
|
+
const [{ isDragOver }, dropTargetConnector] = useDrop<
|
231
|
+
QueryBuilderExplorerTreeDragSource,
|
232
|
+
void,
|
233
|
+
{ isDragOver: boolean }
|
234
|
+
>(
|
226
235
|
() => ({
|
227
236
|
accept: [
|
228
237
|
QUERY_BUILDER_EXPLORER_TREE_DND_TYPE.ENUM_PROPERTY,
|
229
238
|
QUERY_BUILDER_EXPLORER_TREE_DND_TYPE.PRIMITIVE_PROPERTY,
|
230
239
|
],
|
231
|
-
drop: (
|
232
|
-
item: QueryBuilderExplorerTreeDragSource,
|
233
|
-
monitor: DropTargetMonitor,
|
234
|
-
): void => {
|
240
|
+
drop: (item, monitor): void => {
|
235
241
|
if (!monitor.didDrop()) {
|
236
242
|
handleDrop(item);
|
237
243
|
} // prevent drop event propagation to accomondate for nested DnD
|
238
244
|
},
|
239
|
-
collect: (monitor)
|
240
|
-
|
245
|
+
collect: (monitor) => ({
|
246
|
+
isDragOver: monitor.isOver({ shallow: true }),
|
241
247
|
}),
|
242
248
|
}),
|
243
249
|
[handleDrop],
|
@@ -246,24 +252,27 @@ export const QueryBuilderGraphFetchTreePanel = observer(
|
|
246
252
|
return (
|
247
253
|
<div
|
248
254
|
data-testid={QUERY_BUILDER_TEST_ID.QUERY_BUILDER_GRAPH_FETCH}
|
249
|
-
className="panel__content
|
250
|
-
ref={dropConnector}
|
255
|
+
className="panel__content"
|
251
256
|
>
|
252
|
-
<
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
257
|
+
<PanelDropZone
|
258
|
+
isDragOver={isDragOver}
|
259
|
+
dropTargetConnector={dropTargetConnector}
|
260
|
+
>
|
261
|
+
{(!treeData || isGraphFetchTreeDataEmpty(treeData)) && (
|
262
|
+
<BlankPanelPlaceholder
|
263
|
+
text="Add a graph fetch property"
|
264
|
+
tooltipText="Drag and drop properties here"
|
265
|
+
/>
|
266
|
+
)}
|
267
|
+
{treeData && !isGraphFetchTreeDataEmpty(treeData) && (
|
268
|
+
<QueryBuilderGraphFetchTreeExplorer
|
269
|
+
graphFetchState={graphFetchState}
|
270
|
+
treeData={treeData}
|
271
|
+
isReadOnly={false}
|
272
|
+
updateTreeData={updateTreeData}
|
273
|
+
/>
|
274
|
+
)}
|
275
|
+
</PanelDropZone>
|
267
276
|
</div>
|
268
277
|
);
|
269
278
|
},
|
@@ -47,6 +47,7 @@ export const QueryBuilderLambdaEditor = observer(
|
|
47
47
|
disablePopUp?: boolean | undefined;
|
48
48
|
useBaseTextEditorSettings?: boolean | undefined;
|
49
49
|
hideErrorBar?: boolean | undefined;
|
50
|
+
onEditorFocusEventHandler?: (() => void) | undefined;
|
50
51
|
}) => {
|
51
52
|
const {
|
52
53
|
queryBuilderState,
|
@@ -62,6 +63,7 @@ export const QueryBuilderLambdaEditor = observer(
|
|
62
63
|
disablePopUp,
|
63
64
|
useBaseTextEditorSettings,
|
64
65
|
hideErrorBar,
|
66
|
+
onEditorFocusEventHandler,
|
65
67
|
} = props;
|
66
68
|
const applicationStore = useApplicationStore();
|
67
69
|
const backdropSetter = useCallback(
|
@@ -111,6 +113,7 @@ export const QueryBuilderLambdaEditor = observer(
|
|
111
113
|
useBaseTextEditorSettings={useBaseTextEditorSettings}
|
112
114
|
hideErrorBar={hideErrorBar}
|
113
115
|
onKeyDownEventHandlers={onKeyDownEventHandlers}
|
116
|
+
onEditorFocusEventHandler={onEditorFocusEventHandler}
|
114
117
|
/>
|
115
118
|
);
|
116
119
|
},
|
@@ -18,7 +18,7 @@ import { observer } from 'mobx-react-lite';
|
|
18
18
|
import type { QueryBuilderState } from '../stores/QueryBuilderState.js';
|
19
19
|
import {
|
20
20
|
type QueryBuilderParameterDragSource,
|
21
|
-
|
21
|
+
QUERY_BUILDER_PARAMETER_DND_TYPE,
|
22
22
|
} from '../stores/QueryParametersState.js';
|
23
23
|
import { useCallback } from 'react';
|
24
24
|
import {
|
@@ -32,9 +32,9 @@ import {
|
|
32
32
|
TYPICAL_MULTIPLICITY_TYPE,
|
33
33
|
} from '@finos/legend-graph';
|
34
34
|
import { guaranteeNonNullable } from '@finos/legend-shared';
|
35
|
-
import {
|
35
|
+
import { useDrop } from 'react-dnd';
|
36
36
|
import { VariableExpressionViewer } from './QueryBuilderParameterPanel.js';
|
37
|
-
import { Dialog } from '@finos/legend-art';
|
37
|
+
import { Dialog, PanelEntryDropZonePlaceholder } from '@finos/legend-art';
|
38
38
|
import { generateDefaultValueForPrimitiveType } from '../stores/QueryBuilderValueSpecificationBuilderHelper.js';
|
39
39
|
import { BasicValueSpecificationEditor } from '@finos/legend-application';
|
40
40
|
|
@@ -58,13 +58,14 @@ const MilestoningParameterEditor = observer(
|
|
58
58
|
},
|
59
59
|
[queryBuilderState, stereotype],
|
60
60
|
);
|
61
|
-
const [{ isMilestoningParameterValueDragOver }, dropConnector] = useDrop
|
61
|
+
const [{ isMilestoningParameterValueDragOver }, dropConnector] = useDrop<
|
62
|
+
QueryBuilderParameterDragSource,
|
63
|
+
void,
|
64
|
+
{ isMilestoningParameterValueDragOver: boolean }
|
65
|
+
>(
|
62
66
|
() => ({
|
63
|
-
accept: [
|
64
|
-
drop: (
|
65
|
-
item: QueryBuilderParameterDragSource,
|
66
|
-
monitor: DropTargetMonitor,
|
67
|
-
): void => {
|
67
|
+
accept: [QUERY_BUILDER_PARAMETER_DND_TYPE],
|
68
|
+
drop: (item, monitor): void => {
|
68
69
|
if (!monitor.didDrop()) {
|
69
70
|
handleDrop(item);
|
70
71
|
}
|
@@ -114,32 +115,31 @@ const MilestoningParameterEditor = observer(
|
|
114
115
|
queryBuilderState.querySetupState.setProcessingDate(parameter);
|
115
116
|
}
|
116
117
|
};
|
118
|
+
|
117
119
|
return (
|
118
|
-
<div
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
:
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
resetValue={resetMilestoningParameter}
|
142
|
-
/>
|
120
|
+
<div ref={dropConnector} className="query-builder__parameter-editor">
|
121
|
+
<PanelEntryDropZonePlaceholder
|
122
|
+
showPlaceholder={isMilestoningParameterValueDragOver}
|
123
|
+
label="Change Milestoning Parameter Value"
|
124
|
+
className="query-builder__dnd__placeholder"
|
125
|
+
>
|
126
|
+
<BasicValueSpecificationEditor
|
127
|
+
valueSpecification={milestoningParameter}
|
128
|
+
graph={queryBuilderState.graphManagerState.graph}
|
129
|
+
setValueSpecification={(val: ValueSpecification): void =>
|
130
|
+
stereotype === MILESTONING_STEREOTYPE.BUSINESS_TEMPORAL
|
131
|
+
? queryBuilderState.querySetupState.setBusinessDate(val)
|
132
|
+
: queryBuilderState.querySetupState.setProcessingDate(val)
|
133
|
+
}
|
134
|
+
typeCheckOption={{
|
135
|
+
expectedType:
|
136
|
+
queryBuilderState.graphManagerState.graph.getPrimitiveType(
|
137
|
+
PRIMITIVE_TYPE.DATE,
|
138
|
+
),
|
139
|
+
}}
|
140
|
+
resetValue={resetMilestoningParameter}
|
141
|
+
/>
|
142
|
+
</PanelEntryDropZonePlaceholder>
|
143
143
|
</div>
|
144
144
|
);
|
145
145
|
},
|
@@ -0,0 +1,38 @@
|
|
1
|
+
/**
|
2
|
+
* Copyright (c) 2020-present, Goldman Sachs
|
3
|
+
*
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
* you may not use this file except in compliance with the License.
|
6
|
+
* You may obtain a copy of the License at
|
7
|
+
*
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
*
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
* See the License for the specific language governing permissions and
|
14
|
+
* limitations under the License.
|
15
|
+
*/
|
16
|
+
|
17
|
+
import { TimesCircleIcon } from '@finos/legend-art';
|
18
|
+
|
19
|
+
export const QueryBuilderPanelIssueCountBadge: React.FC<{
|
20
|
+
issues: string[] | undefined;
|
21
|
+
}> = (props) => {
|
22
|
+
const { issues } = props;
|
23
|
+
if (!issues) {
|
24
|
+
return null;
|
25
|
+
}
|
26
|
+
const labelText = `${issues.length} issue${issues.length > 1 ? 's' : ''}`;
|
27
|
+
return (
|
28
|
+
<div
|
29
|
+
className="query-builder-panel-issue-count-badge"
|
30
|
+
title={`Found ${labelText}:\n${issues
|
31
|
+
.map((issue) => `\u2022 ${issue}`)
|
32
|
+
.join('\n')}`}
|
33
|
+
>
|
34
|
+
<TimesCircleIcon className="query-builder-panel-issue-count-badge__icon" />
|
35
|
+
{labelText}
|
36
|
+
</div>
|
37
|
+
);
|
38
|
+
};
|
@@ -14,6 +14,7 @@
|
|
14
14
|
* limitations under the License.
|
15
15
|
*/
|
16
16
|
|
17
|
+
import { useState } from 'react';
|
17
18
|
import { observer } from 'mobx-react-lite';
|
18
19
|
import type { QueryBuilderState } from '../stores/QueryBuilderState.js';
|
19
20
|
import {
|
@@ -25,12 +26,13 @@ import {
|
|
25
26
|
DollarIcon,
|
26
27
|
PlusIcon,
|
27
28
|
InputWithInlineValidation,
|
29
|
+
DragPreviewLayer,
|
30
|
+
useDragPreviewLayer,
|
28
31
|
} from '@finos/legend-art';
|
29
32
|
import {
|
30
33
|
type QueryBuilderParameterDragSource,
|
31
|
-
|
34
|
+
QUERY_BUILDER_PARAMETER_DND_TYPE,
|
32
35
|
} from '../stores/QueryParametersState.js';
|
33
|
-
import { useEffect, useState } from 'react';
|
34
36
|
import {
|
35
37
|
type Type,
|
36
38
|
MULTIPLICITY_INFINITE,
|
@@ -46,10 +48,10 @@ import {
|
|
46
48
|
variableExpression_setName,
|
47
49
|
LambdaParameterState,
|
48
50
|
LambdaParameterValuesEditor,
|
49
|
-
|
51
|
+
getPackageableElementOptionFormatter,
|
52
|
+
useApplicationStore,
|
50
53
|
} from '@finos/legend-application';
|
51
|
-
import { useDrag
|
52
|
-
import { getEmptyImage } from 'react-dnd-html5-backend';
|
54
|
+
import { useDrag } from 'react-dnd';
|
53
55
|
import { generateEnumerableNameFromToken } from '@finos/legend-shared';
|
54
56
|
import { DEFAULT_VARIABLE_NAME } from '../QueryBuilder_Const.js';
|
55
57
|
|
@@ -60,6 +62,7 @@ const VariableExpressionEditor = observer(
|
|
60
62
|
}) => {
|
61
63
|
// main state
|
62
64
|
const { queryBuilderState, lambdaParameterState } = props;
|
65
|
+
const applicationStore = useApplicationStore();
|
63
66
|
const queryParametersState = queryBuilderState.queryParametersState;
|
64
67
|
const isCreating =
|
65
68
|
!queryParametersState.parameterStates.includes(lambdaParameterState);
|
@@ -145,6 +148,7 @@ const VariableExpressionEditor = observer(
|
|
145
148
|
}
|
146
149
|
close();
|
147
150
|
};
|
151
|
+
|
148
152
|
return (
|
149
153
|
<Dialog
|
150
154
|
open={Boolean(lambdaParameterState)}
|
@@ -192,9 +196,9 @@ const VariableExpressionEditor = observer(
|
|
192
196
|
options={typeOptions}
|
193
197
|
onChange={changeType}
|
194
198
|
value={selectedType}
|
195
|
-
darkMode={
|
196
|
-
formatOptionLabel={
|
197
|
-
darkMode:
|
199
|
+
darkMode={!applicationStore.TEMPORARY__isLightThemeEnabled}
|
200
|
+
formatOptionLabel={getPackageableElementOptionFormatter({
|
201
|
+
darkMode: !applicationStore.TEMPORARY__isLightThemeEnabled,
|
198
202
|
})}
|
199
203
|
/>
|
200
204
|
</div>
|
@@ -242,47 +246,6 @@ const VariableExpressionEditor = observer(
|
|
242
246
|
},
|
243
247
|
);
|
244
248
|
|
245
|
-
const QueryBuilderParameterDragLayer = observer(
|
246
|
-
(props: { queryBuilderState: QueryBuilderState }) => {
|
247
|
-
const { itemType, item, isDragging, currentPosition } = useDragLayer(
|
248
|
-
(monitor) => ({
|
249
|
-
itemType:
|
250
|
-
monitor.getItemType() as QUERY_BUILDER_PARAMETER_TREE_DND_TYPE,
|
251
|
-
item: monitor.getItem<QueryBuilderParameterDragSource | null>(),
|
252
|
-
isDragging: monitor.isDragging(),
|
253
|
-
initialOffset: monitor.getInitialSourceClientOffset(),
|
254
|
-
currentPosition: monitor.getClientOffset(),
|
255
|
-
}),
|
256
|
-
);
|
257
|
-
|
258
|
-
if (
|
259
|
-
!isDragging ||
|
260
|
-
!item ||
|
261
|
-
!Object.values(QUERY_BUILDER_PARAMETER_TREE_DND_TYPE).includes(itemType)
|
262
|
-
) {
|
263
|
-
return null;
|
264
|
-
}
|
265
|
-
return (
|
266
|
-
<div className="query-builder__parameters__drag-preview-layer">
|
267
|
-
<div
|
268
|
-
className="query-builder__parameters__drag-preview"
|
269
|
-
style={
|
270
|
-
!currentPosition
|
271
|
-
? { display: 'none' }
|
272
|
-
: {
|
273
|
-
transform: `translate(${currentPosition.x + 20}px, ${
|
274
|
-
currentPosition.y + 10
|
275
|
-
}px)`,
|
276
|
-
}
|
277
|
-
}
|
278
|
-
>
|
279
|
-
{item.variable.variableName}
|
280
|
-
</div>
|
281
|
-
</div>
|
282
|
-
);
|
283
|
-
},
|
284
|
-
);
|
285
|
-
|
286
249
|
export const VariableExpressionViewer = observer(
|
287
250
|
(props: {
|
288
251
|
queryBuilderState: QueryBuilderState;
|
@@ -301,18 +264,23 @@ export const VariableExpressionViewer = observer(
|
|
301
264
|
queryParameterState.removeParameter(variableExpressionState);
|
302
265
|
const [, dragConnector, dragPreviewConnector] = useDrag(
|
303
266
|
() => ({
|
304
|
-
type:
|
267
|
+
type: QUERY_BUILDER_PARAMETER_DND_TYPE,
|
305
268
|
item: { variable: variableExpressionState },
|
306
269
|
}),
|
307
270
|
[variableExpressionState],
|
308
271
|
);
|
309
|
-
|
310
|
-
|
311
|
-
dragPreviewConnector(getEmptyImage(), { captureDraggingState: true });
|
312
|
-
}, [dragPreviewConnector]);
|
272
|
+
useDragPreviewLayer(dragPreviewConnector);
|
273
|
+
|
313
274
|
return (
|
314
275
|
<div className="query-builder__parameters__parameter" ref={dragConnector}>
|
315
|
-
<
|
276
|
+
<DragPreviewLayer
|
277
|
+
labelGetter={(item: QueryBuilderParameterDragSource): string =>
|
278
|
+
item.variable.variableName === ''
|
279
|
+
? '(unknown)'
|
280
|
+
: item.variable.variableName
|
281
|
+
}
|
282
|
+
types={[QUERY_BUILDER_PARAMETER_DND_TYPE]}
|
283
|
+
/>
|
316
284
|
<div className="query-builder__parameters__parameter__content">
|
317
285
|
<div className="query-builder__parameters__parameter__icon">
|
318
286
|
<div className="query-builder__parameters__parameter-icon">
|