Fix SI and Decimal unit usage

SI: For 1000, it is kB, MB, GB
IEC: For 1024, it is KiB, MiB, GiB

JEDEC: For 1024, it is KB, MB (conflicts with SI, of course)

Ultimately, what we decided is for RAM use IEC and for Disk use SI.
This is what docker does and also suggested here -
https://stackoverflow.com/questions/8632269/displaying-file-size-1000b-1kb-or-1024b-1kb
This commit is contained in:
Girish Ramakrishnan
2022-10-13 21:48:03 +02:00
parent da1653cc77
commit db1056112c
11 changed files with 36 additions and 22 deletions
+20 -6
View File
@@ -234,20 +234,34 @@ function imageErrorHandler(elem) {
// Shared Angular Filters
// ----------------------------------------------
// binary units (non SI) 1024 based
function prettyByteSize(size, fallback) {
// https://en.wikipedia.org/wiki/Binary_prefix
// binary units (IEC) 1024 based
function prettyBinarySize(size, fallback) {
if (!size) return fallback || 0;
// we can also use KB here (JEDEC)
var i = Math.floor(Math.log(size) / Math.log(1024));
return (size / Math.pow(1024, i)).toFixed(2) * 1 + ' ' + ['B', 'kB', 'MB', 'GB', 'TB'][i];
return (size / Math.pow(1024, i)).toFixed(2) * 1 + ' ' + ['B', 'KiB', 'MiB', 'GiB', 'TiB'][i];
}
angular.module('Application').filter('prettyByteSize', function () {
return function (size, fallback) { return prettyByteSize(size, fallback) || '0 kb'; };
// decimal units (SI) 1000 based
function prettyDecimalSize(size, fallback) {
if (!size) return fallback || 0;
var i = Math.floor(Math.log(size) / Math.log(1000));
return (size / Math.pow(1000, i)).toFixed(2) * 1 + ' ' + ['B', 'kB', 'MB', 'GB', 'TB'][i];
}
angular.module('Application').filter('prettyDecimalSize', function () {
return function (size, fallback) { return prettyDecimalSize(size, fallback) || '0 kb'; };
});
angular.module('Application').filter('prettyBinarySize', function () {
return function (size, fallback) { return prettyDecimalSize(size, fallback) || '0 KiB'; };
});
angular.module('Application').filter('prettyDiskSize', function () {
return function (size, fallback) { return prettyByteSize(size, fallback) || 'Not available yet'; };
return function (size, fallback) { return prettyDecimalSize(size, fallback) || 'Not available yet'; };
});
angular.module('Application').filter('trKeyFromPeriod', function () {