[IMP] web: add a percentage formatter
This rev. adds a new formatter for numerical values to fieldsUtils.
This commit is contained in:
committed by
Géry Debongnie
parent
dcca2e8b9d
commit
8e017ee296
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user