@finos/legend-query-builder 4.15.2 → 4.15.4
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/__lib__/QueryBuilderTesting.d.ts +1 -0
- package/lib/__lib__/QueryBuilderTesting.d.ts.map +1 -1
- package/lib/__lib__/QueryBuilderTesting.js +2 -0
- package/lib/__lib__/QueryBuilderTesting.js.map +1 -1
- package/lib/components/data-cube/QueryBuilderDataCube.d.ts.map +1 -1
- package/lib/components/data-cube/QueryBuilderDataCube.js +6 -7
- package/lib/components/data-cube/QueryBuilderDataCube.js.map +1 -1
- package/lib/components/explorer/QueryBuilderFunctionsExplorerPanel.d.ts.map +1 -1
- package/lib/components/explorer/QueryBuilderFunctionsExplorerPanel.js +38 -33
- package/lib/components/explorer/QueryBuilderFunctionsExplorerPanel.js.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderTDSPanel.d.ts.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderTDSPanel.js +12 -5
- package/lib/components/fetch-structure/QueryBuilderTDSPanel.js.map +1 -1
- package/lib/components/filter/QueryBuilderFilterPanel.js +2 -2
- package/lib/components/filter/QueryBuilderFilterPanel.js.map +1 -1
- package/lib/components/result/tds/QueryBuilderTDSGridResult.d.ts.map +1 -1
- package/lib/components/result/tds/QueryBuilderTDSGridResult.js +4 -3
- package/lib/components/result/tds/QueryBuilderTDSGridResult.js.map +1 -1
- package/lib/components/result/tds/QueryBuilderTDSResultShared.d.ts +2 -2
- package/lib/components/result/tds/QueryBuilderTDSResultShared.d.ts.map +1 -1
- package/lib/components/result/tds/QueryBuilderTDSResultShared.js +157 -19
- package/lib/components/result/tds/QueryBuilderTDSResultShared.js.map +1 -1
- package/lib/index.css +2 -2
- package/lib/index.css.map +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js.map +1 -1
- package/lib/package.json +1 -1
- package/lib/stores/QueryBuilderState.d.ts +6 -1
- package/lib/stores/QueryBuilderState.d.ts.map +1 -1
- package/lib/stores/QueryBuilderState.js +3 -0
- package/lib/stores/QueryBuilderState.js.map +1 -1
- package/lib/stores/explorer/QueryFunctionsExplorerState.d.ts +17 -6
- package/lib/stores/explorer/QueryFunctionsExplorerState.d.ts.map +1 -1
- package/lib/stores/explorer/QueryFunctionsExplorerState.js +142 -59
- package/lib/stores/explorer/QueryFunctionsExplorerState.js.map +1 -1
- package/lib/stores/filter/QueryBuilderFilterOperator.d.ts +1 -1
- package/lib/stores/filter/QueryBuilderFilterOperator.d.ts.map +1 -1
- package/lib/stores/filter/QueryBuilderFilterState.d.ts +1 -1
- package/lib/stores/filter/QueryBuilderFilterState.d.ts.map +1 -1
- package/lib/stores/filter/QueryBuilderFilterState.js +8 -3
- package/lib/stores/filter/QueryBuilderFilterState.js.map +1 -1
- package/lib/stores/filter/QueryBuilderFilterStateBuilder.js +1 -1
- package/lib/stores/filter/QueryBuilderFilterStateBuilder.js.map +1 -1
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_Contain.d.ts +2 -2
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_Contain.d.ts.map +1 -1
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_Contain.js +3 -3
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_Contain.js.map +1 -1
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_EndWith.d.ts +2 -2
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_EndWith.d.ts.map +1 -1
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_EndWith.js +3 -3
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_EndWith.js.map +1 -1
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_Equal.d.ts +2 -2
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_Equal.d.ts.map +1 -1
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_Equal.js +2 -2
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_Equal.js.map +1 -1
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_GreaterThan.d.ts +1 -1
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_GreaterThan.d.ts.map +1 -1
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_GreaterThan.js +2 -2
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_GreaterThan.js.map +1 -1
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_GreaterThanEqual.d.ts +1 -1
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_GreaterThanEqual.d.ts.map +1 -1
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_GreaterThanEqual.js +2 -2
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_GreaterThanEqual.js.map +1 -1
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_In.d.ts +2 -2
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_In.d.ts.map +1 -1
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_In.js +2 -2
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_In.js.map +1 -1
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_IsEmpty.d.ts +2 -2
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_IsEmpty.d.ts.map +1 -1
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_IsEmpty.js +2 -2
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_IsEmpty.js.map +1 -1
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_LessThan.d.ts +1 -1
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_LessThan.d.ts.map +1 -1
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_LessThan.js +2 -2
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_LessThan.js.map +1 -1
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_LessThanEqual.d.ts +1 -1
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_LessThanEqual.d.ts.map +1 -1
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_LessThanEqual.js +2 -2
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_LessThanEqual.js.map +1 -1
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_StartWith.d.ts +2 -2
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_StartWith.d.ts.map +1 -1
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_StartWith.js +3 -3
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_StartWith.js.map +1 -1
- package/package.json +6 -6
- package/src/__lib__/QueryBuilderTesting.ts +2 -0
- package/src/components/data-cube/QueryBuilderDataCube.tsx +15 -25
- package/src/components/explorer/QueryBuilderFunctionsExplorerPanel.tsx +63 -70
- package/src/components/fetch-structure/QueryBuilderTDSPanel.tsx +23 -11
- package/src/components/filter/QueryBuilderFilterPanel.tsx +2 -2
- package/src/components/result/tds/QueryBuilderTDSGridResult.tsx +7 -3
- package/src/components/result/tds/QueryBuilderTDSResultShared.tsx +334 -26
- package/src/index.ts +1 -0
- package/src/stores/QueryBuilderState.ts +12 -0
- package/src/stores/explorer/QueryFunctionsExplorerState.ts +227 -94
- package/src/stores/filter/QueryBuilderFilterOperator.ts +1 -1
- package/src/stores/filter/QueryBuilderFilterState.ts +10 -5
- package/src/stores/filter/QueryBuilderFilterStateBuilder.ts +1 -1
- package/src/stores/filter/operators/QueryBuilderFilterOperator_Contain.ts +3 -5
- package/src/stores/filter/operators/QueryBuilderFilterOperator_EndWith.ts +3 -5
- package/src/stores/filter/operators/QueryBuilderFilterOperator_Equal.ts +2 -2
- package/src/stores/filter/operators/QueryBuilderFilterOperator_GreaterThan.ts +2 -4
- package/src/stores/filter/operators/QueryBuilderFilterOperator_GreaterThanEqual.ts +2 -4
- package/src/stores/filter/operators/QueryBuilderFilterOperator_In.ts +2 -2
- package/src/stores/filter/operators/QueryBuilderFilterOperator_IsEmpty.ts +2 -2
- package/src/stores/filter/operators/QueryBuilderFilterOperator_LessThan.ts +2 -4
- package/src/stores/filter/operators/QueryBuilderFilterOperator_LessThanEqual.ts +2 -4
- package/src/stores/filter/operators/QueryBuilderFilterOperator_StartWith.ts +3 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueryBuilderFilterOperator_LessThanEqual.js","sourceRoot":"","sources":["../../../../src/stores/filter/operators/QueryBuilderFilterOperator_LessThanEqual.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAMH,OAAO,EAAE,0BAA0B,EAAE,MAAM,kCAAkC,CAAC;AAC9E,OAAO,EACL,cAAc,GAIf,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAEL,yBAAyB,EACzB,SAAS,GACV,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,yBAAyB,EACzB,8BAA8B,GAC/B,MAAM,0DAA0D,CAAC;AAClE,OAAO,EAAE,iCAAiC,EAAE,MAAM,8CAA8C,CAAC;AACjG,OAAO,EAAE,6BAA6B,EAAE,MAAM,+CAA+C,CAAC;AAC9F,OAAO,EAAE,kCAAkC,EAAE,MAAM,qCAAqC,CAAC;AACzF,OAAO,EAAE,yBAAyB,EAAE,MAAM,gDAAgD,CAAC;AAE3F,MAAM,OAAO,wCACX,SAAQ,0BAA0B;IAGlC,QAAQ
|
|
1
|
+
{"version":3,"file":"QueryBuilderFilterOperator_LessThanEqual.js","sourceRoot":"","sources":["../../../../src/stores/filter/operators/QueryBuilderFilterOperator_LessThanEqual.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,7 +18,7 @@ import { QueryBuilderFilterOperator } from '../QueryBuilderFilterOperator.js';
|
|
|
18
18
|
import { type ValueSpecification, type SimpleFunctionExpression } from '@finos/legend-graph';
|
|
19
19
|
import { type Hashable } from '@finos/legend-shared';
|
|
20
20
|
export declare class QueryBuilderFilterOperator_StartWith extends QueryBuilderFilterOperator implements Hashable {
|
|
21
|
-
getLabel(
|
|
21
|
+
getLabel(): string;
|
|
22
22
|
isCompatibleWithFilterConditionProperty(filterConditionState: FilterConditionState): boolean;
|
|
23
23
|
isCompatibleWithFilterConditionValue(filterConditionState: FilterConditionState): boolean;
|
|
24
24
|
getDefaultFilterConditionValue(filterConditionState: FilterConditionState): ValueSpecification | undefined;
|
|
@@ -27,7 +27,7 @@ export declare class QueryBuilderFilterOperator_StartWith extends QueryBuilderFi
|
|
|
27
27
|
get hashCode(): string;
|
|
28
28
|
}
|
|
29
29
|
export declare class QueryBuilderFilterOperator_NotStartWith extends QueryBuilderFilterOperator_StartWith {
|
|
30
|
-
getLabel(
|
|
30
|
+
getLabel(): string;
|
|
31
31
|
buildFilterConditionExpression(filterConditionState: FilterConditionState, lambdaParameterName?: string | undefined): ValueSpecification;
|
|
32
32
|
buildFilterConditionState(filterState: QueryBuilderFilterState, expression: SimpleFunctionExpression): FilterConditionState | undefined;
|
|
33
33
|
get hashCode(): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueryBuilderFilterOperator_StartWith.d.ts","sourceRoot":"","sources":["../../../../src/stores/filter/operators/QueryBuilderFilterOperator_StartWith.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EACV,uBAAuB,EACvB,oBAAoB,EACrB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,0BAA0B,EAAE,MAAM,kCAAkC,CAAC;AAC9E,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,wBAAwB,EAE9B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,KAAK,QAAQ,EAGd,MAAM,sBAAsB,CAAC;AAa9B,qBAAa,oCACX,SAAQ,0BACR,YAAW,QAAQ;IAEnB,QAAQ,
|
|
1
|
+
{"version":3,"file":"QueryBuilderFilterOperator_StartWith.d.ts","sourceRoot":"","sources":["../../../../src/stores/filter/operators/QueryBuilderFilterOperator_StartWith.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EACV,uBAAuB,EACvB,oBAAoB,EACrB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,0BAA0B,EAAE,MAAM,kCAAkC,CAAC;AAC9E,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,wBAAwB,EAE9B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,KAAK,QAAQ,EAGd,MAAM,sBAAsB,CAAC;AAa9B,qBAAa,oCACX,SAAQ,0BACR,YAAW,QAAQ;IAEnB,QAAQ,IAAI,MAAM;IAIlB,uCAAuC,CACrC,oBAAoB,EAAE,oBAAoB,GACzC,OAAO;IAQV,oCAAoC,CAClC,oBAAoB,EAAE,oBAAoB,GACzC,OAAO;IASV,8BAA8B,CAC5B,oBAAoB,EAAE,oBAAoB,GACzC,kBAAkB,GAAG,SAAS;IAsBjC,8BAA8B,CAC5B,oBAAoB,EAAE,oBAAoB,EAC1C,mBAAmB,CAAC,EAAE,MAAM,GAAG,SAAS,GACvC,kBAAkB;IAQrB,yBAAyB,CACvB,WAAW,EAAE,uBAAuB,EACpC,UAAU,EAAE,wBAAwB,GACnC,oBAAoB,GAAG,SAAS;IASnC,IAAI,QAAQ,IAAI,MAAM,CAIrB;CACF;AAED,qBAAa,uCAAwC,SAAQ,oCAAoC;IACtF,QAAQ,IAAI,MAAM;IAIlB,8BAA8B,CACrC,oBAAoB,EAAE,oBAAoB,EAC1C,mBAAmB,CAAC,EAAE,MAAM,GAAG,SAAS,GACvC,kBAAkB;IASZ,yBAAyB,CAChC,WAAW,EAAE,uBAAuB,EACpC,UAAU,EAAE,wBAAwB,GACnC,oBAAoB,GAAG,SAAS;IAOnC,IAAa,QAAQ,IAAI,MAAM,CAI9B;CACF"}
|
|
@@ -22,7 +22,7 @@ import { buildNotExpression, unwrapNotExpression, } from '../../QueryBuilderValu
|
|
|
22
22
|
import { QUERY_BUILDER_STATE_HASH_STRUCTURE } from '../../QueryBuilderStateHashUtils.js';
|
|
23
23
|
import { buildDefaultInstanceValue } from '../../shared/ValueSpecificationEditorHelper.js';
|
|
24
24
|
export class QueryBuilderFilterOperator_StartWith extends QueryBuilderFilterOperator {
|
|
25
|
-
getLabel(
|
|
25
|
+
getLabel() {
|
|
26
26
|
return 'starts with';
|
|
27
27
|
}
|
|
28
28
|
isCompatibleWithFilterConditionProperty(filterConditionState) {
|
|
@@ -47,7 +47,7 @@ export class QueryBuilderFilterOperator_StartWith extends QueryBuilderFilterOper
|
|
|
47
47
|
.INTERNAL__enableInitializingDefaultSimpleExpressionValue);
|
|
48
48
|
}
|
|
49
49
|
default:
|
|
50
|
-
throw new UnsupportedOperationError(`Can't get default value for filter operator '${this.getLabel(
|
|
50
|
+
throw new UnsupportedOperationError(`Can't get default value for filter operator '${this.getLabel()}' when the LHS property is of type '${propertyType.path}'`);
|
|
51
51
|
}
|
|
52
52
|
}
|
|
53
53
|
buildFilterConditionExpression(filterConditionState, lambdaParameterName) {
|
|
@@ -63,7 +63,7 @@ export class QueryBuilderFilterOperator_StartWith extends QueryBuilderFilterOper
|
|
|
63
63
|
}
|
|
64
64
|
}
|
|
65
65
|
export class QueryBuilderFilterOperator_NotStartWith extends QueryBuilderFilterOperator_StartWith {
|
|
66
|
-
getLabel(
|
|
66
|
+
getLabel() {
|
|
67
67
|
return `doesn't start with`;
|
|
68
68
|
}
|
|
69
69
|
buildFilterConditionExpression(filterConditionState, lambdaParameterName) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueryBuilderFilterOperator_StartWith.js","sourceRoot":"","sources":["../../../../src/stores/filter/operators/QueryBuilderFilterOperator_StartWith.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAMH,OAAO,EAAE,0BAA0B,EAAE,MAAM,kCAAkC,CAAC;AAC9E,OAAO,EACL,cAAc,EAGd,aAAa,GACd,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAEL,yBAAyB,EACzB,SAAS,GACV,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,yBAAyB,EACzB,8BAA8B,GAC/B,MAAM,0DAA0D,CAAC;AAClE,OAAO,EAAE,iCAAiC,EAAE,MAAM,8CAA8C,CAAC;AACjG,OAAO,EACL,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,+CAA+C,CAAC;AACvD,OAAO,EAAE,kCAAkC,EAAE,MAAM,qCAAqC,CAAC;AACzF,OAAO,EAAE,yBAAyB,EAAE,MAAM,gDAAgD,CAAC;AAE3F,MAAM,OAAO,oCACX,SAAQ,0BAA0B;IAGlC,QAAQ
|
|
1
|
+
{"version":3,"file":"QueryBuilderFilterOperator_StartWith.js","sourceRoot":"","sources":["../../../../src/stores/filter/operators/QueryBuilderFilterOperator_StartWith.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@finos/legend-query-builder",
|
|
3
|
-
"version": "4.15.
|
|
3
|
+
"version": "4.15.4",
|
|
4
4
|
"description": "Legend query builder core",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"legend",
|
|
@@ -44,11 +44,11 @@
|
|
|
44
44
|
"dependencies": {
|
|
45
45
|
"@finos/legend-application": "16.0.3",
|
|
46
46
|
"@finos/legend-art": "7.1.62",
|
|
47
|
-
"@finos/legend-code-editor": "2.0.
|
|
48
|
-
"@finos/legend-data-cube": "0.0.
|
|
49
|
-
"@finos/legend-graph": "31.10.
|
|
50
|
-
"@finos/legend-lego": "2.0.
|
|
51
|
-
"@finos/legend-server-depot": "6.0.
|
|
47
|
+
"@finos/legend-code-editor": "2.0.5",
|
|
48
|
+
"@finos/legend-data-cube": "0.0.10",
|
|
49
|
+
"@finos/legend-graph": "31.10.39",
|
|
50
|
+
"@finos/legend-lego": "2.0.7",
|
|
51
|
+
"@finos/legend-server-depot": "6.0.63",
|
|
52
52
|
"@finos/legend-shared": "10.0.57",
|
|
53
53
|
"@finos/legend-storage": "3.0.107",
|
|
54
54
|
"@testing-library/dom": "10.4.0",
|
|
@@ -53,6 +53,8 @@ export enum QUERY_BUILDER_TEST_ID {
|
|
|
53
53
|
QUERY_BUILDER_PARAMETERS = 'query-builder__parameters',
|
|
54
54
|
// constant panel
|
|
55
55
|
QUERY_BUILDER_CONSTANTS = 'query-builder__constants',
|
|
56
|
+
// function panel
|
|
57
|
+
QUERY_BUILDER_FUNCTIONS = 'query-builder__functions',
|
|
56
58
|
// other
|
|
57
59
|
QUERY_BUILDER_TOOLTIP_ICON = 'query-builder__tooltip__icon',
|
|
58
60
|
// result panel
|
|
@@ -21,12 +21,11 @@ import { QueryBuilderDataCubeApplicationEngine } from '../../stores/data-cube/Qu
|
|
|
21
21
|
import {
|
|
22
22
|
clsx,
|
|
23
23
|
Dialog,
|
|
24
|
-
EmptyWindowRestoreIcon,
|
|
25
24
|
Modal,
|
|
25
|
+
ModalFooter,
|
|
26
|
+
ModalFooterButton,
|
|
26
27
|
TimesIcon,
|
|
27
|
-
WindowMaximizeIcon,
|
|
28
28
|
} from '@finos/legend-art';
|
|
29
|
-
import { useState } from 'react';
|
|
30
29
|
import { createDataCubeEngineFromQueryBuilder } from '../../stores/data-cube/QueryBuilderDataCubeEngineHelper.js';
|
|
31
30
|
|
|
32
31
|
const QueryBuilderDataCube = observer(
|
|
@@ -55,37 +54,25 @@ const QueryBuilderDataCube = observer(
|
|
|
55
54
|
export const QueryBuilderDataCubeDialog = observer(
|
|
56
55
|
(props: { queryBuilderState: QueryBuilderState }) => {
|
|
57
56
|
const { queryBuilderState } = props;
|
|
58
|
-
const [isMaximized, setIsMaximized] = useState(false);
|
|
59
|
-
const toggleMaximize = (): void => setIsMaximized(!isMaximized);
|
|
60
57
|
const closeModal = () => queryBuilderState.setIsCubeEnabled(false);
|
|
61
58
|
return (
|
|
62
59
|
<Dialog
|
|
63
60
|
open={true}
|
|
64
61
|
onClose={closeModal}
|
|
65
|
-
classes={{
|
|
62
|
+
classes={{
|
|
63
|
+
root: 'editor-modal__root-container',
|
|
64
|
+
container: 'editor-modal__container',
|
|
65
|
+
paper: 'editor-modal__content',
|
|
66
|
+
}}
|
|
66
67
|
>
|
|
67
68
|
<Modal
|
|
68
69
|
darkMode={false}
|
|
69
|
-
className={clsx('editor-modal query-
|
|
70
|
-
'query-builder__dialog--expanded': isMaximized,
|
|
71
|
-
})}
|
|
70
|
+
className={clsx('editor-modal query-builder-data-cube__dialog')}
|
|
72
71
|
>
|
|
73
|
-
<div className="query-
|
|
74
|
-
<div className="query-
|
|
72
|
+
<div className="query-builder-data-cube__dialog__header">
|
|
73
|
+
<div className="query-builder-data-cube__dialog__header__actions">
|
|
75
74
|
<button
|
|
76
|
-
className="query-
|
|
77
|
-
tabIndex={-1}
|
|
78
|
-
onClick={toggleMaximize}
|
|
79
|
-
title={isMaximized ? 'Minimize' : 'Maximize'}
|
|
80
|
-
>
|
|
81
|
-
{isMaximized ? (
|
|
82
|
-
<EmptyWindowRestoreIcon />
|
|
83
|
-
) : (
|
|
84
|
-
<WindowMaximizeIcon />
|
|
85
|
-
)}
|
|
86
|
-
</button>
|
|
87
|
-
<button
|
|
88
|
-
className="query-builder__dialog__header__action"
|
|
75
|
+
className="query-builder-data-cube__dialog__header__action"
|
|
89
76
|
tabIndex={-1}
|
|
90
77
|
onClick={closeModal}
|
|
91
78
|
title="Close"
|
|
@@ -94,9 +81,12 @@ export const QueryBuilderDataCubeDialog = observer(
|
|
|
94
81
|
</button>
|
|
95
82
|
</div>
|
|
96
83
|
</div>
|
|
97
|
-
<div className="query-
|
|
84
|
+
<div className="query-builder-data-cube__dialog__content">
|
|
98
85
|
<QueryBuilderDataCube queryBuilderState={queryBuilderState} />
|
|
99
86
|
</div>
|
|
87
|
+
<ModalFooter>
|
|
88
|
+
<ModalFooterButton onClick={closeModal}>Close</ModalFooterButton>
|
|
89
|
+
</ModalFooter>
|
|
100
90
|
</Modal>
|
|
101
91
|
</Dialog>
|
|
102
92
|
);
|
|
@@ -44,16 +44,14 @@ import {
|
|
|
44
44
|
import {
|
|
45
45
|
type QueryBuilderFunctionsExplorerTreeNodeData,
|
|
46
46
|
type QueryBuilderFunctionsExplorerDragSource,
|
|
47
|
-
generateFunctionsExplorerTreeNodeData,
|
|
48
47
|
getFunctionsExplorerTreeNodeChildren,
|
|
49
48
|
QUERY_BUILDER_FUNCTION_DND_TYPE,
|
|
49
|
+
generateFunctionsExplorerTreeNodeDataFromFunctionAnalysisInfo,
|
|
50
50
|
} from '../../stores/explorer/QueryFunctionsExplorerState.js';
|
|
51
51
|
import { useDrag } from 'react-dnd';
|
|
52
52
|
import {
|
|
53
|
-
|
|
54
|
-
generateFunctionPrettyName,
|
|
53
|
+
type FunctionAnalysisInfo,
|
|
55
54
|
getElementRootPackage,
|
|
56
|
-
Package,
|
|
57
55
|
ROOT_PACKAGE_NAME,
|
|
58
56
|
getMultiplicityDescription,
|
|
59
57
|
CORE_PURE_PATH,
|
|
@@ -61,20 +59,22 @@ import {
|
|
|
61
59
|
} from '@finos/legend-graph';
|
|
62
60
|
import type { QueryBuilderState } from '../../stores/QueryBuilderState.js';
|
|
63
61
|
import { QueryBuilderTelemetryHelper } from '../../__lib__/QueryBuilderTelemetryHelper.js';
|
|
62
|
+
import { QUERY_BUILDER_TEST_ID } from '../../__lib__/QueryBuilderTesting.js';
|
|
64
63
|
|
|
65
64
|
const isDependencyTreeNode = (
|
|
66
65
|
node: QueryBuilderFunctionsExplorerTreeNodeData,
|
|
67
66
|
): boolean =>
|
|
68
|
-
|
|
69
|
-
|
|
67
|
+
node.package !== undefined &&
|
|
68
|
+
getElementRootPackage(node.package).name ===
|
|
69
|
+
ROOT_PACKAGE_NAME.PROJECT_DEPENDENCY_ROOT;
|
|
70
70
|
|
|
71
71
|
const QueryBuilderFunctionInfoTooltip: React.FC<{
|
|
72
|
-
element: ConcreteFunctionDefinition;
|
|
73
72
|
children: React.ReactElement;
|
|
74
73
|
placement?: TooltipPlacement | undefined;
|
|
74
|
+
functionInfo: FunctionAnalysisInfo;
|
|
75
75
|
}> = (props) => {
|
|
76
|
-
const {
|
|
77
|
-
const documentation =
|
|
76
|
+
const { children, placement, functionInfo } = props;
|
|
77
|
+
const documentation = functionInfo.taggedValues
|
|
78
78
|
.filter(
|
|
79
79
|
(taggedValue) =>
|
|
80
80
|
taggedValue.tag.ownerReference.value.path ===
|
|
@@ -83,6 +83,23 @@ const QueryBuilderFunctionInfoTooltip: React.FC<{
|
|
|
83
83
|
)
|
|
84
84
|
.map((taggedValue) => taggedValue.value);
|
|
85
85
|
|
|
86
|
+
const generateParameterCallString = (): string => {
|
|
87
|
+
if (
|
|
88
|
+
functionInfo.parameterInfoList.length &&
|
|
89
|
+
functionInfo.parameterInfoList.length > 0
|
|
90
|
+
) {
|
|
91
|
+
return functionInfo.parameterInfoList
|
|
92
|
+
.map(
|
|
93
|
+
(param) =>
|
|
94
|
+
`${param.name}: ${
|
|
95
|
+
param.type
|
|
96
|
+
}${getMultiplicityDescription(param.multiplicity)}`,
|
|
97
|
+
)
|
|
98
|
+
.join('; ');
|
|
99
|
+
}
|
|
100
|
+
return '';
|
|
101
|
+
};
|
|
102
|
+
|
|
86
103
|
return (
|
|
87
104
|
<Tooltip
|
|
88
105
|
arrow={true}
|
|
@@ -102,7 +119,7 @@ const QueryBuilderFunctionInfoTooltip: React.FC<{
|
|
|
102
119
|
Function Name
|
|
103
120
|
</div>
|
|
104
121
|
<div className="query-builder__tooltip__item__value">
|
|
105
|
-
{
|
|
122
|
+
{functionInfo.functionPath}
|
|
106
123
|
</div>
|
|
107
124
|
</div>
|
|
108
125
|
<div className="query-builder__tooltip__item">
|
|
@@ -110,14 +127,7 @@ const QueryBuilderFunctionInfoTooltip: React.FC<{
|
|
|
110
127
|
Parameters
|
|
111
128
|
</div>
|
|
112
129
|
<div className="query-builder__tooltip__item__value">
|
|
113
|
-
{
|
|
114
|
-
.map(
|
|
115
|
-
(param) =>
|
|
116
|
-
`${param.name}: ${
|
|
117
|
-
param.type.value.name
|
|
118
|
-
}${getMultiplicityDescription(param.multiplicity)}`,
|
|
119
|
-
)
|
|
120
|
-
.join('; ')}
|
|
130
|
+
{generateParameterCallString()}
|
|
121
131
|
</div>
|
|
122
132
|
</div>
|
|
123
133
|
{Boolean(documentation.length) && (
|
|
@@ -135,7 +145,7 @@ const QueryBuilderFunctionInfoTooltip: React.FC<{
|
|
|
135
145
|
Return Type
|
|
136
146
|
</div>
|
|
137
147
|
<div className="query-builder__tooltip__item__value">
|
|
138
|
-
{
|
|
148
|
+
{functionInfo.returnType}
|
|
139
149
|
</div>
|
|
140
150
|
</div>
|
|
141
151
|
</div>
|
|
@@ -147,20 +157,10 @@ const QueryBuilderFunctionInfoTooltip: React.FC<{
|
|
|
147
157
|
};
|
|
148
158
|
|
|
149
159
|
const QueryBuilderFunctionsExplorerListEntry = observer(
|
|
150
|
-
(props: {
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
}) => {
|
|
155
|
-
const { queryBuilderState, element, rootPackageName } = props;
|
|
156
|
-
const node = generateFunctionsExplorerTreeNodeData(
|
|
157
|
-
queryBuilderState,
|
|
158
|
-
element,
|
|
159
|
-
rootPackageName,
|
|
160
|
-
);
|
|
161
|
-
const functionPrettyName = generateFunctionPrettyName(element, {
|
|
162
|
-
fullPath: true,
|
|
163
|
-
});
|
|
160
|
+
(props: { element: FunctionAnalysisInfo }) => {
|
|
161
|
+
const { element } = props;
|
|
162
|
+
const node =
|
|
163
|
+
generateFunctionsExplorerTreeNodeDataFromFunctionAnalysisInfo(element);
|
|
164
164
|
const [, dragConnector, dragPreviewConnector] = useDrag(
|
|
165
165
|
() => ({
|
|
166
166
|
type: QUERY_BUILDER_FUNCTION_DND_TYPE,
|
|
@@ -183,15 +183,13 @@ const QueryBuilderFunctionsExplorerListEntry = observer(
|
|
|
183
183
|
</div>
|
|
184
184
|
<div
|
|
185
185
|
className="query-builder__functions-explorer__function__label"
|
|
186
|
-
title={functionPrettyName}
|
|
186
|
+
title={element.functionPrettyName}
|
|
187
187
|
>
|
|
188
|
-
{functionPrettyName}
|
|
188
|
+
{element.functionPrettyName}
|
|
189
189
|
</div>
|
|
190
190
|
</div>
|
|
191
191
|
<div className="query-builder__functions-explorer__function__actions">
|
|
192
|
-
<QueryBuilderFunctionInfoTooltip
|
|
193
|
-
element={node.packageableElement as ConcreteFunctionDefinition}
|
|
194
|
-
>
|
|
192
|
+
<QueryBuilderFunctionInfoTooltip functionInfo={element}>
|
|
195
193
|
<div className="query-builder__functions-explorer__function__action query-builder__functions-explorer__function__node__info">
|
|
196
194
|
<InfoCircleIcon />
|
|
197
195
|
</div>
|
|
@@ -212,11 +210,11 @@ const QueryBuilderFunctionsExplorerTreeNodeContainer = observer(
|
|
|
212
210
|
>,
|
|
213
211
|
) => {
|
|
214
212
|
const { node, level, stepPaddingInRem, onNodeSelect } = props;
|
|
215
|
-
const
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
213
|
+
const name = node.functionAnalysisInfo
|
|
214
|
+
? node.functionAnalysisInfo.functionPrettyName.split(
|
|
215
|
+
`${node.functionAnalysisInfo.packagePath}::`,
|
|
216
|
+
)[1]
|
|
217
|
+
: (node.package?.name ?? '');
|
|
220
218
|
const isExpandable = Boolean(node.childrenIds.length);
|
|
221
219
|
const nodeExpandIcon = isExpandable ? (
|
|
222
220
|
node.isOpen ? (
|
|
@@ -231,7 +229,7 @@ const QueryBuilderFunctionsExplorerTreeNodeContainer = observer(
|
|
|
231
229
|
const iconPackageColor = isDependencyTreeNode(node)
|
|
232
230
|
? 'color--dependency'
|
|
233
231
|
: '';
|
|
234
|
-
const nodeTypeIcon =
|
|
232
|
+
const nodeTypeIcon = node.package ? (
|
|
235
233
|
node.isOpen ? (
|
|
236
234
|
<FolderOpenIcon className={iconPackageColor} />
|
|
237
235
|
) : (
|
|
@@ -248,10 +246,7 @@ const QueryBuilderFunctionsExplorerTreeNodeContainer = observer(
|
|
|
248
246
|
}>(
|
|
249
247
|
() => ({
|
|
250
248
|
type: QUERY_BUILDER_FUNCTION_DND_TYPE,
|
|
251
|
-
item: () =>
|
|
252
|
-
node.packageableElement instanceof ConcreteFunctionDefinition
|
|
253
|
-
? { node }
|
|
254
|
-
: {},
|
|
249
|
+
item: () => (node.functionAnalysisInfo ? { node } : {}),
|
|
255
250
|
}),
|
|
256
251
|
[node],
|
|
257
252
|
);
|
|
@@ -289,10 +284,9 @@ const QueryBuilderFunctionsExplorerTreeNodeContainer = observer(
|
|
|
289
284
|
{name}
|
|
290
285
|
</div>
|
|
291
286
|
<div className="query-builder__functions-explorer__tree__node__actions">
|
|
292
|
-
{node.
|
|
293
|
-
ConcreteFunctionDefinition && (
|
|
287
|
+
{node.functionAnalysisInfo && (
|
|
294
288
|
<QueryBuilderFunctionInfoTooltip
|
|
295
|
-
|
|
289
|
+
functionInfo={node.functionAnalysisInfo}
|
|
296
290
|
>
|
|
297
291
|
<div className="query-builder__functions-explorer__tree__node__action query-builder__functions-explorer__tree__node__info">
|
|
298
292
|
<InfoCircleIcon />
|
|
@@ -331,6 +325,7 @@ const QueryBuilderPackableElementExplorerTree = observer(
|
|
|
331
325
|
const dependencyTreeData = queryFunctionsState.getTreeData(
|
|
332
326
|
ROOT_PACKAGE_NAME.PROJECT_DEPENDENCY_ROOT,
|
|
333
327
|
);
|
|
328
|
+
|
|
334
329
|
const onDependencyTreeSelect = (
|
|
335
330
|
node: QueryBuilderFunctionsExplorerTreeNodeData,
|
|
336
331
|
): void => {
|
|
@@ -431,6 +426,10 @@ export const QueryBuilderFunctionsExplorerPanel = observer(
|
|
|
431
426
|
setShowDependencyFuncions(!showDependencyFuncions);
|
|
432
427
|
};
|
|
433
428
|
|
|
429
|
+
useEffect(() => {
|
|
430
|
+
queryFunctionsState.initializeTreeData();
|
|
431
|
+
}, [queryFunctionsState]);
|
|
432
|
+
|
|
434
433
|
useEffect(() => {
|
|
435
434
|
QueryBuilderTelemetryHelper.logEvent_RenderPanelFunctionExplorer(
|
|
436
435
|
queryBuilderState.applicationStore.telemetryService,
|
|
@@ -438,7 +437,10 @@ export const QueryBuilderFunctionsExplorerPanel = observer(
|
|
|
438
437
|
}, [queryBuilderState.applicationStore]);
|
|
439
438
|
|
|
440
439
|
return (
|
|
441
|
-
<div
|
|
440
|
+
<div
|
|
441
|
+
data-testid={QUERY_BUILDER_TEST_ID.QUERY_BUILDER_FUNCTIONS}
|
|
442
|
+
className="panel query-builder__functions-explorer"
|
|
443
|
+
>
|
|
442
444
|
<div className="panel__header">
|
|
443
445
|
<div className="panel__header__title">
|
|
444
446
|
<div className="panel__header__title__label">functions</div>
|
|
@@ -494,16 +496,13 @@ export const QueryBuilderFunctionsExplorerPanel = observer(
|
|
|
494
496
|
labelGetter={(
|
|
495
497
|
item: QueryBuilderFunctionsExplorerDragSource,
|
|
496
498
|
): string =>
|
|
497
|
-
|
|
498
|
-
item.node.packageableElement as ConcreteFunctionDefinition,
|
|
499
|
-
{ fullPath: true },
|
|
500
|
-
)
|
|
499
|
+
item.node.functionAnalysisInfo?.functionPrettyName ?? ''
|
|
501
500
|
}
|
|
502
501
|
types={[QUERY_BUILDER_FUNCTION_DND_TYPE]}
|
|
503
502
|
/>
|
|
504
503
|
{((showDependencyFuncions &&
|
|
505
|
-
|
|
506
|
-
|
|
504
|
+
queryFunctionsState.dependencyFunctionExplorerStates.length ===
|
|
505
|
+
0) ||
|
|
507
506
|
!showDependencyFuncions) &&
|
|
508
507
|
queryFunctionsState.treeData?.rootIds.length === 0 && (
|
|
509
508
|
<BlankPanelContent>
|
|
@@ -521,8 +520,8 @@ export const QueryBuilderFunctionsExplorerPanel = observer(
|
|
|
521
520
|
/>
|
|
522
521
|
)}
|
|
523
522
|
{showDependencyFuncions &&
|
|
524
|
-
queryFunctionsState.
|
|
525
|
-
|
|
523
|
+
queryFunctionsState.dependencyFunctionExplorerStates.length !==
|
|
524
|
+
0 && (
|
|
526
525
|
<QueryBuilderPackableElementExplorerTree
|
|
527
526
|
queryBuilderState={queryBuilderState}
|
|
528
527
|
rootPackageName={ROOT_PACKAGE_NAME.PROJECT_DEPENDENCY_ROOT}
|
|
@@ -538,15 +537,13 @@ export const QueryBuilderFunctionsExplorerPanel = observer(
|
|
|
538
537
|
(funcExplorerState) => (
|
|
539
538
|
<QueryBuilderFunctionsExplorerListEntry
|
|
540
539
|
key={funcExplorerState.uuid}
|
|
541
|
-
|
|
542
|
-
element={funcExplorerState.concreteFunctionDefinition}
|
|
543
|
-
rootPackageName={ROOT_PACKAGE_NAME.MAIN}
|
|
540
|
+
element={funcExplorerState.functionAnalysisInfo}
|
|
544
541
|
/>
|
|
545
542
|
),
|
|
546
543
|
)}
|
|
547
544
|
{showDependencyFuncions &&
|
|
548
|
-
queryFunctionsState.
|
|
549
|
-
|
|
545
|
+
queryFunctionsState.dependencyFunctionExplorerStates.length >
|
|
546
|
+
0 && (
|
|
550
547
|
<>
|
|
551
548
|
{queryFunctionsState.treeData?.rootIds.length !== 0 && (
|
|
552
549
|
<div className="query-builder__functions-explorer__separator" />
|
|
@@ -555,11 +552,7 @@ export const QueryBuilderFunctionsExplorerPanel = observer(
|
|
|
555
552
|
(funcExplorerState) => (
|
|
556
553
|
<QueryBuilderFunctionsExplorerListEntry
|
|
557
554
|
key={funcExplorerState.uuid}
|
|
558
|
-
|
|
559
|
-
element={funcExplorerState.concreteFunctionDefinition}
|
|
560
|
-
rootPackageName={
|
|
561
|
-
ROOT_PACKAGE_NAME.PROJECT_DEPENDENCY_ROOT
|
|
562
|
-
}
|
|
555
|
+
element={funcExplorerState.functionAnalysisInfo}
|
|
563
556
|
/>
|
|
564
557
|
),
|
|
565
558
|
)}
|
|
@@ -71,8 +71,7 @@ import { QUERY_BUILDER_TEST_ID } from '../../__lib__/QueryBuilderTesting.js';
|
|
|
71
71
|
import { flowResult } from 'mobx';
|
|
72
72
|
import { useApplicationStore } from '@finos/legend-application';
|
|
73
73
|
import {
|
|
74
|
-
type
|
|
75
|
-
generateFunctionCallString,
|
|
74
|
+
type ValueSpecification,
|
|
76
75
|
LAMBDA_PIPE,
|
|
77
76
|
VARIABLE_REFERENCE_TOKEN,
|
|
78
77
|
AbstractPropertyExpression,
|
|
@@ -81,12 +80,12 @@ import {
|
|
|
81
80
|
PropertyExplicitReference,
|
|
82
81
|
VariableExpression,
|
|
83
82
|
Multiplicity,
|
|
84
|
-
type ValueSpecification,
|
|
85
83
|
PrimitiveType,
|
|
86
84
|
GenericType,
|
|
87
85
|
GenericTypeExplicitReference,
|
|
88
86
|
observe_PrimitiveInstanceValue,
|
|
89
87
|
PrimitiveInstanceValue,
|
|
88
|
+
generateFunctionCallStringFromFunctionAnalysisInfo,
|
|
90
89
|
} from '@finos/legend-graph';
|
|
91
90
|
import {
|
|
92
91
|
type QueryBuilderFunctionsExplorerDragSource,
|
|
@@ -239,13 +238,20 @@ const QueryBuilderDerivationProjectionColumnEditor = observer(
|
|
|
239
238
|
}`,
|
|
240
239
|
);
|
|
241
240
|
} else if (type === QUERY_BUILDER_FUNCTION_DND_TYPE) {
|
|
241
|
+
const functionAnalysisInfo = (
|
|
242
|
+
item as QueryBuilderFunctionsExplorerDragSource
|
|
243
|
+
).node.functionAnalysisInfo;
|
|
244
|
+
const functionPrettyName = functionAnalysisInfo
|
|
245
|
+
? generateFunctionCallStringFromFunctionAnalysisInfo(
|
|
246
|
+
projectionColumnState.tdsState.queryBuilderState
|
|
247
|
+
.graphManagerState.graph,
|
|
248
|
+
functionAnalysisInfo,
|
|
249
|
+
)
|
|
250
|
+
: '';
|
|
242
251
|
projectionColumnState.derivationLambdaEditorState.setLambdaString(
|
|
243
252
|
`${
|
|
244
253
|
projectionColumnState.derivationLambdaEditorState.lambdaString
|
|
245
|
-
}${
|
|
246
|
-
(item as QueryBuilderFunctionsExplorerDragSource).node
|
|
247
|
-
.packageableElement as ConcreteFunctionDefinition,
|
|
248
|
-
)}`}`,
|
|
254
|
+
}${functionPrettyName}`,
|
|
249
255
|
);
|
|
250
256
|
} else {
|
|
251
257
|
projectionColumnState.derivationLambdaEditorState.setLambdaString(
|
|
@@ -1262,11 +1268,17 @@ export const QueryBuilderTDSPanel = observer(
|
|
|
1262
1268
|
{ addDummyParameter: true },
|
|
1263
1269
|
),
|
|
1264
1270
|
);
|
|
1271
|
+
const functionAnalysisInfo = (
|
|
1272
|
+
item as QueryBuilderFunctionsExplorerDragSource
|
|
1273
|
+
).node.functionAnalysisInfo;
|
|
1274
|
+
const functionPrettyName = functionAnalysisInfo
|
|
1275
|
+
? generateFunctionCallStringFromFunctionAnalysisInfo(
|
|
1276
|
+
tdsState.queryBuilderState.graphManagerState.graph,
|
|
1277
|
+
functionAnalysisInfo,
|
|
1278
|
+
)
|
|
1279
|
+
: '';
|
|
1265
1280
|
derivationProjectionColumn.derivationLambdaEditorState.setLambdaString(
|
|
1266
|
-
`${DEFAULT_LAMBDA_VARIABLE_NAME}${LAMBDA_PIPE}${
|
|
1267
|
-
(item as QueryBuilderFunctionsExplorerDragSource).node
|
|
1268
|
-
.packageableElement as ConcreteFunctionDefinition,
|
|
1269
|
-
)}`,
|
|
1281
|
+
`${DEFAULT_LAMBDA_VARIABLE_NAME}${LAMBDA_PIPE}${functionPrettyName} `,
|
|
1270
1282
|
);
|
|
1271
1283
|
tdsState.addColumn(derivationProjectionColumn);
|
|
1272
1284
|
break;
|
|
@@ -1110,7 +1110,7 @@ const QueryBuilderFilterConditionEditor = observer(
|
|
|
1110
1110
|
className="query-builder-filter-tree__condition-node__operator__dropdown__option"
|
|
1111
1111
|
onClick={changeOperator(op)}
|
|
1112
1112
|
>
|
|
1113
|
-
{op.getLabel(
|
|
1113
|
+
{op.getLabel()}
|
|
1114
1114
|
</MenuContentItem>
|
|
1115
1115
|
))}
|
|
1116
1116
|
</MenuContent>
|
|
@@ -1122,7 +1122,7 @@ const QueryBuilderFilterConditionEditor = observer(
|
|
|
1122
1122
|
}}
|
|
1123
1123
|
>
|
|
1124
1124
|
<div className="query-builder-filter-tree__condition-node__operator__label">
|
|
1125
|
-
{node.condition.operator.getLabel(
|
|
1125
|
+
{node.condition.operator.getLabel()}
|
|
1126
1126
|
</div>
|
|
1127
1127
|
<div className="query-builder-filter-tree__condition-node__operator__dropdown__trigger">
|
|
1128
1128
|
<CaretDownIcon />
|
|
@@ -20,6 +20,7 @@ import { PRIMITIVE_TYPE, type TDSExecutionResult } from '@finos/legend-graph';
|
|
|
20
20
|
import { useState, useCallback, useEffect } from 'react';
|
|
21
21
|
import {
|
|
22
22
|
DataGrid,
|
|
23
|
+
type DataGridCellSelectionChangedEvent,
|
|
23
24
|
type DataGridApi,
|
|
24
25
|
type DataGridCellRange,
|
|
25
26
|
type DataGridColumnDefinition,
|
|
@@ -347,7 +348,7 @@ export const QueryBuilderTDSGridResult = observer(
|
|
|
347
348
|
resultState.mousedOverCell,
|
|
348
349
|
true,
|
|
349
350
|
fetchStructureImplementation,
|
|
350
|
-
);
|
|
351
|
+
).catch(queryBuilderState.applicationStore.alertUnhandledError);
|
|
351
352
|
},
|
|
352
353
|
},
|
|
353
354
|
{
|
|
@@ -358,7 +359,7 @@ export const QueryBuilderTDSGridResult = observer(
|
|
|
358
359
|
resultState.mousedOverCell,
|
|
359
360
|
false,
|
|
360
361
|
fetchStructureImplementation,
|
|
361
|
-
);
|
|
362
|
+
).catch(queryBuilderState.applicationStore.alertUnhandledError);
|
|
362
363
|
},
|
|
363
364
|
},
|
|
364
365
|
'copy',
|
|
@@ -377,6 +378,7 @@ export const QueryBuilderTDSGridResult = observer(
|
|
|
377
378
|
applicationStore,
|
|
378
379
|
resultState.mousedOverCell,
|
|
379
380
|
resultState.queryBuilderState.fetchStructureState.implementation,
|
|
381
|
+
queryBuilderState.applicationStore.alertUnhandledError,
|
|
380
382
|
],
|
|
381
383
|
);
|
|
382
384
|
|
|
@@ -554,7 +556,9 @@ export const QueryBuilderTDSGridResult = observer(
|
|
|
554
556
|
onRowDataUpdated={(params) => {
|
|
555
557
|
params.api.refreshCells({ force: true });
|
|
556
558
|
}}
|
|
557
|
-
|
|
559
|
+
onCellSelectionChanged={(
|
|
560
|
+
event: DataGridCellSelectionChangedEvent<QueryBuilderTDSRowDataType>,
|
|
561
|
+
) => {
|
|
558
562
|
const selectedCells = getSelectedCells(event.api);
|
|
559
563
|
resultState.setSelectedCells([]);
|
|
560
564
|
selectedCells.forEach((cell) =>
|