diff options
author | Chocobozzz <florian.bigard@gmail.com> | 2017-01-30 22:41:14 +0100 |
---|---|---|
committer | Chocobozzz <florian.bigard@gmail.com> | 2017-01-30 22:41:14 +0100 |
commit | 28798b5d949826551740fc893d06e6424b77aa6a (patch) | |
tree | e235a7f49164a06c4b76df49ca61b89998d4ed81 /client/src/app/+admin/users/user-list | |
parent | 13fc89f4a4b91b3da10493517de556240fb65463 (diff) | |
download | PeerTube-28798b5d949826551740fc893d06e6424b77aa6a.tar.gz PeerTube-28798b5d949826551740fc893d06e6424b77aa6a.tar.zst PeerTube-28798b5d949826551740fc893d06e6424b77aa6a.zip |
Client: replace simple tables by ng2 smart table component
Diffstat (limited to 'client/src/app/+admin/users/user-list')
-rw-r--r-- | client/src/app/+admin/users/user-list/user-list.component.html | 25 | ||||
-rw-r--r-- | client/src/app/+admin/users/user-list/user-list.component.ts | 71 |
2 files changed, 54 insertions, 42 deletions
diff --git a/client/src/app/+admin/users/user-list/user-list.component.html b/client/src/app/+admin/users/user-list/user-list.component.html index 36193d119..3d3d7e054 100644 --- a/client/src/app/+admin/users/user-list/user-list.component.html +++ b/client/src/app/+admin/users/user-list/user-list.component.html | |||
@@ -1,26 +1,9 @@ | |||
1 | <h3>Users list</h3> | 1 | <h3>Users list</h3> |
2 | 2 | ||
3 | <table class="table table-hover"> | 3 | <ng2-smart-table |
4 | <thead> | 4 | [settings]="tableSettings" [source]="usersSource" |
5 | <tr> | 5 | (delete)="removeUser($event)" |
6 | <th class="table-column-id">ID</th> | 6 | ></ng2-smart-table> |
7 | <th>Username</th> | ||
8 | <th>Created Date</th> | ||
9 | <th class="text-right">Remove</th> | ||
10 | </tr> | ||
11 | </thead> | ||
12 | |||
13 | <tbody> | ||
14 | <tr *ngFor="let user of users"> | ||
15 | <td>{{ user.id }}</td> | ||
16 | <td>{{ user.username }}</td> | ||
17 | <td>{{ user.createdAt | date: 'medium' }}</td> | ||
18 | <td class="text-right"> | ||
19 | <span class="glyphicon glyphicon-remove" *ngIf="!user.isAdmin()" (click)="removeUser(user)"></span> | ||
20 | </td> | ||
21 | </tr> | ||
22 | </tbody> | ||
23 | </table> | ||
24 | 7 | ||
25 | <a class="add-user btn btn-success pull-right" [routerLink]="['/admin/users/add']"> | 8 | <a class="add-user btn btn-success pull-right" [routerLink]="['/admin/users/add']"> |
26 | <span class="glyphicon glyphicon-plus"></span> | 9 | <span class="glyphicon glyphicon-plus"></span> |
diff --git a/client/src/app/+admin/users/user-list/user-list.component.ts b/client/src/app/+admin/users/user-list/user-list.component.ts index baefb7064..db025d3a8 100644 --- a/client/src/app/+admin/users/user-list/user-list.component.ts +++ b/client/src/app/+admin/users/user-list/user-list.component.ts | |||
@@ -1,9 +1,9 @@ | |||
1 | import { Component, OnInit } from '@angular/core'; | 1 | import { Component } from '@angular/core'; |
2 | 2 | ||
3 | import { NotificationsService } from 'angular2-notifications'; | 3 | import { NotificationsService } from 'angular2-notifications'; |
4 | 4 | ||
5 | import { ConfirmService } from '../../../core'; | 5 | import { ConfirmService } from '../../../core'; |
6 | import { User } from '../../../shared'; | 6 | import { User, Utils } from '../../../shared'; |
7 | import { UserService } from '../shared'; | 7 | import { UserService } from '../shared'; |
8 | 8 | ||
9 | @Component({ | 9 | @Component({ |
@@ -11,33 +11,62 @@ import { UserService } from '../shared'; | |||
11 | templateUrl: './user-list.component.html', | 11 | templateUrl: './user-list.component.html', |
12 | styleUrls: [ './user-list.component.scss' ] | 12 | styleUrls: [ './user-list.component.scss' ] |
13 | }) | 13 | }) |
14 | export class UserListComponent implements OnInit { | 14 | export class UserListComponent { |
15 | totalUsers: number; | 15 | usersSource = null; |
16 | users: User[]; | 16 | tableSettings = { |
17 | mode: 'external', | ||
18 | attr: { | ||
19 | class: 'table-hover' | ||
20 | }, | ||
21 | hideSubHeader: true, | ||
22 | actions: { | ||
23 | position: 'right', | ||
24 | add: false, | ||
25 | edit: false, | ||
26 | delete: true | ||
27 | }, | ||
28 | delete: { | ||
29 | deleteButtonContent: Utils.getRowDeleteButton() | ||
30 | }, | ||
31 | pager: { | ||
32 | display: true, | ||
33 | perPage: 10 | ||
34 | }, | ||
35 | columns: { | ||
36 | id: { | ||
37 | title: 'ID', | ||
38 | sortDirection: 'asc' | ||
39 | }, | ||
40 | username: { | ||
41 | title: 'Username' | ||
42 | }, | ||
43 | role: { | ||
44 | title: 'Role', | ||
45 | sort: false | ||
46 | }, | ||
47 | createdAt: { | ||
48 | title: 'Created Date', | ||
49 | valuePrepareFunction: Utils.dateToHuman | ||
50 | } | ||
51 | } | ||
52 | } | ||
17 | 53 | ||
18 | constructor( | 54 | constructor( |
19 | private notificationsService: NotificationsService, | 55 | private notificationsService: NotificationsService, |
20 | private confirmService: ConfirmService, | 56 | private confirmService: ConfirmService, |
21 | private userService: UserService | 57 | private userService: UserService |
22 | ) {} | 58 | ) { |
23 | 59 | this.usersSource = this.userService.getDataSource(); | |
24 | ngOnInit() { | ||
25 | this.getUsers(); | ||
26 | } | 60 | } |
27 | 61 | ||
28 | getUsers() { | 62 | removeUser({ data }) { |
29 | this.userService.getUsers().subscribe( | 63 | const user: User = data; |
30 | ({ users, totalUsers }) => { | ||
31 | this.users = users; | ||
32 | this.totalUsers = totalUsers; | ||
33 | }, | ||
34 | |||
35 | err => this.notificationsService.error('Error', err.text) | ||
36 | ); | ||
37 | } | ||
38 | 64 | ||
65 | if (user.username === 'root') { | ||
66 | this.notificationsService.error('Error', 'You cannot delete root.'); | ||
67 | return; | ||
68 | } | ||
39 | 69 | ||
40 | removeUser(user: User) { | ||
41 | this.confirmService.confirm('Do you really want to delete this user?', 'Delete').subscribe( | 70 | this.confirmService.confirm('Do you really want to delete this user?', 'Delete').subscribe( |
42 | res => { | 71 | res => { |
43 | if (res === false) return; | 72 | if (res === false) return; |
@@ -45,7 +74,7 @@ export class UserListComponent implements OnInit { | |||
45 | this.userService.removeUser(user).subscribe( | 74 | this.userService.removeUser(user).subscribe( |
46 | () => { | 75 | () => { |
47 | this.notificationsService.success('Success', `User ${user.username} deleted.`); | 76 | this.notificationsService.success('Success', `User ${user.username} deleted.`); |
48 | this.getUsers(); | 77 | this.usersSource.refresh(); |
49 | }, | 78 | }, |
50 | 79 | ||
51 | err => this.notificationsService.error('Error', err.text) | 80 | err => this.notificationsService.error('Error', err.text) |