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

76.74% Statements 33/43
53.12% Branches 17/32
100% Functions 4/4
75.6% Lines 31/41

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     71x   71x 71x 71x 71x   71x             71x               71x 33x 33x         71x 5x 5x 1x       71x                 110x     1x   1x 1x 1x 1x 1x   1x       1x       1x 1x     1x 1x     1x       1x        
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`;
      if (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;
  }
 
}