@finos/legend-query-builder 4.7.4 → 4.8.0
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/components/QueryBuilderConstantExpressionPanel.d.ts.map +1 -1
- package/lib/components/QueryBuilderConstantExpressionPanel.js +24 -8
- package/lib/components/QueryBuilderConstantExpressionPanel.js.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderPostFilterPanel.d.ts.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderPostFilterPanel.js +5 -3
- package/lib/components/fetch-structure/QueryBuilderPostFilterPanel.js.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderTDSPanel.d.ts.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderTDSPanel.js +8 -1
- package/lib/components/fetch-structure/QueryBuilderTDSPanel.js.map +1 -1
- package/lib/components/shared/LambdaEditor.d.ts +1 -11
- package/lib/components/shared/LambdaEditor.d.ts.map +1 -1
- package/lib/components/shared/LambdaEditor.js +11 -4
- package/lib/components/shared/LambdaEditor.js.map +1 -1
- package/lib/index.css +2 -2
- package/lib/index.css.map +1 -1
- package/lib/package.json +1 -1
- package/lib/stores/QueryBuilderConstantsState.d.ts +2 -1
- package/lib/stores/QueryBuilderConstantsState.d.ts.map +1 -1
- package/lib/stores/QueryBuilderConstantsState.js +9 -1
- package/lib/stores/QueryBuilderConstantsState.js.map +1 -1
- package/lib/stores/QueryBuilderState.d.ts.map +1 -1
- package/lib/stores/QueryBuilderState.js +1 -0
- package/lib/stores/QueryBuilderState.js.map +1 -1
- package/lib/stores/QueryBuilderTypeaheadHelper.d.ts +1 -1
- package/lib/stores/QueryBuilderTypeaheadHelper.d.ts.map +1 -1
- package/lib/stores/QueryBuilderTypeaheadHelper.js +190 -30
- package/lib/stores/QueryBuilderTypeaheadHelper.js.map +1 -1
- package/lib/stores/fetch-structure/QueryBuilderFetchStructureImplementationState.d.ts +1 -0
- package/lib/stores/fetch-structure/QueryBuilderFetchStructureImplementationState.d.ts.map +1 -1
- package/lib/stores/fetch-structure/QueryBuilderFetchStructureImplementationState.js.map +1 -1
- package/lib/stores/fetch-structure/QueryBuilderFetchStructureState.d.ts +1 -0
- package/lib/stores/fetch-structure/QueryBuilderFetchStructureState.d.ts.map +1 -1
- package/lib/stores/fetch-structure/QueryBuilderFetchStructureState.js +4 -0
- package/lib/stores/fetch-structure/QueryBuilderFetchStructureState.js.map +1 -1
- package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeState.d.ts +1 -0
- package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeState.d.ts.map +1 -1
- package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeState.js +3 -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 +25 -1
- package/lib/stores/fetch-structure/tds/QueryBuilderTDSState.js.map +1 -1
- package/lib/stores/fetch-structure/tds/post-filter/QueryBuilderPostFilterState.d.ts +3 -1
- package/lib/stores/fetch-structure/tds/post-filter/QueryBuilderPostFilterState.d.ts.map +1 -1
- package/lib/stores/fetch-structure/tds/post-filter/QueryBuilderPostFilterState.js +6 -0
- package/lib/stores/fetch-structure/tds/post-filter/QueryBuilderPostFilterState.js.map +1 -1
- package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionColumnState.d.ts +9 -2
- package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionColumnState.d.ts.map +1 -1
- package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionColumnState.js +40 -6
- package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionColumnState.js.map +1 -1
- package/lib/stores/milestoning/QueryBuilderBitemporalMilestoningImplementation.d.ts +1 -0
- package/lib/stores/milestoning/QueryBuilderBitemporalMilestoningImplementation.d.ts.map +1 -1
- package/lib/stores/milestoning/QueryBuilderBitemporalMilestoningImplementation.js +8 -1
- package/lib/stores/milestoning/QueryBuilderBitemporalMilestoningImplementation.js.map +1 -1
- package/lib/stores/milestoning/QueryBuilderBusinessTemporalMilestoningImplementation.d.ts +1 -0
- package/lib/stores/milestoning/QueryBuilderBusinessTemporalMilestoningImplementation.d.ts.map +1 -1
- package/lib/stores/milestoning/QueryBuilderBusinessTemporalMilestoningImplementation.js +7 -1
- package/lib/stores/milestoning/QueryBuilderBusinessTemporalMilestoningImplementation.js.map +1 -1
- package/lib/stores/milestoning/QueryBuilderMilestoningImplementation.d.ts +4 -0
- package/lib/stores/milestoning/QueryBuilderMilestoningImplementation.d.ts.map +1 -1
- package/lib/stores/milestoning/QueryBuilderMilestoningImplementation.js.map +1 -1
- package/lib/stores/milestoning/QueryBuilderProcessingTemporalMilestoningImplementation.d.ts +1 -0
- package/lib/stores/milestoning/QueryBuilderProcessingTemporalMilestoningImplementation.d.ts.map +1 -1
- package/lib/stores/milestoning/QueryBuilderProcessingTemporalMilestoningImplementation.js +7 -1
- package/lib/stores/milestoning/QueryBuilderProcessingTemporalMilestoningImplementation.js.map +1 -1
- package/package.json +3 -3
- package/src/components/QueryBuilderConstantExpressionPanel.tsx +81 -24
- package/src/components/fetch-structure/QueryBuilderPostFilterPanel.tsx +11 -1
- package/src/components/fetch-structure/QueryBuilderTDSPanel.tsx +12 -1
- package/src/components/shared/LambdaEditor.tsx +15 -2
- package/src/stores/QueryBuilderConstantsState.ts +12 -0
- package/src/stores/QueryBuilderState.ts +1 -0
- package/src/stores/QueryBuilderTypeaheadHelper.ts +382 -54
- package/src/stores/fetch-structure/QueryBuilderFetchStructureImplementationState.ts +1 -0
- package/src/stores/fetch-structure/QueryBuilderFetchStructureState.ts +5 -0
- package/src/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeState.ts +4 -0
- package/src/stores/fetch-structure/tds/QueryBuilderTDSState.ts +43 -1
- package/src/stores/fetch-structure/tds/post-filter/QueryBuilderPostFilterState.ts +11 -0
- package/src/stores/fetch-structure/tds/projection/QueryBuilderProjectionColumnState.ts +66 -9
- package/src/stores/milestoning/QueryBuilderBitemporalMilestoningImplementation.ts +14 -0
- package/src/stores/milestoning/QueryBuilderBusinessTemporalMilestoningImplementation.ts +13 -0
- package/src/stores/milestoning/QueryBuilderMilestoningImplementation.ts +7 -0
- package/src/stores/milestoning/QueryBuilderProcessingTemporalMilestoningImplementation.ts +13 -0
|
@@ -25,6 +25,7 @@ import {
|
|
|
25
25
|
CustomSelectorInput,
|
|
26
26
|
Dialog,
|
|
27
27
|
InfoCircleIcon,
|
|
28
|
+
InputWithInlineValidation,
|
|
28
29
|
Modal,
|
|
29
30
|
ModalBody,
|
|
30
31
|
ModalFooter,
|
|
@@ -42,10 +43,7 @@ import {
|
|
|
42
43
|
Multiplicity,
|
|
43
44
|
isValidIdentifier,
|
|
44
45
|
} from '@finos/legend-graph';
|
|
45
|
-
import {
|
|
46
|
-
debounce,
|
|
47
|
-
generateEnumerableNameFromToken,
|
|
48
|
-
} from '@finos/legend-shared';
|
|
46
|
+
import { generateEnumerableNameFromToken } from '@finos/legend-shared';
|
|
49
47
|
import { observer } from 'mobx-react-lite';
|
|
50
48
|
import { DEFAULT_CONSTANT_VARIABLE_NAME } from '../stores/QueryBuilderConfig.js';
|
|
51
49
|
import type { QueryBuilderState } from '../stores/QueryBuilderState.js';
|
|
@@ -58,10 +56,11 @@ import { buildDefaultInstanceValue } from '../stores/shared/ValueSpecificationEd
|
|
|
58
56
|
import { BasicValueSpecificationEditor } from './shared/BasicValueSpecificationEditor.js';
|
|
59
57
|
import { QUERY_BUILDER_TEST_ID } from '../__lib__/QueryBuilderTesting.js';
|
|
60
58
|
import { QUERY_BUILDER_DOCUMENTATION_KEY } from '../__lib__/QueryBuilderDocumentation.js';
|
|
61
|
-
import React, {
|
|
59
|
+
import React, { useEffect, useState } from 'react';
|
|
62
60
|
import { variableExpression_setName } from '../stores/shared/ValueSpecificationModifierHelper.js';
|
|
63
|
-
import {
|
|
61
|
+
import { LambdaEditor } from './shared/LambdaEditor.js';
|
|
64
62
|
import { VariableViewer } from './shared/QueryBuilderVariableSelector.js';
|
|
63
|
+
import { flowResult } from 'mobx';
|
|
65
64
|
|
|
66
65
|
// NOTE: We currently only allow constant variables for primitive types of multiplicity ONE.
|
|
67
66
|
// This is why we don't show multiplicity in the editor.
|
|
@@ -219,26 +218,84 @@ const QuerryBuilderCalculatedConstantExpressionEditor = observer(
|
|
|
219
218
|
const { constantState } = props;
|
|
220
219
|
const queryBuilderState = constantState.queryBuilderState;
|
|
221
220
|
const lambdaState = constantState.lambdaState;
|
|
222
|
-
const
|
|
221
|
+
const close = (): void =>
|
|
223
222
|
queryBuilderState.constantState.setSelectedConstant(undefined);
|
|
224
|
-
const
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
223
|
+
const applicationStore = queryBuilderState.applicationStore;
|
|
224
|
+
const changeConstantName: React.ChangeEventHandler<HTMLInputElement> = (
|
|
225
|
+
event,
|
|
226
|
+
) => {
|
|
227
|
+
variableExpression_setName(constantState.variable, event.target.value);
|
|
228
|
+
};
|
|
229
|
+
useEffect(() => {
|
|
230
|
+
flowResult(
|
|
231
|
+
lambdaState.convertLambdaObjectToGrammarString({
|
|
232
|
+
pretty: true,
|
|
233
|
+
}),
|
|
234
|
+
).catch(applicationStore.alertUnhandledError);
|
|
235
|
+
}, [applicationStore, lambdaState]);
|
|
230
236
|
return (
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
237
|
+
<Dialog
|
|
238
|
+
open={true}
|
|
239
|
+
onClose={close}
|
|
240
|
+
classes={{
|
|
241
|
+
root: 'editor-modal__root-container',
|
|
242
|
+
container: 'editor-modal__container',
|
|
243
|
+
paper: 'editor-modal__content',
|
|
244
|
+
}}
|
|
245
|
+
>
|
|
246
|
+
<Modal
|
|
247
|
+
darkMode={true}
|
|
248
|
+
className={clsx('editor-modal query-builder__constants__modal', {
|
|
249
|
+
'query-builder__constants__modal--has-error': Boolean(
|
|
250
|
+
lambdaState.parserError,
|
|
251
|
+
),
|
|
252
|
+
})}
|
|
253
|
+
>
|
|
254
|
+
<ModalHeader>
|
|
255
|
+
<div className="modal__title">Update Calculated Constants</div>
|
|
256
|
+
{lambdaState.parserError && (
|
|
257
|
+
<div className="modal__title__error-badge">
|
|
258
|
+
Failed to parse query
|
|
259
|
+
</div>
|
|
260
|
+
)}
|
|
261
|
+
</ModalHeader>
|
|
262
|
+
<ModalBody>
|
|
263
|
+
<div
|
|
264
|
+
className={clsx('query-builder__constants__modal__content', {
|
|
265
|
+
backdrop__element: Boolean(lambdaState.parserError),
|
|
266
|
+
})}
|
|
267
|
+
>
|
|
268
|
+
<div className="query-builder__constants__modal__name">
|
|
269
|
+
<InputWithInlineValidation
|
|
270
|
+
className="query-builder__constants__modal__name__input input--dark"
|
|
271
|
+
spellCheck={false}
|
|
272
|
+
value={constantState.variable.name}
|
|
273
|
+
onChange={changeConstantName}
|
|
274
|
+
placeholder="Constant Name"
|
|
275
|
+
/>
|
|
276
|
+
</div>
|
|
277
|
+
<LambdaEditor
|
|
278
|
+
className="query-builder__constants__lambda-editor"
|
|
279
|
+
disabled={
|
|
280
|
+
lambdaState.convertingLambdaToStringState.isInProgress
|
|
281
|
+
}
|
|
282
|
+
lambdaEditorState={lambdaState}
|
|
283
|
+
forceBackdrop={false}
|
|
284
|
+
autoFocus={true}
|
|
285
|
+
/>
|
|
286
|
+
</div>
|
|
287
|
+
</ModalBody>
|
|
288
|
+
<ModalFooter>
|
|
289
|
+
<button
|
|
290
|
+
className="btn btn--dark"
|
|
291
|
+
onClick={close}
|
|
292
|
+
disabled={Boolean(lambdaState.parserError)}
|
|
293
|
+
>
|
|
294
|
+
Close
|
|
295
|
+
</button>
|
|
296
|
+
</ModalFooter>
|
|
297
|
+
</Modal>
|
|
298
|
+
</Dialog>
|
|
242
299
|
);
|
|
243
300
|
},
|
|
244
301
|
);
|
|
@@ -46,6 +46,7 @@ import {
|
|
|
46
46
|
MoreVerticalIcon,
|
|
47
47
|
MenuContentItemIcon,
|
|
48
48
|
MenuContentItemLabel,
|
|
49
|
+
PanelLoadingIndicator,
|
|
49
50
|
} from '@finos/legend-art';
|
|
50
51
|
import {
|
|
51
52
|
type ValueSpecification,
|
|
@@ -883,7 +884,11 @@ const QueryBuilderPostFilterPanelContent = observer(
|
|
|
883
884
|
!aggregateColumnState &&
|
|
884
885
|
columnState instanceof QueryBuilderDerivationProjectionColumnState
|
|
885
886
|
) {
|
|
886
|
-
await flowResult(
|
|
887
|
+
await flowResult(
|
|
888
|
+
columnState.fetchDerivationLambdaReturnType({
|
|
889
|
+
isBeingDropped: true,
|
|
890
|
+
}),
|
|
891
|
+
);
|
|
887
892
|
}
|
|
888
893
|
postFilterConditionState = new PostFilterConditionState(
|
|
889
894
|
postFilterState,
|
|
@@ -1034,6 +1039,11 @@ const QueryBuilderPostFilterPanelContent = observer(
|
|
|
1034
1039
|
isDroppable={isDroppable && postFilterState.isEmpty}
|
|
1035
1040
|
dropTargetConnector={dropTargetConnector}
|
|
1036
1041
|
>
|
|
1042
|
+
{
|
|
1043
|
+
<PanelLoadingIndicator
|
|
1044
|
+
isLoading={Boolean(postFilterState.derivedColumnBeingDropped)}
|
|
1045
|
+
/>
|
|
1046
|
+
}
|
|
1037
1047
|
{postFilterState.isEmpty && (
|
|
1038
1048
|
<BlankPanelPlaceholder
|
|
1039
1049
|
text="Add a post-filter condition"
|
|
@@ -174,7 +174,17 @@ const QueryBuilderDerivationProjectionColumnEditor = observer(
|
|
|
174
174
|
}) => {
|
|
175
175
|
const { projectionColumnState } = props;
|
|
176
176
|
const hasParserError = projectionColumnState.tdsState.hasParserError;
|
|
177
|
-
|
|
177
|
+
const onEditorBlur = (): void => {
|
|
178
|
+
flowResult(
|
|
179
|
+
projectionColumnState.fetchDerivationLambdaReturnType({
|
|
180
|
+
forceConversionStringToLambda: true,
|
|
181
|
+
forceRefresh: true,
|
|
182
|
+
}),
|
|
183
|
+
).catch(
|
|
184
|
+
projectionColumnState.tdsState.queryBuilderState.applicationStore
|
|
185
|
+
.alertUnhandledError,
|
|
186
|
+
);
|
|
187
|
+
};
|
|
178
188
|
const handleDrop = useCallback(
|
|
179
189
|
(
|
|
180
190
|
item:
|
|
@@ -247,6 +257,7 @@ const QueryBuilderDerivationProjectionColumnEditor = observer(
|
|
|
247
257
|
}
|
|
248
258
|
lambdaEditorState={projectionColumnState.derivationLambdaEditorState}
|
|
249
259
|
forceBackdrop={hasParserError}
|
|
260
|
+
onEditorBlur={onEditorBlur}
|
|
250
261
|
/>
|
|
251
262
|
</div>
|
|
252
263
|
);
|
|
@@ -99,6 +99,7 @@ const LambdaEditor_Inner = observer(
|
|
|
99
99
|
autoFocus?: boolean | undefined;
|
|
100
100
|
openInPopUp?: (() => void) | undefined;
|
|
101
101
|
onEditorFocus?: (() => void) | undefined;
|
|
102
|
+
onEditorBlur?: (() => void) | undefined;
|
|
102
103
|
disableExpansion?: boolean | undefined;
|
|
103
104
|
forceExpansion?: boolean | undefined;
|
|
104
105
|
}) => {
|
|
@@ -119,6 +120,7 @@ const LambdaEditor_Inner = observer(
|
|
|
119
120
|
autoFocus,
|
|
120
121
|
openInPopUp,
|
|
121
122
|
onEditorFocus,
|
|
123
|
+
onEditorBlur,
|
|
122
124
|
} = props;
|
|
123
125
|
const applicationStore = useApplicationStore();
|
|
124
126
|
const onDidChangeModelContentEventDisposer = useRef<
|
|
@@ -127,6 +129,9 @@ const LambdaEditor_Inner = observer(
|
|
|
127
129
|
const onDidFocusEditorWidgetDisposer = useRef<IDisposable | undefined>(
|
|
128
130
|
undefined,
|
|
129
131
|
);
|
|
132
|
+
const onDidBlurEditorTextDisposer = useRef<IDisposable | undefined>(
|
|
133
|
+
undefined,
|
|
134
|
+
);
|
|
130
135
|
const value = normalizeLineEnding(lambdaEditorState.lambdaString);
|
|
131
136
|
const parserError = lambdaEditorState.parserError;
|
|
132
137
|
const compilationError = lambdaEditorState.compilationError;
|
|
@@ -285,7 +290,12 @@ const LambdaEditor_Inner = observer(
|
|
|
285
290
|
onEditorFocus?.();
|
|
286
291
|
},
|
|
287
292
|
);
|
|
288
|
-
|
|
293
|
+
if (onEditorBlur) {
|
|
294
|
+
onDidBlurEditorTextDisposer.current = editor.onDidBlurEditorText(() => {
|
|
295
|
+
transformStringToLambda?.cancel();
|
|
296
|
+
onEditorBlur();
|
|
297
|
+
});
|
|
298
|
+
}
|
|
289
299
|
// Set the text value
|
|
290
300
|
const currentValue = getCodeEditorValue(editor);
|
|
291
301
|
const editorModel = editor.getModel();
|
|
@@ -419,7 +429,7 @@ const LambdaEditor_Inner = observer(
|
|
|
419
429
|
},
|
|
420
430
|
);
|
|
421
431
|
|
|
422
|
-
|
|
432
|
+
const LambdaEditor_PopUp = observer(
|
|
423
433
|
(props: {
|
|
424
434
|
title?: string | undefined;
|
|
425
435
|
className?: string | undefined;
|
|
@@ -668,6 +678,7 @@ type LambdaEditorBaseProps = {
|
|
|
668
678
|
forceBackdrop: boolean;
|
|
669
679
|
autoFocus?: boolean | undefined;
|
|
670
680
|
onEditorFocus?: (() => void) | undefined;
|
|
681
|
+
onEditorBlur?: (() => void) | undefined;
|
|
671
682
|
};
|
|
672
683
|
|
|
673
684
|
export const InlineLambdaEditor = observer(
|
|
@@ -716,6 +727,7 @@ export const InlineLambdaEditor = observer(
|
|
|
716
727
|
hideErrorBar,
|
|
717
728
|
autoFocus,
|
|
718
729
|
onEditorFocus,
|
|
730
|
+
onEditorBlur,
|
|
719
731
|
} = props;
|
|
720
732
|
const [showPopUp, setShowPopUp] = useState(false);
|
|
721
733
|
const openInPopUp = (): void => setShowPopUp(true);
|
|
@@ -786,6 +798,7 @@ export const InlineLambdaEditor = observer(
|
|
|
786
798
|
autoFocus={autoFocus}
|
|
787
799
|
openInPopUp={openInPopUp}
|
|
788
800
|
onEditorFocus={onEditorFocus}
|
|
801
|
+
onEditorBlur={onEditorBlur}
|
|
789
802
|
hideErrorBar={hideErrorBar}
|
|
790
803
|
forceExpansion={
|
|
791
804
|
disableExpansion !== undefined
|
|
@@ -38,6 +38,7 @@ import {
|
|
|
38
38
|
LogEvent,
|
|
39
39
|
changeEntry,
|
|
40
40
|
assertTrue,
|
|
41
|
+
ActionState,
|
|
41
42
|
} from '@finos/legend-shared';
|
|
42
43
|
import { action, makeObservable, observable } from 'mobx';
|
|
43
44
|
import { QUERY_BUILDER_STATE_HASH_STRUCTURE } from './QueryBuilderStateHashUtils.js';
|
|
@@ -152,10 +153,13 @@ export class QueryBuilderSimpleConstantExpressionState
|
|
|
152
153
|
export class QueryBuilderConstantLambdaEditorState extends LambdaEditorState {
|
|
153
154
|
readonly queryBuilderState: QueryBuilderState;
|
|
154
155
|
calculatedState: QueryBuilderCalculatedConstantExpressionState;
|
|
156
|
+
convertingLambdaToStringState = ActionState.create();
|
|
157
|
+
|
|
155
158
|
constructor(calculatedState: QueryBuilderCalculatedConstantExpressionState) {
|
|
156
159
|
super('', '');
|
|
157
160
|
makeObservable(this, {
|
|
158
161
|
calculatedState: observable,
|
|
162
|
+
convertingLambdaToStringState: observable,
|
|
159
163
|
buildEmptyValueSpec: observable,
|
|
160
164
|
});
|
|
161
165
|
this.calculatedState = calculatedState;
|
|
@@ -184,6 +188,7 @@ export class QueryBuilderConstantLambdaEditorState extends LambdaEditorState {
|
|
|
184
188
|
override *convertLambdaGrammarStringToObject(): GeneratorFn<void> {
|
|
185
189
|
if (this.lambdaString) {
|
|
186
190
|
try {
|
|
191
|
+
this.convertingLambdaToStringState.inProgress();
|
|
187
192
|
const valSpec =
|
|
188
193
|
(yield this.queryBuilderState.graphManagerState.graphManager.pureCodeToValueSpecification(
|
|
189
194
|
this.fullLambdaString,
|
|
@@ -199,10 +204,13 @@ export class QueryBuilderConstantLambdaEditorState extends LambdaEditorState {
|
|
|
199
204
|
LogEvent.create(GRAPH_MANAGER_EVENT.PARSING_FAILURE),
|
|
200
205
|
error,
|
|
201
206
|
);
|
|
207
|
+
} finally {
|
|
208
|
+
this.convertingLambdaToStringState.complete();
|
|
202
209
|
}
|
|
203
210
|
} else {
|
|
204
211
|
this.clearErrors();
|
|
205
212
|
this.calculatedState.setValue(this.buildEmptyValueSpec());
|
|
213
|
+
this.convertingLambdaToStringState.complete();
|
|
206
214
|
}
|
|
207
215
|
}
|
|
208
216
|
override *convertLambdaObjectToGrammarString(
|
|
@@ -255,6 +263,10 @@ export class QueryBuilderCalculatedConstantExpressionState
|
|
|
255
263
|
});
|
|
256
264
|
this.value = value;
|
|
257
265
|
this.lambdaState = new QueryBuilderConstantLambdaEditorState(this);
|
|
266
|
+
observe_ValueSpecification(
|
|
267
|
+
variable,
|
|
268
|
+
this.queryBuilderState.observerContext,
|
|
269
|
+
);
|
|
258
270
|
}
|
|
259
271
|
|
|
260
272
|
setValue(val: PlainObject): void {
|
|
@@ -552,6 +552,7 @@ export abstract class QueryBuilderState implements CommandRegistrar {
|
|
|
552
552
|
if (this.parametersState.parameterStates.length > 0) {
|
|
553
553
|
this.setShowParametersPanel(true);
|
|
554
554
|
}
|
|
555
|
+
this.fetchStructureState.initializeWithQuery();
|
|
555
556
|
} catch (error) {
|
|
556
557
|
assertErrorThrown(error);
|
|
557
558
|
this.resetQueryResult({ preserveResult: options?.preserveResult });
|