diff --git a/muk_web_utils/__manifest__.py b/muk_web_utils/__manifest__.py index 7fd7e47..1b7eab6 100644 --- a/muk_web_utils/__manifest__.py +++ b/muk_web_utils/__manifest__.py @@ -20,7 +20,7 @@ { "name": "MuK Web Utils", "summary": """Utility Features""", - "version": "12.0.2.8.1", + "version": "12.0.2.8.2", "category": "Extra Tools", "license": "AGPL-3", "author": "MuK IT", diff --git a/muk_web_utils/static/src/js/fields/binary.js b/muk_web_utils/static/src/js/fields/binary.js index 3cd9e32..18d531a 100644 --- a/muk_web_utils/static/src/js/fields/binary.js +++ b/muk_web_utils/static/src/js/fields/binary.js @@ -22,7 +22,9 @@ odoo.define('muk_web_utils.binary', function(require) { var core = require('web.core'); var session = require('web.session'); +var utils = require('web.field_utils'); var fields = require('web.basic_fields'); +var registry = require('web.field_registry'); var _t = core._t; var QWeb = core.qweb; @@ -49,4 +51,31 @@ fields.FieldBinaryImage.include({ }, }); +var FieldBinarySize = fields.FieldFloat.extend({ + init: function(parent, name, record) { + this._super.apply(this, arguments); + this.units = this.nodeOptions.si ? + ['KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'] : + ['KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB', 'ZiB', 'YiB']; + this.thresh = this.nodeOptions.si ? 1000 : 1024; + }, + _formatValue: function (value) { + if(Math.abs(value) < this.thresh) { + return this._super.call(this, value) + ' B'; + } + var unit = -1; + do { + value /= this.thresh; + ++unit; + } while(Math.abs(value) >= this.thresh && unit < this.units.length - 1); + return this._super.call(this, value) + ' ' + this.units[unit]; + }, +}); + +registry.add('binary_size', FieldBinarySize); + +return { + FieldBinarySize: FieldBinarySize, +}; + });