diff options
author | Chocobozzz <florian.bigard@gmail.com> | 2017-10-19 09:43:01 +0200 |
---|---|---|
committer | Chocobozzz <florian.bigard@gmail.com> | 2017-10-19 09:43:01 +0200 |
commit | 8a02bd0433b7101c5ea36e87a4edb63204d2adec (patch) | |
tree | d7ab4b6164aef752c216bd2f22f8b3b270a724b8 /client/src/app/+admin | |
parent | 9fd540562c356cb54b98861d2d9e7d4fbfcd00e0 (diff) | |
download | PeerTube-8a02bd0433b7101c5ea36e87a4edb63204d2adec.tar.gz PeerTube-8a02bd0433b7101c5ea36e87a4edb63204d2adec.tar.zst PeerTube-8a02bd0433b7101c5ea36e87a4edb63204d2adec.zip |
Add pod list endpoint with pagination, sort...
Diffstat (limited to 'client/src/app/+admin')
3 files changed, 33 insertions, 14 deletions
diff --git a/client/src/app/+admin/friends/friend-list/friend-list.component.html b/client/src/app/+admin/friends/friend-list/friend-list.component.html index 7887bc5e3..7e92ced54 100644 --- a/client/src/app/+admin/friends/friend-list/friend-list.component.html +++ b/client/src/app/+admin/friends/friend-list/friend-list.component.html | |||
@@ -2,12 +2,15 @@ | |||
2 | <div class="content-padding"> | 2 | <div class="content-padding"> |
3 | <h3>Friends list</h3> | 3 | <h3>Friends list</h3> |
4 | 4 | ||
5 | <p-dataTable [value]="friends"> | 5 | <p-dataTable |
6 | <p-column field="id" header="ID"></p-column> | 6 | [value]="friends" [lazy]="true" [paginator]="true" [totalRecords]="totalRecords" [rows]="rowsPerPage" |
7 | <p-column field="host" header="Host"></p-column> | 7 | sortField="id" (onLazyLoad)="loadLazy($event)" |
8 | > | ||
9 | <p-column field="id" header="ID" [sortable]="true"></p-column> | ||
10 | <p-column field="host" header="Host" [sortable]="true"></p-column> | ||
8 | <p-column field="email" header="Email"></p-column> | 11 | <p-column field="email" header="Email"></p-column> |
9 | <p-column field="score" header="Score"></p-column> | 12 | <p-column field="score" header="Score" [sortable]="true"></p-column> |
10 | <p-column field="createdAt" header="Created date"></p-column> | 13 | <p-column field="createdAt" header="Created date" [sortable]="true"></p-column> |
11 | <p-column header="Delete" styleClass="action-cell"> | 14 | <p-column header="Delete" styleClass="action-cell"> |
12 | <ng-template pTemplate="body" let-pod="rowData"> | 15 | <ng-template pTemplate="body" let-pod="rowData"> |
13 | <span (click)="removeFriend(pod)" class="glyphicon glyphicon-remove glyphicon-black" title="Remove this pod"></span> | 16 | <span (click)="removeFriend(pod)" class="glyphicon glyphicon-remove glyphicon-black" title="Remove this pod"></span> |
diff --git a/client/src/app/+admin/friends/friend-list/friend-list.component.ts b/client/src/app/+admin/friends/friend-list/friend-list.component.ts index 4af39c47e..5a1ecd280 100644 --- a/client/src/app/+admin/friends/friend-list/friend-list.component.ts +++ b/client/src/app/+admin/friends/friend-list/friend-list.component.ts | |||
@@ -1,24 +1,32 @@ | |||
1 | import { Component, OnInit } from '@angular/core' | 1 | import { Component, OnInit } from '@angular/core' |
2 | 2 | ||
3 | import { NotificationsService } from 'angular2-notifications' | 3 | import { NotificationsService } from 'angular2-notifications' |
4 | import { SortMeta } from 'primeng/primeng' | ||
4 | 5 | ||
5 | import { ConfirmService } from '../../../core' | 6 | import { ConfirmService } from '../../../core' |
6 | import { FriendService } from '../shared' | 7 | import { RestTable, RestPagination } from '../../../shared' |
7 | import { Pod } from '../../../../../../shared' | 8 | import { Pod } from '../../../../../../shared' |
9 | import { FriendService } from '../shared' | ||
8 | 10 | ||
9 | @Component({ | 11 | @Component({ |
10 | selector: 'my-friend-list', | 12 | selector: 'my-friend-list', |
11 | templateUrl: './friend-list.component.html', | 13 | templateUrl: './friend-list.component.html', |
12 | styleUrls: ['./friend-list.component.scss'] | 14 | styleUrls: ['./friend-list.component.scss'] |
13 | }) | 15 | }) |
14 | export class FriendListComponent implements OnInit { | 16 | export class FriendListComponent extends RestTable implements OnInit { |
15 | friends: Pod[] = [] | 17 | friends: Pod[] = [] |
18 | totalRecords = 0 | ||
19 | rowsPerPage = 10 | ||
20 | sort: SortMeta = { field: 'id', order: 1 } | ||
21 | pagination: RestPagination = { count: this.rowsPerPage, start: 0 } | ||
16 | 22 | ||
17 | constructor ( | 23 | constructor ( |
18 | private notificationsService: NotificationsService, | 24 | private notificationsService: NotificationsService, |
19 | private confirmService: ConfirmService, | 25 | private confirmService: ConfirmService, |
20 | private friendService: FriendService | 26 | private friendService: FriendService |
21 | ) {} | 27 | ) { |
28 | super() | ||
29 | } | ||
22 | 30 | ||
23 | ngOnInit () { | 31 | ngOnInit () { |
24 | this.loadData() | 32 | this.loadData() |
@@ -65,11 +73,12 @@ export class FriendListComponent implements OnInit { | |||
65 | ) | 73 | ) |
66 | } | 74 | } |
67 | 75 | ||
68 | private loadData () { | 76 | protected loadData () { |
69 | this.friendService.getFriends() | 77 | this.friendService.getFriends(this.pagination, this.sort) |
70 | .subscribe( | 78 | .subscribe( |
71 | resultList => { | 79 | resultList => { |
72 | this.friends = resultList.data | 80 | this.friends = resultList.data |
81 | this.totalRecords = resultList.total | ||
73 | }, | 82 | }, |
74 | 83 | ||
75 | err => this.notificationsService.error('Error', err.message) | 84 | err => this.notificationsService.error('Error', err.message) |
diff --git a/client/src/app/+admin/friends/shared/friend.service.ts b/client/src/app/+admin/friends/shared/friend.service.ts index 274373e3b..a32cdcc88 100644 --- a/client/src/app/+admin/friends/shared/friend.service.ts +++ b/client/src/app/+admin/friends/shared/friend.service.ts | |||
@@ -1,9 +1,12 @@ | |||
1 | import { Injectable } from '@angular/core' | 1 | import { Injectable } from '@angular/core' |
2 | import { HttpClient } from '@angular/common/http' | 2 | import { HttpClient, HttpParams } from '@angular/common/http' |
3 | import { Observable } from 'rxjs/Observable' | ||
3 | import 'rxjs/add/operator/catch' | 4 | import 'rxjs/add/operator/catch' |
4 | import 'rxjs/add/operator/map' | 5 | import 'rxjs/add/operator/map' |
5 | 6 | ||
6 | import { RestExtractor } from '../../../shared' | 7 | import { SortMeta } from 'primeng/primeng' |
8 | |||
9 | import { RestExtractor, RestPagination, RestService } from '../../../shared' | ||
7 | import { Pod, ResultList } from '../../../../../../shared' | 10 | import { Pod, ResultList } from '../../../../../../shared' |
8 | 11 | ||
9 | @Injectable() | 12 | @Injectable() |
@@ -12,11 +15,15 @@ export class FriendService { | |||
12 | 15 | ||
13 | constructor ( | 16 | constructor ( |
14 | private authHttp: HttpClient, | 17 | private authHttp: HttpClient, |
18 | private restService: RestService, | ||
15 | private restExtractor: RestExtractor | 19 | private restExtractor: RestExtractor |
16 | ) {} | 20 | ) {} |
17 | 21 | ||
18 | getFriends () { | 22 | getFriends (pagination: RestPagination, sort: SortMeta): Observable<ResultList<Pod>> { |
19 | return this.authHttp.get<ResultList<Pod>>(FriendService.BASE_FRIEND_URL) | 23 | let params = new HttpParams() |
24 | params = this.restService.addRestGetParams(params, pagination, sort) | ||
25 | |||
26 | return this.authHttp.get<ResultList<Pod>>(FriendService.BASE_FRIEND_URL, { params }) | ||
20 | .map(res => this.restExtractor.convertResultListDateToHuman(res)) | 27 | .map(res => this.restExtractor.convertResultListDateToHuman(res)) |
21 | .catch(res => this.restExtractor.handleError(res)) | 28 | .catch(res => this.restExtractor.handleError(res)) |
22 | } | 29 | } |