import { Component, Input, OnInit } from '@angular/core'; import { UntypedFormGroup } from '@angular/forms'; import { ReferenceType } from '@app/core/common/enum/reference-type'; import { ReferenceService } from '@app/core/services/reference/reference.service'; import { EnumUtils } from '@app/core/services/utilities/enum-utils.service'; import { MultipleAutoCompleteConfiguration } from '@app/library/auto-complete/multiple/multiple-auto-complete-configuration'; import { BaseComponent } from '@common/base/base.component'; @Component({ selector: 'app-reference-field-component', templateUrl: 'reference-field.component.html', styleUrls: ['./reference-field.component.scss'] }) export class ReferenceFieldComponent extends BaseComponent implements OnInit { @Input() referenceType: ReferenceType = null; @Input() form: UntypedFormGroup = null; multipleAutoCompleteSearchConfiguration: MultipleAutoCompleteConfiguration; // referenceTypeEnum = ReferenceType; // @Input() viewOnly = false; // @Output() formChanged: EventEmitter = new EventEmitter(); // public filteringTagsAsync = false; // public filteredTags: ExternalSourceItemModel[]; // readonly separatorKeysCodes: number[] = [ENTER, COMMA]; // externalDatasetAutoCompleteConfiguration: SingleAutoCompleteConfiguration = { // filterFn: this.searchDatasetExternalDatasets.bind(this), // initialItems: (type) => this.searchDatasetExternalDatasets('', type),//.filter(resultItem => (excludedItems || []).map(x => x.id).indexOf(resultItem.id) === -1), // displayFn: (item) => item ? item.name : null, // titleFn: (item) => item ? item.name : null, // subtitleFn: (item) => item.source ? this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.SOURCE:') + item.source : item.tag ? this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.SOURCE:') + item.tag : this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.NO-SOURCE') // }; // registriesAutoCompleteConfiguration: SingleAutoCompleteConfiguration = { // filterFn: this.searchDatasetExternalRegistries.bind(this), // initialItems: (type) => this.searchDatasetExternalRegistries('', type), // displayFn: (item) => item ? item.name : null, // titleFn: (item) => item ? item.name : null, // subtitleFn: (item) => item.source ? this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.SOURCE:') + item.source : item.tag ? this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.SOURCE:') + item.tag : this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.NO-SOURCE') // }; // dataRepositoriesAutoCompleteConfiguration: SingleAutoCompleteConfiguration = { // filterFn: this.searchDatasetExternalDataRepositories.bind(this), // initialItems: (type) => this.searchDatasetExternalDataRepositories('', type), // displayFn: (item) => item ? item.name : null, // titleFn: (item) => item ? item.name : null, // subtitleFn: (item) => item.source ? this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.SOURCE:') + item.source : item.tag ? this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.SOURCE:') + item.tag : this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.NO-SOURCE') // }; // servicesAutoCompleteConfiguration: SingleAutoCompleteConfiguration = { // filterFn: this.searchDatasetExternalServices.bind(this), // initialItems: (type) => this.searchDatasetExternalServices('', type), // displayFn: (item) => item ? item.label : null, // titleFn: (item) => item ? item.label : null, // subtitleFn: (item) => item.source ? this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.SOURCE:') + item.source : item.tag ? this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.SOURCE:') + item.tag : this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.NO-SOURCE') // }; // tagsAutoCompleteConfiguration: MultipleAutoCompleteConfiguration = { // filterFn: this.filterTags.bind(this), // initialItems: (excludedItems: any[]) => this.filterTags('').pipe(map(result => result.filter(resultItem => (excludedItems || []).map(x => x.id).indexOf(resultItem.id) === -1))), // displayFn: (item) => this.showTag(item), // titleFn: (item) => item['name'], // valueAssign: (item) => this.addTag(item) // }; // externalSourcesConfiguration: ExternalSourcesConfiguration; // // new AutoCompleteConfiguration(this.externalSourcesService.searchDatasetRepository.bind(this.externalSourcesService), constructor( // private dialog: MatDialog, // private router: Router, // private language: TranslateService, // private externalSourcesService: ExternalSourcesService, // private externalSourcesConfigurationService: ExternalSourcesConfigurationService, // private externalDataRepositoryService: ExternalDataRepositoryService, // private externalDatasetService: ExternalDatasetService, // private externalRegistryService: ExternalRegistryService, private referenceService: ReferenceService, public enumUtils: EnumUtils, ) { super(); } ngOnInit() { this.multipleAutoCompleteSearchConfiguration = this.referenceService.getMultipleAutoCompleteSearchConfiguration(this.referenceType); // this.externalSourcesConfigurationService.getExternalSourcesConfiguration() // .pipe(takeUntil(this._destroyed)) // .subscribe(result => { // this.externalSourcesConfiguration = result; // this.externalSourcesConfiguration.dataRepositories.push({ key: '', label: 'All' }); // this.externalSourcesConfiguration.externalDatasets.push({ key: '', label: 'All' }); // this.externalSourcesConfiguration.registries.push({ key: '', label: 'All' }); // this.externalSourcesConfiguration.services.push({ key: '', label: 'All' }); // if (!isNullOrUndefined(this.externalSourcesConfiguration.tags)) { // this.externalSourcesConfiguration.tags.push({ key: '', label: 'All' }); // } else { // this.externalSourcesConfiguration.tags = [{ key: '', label: 'All' }]; // } // }); // this.formGroup.valueChanges // .pipe(takeUntil(this._destroyed)) // .subscribe(val => { // this.formChanged.emit(val); // }); } // public cancel(): void { // this.router.navigate(['/datasets']); // } // externalDatasetsOnItemChange(event) { // const externalDatasetModel = new ExternalDatasetEditorModel(event.id, event.abbreviation, event.name, event.pid ? event.pid : event.reference, event.source); // (this.formGroup.get('externalDatasets')).push(externalDatasetModel.buildForm()); // } // registriesOnItemChange(event) { // const registryModel = new ExternalRegistryEditorModel(event.abbreviation, event.definition, event.id, event.name, event.pid ? event.pid : event.reference, event.uri, event.source); // (this.formGroup.get('registries')).push(registryModel.buildForm()); // } // servicesOnItemChange(event) { // const serviceModel = new ExternalServiceEditorModel(event.abbreviation, event.definition, event.id, event.label, event.reference, event.uri); // (this.formGroup.get('services')).push(serviceModel.buildForm()); // } // tagsOnItemChange(event) { // const tagModel = new ExternalTagEditorModel(event.id, event.name); // (this.formGroup.get('tags')).push(tagModel.buildForm()); // } // dataRepositoriesOnItemChange(event) { // const dataRepositoryModel = new ExternalDataRepositoryEditorModel(event.id, event.name, event.abbreviation, event.uri, event.pid, event.source); // (this.formGroup.get('dataRepositories')).push(dataRepositoryModel.buildForm()); // } // addDataRepository() { // const dialogRef = this.dialog.open(DatasetExternalDataRepositoryDialogEditorComponent, { // width: '500px', // restoreFocus: false, // data: {} // }); // dialogRef.afterClosed() // .pipe(takeUntil(this._destroyed)) // .subscribe(result => { // if (!result) { return; } // const dataRepositoryModel = new ExternalDataRepositoryEditorModel(result.id, result.name, result.abbreviation, result.uri, result.pid, result.source); // (this.formGroup.get('dataRepositories')).push(dataRepositoryModel.buildForm()); // }); // } // addRegistry() { // const dialogRef = this.dialog.open(DatasetExternalRegistryDialogEditorComponent, { // width: '500px', // restoreFocus: false, // data: {} // }); // dialogRef.afterClosed() // .pipe(takeUntil(this._destroyed)) // .subscribe(result => { // if (!result) { return; } // const registryModel = new ExternalRegistryEditorModel(result.abbreviation, result.definition, result.id, result.label, result.reference, result.uri, result.source); // (this.formGroup.get('registries')).push(registryModel.buildForm()); // }); // } // addExternalDataset() { // const dialogRef = this.dialog.open(DatasetExternalDatasetDialogEditorComponent, { // width: '500px', // restoreFocus: false, // data: {} // }); // dialogRef.afterClosed() // .pipe(takeUntil(this._destroyed)) // .subscribe(result => { // if (!result) { return; } // const externalDatasetModel = new ExternalDatasetEditorModel(result.id, result.abbreviation, result.name, result.reference, result.source); // (this.formGroup.get('externalDatasets')).push(externalDatasetModel.buildForm()); // }); // } // addService() { // const dialogRef = this.dialog.open(DatasetExternalServiceDialogEditorComponent, { // width: '500px', // restoreFocus: false, // data: {} // }); // dialogRef.afterClosed() // .pipe(takeUntil(this._destroyed)) // .subscribe(result => { // if (!result) { return; } // const serviceModel = new ExternalServiceEditorModel(result.abbreviation, result.definition, result.id, result.label, result.reference, result.uri, result.source); // (this.formGroup.get('services')).push(serviceModel.buildForm()); // }); // } // searchDatasetExternalDatasets(query: string, type: string): Observable { // const requestItem: RequestItem = new RequestItem(); // requestItem.criteria = new ExternalDatasetCriteria(); // requestItem.criteria.like = query; // requestItem.criteria.type = type; // return this.externalSourcesService.searchDatasetSExternalDatasetservice(requestItem); // } // searchDatasetExternalDataRepositories(query: string, type: string): Observable { // const requestItem: RequestItem = new RequestItem(); // requestItem.criteria = new DataRepositoryCriteria(); // requestItem.criteria.like = query; // requestItem.criteria.type = type; // return this.externalSourcesService.searchDatasetRepository(requestItem); // } // searchDatasetExternalRegistries(query: string, type: string): Observable { // const requestItem: RequestItem = new RequestItem(); // requestItem.criteria = new RegistryCriteria(); // requestItem.criteria.like = query; // requestItem.criteria.type = type; // return this.externalSourcesService.searchDatasetRegistry(requestItem); // } // searchDatasetExternalServices(query: string, type: string): Observable { // const requestItem: RequestItem = new RequestItem(); // requestItem.criteria = new ServiceCriteria(); // requestItem.criteria.like = query; // requestItem.criteria.type = type; // return this.externalSourcesService.searchDatasetService(requestItem); // } // searchDatasetTags(query: string, type: string): Observable { // const requestItem: RequestItem = new RequestItem(); // requestItem.criteria = new TagCriteria(); // requestItem.criteria.like = query; // requestItem.criteria.type = type; // return this.externalSourcesService.searchDatasetTags(requestItem); // } // removeTag(tag: any) { // (this.formGroup.get('tags')).removeAt(((this.formGroup.get('tags')).value as any[]).indexOf(tag)); // } // addTag(ev: any) { // let item: ExternalTagEditorModel; // //this.filteredTags = this.formGroup.get('tags').value; // if (typeof ev === 'string') { // item = new ExternalTagEditorModel('', ev); // } else { // item = ev; // } // if (item.name !== '' ) { // return item; // } // } // isInternal(element: any): boolean { // if (element.get('source') == null) { // // console.log(element); // } // return element.get('source').value === 'Internal'; // } // updateDataRepository(dataRepository: UntypedFormGroup) { // this.externalDataRepositoryService.create(dataRepository.value) // .pipe(takeUntil(this._destroyed)) // .subscribe( // (result) => { // dataRepository.setValue(result); // } // ); // } // updateExternalDataset(externalDataset: UntypedFormGroup) { // this.externalDatasetService.create(externalDataset.value) // .pipe(takeUntil(this._destroyed)) // .subscribe( // (result) => { // externalDataset.setValue(result); // } // ); // } // updateRegistry(registry: UntypedFormGroup) { // this.externalRegistryService.create(registry.value) // .pipe(takeUntil(this._destroyed)) // .subscribe( // (result) => { // registry.setValue(result); // } // ); // } // updateService(service: UntypedFormGroup) { // this.externalServiceService.create(service.value) // .pipe(takeUntil(this._destroyed)) // .subscribe( // (result) => { // service.setValue(result); // } // ); // } // filterTags(value: string): Observable { // this.filteringTagsAsync = true; // const requestItem: RequestItem = new RequestItem(); // const criteria: TagCriteria = new TagCriteria(); // criteria.like = value; // requestItem.criteria = criteria; // return this.externalSourcesService.searchDatasetTags(requestItem); // } // showTag(ev: any) { // if (typeof ev === 'string') { // return ev; // } else { // return ev.name; // } // } }