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 { DatasetCriteriaErrorModel } from '../../../../models/criteria/dataset/DatasetCriteriaErrorModel'; import { DatasetCriteria } from '../../../../models/criteria/dataset/DatasetCriteria'; @Component({ selector: 'app-datasets-criteria-component', templateUrl: './datasets-criteria.component.html', styleUrls: ['./datasets-criteria.component.css'], providers: [ ] }) export class DatasetCriteriaComponent extends BaseCriteriaComponent implements OnInit { // public form: ProjectType; // public formStatus: ProjectStatus; public criteria: DatasetCriteria= new DatasetCriteria(); constructor( public language: TranslateService, public formBuilder: FormBuilder ) { super(new DatasetCriteriaErrorModel()); } ngOnInit() { super.ngOnInit(); if (this.criteria == null) { this.criteria = new DatasetCriteria(); } if (this.formGroup == null) { this.formGroup = this.buildForm(); } } setCriteria(criteria: DatasetCriteria): void { this.criteria = criteria; this.formGroup = this.buildForm(); } public fromJSONObject(item: any): DatasetCriteria { this.criteria = new DatasetCriteria(); this.criteria.Name = new String(item.name); this.criteria.Status = new Number(item.status); return this.criteria; } buildForm(): FormGroup { const context: ValidationContext = this.createValidationContext(); return this.formBuilder.group({ name: [this.criteria.Name, context.getValidation('name').validators], status: [this.criteria.Status, context.getValidation('status').validators], // created: [this.criteria, context.getValidation('created').validators] }); } createValidationContext(): ValidationContext { const validationContext: ValidationContext = new ValidationContext(); const validationArray: Validation[] = new Array(); validationArray.push({ key: 'name', validators: [BackendErrorValidator(this.errorModel, 'Criteria.Name')] }); //must add 'Criteria.' because the criteria validator is inside the request validator validationArray.push({ key: 'status', validators: [BackendErrorValidator(this.errorModel, 'Criteria.Status')] }); validationContext.validation = validationArray; return validationContext; } }