import { TranslateService } from '@ngx-translate/core'; import { Component, OnInit, Input } 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 { DataManagementPlanCriteria } from '../../../../models/criteria/data-management-plan/DataManagementPlanCriteria'; import { DataManagementPlanCriteriaErrorModel } from '../../../../models/criteria/data-management-plan/DataManagementPlanCriteriaErrorModel'; import { ProjectModel } from '../../../../models/projects/ProjectModel'; import { ProjectService } from '../../../../services/project/project.service'; import { ProjectCriteria } from '../../../../models/criteria/project/ProjectCriteria'; import { RequestItem } from '../../../../models/criteria/RequestItem'; import { create } from 'domain'; @Component({ selector: 'app-dmp-criteria-component', templateUrl: './dmp-criteria.component.html', styleUrls: ['./dmp-criteria.component.scss'], }) export class DataManagementPlanCriteriaComponent extends BaseCriteriaComponent implements OnInit { @Input() showProject: boolean; public criteria: DataManagementPlanCriteria = new DataManagementPlanCriteria(); filteringProjectsAsync: boolean = false; filteredProjects: ProjectModel[]; constructor( public language: TranslateService, public projectService: ProjectService, public formBuilder: FormBuilder ) { super(new DataManagementPlanCriteriaErrorModel()); } ngOnInit() { super.ngOnInit(); if (this.criteria == null) { this.criteria = new DataManagementPlanCriteria(); } } setCriteria(criteria: DataManagementPlanCriteria): void { this.criteria = criteria; } onCallbackError(error: any) { this.setErrorModel(error.error); } controlModified(): void { this.clearErrorModel(); if (this.refreshCallback != null && (this.criteria.like == null || this.criteria.like.length == 0 || this.criteria.like.length > 2) ) { this.refreshCallback(); } } filterProjects(value: string): void { this.filteredProjects = undefined; if (value) { this.filteringProjectsAsync = true; let requestItem: RequestItem = new RequestItem(); let criteria: ProjectCriteria = new ProjectCriteria(); criteria.like = value; requestItem.criteria = criteria; this.projectService.get(requestItem).subscribe(items => { this.filteredProjects = items; this.filteringProjectsAsync = false; }); } } }