Skip to content

Commit 58f427e

Browse files
committed
override calculated value with entered valued
1 parent 09910c5 commit 58f427e

File tree

2 files changed

+50
-24
lines changed

2 files changed

+50
-24
lines changed

core/src/main/resources/fieldCalculation.js

Lines changed: 25 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
var FieldCalculation = FieldCalculation || {};
22

3+
var FIELD_CALCULATION_OVERRIDE_CALCULATED_VALUES = true;
4+
35
(function(FieldCalculation) {
46
var inputFieldVariableMap = {};
57
var inputFieldVars = {};
@@ -383,7 +385,7 @@ var FieldCalculation = FieldCalculation || {};
383385
inputFieldVariable.valueErrorMessage = null;
384386
var evaluation = _evalInputFieldVariableExpression(inputFieldVariable, inputFieldVariable.value.jsValueExpression, "value expression", cycleCheckMap, true);
385387
if (evaluation != null) {
386-
inputFieldVariable.oldValue = _cloneJSON( inputFieldVariable.value);
388+
inputFieldVariable.oldValue = _cloneJSON(inputFieldVariable.value);
387389
inputFieldVariable.valueErrorMessage = evaluation.errorMessage;
388390
_setInputFieldVariableValue(inputFieldVariable.value, evaluation.returnValue);
389391
}
@@ -471,23 +473,34 @@ var FieldCalculation = FieldCalculation || {};
471473
argsOk = false;
472474
break;
473475
} else {
474-
argValue = _processInputFieldVariableValue(argInputFieldVariable, cycleCheckMap ? cycleCheckMap : {});
476+
if (FIELD_CALCULATION_OVERRIDE_CALCULATED_VALUES && !_empty(_getInputFieldVariableValue(argInputFieldVariable.enteredValue))) {
477+
argValue = _cloneJSON(argInputFieldVariable.enteredValue);
478+
} else {
479+
argValue = _processInputFieldVariableValue(argInputFieldVariable, cycleCheckMap ? cycleCheckMap : {});
480+
}
475481
}
476482
} else {
477483
argValue = [];
478484
length = argInputFieldVariable.length;
479485
for (j = 0; j < length; j++) {
480486
if (j in argInputFieldVariable) {
481-
argValue.push(_processInputFieldVariableValue(argInputFieldVariable[j], cycleCheckMap ? cycleCheckMap : {}));
487+
if (FIELD_CALCULATION_OVERRIDE_CALCULATED_VALUES && !_empty(_getInputFieldVariableValue(argInputFieldVariable[j].enteredValue))) {
488+
argValue.push(_cloneJSON(argInputFieldVariable[j].enteredValue));
489+
} else {
490+
argValue.push(_processInputFieldVariableValue(argInputFieldVariable[j], cycleCheckMap ? cycleCheckMap : {}));
491+
}
482492
}
483493
}
484494
}
485495
} else {
486-
argValue = _processInputFieldVariableValue(argInputFieldVariable, cycleCheckMap ? cycleCheckMap : {});
496+
if (FIELD_CALCULATION_OVERRIDE_CALCULATED_VALUES && !_empty(_getInputFieldVariableValue(argInputFieldVariable.enteredValue))) {
497+
argValue = _cloneJSON(argInputFieldVariable.enteredValue);
498+
} else {
499+
argValue = _processInputFieldVariableValue(argInputFieldVariable, cycleCheckMap ? cycleCheckMap : {});
500+
}
487501
}
488502

489503
if ((!argInputFieldVariable || (argInputFieldVariable.valueErrorMessage != null && argInputFieldVariable.valueErrorMessage.length > 0))) {
490-
491504
errorMessage = argInputFieldVariable.valueErrorMessage;
492505
returnValue = null;
493506
argsOk = false;
@@ -536,8 +549,8 @@ var FieldCalculation = FieldCalculation || {};
536549
'returnValue' : returnValue
537550
};
538551
} else if (copyEnteredValue) {
539-
inputFieldVariable.oldValue = _cloneJSON( inputFieldVariable.value);
540-
inputFieldVariable.value = _cloneJSON( inputFieldVariable.enteredValue);
552+
inputFieldVariable.oldValue = _cloneJSON(inputFieldVariable.value);
553+
inputFieldVariable.value = _cloneJSON(inputFieldVariable.enteredValue);
541554
if (FIELD_CALCULATION_DEBUG_LEVEL >= 3) {
542555
console.log("entered value of " + _debugVarName(inputFieldVariable) + " copied");
543556
}
@@ -907,7 +920,7 @@ var FieldCalculation = FieldCalculation || {};
907920
} else if(typeof input === "boolean"){
908921
return !input;
909922
} else if(typeof input === "number"){
910-
return false;
923+
return isNaN(input);
911924
} else if (input instanceof Array) {
912925
return (input.length <= 0 || (input.length == 1 && input[0] == ""));
913926
} else if(input instanceof JSJoda.LocalDate) {
@@ -1363,7 +1376,7 @@ var FieldCalculation = FieldCalculation || {};
13631376
function _setVariable(variable, value, apply) {
13641377
var inputFieldVar = _getInputFieldVariable(variable);
13651378
if (inputFieldVar) {
1366-
inputFieldVar.oldValue = _cloneJSON( inputFieldVar.value);
1379+
inputFieldVar.oldValue = _cloneJSON(inputFieldVar.value);
13671380
_setInputFieldVariableValue(inputFieldVar.value, value);
13681381
if (FIELD_CALCULATION_DEBUG_LEVEL >= 1) {
13691382
_debugVariableValue("user code sets variable value ", inputFieldVar);
@@ -1870,7 +1883,7 @@ var FieldCalculation = FieldCalculation || {};
18701883
inputFieldVariable.oldOutput = null;
18711884
inputFieldVariable.delta = false;
18721885
inputFieldVariable.value = inputFieldVariableValue;
1873-
inputFieldVariable.oldValue = _cloneJSON( inputFieldVariableValue);
1886+
inputFieldVariable.oldValue = _cloneJSON(inputFieldVariableValue);
18741887

18751888
var mask = {};
18761889
//mask global properties:
@@ -1916,7 +1929,7 @@ var FieldCalculation = FieldCalculation || {};
19161929
}
19171930
inputFieldVariableMap[inputFieldVariableValue.jsVariableName] = inputFieldVariable;
19181931
}
1919-
inputFieldVariable.enteredValue = _cloneJSON( inputFieldVariableValue);
1932+
inputFieldVariable.enteredValue = _cloneJSON(inputFieldVariableValue);
19201933
}
19211934
}
19221935
if (FIELD_CALCULATION_DEBUG_LEVEL >= 1) {
@@ -2077,7 +2090,7 @@ var FieldCalculation = FieldCalculation || {};
20772090
function _inputFieldApplyCalculatedValue(variableName, index) {
20782091
var inputFieldVariable = _getSeriesInputFieldVariable(variableName, index, false);
20792092
if (inputFieldVariable) {
2080-
inputFieldVariable.enteredValue = _cloneJSON( inputFieldVariable.value);
2093+
inputFieldVariable.enteredValue = _cloneJSON(inputFieldVariable.value);
20812094
inputFieldVariable.delta = !_equalInputFieldVariable(inputFieldVariable);
20822095
if (FIELD_CALCULATION_DEBUG_LEVEL >= 1) {
20832096
console.log("apply calculated value " + _debugVarName(inputFieldVariable));

web/src/main/webapp/resources/js/fieldCalculation.js

Lines changed: 25 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
var FieldCalculation = FieldCalculation || {};
22

3+
var FIELD_CALCULATION_OVERRIDE_CALCULATED_VALUES = true;
4+
35
(function(FieldCalculation) {
46
var inputFieldVariableMap = {};
57
var inputFieldVars = {};
@@ -383,7 +385,7 @@ var FieldCalculation = FieldCalculation || {};
383385
inputFieldVariable.valueErrorMessage = null;
384386
var evaluation = _evalInputFieldVariableExpression(inputFieldVariable, inputFieldVariable.value.jsValueExpression, "value expression", cycleCheckMap, true);
385387
if (evaluation != null) {
386-
inputFieldVariable.oldValue = _cloneJSON( inputFieldVariable.value);
388+
inputFieldVariable.oldValue = _cloneJSON(inputFieldVariable.value);
387389
inputFieldVariable.valueErrorMessage = evaluation.errorMessage;
388390
_setInputFieldVariableValue(inputFieldVariable.value, evaluation.returnValue);
389391
}
@@ -471,23 +473,34 @@ var FieldCalculation = FieldCalculation || {};
471473
argsOk = false;
472474
break;
473475
} else {
474-
argValue = _processInputFieldVariableValue(argInputFieldVariable, cycleCheckMap ? cycleCheckMap : {});
476+
if (FIELD_CALCULATION_OVERRIDE_CALCULATED_VALUES && !_empty(_getInputFieldVariableValue(argInputFieldVariable.enteredValue))) {
477+
argValue = _cloneJSON(argInputFieldVariable.enteredValue);
478+
} else {
479+
argValue = _processInputFieldVariableValue(argInputFieldVariable, cycleCheckMap ? cycleCheckMap : {});
480+
}
475481
}
476482
} else {
477483
argValue = [];
478484
length = argInputFieldVariable.length;
479485
for (j = 0; j < length; j++) {
480486
if (j in argInputFieldVariable) {
481-
argValue.push(_processInputFieldVariableValue(argInputFieldVariable[j], cycleCheckMap ? cycleCheckMap : {}));
487+
if (FIELD_CALCULATION_OVERRIDE_CALCULATED_VALUES && !_empty(_getInputFieldVariableValue(argInputFieldVariable[j].enteredValue))) {
488+
argValue.push(_cloneJSON(argInputFieldVariable[j].enteredValue));
489+
} else {
490+
argValue.push(_processInputFieldVariableValue(argInputFieldVariable[j], cycleCheckMap ? cycleCheckMap : {}));
491+
}
482492
}
483493
}
484494
}
485495
} else {
486-
argValue = _processInputFieldVariableValue(argInputFieldVariable, cycleCheckMap ? cycleCheckMap : {});
496+
if (FIELD_CALCULATION_OVERRIDE_CALCULATED_VALUES && !_empty(_getInputFieldVariableValue(argInputFieldVariable.enteredValue))) {
497+
argValue = _cloneJSON(argInputFieldVariable.enteredValue);
498+
} else {
499+
argValue = _processInputFieldVariableValue(argInputFieldVariable, cycleCheckMap ? cycleCheckMap : {});
500+
}
487501
}
488502

489503
if ((!argInputFieldVariable || (argInputFieldVariable.valueErrorMessage != null && argInputFieldVariable.valueErrorMessage.length > 0))) {
490-
491504
errorMessage = argInputFieldVariable.valueErrorMessage;
492505
returnValue = null;
493506
argsOk = false;
@@ -536,8 +549,8 @@ var FieldCalculation = FieldCalculation || {};
536549
'returnValue' : returnValue
537550
};
538551
} else if (copyEnteredValue) {
539-
inputFieldVariable.oldValue = _cloneJSON( inputFieldVariable.value);
540-
inputFieldVariable.value = _cloneJSON( inputFieldVariable.enteredValue);
552+
inputFieldVariable.oldValue = _cloneJSON(inputFieldVariable.value);
553+
inputFieldVariable.value = _cloneJSON(inputFieldVariable.enteredValue);
541554
if (FIELD_CALCULATION_DEBUG_LEVEL >= 3) {
542555
console.log("entered value of " + _debugVarName(inputFieldVariable) + " copied");
543556
}
@@ -907,7 +920,7 @@ var FieldCalculation = FieldCalculation || {};
907920
} else if(typeof input === "boolean"){
908921
return !input;
909922
} else if(typeof input === "number"){
910-
return false;
923+
return isNaN(input);
911924
} else if (input instanceof Array) {
912925
return (input.length <= 0 || (input.length == 1 && input[0] == ""));
913926
} else if(input instanceof JSJoda.LocalDate) {
@@ -1363,7 +1376,7 @@ var FieldCalculation = FieldCalculation || {};
13631376
function _setVariable(variable, value, apply) {
13641377
var inputFieldVar = _getInputFieldVariable(variable);
13651378
if (inputFieldVar) {
1366-
inputFieldVar.oldValue = _cloneJSON( inputFieldVar.value);
1379+
inputFieldVar.oldValue = _cloneJSON(inputFieldVar.value);
13671380
_setInputFieldVariableValue(inputFieldVar.value, value);
13681381
if (FIELD_CALCULATION_DEBUG_LEVEL >= 1) {
13691382
_debugVariableValue("user code sets variable value ", inputFieldVar);
@@ -1870,7 +1883,7 @@ var FieldCalculation = FieldCalculation || {};
18701883
inputFieldVariable.oldOutput = null;
18711884
inputFieldVariable.delta = false;
18721885
inputFieldVariable.value = inputFieldVariableValue;
1873-
inputFieldVariable.oldValue = _cloneJSON( inputFieldVariableValue);
1886+
inputFieldVariable.oldValue = _cloneJSON(inputFieldVariableValue);
18741887

18751888
var mask = {};
18761889
//mask global properties:
@@ -1916,7 +1929,7 @@ var FieldCalculation = FieldCalculation || {};
19161929
}
19171930
inputFieldVariableMap[inputFieldVariableValue.jsVariableName] = inputFieldVariable;
19181931
}
1919-
inputFieldVariable.enteredValue = _cloneJSON( inputFieldVariableValue);
1932+
inputFieldVariable.enteredValue = _cloneJSON(inputFieldVariableValue);
19201933
}
19211934
}
19221935
if (FIELD_CALCULATION_DEBUG_LEVEL >= 1) {
@@ -2077,7 +2090,7 @@ var FieldCalculation = FieldCalculation || {};
20772090
function _inputFieldApplyCalculatedValue(variableName, index) {
20782091
var inputFieldVariable = _getSeriesInputFieldVariable(variableName, index, false);
20792092
if (inputFieldVariable) {
2080-
inputFieldVariable.enteredValue = _cloneJSON( inputFieldVariable.value);
2093+
inputFieldVariable.enteredValue = _cloneJSON(inputFieldVariable.value);
20812094
inputFieldVariable.delta = !_equalInputFieldVariable(inputFieldVariable);
20822095
if (FIELD_CALCULATION_DEBUG_LEVEL >= 1) {
20832096
console.log("apply calculated value " + _debugVarName(inputFieldVariable));

0 commit comments

Comments
 (0)