1
0
Fork 0

Fix video rows overflow

In discover and account channel videos pages
This commit is contained in:
Chocobozzz 2019-08-22 13:59:54 +02:00
parent a3671f0709
commit 6eb62c3390
No known key found for this signature in database
GPG key ID: 583A612D890159BE
6 changed files with 37 additions and 11 deletions

View file

@ -9,7 +9,6 @@
.section {
@include miniature-rows;
overflow: visible; // For the subscribe dropdown
padding-top: 0 !important;
.section-title {

View file

@ -11,6 +11,7 @@ import { AuthService } from '@app/core'
import { VideoService } from '@app/shared/video/video.service'
import { VideoSortField } from '@app/shared/video/sort-field.type'
import { ComponentPagination, hasMoreItems } from '@app/shared/rest/component-pagination.model'
import { ScreenService } from '@app/shared/misc/screen.service'
@Component({
selector: 'my-account-video-channels',
@ -42,7 +43,8 @@ export class AccountVideoChannelsComponent implements OnInit, OnDestroy {
private authService: AuthService,
private accountService: AccountService,
private videoChannelService: VideoChannelService,
private videoService: VideoService
private videoService: VideoService,
private screenService: ScreenService
) { }
get user () {
@ -83,7 +85,10 @@ export class AccountVideoChannelsComponent implements OnInit, OnDestroy {
}
getVideosOf (videoChannel: VideoChannel) {
return this.videos[ videoChannel.id ]
const numberOfVideos = this.screenService.getNumberOfAvailableMiniatures()
// 2 rows
return this.videos[ videoChannel.id ].slice(0, numberOfVideos * 2)
}
onNearOfBottom () {

View file

@ -22,8 +22,22 @@ export class ScreenService {
return 'ontouchstart' in window || navigator.msMaxTouchPoints
}
getNumberOfAvailableMiniatures () {
const screenWidth = this.getWindowInnerWidth()
let numberOfVideos = 1
if (screenWidth > 1850) numberOfVideos = 6
else if (screenWidth > 1600) numberOfVideos = 5
else if (screenWidth > 1370) numberOfVideos = 4
else if (screenWidth > 1100) numberOfVideos = 3
else if (screenWidth > 850) numberOfVideos = 2
return numberOfVideos
}
// Cache window inner width, because it's an expensive call
private getWindowInnerWidth () {
getWindowInnerWidth () {
if (this.cacheWindowInnerWidthExpired()) this.refreshWindowInnerWidth()
return this.windowInnerWidth

View file

@ -7,7 +7,8 @@
<a routerLink="/search" [queryParams]="{ categoryOneOf: [ object.category.id ] }">{{ object.category.label }}</a>
</div>
<my-video-miniature *ngFor="let video of object.videos" [video]="video" [user]="user" [displayVideoActions]="false"></my-video-miniature>
<my-video-miniature *ngFor="let video of buildVideos(object.videos)" [video]="video" [user]="user" [displayVideoActions]="false">
</my-video-miniature>
</div>
<div class="section" *ngFor="let object of overview.tags">
@ -15,7 +16,8 @@
<a routerLink="/search" [queryParams]="{ tagsOneOf: [ object.tag ] }">#{{ object.tag }}</a>
</div>
<my-video-miniature *ngFor="let video of object.videos" [video]="video" [user]="user" [displayVideoActions]="false"></my-video-miniature>
<my-video-miniature *ngFor="let video of buildVideos(object.videos)" [video]="video" [user]="user" [displayVideoActions]="false">
</my-video-miniature>
</div>
<div class="section channel" *ngFor="let object of overview.channels">
@ -27,7 +29,8 @@
</a>
</div>
<my-video-miniature *ngFor="let video of object.videos" [video]="video" [user]="user" [displayVideoActions]="false"></my-video-miniature>
<my-video-miniature *ngFor="let video of buildVideos(object.videos)" [video]="video" [user]="user" [displayVideoActions]="false">
</my-video-miniature>
</div>
</div>

View file

@ -4,6 +4,7 @@ import { I18n } from '@ngx-translate/i18n-polyfill'
import { VideosOverview } from '@app/shared/overview/videos-overview.model'
import { OverviewService } from '@app/shared/overview'
import { Video } from '@app/shared/video/video.model'
import { ScreenService } from '@app/shared/misc/screen.service'
@Component({
selector: 'my-video-overview',
@ -22,7 +23,8 @@ export class VideoOverviewComponent implements OnInit {
private i18n: I18n,
private notifier: Notifier,
private authService: AuthService,
private overviewService: OverviewService
private overviewService: OverviewService,
private screenService: ScreenService
) { }
get user () {
@ -53,4 +55,10 @@ export class VideoOverviewComponent implements OnInit {
buildVideoChannelAvatarUrl (object: { videos: Video[] }) {
return object.videos[0].videoChannelAvatarUrl
}
buildVideos (videos: Video[]) {
const numberOfVideos = this.screenService.getNumberOfAvailableMiniatures()
return videos.slice(0, numberOfVideos * 2)
}
}

View file

@ -140,9 +140,6 @@ $play-overlay-width: 18px;
}
@mixin miniature-rows {
max-height: 540px; // 2 rows max
overflow: hidden;
&:first-child {
padding-top: 30px;