X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=client%2Fangular%2Fvideos%2Fcomponents%2Flist%2Fvideos-list.component.ts;h=94b064e163aa7654a6ccb4b9863a4518abd117b2;hb=a99593ed9f3244e75f7db793ba6716754d664573;hp=6fc0c1f04b290f2f79ec271bace64ca04c59c082;hpb=501bc6c2b186f6a724a5b619d15aa44791f13995;p=github%2FChocobozzz%2FPeerTube.git diff --git a/client/angular/videos/components/list/videos-list.component.ts b/client/angular/videos/components/list/videos-list.component.ts index 6fc0c1f04..94b064e16 100644 --- a/client/angular/videos/components/list/videos-list.component.ts +++ b/client/angular/videos/components/list/videos-list.component.ts @@ -1,31 +1,49 @@ import { Component, OnInit } from '@angular/core'; -import { ROUTER_DIRECTIVES, RouteParams } from '@angular/router-deprecated'; +import { ROUTER_DIRECTIVES, RouteParams, Router } from '@angular/router-deprecated'; + +import { PAGINATION_DIRECTIVES } from 'ng2-bootstrap/components/pagination'; import { AuthService } from '../../../users/services/auth.service'; +import { Pagination } from '../../pagination'; import { User } from '../../../users/models/user'; import { VideosService } from '../../videos.service'; import { Video } from '../../video'; import { VideoMiniatureComponent } from './video-miniature.component'; +import { Search, SearchField } from '../../../app/search'; +import { VideoSortComponent } from './video-sort.component'; +import { SortField } from './sort'; @Component({ selector: 'my-videos-list', styleUrls: [ 'app/angular/videos/components/list/videos-list.component.css' ], templateUrl: 'app/angular/videos/components/list/videos-list.component.html', - directives: [ ROUTER_DIRECTIVES, VideoMiniatureComponent ] + directives: [ ROUTER_DIRECTIVES, PAGINATION_DIRECTIVES, VideoMiniatureComponent, VideoSortComponent ] }) export class VideosListComponent implements OnInit { user: User = null; videos: Video[] = []; + pagination: Pagination = { + currentPage: 1, + itemsPerPage: 9, + total: 0 + }; + sort: SortField; - private search: string; + private search: Search; constructor( private _authService: AuthService, private _videosService: VideosService, - routeParams: RouteParams + private _routeParams: RouteParams, + private _router: Router ) { - this.search = routeParams.get('search'); + this.search = { + value: this._routeParams.get('search'), + field: this._routeParams.get('field') + }; + + this.sort = this._routeParams.get('sort') || '-createdDate'; } ngOnInit() { @@ -39,14 +57,17 @@ export class VideosListComponent implements OnInit { getVideos() { let observable = null; - if (this.search !== null) { - observable = this._videosService.searchVideos(this.search); + if (this.search.value !== null) { + observable = this._videosService.searchVideos(this.search, this.pagination, this.sort); } else { - observable = this._videosService.getVideos(); + observable = this._videosService.getVideos(this.pagination, this.sort); } observable.subscribe( - videos => this.videos = videos, + ({ videos, totalVideos }) => { + this.videos = videos; + this.pagination.total = totalVideos; + }, error => alert(error) ); } @@ -55,4 +76,19 @@ export class VideosListComponent implements OnInit { this.videos.splice(this.videos.indexOf(video), 1); } + onSort(sort: SortField) { + this.sort = sort; + + const params: any = { + sort: this.sort + }; + + if (this.search.value) { + params.search = this.search.value; + params.field = this.search.field; + } + + this._router.navigate(['VideosList', params]); + this.getVideos(); + } }