From d0864b68788e2078324f7c3d0b0d04f8998ad60d Mon Sep 17 00:00:00 2001 From: Yannan <73408381+YannanGao-gs@users.noreply.github.com> Date: Thu, 13 Jun 2024 22:34:13 -0400 Subject: [PATCH] fix --- ...ueryBuilderMilestoningParameterEditor.tsx} | 0 .../QueryBuilderResultModifierPanel.tsx | 99 ++++++++++--------- 2 files changed, 50 insertions(+), 49 deletions(-) rename packages/legend-query-builder/src/components/explorer/{QueryBuilderMilestoningEditor.tsx => QueryBuilderMilestoningParameterEditor.tsx} (100%) diff --git a/packages/legend-query-builder/src/components/explorer/QueryBuilderMilestoningEditor.tsx b/packages/legend-query-builder/src/components/explorer/QueryBuilderMilestoningParameterEditor.tsx similarity index 100% rename from packages/legend-query-builder/src/components/explorer/QueryBuilderMilestoningEditor.tsx rename to packages/legend-query-builder/src/components/explorer/QueryBuilderMilestoningParameterEditor.tsx diff --git a/packages/legend-query-builder/src/components/fetch-structure/QueryBuilderResultModifierPanel.tsx b/packages/legend-query-builder/src/components/fetch-structure/QueryBuilderResultModifierPanel.tsx index 011066b05a9..0156cc88e51 100644 --- a/packages/legend-query-builder/src/components/fetch-structure/QueryBuilderResultModifierPanel.tsx +++ b/packages/legend-query-builder/src/components/fetch-structure/QueryBuilderResultModifierPanel.tsx @@ -80,7 +80,7 @@ import { type QueryBuilderVariableDragSource, } from '../shared/BasicValueSpecificationEditor.js'; import { useDrop } from 'react-dnd'; -import { MilestoningParameterEditor } from '../explorer/QueryBuilderMilestoningEditor.js'; +import { MilestoningParameterEditor } from '../explorer/QueryBuilderMilestoningParameterEditor.js'; import { QueryBuilderSimpleConstantExpressionState } from '../../stores/QueryBuilderConstantsState.js'; import { LambdaParameterState } from '../../stores/shared/LambdaParameterState.js'; @@ -518,56 +518,65 @@ export const QueryResultModifierModal = observer( setIsAllVersionsEnabled(Boolean(value)); }; - const buildAllVersionsInRangeParameters = (): void => { - let startDateParameterState; - let endDateParameterState; - if (!(startDate && startDate instanceof VariableExpression)) { - const startDateVar = new VariableExpression( - MILESTONING_START_DATE_PARAMETER_NAME, + const getOrCreateNewLambdaParameterState = ( + lamdaStates: LambdaParameterState[], + varName: string, + ): LambdaParameterState => { + const lamdaState = lamdaStates.find((ls) => ls.variableName === varName); + if (lamdaState) { + return lamdaState; + } else { + const varExp = new VariableExpression( + varName, Multiplicity.ONE, GenericTypeExplicitReference.create( new GenericType(PrimitiveType.DATE), ), ); - setStartDate(startDateVar); - startDateParameterState = new LambdaParameterState( - startDateVar, + const newParamState = new LambdaParameterState( + varExp, milestoningState.queryBuilderState.observerContext, milestoningState.queryBuilderState.graphManagerState.graph, ); - startDateParameterState.mockParameterValue(); + newParamState.mockParameterValue(); + return newParamState; + } + }; + + const buildAllVersionsInRangeParameters = (): void => { + let startDateParameterState; + let endDateParameterState; + if (!(startDate && startDate instanceof VariableExpression)) { + startDateParameterState = getOrCreateNewLambdaParameterState( + parameterStates, + MILESTONING_START_DATE_PARAMETER_NAME, + ); + setStartDate(startDateParameterState.parameter); } if (!(endDate && endDate instanceof VariableExpression)) { - const endDateVar = new VariableExpression( + endDateParameterState = getOrCreateNewLambdaParameterState( + parameterStates, MILESTONING_END_DATE_PARAMETER_NAME, - Multiplicity.ONE, - GenericTypeExplicitReference.create( - new GenericType(PrimitiveType.DATE), - ), ); - setEndDate(endDateVar); - endDateParameterState = new LambdaParameterState( - endDateVar, - milestoningState.queryBuilderState.observerContext, - milestoningState.queryBuilderState.graphManagerState.graph, - ); - endDateParameterState.mockParameterValue(); + setEndDate(endDateParameterState.parameter); } setParameterStates([ - ...parameterStates.filter( - (ps) => - shouldFilterMilestoningParamIfNotUsed( - businessDate, - setBusinessDate, - )(ps) && - shouldFilterMilestoningParamIfNotUsed( - processingDate, - setProcessingDate, - )(ps), - ), - ...[startDateParameterState, endDateParameterState].filter( - isNonNullable, - ), + ...new Set([ + ...parameterStates.filter( + (ps) => + shouldFilterMilestoningParamIfNotUsed( + businessDate, + setBusinessDate, + )(ps) && + shouldFilterMilestoningParamIfNotUsed( + processingDate, + setProcessingDate, + )(ps), + ), + ...[startDateParameterState, endDateParameterState].filter( + isNonNullable, + ), + ]), ]); }; @@ -720,9 +729,7 @@ export const QueryResultModifierModal = observer( milestoningState.queryBuilderState } parameter={startDate} - setParameter={( - val: ValueSpecification, - ): void => setStartDate(val)} + setParameter={setStartDate} /> @@ -734,9 +741,7 @@ export const QueryResultModifierModal = observer( milestoningState.queryBuilderState } parameter={endDate} - setParameter={( - val: ValueSpecification, - ): void => setEndDate(val)} + setParameter={setEndDate} /> @@ -755,9 +760,7 @@ export const QueryResultModifierModal = observer( milestoningState.queryBuilderState } parameter={processingDate} - setParameter={(val: ValueSpecification): void => - setProcessingDate(val) - } + setParameter={setProcessingDate} /> )} @@ -771,9 +774,7 @@ export const QueryResultModifierModal = observer( milestoningState.queryBuilderState } parameter={businessDate} - setParameter={(val: ValueSpecification): void => - setBusinessDate(val) - } + setParameter={setBusinessDate} /> )}