2017-12-14 14:10:56 +01:00
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 formBuilder : FormBuilder
) {
2017-12-14 18:13:28 +01:00
super ( new ProjectCriteriaErrorModel ( ) ) ;
2017-12-14 14:10:56 +01:00
}
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 < Validation > ( ) ;
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 ;
}
}