This repository has been archived on 2022-01-02. You can view files and clone it, but cannot push or open issues/pull-requests.
AriaNg/src/scripts/filters/volume.js

56 lines
1.5 KiB
JavaScript

(function () {
'use strict';
angular.module('ariaNg').filter('readableVolume', ['$filter', function ($filter) {
var units = [ 'B', 'KB', 'MB', 'GB' ];
var defaultFractionSize = 2;
var getAutoFractionSize = function (value) {
if (value < 1) {
return 2;
} else if (value < 10) {
return 1;
} else {
return 0;
}
};
return function (value, fractionSize) {
var unit = units[0];
var actualFractionSize = defaultFractionSize;
var autoFractionSize = false;
if (angular.isNumber(fractionSize)) {
actualFractionSize = fractionSize;
} else if (fractionSize === 'auto') {
autoFractionSize = true;
}
if (!value) {
value = 0;
}
if (!angular.isNumber(value)) {
value = parseInt(value);
}
for (var i = 1; i < units.length; i++) {
if (value >= 1024) {
value = value / 1024;
unit = units[i];
} else {
break;
}
}
if (autoFractionSize) {
actualFractionSize = getAutoFractionSize(value);
}
value = $filter('number')(value, actualFractionSize);
return value + ' ' + unit;
};
}]);
}());