diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/utilities/documents/word/WordBuilder.java b/dmp-backend/web/src/main/java/eu/eudat/logic/utilities/documents/word/WordBuilder.java index 15e724c1f..340b7e413 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/utilities/documents/word/WordBuilder.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/utilities/documents/word/WordBuilder.java @@ -1047,8 +1047,6 @@ public class WordBuilder { } this.replaceTextSegment(p, "'{ARGOS.DMP.ORGANIZATIONS}'", organisationsNames, 15); - this.replaceTextSegment(p, "'{ARGOS.DMP.DESCRIPTION}'", "dfdsfsdf"); - if(this.textSegmentExists(p,"'{ARGOS.DMP.DESCRIPTION}'")) { descrParPos = parPos; descrPar = p; diff --git a/dmp-frontend/src/app/library/auto-complete/multiple/multiple-auto-complete-configuration.ts b/dmp-frontend/src/app/library/auto-complete/multiple/multiple-auto-complete-configuration.ts index 6c88bba4a..37a9422ed 100644 --- a/dmp-frontend/src/app/library/auto-complete/multiple/multiple-auto-complete-configuration.ts +++ b/dmp-frontend/src/app/library/auto-complete/multiple/multiple-auto-complete-configuration.ts @@ -37,5 +37,6 @@ export interface MultipleAutoCompleteConfiguration { autoSelectFirstOptionOnBlur?: boolean; appendClassToItem?: {class: string, applyFunc: (item:any) => boolean}[]; + canRemoveItem?: (selectedItem: any) => boolean; } diff --git a/dmp-frontend/src/app/library/auto-complete/multiple/multiple-auto-complete.component.ts b/dmp-frontend/src/app/library/auto-complete/multiple/multiple-auto-complete.component.ts index 11ad5b015..b69c9971b 100644 --- a/dmp-frontend/src/app/library/auto-complete/multiple/multiple-auto-complete.component.ts +++ b/dmp-frontend/src/app/library/auto-complete/multiple/multiple-auto-complete.component.ts @@ -483,6 +483,10 @@ export class MultipleAutoCompleteComponent extends _CustomComponentMixinBase imp if (event != null) { event.stopPropagation(); } + if (this.configuration.canRemoveItem != null && !this.configuration.canRemoveItem(item)) { + event.stopPropagation(); + return; + } const valueToDelete = this._valueToAssign(item); this.value = this.value.filter(x => this.stringify(x) !== this.stringify(valueToDelete)); //TODO, maybe we need to implement equality here differently. this.optionRemoved.emit(item); diff --git a/dmp-frontend/src/app/ui/dmp/dmp-editor-blueprint/dmp-editor-blueprint.component.html b/dmp-frontend/src/app/ui/dmp/dmp-editor-blueprint/dmp-editor-blueprint.component.html index 2566b9527..86db6db58 100644 --- a/dmp-frontend/src/app/ui/dmp/dmp-editor-blueprint/dmp-editor-blueprint.component.html +++ b/dmp-frontend/src/app/ui/dmp/dmp-editor-blueprint/dmp-editor-blueprint.component.html @@ -156,7 +156,7 @@
- {{'DMP-EDITOR.PLACEHOLDER.RESEARCHERS' | translate}} + {{field?.placeholder?.length > 0 ? field.placeholder : ('DMP-EDITOR.PLACEHOLDER.RESEARCHERS' | translate)}} @@ -174,7 +174,7 @@
- {{'DMP-EDITOR.PLACEHOLDER.ORGANIZATION' | translate}} + {{field?.placeholder?.length > 0 ? field.placeholder : ('DMP-EDITOR.PLACEHOLDER.ORGANIZATION' | translate)}} diff --git a/dmp-frontend/src/app/ui/dmp/dmp-editor-blueprint/dmp-editor-blueprint.component.ts b/dmp-frontend/src/app/ui/dmp/dmp-editor-blueprint/dmp-editor-blueprint.component.ts index 3306c0880..aca16be90 100644 --- a/dmp-frontend/src/app/ui/dmp/dmp-editor-blueprint/dmp-editor-blueprint.component.ts +++ b/dmp-frontend/src/app/ui/dmp/dmp-editor-blueprint/dmp-editor-blueprint.component.ts @@ -57,6 +57,7 @@ import { GrantEditorModel } from '@app/ui/grant/editor/grant-editor.model'; import { CheckDeactivateBaseComponent } from '@app/library/deactivate/deactivate.component'; import { DmpProfileStatus } from '@app/core/common/enum/dmp-profile-status'; import { DatasetService } from '@app/core/services/dataset/dataset.service'; +import { runInThisContext } from 'vm'; interface Visible { value: boolean; @@ -230,7 +231,8 @@ export class DmpEditorBlueprintComponent extends CheckDeactivateBaseComponent im displayFn: (item) => item['label'], titleFn: (item) => item['label'], subtitleFn: (item) => item['description'], - popupItemActionIcon: 'visibility' + popupItemActionIcon: 'visibility', + canRemoveItem: (item) => this.canRemoveItem(item) }; } @@ -1088,32 +1090,24 @@ export class DmpEditorBlueprintComponent extends CheckDeactivateBaseComponent im return false; } - onRemoveTemplate(event, sectionIndex: number) { + canRemoveItem(item): boolean { let found = false; - let profiles = this.formGroup.get('profiles').value as DmpDatasetProfile[]; this.formGroup.get('datasets')['controls'].forEach(element => { - if ((element.get('profile').value.id === event.id) && (element.get('dmpSectionIndex').value === sectionIndex)) { + if ((element.get('profile').value.id === item.id) && (element.get('dmpSectionIndex').value === (this.step - 1))) { found = true; this.uiNotificationService.snackBarNotification(this.language.instant('GENERAL.SNACK-BAR.UNSUCCESSFUL-REMOVE-TEMPLATE'), SnackBarNotificationLevel.Success); } }); - if (found) { - this.formGroup.get('profiles').setValue(profiles); - this.profilesAutoCompleteConfiguration = { - filterFn: this.filterProfiles.bind(this), - initialItems: (excludedItems: any[]) => this.filterProfiles('').pipe(map(result => result.filter(resultItem => (excludedItems || []).map(x => x.id).indexOf(resultItem.id) === -1))), - displayFn: (item) => item['label'], - titleFn: (item) => item['label'], - subtitleFn: (item) => item['description'], - popupItemActionIcon: 'visibility' - }; + if (found) return false + else return true; + } - } - else { - this.sectionTemplates[sectionIndex] = this.sectionTemplates[sectionIndex].filter(sectionProfile => sectionProfile.id !== event.id); - profiles = profiles.filter(sectionProfile => sectionProfile.descriptionTemplateId !== event.id); - this.formGroup.get('profiles').setValue(profiles); - } + + onRemoveTemplate(event, sectionIndex: number) { + let profiles = this.formGroup.get('profiles').value as DmpDatasetProfile[]; + this.sectionTemplates[sectionIndex] = this.sectionTemplates[sectionIndex].filter(sectionProfile => sectionProfile.id !== event.id); + profiles = profiles.filter(sectionProfile => sectionProfile.descriptionTemplateId !== event.id || !sectionProfile.data.dmpSectionIndex.includes(sectionIndex)); + this.formGroup.get('profiles').setValue(profiles); } addProfile(event, sectionIndex: number) { @@ -1149,7 +1143,7 @@ export class DmpEditorBlueprintComponent extends CheckDeactivateBaseComponent im if (result) { this.addProfile(event, sectionIndex); const items = this.sectionTemplates[sectionIndex]; - items.push({id: event.id, label: event.label, description: ""}); + items.push({ id: event.id, label: event.label, description: "" }); this.sectionTemplates[sectionIndex] = [...items]; } });