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

74.41% Statements 32/43
50% Branches 16/32
100% Functions 4/4
73.17% Lines 30/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            141x     66x   66x 66x 66x 66x   66x             66x               66x 28x 28x         66x 1x 1x         66x                 102x     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`;
      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;
  }
 
}