diff --git a/addons/web/static/src/js/formats.js b/addons/web/static/src/js/formats.js index eb7d6c335ac..d35a28f36b7 100644 --- a/addons/web/static/src/js/formats.js +++ b/addons/web/static/src/js/formats.js @@ -101,7 +101,12 @@ openerp.web.format_value = function (value, descriptor, value_if_empty) { formatted[0] = openerp.web.insert_thousand_seps(formatted[0]); return formatted.join(l10n.decimal_point); case 'float_time': - return _.str.sprintf("%02d:%02d", + var pattern = '%02d:%02d'; + if (value < 0) { + value = Math.abs(value); + pattern = '-' + pattern; + } + return _.str.sprintf(pattern, Math.floor(value), Math.round((value % 1) * 60)); case 'many2one': diff --git a/addons/web/static/test/formats.js b/addons/web/static/test/formats.js index 640eaaadca7..2e292af41c8 100644 --- a/addons/web/static/test/formats.js +++ b/addons/web/static/test/formats.js @@ -71,6 +71,15 @@ $(document).ready(function () { strictEqual( openerp.web.format_value(0.0085, {type:'float', widget:'float_time'}), '00:01'); + strictEqual( + openerp.web.format_value(-1.0, {type:'float', widget:'float_time'}), + '-01:00'); + strictEqual( + openerp.web.format_value(-0.9853, {type:'float', widget:'float_time'}), + '-00:59'); + strictEqual( + openerp.web.format_value(-0.0085, {type:'float', widget:'float_time'}), + '-00:01'); }); test("format_float", function () { var fl = 12.1234;