From 4db490eea4dc3f5a309fd3cec72f27b9876bef47 Mon Sep 17 00:00:00 2001 From: itskovacs Date: Wed, 15 Oct 2025 23:43:40 +0200 Subject: [PATCH] :lipstick: Human readable filesize format pipe --- src/src/app/shared/filesize.pipe.ts | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 src/src/app/shared/filesize.pipe.ts diff --git a/src/src/app/shared/filesize.pipe.ts b/src/src/app/shared/filesize.pipe.ts new file mode 100644 index 0000000..3af6cd5 --- /dev/null +++ b/src/src/app/shared/filesize.pipe.ts @@ -0,0 +1,12 @@ +import { Pipe, PipeTransform } from '@angular/core'; + +@Pipe({ name: 'fileSize', standalone: true }) +export class FileSizePipe implements PipeTransform { + transform(bytes: number, digits: number = 2): string { + if (isNaN(bytes) || bytes === 0) return '0 B'; + + const sizes = ['B', 'KB', 'MB', 'GB', 'TB']; + const i = Math.floor(Math.log(bytes) / Math.log(1024)); + return `${parseFloat((bytes / Math.pow(1024, i)).toFixed(digits))} ${sizes[i]}`; + } +}