import { Component, OnInit } from '@angular/core'; import { FormBuilder, FormGroup, Validators } from '@angular/forms'; import { Router } from '@angular/router'; import { AccountService } from '../login/account.service'; interface TimeEntry { value: number viewValue: string } @Component({ selector: 'app-admin', templateUrl: './admin.component.html', styleUrls: ['./admin.component.scss'] }) export class AdminComponent implements OnInit { passwordForm: FormGroup statusForm: FormGroup quoteForm: FormGroup public passwordError = false public username = '' timeOptions: TimeEntry[] = [ {value: 60, viewValue: '1 Minute'}, {value: 600, viewValue: '10 Minutes'}, {value: 3600, viewValue: '1 Hour'}, {value: 36000, viewValue: '10 Hours'}, {value: 24 * 3600, viewValue: '1 Day'}, ] defaultTime = '10 Minutes' constructor(public account: AccountService, router: Router, private formBuilder: FormBuilder) { this.passwordForm = this.formBuilder.group({ password: ['', Validators.required], password_repeat: ['', Validators.required] }) this.statusForm = this.formBuilder.group({ status: ['', Validators.required], time: [null], }) this.quoteForm = this.formBuilder.group({ quote: ['', Validators.required], }) account.subscribe((username: string) => { if (account.username.length == 0) { router.navigate(['login']) } this.username = username }) } ngOnInit(): void { this.statusForm.get('time')?.setValue(60) } onPasswordSubmit() { if (this.passwordForm.invalid) { return } this.passwordError = this.passwordForm.controls['password'].value != this.passwordForm.controls['password_repeat'].value if (this.passwordError) { return } this.account.changePassword(this.passwordForm.controls['password'].value, () => { this.passwordForm.reset() }, () => {}) } onStatusSubmit() { if (this.statusForm.invalid) { return } this.account.postStatus(this.statusForm.controls['status'].value, this.statusForm.controls['time'].value) this.statusForm.reset() this.statusForm.get('time')?.setValue(60) } onQuoteSubmit() { if (this.quoteForm.invalid) { return } this.account.updateQuote(this.quoteForm.controls['quote'].value) this.quoteForm.reset() } }