change-password.component.ts 3.28 KB
import { Component, AfterViewInit, OnInit } from '@angular/core';
import { Router } from '@angular/router';
import { ApplicationService } from '../services/application.service';
import { FormBuilder, FormGroup, Validators } from '@angular/forms';

declare var jQuery: any;

@Component({
    templateUrl: './app/components/change-password.component.html'
})
export class ChangePasswordComponent implements AfterViewInit, OnInit {

    changePasswordForm: FormGroup;

    constructor(private application: ApplicationService, private router: Router, private fb: FormBuilder) {

    }

    ngAfterViewInit(): void {
        this.initializeUIElements();

        //jQuery(function () {
        //    jQuery("#slider-range-min-2").slider({
        //        range: "min",
        //        min: 1,
        //        max: 60,
        //        value: 10,
        //        slide: function (event, ui) {
        //            jQuery("#amount-2").val(ui.value);
        //        }
        //    });
        //    jQuery("#amount-2").val(jQuery("#slider-vertical-2").slider("value"));
        //});

        //jQuery('.modal').draggable({
        //    handle: '.modal-header'
        //})
    }

    initializeUIElements(): void {



    }

    ngOnInit(): void {
        /*if (this.application.currentUser == null) {
            this.router.navigate(['/login']);
        }*/
        this.initializeChangePasswordComponent();
    }

    showAlert(id: string): void {
        jQuery('#' + id).modal('show');
    }

    initializeChangePasswordComponent(): void {
        this.changePasswordForm = this.fb.group({
            'userId': ['', [Validators.required]],
            'oldPassword': ['', [Validators.required]],
            'newPassword': ['', [Validators.required, Validators.minLength(8)]],
            'confirmPassword': ['', [Validators.required]]
        });

        this.changePasswordForm.valueChanges
            .subscribe(data => this.onValueChanged(data));

        this.onValueChanged(); // (re)set validation messages now
    }

    onValueChanged(data?: any) {
        if (!this.changePasswordForm) { return; }
        const form = this.changePasswordForm;

        for (const field in this.formErrors) {
            // clear previous error message (if any)
            this.formErrors[field] = '';
            const control = form.get(field);

            if (control && control.dirty && !control.valid) {
                const messages = this.validationMessages[field];
                for (const key in control.errors) {
                    this.formErrors[field] += messages[key] + ' ';
                }
            }
        }
    }

    formErrors = {
        'userId': '',
        'oldPassword': '',
        'newPassword': '',
        'confirmPassword': ''
    };

    validationMessages = {
        'userId': {
            'required': 'Userid is required.'
        },
        'oldPassword': {
            'required': 'Old password is required.'
        },
        'newPassword': {
            'required': 'New password is required.',
            'minlength': 'New password must be at least 8 characters long.'
        },
        'confirmPassword': {
            'required': 'Confirm password is required.'
        }
    }
}