import { TranslateService } from '@ngx-translate/core'; import { Component, OnInit } from '@angular/core'; import { FormControl, FormGroup, FormBuilder, Validators } from '@angular/forms'; import { BaseCriteriaComponent } from '../base/base-criteria.component'; import { ValidationContext, Validation } from '../../../../utilities/validators/ValidationContext'; import { BackendErrorValidator } from '../../../../utilities/validators/BackendErrorValidator'; import { ProjectCriteria } from '../../../../models/criteria/project/ProjectCriteria'; import { ProjectCriteriaErrorModel } from '../../../../models/criteria/project/ProjectCriteriaErrorModel'; @Component({ selector: 'app-projects-criteria-component', templateUrl: './projects-criteria.component.html', styleUrls: ['./projects-criteria.component.scss'], providers: [ ] }) export class ProjectCriteriaComponent extends BaseCriteriaComponent implements OnInit { // public form: ProjectType; // public formStatus: ProjectStatus; public criteria: ProjectCriteria = new ProjectCriteria(); constructor( public language: TranslateService, public errorModel: ProjectCriteriaErrorModel, public formBuilder: FormBuilder ) { super(errorModel); } ngOnInit() { super.ngOnInit(); if (this.criteria == null) { this.criteria = new ProjectCriteria(); } if (this.formGroup == null) { this.formGroup = this.buildForm(); } } setCriteria(criteria: ProjectCriteria): void { this.criteria = criteria; this.formGroup = this.buildForm(); } public fromJSONObject(item: any): ProjectCriteria { this.criteria = new ProjectCriteria(); this.criteria.PeriodStart = new Date(item.PeriodStart); this.criteria.PeriodEnd = new Date(item.PeriodEnd); return this.criteria; } buildForm(): FormGroup { const context: ValidationContext = this.createValidationContext(); return this.formBuilder.group({ periodStart: [this.criteria.PeriodStart, context.getValidation('periodStart').validators], periodEnd: [this.criteria.PeriodEnd, context.getValidation('periodEnd').validators], }); } createValidationContext(): ValidationContext { const validationContext: ValidationContext = new ValidationContext(); const validationArray: Validation[] = new Array(); validationArray.push({ key: 'periodStart', validators: [BackendErrorValidator(this.errorModel, 'Criteria.PeriodStart')] }); //must add 'Criteria.' because the criteria validator is inside the request validator validationArray.push({ key: 'periodEnd', validators: [BackendErrorValidator(this.errorModel, 'Criteria.PeriodEnd')] }); validationContext.validation = validationArray; return validationContext; } }