From 511404d23f5edd6ccf79db1fc1b0ba622134db24 Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 29 Nov 2019 19:31:34 +0200 Subject: initial commit: working version --- ui/src/app/downloads.pipe.ts | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 ui/src/app/downloads.pipe.ts (limited to 'ui/src/app/downloads.pipe.ts') diff --git a/ui/src/app/downloads.pipe.ts b/ui/src/app/downloads.pipe.ts new file mode 100644 index 0000000..d4a1654 --- /dev/null +++ b/ui/src/app/downloads.pipe.ts @@ -0,0 +1,37 @@ +import { Pipe, PipeTransform } from '@angular/core'; + +@Pipe({ + name: 'eta' +}) +export class EtaPipe implements PipeTransform { + transform(value: number, ...args: any[]): any { + if (value === null) { + return null; + } + if (value < 60) { + return `${value}s`; + } + if (value < 3600) { + return `${Math.floor(value/60)}m ${value%60}s`; + } + const hours = Math.floor(value/3600) + const minutes = value % 3600 + return `${hours}h ${Math.floor(minutes/60)}m ${minutes%60}s`; + } +} + +@Pipe({ + name: 'speed' +}) +export class SpeedPipe implements PipeTransform { + transform(value: number, ...args: any[]): any { + if (value === null) { + return null; + } + const k = 1024; + const dm = 2; + const sizes = ['B/s', 'KB/s', 'MB/s', 'GB/s', 'TB/s', 'PB/s', 'EB/s', 'ZB/s', 'YB/s']; + const i = Math.floor(Math.log(value) / Math.log(k)); + return parseFloat((value / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i]; + } +} -- cgit