summaryrefslogtreecommitdiff
path: root/addons/web
diff options
context:
space:
mode:
authorArnaud Joset <arj@odoo.com>2020-01-06 10:19:32 +0000
committerArnaud Joset <arj@odoo.com>2020-01-06 15:46:28 +0000
commitc411bdfe4dff6174cbe58ae3c29204ba8c9b1ea4 (patch)
treef7c635abca3491cf738b2dc1fc852ffe70a75273 /addons/web
parent7f3b2b2adf3b9597f9638738137a521e2f6d3557 (diff)
[FIX] web: human readability of negative numbers.
Before this commit, negative numbers are never rendered as human readable (e.g. 34000 -> 34k). closes odoo/odoo#42789 Taskid: 2160790 X-original-commit: b51877c4c4c9d8cd873dd0205954fd807d62ee01 Signed-off-by: Aaron Bohy (aab) <aab@odoo.com>
Diffstat (limited to 'addons/web')
-rw-r--r--addons/web/static/src/js/core/utils.js3
-rw-r--r--addons/web/static/tests/core/util_tests.js16
2 files changed, 18 insertions, 1 deletions
diff --git a/addons/web/static/src/js/core/utils.js b/addons/web/static/src/js/core/utils.js
index 6527207dfc9..a4d6f845795 100644
--- a/addons/web/static/src/js/core/utils.js
+++ b/addons/web/static/src/js/core/utils.js
@@ -338,6 +338,8 @@ var utils = {
// formatterCallback seems useless here.
return number + 'e' + numberMagnitude;
}
+ var sign = Math.sign(number);
+ number = Math.abs(number);
for (var i = val.length; i > 0 ; i--) {
var s = Math.pow(10, i * 3);
if (s <= number / Math.pow(10, minDigits - 1)) {
@@ -346,6 +348,7 @@ var utils = {
break;
}
}
+ number = sign * number;
return formatterCallback('' + number) + symbol;
},
/**
diff --git a/addons/web/static/tests/core/util_tests.js b/addons/web/static/tests/core/util_tests.js
index 368f36c2fc6..91a9f6b271b 100644
--- a/addons/web/static/tests/core/util_tests.js
+++ b/addons/web/static/tests/core/util_tests.js
@@ -68,7 +68,7 @@ QUnit.module('core', {}, function () {
});
QUnit.test('human_number', function (assert) {
- assert.expect(13);
+ assert.expect(26);
var human_number = utils.human_number;
@@ -85,6 +85,20 @@ QUnit.module('core', {}, function () {
assert.strictEqual(human_number(1.0045e+22, 3, 1), '1.005e+22');
assert.strictEqual(human_number(1.012e+43, 2, 1), '1.01e+43');
assert.strictEqual(human_number(1.012e+43, 2, 2), '1.01e+43');
+
+ assert.strictEqual(human_number(-1020, 2, 1), '-1.02k');
+ assert.strictEqual(human_number(-1020000, 2, 2), '-1020k');
+ assert.strictEqual(human_number(-10200000, 2, 2), '-10.2M');
+ assert.strictEqual(human_number(-1020, 2, 1), '-1.02k');
+ assert.strictEqual(human_number(-1002, 2, 1), '-1k');
+ assert.strictEqual(human_number(-101, 2, 1), '-101');
+ assert.strictEqual(human_number(-64.2, 2, 1), '-64');
+ assert.strictEqual(human_number(-1e+18), '-1E');
+ assert.strictEqual(human_number(-1e+21, 2, 1), '-1e+21');
+ assert.strictEqual(human_number(-1.0045e+22, 2, 1), '-1e+22');
+ assert.strictEqual(human_number(-1.0045e+22, 3, 1), '-1.004e+22');
+ assert.strictEqual(human_number(-1.012e+43, 2, 1), '-1.01e+43');
+ assert.strictEqual(human_number(-1.012e+43, 2, 2), '-1.01e+43');
});
});