diff options
Diffstat (limited to 'client/src/app/shared/video')
10 files changed, 51 insertions, 20 deletions
diff --git a/client/src/app/shared/video/abstract-video-list.html b/client/src/app/shared/video/abstract-video-list.html index 29492351b..1f97bc389 100644 --- a/client/src/app/shared/video/abstract-video-list.html +++ b/client/src/app/shared/video/abstract-video-list.html | |||
@@ -1,8 +1,11 @@ | |||
1 | <div [ngClass]="{ 'margin-content': marginContent }"> | 1 | <div [ngClass]="{ 'margin-content': marginContent }"> |
2 | <div class="videos-header"> | 2 | <div class="videos-header"> |
3 | <div *ngIf="titlePage" class="title-page title-page-single"> | 3 | <div *ngIf="titlePage" class="title-page title-page-single"> |
4 | {{ titlePage }} | 4 | <div placement="bottom" [ngbTooltip]="titleTooltip" container="body"> |
5 | {{ titlePage }} | ||
6 | </div> | ||
5 | </div> | 7 | </div> |
8 | |||
6 | <my-feed [syndicationItems]="syndicationItems"></my-feed> | 9 | <my-feed [syndicationItems]="syndicationItems"></my-feed> |
7 | 10 | ||
8 | <div class="moderation-block" *ngIf="displayModerationBlock"> | 11 | <div class="moderation-block" *ngIf="displayModerationBlock"> |
diff --git a/client/src/app/shared/video/abstract-video-list.scss b/client/src/app/shared/video/abstract-video-list.scss index 9fb3fd4d6..292ede698 100644 --- a/client/src/app/shared/video/abstract-video-list.scss +++ b/client/src/app/shared/video/abstract-video-list.scss | |||
@@ -19,8 +19,8 @@ | |||
19 | 19 | ||
20 | my-feed { | 20 | my-feed { |
21 | display: inline-block; | 21 | display: inline-block; |
22 | position: relative; | ||
23 | top: 1px; | 22 | top: 1px; |
23 | min-width: 60px; | ||
24 | } | 24 | } |
25 | 25 | ||
26 | .moderation-block { | 26 | .moderation-block { |
diff --git a/client/src/app/shared/video/abstract-video-list.ts b/client/src/app/shared/video/abstract-video-list.ts index d234c8bfa..b0633be4a 100644 --- a/client/src/app/shared/video/abstract-video-list.ts +++ b/client/src/app/shared/video/abstract-video-list.ts | |||
@@ -39,6 +39,7 @@ export abstract class AbstractVideoList implements OnInit, OnDestroy { | |||
39 | ownerDisplayType: OwnerDisplayType = 'account' | 39 | ownerDisplayType: OwnerDisplayType = 'account' |
40 | firstLoadedPage: number | 40 | firstLoadedPage: number |
41 | displayModerationBlock = false | 41 | displayModerationBlock = false |
42 | titleTooltip: string | ||
42 | 43 | ||
43 | protected baseVideoWidth = 215 | 44 | protected baseVideoWidth = 215 |
44 | protected baseVideoHeight = 205 | 45 | protected baseVideoHeight = 205 |
diff --git a/client/src/app/shared/video/feed.component.html b/client/src/app/shared/video/feed.component.html index 16116ba88..f7624ec01 100644 --- a/client/src/app/shared/video/feed.component.html +++ b/client/src/app/shared/video/feed.component.html | |||
@@ -1,10 +1,11 @@ | |||
1 | <div class="video-feed"> | 1 | <div class="video-feed"> |
2 | <span | 2 | <my-global-icon |
3 | *ngIf="syndicationItems.length !== 0" [ngbPopover]="feedsList" [autoClose]="true" placement="bottom" | 3 | *ngIf="syndicationItems.length !== 0" [ngbPopover]="feedsList" [autoClose]="true" placement="bottom" |
4 | class="icon icon-syndication" role="button" | 4 | class="icon-syndication" role="button" iconName="syndication" |
5 | ></span> | 5 | > |
6 | </my-global-icon> | ||
6 | 7 | ||
7 | <ng-template #feedsList> | 8 | <ng-template #feedsList> |
8 | <a *ngFor="let item of syndicationItems" [href]="item.url" target="_blank" rel="noopener noreferrer">{{ item.label }}</a> | 9 | <a *ngFor="let item of syndicationItems" [href]="item.url" target="_blank" rel="noopener noreferrer">{{ item.label }}</a> |
9 | </ng-template> | 10 | </ng-template> |
10 | </div> \ No newline at end of file | 11 | </div> |
diff --git a/client/src/app/shared/video/feed.component.scss b/client/src/app/shared/video/feed.component.scss index 385764be0..ed1dc17d3 100644 --- a/client/src/app/shared/video/feed.component.scss +++ b/client/src/app/shared/video/feed.component.scss | |||
@@ -1,3 +1,4 @@ | |||
1 | @import '_variables'; | ||
1 | @import '_mixins'; | 2 | @import '_mixins'; |
2 | 3 | ||
3 | .video-feed { | 4 | .video-feed { |
@@ -6,14 +7,12 @@ | |||
6 | display: block; | 7 | display: block; |
7 | } | 8 | } |
8 | 9 | ||
9 | .icon { | 10 | my-global-icon { |
10 | @include icon(12px); | 11 | cursor: pointer; |
12 | width: 12px; | ||
13 | position: relative; | ||
14 | top: -2px; | ||
11 | 15 | ||
12 | &.icon-syndication { | 16 | @include apply-svg-color(var(--mainForegroundColor)) |
13 | position: relative; | ||
14 | top: -2px; | ||
15 | background-color: var(--mainForegroundColor); | ||
16 | mask-image: url('../../../assets/images/global/syndication.svg'); | ||
17 | } | ||
18 | } | 17 | } |
19 | } \ No newline at end of file | 18 | } |
diff --git a/client/src/app/shared/video/video-details.model.ts b/client/src/app/shared/video/video-details.model.ts index fa4ca7f93..388357343 100644 --- a/client/src/app/shared/video/video-details.model.ts +++ b/client/src/app/shared/video/video-details.model.ts | |||
@@ -3,6 +3,8 @@ import { AuthUser } from '../../core' | |||
3 | import { Video } from '../../shared/video/video.model' | 3 | import { Video } from '../../shared/video/video.model' |
4 | import { Account } from '@app/shared/account/account.model' | 4 | import { Account } from '@app/shared/account/account.model' |
5 | import { VideoChannel } from '@app/shared/video-channel/video-channel.model' | 5 | import { VideoChannel } from '@app/shared/video-channel/video-channel.model' |
6 | import { VideoStreamingPlaylist } from '../../../../../shared/models/videos/video-streaming-playlist.model' | ||
7 | import { VideoStreamingPlaylistType } from '../../../../../shared/models/videos/video-streaming-playlist.type' | ||
6 | 8 | ||
7 | export class VideoDetails extends Video implements VideoDetailsServerModel { | 9 | export class VideoDetails extends Video implements VideoDetailsServerModel { |
8 | descriptionPath: string | 10 | descriptionPath: string |
@@ -12,6 +14,7 @@ export class VideoDetails extends Video implements VideoDetailsServerModel { | |||
12 | files: VideoFile[] | 14 | files: VideoFile[] |
13 | account: Account | 15 | account: Account |
14 | commentsEnabled: boolean | 16 | commentsEnabled: boolean |
17 | downloadEnabled: boolean | ||
15 | 18 | ||
16 | waitTranscoding: boolean | 19 | waitTranscoding: boolean |
17 | state: VideoConstant<VideoState> | 20 | state: VideoConstant<VideoState> |
@@ -19,6 +22,10 @@ export class VideoDetails extends Video implements VideoDetailsServerModel { | |||
19 | likesPercent: number | 22 | likesPercent: number |
20 | dislikesPercent: number | 23 | dislikesPercent: number |
21 | 24 | ||
25 | trackerUrls: string[] | ||
26 | |||
27 | streamingPlaylists: VideoStreamingPlaylist[] | ||
28 | |||
22 | constructor (hash: VideoDetailsServerModel, translations = {}) { | 29 | constructor (hash: VideoDetailsServerModel, translations = {}) { |
23 | super(hash, translations) | 30 | super(hash, translations) |
24 | 31 | ||
@@ -29,6 +36,10 @@ export class VideoDetails extends Video implements VideoDetailsServerModel { | |||
29 | this.tags = hash.tags | 36 | this.tags = hash.tags |
30 | this.support = hash.support | 37 | this.support = hash.support |
31 | this.commentsEnabled = hash.commentsEnabled | 38 | this.commentsEnabled = hash.commentsEnabled |
39 | this.downloadEnabled = hash.downloadEnabled | ||
40 | |||
41 | this.trackerUrls = hash.trackerUrls | ||
42 | this.streamingPlaylists = hash.streamingPlaylists | ||
32 | 43 | ||
33 | this.buildLikeAndDislikePercents() | 44 | this.buildLikeAndDislikePercents() |
34 | } | 45 | } |
@@ -53,4 +64,8 @@ export class VideoDetails extends Video implements VideoDetailsServerModel { | |||
53 | this.likesPercent = (this.likes / (this.likes + this.dislikes)) * 100 | 64 | this.likesPercent = (this.likes / (this.likes + this.dislikes)) * 100 |
54 | this.dislikesPercent = (this.dislikes / (this.likes + this.dislikes)) * 100 | 65 | this.dislikesPercent = (this.dislikes / (this.likes + this.dislikes)) * 100 |
55 | } | 66 | } |
67 | |||
68 | getHlsPlaylist () { | ||
69 | return this.streamingPlaylists.find(p => p.type === VideoStreamingPlaylistType.HLS) | ||
70 | } | ||
56 | } | 71 | } |
diff --git a/client/src/app/shared/video/video-edit.model.ts b/client/src/app/shared/video/video-edit.model.ts index 9078bb5d2..c5d5bb406 100644 --- a/client/src/app/shared/video/video-edit.model.ts +++ b/client/src/app/shared/video/video-edit.model.ts | |||
@@ -14,6 +14,7 @@ export class VideoEdit implements VideoUpdate { | |||
14 | tags: string[] | 14 | tags: string[] |
15 | nsfw: boolean | 15 | nsfw: boolean |
16 | commentsEnabled: boolean | 16 | commentsEnabled: boolean |
17 | downloadEnabled: boolean | ||
17 | waitTranscoding: boolean | 18 | waitTranscoding: boolean |
18 | channelId: number | 19 | channelId: number |
19 | privacy: VideoPrivacy | 20 | privacy: VideoPrivacy |
@@ -27,7 +28,15 @@ export class VideoEdit implements VideoUpdate { | |||
27 | scheduleUpdate?: VideoScheduleUpdate | 28 | scheduleUpdate?: VideoScheduleUpdate |
28 | originallyPublishedAt?: Date | string | 29 | originallyPublishedAt?: Date | string |
29 | 30 | ||
30 | constructor (video?: Video & { tags: string[], commentsEnabled: boolean, support: string, thumbnailUrl: string, previewUrl: string }) { | 31 | constructor ( |
32 | video?: Video & { | ||
33 | tags: string[], | ||
34 | commentsEnabled: boolean, | ||
35 | downloadEnabled: boolean, | ||
36 | support: string, | ||
37 | thumbnailUrl: string, | ||
38 | previewUrl: string | ||
39 | }) { | ||
31 | if (video) { | 40 | if (video) { |
32 | this.id = video.id | 41 | this.id = video.id |
33 | this.uuid = video.uuid | 42 | this.uuid = video.uuid |
@@ -39,6 +48,7 @@ export class VideoEdit implements VideoUpdate { | |||
39 | this.tags = video.tags | 48 | this.tags = video.tags |
40 | this.nsfw = video.nsfw | 49 | this.nsfw = video.nsfw |
41 | this.commentsEnabled = video.commentsEnabled | 50 | this.commentsEnabled = video.commentsEnabled |
51 | this.downloadEnabled = video.downloadEnabled | ||
42 | this.waitTranscoding = video.waitTranscoding | 52 | this.waitTranscoding = video.waitTranscoding |
43 | this.channelId = video.channel.id | 53 | this.channelId = video.channel.id |
44 | this.privacy = video.privacy.id | 54 | this.privacy = video.privacy.id |
@@ -88,6 +98,7 @@ export class VideoEdit implements VideoUpdate { | |||
88 | tags: this.tags, | 98 | tags: this.tags, |
89 | nsfw: this.nsfw, | 99 | nsfw: this.nsfw, |
90 | commentsEnabled: this.commentsEnabled, | 100 | commentsEnabled: this.commentsEnabled, |
101 | downloadEnabled: this.downloadEnabled, | ||
91 | waitTranscoding: this.waitTranscoding, | 102 | waitTranscoding: this.waitTranscoding, |
92 | channelId: this.channelId, | 103 | channelId: this.channelId, |
93 | privacy: this.privacy, | 104 | privacy: this.privacy, |
diff --git a/client/src/app/shared/video/video-miniature.component.scss b/client/src/app/shared/video/video-miniature.component.scss index 895879adc..f44bdf9a9 100644 --- a/client/src/app/shared/video/video-miniature.component.scss +++ b/client/src/app/shared/video/video-miniature.component.scss | |||
@@ -50,10 +50,10 @@ | |||
50 | text-overflow: ellipsis; | 50 | text-overflow: ellipsis; |
51 | white-space: nowrap; | 51 | white-space: nowrap; |
52 | font-size: 13px; | 52 | font-size: 13px; |
53 | color: #585858; | 53 | color: $grey-foreground-color; |
54 | 54 | ||
55 | &:hover { | 55 | &:hover { |
56 | color: #303030; | 56 | color: $grey-foreground-hover-color; |
57 | } | 57 | } |
58 | } | 58 | } |
59 | } | 59 | } |
diff --git a/client/src/app/shared/video/video.model.ts b/client/src/app/shared/video/video.model.ts index c9b052951..460c09258 100644 --- a/client/src/app/shared/video/video.model.ts +++ b/client/src/app/shared/video/video.model.ts | |||
@@ -54,7 +54,7 @@ export class Video implements VideoServerModel { | |||
54 | displayName: string | 54 | displayName: string |
55 | url: string | 55 | url: string |
56 | host: string | 56 | host: string |
57 | avatar: Avatar | 57 | avatar?: Avatar |
58 | } | 58 | } |
59 | 59 | ||
60 | channel: { | 60 | channel: { |
@@ -64,7 +64,7 @@ export class Video implements VideoServerModel { | |||
64 | displayName: string | 64 | displayName: string |
65 | url: string | 65 | url: string |
66 | host: string | 66 | host: string |
67 | avatar: Avatar | 67 | avatar?: Avatar |
68 | } | 68 | } |
69 | 69 | ||
70 | userHistory?: { | 70 | userHistory?: { |
diff --git a/client/src/app/shared/video/video.service.ts b/client/src/app/shared/video/video.service.ts index 5d258891f..960846e21 100644 --- a/client/src/app/shared/video/video.service.ts +++ b/client/src/app/shared/video/video.service.ts | |||
@@ -96,6 +96,7 @@ export class VideoService implements VideosProvider { | |||
96 | nsfw: video.nsfw, | 96 | nsfw: video.nsfw, |
97 | waitTranscoding: video.waitTranscoding, | 97 | waitTranscoding: video.waitTranscoding, |
98 | commentsEnabled: video.commentsEnabled, | 98 | commentsEnabled: video.commentsEnabled, |
99 | downloadEnabled: video.downloadEnabled, | ||
99 | thumbnailfile: video.thumbnailfile, | 100 | thumbnailfile: video.thumbnailfile, |
100 | previewfile: video.previewfile, | 101 | previewfile: video.previewfile, |
101 | scheduleUpdate, | 102 | scheduleUpdate, |