Correctly format video duration
authorChocobozzz <me@florianbigard.com>
Wed, 18 Mar 2020 14:46:48 +0000 (15:46 +0100)
committerChocobozzz <me@florianbigard.com>
Wed, 18 Mar 2020 14:46:48 +0000 (15:46 +0100)
client/src/app/shared/angular/video-duration-formatter.pipe.ts

index c92631a7540171ec21f0e595b1479aef04fe3c50..4b6767415796286cad69ff764aaf91e2cf97d25e 100644 (file)
@@ -1,19 +1,28 @@
 import { Pipe, PipeTransform } from '@angular/core'
-
-// Thanks: https://stackoverflow.com/a/46055604
+import { I18n } from '@ngx-translate/i18n-polyfill'
 
 @Pipe({
   name: 'myVideoDurationFormatter'
 })
 export class VideoDurationPipe implements PipeTransform {
+
+  constructor (private i18n: I18n) {
+
+  }
+
   transform (value: number): string {
-    const minutes = Math.floor(value / 60)
-    const hours = Math.floor(minutes / 60)
+    const hours = Math.floor(value / 3600)
+    const minutes = Math.floor((value % 3600) / 60)
+    const seconds = value % 60
 
     if (hours > 0) {
-      return hours + ' h ' + (minutes - hours * 60) + ' min ' + (value - (minutes - hours * 60) * 60) + ' sec'
+      return this.i18n('{{hours}} h {{minutes}} min {{seconds}} sec', { hours, minutes, seconds })
+    }
+
+    if (minutes > 0) {
+      return this.i18n('{{minutes}} min {{seconds}} sec', { minutes, seconds })
     }
 
-    return minutes + ' min ' + (value - minutes * 60) + ' sec'
+    return this.i18n('{{seconds}} sec', { seconds })
   }
 }