Skip to content
Snippets Groups Projects
Commit 8e017ee2 authored by Mathieu Duckerts-Antoine's avatar Mathieu Duckerts-Antoine Committed by Géry Debongnie
Browse files

[IMP] web: add a percentage formatter

This rev. adds a new formatter for numerical values to fieldsUtils.
parent dcca2e8b
Branches
Tags
No related merge requests found
......@@ -29,12 +29,12 @@ var _t = core._t;
/**
* Convert binary to bin_size
*
*
* @param {string} [value] base64 representation of the binary (might be already a bin_size!)
* @param {Object} [field]
* a description of the field (note: this parameter is ignored)
* a description of the field (note: this parameter is ignored)
* @param {Object} [options] additional options (note: this parameter is ignored)
*
*
* @returns {string} bin_size (which is human-readable)
*/
function formatBinary(value, field, options) {
......@@ -320,7 +320,19 @@ function formatMonetary(value, field, options) {
return currency.symbol + ' ' + formatted_value;
}
}
/**
* Returns a string representing the given value (multiplied by 100)
* concatenated with '%'.
*
* @param {number | false} value
* @param {Object} [field]
* @param {Object} [options]
* @returns {string}
*/
function formatPercentage(value, field, options) {
value = formatFloat(value * 100, field, options) || '0';
return parseFloat(value) + "%";
}
/**
* Returns a string representing the value of the selection.
*
......@@ -591,6 +603,7 @@ return {
many2one: formatMany2one,
monetary: formatMonetary,
one2many: formatX2Many,
percentage: formatPercentage,
reference: formatMany2one,
selection: formatSelection,
text: formatChar,
......
......@@ -4,7 +4,6 @@ odoo.define('web.field_utils_tests', function (require) {
var core = require('web.core');
var session = require('web.session');
var fieldUtils = require('web.field_utils');
var testUtils = require('web.test_utils');
QUnit.module('fields', {}, function () {
......@@ -133,7 +132,22 @@ QUnit.test('format binary', function (assert) {
// base64 estimated size (bytes) = value.length / 1.37 (http://en.wikipedia.org/wiki/Base64#MIME)
// Here: 4 / 1.37 = 2.91970800 => 2.92 (rounded 2 decimals by utils.human_size)
assert.strictEqual(fieldUtils.format.binary('Cg=='), '2.92 Bytes');
});
QUnit.test('format percentage', function (assert) {
assert.expect(8);
assert.strictEqual(fieldUtils.format.percentage(0), '0%');
assert.strictEqual(fieldUtils.format.percentage(0.5), '50%');
assert.strictEqual(fieldUtils.format.percentage(1), '100%');
assert.strictEqual(fieldUtils.format.percentage(-0.2), '-20%');
assert.strictEqual(fieldUtils.format.percentage(2.5), '250%');
assert.strictEqual(fieldUtils.format.percentage(0.125), '12.5%');
assert.strictEqual(fieldUtils.format.percentage(0.666666), '66.67%');
assert.strictEqual(fieldUtils.format.percentage(false), '0%');
});
QUnit.test('parse float', function(assert) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment