diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DataManagementPlanManager.java b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DataManagementPlanManager.java index ffbaab817..79f568611 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DataManagementPlanManager.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DataManagementPlanManager.java @@ -120,13 +120,13 @@ public class DataManagementPlanManager { .whenComplete((resultList, throwable) -> dataTable.setData(resultList)); } else { itemsFuture = pagedItems - .selectAsync(item -> new DataManagementPlanListingModel().fromDataModel(item)) + .selectAsync(item -> new DataManagementPlanListingModel().fromDataModelAssociatedProfiles(item)) .whenComplete((resultList, throwable) -> dataTable.setData(resultList)); } - CompletableFuture countFuture = authItems.countAsync().whenComplete((count, throwable) -> { - dataTable.setTotalCount(count); - }); + CompletableFuture countFuture = authItems.countAsync().whenComplete((count, throwable) -> + dataTable.setTotalCount(count) + ); CompletableFuture.allOf(itemsFuture, countFuture).join(); return dataTable; } diff --git a/dmp-backend/web/src/main/java/eu/eudat/models/data/listingmodels/DataManagementPlanListingModel.java b/dmp-backend/web/src/main/java/eu/eudat/models/data/listingmodels/DataManagementPlanListingModel.java index 8cc675975..bfb8bf1cc 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/models/data/listingmodels/DataManagementPlanListingModel.java +++ b/dmp-backend/web/src/main/java/eu/eudat/models/data/listingmodels/DataManagementPlanListingModel.java @@ -183,6 +183,14 @@ public class DataManagementPlanListingModel implements DataModel new AssociatedProfile().fromData(item)).collect(Collectors.toList()); + return this; + } + public DataManagementPlanListingModel fromDataModelDatasets(DMP entity) { this.fromDataModel(entity); this.status = entity.getStatus(); diff --git a/dmp-frontend/src/app/library/auto-complete/single/single-auto-complete-configuration.ts b/dmp-frontend/src/app/library/auto-complete/single/single-auto-complete-configuration.ts index e875ca976..97aedab67 100644 --- a/dmp-frontend/src/app/library/auto-complete/single/single-auto-complete-configuration.ts +++ b/dmp-frontend/src/app/library/auto-complete/single/single-auto-complete-configuration.ts @@ -26,6 +26,8 @@ export interface SingleAutoCompleteConfiguration { iconFn?: (item: any) => string; // Property for link on chip linkFn?: (item: any) => string; + // Disable option. + disableOption?: (item: any) => boolean; //Extra data passed to query function extraData?: any; // Callback to intercept value assignment based on item selection diff --git a/dmp-frontend/src/app/library/auto-complete/single/single-auto-complete.component.html b/dmp-frontend/src/app/library/auto-complete/single/single-auto-complete.component.html index 285df183f..abe733c08 100644 --- a/dmp-frontend/src/app/library/auto-complete/single/single-auto-complete.component.html +++ b/dmp-frontend/src/app/library/auto-complete/single/single-auto-complete.component.html @@ -12,7 +12,7 @@ - + {{_titleFn(item)}}
@@ -21,7 +21,7 @@
- + {{_titleFn(item)}}
diff --git a/dmp-frontend/src/app/library/auto-complete/single/single-auto-complete.component.ts b/dmp-frontend/src/app/library/auto-complete/single/single-auto-complete.component.ts index f46b9f625..2079b101a 100644 --- a/dmp-frontend/src/app/library/auto-complete/single/single-auto-complete.component.ts +++ b/dmp-frontend/src/app/library/auto-complete/single/single-auto-complete.component.ts @@ -151,6 +151,11 @@ export class SingleAutoCompleteComponent implements OnInit, MatFormFieldControl< return null; } + _disableOption(item: any): boolean { + if (this.configuration.disableOption && item) { return this.configuration.disableOption(item); } + return null; + } + _requestDelay(): number { return this.configuration.requestDelay || this.requestDelay; } diff --git a/dmp-frontend/src/app/ui/dataset/dataset-wizard/dataset-copy-dialogue/dataset-copy-dialogue.component.html b/dmp-frontend/src/app/ui/dataset/dataset-wizard/dataset-copy-dialogue/dataset-copy-dialogue.component.html index 4ca8fb416..a48b76f1b 100644 --- a/dmp-frontend/src/app/ui/dataset/dataset-wizard/dataset-copy-dialogue/dataset-copy-dialogue.component.html +++ b/dmp-frontend/src/app/ui/dataset/dataset-wizard/dataset-copy-dialogue/dataset-copy-dialogue.component.html @@ -1,21 +1,17 @@
-
+
+
{{'DATASET-WIZARD.DIALOGUE.TITLE' | translate}}
+
close
+
+
- + - - {{getErrorMessage()}} - +
-
-
-
- -
-
- -
+
+
+
diff --git a/dmp-frontend/src/app/ui/dataset/dataset-wizard/dataset-copy-dialogue/dataset-copy-dialogue.component.scss b/dmp-frontend/src/app/ui/dataset/dataset-wizard/dataset-copy-dialogue/dataset-copy-dialogue.component.scss index 30b14f9a7..20aec23ed 100644 --- a/dmp-frontend/src/app/ui/dataset/dataset-wizard/dataset-copy-dialogue/dataset-copy-dialogue.component.scss +++ b/dmp-frontend/src/app/ui/dataset/dataset-wizard/dataset-copy-dialogue/dataset-copy-dialogue.component.scss @@ -1,6 +1,11 @@ .confirmation-message { - padding-bottom: 20px; + padding-bottom: 20px; } + +.close-btn { + cursor: pointer; +} + .dataset-copy-dialog { - width: 350px; + margin-bottom: 1.125rem; } diff --git a/dmp-frontend/src/app/ui/dataset/dataset-wizard/dataset-copy-dialogue/dataset-copy-dialogue.component.ts b/dmp-frontend/src/app/ui/dataset/dataset-wizard/dataset-copy-dialogue/dataset-copy-dialogue.component.ts index 8457cd3e6..93b237741 100644 --- a/dmp-frontend/src/app/ui/dataset/dataset-wizard/dataset-copy-dialogue/dataset-copy-dialogue.component.ts +++ b/dmp-frontend/src/app/ui/dataset/dataset-wizard/dataset-copy-dialogue/dataset-copy-dialogue.component.ts @@ -11,6 +11,7 @@ import { DmpService } from "../../../../core/services/dmp/dmp.service"; import { Inject } from "@angular/core"; import { DmpModel } from "../../../../core/model/dmp/dmp"; import { TranslateService } from "@ngx-translate/core"; +import { DmpAssociatedProfileModel } from '../../../../core/model/dmp-profile/dmp-associated-profile'; @Component({ selector: 'dataset-copy-dialogue-component', @@ -21,6 +22,7 @@ export class DatasetCopyDialogueComponent { dmpAutoCompleteConfiguration: SingleAutoCompleteConfiguration; dmpModel: DmpModel; + datasetDescriptionTemplateLabel: String; constructor( public dialogRef: MatDialogRef, @@ -34,7 +36,9 @@ export class DatasetCopyDialogueComponent { filterFn: this.searchDmp.bind(this), initialItems: (extraData) => this.searchDmp(''), displayFn: (item) => item['label'], - titleFn: (item) => item['label'] + titleFn: (item) => item['label'], + disableOption: (item) => !this.existsDatasetDescriptionTemplate(item['associatedProfiles']), + subtitleFn: (item) => !this.existsDatasetDescriptionTemplate(item['associatedProfiles']) ? this.getErrorMessage() : null }; } @@ -62,6 +66,10 @@ export class DatasetCopyDialogueComponent { return this.dmpService.getPaged(dmpDataTableRequest, "autocomplete").pipe(map(x => x.data)); } + existsDatasetDescriptionTemplate(associatedProfiles: DmpAssociatedProfileModel[]): boolean { + return associatedProfiles.some((profile) => profile.id === this.data.datasetProfileId); + } + datasetProfileValidate() { return this.dmpService.getSingle(this.data.formControl.value.id).pipe(map(result => result as DmpModel), map(result => { @@ -86,4 +94,8 @@ export class DatasetCopyDialogueComponent { return false; } } + + close() { + this.dialogRef.close(false); + } } diff --git a/dmp-frontend/src/app/ui/misc/dataset-description-form/dataset-description-form.component.ts b/dmp-frontend/src/app/ui/misc/dataset-description-form/dataset-description-form.component.ts index a41d23d57..d20672e07 100644 --- a/dmp-frontend/src/app/ui/misc/dataset-description-form/dataset-description-form.component.ts +++ b/dmp-frontend/src/app/ui/misc/dataset-description-form/dataset-description-form.component.ts @@ -33,9 +33,9 @@ export class DatasetDescriptionFormComponent extends BaseComponent implements On ngOnChanges(changes: SimpleChanges) { // When the form is changed set stepper index to 0. - if (changes['form'] && !changes['form'].isFirstChange()) { + if (this.stepper && changes['form'] && !changes['form'].isFirstChange()) { this.stepper.selectedIndex = 0; - } else if (changes['linkToScroll'] && changes['linkToScroll'].currentValue) { + } else if (this.stepper && changes['linkToScroll'] && changes['linkToScroll'].currentValue) { if (changes['linkToScroll'].currentValue.page >= 0) { this.stepper.selectedIndex = changes['linkToScroll'].currentValue.page; } diff --git a/dmp-frontend/src/assets/i18n/en.json b/dmp-frontend/src/assets/i18n/en.json index d9fb49c56..0979f65a8 100644 --- a/dmp-frontend/src/assets/i18n/en.json +++ b/dmp-frontend/src/assets/i18n/en.json @@ -457,12 +457,13 @@ "UPLOAD-XML-FILE-CANCEL": "Cancel" }, "DIALOGUE": { + "TITLE": "Copy Dataset Description to DMP", "DMP-SEARCH": { "PLACEHOLDER": "Search DMP" }, "COPY": "Copy", "CANCEL": "Cancel", - "ERROR-MESSAGE": "Selected DMP does not contain this Dataset Description Template" + "ERROR-MESSAGE": "Does not contain this Dataset Description Template" } }, "DMP-OVERVIEW": {