From 75d25151df01535671cdbd4b72c1a45056c94e9f Mon Sep 17 00:00:00 2001 From: Minstel Date: Fri, 18 Jan 2019 17:44:49 +0700 Subject: [PATCH 1/2] Use parseNumber for formatting price field --- js/legalform-calc.js | 3 ++- js/ractive-legalform.js | 2 +- spec/lib/{parse-float.spec.js => parse-number.spec.js} | 1 + 3 files changed, 4 insertions(+), 2 deletions(-) rename spec/lib/{parse-float.spec.js => parse-number.spec.js} (94%) diff --git a/js/legalform-calc.js b/js/legalform-calc.js index 71313b2..d459ef9 100644 --- a/js/legalform-calc.js +++ b/js/legalform-calc.js @@ -2,6 +2,7 @@ if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') { module.exports = LegalFormCalc; var ltriToUrl = require('./lib/ltri-to-url'); + var parseNumber = require('./lib/parse-number'); var expandCondition = require('./lib/expand-condition'); var calculationVars = require('./lib/calculation-vars'); var FormModel = require('./model/form-model'); @@ -56,7 +57,7 @@ function LegalFormCalc($) { if (type === 'group' && field.multiple) { value = typeof(value) !== 'undefined' ? [value] : []; } else if (type === 'money' && value) { - value = parseFloat(value); + value = parseNumber(value); } addGroupedData(data, step.group, field.name, value); diff --git a/js/ractive-legalform.js b/js/ractive-legalform.js index 0cefc5c..0873d00 100644 --- a/js/ractive-legalform.js +++ b/js/ractive-legalform.js @@ -229,7 +229,7 @@ meta.type === 'money'; if (isMoney && newValue) { - this.set(keypath, parseFloat(newValue)); + this.set(keypath, parseNumber(newValue)); } }, diff --git a/spec/lib/parse-float.spec.js b/spec/lib/parse-number.spec.js similarity index 94% rename from spec/lib/parse-float.spec.js rename to spec/lib/parse-number.spec.js index 338190e..5d5b5dd 100644 --- a/spec/lib/parse-float.spec.js +++ b/spec/lib/parse-number.spec.js @@ -10,6 +10,7 @@ describe("test parseNumber function", function() { {number: 134, expected: 134.0, note: '134 should be converted to 134.0'}, {number: 1.34, expected: 1.34, note: '1.34 should be converted to 1.34'}, {number: '1,34', expected: 1.34, note: '1,34 should be converted to 1.34'}, + {number: '1,30', expected: 1.3, note: '1,30 should be converted to 1.3, thus not preserving ending zero'}, {number: '12,503,348.09', expected: 12503348.09, note: '12,503,348.09 should be converted to 12503348.09'}, {number: '12.503.348,09', expected: 12503348.09, note: '12.503.348,09 should be converted to 12503348.09'}, {number: '12503348.09', expected: 12503348.09, note: '12503348.09 should be converted to 12503348.09'}, From 17b02aa885a1dde4d174a7057d2fbc380af69a76 Mon Sep 17 00:00:00 2001 From: Minstel Date: Fri, 18 Jan 2019 18:13:26 +0700 Subject: [PATCH 2/2] Rollback casting money to float, as it removes trailing zeros --- js/legalform-calc.js | 3 --- js/ractive-legalform.js | 19 ------------------- 2 files changed, 22 deletions(-) diff --git a/js/legalform-calc.js b/js/legalform-calc.js index d459ef9..4f33d56 100644 --- a/js/legalform-calc.js +++ b/js/legalform-calc.js @@ -2,7 +2,6 @@ if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') { module.exports = LegalFormCalc; var ltriToUrl = require('./lib/ltri-to-url'); - var parseNumber = require('./lib/parse-number'); var expandCondition = require('./lib/expand-condition'); var calculationVars = require('./lib/calculation-vars'); var FormModel = require('./model/form-model'); @@ -56,8 +55,6 @@ function LegalFormCalc($) { if (type === 'group' && field.multiple) { value = typeof(value) !== 'undefined' ? [value] : []; - } else if (type === 'money' && value) { - value = parseNumber(value); } addGroupedData(data, step.group, field.name, value); diff --git a/js/ractive-legalform.js b/js/ractive-legalform.js index 0873d00..32d66fe 100644 --- a/js/ractive-legalform.js +++ b/js/ractive-legalform.js @@ -137,8 +137,6 @@ if (isComputed) return; - - this.onChangeMoney(newValue, oldValue, keypath); this.onChangeAmount(newValue, oldValue, keypath); var isEmpty = newValue === null || @@ -216,23 +214,6 @@ }, 10); }, - /** - * Cast money to float - * @param {string} newValue - * @param {string} oldValue - * @param {string} keypath - */ - onChangeMoney: function(newValue, oldValue, keypath) { - var meta = this.get('meta.' + keypath); - var isMoney = typeof meta !== 'undefined' && - typeof meta.type !== 'undefined' && - meta.type === 'money'; - - if (isMoney && newValue) { - this.set(keypath, parseNumber(newValue)); - } - }, - /** * Handle change of amount options from singular to plural, and backwords. * @param {mixed} newValue