@finos/legend-query-builder 4.14.50 → 4.14.52
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.js +1 -1
- package/lib/components/QueryBuilderConstantExpressionPanel.js.map +1 -1
- package/lib/components/QueryBuilderParametersPanel.js +1 -1
- package/lib/components/QueryBuilderParametersPanel.js.map +1 -1
- package/lib/components/QueryBuilderPropertyExpressionEditor.js +1 -1
- package/lib/components/QueryBuilderPropertyExpressionEditor.js.map +1 -1
- package/lib/components/QueryBuilderSideBar.d.ts.map +1 -1
- package/lib/components/QueryBuilderSideBar.js +1 -1
- package/lib/components/QueryBuilderSideBar.js.map +1 -1
- package/lib/components/QueryBuilder_LegendApplicationPlugin.d.ts +0 -1
- package/lib/components/QueryBuilder_LegendApplicationPlugin.d.ts.map +1 -1
- package/lib/components/ServiceQuerySetupUtils.d.ts.map +1 -1
- package/lib/components/__test-utils__/QueryBuilderComponentTestUtils.d.ts +1 -1
- package/lib/components/__test-utils__/QueryBuilderComponentTestUtils.d.ts.map +1 -1
- package/lib/components/__test-utils__/QueryBuilderComponentTestUtils.js +4 -2
- package/lib/components/__test-utils__/QueryBuilderComponentTestUtils.js.map +1 -1
- package/lib/components/execution-plan/AllocationExecutionNodeViewer.d.ts +0 -1
- package/lib/components/execution-plan/AllocationExecutionNodeViewer.d.ts.map +1 -1
- package/lib/components/execution-plan/ConstantExecutionNodeViewer.d.ts +0 -1
- package/lib/components/execution-plan/ConstantExecutionNodeViewer.d.ts.map +1 -1
- package/lib/components/execution-plan/DataTypeResultTypeViewer.d.ts +0 -1
- package/lib/components/execution-plan/DataTypeResultTypeViewer.d.ts.map +1 -1
- package/lib/components/execution-plan/ExecutionPlanViewer.d.ts +0 -1
- package/lib/components/execution-plan/ExecutionPlanViewer.d.ts.map +1 -1
- package/lib/components/execution-plan/FunctionParametersValidationNodeViewer.js +1 -1
- package/lib/components/execution-plan/ImplementationViewer.d.ts +0 -1
- package/lib/components/execution-plan/ImplementationViewer.d.ts.map +1 -1
- package/lib/components/execution-plan/PartialClassResultViewer.d.ts +0 -1
- package/lib/components/execution-plan/PartialClassResultViewer.d.ts.map +1 -1
- package/lib/components/execution-plan/PartialClassResultViewer.js +1 -1
- package/lib/components/execution-plan/RelationalClassQueryTempTableGraphFetchExecutionNodeViewer.d.ts +0 -1
- package/lib/components/execution-plan/RelationalClassQueryTempTableGraphFetchExecutionNodeViewer.d.ts.map +1 -1
- package/lib/components/execution-plan/RelationalClassQueryTempTableGraphFetchExecutionNodeViewer.js +1 -1
- package/lib/components/execution-plan/RelationalCrossRootQueryTempTableGraphFetchExecutionNodeViewer.d.ts +0 -1
- package/lib/components/execution-plan/RelationalCrossRootQueryTempTableGraphFetchExecutionNodeViewer.d.ts.map +1 -1
- package/lib/components/execution-plan/RelationalCrossRootQueryTempTableGraphFetchExecutionNodeViewer.js +1 -1
- package/lib/components/execution-plan/RelationalRootQueryTempTableGraphFetchExecutionNodeViewer.d.ts +0 -1
- package/lib/components/execution-plan/RelationalRootQueryTempTableGraphFetchExecutionNodeViewer.d.ts.map +1 -1
- package/lib/components/execution-plan/RelationalRootQueryTempTableGraphFetchExecutionNodeViewer.js +1 -1
- package/lib/components/execution-plan/RelationalTDSInstantiationExecutionNodeViewer.d.ts +0 -1
- package/lib/components/execution-plan/RelationalTDSInstantiationExecutionNodeViewer.d.ts.map +1 -1
- package/lib/components/execution-plan/ResultTypeViewer.d.ts +0 -1
- package/lib/components/execution-plan/ResultTypeViewer.d.ts.map +1 -1
- package/lib/components/execution-plan/SQLExecutionNodeViewer.d.ts +0 -1
- package/lib/components/execution-plan/SQLExecutionNodeViewer.d.ts.map +1 -1
- package/lib/components/execution-plan/SQLExecutionNodeViewer.js +1 -1
- package/lib/components/execution-plan/SequenceExecutionNodeViewer.d.ts +0 -1
- package/lib/components/execution-plan/SequenceExecutionNodeViewer.d.ts.map +1 -1
- package/lib/components/execution-plan/StoreMappingGlobalGraphFetchExecutionNodeViewer.d.ts +0 -1
- package/lib/components/execution-plan/StoreMappingGlobalGraphFetchExecutionNodeViewer.d.ts.map +1 -1
- package/lib/components/execution-plan/StoreMappingGlobalGraphFetchExecutionNodeViewer.js +2 -2
- package/lib/components/execution-plan/TDSResultTypeViewer.d.ts +0 -1
- package/lib/components/execution-plan/TDSResultTypeViewer.d.ts.map +1 -1
- package/lib/components/execution-plan/TDSResultTypeViewer.js +1 -1
- package/lib/components/execution-plan/TempTableStrategyViewer.d.ts +0 -1
- package/lib/components/execution-plan/TempTableStrategyViewer.d.ts.map +1 -1
- package/lib/components/explorer/QueryBuilderExplorerPanel.d.ts +0 -1
- package/lib/components/explorer/QueryBuilderExplorerPanel.d.ts.map +1 -1
- package/lib/components/explorer/QueryBuilderMilestoningParameterEditor.js +1 -1
- package/lib/components/explorer/QueryBuilderMilestoningParameterEditor.js.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderGraphFetchTreePanel.d.ts +0 -1
- package/lib/components/fetch-structure/QueryBuilderGraphFetchTreePanel.d.ts.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderPostFilterPanel.d.ts.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/fetch-structure/QueryBuilderResultModifierPanel.js +1 -1
- package/lib/components/fetch-structure/QueryBuilderResultModifierPanel.js.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderTDSComponentHelper.d.ts +0 -1
- package/lib/components/fetch-structure/QueryBuilderTDSComponentHelper.d.ts.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderTDSPanel.js +1 -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 +9 -4
- 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 +1 -1
- package/lib/components/result/QueryBuilderResultPanel.js.map +1 -1
- package/lib/components/result/tds/QueryBuilderTDSGridResult.d.ts.map +1 -1
- package/lib/components/result/tds/QueryBuilderTDSGridResult.js +10 -8
- package/lib/components/result/tds/QueryBuilderTDSGridResult.js.map +1 -1
- package/lib/components/result/tds/QueryBuilderTDSResultShared.d.ts +0 -1
- package/lib/components/result/tds/QueryBuilderTDSResultShared.d.ts.map +1 -1
- package/lib/components/result/tds/QueryBuilderTDSResultShared.js.map +1 -1
- package/lib/components/result/tds/QueryBuilderTDSSimpleGridResult.js +2 -2
- package/lib/components/result/tds/QueryBuilderTDSSimpleGridResult.js.map +1 -1
- package/lib/components/shared/BasicValueSpecificationEditor.d.ts +19 -4
- package/lib/components/shared/BasicValueSpecificationEditor.d.ts.map +1 -1
- package/lib/components/shared/BasicValueSpecificationEditor.js +97 -36
- package/lib/components/shared/BasicValueSpecificationEditor.js.map +1 -1
- package/lib/components/shared/CustomDatePicker.d.ts +2 -1
- package/lib/components/shared/CustomDatePicker.d.ts.map +1 -1
- package/lib/components/shared/CustomDatePicker.js +8 -5
- package/lib/components/shared/CustomDatePicker.js.map +1 -1
- package/lib/components/shared/LambdaParameterValuesEditor.js +1 -1
- package/lib/components/shared/LambdaParameterValuesEditor.js.map +1 -1
- package/lib/components/shared/QueryBuilderPanelIssueCountBadge.d.ts +0 -1
- package/lib/components/shared/QueryBuilderPanelIssueCountBadge.d.ts.map +1 -1
- package/lib/components/shared/QueryBuilderPropertyInfoTooltip.d.ts +0 -1
- package/lib/components/shared/QueryBuilderPropertyInfoTooltip.d.ts.map +1 -1
- package/lib/components/shared/QueryBuilderRootClassInfoTooltip.d.ts +0 -1
- package/lib/components/shared/QueryBuilderRootClassInfoTooltip.d.ts.map +1 -1
- package/lib/components/shared/QueryBuilderVariableSelector.d.ts.map +1 -1
- package/lib/components/shared/QueryBuilderVariableSelector.js +1 -1
- package/lib/components/shared/QueryBuilderVariableSelector.js.map +1 -1
- package/lib/components/workflows/ClassQueryBuilder.d.ts.map +1 -1
- package/lib/components/workflows/MappingQueryBuilder.d.ts.map +1 -1
- package/lib/components/workflows/ServiceQueryBuilder.d.ts.map +1 -1
- package/lib/graph/QueryBuilderMetaModelConst.d.ts +1 -0
- package/lib/graph/QueryBuilderMetaModelConst.d.ts.map +1 -1
- package/lib/graph/QueryBuilderMetaModelConst.js +1 -0
- package/lib/graph/QueryBuilderMetaModelConst.js.map +1 -1
- package/lib/graph-manager/protocol/pure/QueryBuilder_PureGraphManagerExtension.d.ts.map +1 -1
- package/lib/graph-manager/protocol/pure/QueryBuilder_PureGraphManagerExtension.js.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_QueryValueSpecificationBuilderHelper.d.ts +1 -2
- package/lib/graph-manager/protocol/pure/v1/V1_QueryValueSpecificationBuilderHelper.d.ts.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_QueryValueSpecificationBuilderHelper.js +68 -8
- package/lib/graph-manager/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 +7 -7
- package/lib/stores/QueryBuilderState.d.ts +0 -1
- package/lib/stores/QueryBuilderState.d.ts.map +1 -1
- package/lib/stores/QueryBuilderStateBuilder.d.ts.map +1 -1
- package/lib/stores/QueryBuilderStateBuilder.js +5 -1
- package/lib/stores/QueryBuilderStateBuilder.js.map +1 -1
- package/lib/stores/QueryBuilderValueSpecificationHelper.js.map +1 -1
- package/lib/stores/QueryBuilder_LegendApplicationPlugin_Extension.d.ts +0 -1
- package/lib/stores/QueryBuilder_LegendApplicationPlugin_Extension.d.ts.map +1 -1
- package/lib/stores/__test-utils__/QueryBuilderStateTestUtils.d.ts.map +1 -1
- package/lib/stores/execution-plan/ExecutionPlanState.d.ts.map +1 -1
- package/lib/stores/explorer/QueryBuilderExplorerState.d.ts +0 -1
- package/lib/stores/explorer/QueryBuilderExplorerState.d.ts.map +1 -1
- package/lib/stores/explorer/QueryFunctionsExplorerState.d.ts.map +1 -1
- package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeUtil.d.ts.map +1 -1
- package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeValueSpecificationBuilder.d.ts.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 +6 -0
- package/lib/stores/fetch-structure/tds/QueryBuilderTDSState.js.map +1 -1
- package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionStateBuilder.d.ts +11 -0
- package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionStateBuilder.d.ts.map +1 -1
- package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionStateBuilder.js +76 -20
- package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionStateBuilder.js.map +1 -1
- package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionValueSpecificationBuilder.d.ts.map +1 -1
- package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionValueSpecificationBuilder.js +70 -34
- package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionValueSpecificationBuilder.js.map +1 -1
- package/lib/stores/filter/QueryBuilderFilterState.d.ts +2 -0
- package/lib/stores/filter/QueryBuilderFilterState.d.ts.map +1 -1
- package/lib/stores/filter/QueryBuilderFilterState.js +7 -0
- package/lib/stores/filter/QueryBuilderFilterState.js.map +1 -1
- package/lib/stores/shared/ValueSpecificationEditorHelper.d.ts +5 -2
- package/lib/stores/shared/ValueSpecificationEditorHelper.d.ts.map +1 -1
- package/lib/stores/shared/ValueSpecificationEditorHelper.js +20 -9
- package/lib/stores/shared/ValueSpecificationEditorHelper.js.map +1 -1
- package/lib/stores/shared/ValueSpecificationModifierHelper.d.ts.map +1 -1
- package/lib/stores/workflows/ClassQueryBuilderState.d.ts.map +1 -1
- package/lib/stores/workflows/MappingQueryBuilderState.d.ts.map +1 -1
- package/lib/stores/workflows/ServiceQueryBuilderState.d.ts.map +1 -1
- package/package.json +15 -15
- package/src/components/QueryBuilderConstantExpressionPanel.tsx +1 -1
- package/src/components/QueryBuilderParametersPanel.tsx +1 -1
- package/src/components/QueryBuilderPropertyExpressionEditor.tsx +1 -1
- package/src/components/QueryBuilderSideBar.tsx +1 -1
- package/src/components/__test-utils__/QueryBuilderComponentTestUtils.tsx +4 -1
- package/src/components/execution-plan/FunctionParametersValidationNodeViewer.tsx +1 -1
- package/src/components/execution-plan/PartialClassResultViewer.tsx +1 -1
- package/src/components/execution-plan/RelationalClassQueryTempTableGraphFetchExecutionNodeViewer.tsx +1 -1
- package/src/components/execution-plan/RelationalCrossRootQueryTempTableGraphFetchExecutionNodeViewer.tsx +1 -1
- package/src/components/execution-plan/RelationalRootQueryTempTableGraphFetchExecutionNodeViewer.tsx +1 -1
- package/src/components/execution-plan/SQLExecutionNodeViewer.tsx +1 -1
- package/src/components/execution-plan/StoreMappingGlobalGraphFetchExecutionNodeViewer.tsx +2 -2
- package/src/components/execution-plan/TDSResultTypeViewer.tsx +1 -1
- package/src/components/explorer/QueryBuilderMilestoningParameterEditor.tsx +1 -1
- package/src/components/fetch-structure/QueryBuilderPostFilterPanel.tsx +1 -1
- package/src/components/fetch-structure/QueryBuilderResultModifierPanel.tsx +1 -1
- package/src/components/fetch-structure/QueryBuilderTDSPanel.tsx +1 -1
- package/src/components/filter/QueryBuilderFilterPanel.tsx +18 -4
- package/src/components/result/QueryBuilderResultPanel.tsx +1 -0
- package/src/components/result/tds/QueryBuilderTDSGridResult.tsx +12 -13
- package/src/components/result/tds/QueryBuilderTDSResultShared.tsx +1 -1
- package/src/components/result/tds/QueryBuilderTDSSimpleGridResult.tsx +2 -2
- package/src/components/shared/BasicValueSpecificationEditor.tsx +257 -55
- package/src/components/shared/CustomDatePicker.tsx +36 -11
- package/src/components/shared/LambdaParameterValuesEditor.tsx +1 -1
- package/src/components/shared/QueryBuilderVariableSelector.tsx +4 -1
- package/src/graph/QueryBuilderMetaModelConst.ts +1 -0
- package/src/graph-manager/protocol/pure/QueryBuilder_PureGraphManagerExtension.ts +1 -1
- package/src/graph-manager/protocol/pure/v1/V1_QueryValueSpecificationBuilderHelper.ts +189 -18
- package/src/stores/QueryBuilderStateBuilder.ts +6 -1
- package/src/stores/QueryBuilderValueSpecificationHelper.ts +2 -2
- package/src/stores/fetch-structure/tds/QueryBuilderTDSState.ts +7 -0
- package/src/stores/fetch-structure/tds/projection/QueryBuilderProjectionStateBuilder.ts +167 -43
- package/src/stores/fetch-structure/tds/projection/QueryBuilderProjectionValueSpecificationBuilder.ts +145 -69
- package/src/stores/filter/QueryBuilderFilterState.ts +8 -0
- package/src/stores/shared/ValueSpecificationEditorHelper.ts +47 -7
- package/tsconfig.package.json +1 -1
|
@@ -1244,7 +1244,9 @@ export const CustomDatePicker: React.FC<{
|
|
|
1244
1244
|
*/
|
|
1245
1245
|
match?: boolean;
|
|
1246
1246
|
};
|
|
1247
|
+
displayAsEditableValue?: boolean | undefined;
|
|
1247
1248
|
setValueSpecification: (val: ValueSpecification) => void;
|
|
1249
|
+
handleBlur?: (() => void) | undefined;
|
|
1248
1250
|
}> = (props) => {
|
|
1249
1251
|
const {
|
|
1250
1252
|
valueSpecification,
|
|
@@ -1253,6 +1255,8 @@ export const CustomDatePicker: React.FC<{
|
|
|
1253
1255
|
observerContext,
|
|
1254
1256
|
hasError,
|
|
1255
1257
|
typeCheckOption,
|
|
1258
|
+
displayAsEditableValue,
|
|
1259
|
+
handleBlur,
|
|
1256
1260
|
} = props;
|
|
1257
1261
|
const applicationStore = useApplicationStore();
|
|
1258
1262
|
// For some cases where types need to be matched strictly.
|
|
@@ -1283,6 +1287,7 @@ export const CustomDatePicker: React.FC<{
|
|
|
1283
1287
|
buildDatePickerOption(valueSpecification, applicationStore),
|
|
1284
1288
|
);
|
|
1285
1289
|
setAnchorEl(null);
|
|
1290
|
+
handleBlur?.();
|
|
1286
1291
|
};
|
|
1287
1292
|
const handleDatePickerOptionChange = (
|
|
1288
1293
|
event: React.ChangeEvent<HTMLInputElement>,
|
|
@@ -1408,15 +1413,35 @@ export const CustomDatePicker: React.FC<{
|
|
|
1408
1413
|
|
|
1409
1414
|
return (
|
|
1410
1415
|
<>
|
|
1411
|
-
|
|
1412
|
-
|
|
1413
|
-
|
|
1414
|
-
|
|
1415
|
-
|
|
1416
|
-
|
|
1417
|
-
|
|
1418
|
-
|
|
1419
|
-
|
|
1416
|
+
{displayAsEditableValue ? (
|
|
1417
|
+
<span
|
|
1418
|
+
className={clsx(
|
|
1419
|
+
'value-spec-editor__date-picker__editable__display--content editable-value',
|
|
1420
|
+
{
|
|
1421
|
+
'value-spec-editor__date-picker__editable__display--content--error':
|
|
1422
|
+
hasError,
|
|
1423
|
+
},
|
|
1424
|
+
)}
|
|
1425
|
+
title="Click to edit and pick from more date options"
|
|
1426
|
+
onClick={openCustomDatePickerPopover}
|
|
1427
|
+
>
|
|
1428
|
+
{datePickerOption.label ? (
|
|
1429
|
+
`"${datePickerOption.label}"`
|
|
1430
|
+
) : (
|
|
1431
|
+
<> </>
|
|
1432
|
+
)}
|
|
1433
|
+
</span>
|
|
1434
|
+
) : (
|
|
1435
|
+
<button
|
|
1436
|
+
className={clsx('value-spec-editor__date-picker__trigger', {
|
|
1437
|
+
'value-spec-editor__date-picker__trigger--error': hasError,
|
|
1438
|
+
})}
|
|
1439
|
+
title="Click to edit and pick from more date options"
|
|
1440
|
+
onClick={openCustomDatePickerPopover}
|
|
1441
|
+
>
|
|
1442
|
+
{datePickerOption.label || 'Select value'}
|
|
1443
|
+
</button>
|
|
1444
|
+
)}
|
|
1420
1445
|
<BasePopover
|
|
1421
1446
|
open={Boolean(anchorEl)}
|
|
1422
1447
|
TransitionProps={{
|
|
@@ -1425,8 +1450,8 @@ export const CustomDatePicker: React.FC<{
|
|
|
1425
1450
|
anchorEl={anchorEl}
|
|
1426
1451
|
onClose={closeCustomDatePickerPopover}
|
|
1427
1452
|
anchorOrigin={{
|
|
1428
|
-
vertical: 'bottom',
|
|
1429
|
-
horizontal: 'center',
|
|
1453
|
+
vertical: displayAsEditableValue ? 20 : 'bottom',
|
|
1454
|
+
horizontal: displayAsEditableValue ? 50 : 'center',
|
|
1430
1455
|
}}
|
|
1431
1456
|
transformOrigin={{
|
|
1432
1457
|
vertical: 'top',
|
|
@@ -103,7 +103,7 @@ export const LambdaParameterValuesEditor = observer(
|
|
|
103
103
|
paramState.setValue(val);
|
|
104
104
|
}}
|
|
105
105
|
graph={graph}
|
|
106
|
-
|
|
106
|
+
observerContext={observerContext}
|
|
107
107
|
typeCheckOption={{
|
|
108
108
|
expectedType: variableType,
|
|
109
109
|
match: variableType === PrimitiveType.DATETIME,
|
|
@@ -61,7 +61,10 @@ export const getNameOfValueSpecification = (
|
|
|
61
61
|
return possibleDateLabel;
|
|
62
62
|
}
|
|
63
63
|
}
|
|
64
|
-
return getValueSpecificationStringValue(
|
|
64
|
+
return getValueSpecificationStringValue(
|
|
65
|
+
value,
|
|
66
|
+
queryBuilderState.applicationStore,
|
|
67
|
+
);
|
|
65
68
|
};
|
|
66
69
|
|
|
67
70
|
const QueryBuilderVariableContextMenu = observer(
|
|
@@ -116,6 +116,7 @@ export enum QUERY_BUILDER_SUPPORTED_FUNCTIONS {
|
|
|
116
116
|
TDS_TAKE = 'meta::pure::tds::take',
|
|
117
117
|
TDS_RESTRICT = 'meta::pure::tds::restrict',
|
|
118
118
|
TDS_FUNC = 'meta::pure::tds::func',
|
|
119
|
+
TDS_COL = 'meta::pure::tds::col',
|
|
119
120
|
|
|
120
121
|
// Relation
|
|
121
122
|
RELATION_PROJECT = 'meta::pure::functions::relation::project',
|
|
@@ -27,10 +27,10 @@ import {
|
|
|
27
27
|
import {
|
|
28
28
|
type V1_GraphBuilderContext,
|
|
29
29
|
type V1_ProcessingContext,
|
|
30
|
-
V1_ValueSpecification,
|
|
31
30
|
type ValueSpecification,
|
|
32
|
-
type SimpleFunctionExpression,
|
|
33
31
|
type Type,
|
|
32
|
+
type SimpleFunctionExpression,
|
|
33
|
+
V1_ValueSpecification,
|
|
34
34
|
V1_buildBaseSimpleFunctionExpression,
|
|
35
35
|
V1_buildGenericFunctionExpression,
|
|
36
36
|
extractElementNameFromPath,
|
|
@@ -580,7 +580,7 @@ export const V1_buildFilterFunctionExpression = (
|
|
|
580
580
|
return expression;
|
|
581
581
|
};
|
|
582
582
|
|
|
583
|
-
|
|
583
|
+
const V1_buildTypedProjectFunctionExpression = (
|
|
584
584
|
functionName: string,
|
|
585
585
|
parameters: V1_ValueSpecification[],
|
|
586
586
|
openVariables: string[],
|
|
@@ -684,23 +684,184 @@ export const V1_buildTypedProjectFunctionExpression = (
|
|
|
684
684
|
return expression;
|
|
685
685
|
};
|
|
686
686
|
|
|
687
|
-
|
|
687
|
+
const V1_buildColFunctionExpression = (
|
|
688
|
+
valueSpecification: V1_ValueSpecification,
|
|
689
|
+
precedingExperession: ValueSpecification,
|
|
690
|
+
openVariables: string[],
|
|
691
|
+
compileContext: V1_GraphBuilderContext,
|
|
692
|
+
processingContext: V1_ProcessingContext,
|
|
693
|
+
): SimpleFunctionExpression => {
|
|
694
|
+
const appliedFunc = guaranteeType(
|
|
695
|
+
valueSpecification,
|
|
696
|
+
V1_AppliedFunction,
|
|
697
|
+
`Can't build tds col func: only support applied function`,
|
|
698
|
+
);
|
|
699
|
+
assertTrue(
|
|
700
|
+
matchFunctionName(
|
|
701
|
+
appliedFunc.function,
|
|
702
|
+
QUERY_BUILDER_SUPPORTED_FUNCTIONS.TDS_COL,
|
|
703
|
+
),
|
|
704
|
+
`Can't build tds col func: unsupported func name ${appliedFunc.function}`,
|
|
705
|
+
);
|
|
706
|
+
assertTrue(
|
|
707
|
+
appliedFunc.parameters.length === 2,
|
|
708
|
+
`Can't build tds col func: only support col function with 2 parameters`,
|
|
709
|
+
);
|
|
710
|
+
const colLambda = guaranteeType(
|
|
711
|
+
appliedFunc.parameters[0],
|
|
712
|
+
V1_Lambda,
|
|
713
|
+
`Can't build tds col func: only support first parameter of col function as Lambda`,
|
|
714
|
+
);
|
|
715
|
+
let lambda: ValueSpecification;
|
|
716
|
+
try {
|
|
717
|
+
colLambda.parameters.forEach((variable): void => {
|
|
718
|
+
if (variable.name && !variable.class) {
|
|
719
|
+
const variableExpression = new VariableExpression(
|
|
720
|
+
variable.name,
|
|
721
|
+
Multiplicity.ONE,
|
|
722
|
+
);
|
|
723
|
+
variableExpression.genericType = precedingExperession.genericType;
|
|
724
|
+
processingContext.addInferredVariables(
|
|
725
|
+
variable.name,
|
|
726
|
+
variableExpression,
|
|
727
|
+
);
|
|
728
|
+
}
|
|
729
|
+
});
|
|
730
|
+
lambda = buildProjectionColumnLambda(
|
|
731
|
+
colLambda,
|
|
732
|
+
openVariables,
|
|
733
|
+
compileContext,
|
|
734
|
+
processingContext,
|
|
735
|
+
);
|
|
736
|
+
} catch {
|
|
737
|
+
lambda = new INTERNAL__UnknownValueSpecification(
|
|
738
|
+
V1_serializeValueSpecification(
|
|
739
|
+
colLambda,
|
|
740
|
+
compileContext.extensions.plugins,
|
|
741
|
+
),
|
|
742
|
+
);
|
|
743
|
+
}
|
|
744
|
+
guaranteeType(
|
|
745
|
+
appliedFunc.parameters[1],
|
|
746
|
+
V1_CString,
|
|
747
|
+
`Can't build tds col func: only support second parameter of col function as String`,
|
|
748
|
+
);
|
|
749
|
+
const colNameValueSpec = guaranteeNonNullable(
|
|
750
|
+
appliedFunc.parameters[1],
|
|
751
|
+
).accept_ValueSpecificationVisitor(
|
|
752
|
+
new V1_ValueSpecificationBuilder(
|
|
753
|
+
compileContext,
|
|
754
|
+
processingContext,
|
|
755
|
+
openVariables,
|
|
756
|
+
),
|
|
757
|
+
);
|
|
758
|
+
const colFunctionExpression = V1_buildBaseSimpleFunctionExpression(
|
|
759
|
+
[lambda, colNameValueSpec],
|
|
760
|
+
appliedFunc.function,
|
|
761
|
+
compileContext,
|
|
762
|
+
);
|
|
763
|
+
return colFunctionExpression;
|
|
764
|
+
};
|
|
765
|
+
|
|
766
|
+
const V1_buildTDSProjectWithColFunctionExpression = (
|
|
688
767
|
functionName: string,
|
|
689
768
|
parameters: V1_ValueSpecification[],
|
|
690
769
|
openVariables: string[],
|
|
691
770
|
compileContext: V1_GraphBuilderContext,
|
|
692
771
|
processingContext: V1_ProcessingContext,
|
|
693
772
|
): SimpleFunctionExpression => {
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
773
|
+
assertTrue(
|
|
774
|
+
parameters.length === 2,
|
|
775
|
+
`Can't build tds project() expression: project() expects 2 arguments`,
|
|
776
|
+
);
|
|
777
|
+
const precedingExperession = (
|
|
778
|
+
parameters[0] as V1_ValueSpecification
|
|
779
|
+
).accept_ValueSpecificationVisitor(
|
|
780
|
+
new V1_ValueSpecificationBuilder(
|
|
781
|
+
compileContext,
|
|
782
|
+
processingContext,
|
|
783
|
+
openVariables,
|
|
784
|
+
),
|
|
785
|
+
);
|
|
786
|
+
assertNonNullable(
|
|
787
|
+
precedingExperession.genericType,
|
|
788
|
+
`Can't build tds project() expression: preceding expression return type is missing`,
|
|
789
|
+
);
|
|
790
|
+
const colFuncExpress = guaranteeNonNullable(
|
|
791
|
+
parameters[1],
|
|
792
|
+
`Can't build tds project() expression: second parameter is missing`,
|
|
793
|
+
);
|
|
794
|
+
let secondProcessedParameter: ValueSpecification;
|
|
795
|
+
if (colFuncExpress instanceof V1_Collection) {
|
|
796
|
+
const processedColExpressions = new CollectionInstanceValue(
|
|
797
|
+
compileContext.graph.getMultiplicity(
|
|
798
|
+
colFuncExpress.multiplicity.lowerBound,
|
|
799
|
+
colFuncExpress.multiplicity.upperBound,
|
|
800
|
+
),
|
|
801
|
+
);
|
|
802
|
+
processedColExpressions.values = colFuncExpress.values.map((value) =>
|
|
803
|
+
V1_buildColFunctionExpression(
|
|
804
|
+
value,
|
|
805
|
+
precedingExperession,
|
|
806
|
+
openVariables,
|
|
807
|
+
compileContext,
|
|
808
|
+
processingContext,
|
|
809
|
+
),
|
|
810
|
+
);
|
|
811
|
+
secondProcessedParameter = processedColExpressions;
|
|
812
|
+
} else {
|
|
813
|
+
assertType(
|
|
814
|
+
colFuncExpress,
|
|
815
|
+
V1_AppliedFunction,
|
|
816
|
+
`Can't build project() expression: project() expects argument #2 to be a function`,
|
|
817
|
+
);
|
|
818
|
+
secondProcessedParameter = V1_buildColFunctionExpression(
|
|
819
|
+
colFuncExpress,
|
|
820
|
+
precedingExperession,
|
|
698
821
|
openVariables,
|
|
699
822
|
compileContext,
|
|
700
823
|
processingContext,
|
|
701
824
|
);
|
|
702
825
|
}
|
|
826
|
+
const expression = V1_buildBaseSimpleFunctionExpression(
|
|
827
|
+
[precedingExperession, secondProcessedParameter],
|
|
828
|
+
functionName,
|
|
829
|
+
compileContext,
|
|
830
|
+
);
|
|
831
|
+
expression.genericType = GenericTypeExplicitReference.create(
|
|
832
|
+
new GenericType(
|
|
833
|
+
compileContext.resolveType(QUERY_BUILDER_PURE_PATH.TDS_ROW).value,
|
|
834
|
+
),
|
|
835
|
+
);
|
|
836
|
+
return expression;
|
|
837
|
+
};
|
|
703
838
|
|
|
839
|
+
export const V1_buildProjectFunctionExpression = (
|
|
840
|
+
functionName: string,
|
|
841
|
+
parameters: V1_ValueSpecification[],
|
|
842
|
+
openVariables: string[],
|
|
843
|
+
compileContext: V1_GraphBuilderContext,
|
|
844
|
+
processingContext: V1_ProcessingContext,
|
|
845
|
+
): SimpleFunctionExpression => {
|
|
846
|
+
if (parameters.length === 2) {
|
|
847
|
+
try {
|
|
848
|
+
return V1_buildTDSProjectWithColFunctionExpression(
|
|
849
|
+
functionName,
|
|
850
|
+
parameters,
|
|
851
|
+
openVariables,
|
|
852
|
+
compileContext,
|
|
853
|
+
processingContext,
|
|
854
|
+
);
|
|
855
|
+
} catch {
|
|
856
|
+
return V1_buildTypedProjectFunctionExpression(
|
|
857
|
+
functionName,
|
|
858
|
+
parameters,
|
|
859
|
+
openVariables,
|
|
860
|
+
compileContext,
|
|
861
|
+
processingContext,
|
|
862
|
+
);
|
|
863
|
+
}
|
|
864
|
+
}
|
|
704
865
|
const length = parameters.length;
|
|
705
866
|
assertTrue(
|
|
706
867
|
length === 3 || length === 2,
|
|
@@ -723,15 +884,19 @@ export const V1_buildProjectFunctionExpression = (
|
|
|
723
884
|
);
|
|
724
885
|
|
|
725
886
|
const columnExpressions = parameters[1];
|
|
726
|
-
|
|
727
|
-
columnExpressions
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
.
|
|
887
|
+
if (columnExpressions instanceof V1_Lambda) {
|
|
888
|
+
topLevelLambdaParameters = columnExpressions.parameters;
|
|
889
|
+
} else {
|
|
890
|
+
assertType(
|
|
891
|
+
columnExpressions,
|
|
892
|
+
V1_Collection,
|
|
893
|
+
`Can't build project() expression: project() expects argument #1 to be a collection`,
|
|
894
|
+
);
|
|
895
|
+
topLevelLambdaParameters = columnExpressions.values
|
|
896
|
+
.filter(filterByType(V1_Lambda))
|
|
897
|
+
.map((lambda) => lambda.parameters)
|
|
898
|
+
.flat();
|
|
899
|
+
}
|
|
735
900
|
|
|
736
901
|
const variables = new Set<string>();
|
|
737
902
|
// Make sure top-level lambdas have their lambda parameter types set properly
|
|
@@ -753,7 +918,13 @@ export const V1_buildProjectFunctionExpression = (
|
|
|
753
918
|
columnExpressions.multiplicity.upperBound,
|
|
754
919
|
),
|
|
755
920
|
);
|
|
756
|
-
|
|
921
|
+
let colExpressionValues: V1_ValueSpecification[] = [];
|
|
922
|
+
if (columnExpressions instanceof V1_Lambda) {
|
|
923
|
+
colExpressionValues = [columnExpressions];
|
|
924
|
+
} else {
|
|
925
|
+
colExpressionValues = columnExpressions.values;
|
|
926
|
+
}
|
|
927
|
+
processedColumnExpressions.values = colExpressionValues.map((value) => {
|
|
757
928
|
try {
|
|
758
929
|
return buildProjectionColumnLambda(
|
|
759
930
|
value,
|
|
@@ -68,6 +68,7 @@ import {
|
|
|
68
68
|
processInternalizeExpression,
|
|
69
69
|
} from './fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeStateBuilder.js';
|
|
70
70
|
import {
|
|
71
|
+
processTDSColExpression,
|
|
71
72
|
processTDSDistinctExpression,
|
|
72
73
|
processTDSProjectExpression,
|
|
73
74
|
processTDSProjectionColumnPropertyExpression,
|
|
@@ -661,7 +662,11 @@ export class QueryBuilderValueSpecificationProcessor
|
|
|
661
662
|
this.parentLambda,
|
|
662
663
|
);
|
|
663
664
|
}
|
|
664
|
-
|
|
665
|
+
return;
|
|
666
|
+
} else if (
|
|
667
|
+
matchFunctionName(functionName, QUERY_BUILDER_SUPPORTED_FUNCTIONS.TDS_COL)
|
|
668
|
+
) {
|
|
669
|
+
processTDSColExpression(valueSpecification, this.queryBuilderState);
|
|
665
670
|
return;
|
|
666
671
|
} else if (
|
|
667
672
|
matchFunctionName(
|
|
@@ -86,7 +86,7 @@ export const getCollectionValueSpecificationType = (
|
|
|
86
86
|
): Type | undefined => {
|
|
87
87
|
if (values.every((val) => val instanceof PrimitiveInstanceValue)) {
|
|
88
88
|
const valuePrimitiveTypes: (PrimitiveType | undefined)[] = [];
|
|
89
|
-
|
|
89
|
+
values.forEach((val) => {
|
|
90
90
|
const primitiveType = val.genericType.value.rawType;
|
|
91
91
|
switch (primitiveType.path) {
|
|
92
92
|
case PRIMITIVE_TYPE.STRING:
|
|
@@ -118,7 +118,7 @@ export const getCollectionValueSpecificationType = (
|
|
|
118
118
|
return valuePrimitiveTypes[0] as PrimitiveType;
|
|
119
119
|
} else if (values.every((val) => val instanceof EnumValueInstanceValue)) {
|
|
120
120
|
const valueEnumerationTypes: Enumeration[] = [];
|
|
121
|
-
|
|
121
|
+
values.forEach((val) => {
|
|
122
122
|
addUniqueEntry(
|
|
123
123
|
valueEnumerationTypes,
|
|
124
124
|
guaranteeNonNullable(val.values[0]).value._OWNER,
|
|
@@ -122,6 +122,7 @@ export class QueryBuilderTDSState
|
|
|
122
122
|
isConvertDerivationProjectionObjects = false;
|
|
123
123
|
showPostFilterPanel: boolean;
|
|
124
124
|
showWindowFuncPanel = false;
|
|
125
|
+
useColFunc = false;
|
|
125
126
|
|
|
126
127
|
postFilterOperators: QueryBuilderPostFilterOperator[] =
|
|
127
128
|
getQueryBuilderCorePostFilterOperators();
|
|
@@ -144,6 +145,7 @@ export class QueryBuilderTDSState
|
|
|
144
145
|
isConvertDerivationProjectionObjects: observable,
|
|
145
146
|
showPostFilterPanel: observable,
|
|
146
147
|
showWindowFuncPanel: observable,
|
|
148
|
+
useColFunc: observable,
|
|
147
149
|
TEMPORARY__showPostFetchStructurePanel: computed,
|
|
148
150
|
derivations: computed,
|
|
149
151
|
hasParserError: computed,
|
|
@@ -157,6 +159,7 @@ export class QueryBuilderTDSState
|
|
|
157
159
|
initializeWithQuery: action,
|
|
158
160
|
setShowPostFilterPanel: action,
|
|
159
161
|
setShowWindowFuncPanel: action,
|
|
162
|
+
setUseColFunc: action,
|
|
160
163
|
checkBeforeChangingImplementation: action,
|
|
161
164
|
convertDerivationProjectionObjects: flow,
|
|
162
165
|
fetchDerivedReturnTypes: flow,
|
|
@@ -459,6 +462,10 @@ export class QueryBuilderTDSState
|
|
|
459
462
|
this.showWindowFuncPanel = val;
|
|
460
463
|
}
|
|
461
464
|
|
|
465
|
+
setUseColFunc(val: boolean): void {
|
|
466
|
+
this.useColFunc = val;
|
|
467
|
+
}
|
|
468
|
+
|
|
462
469
|
*convertDerivationProjectionObjects(): GeneratorFn<void> {
|
|
463
470
|
const lambdas = new Map<string, RawLambda>();
|
|
464
471
|
const derivationProjectionColumnStateMap = new Map<
|