import { Pipe, PipeTransform } from '@angular/core'; @Pipe({ name: 'duration' }) export class DurationPipe implements PipeTransform { transform(value: string | number): string { let hours = 0; let minutes = 0; let seconds = 0.0; // Handle 00:00:00.000 case (Nectar) if (typeof(value) === 'string') { const durations = value.split(':'); hours = parseInt(durations[0], 10); minutes = parseInt(durations[1], 10); seconds = parseFloat(durations[2]); } // Handle 000.000 case (OgData) else { const totalSeconds = value; minutes = Math.floor(totalSeconds / 60); seconds = totalSeconds - (minutes * 60); hours = Math.floor(minutes / 60); minutes = minutes - (hours * 60); } const totalMinutes = hours * 60 + minutes; return `${this.plural(hours, 'hr')} ${minutes}min ${seconds}s` // return `${totalMinutes < 10 ? `0${totalMinutes}` : totalMinutes}:${seconds < 10 ? `0${seconds.toFixed(3)}` : seconds.toFixed(3)}`; } plural(value: number, unit: string) { if (value === 0) { return ''; } if (value === 1) { return `${value} ${unit}`; } if (value > 1) { return `${value} ${unit}s`; } } }