ng-zorro-antd
Version:
An enterprise-class UI components based on Ant Design and Angular
54 lines • 7.85 kB
JavaScript
/**
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
*/
import { Pipe } from '@angular/core';
import { isNumberFinite, toDecimal } from 'ng-zorro-antd/core/util';
export class NzBytesPipe {
transform(input, decimal = 0, from = 'B', to) {
if (!(isNumberFinite(input) && isNumberFinite(decimal) && decimal % 1 === 0 && decimal >= 0)) {
return input;
}
let bytes = input;
let unit = from;
while (unit !== 'B') {
bytes *= 1024;
unit = NzBytesPipe.formats[unit].prev;
}
if (to) {
const format = NzBytesPipe.formats[to];
const result = toDecimal(NzBytesPipe.calculateResult(format, bytes), decimal);
return NzBytesPipe.formatResult(result, to);
}
for (const key in NzBytesPipe.formats) {
if (NzBytesPipe.formats.hasOwnProperty(key)) {
const format = NzBytesPipe.formats[key];
if (bytes < format.max) {
const result = toDecimal(NzBytesPipe.calculateResult(format, bytes), decimal);
return NzBytesPipe.formatResult(result, key);
}
}
}
}
static formatResult(result, unit) {
return `${result} ${unit}`;
}
static calculateResult(format, bytes) {
const prev = format.prev ? NzBytesPipe.formats[format.prev] : undefined;
return prev ? bytes / prev.max : bytes;
}
}
NzBytesPipe.formats = {
B: { max: 1024 },
kB: { max: Math.pow(1024, 2), prev: 'B' },
KB: { max: Math.pow(1024, 2), prev: 'B' },
MB: { max: Math.pow(1024, 3), prev: 'kB' },
GB: { max: Math.pow(1024, 4), prev: 'MB' },
TB: { max: Number.MAX_SAFE_INTEGER, prev: 'GB' }
};
NzBytesPipe.decorators = [
{ type: Pipe, args: [{
name: 'nzBytes'
},] }
];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnotYnl0ZXMucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2NvbXBvbmVudHMvcGlwZXMvbnotYnl0ZXMucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFFSCxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUdwRCxPQUFPLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBT3BFLE1BQU0sT0FBTyxXQUFXO0lBVXRCLFNBQVMsQ0FBQyxLQUFnQixFQUFFLFVBQWtCLENBQUMsRUFBRSxPQUFpQixHQUFHLEVBQUUsRUFBYTtRQUNsRixJQUFJLENBQUMsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLElBQUksY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLE9BQU8sSUFBSSxDQUFDLENBQUMsRUFBRTtZQUM1RixPQUFPLEtBQUssQ0FBQztTQUNkO1FBRUQsSUFBSSxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQztRQUNoQixPQUFPLElBQUksS0FBSyxHQUFHLEVBQUU7WUFDbkIsS0FBSyxJQUFJLElBQUksQ0FBQztZQUNkLElBQUksR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUssQ0FBQztTQUN4QztRQUVELElBQUksRUFBRSxFQUFFO1lBQ04sTUFBTSxNQUFNLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUV2QyxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFFOUUsT0FBTyxXQUFXLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztTQUM3QztRQUVELEtBQUssTUFBTSxHQUFHLElBQUksV0FBVyxDQUFDLE9BQU8sRUFBRTtZQUNyQyxJQUFJLFdBQVcsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUMzQyxNQUFNLE1BQU0sR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUN4QyxJQUFJLEtBQUssR0FBRyxNQUFNLENBQUMsR0FBRyxFQUFFO29CQUN0QixNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7b0JBRTlFLE9BQU8sV0FBVyxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7aUJBQzlDO2FBQ0Y7U0FDRjtJQUNILENBQUM7SUFFRCxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQWMsRUFBRSxJQUFZO1FBQzlDLE9BQU8sR0FBRyxNQUFNLElBQUksSUFBSSxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELE1BQU0sQ0FBQyxlQUFlLENBQUMsTUFBd0MsRUFBRSxLQUFhO1FBQzVFLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDeEUsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDekMsQ0FBQzs7QUFoRE0sbUJBQU8sR0FBd0Q7SUFDcEUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRTtJQUNoQixFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRTtJQUN6QyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRTtJQUN6QyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRTtJQUMxQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRTtJQUMxQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsTUFBTSxDQUFDLGdCQUFnQixFQUFFLElBQUksRUFBRSxJQUFJLEVBQUU7Q0FDakQsQ0FBQzs7WUFYSCxJQUFJLFNBQUM7Z0JBQ0osSUFBSSxFQUFFLFNBQVM7YUFDaEIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE56U2FmZUFueSB9IGZyb20gJ25nLXpvcnJvLWFudGQvY29yZS90eXBlcyc7XG5pbXBvcnQgeyBpc051bWJlckZpbml0ZSwgdG9EZWNpbWFsIH0gZnJvbSAnbmctem9ycm8tYW50ZC9jb3JlL3V0aWwnO1xuXG5leHBvcnQgdHlwZSBCeXRlVW5pdCA9ICdCJyB8ICdrQicgfCAnS0InIHwgJ01CJyB8ICdHQicgfCAnVEInO1xuXG5AUGlwZSh7XG4gIG5hbWU6ICduekJ5dGVzJ1xufSlcbmV4cG9ydCBjbGFzcyBOekJ5dGVzUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICBzdGF0aWMgZm9ybWF0czogeyBba2V5OiBzdHJpbmddOiB7IG1heDogbnVtYmVyOyBwcmV2PzogQnl0ZVVuaXQgfSB9ID0ge1xuICAgIEI6IHsgbWF4OiAxMDI0IH0sXG4gICAga0I6IHsgbWF4OiBNYXRoLnBvdygxMDI0LCAyKSwgcHJldjogJ0InIH0sXG4gICAgS0I6IHsgbWF4OiBNYXRoLnBvdygxMDI0LCAyKSwgcHJldjogJ0InIH0sXG4gICAgTUI6IHsgbWF4OiBNYXRoLnBvdygxMDI0LCAzKSwgcHJldjogJ2tCJyB9LFxuICAgIEdCOiB7IG1heDogTWF0aC5wb3coMTAyNCwgNCksIHByZXY6ICdNQicgfSxcbiAgICBUQjogeyBtYXg6IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSLCBwcmV2OiAnR0InIH1cbiAgfTtcblxuICB0cmFuc2Zvcm0oaW5wdXQ6IE56U2FmZUFueSwgZGVjaW1hbDogbnVtYmVyID0gMCwgZnJvbTogQnl0ZVVuaXQgPSAnQicsIHRvPzogQnl0ZVVuaXQpOiBOelNhZmVBbnkge1xuICAgIGlmICghKGlzTnVtYmVyRmluaXRlKGlucHV0KSAmJiBpc051bWJlckZpbml0ZShkZWNpbWFsKSAmJiBkZWNpbWFsICUgMSA9PT0gMCAmJiBkZWNpbWFsID49IDApKSB7XG4gICAgICByZXR1cm4gaW5wdXQ7XG4gICAgfVxuXG4gICAgbGV0IGJ5dGVzID0gaW5wdXQ7XG4gICAgbGV0IHVuaXQgPSBmcm9tO1xuICAgIHdoaWxlICh1bml0ICE9PSAnQicpIHtcbiAgICAgIGJ5dGVzICo9IDEwMjQ7XG4gICAgICB1bml0ID0gTnpCeXRlc1BpcGUuZm9ybWF0c1t1bml0XS5wcmV2ITtcbiAgICB9XG5cbiAgICBpZiAodG8pIHtcbiAgICAgIGNvbnN0IGZvcm1hdCA9IE56Qnl0ZXNQaXBlLmZvcm1hdHNbdG9dO1xuXG4gICAgICBjb25zdCByZXN1bHQgPSB0b0RlY2ltYWwoTnpCeXRlc1BpcGUuY2FsY3VsYXRlUmVzdWx0KGZvcm1hdCwgYnl0ZXMpLCBkZWNpbWFsKTtcblxuICAgICAgcmV0dXJuIE56Qnl0ZXNQaXBlLmZvcm1hdFJlc3VsdChyZXN1bHQsIHRvKTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGtleSBpbiBOekJ5dGVzUGlwZS5mb3JtYXRzKSB7XG4gICAgICBpZiAoTnpCeXRlc1BpcGUuZm9ybWF0cy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgIGNvbnN0IGZvcm1hdCA9IE56Qnl0ZXNQaXBlLmZvcm1hdHNba2V5XTtcbiAgICAgICAgaWYgKGJ5dGVzIDwgZm9ybWF0Lm1heCkge1xuICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHRvRGVjaW1hbChOekJ5dGVzUGlwZS5jYWxjdWxhdGVSZXN1bHQoZm9ybWF0LCBieXRlcyksIGRlY2ltYWwpO1xuXG4gICAgICAgICAgcmV0dXJuIE56Qnl0ZXNQaXBlLmZvcm1hdFJlc3VsdChyZXN1bHQsIGtleSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzdGF0aWMgZm9ybWF0UmVzdWx0KHJlc3VsdDogbnVtYmVyLCB1bml0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHtyZXN1bHR9ICR7dW5pdH1gO1xuICB9XG5cbiAgc3RhdGljIGNhbGN1bGF0ZVJlc3VsdChmb3JtYXQ6IHsgbWF4OiBudW1iZXI7IHByZXY/OiBCeXRlVW5pdCB9LCBieXRlczogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBjb25zdCBwcmV2ID0gZm9ybWF0LnByZXYgPyBOekJ5dGVzUGlwZS5mb3JtYXRzW2Zvcm1hdC5wcmV2XSA6IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gcHJldiA/IGJ5dGVzIC8gcHJldi5tYXggOiBieXRlcztcbiAgfVxufVxuIl19