fix: variable and hidden field comparison

This commit is contained in:
Piyush Gupta
2024-09-15 21:29:30 +05:30
parent 88c492afd8
commit 4ed1747ee2
2 changed files with 22 additions and 10 deletions

View File

@@ -44,14 +44,14 @@ const evaluateSingleCondition = (
selectedLanguage: string
): boolean => {
try {
const leftValue = getLeftOperandValue(
let leftValue = getLeftOperandValue(
localSurvey,
data,
variablesData,
condition.leftOperand,
selectedLanguage
);
const rightValue = condition.rightOperand
let rightValue = condition.rightOperand
? getRightOperandValue(localSurvey, data, variablesData, condition.rightOperand)
: undefined;
@@ -83,6 +83,14 @@ const evaluateSingleCondition = (
rightField = "";
}
if (
condition.leftOperand.type === "variable" &&
(leftField as TSurveyVariable).type === "number" &&
condition.rightOperand?.type === "hiddenField"
) {
rightValue = Number(rightValue as string);
}
switch (condition.operator) {
case "equals":
if (condition.leftOperand.type === "question") {
@@ -341,9 +349,7 @@ const getRightOperandValue = (
if (variable.type === "number") return Number(variableValue) || 0;
return variableValue || "";
case "hiddenField":
return !isNaN(data[rightOperand.value] as number)
? Number(data[rightOperand.value])
: data[rightOperand.value];
return data[rightOperand.value];
case "static":
return rightOperand.value;
default:

View File

@@ -44,14 +44,14 @@ const evaluateSingleCondition = (
selectedLanguage: string
): boolean => {
try {
const leftValue = getLeftOperandValue(
let leftValue = getLeftOperandValue(
localSurvey,
data,
variablesData,
condition.leftOperand,
selectedLanguage
);
const rightValue = condition.rightOperand
let rightValue = condition.rightOperand
? getRightOperandValue(localSurvey, data, variablesData, condition.rightOperand)
: undefined;
@@ -83,6 +83,14 @@ const evaluateSingleCondition = (
rightField = "";
}
if (
condition.leftOperand.type === "variable" &&
(leftField as TSurveyVariable).type === "number" &&
condition.rightOperand?.type === "hiddenField"
) {
rightValue = Number(rightValue as string);
}
switch (condition.operator) {
case "equals":
if (condition.leftOperand.type === "question") {
@@ -341,9 +349,7 @@ const getRightOperandValue = (
if (variable.type === "number") return Number(variableValue) || 0;
return variableValue || "";
case "hiddenField":
return !isNaN(data[rightOperand.value] as number)
? Number(data[rightOperand.value])
: data[rightOperand.value];
return data[rightOperand.value];
case "static":
return rightOperand.value;
default: