argos/dmp-frontend/src/app/ui/reference/reference-field/reference-field.component.ts

325 lines
14 KiB
TypeScript

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<any> = 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);
// (<UntypedFormArray>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);
// (<UntypedFormArray>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);
// (<UntypedFormArray>this.formGroup.get('services')).push(serviceModel.buildForm());
// }
// tagsOnItemChange(event) {
// const tagModel = new ExternalTagEditorModel(event.id, event.name);
// (<UntypedFormArray>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);
// (<UntypedFormArray>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);
// (<UntypedFormArray>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);
// (<UntypedFormArray>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);
// (<UntypedFormArray>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);
// (<UntypedFormArray>this.formGroup.get('services')).push(serviceModel.buildForm());
// });
// }
// searchDatasetExternalDatasets(query: string, type: string): Observable<ExternalSourceItemModel[]> {
// const requestItem: RequestItem<ExternalDatasetCriteria> = 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<ExternalSourceItemModel[]> {
// const requestItem: RequestItem<DataRepositoryCriteria> = 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<ExternalSourceItemModel[]> {
// const requestItem: RequestItem<RegistryCriteria> = 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<ExternalSourceItemModel[]> {
// const requestItem: RequestItem<ServiceCriteria> = 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<ExternalSourceItemModel[]> {
// const requestItem: RequestItem<TagCriteria> = new RequestItem();
// requestItem.criteria = new TagCriteria();
// requestItem.criteria.like = query;
// requestItem.criteria.type = type;
// return this.externalSourcesService.searchDatasetTags(requestItem);
// }
// removeTag(tag: any) {
// (<UntypedFormArray>this.formGroup.get('tags')).removeAt(((<UntypedFormArray>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<ExternalSourceItemModel[]> {
// this.filteringTagsAsync = true;
// const requestItem: RequestItem<TagCriteria> = 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;
// }
// }
}