|
1 | 1 | var FieldCalculation = FieldCalculation || {}; |
2 | 2 |
|
| 3 | +var FIELD_CALCULATION_OVERRIDE_CALCULATED_VALUES = true; |
| 4 | + |
3 | 5 | (function(FieldCalculation) { |
4 | 6 | var inputFieldVariableMap = {}; |
5 | 7 | var inputFieldVars = {}; |
@@ -383,7 +385,7 @@ var FieldCalculation = FieldCalculation || {}; |
383 | 385 | inputFieldVariable.valueErrorMessage = null; |
384 | 386 | var evaluation = _evalInputFieldVariableExpression(inputFieldVariable, inputFieldVariable.value.jsValueExpression, "value expression", cycleCheckMap, true); |
385 | 387 | if (evaluation != null) { |
386 | | - inputFieldVariable.oldValue = _cloneJSON( inputFieldVariable.value); |
| 388 | + inputFieldVariable.oldValue = _cloneJSON(inputFieldVariable.value); |
387 | 389 | inputFieldVariable.valueErrorMessage = evaluation.errorMessage; |
388 | 390 | _setInputFieldVariableValue(inputFieldVariable.value, evaluation.returnValue); |
389 | 391 | } |
@@ -471,23 +473,34 @@ var FieldCalculation = FieldCalculation || {}; |
471 | 473 | argsOk = false; |
472 | 474 | break; |
473 | 475 | } 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 | + } |
475 | 481 | } |
476 | 482 | } else { |
477 | 483 | argValue = []; |
478 | 484 | length = argInputFieldVariable.length; |
479 | 485 | for (j = 0; j < length; j++) { |
480 | 486 | 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 | + } |
482 | 492 | } |
483 | 493 | } |
484 | 494 | } |
485 | 495 | } 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 | + } |
487 | 501 | } |
488 | 502 |
|
489 | 503 | if ((!argInputFieldVariable || (argInputFieldVariable.valueErrorMessage != null && argInputFieldVariable.valueErrorMessage.length > 0))) { |
490 | | - |
491 | 504 | errorMessage = argInputFieldVariable.valueErrorMessage; |
492 | 505 | returnValue = null; |
493 | 506 | argsOk = false; |
@@ -536,8 +549,8 @@ var FieldCalculation = FieldCalculation || {}; |
536 | 549 | 'returnValue' : returnValue |
537 | 550 | }; |
538 | 551 | } 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); |
541 | 554 | if (FIELD_CALCULATION_DEBUG_LEVEL >= 3) { |
542 | 555 | console.log("entered value of " + _debugVarName(inputFieldVariable) + " copied"); |
543 | 556 | } |
@@ -907,7 +920,7 @@ var FieldCalculation = FieldCalculation || {}; |
907 | 920 | } else if(typeof input === "boolean"){ |
908 | 921 | return !input; |
909 | 922 | } else if(typeof input === "number"){ |
910 | | - return false; |
| 923 | + return isNaN(input); |
911 | 924 | } else if (input instanceof Array) { |
912 | 925 | return (input.length <= 0 || (input.length == 1 && input[0] == "")); |
913 | 926 | } else if(input instanceof JSJoda.LocalDate) { |
@@ -1363,7 +1376,7 @@ var FieldCalculation = FieldCalculation || {}; |
1363 | 1376 | function _setVariable(variable, value, apply) { |
1364 | 1377 | var inputFieldVar = _getInputFieldVariable(variable); |
1365 | 1378 | if (inputFieldVar) { |
1366 | | - inputFieldVar.oldValue = _cloneJSON( inputFieldVar.value); |
| 1379 | + inputFieldVar.oldValue = _cloneJSON(inputFieldVar.value); |
1367 | 1380 | _setInputFieldVariableValue(inputFieldVar.value, value); |
1368 | 1381 | if (FIELD_CALCULATION_DEBUG_LEVEL >= 1) { |
1369 | 1382 | _debugVariableValue("user code sets variable value ", inputFieldVar); |
@@ -1870,7 +1883,7 @@ var FieldCalculation = FieldCalculation || {}; |
1870 | 1883 | inputFieldVariable.oldOutput = null; |
1871 | 1884 | inputFieldVariable.delta = false; |
1872 | 1885 | inputFieldVariable.value = inputFieldVariableValue; |
1873 | | - inputFieldVariable.oldValue = _cloneJSON( inputFieldVariableValue); |
| 1886 | + inputFieldVariable.oldValue = _cloneJSON(inputFieldVariableValue); |
1874 | 1887 |
|
1875 | 1888 | var mask = {}; |
1876 | 1889 | //mask global properties: |
@@ -1916,7 +1929,7 @@ var FieldCalculation = FieldCalculation || {}; |
1916 | 1929 | } |
1917 | 1930 | inputFieldVariableMap[inputFieldVariableValue.jsVariableName] = inputFieldVariable; |
1918 | 1931 | } |
1919 | | - inputFieldVariable.enteredValue = _cloneJSON( inputFieldVariableValue); |
| 1932 | + inputFieldVariable.enteredValue = _cloneJSON(inputFieldVariableValue); |
1920 | 1933 | } |
1921 | 1934 | } |
1922 | 1935 | if (FIELD_CALCULATION_DEBUG_LEVEL >= 1) { |
@@ -2077,7 +2090,7 @@ var FieldCalculation = FieldCalculation || {}; |
2077 | 2090 | function _inputFieldApplyCalculatedValue(variableName, index) { |
2078 | 2091 | var inputFieldVariable = _getSeriesInputFieldVariable(variableName, index, false); |
2079 | 2092 | if (inputFieldVariable) { |
2080 | | - inputFieldVariable.enteredValue = _cloneJSON( inputFieldVariable.value); |
| 2093 | + inputFieldVariable.enteredValue = _cloneJSON(inputFieldVariable.value); |
2081 | 2094 | inputFieldVariable.delta = !_equalInputFieldVariable(inputFieldVariable); |
2082 | 2095 | if (FIELD_CALCULATION_DEBUG_LEVEL >= 1) { |
2083 | 2096 | console.log("apply calculated value " + _debugVarName(inputFieldVariable)); |
|
0 commit comments