39 lines
1.0 KiB
TypeScript
39 lines
1.0 KiB
TypeScript
import { Pipe, PipeTransform } from '@angular/core';
|
|
|
|
@Pipe({
|
|
name: 'convertMs'
|
|
})
|
|
export class ConvertMsPipe implements PipeTransform {
|
|
|
|
/**
|
|
* Convert milliseconds to "readable" duration e.g. 1d21h35m24s
|
|
* @param timeMs time in milliseconds
|
|
*/
|
|
transform(timeMs: number): string {
|
|
let x = timeMs / 1000;
|
|
|
|
const seconds = Math.floor(x % 60);
|
|
x /= 60;
|
|
|
|
let minutes = 0;
|
|
if (x > 1) { minutes = Math.floor(x % 60); }
|
|
x /= 60;
|
|
|
|
let hours = 0;
|
|
if (x > 1) { hours = Math.floor(x % 24); }
|
|
// TODO Enable/disable day
|
|
x /= 24;
|
|
const days = Math.floor(x);
|
|
|
|
// Final string
|
|
let ret = '';
|
|
if (days > 0) { ret += parseInt('0' + days) + 'd'; }
|
|
if (hours > 0) { ret += ('0' + hours).slice(-2) + 'h'; }
|
|
if (minutes > 0) { ret += ('0' + minutes).slice(-2) + 'm'; }
|
|
if (seconds > 0) { ret += ('0' + seconds).slice(-2) + 's'; }
|
|
|
|
return ret;
|
|
// return ('0' + days).slice(-2) + ':' + ('0' + hours).slice(-2) + ':' + ('0' + minutes).slice(-2) + ':' + ('0' + seconds).slice(-2);
|
|
}
|
|
}
|