aboutsummaryrefslogtreecommitdiffhomepage
path: root/client/src/app/+admin/overview/videos
diff options
context:
space:
mode:
authorChocobozzz <me@florianbigard.com>2021-10-29 10:54:27 +0200
committerChocobozzz <chocobozzz@cpy.re>2021-10-29 11:48:21 +0200
commit3c10840fa90fc88fc98e8169faf4745ff6c80893 (patch)
tree9a60c4de766700fbc33804b06ec46279b20c855e /client/src/app/+admin/overview/videos
parent2760b454a761f6af3138b2fb5f34340772ab0d1e (diff)
downloadPeerTube-3c10840fa90fc88fc98e8169faf4745ff6c80893.tar.gz
PeerTube-3c10840fa90fc88fc98e8169faf4745ff6c80893.tar.zst
PeerTube-3c10840fa90fc88fc98e8169faf4745ff6c80893.zip
Add video file size info in admin videos list
Diffstat (limited to 'client/src/app/+admin/overview/videos')
-rw-r--r--client/src/app/+admin/overview/videos/video-list.component.html38
-rw-r--r--client/src/app/+admin/overview/videos/video-list.component.scss5
-rw-r--r--client/src/app/+admin/overview/videos/video-list.component.ts20
3 files changed, 58 insertions, 5 deletions
diff --git a/client/src/app/+admin/overview/videos/video-list.component.html b/client/src/app/+admin/overview/videos/video-list.component.html
index 6250c00fb..eedf6f3dc 100644
--- a/client/src/app/+admin/overview/videos/video-list.component.html
+++ b/client/src/app/+admin/overview/videos/video-list.component.html
@@ -37,6 +37,7 @@
37 <th style="width: 60px;"></th> 37 <th style="width: 60px;"></th>
38 <th i18n>Video</th> 38 <th i18n>Video</th>
39 <th i18n>Info</th> 39 <th i18n>Info</th>
40 <th i18n>Files</th>
40 <th style="width: 150px;" i18n pSortableColumn="publishedAt">Published <p-sortIcon field="publishedAt"></p-sortIcon></th> 41 <th style="width: 150px;" i18n pSortableColumn="publishedAt">Published <p-sortIcon field="publishedAt"></p-sortIcon></th>
41 </tr> 42 </tr>
42 </ng-template> 43 </ng-template>
@@ -63,8 +64,8 @@
63 <my-video-cell [video]="video"></my-video-cell> 64 <my-video-cell [video]="video"></my-video-cell>
64 </td> 65 </td>
65 66
66 <td class="badges"> 67 <td>
67 <span [ngClass]="getPrivacyBadgeClass(video.privacy.id)" class="badge" i18n>{{ video.privacy.label }}</span> 68 <span [ngClass]="getPrivacyBadgeClass(video.privacy.id)" class="badge">{{ video.privacy.label }}</span>
68 69
69 <span *ngIf="video.nsfw" class="badge badge-red" i18n>NSFW</span> 70 <span *ngIf="video.nsfw" class="badge badge-red" i18n>NSFW</span>
70 71
@@ -77,6 +78,13 @@
77 </td> 78 </td>
78 79
79 <td> 80 <td>
81 <span *ngIf="isHLS(video)" class="badge badge-blue">HLS</span>
82 <span *ngIf="isWebTorrent(video)" class="badge badge-blue">WebTorrent</span>
83
84 <span *ngIf="!video.remote">{{ getFilesSize(video) | bytes: 1 }}</span>
85 </td>
86
87 <td>
80 {{ video.publishedAt | date: 'short' }} 88 {{ video.publishedAt | date: 'short' }}
81 </td> 89 </td>
82 90
@@ -85,8 +93,30 @@
85 93
86 <ng-template pTemplate="rowexpansion" let-video> 94 <ng-template pTemplate="rowexpansion" let-video>
87 <tr> 95 <tr>
88 <td colspan="50"> 96 <td class="video-info expand-cell" colspan="7">
89 <my-embed [video]="video"></my-embed> 97 <div>
98 <div *ngIf="isWebTorrent(video)">
99 WebTorrent:
100
101 <ul>
102 <li *ngFor="let file of video.files">
103 {{ file.resolution.label }}: {{ file.size | bytes: 1 }}
104 </li>
105 </ul>
106 </div>
107
108 <div *ngIf="isHLS(video)">
109 HLS:
110
111 <ul>
112 <li *ngFor="let file of video.streamingPlaylists[0].files">
113 {{ file.resolution.label }}: {{ file.size | bytes: 1 }}
114 </li>
115 </ul>
116 </div>
117
118 <my-embed class="ml-auto" [video]="video"></my-embed>
119 </div>
90 </td> 120 </td>
91 </tr> 121 </tr>
92 </ng-template> 122 </ng-template>
diff --git a/client/src/app/+admin/overview/videos/video-list.component.scss b/client/src/app/+admin/overview/videos/video-list.component.scss
index 250a917e4..158c161af 100644
--- a/client/src/app/+admin/overview/videos/video-list.component.scss
+++ b/client/src/app/+admin/overview/videos/video-list.component.scss
@@ -3,6 +3,7 @@
3my-embed { 3my-embed {
4 display: block; 4 display: block;
5 max-width: 500px; 5 max-width: 500px;
6 width: 50%;
6} 7}
7 8
8.badge { 9.badge {
@@ -10,3 +11,7 @@ my-embed {
10 11
11 margin-right: 5px; 12 margin-right: 5px;
12} 13}
14
15.video-info > div {
16 display: flex;
17}
diff --git a/client/src/app/+admin/overview/videos/video-list.component.ts b/client/src/app/+admin/overview/videos/video-list.component.ts
index dd9225e6a..6885abfc7 100644
--- a/client/src/app/+admin/overview/videos/video-list.component.ts
+++ b/client/src/app/+admin/overview/videos/video-list.component.ts
@@ -3,7 +3,7 @@ import { Component, OnInit } from '@angular/core'
3import { ActivatedRoute, Router } from '@angular/router' 3import { ActivatedRoute, Router } from '@angular/router'
4import { AuthService, ConfirmService, Notifier, RestPagination, RestTable } from '@app/core' 4import { AuthService, ConfirmService, Notifier, RestPagination, RestTable } from '@app/core'
5import { DropdownAction, Video, VideoService } from '@app/shared/shared-main' 5import { DropdownAction, Video, VideoService } from '@app/shared/shared-main'
6import { UserRight, VideoPrivacy, VideoState } from '@shared/models' 6import { UserRight, VideoPrivacy, VideoState, VideoStreamingPlaylistType } from '@shared/models'
7import { AdvancedInputFilter } from '@app/shared/shared-forms' 7import { AdvancedInputFilter } from '@app/shared/shared-forms'
8import { VideoActionsDisplayType } from '@app/shared/shared-video-miniature' 8import { VideoActionsDisplayType } from '@app/shared/shared-video-miniature'
9 9
@@ -114,6 +114,24 @@ export class VideoListComponent extends RestTable implements OnInit {
114 return video.blacklisted 114 return video.blacklisted
115 } 115 }
116 116
117 isHLS (video: Video) {
118 return video.streamingPlaylists.some(p => p.type === VideoStreamingPlaylistType.HLS)
119 }
120
121 isWebTorrent (video: Video) {
122 return video.files.length !== 0
123 }
124
125 getFilesSize (video: Video) {
126 let files = video.files
127
128 if (this.isHLS(video)) {
129 files = files.concat(video.streamingPlaylists[0].files)
130 }
131
132 return files.reduce((p, f) => p += f.size, 0)
133 }
134
117 protected reloadData () { 135 protected reloadData () {
118 this.selectedVideos = [] 136 this.selectedVideos = []
119 137