From 8094a8980265a0a28e508dbd7cf7c7029e6d98b6 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Tue, 5 Sep 2017 21:29:39 +0200 Subject: Add user update for admins --- .../+admin/users/user-edit/user-add.component.ts | 87 ++++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 client/src/app/+admin/users/user-edit/user-add.component.ts (limited to 'client/src/app/+admin/users/user-edit/user-add.component.ts') diff --git a/client/src/app/+admin/users/user-edit/user-add.component.ts b/client/src/app/+admin/users/user-edit/user-add.component.ts new file mode 100644 index 000000000..40f649cff --- /dev/null +++ b/client/src/app/+admin/users/user-edit/user-add.component.ts @@ -0,0 +1,87 @@ +import { Component, OnInit } from '@angular/core' +import { FormBuilder, FormGroup } from '@angular/forms' +import { Router } from '@angular/router' + +import { NotificationsService } from 'angular2-notifications' + +import { UserService } from '../shared' +import { + USER_USERNAME, + USER_EMAIL, + USER_PASSWORD, + USER_VIDEO_QUOTA +} from '../../../shared' +import { UserCreate } from '../../../../../../shared' +import { UserEdit } from './user-edit' + +@Component({ + selector: 'my-user-add', + templateUrl: './user-edit.component.html' +}) +export class UserAddComponent extends UserEdit implements OnInit { + error: string + + form: FormGroup + formErrors = { + 'username': '', + 'email': '', + 'password': '', + 'videoQuota': '' + } + validationMessages = { + 'username': USER_USERNAME.MESSAGES, + 'email': USER_EMAIL.MESSAGES, + 'password': USER_PASSWORD.MESSAGES, + 'videoQuota': USER_VIDEO_QUOTA.MESSAGES + } + + constructor ( + private formBuilder: FormBuilder, + private router: Router, + private notificationsService: NotificationsService, + private userService: UserService + ) { + super() + } + + buildForm () { + this.form = this.formBuilder.group({ + username: [ '', USER_USERNAME.VALIDATORS ], + email: [ '', USER_EMAIL.VALIDATORS ], + password: [ '', USER_PASSWORD.VALIDATORS ], + videoQuota: [ '-1', USER_VIDEO_QUOTA.VALIDATORS ] + }) + + this.form.valueChanges.subscribe(data => this.onValueChanged(data)) + } + + ngOnInit () { + this.buildForm() + } + + formValidated () { + this.error = undefined + + const userCreate: UserCreate = this.form.value + + // A select in HTML is always mapped as a string, we convert it to number + userCreate.videoQuota = parseInt(this.form.value['videoQuota'], 10) + + this.userService.addUser(userCreate).subscribe( + () => { + this.notificationsService.success('Success', `User ${userCreate.username} created.`) + this.router.navigate([ '/admin/users/list' ]) + }, + + err => this.error = err.text + ) + } + + isCreation () { + return true + } + + getFormButtonTitle () { + return 'Add user' + } +} -- cgit v1.2.3