From 4c200caae63b3f5602dcd93e94b52c39e01857fe Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Wed, 9 May 2018 15:30:37 +0200 Subject: User add -> User create --- .../users/user-edit/user-create.component.ts | 94 ++++++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 client/src/app/+admin/users/user-edit/user-create.component.ts (limited to 'client/src/app/+admin/users/user-edit/user-create.component.ts') diff --git a/client/src/app/+admin/users/user-edit/user-create.component.ts b/client/src/app/+admin/users/user-edit/user-create.component.ts new file mode 100644 index 000000000..2a9882cde --- /dev/null +++ b/client/src/app/+admin/users/user-edit/user-create.component.ts @@ -0,0 +1,94 @@ +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, + USER_ROLE +} from '../../../shared' +import { ServerService } from '../../../core' +import { UserCreate, UserRole } from '../../../../../../shared' +import { UserEdit } from './user-edit' + +@Component({ + selector: 'my-user-create', + templateUrl: './user-edit.component.html', + styleUrls: [ './user-edit.component.scss' ] +}) +export class UserCreateComponent extends UserEdit implements OnInit { + error: string + + form: FormGroup + formErrors = { + 'username': '', + 'email': '', + 'password': '', + 'role': '', + 'videoQuota': '' + } + validationMessages = { + 'username': USER_USERNAME.MESSAGES, + 'email': USER_EMAIL.MESSAGES, + 'password': USER_PASSWORD.MESSAGES, + 'role': USER_ROLE.MESSAGES, + 'videoQuota': USER_VIDEO_QUOTA.MESSAGES + } + + constructor ( + protected serverService: ServerService, + 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 ], + role: [ UserRole.USER, USER_ROLE.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.message + ) + } + + isCreation () { + return true + } + + getFormButtonTitle () { + return 'Create user' + } +} -- cgit v1.2.3