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'; import { TagsCriteria } from '../../../../models/criteria/tags/TagsCriteria'; import { ExternalSourcesService } from '../../../../services/external-sources/external-sources.service'; import { RequestItem } from '../../../../models/criteria/RequestItem'; import { TagModel } from '../../../../models/tags/TagModel'; import { ExternalSourcesItemModel } from '../../../../models/external-sources/ExternalSourcesItemModel'; @Component({ selector: 'app-datasets-criteria-component', templateUrl: './datasets-criteria.component.html', styleUrls: ['./datasets-criteria.component.scss'], providers: [ ExternalSourcesService ] }) export class DatasetCriteriaComponent extends BaseCriteriaComponent implements OnInit { // public form: ProjectType; // public formStatus: ProjectStatus; public criteria: DatasetCriteria = new DatasetCriteria(); public filteringTagsAsync: boolean = false; public filteredTags: ExternalSourcesItemModel[]; statuses = [ { value: '0', viewValue: 'Saved' }, { value: '1', viewValue: 'Finalised' } ]; constructor( public language: TranslateService, public formBuilder: FormBuilder, public externalSourcesService: ExternalSourcesService ) { super(new DatasetCriteriaErrorModel()); } ngOnInit() { super.ngOnInit(); if (this.criteria == null) { this.criteria = new DatasetCriteria(); } } setCriteria(criteria: DatasetCriteria): 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(); } } filterTags(value: string): void { this.filteredTags = undefined; if (value) { this.filteringTagsAsync = true; let requestItem: RequestItem = new RequestItem(); let criteria: TagsCriteria = new TagsCriteria(); criteria.like = value; requestItem.criteria = criteria; this.externalSourcesService.searchDatasetTags(requestItem).subscribe(items => { this.filteredTags = items; this.filteringTagsAsync = false; }); } } }