]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/commitdiff
Add duration to video attributes in watch view
authorRigel Kent <sendmemail@rigelk.eu>
Tue, 7 Jan 2020 13:38:01 +0000 (14:38 +0100)
committerChocobozzz <chocobozzz@cpy.re>
Tue, 7 Jan 2020 13:47:50 +0000 (14:47 +0100)
client/src/app/shared/angular/video-duration-formatter.pipe.ts [new file with mode: 0644]
client/src/app/shared/shared.module.ts
client/src/app/videos/+video-watch/video-watch.component.html

diff --git a/client/src/app/shared/angular/video-duration-formatter.pipe.ts b/client/src/app/shared/angular/video-duration-formatter.pipe.ts
new file mode 100644 (file)
index 0000000..c92631a
--- /dev/null
@@ -0,0 +1,19 @@
+import { Pipe, PipeTransform } from '@angular/core'
+
+// Thanks: https://stackoverflow.com/a/46055604
+
+@Pipe({
+  name: 'myVideoDurationFormatter'
+})
+export class VideoDurationPipe implements PipeTransform {
+  transform (value: number): string {
+    const minutes = Math.floor(value / 60)
+    const hours = Math.floor(minutes / 60)
+
+    if (hours > 0) {
+      return hours + ' h ' + (minutes - hours * 60) + ' min ' + (value - (minutes - hours * 60) * 60) + ' sec'
+    }
+
+    return minutes + ' min ' + (value - minutes * 60) + ' sec'
+  }
+}
index a32520820aa64493212d3efebd5cf74692c2a892..b2eb13f7391c6b530aec4b465e4dfb22de979640 100644 (file)
@@ -85,6 +85,7 @@ import { TimestampInputComponent } from '@app/shared/forms/timestamp-input.compo
 import { VideoPlaylistElementMiniatureComponent } from '@app/shared/video-playlist/video-playlist-element-miniature.component'
 import { VideosSelectionComponent } from '@app/shared/video/videos-selection.component'
 import { NumberFormatterPipe } from '@app/shared/angular/number-formatter.pipe'
+import { VideoDurationPipe } from '@app/shared/angular/video-duration-formatter.pipe'
 import { ObjectLengthPipe } from '@app/shared/angular/object-length.pipe'
 import { FromNowPipe } from '@app/shared/angular/from-now.pipe'
 import { PeerTubeTemplateDirective } from '@app/shared/angular/peertube-template.directive'
@@ -147,6 +148,7 @@ import { InputReadonlyCopyComponent } from '@app/shared/forms/input-readonly-cop
     ObjectLengthPipe,
     FromNowPipe,
     PeerTubeTemplateDirective,
+    VideoDurationPipe,
 
     ActionDropdownComponent,
     MarkdownTextareaComponent,
@@ -248,7 +250,8 @@ import { InputReadonlyCopyComponent } from '@app/shared/forms/input-readonly-cop
     NumberFormatterPipe,
     ObjectLengthPipe,
     FromNowPipe,
-    PeerTubeTemplateDirective
+    PeerTubeTemplateDirective,
+    VideoDurationPipe
   ],
 
   providers: [
index 74ac64a63da2ae819ddbfb75741cedeb9e53a79d..246eac2dd868f1943dd8862d29734c35edc62641 100644 (file)
             class="video-attribute-value" [routerLink]="[ '/search' ]" [queryParams]="{ tagsOneOf: [ tag ] }"
           >{{ tag }}</a>
         </div>
+
+        <div class="video-attribute">
+          <span i18n class="video-attribute-label">Duration</span>
+          <span class="video-attribute-value">{{ video.duration | myVideoDurationFormatter }}</span>
+        </div>  
       </div>
 
       <my-video-comments