Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var Vue = require('vue');
- var UNITS = ['B', 'KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB', 'ZiB', 'YiB'];
- var STEP = 1024;
- function format(value, power) {
- return (value / Math.pow(STEP, power)).toFixed(2) + UNITS[power];
- }
- Vue.filter('smart-file-size', {
- read: function (value) {
- value = parseFloat(value, 10);
- for (var i = 0; i < UNITS.length; i++) {
- if (value < Math.pow(STEP, i)) {
- if (UNITS[i - 1]) {
- return format(value, i - 1);
- }
- return value + UNITS[i];
- }
- }
- return format(value, i - 1);
- },
- write: function (value, oldValue) {
- var exp = new RegExp('^(\\d+(?:\\.\\d+)?)(' + UNITS.join('|') +')$', 'i');
- var ret = value.match(exp);
- if (ret) {
- var i = UNITS.indexOf(ret[2].toUpperCase());
- if (i >= 0) {
- return parseFloat(ret[1], 10) * Math.pow(STEP, i);
- }
- }
- return oldValue;
- }
- });
Add Comment
Please, Sign In to add comment