]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - client/src/app/+admin/users/user-list/user-list.component.ts
Fix client admin
[github/Chocobozzz/PeerTube.git] / client / src / app / +admin / users / user-list / user-list.component.ts
index baefb7064ce60fa30d99cbce4e06325ed7551006..12826741c027969077442c7d5e0def949f45cf60 100644 (file)
@@ -1,56 +1,88 @@
-import { Component, OnInit } from '@angular/core';
+import { Component } from '@angular/core'
 
-import { NotificationsService } from 'angular2-notifications';
+import { NotificationsService } from 'angular2-notifications'
 
-import { ConfirmService } from '../../../core';
-import { User } from '../../../shared';
-import { UserService } from '../shared';
+import { ConfirmService } from '../../../core'
+import { RestDataSource, User, Utils } from '../../../shared'
+import { UserService } from '../shared'
 
 @Component({
   selector: 'my-user-list',
   templateUrl: './user-list.component.html',
   styleUrls: [ './user-list.component.scss' ]
 })
-export class UserListComponent implements OnInit {
-  totalUsers: number;
-  users: User[];
+export class UserListComponent {
+  usersSource: RestDataSource = null
+  tableSettings = {
+    mode: 'external',
+    attr: {
+      class: 'table-hover'
+    },
+    hideSubHeader: true,
+    actions: {
+      position: 'right',
+      add: false,
+      edit: false,
+      delete: true
+    },
+    delete: {
+      deleteButtonContent: Utils.getRowDeleteButton()
+    },
+    pager: {
+      display: true,
+      perPage: 10
+    },
+    columns: {
+      id: {
+        title: 'ID',
+        sortDirection: 'asc'
+      },
+      username: {
+        title: 'Username'
+      },
+      email: {
+        title: 'Email'
+      },
+      role: {
+        title: 'Role',
+        sort: false
+      },
+      createdAt: {
+        title: 'Created Date',
+        valuePrepareFunction: Utils.dateToHuman
+      }
+    }
+  }
 
-  constructor(
+  constructor (
     private notificationsService: NotificationsService,
     private confirmService: ConfirmService,
     private userService: UserService
-  ) {}
-
-  ngOnInit() {
-    this.getUsers();
+  ) {
+    this.usersSource = this.userService.getDataSource()
   }
 
-  getUsers() {
-    this.userService.getUsers().subscribe(
-      ({ users, totalUsers }) => {
-        this.users = users;
-        this.totalUsers = totalUsers;
-      },
-
-      err => this.notificationsService.error('Error', err.text)
-    );
-  }
+  removeUser ({ data }) {
+    const user: User = data
 
+    if (user.username === 'root') {
+      this.notificationsService.error('Error', 'You cannot delete root.')
+      return
+    }
 
-  removeUser(user: User) {
     this.confirmService.confirm('Do you really want to delete this user?', 'Delete').subscribe(
       res => {
-        if (res === false) return;
+        if (res === false) return
 
         this.userService.removeUser(user).subscribe(
           () => {
-            this.notificationsService.success('Success', `User ${user.username} deleted.`);
-            this.getUsers();
+            this.notificationsService.success('Success', `User ${user.username} deleted.`)
+            this.usersSource.refresh()
           },
 
           err => this.notificationsService.error('Error', err.text)
-        );
+        )
       }
-    );
+    )
   }
 }