diff --git a/dmp-backend/web/src/main/java/eu/eudat/controllers/DMPs.java b/dmp-backend/web/src/main/java/eu/eudat/controllers/DMPs.java index ace8990cd..d385fd97d 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/controllers/DMPs.java +++ b/dmp-backend/web/src/main/java/eu/eudat/controllers/DMPs.java @@ -48,6 +48,14 @@ public class DMPs extends BaseController { this.dynamicProjectConfiguration = dynamicProjectConfiguration; } + @Transactional + @RequestMapping(method = RequestMethod.GET, value = {"/dmps/{id}/unlock"}, produces = "application/json") + public @ResponseBody + ResponseEntity> unlock(@PathVariable(value = "id") UUID id, Principal principal) throws Exception { + new DataManagementPlanManager().unlock(this.getApiContext(), id); + return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().status(ApiMessageCode.SUCCESS_MESSAGE).message("Unlocked")); + } + @RequestMapping(method = RequestMethod.POST, value = {"/dmps/getPaged"}, consumes = "application/json", produces = "application/json") public @ResponseBody ResponseEntity>> getPaged(@Valid @RequestBody DataManagementPlanTableRequest dataManagementPlanTableRequest, Principal principal) throws Exception { diff --git a/dmp-backend/web/src/main/java/eu/eudat/controllers/DatasetWizardController.java b/dmp-backend/web/src/main/java/eu/eudat/controllers/DatasetWizardController.java index 5e14ae06f..81a095192 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/controllers/DatasetWizardController.java +++ b/dmp-backend/web/src/main/java/eu/eudat/controllers/DatasetWizardController.java @@ -1,8 +1,11 @@ package eu.eudat.controllers; +import eu.eudat.data.entities.DMP; import eu.eudat.data.entities.Dataset; import eu.eudat.data.query.items.item.dataset.DatasetWizardAutocompleteRequest; import eu.eudat.data.query.items.item.datasetprofile.DatasetProfileWizardAutocompleteRequest; +import eu.eudat.exceptions.datasetwizard.DatasetWizardCannotUnlockException; +import eu.eudat.logic.managers.DataManagementPlanManager; import eu.eudat.logic.managers.DatasetManager; import eu.eudat.logic.managers.DatasetWizardManager; import eu.eudat.logic.security.claims.ClaimedAuthorities; @@ -30,6 +33,7 @@ import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.List; +import java.util.UUID; import static eu.eudat.types.Authorities.ANONYMOUS; @@ -116,4 +120,16 @@ public class DatasetWizardController extends BaseController { responseHeaders, HttpStatus.OK); } + + @Transactional + @RequestMapping(method = RequestMethod.GET, value = {"/{id}/unlock"}, produces = "application/json") + public @ResponseBody + ResponseEntity> unlock(@PathVariable(value = "id") UUID id, Principal principal) throws Exception { + try { + new DatasetWizardManager().unlock(this.getApiContext(), id); + return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().status(ApiMessageCode.SUCCESS_MESSAGE).message("Unlocked")); + }catch (DatasetWizardCannotUnlockException datasetWizardCannotUnlockException ){ + return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem().status(ApiMessageCode.ERROR_MESSAGE).message(datasetWizardCannotUnlockException.getMessage())); + } + } } diff --git a/dmp-backend/web/src/main/java/eu/eudat/exceptions/datasetwizard/DatasetWizardCannotUnlockException.java b/dmp-backend/web/src/main/java/eu/eudat/exceptions/datasetwizard/DatasetWizardCannotUnlockException.java new file mode 100644 index 000000000..83434eb27 --- /dev/null +++ b/dmp-backend/web/src/main/java/eu/eudat/exceptions/datasetwizard/DatasetWizardCannotUnlockException.java @@ -0,0 +1,22 @@ +package eu.eudat.exceptions.datasetwizard; + +/** + * Created by ikalyvas on 10/12/2018. + */ +public class DatasetWizardCannotUnlockException extends RuntimeException { + public DatasetWizardCannotUnlockException() { + super(); + } + + public DatasetWizardCannotUnlockException(String message, Throwable cause) { + super(message, cause); + } + + public DatasetWizardCannotUnlockException(String message) { + super(message); + } + + public DatasetWizardCannotUnlockException(Throwable cause) { + super(cause); + } +} \ No newline at end of file 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 1df23a2d9..b153291eb 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 @@ -74,6 +74,13 @@ public class DataManagementPlanManager { return dataTable; } + public void unlock(ApiContext apiContext, UUID uuid) throws Exception { + apiContext.getOperationsContext().getDatabaseRepository().getDmpDao() + .asQueryable().where((builder, root) -> builder.equal(root.get("id"), uuid)) + .update(root -> root.get("status"), DMP.DMPStatus.ACTIVE.getValue()); + return; + } + public eu.eudat.models.data.dmp.DataManagementPlan getSingle(DMPDao dmpsRepository, String id, Principal principal, DynamicProjectConfiguration dynamicProjectConfiguration) throws InstantiationException, IllegalAccessException { DMP dataManagementPlanEntity = dmpsRepository.find(UUID.fromString(id)); if (dataManagementPlanEntity.getCreator().getId() != principal.getId() && dataManagementPlanEntity.getUsers().stream().filter(userInfo -> userInfo.getId() == principal.getId()).collect(Collectors.toList()).size() == 0) diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DatasetWizardManager.java b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DatasetWizardManager.java index ac61b6f56..14db4bdff 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DatasetWizardManager.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DatasetWizardManager.java @@ -3,7 +3,10 @@ package eu.eudat.logic.managers; import eu.eudat.data.dao.entities.DMPDao; import eu.eudat.data.entities.DMP; +import eu.eudat.data.entities.Dataset; import eu.eudat.data.entities.UserInfo; +import eu.eudat.exceptions.datasetwizard.DatasetWizardCannotUnlockException; +import eu.eudat.logic.services.ApiContext; import eu.eudat.models.data.datasetwizard.DataManagentPlanListingModel; import eu.eudat.data.query.items.item.datasetprofile.DatasetProfileWizardAutocompleteRequest; import eu.eudat.data.query.items.item.dataset.DatasetWizardAutocompleteRequest; @@ -14,6 +17,7 @@ import eu.eudat.queryable.QueryableList; import java.util.LinkedList; import java.util.List; +import java.util.UUID; public class DatasetWizardManager { @@ -34,4 +38,12 @@ public class DatasetWizardManager { List profiles = dataManagementPlan.getProfiles(); return profiles; } + + public void unlock(ApiContext apiContext, UUID uuid) throws DatasetWizardCannotUnlockException { + Dataset dataset = apiContext.getOperationsContext().getDatabaseRepository().getDatasetDao().find(uuid); + if(dataset.getDmp().getStatus() == DMP.DMPStatus.FINALISED.getValue()) throw new DatasetWizardCannotUnlockException("To perform this action you will need to revert DMP's finalisation"); + dataset.setStatus(Dataset.Status.SAVED.getValue()); + apiContext.getOperationsContext().getDatabaseRepository().getDatasetDao().createOrUpdate(dataset); + return; + } } 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 0e36a7442..267b467e8 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 @@ -20,6 +20,7 @@ public class DataManagementPlanListingModel implements DataModel datasets; @@ -95,11 +96,20 @@ public class DataManagementPlanListingModel implements DataModel new Organisation().fromDataModel(item)).collect(Collectors.toList())); this.creationTime = entity.getCreated(); diff --git a/dmp-frontend/src/app/datasets/dataset-wizard/dataset-wizard.component.html b/dmp-frontend/src/app/datasets/dataset-wizard/dataset-wizard.component.html index d7a0738fc..610b20aba 100644 --- a/dmp-frontend/src/app/datasets/dataset-wizard/dataset-wizard.component.html +++ b/dmp-frontend/src/app/datasets/dataset-wizard/dataset-wizard.component.html @@ -1,10 +1,11 @@

{{ 'DATASET-WIZARD.TITLE.NEW' | translate }}

-

{{datasetWizardModel?.label}} {{ 'GENERAL.NAMES.DATASET' | translate }}

-

- {{ 'GENERAL.STATUSES.EDIT' | translate }}

-

- {{ 'GENERAL.STATUSES.FINALISED' | translate }}

- +
+

{{datasetWizardModel?.label}} {{ 'GENERAL.NAMES.DATASET' | translate }}

+

- {{ 'GENERAL.STATUSES.EDIT' | translate }}

+

- {{ 'GENERAL.STATUSES.FINALISED' | translate }}

+
diff --git a/dmp-frontend/src/app/datasets/dataset-wizard/dataset-wizard.component.ts b/dmp-frontend/src/app/datasets/dataset-wizard/dataset-wizard.component.ts index 3c08aa1bd..dd214ea75 100644 --- a/dmp-frontend/src/app/datasets/dataset-wizard/dataset-wizard.component.ts +++ b/dmp-frontend/src/app/datasets/dataset-wizard/dataset-wizard.component.ts @@ -470,10 +470,15 @@ export class DatasetWizardComponent implements OnInit, AfterViewInit, IBreadCrum } public enableForm() { - this.editMode = true; - this.viewOnly = false; - this.formGroup.enable(); - + if (this.formGroup.get('status').value !== DatasetStatus.Finalised) { + this.editMode = true; + this.formGroup.enable(); + } else { + this.datasetWizardService.unlock(this.formGroup.get('id').value).subscribe(x => { + this.editMode = true; + this.formGroup.enable(); + }); + } } public disableForm() { diff --git a/dmp-frontend/src/app/dmps/editor/dmp-editor.component.ts b/dmp-frontend/src/app/dmps/editor/dmp-editor.component.ts index e8f56c451..c12430ba1 100644 --- a/dmp-frontend/src/app/dmps/editor/dmp-editor.component.ts +++ b/dmp-frontend/src/app/dmps/editor/dmp-editor.component.ts @@ -9,7 +9,7 @@ import { FormGroup, FormControl } from '@angular/forms'; import { SnackBarNotificationComponent } from '../../shared/components/notificaiton/snack-bar-notification.component'; import { BaseErrorModel } from '../../models/error/BaseErrorModel'; import { DataManagementPlanService } from '../../services/data-management-plan/data-management-plan.service'; -import { DataManagementPlanModel } from '../../models/data-managemnt-plans/DataManagementPlanModel'; +import { DataManagementPlanModel, DataManagementPlanStatus } from '../../models/data-managemnt-plans/DataManagementPlanModel'; import { ExternalSourcesService } from '../../services/external-sources/external-sources.service'; import { ExternalSourcesItemModel } from '../../models/external-sources/ExternalSourcesItemModel'; import { RequestItem } from '../../models/criteria/RequestItem'; @@ -362,8 +362,15 @@ export class DataManagementPlanEditorComponent implements AfterViewInit, IBreadC } public enableForm() { - this.editMode = true; - this.formGroup.enable(); + if (this.formGroup.get('status').value !== DataManagementPlanStatus.Finalised) { + this.editMode = true; + this.formGroup.enable(); + } else { + this.dataManagementPlanService.unlock(this.formGroup.get('id').value).subscribe(x => { + this.editMode = true; + this.formGroup.enable(); + }); + } } public disableForm() { @@ -384,4 +391,6 @@ export class DataManagementPlanEditorComponent implements AfterViewInit, IBreadC } }); } + + } diff --git a/dmp-frontend/src/app/dmps/editor/dmp-finalise-dialog/dmp-finalise-dialog.component.html b/dmp-frontend/src/app/dmps/editor/dmp-finalise-dialog/dmp-finalise-dialog.component.html index b1f871734..669e15e03 100644 --- a/dmp-frontend/src/app/dmps/editor/dmp-finalise-dialog/dmp-finalise-dialog.component.html +++ b/dmp-frontend/src/app/dmps/editor/dmp-finalise-dialog/dmp-finalise-dialog.component.html @@ -1,23 +1,29 @@ -
+
- {{'DMP-FINALISE-DIALOG.ALREADY-FINALISED-DATASETS' | translate}} - - -
{{ dataset.label }}
-
-
- {{'DMP-FINALISE-DIALOG.FINALISE-TITLE' | translate}} - - - {{ dataset.label }} - - +
+ {{'DMP-FINALISE-DIALOG.ALREADY-FINALISED-DATASETS' | translate}} + + +
{{ dataset.label }}
+
+
+
+
+ {{'DMP-FINALISE-DIALOG.FINALISE-TITLE' | translate}} + + + {{ dataset.label }} + + +
+ {{'DMP-FINALISE-DIALOG.VALIDATION.AT-LEAST-ONE-DATASET-FINALISED' + | translate}}
-
diff --git a/dmp-frontend/src/app/dmps/editor/dmp-finalise-dialog/dmp-finalise-dialog.component.ts b/dmp-frontend/src/app/dmps/editor/dmp-finalise-dialog/dmp-finalise-dialog.component.ts index dde7cfde4..426e9d2d0 100644 --- a/dmp-frontend/src/app/dmps/editor/dmp-finalise-dialog/dmp-finalise-dialog.component.ts +++ b/dmp-frontend/src/app/dmps/editor/dmp-finalise-dialog/dmp-finalise-dialog.component.ts @@ -1,5 +1,5 @@ import { Component, OnInit, Inject, ViewChild } from '@angular/core'; -import { FormGroup } from '@angular/forms'; +import { FormGroup, FormBuilder, Validators, AbstractControl, FormControl, FormArray } from '@angular/forms'; import { ActivatedRoute, Router } from '@angular/router'; import { AuthService } from '../../../services/auth/auth.service'; import { MatDialogRef, MAT_DIALOG_DATA, MatSelectionList } from '@angular/material'; @@ -23,8 +23,8 @@ export class DMPFinaliseDialogComponent implements OnInit { public formGroup: FormGroup; public submitFunction: (items: DatasetListingModel[]) => any; public dmp: DataManagementPlanModel; - public datasetsFinalised: Observable; - public datasetsDraft: Observable; + public datasetsFinalised: DatasetListingModel[]; + public datasetsDraft: DatasetListingModel[]; constructor( public router: Router, public dialogRef: MatDialogRef, @@ -33,12 +33,11 @@ export class DMPFinaliseDialogComponent implements OnInit { ) { this.submitFunction = data['submitFunction']; this.dmp = data['dmp']; - this.initialiseDatasetFinalisedRequest(); - this.initialiseDMPFinalisedRequest(); } ngOnInit(): void { - + this.initialiseDatasetFinalisedRequest(); + this.initialiseDMPFinalisedRequest(); } initialiseDatasetFinalisedRequest() { @@ -46,7 +45,10 @@ export class DMPFinaliseDialogComponent implements OnInit { request.criteria = new DatasetCriteria(); request.criteria.dmpIds = [this.dmp.id]; request.criteria.status = DatasetStatus.Finalised; - this.datasetsFinalised = this.dmpService.getPaged(request).map(x => x.data); + this.dmpService.getPaged(request).map(x => x.data).subscribe(result => { + this.datasetsFinalised = result; + this.createFormGroup(); + }); } @@ -55,10 +57,45 @@ export class DMPFinaliseDialogComponent implements OnInit { request.criteria = new DatasetCriteria(); request.criteria.dmpIds = [this.dmp.id]; request.criteria.status = DatasetStatus.Draft; - this.datasetsDraft = this.dmpService.getPaged(request).map(x => x.data); + this.dmpService.getPaged(request).map(x => x.data).subscribe(result => { + this.datasetsDraft = result; + }); } - submit() { - this.submitFunction(this.selectionList.selectedOptions.selected.map(x => x.value)); + createFormGroup() { + this.formGroup = new FormBuilder().group({ + datasets: [this.datasetsFinalised, this.minLengthArray(1)] + }); + } + + onSubmit() { + //this.formGroup.get('datasets').patchValue(this.formGroup.get('datasets').value.push(this.selectionList.selectedOptions.selected.map(x => x.value))); + this.touchAllFormFields(this.formGroup); + if (!this.formGroup.valid) { return; } + this.submitFunction(this.formGroup.get('datasets').value); + } + + minLengthArray(min: number) { + return (c: AbstractControl): { [key: string]: any } => { + if (c.value.length >= min) { + return null; + } + return { 'minLengthArray': { valid: false } }; + }; + } + + public touchAllFormFields(formControl: AbstractControl) { + if (formControl instanceof FormControl) { + formControl.markAsTouched(); + } else if (formControl instanceof FormGroup) { + Object.keys(formControl.controls).forEach(item => { + const control = formControl.get(item); + this.touchAllFormFields(control); + }); + } else if (formControl instanceof FormArray) { + formControl.controls.forEach(item => { + this.touchAllFormFields(item); + }); + } } } diff --git a/dmp-frontend/src/app/dmps/listing/dmp-listing.component.html b/dmp-frontend/src/app/dmps/listing/dmp-listing.component.html index fa7f62d80..d0e16a003 100644 --- a/dmp-frontend/src/app/dmps/listing/dmp-listing.component.html +++ b/dmp-frontend/src/app/dmps/listing/dmp-listing.component.html @@ -1,86 +1,91 @@
-

{{'DMP-LISTING.TITLE' | translate}} {{titlePrefix}}

+

{{'DMP-LISTING.TITLE' | translate}} {{titlePrefix}}

- - - - - - + + + + + + - - - {{'DMP-LISTING.COLUMNS.NAME' | translate}} - {{row.label}} - + + + {{'DMP-LISTING.COLUMNS.NAME' | translate}} + {{row.label}} + - - - {{'DMP-LISTING.COLUMNS.PROJECT' | translate}} - {{row.project}} - + + + {{'DMP-LISTING.COLUMNS.PROJECT' | + translate}} + {{row.project}} + - - + + + {{'DMP-LISTING.COLUMNS.STATUS' | translate}} + {{this.utilities.convertFromDMPStatus(row.status)}} + - - - {{'DMP-LISTING.COLUMNS.CREATION-TIME' | translate}} - {{row.creationTime | date:'shortDate'}} - + + + {{'DMP-LISTING.COLUMNS.CREATION-TIME' | translate}} + {{row.creationTime | date:'shortDate'}} + - - - {{'DMP-LISTING.COLUMNS.ORGANISATIONS' | translate}} - {{row.organisations}} - + + + {{'DMP-LISTING.COLUMNS.ORGANISATIONS' | translate}} + {{row.organisations}} + - - - {{'DMP-LISTING.COLUMNS.LATEST_VERSION' | translate}} - {{row.version}} - + + + {{'DMP-LISTING.COLUMNS.LATEST_VERSION' | translate}} + {{row.version}} + - - - {{'DMP-LISTING.COLUMNS.DATASETS' | translate}} - - - - + + + {{'DMP-LISTING.COLUMNS.DATASETS' | translate}} + + + + - - {{'DMP-LISTING.COLUMNS.ACTIONS' | translate}} - - - - - - - - - - + + {{'DMP-LISTING.COLUMNS.ACTIONS' | translate}} + + + + + + + + + + - - + + - - - - + + + + - +
diff --git a/dmp-frontend/src/app/dmps/listing/dmp-listing.component.ts b/dmp-frontend/src/app/dmps/listing/dmp-listing.component.ts index a61e91e1c..3340c7e01 100644 --- a/dmp-frontend/src/app/dmps/listing/dmp-listing.component.ts +++ b/dmp-frontend/src/app/dmps/listing/dmp-listing.component.ts @@ -18,6 +18,7 @@ import { ProjectModel } from '../../models/projects/ProjectModel'; import { IBreadCrumbComponent } from '../../shared/components/breadcrumb/definition/IBreadCrumbComponent'; import { BreadcrumbItem } from '../../shared/components/breadcrumb/definition/breadcrumb-item'; import { JsonSerializer } from '../../utilities/JsonSerializer'; +import { Utilities } from '../../utilities/utilities'; @@ -25,6 +26,7 @@ import { JsonSerializer } from '../../utilities/JsonSerializer'; selector: 'app-dmp-listing-component', templateUrl: 'dmp-listing.component.html', styleUrls: ['./dmp-listing.component.scss'], + providers: [Utilities] }) export class DataManagementPlanListingComponent implements OnInit, IBreadCrumbComponent { @@ -36,7 +38,7 @@ export class DataManagementPlanListingComponent implements OnInit, IBreadCrumbCo breadCrumbs: Observable = Observable.of([]); dataSource: DataManagementPlanDataSource | null; - displayedColumns: String[] = ['name', 'project', 'creationTime', 'organisations', 'version', 'datasets', 'actions']; + displayedColumns: String[] = ['name', 'project', 'status', 'creationTime', 'organisations', 'version', 'datasets', 'actions']; itemId: string; projectId: string; showProject: boolean; @@ -47,7 +49,8 @@ export class DataManagementPlanListingComponent implements OnInit, IBreadCrumbCo private route: ActivatedRoute, private languageService: TranslateService, public snackBar: MatSnackBar, - public dialog: MatDialog + public dialog: MatDialog, + public utilities: Utilities ) { } diff --git a/dmp-frontend/src/app/models/data-managemnt-plans/DataManagementPlanListingModel.ts b/dmp-frontend/src/app/models/data-managemnt-plans/DataManagementPlanListingModel.ts index 9eb07bb91..a312c8890 100644 --- a/dmp-frontend/src/app/models/data-managemnt-plans/DataManagementPlanListingModel.ts +++ b/dmp-frontend/src/app/models/data-managemnt-plans/DataManagementPlanListingModel.ts @@ -1,8 +1,10 @@ import { Serializable } from '../Serializable'; +import { DataManagementPlanStatus } from './DataManagementPlanModel'; export class DataManagementPlanListingModel implements Serializable { public id: String; public label: String; + public status: DataManagementPlanStatus; public project: String; public profile: String; public creationTime: String; @@ -14,6 +16,7 @@ export class DataManagementPlanListingModel implements Serializable { public id: string; public label: string; diff --git a/dmp-frontend/src/app/services/data-management-plan/data-management-plan.service.ts b/dmp-frontend/src/app/services/data-management-plan/data-management-plan.service.ts index f9a87d77c..5caa2e82b 100644 --- a/dmp-frontend/src/app/services/data-management-plan/data-management-plan.service.ts +++ b/dmp-frontend/src/app/services/data-management-plan/data-management-plan.service.ts @@ -37,6 +37,9 @@ export class DataManagementPlanService { return this.http.get(this.actionUrl + 'getSingle/' + id, { headers: this.headers }); } + unlock(id: String): Observable { + return this.http.get(this.actionUrl + id + '/unlock', { headers: this.headers }); + } createDataManagementPlan(dataManagementPlanModel: DataManagementPlanModel): Observable { return this.http.post(this.actionUrl + 'createOrUpdate', dataManagementPlanModel, { headers: this.headers }); } diff --git a/dmp-frontend/src/app/services/dataset-wizard/dataset-wizard.service.ts b/dmp-frontend/src/app/services/dataset-wizard/dataset-wizard.service.ts index 9f4bef195..6a609478a 100644 --- a/dmp-frontend/src/app/services/dataset-wizard/dataset-wizard.service.ts +++ b/dmp-frontend/src/app/services/dataset-wizard/dataset-wizard.service.ts @@ -56,4 +56,8 @@ export class DatasetWizardService { public getDefinition(id: String): Observable { return this.http.get(this.actionUrl + 'get/' + id, { headers: this.headers }); } + + unlock(id: String): Observable { + return this.http.get(this.actionUrl + id + '/unlock', { headers: this.headers }); + } } diff --git a/dmp-frontend/src/app/utilities/utilities.ts b/dmp-frontend/src/app/utilities/utilities.ts index bbdcbd008..393e4d9f3 100644 --- a/dmp-frontend/src/app/utilities/utilities.ts +++ b/dmp-frontend/src/app/utilities/utilities.ts @@ -4,6 +4,7 @@ import { Principal } from '../models/login/Principal'; import { DMPProfileFieldDataType, DMPProfileType } from '../models/data-management-plan-profile/DataManagementProfileField'; import { DatasetStatus } from '../models/datasets/DatasetWizardModel'; import { TranslateService } from '@ngx-translate/core'; +import { DataManagementPlanStatus } from '../models/data-managemnt-plans/DataManagementPlanModel'; @Injectable() export class Utilities { @@ -39,6 +40,12 @@ export class Utilities { case DatasetStatus.Draft: return this.language.instant('TYPES.DATASET-STATUS.DRAFT'); case DatasetStatus.Finalised: return this.language.instant('TYPES.DATASET-STATUS.FINALISED'); } + } + convertFromDMPStatus(status: DataManagementPlanStatus): string { + switch (status) { + case DataManagementPlanStatus.Draft: return this.language.instant('TYPES.DMP.DRAFT'); + case DataManagementPlanStatus.Finalised: return this.language.instant('TYPES.DMP.FINALISED'); + } } } diff --git a/dmp-frontend/src/assets/lang/en.json b/dmp-frontend/src/assets/lang/en.json index 1b023f958..b12fbfd79 100644 --- a/dmp-frontend/src/assets/lang/en.json +++ b/dmp-frontend/src/assets/lang/en.json @@ -61,7 +61,8 @@ "ORGANISATIONS": "Organisations", "LATEST_VERSION": "Latest Version", "ACTIONS": "Actions", - "DATASETS": "Datasets" + "DATASETS": "Datasets", + "STATUS": "Status" }, "ACTIONS": { "EDIT": "Edit", @@ -289,6 +290,10 @@ "EXTERNAL-DATASET-TYPE": { "SOURCE": "Source", "OUTPUT": "Output" + }, + "DMP": { + "FINALISED": "Finalised", + "DRAFT": "Draft" } }, "ADDRESEARCHERS-EDITOR": { @@ -414,6 +419,9 @@ "SUBMIT": "Submit", "FINALISE-TITLE": "Do you want to finalise any of the following Datasets?", "ALREADY-FINALISED-DATASETS": "Already Finalised Datasets", - "NONE": "None" + "NONE": "None", + "VALIDATION": { + "AT-LEAST-ONE-DATASET-FINALISED": "You need to have at least one Dataset Finalised" + } } }