aboutsummaryrefslogtreecommitdiffhomepage
path: root/client/src/app/+admin/users/user-list
diff options
context:
space:
mode:
authorChocobozzz <florian.bigard@gmail.com>2017-01-30 22:41:14 +0100
committerChocobozzz <florian.bigard@gmail.com>2017-01-30 22:41:14 +0100
commit28798b5d949826551740fc893d06e6424b77aa6a (patch)
treee235a7f49164a06c4b76df49ca61b89998d4ed81 /client/src/app/+admin/users/user-list
parent13fc89f4a4b91b3da10493517de556240fb65463 (diff)
downloadPeerTube-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.html25
-rw-r--r--client/src/app/+admin/users/user-list/user-list.component.ts71
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 @@
1import { Component, OnInit } from '@angular/core'; 1import { Component } from '@angular/core';
2 2
3import { NotificationsService } from 'angular2-notifications'; 3import { NotificationsService } from 'angular2-notifications';
4 4
5import { ConfirmService } from '../../../core'; 5import { ConfirmService } from '../../../core';
6import { User } from '../../../shared'; 6import { User, Utils } from '../../../shared';
7import { UserService } from '../shared'; 7import { 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})
14export class UserListComponent implements OnInit { 14export 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)