import { Component, Input } from '@angular/core'; import { UntypedFormGroup } from '@angular/forms'; import { DescriptionTemplate } from '@app/core/model/description-template/description-template'; import { Description } from '@app/core/model/description/description'; import { DmpBlueprintDefinitionSection } from '@app/core/model/dmp-blueprint/dmp-blueprint'; import { Dmp } from '@app/core/model/dmp/dmp'; import { DescriptionTemplateService } from '@app/core/services/description-template/description-template.service'; import { DescriptionService } from '@app/core/services/description/description.service'; import { DmpBlueprintService } from '@app/core/services/dmp/dmp-blueprint.service'; import { BaseComponent } from '@common/base/base.component'; import { takeUntil } from 'rxjs/operators'; @Component({ selector: 'app-description-base-fields-editor-component', templateUrl: 'description-base-fields-editor.component.html', styleUrls: ['./description-base-fields-editor.component.scss'] }) export class DescriptionBaseFieldsEditorComponent extends BaseComponent { @Input() formGroup: UntypedFormGroup; @Input() availableDescriptionTemplates: DescriptionTemplate[] = []; @Input() description: Description; viewOnly = false; //TODO: not used. constructor( private dmpBlueprintService: DmpBlueprintService, private descriptionTemplateService: DescriptionTemplateService, ) { super(); } ngOnInit() { const section: DmpBlueprintDefinitionSection = this.dmpBlueprintService.getSection(this.description.dmp.blueprint, this.description.dmpDescriptionTemplate.sectionId); const descriptionTemplateIds = section ? section.descriptionTemplates.map(x => x.descriptionTemplateId) : []; if (descriptionTemplateIds && descriptionTemplateIds.length > 0) { this.descriptionTemplateService.query(this.descriptionTemplateService.buildAutocompleteLookup(null, null, descriptionTemplateIds)) .pipe(takeUntil(this._destroyed)).subscribe(queryResult => { this.availableDescriptionTemplates = queryResult.items; }); } } public compareWith(object1: any, object2: any) { return object1 && object2 && object1.id === object2.id; } }