ngx-mat-cdk
Version:
Extra Components for Angular Material including Filters,Drag Drop File, MatSelect Mobile Version
33 lines • 4.22 kB
JavaScript
import { Pipe } from '@angular/core';
export class BytePipe {
constructor() {
this.unit = 'Bytes';
}
transform(value, decimals) {
if (value) {
value = value.toString();
if (parseInt(value, 10) >= 0) {
value = this.formatBytes(+value, +decimals);
}
return value;
}
return null;
}
// https://stackoverflow.com/questions/15900485/correct-way-to-convert-size-in-bytes-to-kb-mb-gb-in-javascript
formatBytes(bytes, decimals = 2) {
if (bytes === 0) {
return '0 Bytes';
}
const k = 1024;
const dm = decimals < 0 ? 0 : decimals;
const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
const i = Math.floor(Math.log(bytes) / Math.log(k));
return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];
}
}
BytePipe.decorators = [
{ type: Pipe, args: [{
name: 'byte'
},] }
];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnl0ZS5waXBlLmpzIiwic291cmNlUm9vdCI6IkM6L1VzZXJzL0FsaXJlemEgTW9oYW1tYWRpL3NvdXJjZS9yZXBvcy9NeUxpYnJhcnkvQW5ndWxhci5MaWJyYXJ5L2xpYnMvcHJvamVjdHMvbmd4LW1hdC1jZGsvc3JjLyIsInNvdXJjZXMiOlsibGliL25neC1tYXQtZHJhZy1kcm9wLWZpbGUvcGlwZXMvYnl0ZS5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxJQUFJLEVBQWdCLE1BQU0sZUFBZSxDQUFDO0FBS2xELE1BQU0sT0FBTyxRQUFRO0lBSHJCO1FBS1UsU0FBSSxHQUFHLE9BQU8sQ0FBQztJQTRCekIsQ0FBQztJQTFCQyxTQUFTLENBQUMsS0FBc0IsRUFBRSxRQUEwQjtRQUMxRCxJQUFJLEtBQUssRUFBRTtZQUNULEtBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDekIsSUFBSSxRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDNUIsS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUM3QztZQUNELE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCw4R0FBOEc7SUFDOUcsV0FBVyxDQUFDLEtBQWEsRUFBRSxRQUFRLEdBQUcsQ0FBQztRQUNyQyxJQUFJLEtBQUssS0FBSyxDQUFDLEVBQUU7WUFDZixPQUFPLFNBQVMsQ0FBQztTQUNsQjtRQUVELE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQztRQUNmLE1BQU0sRUFBRSxHQUFHLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO1FBQ3ZDLE1BQU0sS0FBSyxHQUFHLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUV4RSxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXBELE9BQU8sVUFBVSxDQUFDLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzRSxDQUFDOzs7WUEvQkYsSUFBSSxTQUFDO2dCQUNKLElBQUksRUFBRSxNQUFNO2FBQ2IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1BpcGUsIFBpcGVUcmFuc2Zvcm19IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQFBpcGUoe1xyXG4gIG5hbWU6ICdieXRlJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQnl0ZVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcclxuXHJcbiAgcHJpdmF0ZSB1bml0ID0gJ0J5dGVzJztcclxuXHJcbiAgdHJhbnNmb3JtKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIsIGRlY2ltYWxzPzogbnVtYmVyIHwgc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICB2YWx1ZSA9IHZhbHVlLnRvU3RyaW5nKCk7XHJcbiAgICAgIGlmIChwYXJzZUludCh2YWx1ZSwgMTApID49IDApIHtcclxuICAgICAgICB2YWx1ZSA9IHRoaXMuZm9ybWF0Qnl0ZXMoK3ZhbHVlLCArZGVjaW1hbHMpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMTU5MDA0ODUvY29ycmVjdC13YXktdG8tY29udmVydC1zaXplLWluLWJ5dGVzLXRvLWtiLW1iLWdiLWluLWphdmFzY3JpcHRcclxuICBmb3JtYXRCeXRlcyhieXRlczogbnVtYmVyLCBkZWNpbWFscyA9IDIpOiBzdHJpbmcge1xyXG4gICAgaWYgKGJ5dGVzID09PSAwKSB7XHJcbiAgICAgIHJldHVybiAnMCBCeXRlcyc7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgayA9IDEwMjQ7XHJcbiAgICBjb25zdCBkbSA9IGRlY2ltYWxzIDwgMCA/IDAgOiBkZWNpbWFscztcclxuICAgIGNvbnN0IHNpemVzID0gWydCeXRlcycsICdLQicsICdNQicsICdHQicsICdUQicsICdQQicsICdFQicsICdaQicsICdZQiddO1xyXG5cclxuICAgIGNvbnN0IGkgPSBNYXRoLmZsb29yKE1hdGgubG9nKGJ5dGVzKSAvIE1hdGgubG9nKGspKTtcclxuXHJcbiAgICByZXR1cm4gcGFyc2VGbG9hdCgoYnl0ZXMgLyBNYXRoLnBvdyhrLCBpKSkudG9GaXhlZChkbSkpICsgJyAnICsgc2l6ZXNbaV07XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=