UNPKG

@c8y/ngx-components

Version:

Angular modules for Cumulocity IoT applications

43 lines (42 loc) 4.64 kB
import { Pipe } from '@angular/core'; import { isNaN, isFinite } from 'lodash-es'; import * as i0 from "@angular/core"; /** * Converts the file size to a readable format. * Usage: * * ```html * {{ myData | bytes }} <!-- e.g. 100.1 MB --> * ``` * * Default precision is set to 1 decimal place. * To change the precision, pass an additional argument to pipe. * ```html * {{ myData | bytes: 5 }} <!-- e.g. 100.12345 MB --> * ``` */ export class BytesPipe { static bytes(bytes, precision) { if (isNaN(bytes) || !isFinite(bytes)) { return '-'; } if (bytes === 0) { return 0; } const units = ['bytes', 'kB', 'MB', 'GB', 'TB', 'PB']; const num = Math.floor(Math.log(bytes) / Math.log(1024)); // eslint-disable-next-line no-mixed-operators const result = (bytes / 1024 ** Math.floor(num)).toFixed(precision); return `${result} ${units[num]}`; } transform(value, precision = 1) { return BytesPipe.bytes(value, precision); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BytesPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); } static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: BytesPipe, isStandalone: true, name: "bytes" }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BytesPipe, decorators: [{ type: Pipe, args: [{ name: 'bytes', standalone: true }] }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnl0ZXMucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvY29tbW9uL2J5dGVzLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDcEQsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUM7O0FBRTVDOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsTUFBTSxPQUFPLFNBQVM7SUFDcEIsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFhLEVBQUUsU0FBaUI7UUFDM0MsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNyQyxPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUM7UUFDRCxJQUFJLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNoQixPQUFPLENBQUMsQ0FBQztRQUNYLENBQUM7UUFDRCxNQUFNLEtBQUssR0FBRyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdEQsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUN6RCw4Q0FBOEM7UUFDOUMsTUFBTSxNQUFNLEdBQUcsQ0FBQyxLQUFLLEdBQUcsSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFcEUsT0FBTyxHQUFHLE1BQU0sSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQWEsRUFBRSxTQUFTLEdBQUcsQ0FBQztRQUNwQyxPQUFPLFNBQVMsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzNDLENBQUM7K0dBbEJVLFNBQVM7NkdBQVQsU0FBUzs7NEZBQVQsU0FBUztrQkFEckIsSUFBSTttQkFBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGlzTmFOLCBpc0Zpbml0ZSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5cbi8qKlxuICogQ29udmVydHMgdGhlIGZpbGUgc2l6ZSB0byBhIHJlYWRhYmxlIGZvcm1hdC5cbiAqIFVzYWdlOlxuICpcbiAqIGBgYGh0bWxcbiAqICB7eyBteURhdGEgfCBieXRlcyB9fSA8IS0tIGUuZy4gMTAwLjEgTUIgLS0+XG4gKiBgYGBcbiAqXG4gKiBEZWZhdWx0IHByZWNpc2lvbiBpcyBzZXQgdG8gMSBkZWNpbWFsIHBsYWNlLlxuICogVG8gY2hhbmdlIHRoZSBwcmVjaXNpb24sIHBhc3MgYW4gYWRkaXRpb25hbCBhcmd1bWVudCB0byBwaXBlLlxuXG4gKiBgYGBodG1sXG4gKiB7eyBteURhdGEgfCBieXRlczogNSB9fSA8IS0tIGUuZy4gMTAwLjEyMzQ1IE1CIC0tPlxuICogYGBgXG4gKi9cbkBQaXBlKHsgbmFtZTogJ2J5dGVzJywgc3RhbmRhbG9uZTogdHJ1ZSB9KVxuZXhwb3J0IGNsYXNzIEJ5dGVzUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICBzdGF0aWMgYnl0ZXMoYnl0ZXM6IG51bWJlciwgcHJlY2lzaW9uOiBudW1iZXIpOiBzdHJpbmcgfCBudW1iZXIge1xuICAgIGlmIChpc05hTihieXRlcykgfHwgIWlzRmluaXRlKGJ5dGVzKSkge1xuICAgICAgcmV0dXJuICctJztcbiAgICB9XG4gICAgaWYgKGJ5dGVzID09PSAwKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgY29uc3QgdW5pdHMgPSBbJ2J5dGVzJywgJ2tCJywgJ01CJywgJ0dCJywgJ1RCJywgJ1BCJ107XG4gICAgY29uc3QgbnVtID0gTWF0aC5mbG9vcihNYXRoLmxvZyhieXRlcykgLyBNYXRoLmxvZygxMDI0KSk7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW1peGVkLW9wZXJhdG9yc1xuICAgIGNvbnN0IHJlc3VsdCA9IChieXRlcyAvIDEwMjQgKiogTWF0aC5mbG9vcihudW0pKS50b0ZpeGVkKHByZWNpc2lvbik7XG5cbiAgICByZXR1cm4gYCR7cmVzdWx0fSAke3VuaXRzW251bV19YDtcbiAgfVxuXG4gIHRyYW5zZm9ybSh2YWx1ZTogbnVtYmVyLCBwcmVjaXNpb24gPSAxKTogc3RyaW5nIHwgbnVtYmVyIHtcbiAgICByZXR1cm4gQnl0ZXNQaXBlLmJ5dGVzKHZhbHVlLCBwcmVjaXNpb24pO1xuICB9XG59XG4iXX0=