All files / src/app/pipes duration.pipe.ts

75.55% Statements 34/45
50% Branches 16/32
100% Functions 4/4
74.41% Lines 32/43

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90            151x     69x   69x 69x 69x 69x   69x             69x               69x 31x 31x         69x 5x 5x         69x 110x               110x     1x   1x 1x 1x 1x 1x   1x       1x       1x 1x     1x 1x     1x       1x 110x      
import { Pipe, PipeTransform } from '@angular/core';
 
@Pipe({
  name: 'duration',
  standalone: true
})
export class DurationPipe implements PipeTransform {
 
  transform(seconds: number): string {
    let duration = "";
 
    const days = Math.floor(seconds / (3600 * 24));
    const hours = Math.floor((seconds % (3600 * 24)) / 3600);
    const minutes = Math.floor((seconds % 3600) / 60);
    const remainingSeconds = Math.round(seconds % 60);
 
    Iif (days > 0){
      duration += `${days} day`;
      if (days > 1){
        duration += 's';
      }
    }
 
    Iif (hours > 0){
      duration += ` ${hours} hour`;
      if (hours > 1){
        duration += 's';
      }
 
    }
 
    if (minutes > 0){
      duration += ` ${minutes} minute`;
      Iif (minutes > 1){
        duration += 's';
      }
    }
 
    if (remainingSeconds > 0){
      duration += ` ${remainingSeconds} second`;
      Iif (remainingSeconds > 1){
        duration += 's';
      }
    }
 
    return duration;
  }
 
}
 
@Pipe({
  name: 'duration-short',
  standalone: true
})
export class ShortDurationPipe implements PipeTransform {
 
  transform(seconds: number): string {
    let duration = "";
 
    seconds = Math.round(seconds);
    const days = Math.floor(seconds / (3600 * 24));
    const hours = Math.floor((seconds % (3600 * 24)) / 3600);
    const minutes = Math.floor((seconds % 3600) / 60);
    const remainingSeconds = seconds % 60;
 
    Iif (days > 0){
      duration += `${days}d`;
    }
 
    Iif (hours > 0){
      duration += `${hours}hr`;
    }
 
    Eif (minutes > 0){
      duration += `${minutes}mn`;
    }
 
    Eif (remainingSeconds > 0){
      duration += `${remainingSeconds}s`;
    }
 
    Iif (duration === "" && remainingSeconds === 0) {
      duration += "<1s";
    }
 
    return duration;
  }
 
}