argos/dmp-frontend/src/app/form/dynamic-fields/dynamic-field-autocomplete/autocomplete-remote.compone...

62 lines
2.2 KiB
TypeScript
Raw Normal View History

2017-11-27 14:40:16 +01:00
import { Field } from '../../../models/Field';
2017-12-06 12:39:49 +01:00
import { Component, OnInit, Input, Output, EventEmitter, forwardRef, ViewEncapsulation } from '@angular/core';
2017-11-27 14:40:16 +01:00
import { ControlValueAccessor, FormControl, FormGroup, NG_VALUE_ACCESSOR, Validators } from '@angular/forms';
2018-05-14 08:44:35 +02:00
import { DatasetProfileService } from '../../../services/dataset-profile.service';
2018-03-08 11:54:56 +01:00
import { ActivatedRoute } from '@angular/router';
2018-05-14 08:44:35 +02:00
import { RequestItem } from '../../../models/criteria/RequestItem';
import { BaseCriteria } from '../../../models/criteria/BaseCriteria';
2018-06-27 12:29:21 +02:00
import { AutocompleteLookupItem } from '../../../models/auto-complete/AutocompleteLookupItem';
2018-07-24 13:19:52 +02:00
import { AutoCompleteConfiguration } from '../../../shared/components/auto-complete/AutoCompleteConfiguration';
2017-11-27 14:40:16 +01:00
declare var $: any;
@Component({
2018-10-05 17:00:54 +02:00
selector: 'app-df-autocomplete',
templateUrl: './autocomplete-remote.component.html',
styleUrls: ['./autocomplete-remote.component.css'],
encapsulation: ViewEncapsulation.None,
2017-11-27 14:40:16 +01:00
})
export class AutocompleteRemoteComponent implements OnInit/* , ControlValueAccessor */ {
2018-10-05 17:00:54 +02:00
@Input() field: Field;
@Input() disabled = false;
@Input() form: FormGroup;
2017-11-27 14:40:16 +01:00
2018-10-05 17:00:54 +02:00
public autoCompleteConfiguration: AutoCompleteConfiguration;
public loading: boolean;
public datasetId;
public values: any[] = new Array();
public typeaheadMS = 1400;
2017-12-06 12:39:49 +01:00
2018-10-05 17:00:54 +02:00
constructor(private datasetProfileService: DatasetProfileService, route: ActivatedRoute) {
this.datasetId = route.snapshot.params['id'];
}
2017-11-27 14:40:16 +01:00
2018-10-05 17:00:54 +02:00
ngOnInit() {
const autocompleteRequestItem: RequestItem<AutocompleteLookupItem> = new RequestItem();
autocompleteRequestItem.criteria = new AutocompleteLookupItem();
autocompleteRequestItem.criteria.fieldID = this.field.id;
autocompleteRequestItem.criteria.profileID = this.datasetId;
this.autoCompleteConfiguration = new AutoCompleteConfiguration(this.datasetProfileService.queryAutocomplete.bind(this.datasetProfileService), autocompleteRequestItem);
2017-11-27 14:40:16 +01:00
2018-10-05 17:00:54 +02:00
}
2017-11-27 14:40:16 +01:00
2018-10-05 17:00:54 +02:00
displayWith(item: any) {
if (!item) { return null; }
if (typeof item === 'string') { item = this.transform(item); }
return item['label'];
}
2017-11-27 14:40:16 +01:00
2018-10-05 17:00:54 +02:00
assign(item: any) {
if (!item) { return null; }
return this.transform(item);
}
2017-11-27 14:40:16 +01:00
2018-10-05 17:00:54 +02:00
transform(item: any) {
if (typeof item === 'string') { return JSON.parse(item); } else { return JSON.stringify(item); }
}
2017-11-27 14:40:16 +01:00
}