@finos/legend-query-builder 1.0.2 → 1.0.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/components/QueryBuilderConstantExpressionPanel.d.ts.map +1 -1
- package/lib/components/QueryBuilderConstantExpressionPanel.js +4 -4
- package/lib/components/QueryBuilderConstantExpressionPanel.js.map +1 -1
- package/lib/components/QueryBuilderParametersPanel.js +2 -2
- package/lib/components/QueryBuilderParametersPanel.js.map +1 -1
- package/lib/components/QueryBuilderPropertyExpressionEditor.js +5 -6
- package/lib/components/QueryBuilderPropertyExpressionEditor.js.map +1 -1
- package/lib/components/QueryBuilderResultPanel.d.ts.map +1 -1
- package/lib/components/QueryBuilderResultPanel.js +8 -13
- package/lib/components/QueryBuilderResultPanel.js.map +1 -1
- package/lib/components/explorer/QueryBuilderExplorerPanel.d.ts.map +1 -1
- package/lib/components/explorer/QueryBuilderExplorerPanel.js +6 -6
- package/lib/components/explorer/QueryBuilderExplorerPanel.js.map +1 -1
- package/lib/components/explorer/QueryBuilderMilestoningEditor.d.ts.map +1 -1
- package/lib/components/explorer/QueryBuilderMilestoningEditor.js +3 -5
- package/lib/components/explorer/QueryBuilderMilestoningEditor.js.map +1 -1
- package/lib/components/explorer/QueryBuilderPropertySearchPanel.d.ts.map +1 -1
- package/lib/components/explorer/QueryBuilderPropertySearchPanel.js +5 -6
- package/lib/components/explorer/QueryBuilderPropertySearchPanel.js.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderPostFilterPanel.js +1 -1
- package/lib/components/fetch-structure/QueryBuilderPostFilterPanel.js.map +1 -1
- package/lib/components/filter/QueryBuilderFilterPanel.js +1 -1
- package/lib/components/filter/QueryBuilderFilterPanel.js.map +1 -1
- package/lib/components/shared/BasicValueSpecificationEditor.d.ts.map +1 -1
- package/lib/components/shared/BasicValueSpecificationEditor.js +91 -41
- package/lib/components/shared/BasicValueSpecificationEditor.js.map +1 -1
- package/lib/components/shared/CustomDatePicker.d.ts.map +1 -1
- package/lib/components/shared/CustomDatePicker.js +13 -14
- package/lib/components/shared/CustomDatePicker.js.map +1 -1
- package/lib/components/shared/LambdaEditor.d.ts.map +1 -1
- package/lib/components/shared/LambdaEditor.js +1 -1
- package/lib/components/shared/LambdaEditor.js.map +1 -1
- package/lib/components/watermark/QueryBuilderWatermark.d.ts.map +1 -1
- package/lib/components/watermark/QueryBuilderWatermark.js +1 -1
- package/lib/components/watermark/QueryBuilderWatermark.js.map +1 -1
- package/lib/graphManager/QueryBuilderSupportedFunctions.d.ts +1 -0
- package/lib/graphManager/QueryBuilderSupportedFunctions.d.ts.map +1 -1
- package/lib/graphManager/QueryBuilderSupportedFunctions.js +1 -0
- package/lib/graphManager/QueryBuilderSupportedFunctions.js.map +1 -1
- package/lib/graphManager/protocol/pure/QueryBuilder_PureProtocolProcessorPlugin.js.map +1 -1
- package/lib/graphManager/protocol/pure/v1/V1_QueryValueSpecificationBuilderHelper.d.ts +8 -8
- package/lib/graphManager/protocol/pure/v1/V1_QueryValueSpecificationBuilderHelper.d.ts.map +1 -1
- package/lib/graphManager/protocol/pure/v1/V1_QueryValueSpecificationBuilderHelper.js +17 -26
- package/lib/graphManager/protocol/pure/v1/V1_QueryValueSpecificationBuilderHelper.js.map +1 -1
- package/lib/index.css +2 -2
- package/lib/index.css.map +1 -1
- package/lib/package.json +11 -10
- package/lib/stores/QueryBuilderChangeDetectionState.d.ts +4 -4
- package/lib/stores/QueryBuilderChangeDetectionState.d.ts.map +1 -1
- package/lib/stores/QueryBuilderChangeDetectionState.js +9 -9
- package/lib/stores/QueryBuilderChangeDetectionState.js.map +1 -1
- package/lib/stores/QueryBuilderConstantsState.d.ts.map +1 -1
- package/lib/stores/QueryBuilderConstantsState.js +4 -4
- package/lib/stores/QueryBuilderConstantsState.js.map +1 -1
- package/lib/stores/QueryBuilderPropertyEditorState.d.ts +2 -3
- package/lib/stores/QueryBuilderPropertyEditorState.d.ts.map +1 -1
- package/lib/stores/QueryBuilderPropertyEditorState.js +9 -12
- package/lib/stores/QueryBuilderPropertyEditorState.js.map +1 -1
- package/lib/stores/QueryBuilderState.d.ts +8 -5
- package/lib/stores/QueryBuilderState.d.ts.map +1 -1
- package/lib/stores/QueryBuilderState.js +25 -21
- package/lib/stores/QueryBuilderState.js.map +1 -1
- package/lib/stores/QueryBuilderStateBuilder.d.ts +2 -2
- package/lib/stores/QueryBuilderStateBuilder.d.ts.map +1 -1
- package/lib/stores/QueryBuilderStateBuilder.js +16 -12
- package/lib/stores/QueryBuilderStateBuilder.js.map +1 -1
- package/lib/stores/QueryBuilderTextEditorState.d.ts.map +1 -1
- package/lib/stores/QueryBuilderTextEditorState.js +4 -1
- package/lib/stores/QueryBuilderTextEditorState.js.map +1 -1
- package/lib/stores/QueryBuilderValueSpecificationBuilderHelper.js +1 -1
- package/lib/stores/QueryBuilderValueSpecificationBuilderHelper.js.map +1 -1
- package/lib/stores/QueryBuilderValueSpecificationHelper.d.ts +9 -1
- package/lib/stores/QueryBuilderValueSpecificationHelper.d.ts.map +1 -1
- package/lib/stores/QueryBuilderValueSpecificationHelper.js +22 -1
- package/lib/stores/QueryBuilderValueSpecificationHelper.js.map +1 -1
- package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeUtil.d.ts.map +1 -1
- package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeUtil.js +2 -2
- package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeUtil.js.map +1 -1
- package/lib/stores/fetch-structure/tds/post-filter/QueryBuilderPostFilterState.js +1 -1
- package/lib/stores/fetch-structure/tds/post-filter/QueryBuilderPostFilterState.js.map +1 -1
- package/lib/stores/fetch-structure/tds/post-filter/QueryBuilderPostFilterStateBuilder.d.ts.map +1 -1
- package/lib/stores/fetch-structure/tds/post-filter/QueryBuilderPostFilterStateBuilder.js +21 -1
- package/lib/stores/fetch-structure/tds/post-filter/QueryBuilderPostFilterStateBuilder.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 +2 -1
- 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 +2 -1
- 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 +6 -3
- 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 +4 -2
- 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 +4 -2
- 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 +2 -1
- package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_StartWith.js.map +1 -1
- package/lib/stores/filter/QueryBuilderFilterState.js +2 -2
- package/lib/stores/filter/QueryBuilderFilterState.js.map +1 -1
- package/lib/stores/filter/operators/QueryBuilderFilterOperatorValueSpecificationBuilder.d.ts.map +1 -1
- package/lib/stores/filter/operators/QueryBuilderFilterOperatorValueSpecificationBuilder.js +9 -2
- package/lib/stores/filter/operators/QueryBuilderFilterOperatorValueSpecificationBuilder.js.map +1 -1
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_Contain.d.ts.map +1 -1
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_Contain.js +1 -1
- 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 +1 -1
- 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 +4 -3
- 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 +2 -2
- 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 +2 -2
- 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 +2 -2
- 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 +2 -2
- 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 +1 -1
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_StartWith.js.map +1 -1
- package/lib/stores/milestoning/QueryBuilderMilestoningState.d.ts.map +1 -1
- package/lib/stores/milestoning/QueryBuilderMilestoningState.js +3 -3
- package/lib/stores/milestoning/QueryBuilderMilestoningState.js.map +1 -1
- package/lib/stores/shared/LambdaParameterState.d.ts +2 -2
- package/lib/stores/shared/LambdaParameterState.d.ts.map +1 -1
- package/lib/stores/shared/LambdaParameterState.js +5 -5
- package/lib/stores/shared/LambdaParameterState.js.map +1 -1
- package/lib/stores/shared/ValueSpecificationEditorHelper.d.ts +4 -4
- package/lib/stores/shared/ValueSpecificationEditorHelper.d.ts.map +1 -1
- package/lib/stores/shared/ValueSpecificationEditorHelper.js +11 -15
- package/lib/stores/shared/ValueSpecificationEditorHelper.js.map +1 -1
- package/lib/stores/shared/ValueSpecificationModifierHelper.d.ts +8 -8
- package/lib/stores/shared/ValueSpecificationModifierHelper.d.ts.map +1 -1
- package/lib/stores/shared/ValueSpecificationModifierHelper.js +20 -17
- package/lib/stores/shared/ValueSpecificationModifierHelper.js.map +1 -1
- package/lib/stores/watermark/QueryBuilderWatermarkState.d.ts.map +1 -1
- package/lib/stores/watermark/QueryBuilderWatermarkState.js +1 -1
- package/lib/stores/watermark/QueryBuilderWatermarkState.js.map +1 -1
- package/package.json +18 -17
- package/src/components/QueryBuilderConstantExpressionPanel.tsx +4 -2
- package/src/components/QueryBuilderParametersPanel.tsx +2 -2
- package/src/components/QueryBuilderPropertyExpressionEditor.tsx +6 -6
- package/src/components/QueryBuilderResultPanel.tsx +19 -15
- package/src/components/explorer/QueryBuilderExplorerPanel.tsx +10 -11
- package/src/components/explorer/QueryBuilderMilestoningEditor.tsx +7 -5
- package/src/components/explorer/QueryBuilderPropertySearchPanel.tsx +9 -6
- package/src/components/fetch-structure/QueryBuilderPostFilterPanel.tsx +1 -1
- package/src/components/filter/QueryBuilderFilterPanel.tsx +1 -1
- package/src/components/shared/BasicValueSpecificationEditor.tsx +192 -48
- package/src/components/shared/CustomDatePicker.tsx +54 -26
- package/src/components/shared/LambdaEditor.tsx +0 -1
- package/src/components/watermark/QueryBuilderWatermark.tsx +1 -3
- package/src/graphManager/QueryBuilderSupportedFunctions.ts +4 -0
- package/src/graphManager/protocol/pure/QueryBuilder_PureProtocolProcessorPlugin.ts +1 -1
- package/src/graphManager/protocol/pure/v1/V1_QueryValueSpecificationBuilderHelper.ts +67 -68
- package/src/stores/QueryBuilderChangeDetectionState.ts +13 -11
- package/src/stores/QueryBuilderConstantsState.ts +4 -3
- package/src/stores/QueryBuilderPropertyEditorState.ts +17 -13
- package/src/stores/QueryBuilderState.ts +35 -24
- package/src/stores/QueryBuilderStateBuilder.ts +20 -18
- package/src/stores/QueryBuilderTextEditorState.ts +4 -1
- package/src/stores/QueryBuilderValueSpecificationBuilderHelper.ts +1 -1
- package/src/stores/QueryBuilderValueSpecificationHelper.ts +36 -0
- package/src/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeUtil.ts +10 -2
- package/src/stores/fetch-structure/tds/post-filter/QueryBuilderPostFilterState.ts +1 -1
- package/src/stores/fetch-structure/tds/post-filter/QueryBuilderPostFilterStateBuilder.ts +26 -1
- package/src/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_Contain.ts +2 -0
- package/src/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_EndWith.ts +2 -0
- package/src/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_Equal.ts +14 -3
- package/src/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_GreaterThan.ts +4 -0
- package/src/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_LessThan.ts +4 -0
- package/src/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_StartWith.ts +2 -0
- package/src/stores/filter/QueryBuilderFilterState.ts +2 -2
- package/src/stores/filter/operators/QueryBuilderFilterOperatorValueSpecificationBuilder.ts +17 -4
- package/src/stores/filter/operators/QueryBuilderFilterOperator_Contain.ts +1 -0
- package/src/stores/filter/operators/QueryBuilderFilterOperator_EndWith.ts +1 -0
- package/src/stores/filter/operators/QueryBuilderFilterOperator_Equal.ts +12 -3
- package/src/stores/filter/operators/QueryBuilderFilterOperator_GreaterThan.ts +2 -0
- package/src/stores/filter/operators/QueryBuilderFilterOperator_GreaterThanEqual.ts +2 -0
- package/src/stores/filter/operators/QueryBuilderFilterOperator_LessThan.ts +2 -0
- package/src/stores/filter/operators/QueryBuilderFilterOperator_LessThanEqual.ts +2 -0
- package/src/stores/filter/operators/QueryBuilderFilterOperator_StartWith.ts +1 -0
- package/src/stores/milestoning/QueryBuilderMilestoningState.ts +3 -9
- package/src/stores/shared/LambdaParameterState.ts +9 -5
- package/src/stores/shared/ValueSpecificationEditorHelper.ts +24 -9
- package/src/stores/shared/ValueSpecificationModifierHelper.ts +42 -20
- package/src/stores/watermark/QueryBuilderWatermarkState.ts +1 -4
|
@@ -32,6 +32,7 @@ import {
|
|
|
32
32
|
FilledWindowMaximizeIcon,
|
|
33
33
|
BasePopover,
|
|
34
34
|
PanelFormSection,
|
|
35
|
+
CalculateIcon,
|
|
35
36
|
} from '@finos/legend-art';
|
|
36
37
|
import {
|
|
37
38
|
type Enum,
|
|
@@ -53,6 +54,8 @@ import {
|
|
|
53
54
|
getEnumValue,
|
|
54
55
|
getMultiplicityDescription,
|
|
55
56
|
type ObserverContext,
|
|
57
|
+
matchFunctionName,
|
|
58
|
+
isSubType,
|
|
56
59
|
} from '@finos/legend-graph';
|
|
57
60
|
import {
|
|
58
61
|
type DebouncedFunc,
|
|
@@ -62,6 +65,7 @@ import {
|
|
|
62
65
|
returnUndefOnError,
|
|
63
66
|
uniq,
|
|
64
67
|
parseCSVString,
|
|
68
|
+
guaranteeIsNumber,
|
|
65
69
|
} from '@finos/legend-shared';
|
|
66
70
|
import { flowResult } from 'mobx';
|
|
67
71
|
import { observer } from 'mobx-react-lite';
|
|
@@ -72,6 +76,9 @@ import {
|
|
|
72
76
|
instanceValue_setValues,
|
|
73
77
|
} from '../../stores/shared/ValueSpecificationModifierHelper.js';
|
|
74
78
|
import { CustomDatePicker } from './CustomDatePicker.js';
|
|
79
|
+
import { QUERY_BUILDER_SUPPORTED_FUNCTIONS } from '../../graphManager/QueryBuilderSupportedFunctions.js';
|
|
80
|
+
import { simplifyValueExpression } from '../../stores/QueryBuilderValueSpecificationHelper.js';
|
|
81
|
+
import { evaluate } from 'mathjs';
|
|
75
82
|
|
|
76
83
|
type TypeCheckOption = {
|
|
77
84
|
expectedType: Type;
|
|
@@ -210,6 +217,7 @@ const StringPrimitiveInstanceValueEditor = observer(
|
|
|
210
217
|
cleanUpReloadValues?: () => void;
|
|
211
218
|
}
|
|
212
219
|
| undefined;
|
|
220
|
+
obseverContext: ObserverContext;
|
|
213
221
|
}) => {
|
|
214
222
|
const {
|
|
215
223
|
valueSpecification,
|
|
@@ -217,12 +225,13 @@ const StringPrimitiveInstanceValueEditor = observer(
|
|
|
217
225
|
resetValue,
|
|
218
226
|
setValueSpecification,
|
|
219
227
|
selectorConfig,
|
|
228
|
+
obseverContext,
|
|
220
229
|
} = props;
|
|
221
230
|
const useSelector = Boolean(selectorConfig);
|
|
222
231
|
const applicationStore = useApplicationStore();
|
|
223
232
|
const value = valueSpecification.values[0] as string;
|
|
224
233
|
const updateValueSpec = (val: string): void => {
|
|
225
|
-
instanceValue_setValue(valueSpecification, val, 0);
|
|
234
|
+
instanceValue_setValue(valueSpecification, val, 0, obseverContext);
|
|
226
235
|
setValueSpecification(valueSpecification);
|
|
227
236
|
};
|
|
228
237
|
const changeInputValue: React.ChangeEventHandler<HTMLInputElement> = (
|
|
@@ -316,12 +325,18 @@ const BooleanPrimitiveInstanceValueEditor = observer(
|
|
|
316
325
|
className?: string | undefined;
|
|
317
326
|
resetValue: () => void;
|
|
318
327
|
setValueSpecification: (val: ValueSpecification) => void;
|
|
328
|
+
obseverContext: ObserverContext;
|
|
319
329
|
}) => {
|
|
320
|
-
const {
|
|
321
|
-
|
|
330
|
+
const {
|
|
331
|
+
valueSpecification,
|
|
332
|
+
className,
|
|
333
|
+
resetValue,
|
|
334
|
+
setValueSpecification,
|
|
335
|
+
obseverContext,
|
|
336
|
+
} = props;
|
|
322
337
|
const value = valueSpecification.values[0] as boolean;
|
|
323
338
|
const toggleValue = (): void => {
|
|
324
|
-
instanceValue_setValue(valueSpecification, !value, 0);
|
|
339
|
+
instanceValue_setValue(valueSpecification, !value, 0, obseverContext);
|
|
325
340
|
setValueSpecification(valueSpecification);
|
|
326
341
|
};
|
|
327
342
|
|
|
@@ -354,6 +369,7 @@ const NumberPrimitiveInstanceValueEditor = observer(
|
|
|
354
369
|
className?: string | undefined;
|
|
355
370
|
resetValue: () => void;
|
|
356
371
|
setValueSpecification: (val: ValueSpecification) => void;
|
|
372
|
+
obseverContext: ObserverContext;
|
|
357
373
|
}) => {
|
|
358
374
|
const {
|
|
359
375
|
valueSpecification,
|
|
@@ -361,26 +377,95 @@ const NumberPrimitiveInstanceValueEditor = observer(
|
|
|
361
377
|
className,
|
|
362
378
|
resetValue,
|
|
363
379
|
setValueSpecification,
|
|
380
|
+
obseverContext,
|
|
364
381
|
} = props;
|
|
365
|
-
const value
|
|
382
|
+
const [value, setValue] = useState(
|
|
383
|
+
(valueSpecification.values[0] as number).toString(),
|
|
384
|
+
);
|
|
385
|
+
const inputRef = useRef<HTMLInputElement>(null);
|
|
386
|
+
const numericValue = isInteger
|
|
387
|
+
? Number.parseInt(Number(value).toString(), 10)
|
|
388
|
+
: Number(value);
|
|
389
|
+
|
|
366
390
|
const changeValue: React.ChangeEventHandler<HTMLInputElement> = (event) => {
|
|
367
|
-
|
|
368
|
-
? parseInt(event.target.value, 10)
|
|
369
|
-
: parseFloat(event.target.value);
|
|
370
|
-
inputVal = isNaN(inputVal) ? 0 : inputVal;
|
|
371
|
-
instanceValue_setValue(valueSpecification, inputVal, 0);
|
|
372
|
-
setValueSpecification(valueSpecification);
|
|
391
|
+
setValue(event.target.value);
|
|
373
392
|
};
|
|
374
393
|
|
|
394
|
+
// Support expression evaluation
|
|
395
|
+
const calculateExpression = (): void => {
|
|
396
|
+
if (isNaN(numericValue)) {
|
|
397
|
+
try {
|
|
398
|
+
const calculatedValue = guaranteeIsNumber(evaluate(value));
|
|
399
|
+
setValue(
|
|
400
|
+
isInteger
|
|
401
|
+
? Number.parseInt(calculatedValue.toString(), 10).toString()
|
|
402
|
+
: Number(calculatedValue).toString(),
|
|
403
|
+
);
|
|
404
|
+
} catch {
|
|
405
|
+
setValue((valueSpecification.values[0] as number).toString());
|
|
406
|
+
}
|
|
407
|
+
} else {
|
|
408
|
+
setValue(numericValue.toString());
|
|
409
|
+
}
|
|
410
|
+
};
|
|
411
|
+
|
|
412
|
+
const onKeyDown: React.KeyboardEventHandler<HTMLInputElement> = (event) => {
|
|
413
|
+
if (event.code === 'Enter') {
|
|
414
|
+
calculateExpression();
|
|
415
|
+
inputRef.current?.focus();
|
|
416
|
+
} else if (event.code === 'Escape') {
|
|
417
|
+
inputRef.current?.select();
|
|
418
|
+
}
|
|
419
|
+
};
|
|
420
|
+
|
|
421
|
+
useEffect(() => {
|
|
422
|
+
setValue((valueSpecification.values[0] as number).toString());
|
|
423
|
+
}, [valueSpecification]);
|
|
424
|
+
|
|
425
|
+
useEffect(() => {
|
|
426
|
+
if (
|
|
427
|
+
!isNaN(numericValue) &&
|
|
428
|
+
numericValue !== valueSpecification.values[0]
|
|
429
|
+
) {
|
|
430
|
+
instanceValue_setValue(
|
|
431
|
+
valueSpecification,
|
|
432
|
+
numericValue,
|
|
433
|
+
0,
|
|
434
|
+
obseverContext,
|
|
435
|
+
);
|
|
436
|
+
setValueSpecification(valueSpecification);
|
|
437
|
+
}
|
|
438
|
+
}, [
|
|
439
|
+
numericValue,
|
|
440
|
+
valueSpecification,
|
|
441
|
+
setValueSpecification,
|
|
442
|
+
obseverContext,
|
|
443
|
+
]);
|
|
444
|
+
|
|
375
445
|
return (
|
|
376
446
|
<div className={clsx('value-spec-editor', className)}>
|
|
377
|
-
<
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
447
|
+
<div className="value-spec-editor__number__input-container">
|
|
448
|
+
<input
|
|
449
|
+
ref={inputRef}
|
|
450
|
+
className="panel__content__form__section__input value-spec-editor__input value-spec-editor__number__input"
|
|
451
|
+
spellCheck={false}
|
|
452
|
+
type="text" // NOTE: we leave this as text so that we can support expression evaluation
|
|
453
|
+
inputMode="numeric"
|
|
454
|
+
value={value}
|
|
455
|
+
onChange={changeValue}
|
|
456
|
+
onBlur={calculateExpression}
|
|
457
|
+
onKeyDown={onKeyDown}
|
|
458
|
+
/>
|
|
459
|
+
<div className="value-spec-editor__number__actions">
|
|
460
|
+
<button
|
|
461
|
+
className="value-spec-editor__number__action"
|
|
462
|
+
title="Evaluate Expression (Enter)"
|
|
463
|
+
onClick={calculateExpression}
|
|
464
|
+
>
|
|
465
|
+
<CalculateIcon />
|
|
466
|
+
</button>
|
|
467
|
+
</div>
|
|
468
|
+
</div>
|
|
384
469
|
<button
|
|
385
470
|
className="value-spec-editor__reset-btn"
|
|
386
471
|
title="Reset"
|
|
@@ -399,9 +484,15 @@ const EnumValueInstanceValueEditor = observer(
|
|
|
399
484
|
className?: string | undefined;
|
|
400
485
|
setValueSpecification: (val: ValueSpecification) => void;
|
|
401
486
|
resetValue: () => void;
|
|
487
|
+
obseverContext: ObserverContext;
|
|
402
488
|
}) => {
|
|
403
|
-
const {
|
|
404
|
-
|
|
489
|
+
const {
|
|
490
|
+
valueSpecification,
|
|
491
|
+
className,
|
|
492
|
+
resetValue,
|
|
493
|
+
setValueSpecification,
|
|
494
|
+
obseverContext,
|
|
495
|
+
} = props;
|
|
405
496
|
const enumValueRef = guaranteeNonNullable(valueSpecification.values[0]);
|
|
406
497
|
const enumValue = enumValueRef.value;
|
|
407
498
|
const options = enumValue._OWNER.values.map((value) => ({
|
|
@@ -413,6 +504,7 @@ const EnumValueInstanceValueEditor = observer(
|
|
|
413
504
|
valueSpecification,
|
|
414
505
|
EnumValueExplicitReference.create(val.value),
|
|
415
506
|
0,
|
|
507
|
+
obseverContext,
|
|
416
508
|
);
|
|
417
509
|
setValueSpecification(valueSpecification);
|
|
418
510
|
};
|
|
@@ -466,9 +558,10 @@ const setCollectionValue = (
|
|
|
466
558
|
valueSpecification: CollectionInstanceValue,
|
|
467
559
|
expectedType: Type,
|
|
468
560
|
value: string,
|
|
561
|
+
obseverContext: ObserverContext,
|
|
469
562
|
): void => {
|
|
470
563
|
if (value.trim().length === 0) {
|
|
471
|
-
instanceValue_setValues(valueSpecification, []);
|
|
564
|
+
instanceValue_setValues(valueSpecification, [], obseverContext);
|
|
472
565
|
return;
|
|
473
566
|
}
|
|
474
567
|
let result: unknown[] = [];
|
|
@@ -489,7 +582,11 @@ const setCollectionValue = (
|
|
|
489
582
|
new GenericType(expectedType),
|
|
490
583
|
),
|
|
491
584
|
);
|
|
492
|
-
instanceValue_setValues(
|
|
585
|
+
instanceValue_setValues(
|
|
586
|
+
primitiveInstanceValue,
|
|
587
|
+
[item.toString()],
|
|
588
|
+
obseverContext,
|
|
589
|
+
);
|
|
493
590
|
return primitiveInstanceValue;
|
|
494
591
|
})
|
|
495
592
|
.filter(isNonNullable);
|
|
@@ -510,7 +607,11 @@ const setCollectionValue = (
|
|
|
510
607
|
new GenericType(expectedType),
|
|
511
608
|
),
|
|
512
609
|
);
|
|
513
|
-
instanceValue_setValues(
|
|
610
|
+
instanceValue_setValues(
|
|
611
|
+
primitiveInstanceValue,
|
|
612
|
+
[item],
|
|
613
|
+
obseverContext,
|
|
614
|
+
);
|
|
514
615
|
return primitiveInstanceValue;
|
|
515
616
|
})
|
|
516
617
|
.filter(isNonNullable);
|
|
@@ -532,14 +633,16 @@ const setCollectionValue = (
|
|
|
532
633
|
const enumValueInstanceValue = new EnumValueInstanceValue(
|
|
533
634
|
GenericTypeExplicitReference.create(new GenericType(expectedType)),
|
|
534
635
|
);
|
|
535
|
-
instanceValue_setValues(
|
|
536
|
-
|
|
537
|
-
|
|
636
|
+
instanceValue_setValues(
|
|
637
|
+
enumValueInstanceValue,
|
|
638
|
+
[EnumValueExplicitReference.create(_enum)],
|
|
639
|
+
obseverContext,
|
|
640
|
+
);
|
|
538
641
|
return enumValueInstanceValue;
|
|
539
642
|
})
|
|
540
643
|
.filter(isNonNullable);
|
|
541
644
|
}
|
|
542
|
-
instanceValue_setValues(valueSpecification, result);
|
|
645
|
+
instanceValue_setValues(valueSpecification, result, obseverContext);
|
|
543
646
|
};
|
|
544
647
|
|
|
545
648
|
const COLLECTION_PREVIEW_CHAR_LIMIT = 50;
|
|
@@ -552,6 +655,7 @@ const CollectionValueInstanceValueEditor = observer(
|
|
|
552
655
|
className?: string | undefined;
|
|
553
656
|
resetValue: () => void;
|
|
554
657
|
setValueSpecification: (val: ValueSpecification) => void;
|
|
658
|
+
obseverContext: ObserverContext;
|
|
555
659
|
}) => {
|
|
556
660
|
const {
|
|
557
661
|
valueSpecification,
|
|
@@ -559,6 +663,7 @@ const CollectionValueInstanceValueEditor = observer(
|
|
|
559
663
|
className,
|
|
560
664
|
resetValue,
|
|
561
665
|
setValueSpecification,
|
|
666
|
+
obseverContext,
|
|
562
667
|
} = props;
|
|
563
668
|
const inputRef = useRef<HTMLInputElement>(null);
|
|
564
669
|
const [text, setText] = useState(stringifyValue(valueSpecification.values));
|
|
@@ -583,7 +688,12 @@ const CollectionValueInstanceValueEditor = observer(
|
|
|
583
688
|
const saveEdit = (): void => {
|
|
584
689
|
setEditable(false);
|
|
585
690
|
setShowAdvancedEditorPopover(false);
|
|
586
|
-
setCollectionValue(
|
|
691
|
+
setCollectionValue(
|
|
692
|
+
valueSpecification,
|
|
693
|
+
expectedType,
|
|
694
|
+
text,
|
|
695
|
+
obseverContext,
|
|
696
|
+
);
|
|
587
697
|
setText(stringifyValue(valueSpecification.values));
|
|
588
698
|
setValueSpecification(valueSpecification);
|
|
589
699
|
};
|
|
@@ -779,6 +889,7 @@ export const BasicValueSpecificationEditor: React.FC<{
|
|
|
779
889
|
className={className}
|
|
780
890
|
resetValue={resetValue}
|
|
781
891
|
selectorConfig={selectorConfig}
|
|
892
|
+
obseverContext={obseverContext}
|
|
782
893
|
/>
|
|
783
894
|
);
|
|
784
895
|
case PRIMITIVE_TYPE.BOOLEAN:
|
|
@@ -788,6 +899,7 @@ export const BasicValueSpecificationEditor: React.FC<{
|
|
|
788
899
|
setValueSpecification={setValueSpecification}
|
|
789
900
|
className={className}
|
|
790
901
|
resetValue={resetValue}
|
|
902
|
+
obseverContext={obseverContext}
|
|
791
903
|
/>
|
|
792
904
|
);
|
|
793
905
|
case PRIMITIVE_TYPE.NUMBER:
|
|
@@ -802,6 +914,7 @@ export const BasicValueSpecificationEditor: React.FC<{
|
|
|
802
914
|
setValueSpecification={setValueSpecification}
|
|
803
915
|
className={className}
|
|
804
916
|
resetValue={resetValue}
|
|
917
|
+
obseverContext={obseverContext}
|
|
805
918
|
/>
|
|
806
919
|
);
|
|
807
920
|
case PRIMITIVE_TYPE.DATE:
|
|
@@ -829,6 +942,7 @@ export const BasicValueSpecificationEditor: React.FC<{
|
|
|
829
942
|
className={className}
|
|
830
943
|
resetValue={resetValue}
|
|
831
944
|
setValueSpecification={setValueSpecification}
|
|
945
|
+
obseverContext={obseverContext}
|
|
832
946
|
/>
|
|
833
947
|
);
|
|
834
948
|
} else if (
|
|
@@ -846,6 +960,7 @@ export const BasicValueSpecificationEditor: React.FC<{
|
|
|
846
960
|
className={className}
|
|
847
961
|
resetValue={resetValue}
|
|
848
962
|
setValueSpecification={setValueSpecification}
|
|
963
|
+
obseverContext={obseverContext}
|
|
849
964
|
/>
|
|
850
965
|
);
|
|
851
966
|
}
|
|
@@ -870,26 +985,55 @@ export const BasicValueSpecificationEditor: React.FC<{
|
|
|
870
985
|
resetValue={resetValue}
|
|
871
986
|
/>
|
|
872
987
|
);
|
|
873
|
-
} else if (
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
988
|
+
} else if (valueSpecification instanceof SimpleFunctionExpression) {
|
|
989
|
+
if (isSubType(typeCheckOption.expectedType, PrimitiveType.DATE)) {
|
|
990
|
+
return (
|
|
991
|
+
<DateInstanceValueEditor
|
|
992
|
+
valueSpecification={valueSpecification}
|
|
993
|
+
graph={graph}
|
|
994
|
+
obseverContext={obseverContext}
|
|
995
|
+
typeCheckOption={typeCheckOption}
|
|
996
|
+
className={className}
|
|
997
|
+
setValueSpecification={setValueSpecification}
|
|
998
|
+
resetValue={resetValue}
|
|
999
|
+
/>
|
|
1000
|
+
);
|
|
1001
|
+
} else if (
|
|
1002
|
+
// TODO: think of other ways we could make use of this code path where we can simplify
|
|
1003
|
+
// an expression value to simple value, not just handling minus() function only
|
|
1004
|
+
isSubType(typeCheckOption.expectedType, PrimitiveType.NUMBER) &&
|
|
1005
|
+
matchFunctionName(
|
|
1006
|
+
valueSpecification.functionName,
|
|
1007
|
+
QUERY_BUILDER_SUPPORTED_FUNCTIONS.MINUS,
|
|
1008
|
+
)
|
|
1009
|
+
) {
|
|
1010
|
+
const simplifiedValue = simplifyValueExpression(
|
|
1011
|
+
valueSpecification,
|
|
1012
|
+
obseverContext,
|
|
1013
|
+
);
|
|
1014
|
+
if (
|
|
1015
|
+
simplifiedValue instanceof PrimitiveInstanceValue &&
|
|
1016
|
+
isSubType(
|
|
1017
|
+
simplifiedValue.genericType.value.rawType,
|
|
1018
|
+
PrimitiveType.NUMBER,
|
|
1019
|
+
)
|
|
1020
|
+
) {
|
|
1021
|
+
return (
|
|
1022
|
+
<NumberPrimitiveInstanceValueEditor
|
|
1023
|
+
valueSpecification={simplifiedValue}
|
|
1024
|
+
isInteger={
|
|
1025
|
+
simplifiedValue.genericType.value.rawType ===
|
|
1026
|
+
PrimitiveType.INTEGER
|
|
1027
|
+
}
|
|
1028
|
+
setValueSpecification={setValueSpecification}
|
|
1029
|
+
className={className}
|
|
1030
|
+
resetValue={resetValue}
|
|
1031
|
+
obseverContext={obseverContext}
|
|
1032
|
+
/>
|
|
1033
|
+
);
|
|
1034
|
+
}
|
|
1035
|
+
}
|
|
893
1036
|
}
|
|
1037
|
+
|
|
894
1038
|
return <UnsupportedValueSpecificationEditor />;
|
|
895
1039
|
};
|
|
@@ -258,16 +258,20 @@ const buildPureDateFunctionExpression = (
|
|
|
258
258
|
new GenericType(graph.getType(DAY_OF_WEEK)),
|
|
259
259
|
),
|
|
260
260
|
);
|
|
261
|
-
instanceValue_setValues(
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
261
|
+
instanceValue_setValues(
|
|
262
|
+
dayOfWeekEnumIntanceValue,
|
|
263
|
+
[
|
|
264
|
+
...dayOfWeekEnumIntanceValue.values,
|
|
265
|
+
EnumValueExplicitReference.create(
|
|
266
|
+
guaranteeNonNullable(
|
|
267
|
+
graph
|
|
268
|
+
.getEnumeration(DAY_OF_WEEK)
|
|
269
|
+
.values.filter((e) => e.name === datePickerOption.day)[0],
|
|
270
|
+
),
|
|
268
271
|
),
|
|
269
|
-
|
|
270
|
-
|
|
272
|
+
],
|
|
273
|
+
observerContext,
|
|
274
|
+
);
|
|
271
275
|
functionExpression_addParameterValue(
|
|
272
276
|
previousFridaySFE,
|
|
273
277
|
dayOfWeekEnumIntanceValue,
|
|
@@ -454,6 +458,7 @@ const buildPureAdjustDateFunction = (
|
|
|
454
458
|
graph,
|
|
455
459
|
PRIMITIVE_TYPE.INTEGER,
|
|
456
460
|
customDateOption.duration,
|
|
461
|
+
observerContext,
|
|
457
462
|
),
|
|
458
463
|
observerContext,
|
|
459
464
|
);
|
|
@@ -463,14 +468,14 @@ const buildPureAdjustDateFunction = (
|
|
|
463
468
|
observerContext,
|
|
464
469
|
);
|
|
465
470
|
} else {
|
|
466
|
-
const adjustmentInstanceValue = buildPrimitiveInstanceValue(
|
|
467
|
-
graph,
|
|
468
|
-
PRIMITIVE_TYPE.INTEGER,
|
|
469
|
-
customDateOption.duration,
|
|
470
|
-
);
|
|
471
471
|
functionExpression_addParameterValue(
|
|
472
472
|
dateAdjustSimpleFunctionExpression,
|
|
473
|
-
|
|
473
|
+
buildPrimitiveInstanceValue(
|
|
474
|
+
graph,
|
|
475
|
+
PRIMITIVE_TYPE.INTEGER,
|
|
476
|
+
customDateOption.duration,
|
|
477
|
+
observerContext,
|
|
478
|
+
),
|
|
474
479
|
observerContext,
|
|
475
480
|
);
|
|
476
481
|
}
|
|
@@ -479,17 +484,21 @@ const buildPureAdjustDateFunction = (
|
|
|
479
484
|
new GenericType(graph.getType(DURATION_UNIT)),
|
|
480
485
|
),
|
|
481
486
|
);
|
|
482
|
-
instanceValue_setValues(
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
487
|
+
instanceValue_setValues(
|
|
488
|
+
durationUnitEnumIntanceValue,
|
|
489
|
+
[
|
|
490
|
+
...durationUnitEnumIntanceValue.values,
|
|
491
|
+
EnumValueExplicitReference.create(
|
|
492
|
+
guaranteeNonNullable(
|
|
493
|
+
buildPureDurationEnumValue(
|
|
494
|
+
guaranteeNonNullable(customDateOption.unit),
|
|
495
|
+
graph,
|
|
496
|
+
),
|
|
489
497
|
),
|
|
490
498
|
),
|
|
491
|
-
|
|
492
|
-
|
|
499
|
+
],
|
|
500
|
+
observerContext,
|
|
501
|
+
);
|
|
493
502
|
functionExpression_addParameterValue(
|
|
494
503
|
dateAdjustSimpleFunctionExpression,
|
|
495
504
|
durationUnitEnumIntanceValue,
|
|
@@ -699,12 +708,14 @@ const AbsoluteDateValueSpecificationEditor: React.FC<{
|
|
|
699
708
|
graph: PureModel;
|
|
700
709
|
setValueSpecification: (val: ValueSpecification) => void;
|
|
701
710
|
setDatePickerOption: (datePickerOption: DatePickerOption) => void;
|
|
711
|
+
observerContext: ObserverContext;
|
|
702
712
|
}> = (props) => {
|
|
703
713
|
const {
|
|
704
714
|
valueSpecification,
|
|
705
715
|
graph,
|
|
706
716
|
setValueSpecification,
|
|
707
717
|
setDatePickerOption,
|
|
718
|
+
observerContext,
|
|
708
719
|
} = props;
|
|
709
720
|
const inputRef = useRef<HTMLInputElement>(null);
|
|
710
721
|
const absoluteDateValue =
|
|
@@ -720,10 +731,16 @@ const AbsoluteDateValueSpecificationEditor: React.FC<{
|
|
|
720
731
|
graph,
|
|
721
732
|
PRIMITIVE_TYPE.STRICTDATE,
|
|
722
733
|
event.target.value,
|
|
734
|
+
observerContext,
|
|
723
735
|
),
|
|
724
736
|
);
|
|
725
737
|
} else if (valueSpecification instanceof InstanceValue) {
|
|
726
|
-
instanceValue_setValue(
|
|
738
|
+
instanceValue_setValue(
|
|
739
|
+
valueSpecification,
|
|
740
|
+
event.target.value,
|
|
741
|
+
0,
|
|
742
|
+
observerContext,
|
|
743
|
+
);
|
|
727
744
|
if (
|
|
728
745
|
valueSpecification.genericType.value.rawType.path !==
|
|
729
746
|
PRIMITIVE_TYPE.STRICTDATE
|
|
@@ -768,12 +785,14 @@ const AbsoluteTimeValueSpecificationEditor: React.FC<{
|
|
|
768
785
|
graph: PureModel;
|
|
769
786
|
setValueSpecification: (val: ValueSpecification) => void;
|
|
770
787
|
setDatePickerOption: (datePickerOption: DatePickerOption) => void;
|
|
788
|
+
observerContext: ObserverContext;
|
|
771
789
|
}> = (props) => {
|
|
772
790
|
const {
|
|
773
791
|
valueSpecification,
|
|
774
792
|
graph,
|
|
775
793
|
setValueSpecification,
|
|
776
794
|
setDatePickerOption,
|
|
795
|
+
observerContext,
|
|
777
796
|
} = props;
|
|
778
797
|
const inputRef = useRef<HTMLInputElement>(null);
|
|
779
798
|
const absoluteTimeValue =
|
|
@@ -789,10 +808,16 @@ const AbsoluteTimeValueSpecificationEditor: React.FC<{
|
|
|
789
808
|
graph,
|
|
790
809
|
PRIMITIVE_TYPE.DATETIME,
|
|
791
810
|
event.target.value,
|
|
811
|
+
observerContext,
|
|
792
812
|
),
|
|
793
813
|
);
|
|
794
814
|
} else {
|
|
795
|
-
instanceValue_setValue(
|
|
815
|
+
instanceValue_setValue(
|
|
816
|
+
valueSpecification,
|
|
817
|
+
event.target.value,
|
|
818
|
+
0,
|
|
819
|
+
observerContext,
|
|
820
|
+
);
|
|
796
821
|
if (
|
|
797
822
|
valueSpecification.genericType.value.rawType.path !==
|
|
798
823
|
PRIMITIVE_TYPE.DATETIME
|
|
@@ -1213,6 +1238,7 @@ export const CustomDatePicker: React.FC<{
|
|
|
1213
1238
|
graph,
|
|
1214
1239
|
PRIMITIVE_TYPE.LATESTDATE,
|
|
1215
1240
|
event.target.value,
|
|
1241
|
+
observerContext,
|
|
1216
1242
|
),
|
|
1217
1243
|
);
|
|
1218
1244
|
} else if (
|
|
@@ -1255,6 +1281,7 @@ export const CustomDatePicker: React.FC<{
|
|
|
1255
1281
|
valueSpecification={valueSpecification}
|
|
1256
1282
|
setValueSpecification={setValueSpecification}
|
|
1257
1283
|
setDatePickerOption={setDatePickerOption}
|
|
1284
|
+
observerContext={observerContext}
|
|
1258
1285
|
/>
|
|
1259
1286
|
);
|
|
1260
1287
|
case CUSTOM_DATE_PICKER_OPTION.ABSOLUTE_TIME:
|
|
@@ -1264,6 +1291,7 @@ export const CustomDatePicker: React.FC<{
|
|
|
1264
1291
|
valueSpecification={valueSpecification}
|
|
1265
1292
|
setValueSpecification={setValueSpecification}
|
|
1266
1293
|
setDatePickerOption={setDatePickerOption}
|
|
1294
|
+
observerContext={observerContext}
|
|
1267
1295
|
/>
|
|
1268
1296
|
);
|
|
1269
1297
|
case CUSTOM_DATE_PICKER_OPTION.CUSTOM_DATE:
|
|
@@ -106,9 +106,7 @@ const WatermarkValueEditor = observer(
|
|
|
106
106
|
watermarkState.setValue(val);
|
|
107
107
|
}}
|
|
108
108
|
graph={graph}
|
|
109
|
-
obseverContext={
|
|
110
|
-
watermarkState.queryBuilderState.observableContext
|
|
111
|
-
}
|
|
109
|
+
obseverContext={watermarkState.queryBuilderState.observerContext}
|
|
112
110
|
typeCheckOption={{
|
|
113
111
|
expectedType: PrimitiveType.STRING,
|
|
114
112
|
}}
|
|
@@ -24,6 +24,7 @@ export enum QUERY_BUILDER_SUPPORTED_FUNCTIONS {
|
|
|
24
24
|
OR = 'meta::pure::functions::boolean::or',
|
|
25
25
|
TAKE = 'meta::pure::functions::collection::take',
|
|
26
26
|
SUBTYPE = 'meta::pure::functions::lang::subType',
|
|
27
|
+
MINUS = 'meta::pure::functions::math::minus',
|
|
27
28
|
|
|
28
29
|
// graph-fetch
|
|
29
30
|
GRAPH_FETCH = 'meta::pure::graphFetch::execution::graphFetch',
|
|
@@ -53,6 +54,7 @@ export enum QUERY_BUILDER_SUPPORTED_FUNCTIONS {
|
|
|
53
54
|
LESS_THAN = 'meta::pure::functions::lang::tests::lessThan',
|
|
54
55
|
LESS_THAN_EQUAL = 'meta::pure::functions::lang::tests::lessThanEqual',
|
|
55
56
|
STARTS_WITH = 'meta::pure::functions::string::startsWith',
|
|
57
|
+
|
|
56
58
|
// aggregation
|
|
57
59
|
AVERAGE = 'meta::pure::functions::math::average',
|
|
58
60
|
COUNT = 'meta::pure::functions::collection::count',
|
|
@@ -66,8 +68,10 @@ export enum QUERY_BUILDER_SUPPORTED_FUNCTIONS {
|
|
|
66
68
|
STD_DEV_SAMPLE = 'meta::pure::functions::math::stdDevSample',
|
|
67
69
|
SUM = 'meta::pure::functions::math::sum',
|
|
68
70
|
UNIQUE_VALUE_ONLY = 'meta::pure::functions::collection::uniqueValueOnly',
|
|
71
|
+
|
|
69
72
|
// watermark
|
|
70
73
|
WATERMARK = 'meta::datalake::functions::forWatermark',
|
|
74
|
+
|
|
71
75
|
// OLAP
|
|
72
76
|
OLAP_GROUPBY = 'meta::pure::tds::olapGroupBy',
|
|
73
77
|
OLAP_RANK = 'meta::pure::functions::math::olap::rank',
|
|
@@ -57,7 +57,7 @@ export class QueryBuilder_PureProtocolProcessorPlugin extends PureProtocolProces
|
|
|
57
57
|
openVariables: string[],
|
|
58
58
|
compileContext: V1_GraphBuilderContext,
|
|
59
59
|
processingContext: V1_ProcessingContext,
|
|
60
|
-
):
|
|
60
|
+
): SimpleFunctionExpression | undefined => {
|
|
61
61
|
if (
|
|
62
62
|
matchFunctionName(
|
|
63
63
|
functionName,
|