diff options
| author | Alexandre Kühn <alex.e.kuhn@gmail.com> | 2018-01-08 22:08:21 +0100 |
|---|---|---|
| committer | Alexandre Kühn <alexkuhn@users.noreply.github.com> | 2018-01-12 16:12:49 +0100 |
| commit | 7813a8e714f268983b0be88827ae1c8ad887e6c7 (patch) | |
| tree | 928daa6f9d6f84420d8dee7afdabf99c41d232b7 /addons/web/static/src/js/core/utils.js | |
| parent | c3e3770f06db6b427118a3a2c5629d3aa9efaaa8 (diff) | |
[FIX] web: binaryfile field in list views
Revert partially 255e8ca3d92e3a77d7c2a145677623518bc2f978
Removed widget 'download_link', as it was a sub-version of widget 'binary':
it did the exact same thing (representation of binary fields by means of a download link)
in a much better-looking way (download icon + filename as text of the download link,
instead of just a download link with text "Download").
Also, the values of binary fields might be already a human-readable binsize (e.g. 2.52 MBs),
instead of its plain textual string representation in base64:
The contextual parameter 'bin_size', when set to true, does not download the data of binary fields.
As a consequence, the server provides the sizes of the binary, instead of their value.
Diffstat (limited to 'addons/web/static/src/js/core/utils.js')
| -rw-r--r-- | addons/web/static/src/js/core/utils.js | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/addons/web/static/src/js/core/utils.js b/addons/web/static/src/js/core/utils.js index acf8ca4d68d..b9f5a7c9689 100644 --- a/addons/web/static/src/js/core/utils.js +++ b/addons/web/static/src/js/core/utils.js @@ -24,6 +24,25 @@ var utils = { } }, /** + * Check if the value is a bin_size or not. + * If not, compute an approximate size out of the base64 encoded string. + * + * @param {string} value original format + * @return {string} bin_size (human-readable) + */ + binaryToBinsize: function (value) { + if (!value) { + return this.human_size(0); + } + if (!this.is_bin_size(value)) { + // Computing approximate size out of base64 encoded string + // http://en.wikipedia.org/wiki/Base64#MIME + return this.human_size(value.length / 1.37); + } + // already bin_size + return value; + }, + /** * Confines a value inside an interval * * @param {number} [val] the value to confine |
