diff --git a/dmp-frontend/src/app/ui/dmp/dmp-editor-blueprint/dmp-editor.component.html b/dmp-frontend/src/app/ui/dmp/dmp-editor-blueprint/dmp-editor.component.html
index b92da98a1..bfb3efd29 100644
--- a/dmp-frontend/src/app/ui/dmp/dmp-editor-blueprint/dmp-editor.component.html
+++ b/dmp-frontend/src/app/ui/dmp/dmp-editor-blueprint/dmp-editor.component.html
@@ -299,6 +299,7 @@
{{'DMP-EDITOR.FIELDS.DESCRIPTION-TEMPLATES' | translate}}
{{'DMP-EDITOR.FIELDS.DESCRIPTION-TEMPLATES-HINT' | translate}}
+
{{formGroup.get('descriptionTemplates').get(section.id).getError('backendError').message}}
diff --git a/dmp-frontend/src/app/ui/dmp/dmp-editor-blueprint/dmp-editor.component.ts b/dmp-frontend/src/app/ui/dmp/dmp-editor-blueprint/dmp-editor.component.ts
index 7f9618d8d..07290e5a4 100644
--- a/dmp-frontend/src/app/ui/dmp/dmp-editor-blueprint/dmp-editor.component.ts
+++ b/dmp-frontend/src/app/ui/dmp/dmp-editor-blueprint/dmp-editor.component.ts
@@ -51,6 +51,8 @@ import { DmpEditorModel, DmpFieldIndicator } from './dmp-editor.model';
import { DmpEditorResolver } from './dmp-editor.resolver';
import { DmpEditorService } from './dmp-editor.service';
import { DescriptionTemplatePreviewDialogComponent } from '@app/ui/admin/description-template/description-template-preview/description-template-preview-dialog.component';
+import { DescriptionTemplate } from '@app/core/model/description-template/description-template';
+import { MultipleAutoCompleteConfiguration } from '@app/library/auto-complete/multiple/multiple-auto-complete-configuration';
@Component({
selector: 'app-dmp-editor',
@@ -93,6 +95,20 @@ export class DmpEditorComponent extends BaseEditor implemen
valueAssign: (item: DmpBlueprint) => item.id,
};
+ getDescriptionTemplateMultipleAutoCompleteConfiguration(sectionId: Guid): MultipleAutoCompleteConfiguration {
+ return {
+ initialItems: (excludedItems: any[], data?: any) => this.descriptionTemplateService.query(this.descriptionTemplateService.buildDescriptionTempalteGroupAutocompleteLookup(null, excludedItems ? excludedItems : null)).pipe(map(x => x.items)),
+ filterFn: (searchQuery: string, excludedItems: any[]) => this.descriptionTemplateService.query(this.descriptionTemplateService.buildDescriptionTempalteGroupAutocompleteLookup(searchQuery, excludedItems)).pipe(map(x => x.items)),
+ getSelectedItems: (selectedItems: any[]) => this.descriptionTemplateService.query(this.descriptionTemplateService.buildDescriptionTempalteGroupAutocompleteLookup(null, null, selectedItems)).pipe(map(x => x.items)),
+ displayFn: (item: DescriptionTemplate) => item.label,
+ titleFn: (item: DescriptionTemplate) => item.label,
+ subtitleFn: (item: DescriptionTemplate) => item.description,
+ valueAssign: (item: DescriptionTemplate) => item.groupId,
+ canRemoveItem: (item: DescriptionTemplate) => this.canRemoveDescriptionTemplate(item, sectionId),
+ popupItemActionIcon: 'visibility'
+ }
+ };
+
sectionToFieldsMap: Map = new Map();
protected get canDelete(): boolean {
@@ -620,6 +636,23 @@ export class DmpEditorComponent extends BaseEditor implemen
}
}
+ canRemoveDescriptionTemplate(item: DescriptionTemplate, sectionId){
+ if(item){
+ const descriptionsInSection = this.descriptionsInSection(sectionId);
+
+ if (descriptionsInSection && descriptionsInSection.length > 0){
+ for (let index = 0; index < descriptionsInSection.length; index++) {
+ const description = descriptionsInSection[index];
+ if(description.dmpDescriptionTemplate?.descriptionTemplateGroupId === item.groupId) {
+ return {canRemove: false,
+ message: 'DMP-EDITOR.UNSUCCESSFUL-REMOVE-TEMPLATE'
+ } as CanRemoveDescriptionTemplate
+ }
+ }
+ }
+ }
+ }
+
//
//
// Misc
@@ -633,3 +666,8 @@ export class DmpEditorComponent extends BaseEditor implemen
return this.languageInfoService.getLanguageInfoValues();
}
}
+
+export interface CanRemoveDescriptionTemplate {
+ canRemove: boolean;
+ message: string;
+}