X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=client%2Fsrc%2Fapp%2Fshared%2Fshared-custom-markup%2Fpeertube-custom-tags%2Fvideos-list-markup.component.ts;h=02738022e98c106bb0144b6e716c054eb6489a27;hb=0ca454e3bdf89390d1a48760ab555ddd8725c82d;hp=8d9e223daffdd10ec2f68e39e06c8046fdf3c8c4;hpb=8ee25e17b88b970703f4df9e74cb4726bbffd837;p=github%2FChocobozzz%2FPeerTube.git diff --git a/client/src/app/shared/shared-custom-markup/peertube-custom-tags/videos-list-markup.component.ts b/client/src/app/shared/shared-custom-markup/peertube-custom-tags/videos-list-markup.component.ts index 8d9e223da..02738022e 100644 --- a/client/src/app/shared/shared-custom-markup/peertube-custom-tags/videos-list-markup.component.ts +++ b/client/src/app/shared/shared-custom-markup/peertube-custom-tags/videos-list-markup.component.ts @@ -1,8 +1,9 @@ -import { Component, Input, OnInit } from '@angular/core' +import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core' import { AuthService } from '@app/core' -import { VideoSortField } from '@shared/models' +import { VideoFilter, VideoSortField } from '@shared/models' import { Video, VideoService } from '../../shared-main' import { MiniatureDisplayOptions } from '../../shared-video-miniature' +import { CustomMarkupComponent } from './shared' /* * Markup component list videos depending on criterias @@ -13,18 +14,21 @@ import { MiniatureDisplayOptions } from '../../shared-video-miniature' templateUrl: 'videos-list-markup.component.html', styleUrls: [ 'videos-list-markup.component.scss' ] }) -export class VideosListMarkupComponent implements OnInit { - @Input() title: string - @Input() description: string - @Input() sort = '-publishedAt' +export class VideosListMarkupComponent implements CustomMarkupComponent, OnInit { + @Input() sort: string @Input() categoryOneOf: number[] @Input() languageOneOf: string[] - @Input() count = 10 + @Input() count: number + @Input() onlyDisplayTitle: boolean + @Input() filter: VideoFilter + @Input() maxRows: number + + @Output() loaded = new EventEmitter() videos: Video[] displayOptions: MiniatureDisplayOptions = { - date: true, + date: false, views: true, by: true, avatar: false, @@ -43,7 +47,23 @@ export class VideosListMarkupComponent implements OnInit { return this.auth.getUser() } + limitRowsStyle () { + if (this.maxRows <= 0) return {} + + return { + 'grid-template-rows': `repeat(${this.maxRows}, 1fr)`, + 'grid-auto-rows': '0', // Set height to 0 for autogenerated grid rows + 'overflow-y': 'hidden' // Hide grid items that overflow + } + } + ngOnInit () { + if (this.onlyDisplayTitle) { + for (const key of Object.keys(this.displayOptions)) { + this.displayOptions[key] = false + } + } + const options = { videoPagination: { currentPage: 1, @@ -51,10 +71,15 @@ export class VideosListMarkupComponent implements OnInit { }, categoryOneOf: this.categoryOneOf, languageOneOf: this.languageOneOf, + filter: this.filter, sort: this.sort as VideoSortField } this.videoService.getVideos(options) - .subscribe(({ data }) => this.videos = data) + .subscribe({ + next: ({ data }) => this.videos = data, + + complete: () => this.loaded.emit(true) + }) } }