@finos/legend-query-builder 4.14.35 → 4.14.37
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__/QueryBuilderDocumentation.d.ts +2 -1
- package/lib/__lib__/QueryBuilderDocumentation.d.ts.map +1 -1
- package/lib/__lib__/QueryBuilderDocumentation.js +1 -0
- package/lib/__lib__/QueryBuilderDocumentation.js.map +1 -1
- package/lib/__lib__/QueryBuilderTesting.d.ts +1 -0
- package/lib/__lib__/QueryBuilderTesting.d.ts.map +1 -1
- package/lib/__lib__/QueryBuilderTesting.js +1 -0
- package/lib/__lib__/QueryBuilderTesting.js.map +1 -1
- package/lib/components/QueryBuilder.d.ts.map +1 -1
- package/lib/components/QueryBuilder.js +55 -19
- package/lib/components/QueryBuilder.js.map +1 -1
- package/lib/components/QueryBuilderConstantExpressionPanel.d.ts.map +1 -1
- package/lib/components/QueryBuilderConstantExpressionPanel.js +30 -13
- package/lib/components/QueryBuilderConstantExpressionPanel.js.map +1 -1
- package/lib/components/QueryBuilderPropertyExpressionEditor.d.ts.map +1 -1
- package/lib/components/QueryBuilderPropertyExpressionEditor.js +2 -1
- package/lib/components/QueryBuilderPropertyExpressionEditor.js.map +1 -1
- package/lib/components/QueryBuilderSideBar.d.ts +0 -16
- package/lib/components/QueryBuilderSideBar.d.ts.map +1 -1
- package/lib/components/QueryBuilderSideBar.js +32 -104
- package/lib/components/QueryBuilderSideBar.js.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderPostFilterPanel.d.ts.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderPostFilterPanel.js +2 -1
- package/lib/components/fetch-structure/QueryBuilderPostFilterPanel.js.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderResultModifierPanel.d.ts.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderResultModifierPanel.js +50 -5
- package/lib/components/fetch-structure/QueryBuilderResultModifierPanel.js.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderTDSPanel.d.ts.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderTDSPanel.js +2 -1
- package/lib/components/fetch-structure/QueryBuilderTDSPanel.js.map +1 -1
- package/lib/components/filter/QueryBuilderFilterPanel.d.ts.map +1 -1
- package/lib/components/filter/QueryBuilderFilterPanel.js +2 -1
- package/lib/components/filter/QueryBuilderFilterPanel.js.map +1 -1
- package/lib/components/result/QueryBuilderResultPanel.d.ts.map +1 -1
- package/lib/components/result/QueryBuilderResultPanel.js +18 -6
- package/lib/components/result/QueryBuilderResultPanel.js.map +1 -1
- package/lib/components/shared/BasicValueSpecificationEditor.d.ts.map +1 -1
- package/lib/components/shared/BasicValueSpecificationEditor.js +62 -28
- package/lib/components/shared/BasicValueSpecificationEditor.js.map +1 -1
- package/lib/components/shared/CustomDatePicker.d.ts +1 -0
- package/lib/components/shared/CustomDatePicker.d.ts.map +1 -1
- package/lib/components/shared/CustomDatePicker.js +13 -9
- package/lib/components/shared/CustomDatePicker.js.map +1 -1
- package/lib/components/shared/QueryBuilderVariableSelector.d.ts +1 -0
- package/lib/components/shared/QueryBuilderVariableSelector.d.ts.map +1 -1
- package/lib/components/shared/QueryBuilderVariableSelector.js +2 -2
- package/lib/components/shared/QueryBuilderVariableSelector.js.map +1 -1
- package/lib/components/workflows/ClassQueryBuilder.d.ts.map +1 -1
- package/lib/components/workflows/ClassQueryBuilder.js +19 -16
- package/lib/components/workflows/ClassQueryBuilder.js.map +1 -1
- package/lib/components/workflows/MappingQueryBuilder.d.ts.map +1 -1
- package/lib/components/workflows/MappingQueryBuilder.js +18 -15
- package/lib/components/workflows/MappingQueryBuilder.js.map +1 -1
- package/lib/components/workflows/ServiceQueryBuilder.d.ts.map +1 -1
- package/lib/components/workflows/ServiceQueryBuilder.js +13 -10
- package/lib/components/workflows/ServiceQueryBuilder.js.map +1 -1
- package/lib/index.css +2 -2
- package/lib/index.css.map +1 -1
- package/lib/index.d.ts +2 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/package.json +1 -1
- package/lib/stores/QueryBuilderConstantsState.d.ts.map +1 -1
- package/lib/stores/QueryBuilderConstantsState.js +2 -1
- package/lib/stores/QueryBuilderConstantsState.js.map +1 -1
- package/lib/stores/QueryBuilderPropertyEditorState.d.ts +1 -1
- package/lib/stores/QueryBuilderPropertyEditorState.d.ts.map +1 -1
- package/lib/stores/QueryBuilderPropertyEditorState.js +12 -34
- package/lib/stores/QueryBuilderPropertyEditorState.js.map +1 -1
- package/lib/stores/QueryBuilderState.d.ts +3 -0
- package/lib/stores/QueryBuilderState.d.ts.map +1 -1
- package/lib/stores/QueryBuilderState.js +15 -1
- package/lib/stores/QueryBuilderState.js.map +1 -1
- package/lib/stores/QueryBuilderValueSpecificationHelper.d.ts +2 -1
- package/lib/stores/QueryBuilderValueSpecificationHelper.d.ts.map +1 -1
- package/lib/stores/QueryBuilderValueSpecificationHelper.js +23 -1
- package/lib/stores/QueryBuilderValueSpecificationHelper.js.map +1 -1
- package/lib/stores/QueryBuilder_LegendApplicationPlugin_Extension.d.ts +29 -0
- package/lib/stores/QueryBuilder_LegendApplicationPlugin_Extension.d.ts.map +1 -1
- package/lib/stores/fetch-structure/QueryBuilderFetchStructureImplementationState.d.ts +2 -0
- package/lib/stores/fetch-structure/QueryBuilderFetchStructureImplementationState.d.ts.map +1 -1
- package/lib/stores/fetch-structure/QueryBuilderFetchStructureImplementationState.js +2 -0
- package/lib/stores/fetch-structure/QueryBuilderFetchStructureImplementationState.js.map +1 -1
- package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeState.d.ts +2 -0
- package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeState.d.ts.map +1 -1
- package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeState.js +6 -0
- package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeState.js.map +1 -1
- package/lib/stores/fetch-structure/tds/QueryBuilderTDSState.d.ts +2 -0
- package/lib/stores/fetch-structure/tds/QueryBuilderTDSState.d.ts.map +1 -1
- package/lib/stores/fetch-structure/tds/QueryBuilderTDSState.js +15 -0
- package/lib/stores/fetch-structure/tds/QueryBuilderTDSState.js.map +1 -1
- package/lib/stores/fetch-structure/tds/post-filter/QueryBuilderPostFilterState.d.ts +3 -0
- package/lib/stores/fetch-structure/tds/post-filter/QueryBuilderPostFilterState.d.ts.map +1 -1
- package/lib/stores/fetch-structure/tds/post-filter/QueryBuilderPostFilterState.js +42 -3
- package/lib/stores/fetch-structure/tds/post-filter/QueryBuilderPostFilterState.js.map +1 -1
- package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_Contain.d.ts.map +1 -1
- package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_Contain.js +6 -5
- package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_Contain.js.map +1 -1
- package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_EndWith.d.ts.map +1 -1
- package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_EndWith.js +6 -5
- package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_EndWith.js.map +1 -1
- package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_Equal.d.ts.map +1 -1
- package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_Equal.js +8 -37
- package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_Equal.js.map +1 -1
- package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_GreaterThan.d.ts.map +1 -1
- package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_GreaterThan.js +7 -10
- package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_GreaterThan.js.map +1 -1
- package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_LessThan.d.ts.map +1 -1
- package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_LessThan.js +7 -10
- package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_LessThan.js.map +1 -1
- package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_StartWith.d.ts.map +1 -1
- package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_StartWith.js +6 -5
- package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_StartWith.js.map +1 -1
- package/lib/stores/filter/QueryBuilderFilterState.d.ts +3 -0
- package/lib/stores/filter/QueryBuilderFilterState.d.ts.map +1 -1
- package/lib/stores/filter/QueryBuilderFilterState.js +30 -2
- package/lib/stores/filter/QueryBuilderFilterState.js.map +1 -1
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_Contain.d.ts.map +1 -1
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_Contain.js +5 -4
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_Contain.js.map +1 -1
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_EndWith.d.ts.map +1 -1
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_EndWith.js +5 -4
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_EndWith.js.map +1 -1
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_Equal.d.ts.map +1 -1
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_Equal.js +7 -35
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_Equal.js.map +1 -1
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_GreaterThan.d.ts.map +1 -1
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_GreaterThan.js +6 -8
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_GreaterThan.js.map +1 -1
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_GreaterThanEqual.d.ts.map +1 -1
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_GreaterThanEqual.js +6 -8
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_GreaterThanEqual.js.map +1 -1
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_LessThan.d.ts.map +1 -1
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_LessThan.js +6 -8
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_LessThan.js.map +1 -1
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_LessThanEqual.d.ts.map +1 -1
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_LessThanEqual.js +6 -8
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_LessThanEqual.js.map +1 -1
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_StartWith.d.ts.map +1 -1
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_StartWith.js +5 -4
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_StartWith.js.map +1 -1
- package/lib/stores/query-workflow/QueryBuilderWorkFlowState.d.ts +5 -0
- package/lib/stores/query-workflow/QueryBuilderWorkFlowState.d.ts.map +1 -1
- package/lib/stores/query-workflow/QueryBuilderWorkFlowState.js +7 -0
- package/lib/stores/query-workflow/QueryBuilderWorkFlowState.js.map +1 -1
- package/lib/stores/shared/ValueSpecificationEditorHelper.d.ts +1 -1
- package/lib/stores/shared/ValueSpecificationEditorHelper.d.ts.map +1 -1
- package/lib/stores/shared/ValueSpecificationEditorHelper.js +20 -10
- package/lib/stores/shared/ValueSpecificationEditorHelper.js.map +1 -1
- package/lib/stores/watermark/QueryBuilderWatermarkState.d.ts +0 -2
- package/lib/stores/watermark/QueryBuilderWatermarkState.d.ts.map +1 -1
- package/lib/stores/watermark/QueryBuilderWatermarkState.js +0 -6
- package/lib/stores/watermark/QueryBuilderWatermarkState.js.map +1 -1
- package/lib/stores/workflows/MappingQueryBuilderState.d.ts +2 -2
- package/lib/stores/workflows/MappingQueryBuilderState.d.ts.map +1 -1
- package/lib/stores/workflows/MappingQueryBuilderState.js +2 -1
- package/lib/stores/workflows/MappingQueryBuilderState.js.map +1 -1
- package/lib/stores/workflows/ServiceQueryBuilderState.d.ts +2 -2
- package/lib/stores/workflows/ServiceQueryBuilderState.d.ts.map +1 -1
- package/lib/stores/workflows/ServiceQueryBuilderState.js +2 -1
- package/lib/stores/workflows/ServiceQueryBuilderState.js.map +1 -1
- package/package.json +4 -4
- package/src/__lib__/QueryBuilderDocumentation.ts +1 -0
- package/src/__lib__/QueryBuilderTesting.ts +1 -0
- package/src/components/QueryBuilder.tsx +179 -54
- package/src/components/QueryBuilderConstantExpressionPanel.tsx +36 -14
- package/src/components/QueryBuilderPropertyExpressionEditor.tsx +2 -0
- package/src/components/QueryBuilderSideBar.tsx +138 -339
- package/src/components/fetch-structure/QueryBuilderPostFilterPanel.tsx +6 -1
- package/src/components/fetch-structure/QueryBuilderResultModifierPanel.tsx +139 -1
- package/src/components/fetch-structure/QueryBuilderTDSPanel.tsx +17 -0
- package/src/components/filter/QueryBuilderFilterPanel.tsx +6 -0
- package/src/components/result/QueryBuilderResultPanel.tsx +63 -6
- package/src/components/shared/BasicValueSpecificationEditor.tsx +96 -34
- package/src/components/shared/CustomDatePicker.tsx +18 -11
- package/src/components/shared/QueryBuilderVariableSelector.tsx +2 -2
- package/src/components/workflows/ClassQueryBuilder.tsx +79 -77
- package/src/components/workflows/MappingQueryBuilder.tsx +75 -76
- package/src/components/workflows/ServiceQueryBuilder.tsx +71 -70
- package/src/index.ts +2 -1
- package/src/stores/QueryBuilderConstantsState.ts +2 -0
- package/src/stores/QueryBuilderPropertyEditorState.ts +15 -53
- package/src/stores/QueryBuilderState.ts +23 -1
- package/src/stores/QueryBuilderValueSpecificationHelper.ts +32 -0
- package/src/stores/QueryBuilder_LegendApplicationPlugin_Extension.ts +39 -0
- package/src/stores/fetch-structure/QueryBuilderFetchStructureImplementationState.ts +4 -0
- package/src/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeState.ts +8 -0
- package/src/stores/fetch-structure/tds/QueryBuilderTDSState.ts +32 -0
- package/src/stores/fetch-structure/tds/post-filter/QueryBuilderPostFilterState.ts +59 -0
- package/src/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_Contain.ts +5 -5
- package/src/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_EndWith.ts +5 -5
- package/src/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_Equal.ts +10 -69
- package/src/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_GreaterThan.ts +7 -18
- package/src/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_LessThan.ts +7 -18
- package/src/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_StartWith.ts +5 -5
- package/src/stores/filter/QueryBuilderFilterState.ts +48 -2
- package/src/stores/filter/operators/QueryBuilderFilterOperator_Contain.ts +5 -5
- package/src/stores/filter/operators/QueryBuilderFilterOperator_EndWith.ts +5 -5
- package/src/stores/filter/operators/QueryBuilderFilterOperator_Equal.ts +10 -71
- package/src/stores/filter/operators/QueryBuilderFilterOperator_GreaterThan.ts +6 -14
- package/src/stores/filter/operators/QueryBuilderFilterOperator_GreaterThanEqual.ts +6 -14
- package/src/stores/filter/operators/QueryBuilderFilterOperator_LessThan.ts +6 -14
- package/src/stores/filter/operators/QueryBuilderFilterOperator_LessThanEqual.ts +6 -14
- package/src/stores/filter/operators/QueryBuilderFilterOperator_StartWith.ts +5 -5
- package/src/stores/query-workflow/QueryBuilderWorkFlowState.ts +10 -0
- package/src/stores/shared/ValueSpecificationEditorHelper.ts +32 -16
- package/src/stores/watermark/QueryBuilderWatermarkState.ts +0 -7
- package/src/stores/workflows/MappingQueryBuilderState.ts +7 -1
- package/src/stores/workflows/ServiceQueryBuilderState.ts +6 -1
- package/tsconfig.json +0 -1
- package/lib/components/watermark/QueryBuilderWatermark.d.ts +0 -22
- package/lib/components/watermark/QueryBuilderWatermark.d.ts.map +0 -1
- package/lib/components/watermark/QueryBuilderWatermark.js +0 -83
- package/lib/components/watermark/QueryBuilderWatermark.js.map +0 -1
- package/src/components/watermark/QueryBuilderWatermark.tsx +0 -218
|
@@ -29,7 +29,6 @@ import {
|
|
|
29
29
|
CheckIcon,
|
|
30
30
|
CaretDownIcon,
|
|
31
31
|
DiffIcon,
|
|
32
|
-
WaterDropIcon,
|
|
33
32
|
MenuContentDivider,
|
|
34
33
|
Dialog,
|
|
35
34
|
Modal,
|
|
@@ -45,6 +44,8 @@ import {
|
|
|
45
44
|
DataAccessIcon,
|
|
46
45
|
AssistantIcon,
|
|
47
46
|
clsx,
|
|
47
|
+
DocumentationIcon,
|
|
48
|
+
CodeIcon,
|
|
48
49
|
} from '@finos/legend-art';
|
|
49
50
|
import { QueryBuilderFilterPanel } from './filter/QueryBuilderFilterPanel.js';
|
|
50
51
|
import { QueryBuilderExplorerPanel } from './explorer/QueryBuilderExplorerPanel.js';
|
|
@@ -74,16 +75,17 @@ import { QueryBuilderDiffViewPanelDiaglog } from './QueryBuilderDiffPanel.js';
|
|
|
74
75
|
import { guaranteeType } from '@finos/legend-shared';
|
|
75
76
|
import { QueryBuilderGraphFetchTreeState } from '../stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeState.js';
|
|
76
77
|
import { QueryBuilderPostTDSPanel } from './fetch-structure/QueryBuilderPostTDSPanel.js';
|
|
77
|
-
import { QueryBuilderWatermarkEditor } from './watermark/QueryBuilderWatermark.js';
|
|
78
78
|
import { QueryBuilderConstantExpressionPanel } from './QueryBuilderConstantExpressionPanel.js';
|
|
79
79
|
import { QUERY_BUILDER_SETTING_KEY } from '../__lib__/QueryBuilderSetting.js';
|
|
80
80
|
import { QUERY_BUILDER_COMPONENT_ELEMENT_ID } from './QueryBuilderComponentElement.js';
|
|
81
81
|
import { DataAccessOverview } from './data-access/DataAccessOverview.js';
|
|
82
82
|
import { QueryChat } from './QueryChat.js';
|
|
83
|
-
import { useEffect, useRef } from 'react';
|
|
83
|
+
import { Fragment, useEffect, useRef } from 'react';
|
|
84
84
|
import { RedoButton, UndoButton } from '@finos/legend-lego/application';
|
|
85
85
|
import { FETCH_STRUCTURE_IMPLEMENTATION } from '../stores/fetch-structure/QueryBuilderFetchStructureImplementationState.js';
|
|
86
86
|
import { onChangeFetchStructureImplementation } from '../stores/fetch-structure/QueryBuilderFetchStructureState.js';
|
|
87
|
+
import type { QueryBuilder_LegendApplicationPlugin_Extension } from '../stores/QueryBuilder_LegendApplicationPlugin_Extension.js';
|
|
88
|
+
import { QUERY_BUILDER_DOCUMENTATION_KEY } from '../__lib__/QueryBuilderDocumentation.js';
|
|
87
89
|
|
|
88
90
|
const QueryBuilderPostGraphFetchPanel = observer(
|
|
89
91
|
(props: { graphFetchState: QueryBuilderGraphFetchTreeState }) => {
|
|
@@ -126,13 +128,18 @@ const QueryBuilderStatusBar = observer(
|
|
|
126
128
|
className={clsx(
|
|
127
129
|
'query-builder__status-bar__action query-builder__status-bar__view-diff-btn',
|
|
128
130
|
)}
|
|
129
|
-
disabled={
|
|
131
|
+
disabled={
|
|
132
|
+
!queryBuilderState.changeDetectionState.hasChanged ||
|
|
133
|
+
!queryBuilderState.canBuildQuery
|
|
134
|
+
}
|
|
130
135
|
onClick={showDiff}
|
|
131
136
|
tabIndex={-1}
|
|
132
137
|
title={
|
|
133
|
-
queryBuilderState.
|
|
134
|
-
? '
|
|
135
|
-
:
|
|
138
|
+
!queryBuilderState.canBuildQuery
|
|
139
|
+
? 'Please fix query errors to show changes'
|
|
140
|
+
: queryBuilderState.changeDetectionState.hasChanged
|
|
141
|
+
? 'Show changes'
|
|
142
|
+
: 'Query has not been changed'
|
|
136
143
|
}
|
|
137
144
|
>
|
|
138
145
|
<DiffIcon />
|
|
@@ -193,7 +200,12 @@ const QueryBuilderStatusBar = observer(
|
|
|
193
200
|
openLambdaEditor(QueryBuilderTextEditorMode.JSON)
|
|
194
201
|
}
|
|
195
202
|
tabIndex={-1}
|
|
196
|
-
|
|
203
|
+
disabled={!queryBuilderState.canBuildQuery}
|
|
204
|
+
title={
|
|
205
|
+
!queryBuilderState.canBuildQuery
|
|
206
|
+
? 'Please fix query errors to show query protocol'
|
|
207
|
+
: 'Show Query Protocol'
|
|
208
|
+
}
|
|
197
209
|
>{`{ }`}</button>
|
|
198
210
|
<button
|
|
199
211
|
className={clsx(
|
|
@@ -208,7 +220,12 @@ const QueryBuilderStatusBar = observer(
|
|
|
208
220
|
openLambdaEditor(QueryBuilderTextEditorMode.TEXT)
|
|
209
221
|
}
|
|
210
222
|
tabIndex={-1}
|
|
211
|
-
|
|
223
|
+
disabled={!queryBuilderState.canBuildQuery}
|
|
224
|
+
title={
|
|
225
|
+
!queryBuilderState.canBuildQuery
|
|
226
|
+
? 'Please fix query errors to edit in Pure'
|
|
227
|
+
: 'Edit Query in Pure'
|
|
228
|
+
}
|
|
212
229
|
>
|
|
213
230
|
<HackerIcon />
|
|
214
231
|
</button>
|
|
@@ -277,10 +294,6 @@ export const QueryBuilder = observer(
|
|
|
277
294
|
}
|
|
278
295
|
};
|
|
279
296
|
|
|
280
|
-
const openWatermark = (): void => {
|
|
281
|
-
queryBuilderState.watermarkState.setIsEditingWatermark(true);
|
|
282
|
-
};
|
|
283
|
-
|
|
284
297
|
const toggleEnableCalendar = (): void => {
|
|
285
298
|
if (queryBuilderState.isCalendarEnabled) {
|
|
286
299
|
queryBuilderState.applicationStore.alertService.setActionAlertInfo({
|
|
@@ -363,6 +376,9 @@ export const QueryBuilder = observer(
|
|
|
363
376
|
const editQueryInPure = (): void => {
|
|
364
377
|
openLambdaEditor(QueryBuilderTextEditorMode.TEXT);
|
|
365
378
|
};
|
|
379
|
+
const showQueryInPure = (): void => {
|
|
380
|
+
openLambdaEditor(QueryBuilderTextEditorMode.TEXT);
|
|
381
|
+
};
|
|
366
382
|
const showQueryProtocol = (): void => {
|
|
367
383
|
openLambdaEditor(QueryBuilderTextEditorMode.JSON);
|
|
368
384
|
};
|
|
@@ -418,8 +434,38 @@ export const QueryBuilder = observer(
|
|
|
418
434
|
queryBuilderState.changeHistoryState.redo();
|
|
419
435
|
};
|
|
420
436
|
|
|
437
|
+
const queryDocEntry = applicationStore.documentationService.getDocEntry(
|
|
438
|
+
QUERY_BUILDER_DOCUMENTATION_KEY.TUTORIAL_QUERY_BUILDER,
|
|
439
|
+
);
|
|
440
|
+
const openQueryTutorial = (): void => {
|
|
441
|
+
if (queryDocEntry?.url) {
|
|
442
|
+
applicationStore.navigationService.navigator.visitAddress(
|
|
443
|
+
queryDocEntry.url,
|
|
444
|
+
);
|
|
445
|
+
}
|
|
446
|
+
};
|
|
421
447
|
const toggleAssistant = (): void =>
|
|
422
448
|
applicationStore.assistantService.toggleAssistant();
|
|
449
|
+
|
|
450
|
+
const extraHelpMenuContentItems = applicationStore.pluginManager
|
|
451
|
+
.getApplicationPlugins()
|
|
452
|
+
.flatMap(
|
|
453
|
+
(plugin) =>
|
|
454
|
+
(
|
|
455
|
+
plugin as QueryBuilder_LegendApplicationPlugin_Extension
|
|
456
|
+
).getExtraQueryBuilderHelpMenuActionConfigurations?.() ?? [],
|
|
457
|
+
)
|
|
458
|
+
.map((item) => (
|
|
459
|
+
<MenuContentItem
|
|
460
|
+
key={item.key}
|
|
461
|
+
title={item.title ?? ''}
|
|
462
|
+
onClick={() => item.onClick(queryBuilderState)}
|
|
463
|
+
>
|
|
464
|
+
{item.icon && <MenuContentItemIcon>{item.icon}</MenuContentItemIcon>}
|
|
465
|
+
<MenuContentItemLabel>{item.label}</MenuContentItemLabel>
|
|
466
|
+
</MenuContentItem>
|
|
467
|
+
));
|
|
468
|
+
|
|
423
469
|
const compileQuery = applicationStore.guardUnhandledError(() =>
|
|
424
470
|
flowResult(queryBuilderState.compileQuery()),
|
|
425
471
|
);
|
|
@@ -431,7 +477,11 @@ export const QueryBuilder = observer(
|
|
|
431
477
|
useEffect(() => {
|
|
432
478
|
// this condition is for passing all exisitng tests because when we initialize a queryBuilderState for a test,
|
|
433
479
|
// we use an empty RawLambda with an empty class and this useEffect is called earlier than initializeWithQuery()
|
|
434
|
-
if (
|
|
480
|
+
if (
|
|
481
|
+
queryBuilderState.isQuerySupported &&
|
|
482
|
+
queryBuilderState.class &&
|
|
483
|
+
queryBuilderState.canBuildQuery
|
|
484
|
+
) {
|
|
435
485
|
queryBuilderState.changeHistoryState.cacheNewQuery(
|
|
436
486
|
queryBuilderState.buildQuery(),
|
|
437
487
|
);
|
|
@@ -457,19 +507,11 @@ export const QueryBuilder = observer(
|
|
|
457
507
|
isLoading={queryBuilderState.resultState.exportState.isInProgress}
|
|
458
508
|
/>
|
|
459
509
|
<div className="query-builder__content">
|
|
460
|
-
<div
|
|
510
|
+
<div
|
|
511
|
+
data-testid={QUERY_BUILDER_TEST_ID.QUERY_BUILDER_ACTIONS}
|
|
512
|
+
className="query-builder__header"
|
|
513
|
+
>
|
|
461
514
|
<div className="query-builder__header__statuses">
|
|
462
|
-
{queryBuilderState.watermarkState.value && (
|
|
463
|
-
<button
|
|
464
|
-
className="query-builder__header__status query-builder__header__status--action"
|
|
465
|
-
onClick={openWatermark}
|
|
466
|
-
tabIndex={-1}
|
|
467
|
-
title="Used watermark"
|
|
468
|
-
name="Used watermark"
|
|
469
|
-
>
|
|
470
|
-
<WaterDropIcon />
|
|
471
|
-
</button>
|
|
472
|
-
)}
|
|
473
515
|
{queryBuilderState.isCalendarEnabled && (
|
|
474
516
|
<div
|
|
475
517
|
className="query-builder__header__status"
|
|
@@ -478,11 +520,19 @@ export const QueryBuilder = observer(
|
|
|
478
520
|
<CalendarClockIcon className="query-builder__header__status__icon--calendar" />
|
|
479
521
|
</div>
|
|
480
522
|
)}
|
|
481
|
-
{
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
523
|
+
{applicationStore.pluginManager
|
|
524
|
+
.getApplicationPlugins()
|
|
525
|
+
.flatMap(
|
|
526
|
+
(plugin) =>
|
|
527
|
+
(
|
|
528
|
+
plugin as QueryBuilder_LegendApplicationPlugin_Extension
|
|
529
|
+
).getExtraQueryBuilderHeaderTitleConfigurations?.() ?? [],
|
|
530
|
+
)
|
|
531
|
+
.map((actionConfig) => (
|
|
532
|
+
<Fragment key={actionConfig.key}>
|
|
533
|
+
{actionConfig.renderer(queryBuilderState)}
|
|
534
|
+
</Fragment>
|
|
535
|
+
))}
|
|
486
536
|
</div>
|
|
487
537
|
<div className="query-builder__header__actions">
|
|
488
538
|
<div className="query-builder__header__actions__undo-redo">
|
|
@@ -503,6 +553,21 @@ export const QueryBuilder = observer(
|
|
|
503
553
|
redo={redo}
|
|
504
554
|
/>
|
|
505
555
|
</div>
|
|
556
|
+
{applicationStore.pluginManager
|
|
557
|
+
.getApplicationPlugins()
|
|
558
|
+
.flatMap(
|
|
559
|
+
(plugin) =>
|
|
560
|
+
(
|
|
561
|
+
plugin as QueryBuilder_LegendApplicationPlugin_Extension
|
|
562
|
+
).getExtraQueryBuilderHeaderActionConfigurations?.() ??
|
|
563
|
+
[],
|
|
564
|
+
)
|
|
565
|
+
.sort((A, B) => B.category - A.category)
|
|
566
|
+
.map((actionConfig) => (
|
|
567
|
+
<Fragment key={actionConfig.key}>
|
|
568
|
+
{actionConfig.renderer(queryBuilderState)}
|
|
569
|
+
</Fragment>
|
|
570
|
+
))}
|
|
506
571
|
<DropdownMenu
|
|
507
572
|
className="query-builder__header__advanced-dropdown"
|
|
508
573
|
title="Show Advanced Menu..."
|
|
@@ -643,14 +708,6 @@ export const QueryBuilder = observer(
|
|
|
643
708
|
Show Post-Filter
|
|
644
709
|
</MenuContentItemLabel>
|
|
645
710
|
</MenuContentItem>
|
|
646
|
-
<MenuContentItem onClick={openWatermark}>
|
|
647
|
-
<MenuContentItemIcon>
|
|
648
|
-
<WaterDropIcon />
|
|
649
|
-
</MenuContentItemIcon>
|
|
650
|
-
<MenuContentItemLabel>
|
|
651
|
-
Show Watermark
|
|
652
|
-
</MenuContentItemLabel>
|
|
653
|
-
</MenuContentItem>
|
|
654
711
|
<MenuContentItem
|
|
655
712
|
onClick={toggleEnableCalendar}
|
|
656
713
|
disabled={
|
|
@@ -695,11 +752,17 @@ export const QueryBuilder = observer(
|
|
|
695
752
|
<MenuContentItem
|
|
696
753
|
onClick={openCheckEntitlmentsEditor}
|
|
697
754
|
disabled={
|
|
698
|
-
queryBuilderState.isQuerySupported &&
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
755
|
+
(queryBuilderState.isQuerySupported &&
|
|
756
|
+
queryBuilderState.fetchStructureState
|
|
757
|
+
.implementation instanceof QueryBuilderTDSState &&
|
|
758
|
+
queryBuilderState.fetchStructureState.implementation
|
|
759
|
+
.projectionColumns.length === 0) ||
|
|
760
|
+
!queryBuilderState.canBuildQuery
|
|
761
|
+
}
|
|
762
|
+
title={
|
|
763
|
+
!queryBuilderState.canBuildQuery
|
|
764
|
+
? 'Please fix query errors to check entitlements'
|
|
765
|
+
: ''
|
|
703
766
|
}
|
|
704
767
|
>
|
|
705
768
|
<MenuContentItemIcon>
|
|
@@ -709,7 +772,15 @@ export const QueryBuilder = observer(
|
|
|
709
772
|
Check Entitlements
|
|
710
773
|
</MenuContentItemLabel>
|
|
711
774
|
</MenuContentItem>
|
|
712
|
-
<MenuContentItem
|
|
775
|
+
<MenuContentItem
|
|
776
|
+
onClick={editQueryInPure}
|
|
777
|
+
disabled={!queryBuilderState.canBuildQuery}
|
|
778
|
+
title={
|
|
779
|
+
!queryBuilderState.canBuildQuery
|
|
780
|
+
? 'Please fix query errors to edit in Pure'
|
|
781
|
+
: undefined
|
|
782
|
+
}
|
|
783
|
+
>
|
|
713
784
|
<MenuContentItemIcon>
|
|
714
785
|
<HackerIcon />
|
|
715
786
|
</MenuContentItemIcon>
|
|
@@ -717,7 +788,31 @@ export const QueryBuilder = observer(
|
|
|
717
788
|
Edit Query in Pure
|
|
718
789
|
</MenuContentItemLabel>
|
|
719
790
|
</MenuContentItem>
|
|
720
|
-
<MenuContentItem
|
|
791
|
+
<MenuContentItem
|
|
792
|
+
onClick={showQueryInPure}
|
|
793
|
+
disabled={!queryBuilderState.canBuildQuery}
|
|
794
|
+
title={
|
|
795
|
+
!queryBuilderState.canBuildQuery
|
|
796
|
+
? 'Please fix query errors to edit in Pure'
|
|
797
|
+
: undefined
|
|
798
|
+
}
|
|
799
|
+
>
|
|
800
|
+
<MenuContentItemIcon>
|
|
801
|
+
<CodeIcon />
|
|
802
|
+
</MenuContentItemIcon>
|
|
803
|
+
<MenuContentItemLabel>
|
|
804
|
+
Show Query in Pure
|
|
805
|
+
</MenuContentItemLabel>
|
|
806
|
+
</MenuContentItem>
|
|
807
|
+
<MenuContentItem
|
|
808
|
+
onClick={showQueryProtocol}
|
|
809
|
+
disabled={!queryBuilderState.canBuildQuery}
|
|
810
|
+
title={
|
|
811
|
+
!queryBuilderState.canBuildQuery
|
|
812
|
+
? 'Please fix query errors to show query protocol'
|
|
813
|
+
: undefined
|
|
814
|
+
}
|
|
815
|
+
>
|
|
721
816
|
<MenuContentItemIcon>
|
|
722
817
|
<SerializeIcon />
|
|
723
818
|
</MenuContentItemIcon>
|
|
@@ -765,14 +860,6 @@ export const QueryBuilder = observer(
|
|
|
765
860
|
</MenuContentItemLabel>
|
|
766
861
|
</MenuContentItem>
|
|
767
862
|
)}
|
|
768
|
-
<MenuContentItem onClick={toggleAssistant}>
|
|
769
|
-
<MenuContentItemIcon>
|
|
770
|
-
<AssistantIcon />
|
|
771
|
-
</MenuContentItemIcon>
|
|
772
|
-
<MenuContentItemLabel>
|
|
773
|
-
Open Assistant
|
|
774
|
-
</MenuContentItemLabel>
|
|
775
|
-
</MenuContentItem>
|
|
776
863
|
</MenuContent>
|
|
777
864
|
}
|
|
778
865
|
menuProps={{
|
|
@@ -786,6 +873,44 @@ export const QueryBuilder = observer(
|
|
|
786
873
|
</div>
|
|
787
874
|
<CaretDownIcon className="query-builder__header__advanced-dropdown__icon" />
|
|
788
875
|
</DropdownMenu>
|
|
876
|
+
<DropdownMenu
|
|
877
|
+
className="query-builder__header__advanced-dropdown"
|
|
878
|
+
content={
|
|
879
|
+
<MenuContent>
|
|
880
|
+
{extraHelpMenuContentItems}
|
|
881
|
+
{queryDocEntry && (
|
|
882
|
+
<MenuContentItem onClick={openQueryTutorial}>
|
|
883
|
+
<MenuContentItemIcon>
|
|
884
|
+
<DocumentationIcon />
|
|
885
|
+
</MenuContentItemIcon>
|
|
886
|
+
<MenuContentItemLabel>
|
|
887
|
+
Open Documentation
|
|
888
|
+
</MenuContentItemLabel>
|
|
889
|
+
</MenuContentItem>
|
|
890
|
+
)}
|
|
891
|
+
<MenuContentItem onClick={toggleAssistant}>
|
|
892
|
+
<MenuContentItemIcon>
|
|
893
|
+
{!applicationStore.assistantService.isHidden ? (
|
|
894
|
+
<CheckIcon />
|
|
895
|
+
) : (
|
|
896
|
+
<AssistantIcon />
|
|
897
|
+
)}
|
|
898
|
+
</MenuContentItemIcon>
|
|
899
|
+
<MenuContentItemLabel>
|
|
900
|
+
Show Virtual Assistant
|
|
901
|
+
</MenuContentItemLabel>
|
|
902
|
+
</MenuContentItem>
|
|
903
|
+
</MenuContent>
|
|
904
|
+
}
|
|
905
|
+
>
|
|
906
|
+
<div
|
|
907
|
+
className="query-builder__header__advanced-dropdown__label"
|
|
908
|
+
title="See more options"
|
|
909
|
+
>
|
|
910
|
+
Help...
|
|
911
|
+
</div>
|
|
912
|
+
<CaretDownIcon className="query-builder__header__advanced-dropdown__icon" />
|
|
913
|
+
</DropdownMenu>
|
|
789
914
|
</div>
|
|
790
915
|
</div>
|
|
791
916
|
<div className="query-builder__main">
|
|
@@ -41,6 +41,7 @@ import {
|
|
|
41
41
|
VariableExpression,
|
|
42
42
|
Multiplicity,
|
|
43
43
|
isValidIdentifier,
|
|
44
|
+
InstanceValue,
|
|
44
45
|
} from '@finos/legend-graph';
|
|
45
46
|
import { deepClone } from '@finos/legend-shared';
|
|
46
47
|
import { observer } from 'mobx-react-lite';
|
|
@@ -60,6 +61,7 @@ import { variableExpression_setName } from '../stores/shared/ValueSpecificationM
|
|
|
60
61
|
import { LambdaEditor } from './shared/LambdaEditor.js';
|
|
61
62
|
import { VariableViewer } from './shared/QueryBuilderVariableSelector.js';
|
|
62
63
|
import { flowResult } from 'mobx';
|
|
64
|
+
import { isValidInstanceValue } from '../stores/QueryBuilderValueSpecificationHelper.js';
|
|
63
65
|
|
|
64
66
|
const getConstantNameValidationMessage = (
|
|
65
67
|
constantInput: string,
|
|
@@ -93,13 +95,9 @@ const QueryBuilderSimpleConstantExpressionEditor = observer(
|
|
|
93
95
|
const [selectedName, setSelectedName] = useState(stateName);
|
|
94
96
|
const [isNameValid, setIsNameValid] = useState<boolean>(true);
|
|
95
97
|
const [hasEditedName, setHasEditedName] = useState<boolean>(false);
|
|
96
|
-
const [nameInputRef, setNameInputRef] = useState<HTMLInputElement | null>(
|
|
97
|
-
null,
|
|
98
|
-
);
|
|
99
98
|
const handleNameInputRef = useCallback(
|
|
100
99
|
(ref: HTMLInputElement | null): void => {
|
|
101
100
|
ref?.focus();
|
|
102
|
-
setNameInputRef(ref);
|
|
103
101
|
},
|
|
104
102
|
[],
|
|
105
103
|
);
|
|
@@ -107,6 +105,17 @@ const QueryBuilderSimpleConstantExpressionEditor = observer(
|
|
|
107
105
|
// Value
|
|
108
106
|
const stateValue = constantState.value;
|
|
109
107
|
const [selectedValue, setSelectedValue] = useState(deepClone(stateValue));
|
|
108
|
+
const [shouldFocusOnValue, setShouldFocusOnValue] =
|
|
109
|
+
useState<boolean>(!isCreating);
|
|
110
|
+
const handleValueInputRef = useCallback(
|
|
111
|
+
(ref: HTMLInputElement | null): void => {
|
|
112
|
+
if (shouldFocusOnValue) {
|
|
113
|
+
ref?.focus();
|
|
114
|
+
setShouldFocusOnValue(false);
|
|
115
|
+
}
|
|
116
|
+
},
|
|
117
|
+
[shouldFocusOnValue],
|
|
118
|
+
);
|
|
110
119
|
|
|
111
120
|
// Type
|
|
112
121
|
const stateType =
|
|
@@ -121,12 +130,28 @@ const QueryBuilderSimpleConstantExpressionEditor = observer(
|
|
|
121
130
|
queryBuilderState.graphManagerState.graph,
|
|
122
131
|
val.value,
|
|
123
132
|
queryBuilderState.observerContext,
|
|
133
|
+
queryBuilderState.INTERNAL__enableInitializingDefaultSimpleExpressionValue,
|
|
124
134
|
);
|
|
125
135
|
setSelectedValue(newValSpec);
|
|
126
136
|
}
|
|
137
|
+
setShouldFocusOnValue(true);
|
|
127
138
|
};
|
|
139
|
+
// Disabling binary, strict time, latest date, and byte as we
|
|
140
|
+
// don't support these constant types
|
|
141
|
+
const supportedPrimitiveTypes: PrimitiveType[] = [
|
|
142
|
+
PrimitiveType.STRING,
|
|
143
|
+
PrimitiveType.BOOLEAN,
|
|
144
|
+
PrimitiveType.NUMBER,
|
|
145
|
+
PrimitiveType.INTEGER,
|
|
146
|
+
PrimitiveType.FLOAT,
|
|
147
|
+
PrimitiveType.DECIMAL,
|
|
148
|
+
PrimitiveType.DATE,
|
|
149
|
+
PrimitiveType.STRICTDATE,
|
|
150
|
+
PrimitiveType.DATETIME,
|
|
151
|
+
];
|
|
128
152
|
const typeOptions: PackageableElementOption<Type>[] =
|
|
129
153
|
queryBuilderState.graphManagerState.graph.primitiveTypes
|
|
154
|
+
.filter((type) => supportedPrimitiveTypes.includes(type))
|
|
130
155
|
.map(buildElementOption)
|
|
131
156
|
.concat(
|
|
132
157
|
queryBuilderState.graphManagerState.graph.enumerations.map(
|
|
@@ -134,15 +159,6 @@ const QueryBuilderSimpleConstantExpressionEditor = observer(
|
|
|
134
159
|
),
|
|
135
160
|
);
|
|
136
161
|
|
|
137
|
-
const handleValueInputRef = (ref: HTMLInputElement | null): void => {
|
|
138
|
-
if (
|
|
139
|
-
(!isCreating || hasEditedName) &&
|
|
140
|
-
document.activeElement !== nameInputRef
|
|
141
|
-
) {
|
|
142
|
-
ref?.focus();
|
|
143
|
-
}
|
|
144
|
-
};
|
|
145
|
-
|
|
146
162
|
// Modal lifecycle actions
|
|
147
163
|
const handleCancel = (): void => {
|
|
148
164
|
variableState.setSelectedConstant(undefined);
|
|
@@ -163,6 +179,7 @@ const QueryBuilderSimpleConstantExpressionEditor = observer(
|
|
|
163
179
|
queryBuilderState.graphManagerState.graph,
|
|
164
180
|
selectedType.value,
|
|
165
181
|
queryBuilderState.observerContext,
|
|
182
|
+
queryBuilderState.INTERNAL__enableInitializingDefaultSimpleExpressionValue,
|
|
166
183
|
);
|
|
167
184
|
setSelectedValue(valSpec);
|
|
168
185
|
};
|
|
@@ -259,7 +276,11 @@ const QueryBuilderSimpleConstantExpressionEditor = observer(
|
|
|
259
276
|
<ModalFooter>
|
|
260
277
|
<ModalFooterButton
|
|
261
278
|
text={isCreating ? 'Create' : 'Apply'}
|
|
262
|
-
disabled={
|
|
279
|
+
disabled={
|
|
280
|
+
!isNameValid ||
|
|
281
|
+
(selectedValue instanceof InstanceValue &&
|
|
282
|
+
!isValidInstanceValue(selectedValue))
|
|
283
|
+
}
|
|
263
284
|
onClick={handleApply}
|
|
264
285
|
/>
|
|
265
286
|
<ModalFooterButton
|
|
@@ -415,6 +436,7 @@ export const QueryBuilderConstantExpressionPanel = observer(
|
|
|
415
436
|
graph,
|
|
416
437
|
PrimitiveType.STRING,
|
|
417
438
|
queryBuilderState.observerContext,
|
|
439
|
+
queryBuilderState.INTERNAL__enableInitializingDefaultSimpleExpressionValue,
|
|
418
440
|
);
|
|
419
441
|
const variableEx = new VariableExpression('', Multiplicity.ONE);
|
|
420
442
|
variableEx.genericType = defaultVal.genericType;
|
|
@@ -207,6 +207,8 @@ const DerivedPropertyParameterValueEditor = observer(
|
|
|
207
207
|
variable,
|
|
208
208
|
derivedPropertyExpressionState.queryBuilderState.graphManagerState
|
|
209
209
|
.graph,
|
|
210
|
+
derivedPropertyExpressionState.queryBuilderState
|
|
211
|
+
.INTERNAL__enableInitializingDefaultSimpleExpressionValue,
|
|
210
212
|
derivedPropertyExpressionState.queryBuilderState.observerContext,
|
|
211
213
|
),
|
|
212
214
|
idx + 1,
|