1 import { Component, OnInit } from '@angular/core';
2 import { Router, ROUTER_DIRECTIVES, RouteSegment } from '@angular/router';
4 import { PAGINATION_DIRECTIVES } from 'ng2-bootstrap/components/pagination';
13 import { AuthService, Search, SearchField, User } from '../../shared';
14 import { VideoMiniatureComponent } from './video-miniature.component';
15 import { VideoSortComponent } from './video-sort.component';
16 import { SearchService } from '../../shared';
19 selector: 'my-videos-list',
20 styles: [ require('./video-list.component.scss') ],
21 template: require('./video-list.component.html'),
22 directives: [ LoaderComponent, PAGINATION_DIRECTIVES, ROUTER_DIRECTIVES, VideoMiniatureComponent, VideoSortComponent ]
25 export class VideoListComponent implements OnInit {
27 pagination: Pagination = {
36 private search: Search;
39 private authService: AuthService,
40 private router: Router,
41 private routeSegment: RouteSegment,
42 private videoService: VideoService,
43 private searchService: SearchService // Temporary
47 if (this.authService.isLoggedIn()) {
48 this.user = User.load();
52 value: this.routeSegment.getParam('search'),
53 field: <SearchField>this.routeSegment.getParam('field')
57 this.searchChanged(this.search);
59 this.sort = <SortField>this.routeSegment.getParam('sort') || '-createdDate';
68 let observable = null;
70 if (this.search.value) {
71 observable = this.videoService.searchVideos(this.search, this.pagination, this.sort);
73 observable = this.videoService.getVideos(this.pagination, this.sort);
77 ({ videos, totalVideos }) => {
79 this.pagination.total = totalVideos;
88 return !this.loading && this.videos.length === 0;
91 onRemoved(video: Video) {
95 onSort(sort: SortField) {
102 if (this.search.value) {
103 params.field = this.search.field;
104 params.search = this.search.value;
107 this.router.navigate(['/videos/list', params]);
110 searchChanged(search: Search) {
111 this.searchService.searchChanged.next(search);