diff --git a/dmp-backend/data/src/main/java/eu/eudat/data/entities/Dataset.java b/dmp-backend/data/src/main/java/eu/eudat/data/entities/Dataset.java index f723997a2..0494b2316 100644 --- a/dmp-backend/data/src/main/java/eu/eudat/data/entities/Dataset.java +++ b/dmp-backend/data/src/main/java/eu/eudat/data/entities/Dataset.java @@ -80,7 +80,7 @@ public class Dataset implements DataEntity { @ManyToOne(fetch = FetchType.LAZY) // @Cascade(value=org.hibernate.annotations.CascadeType.ALL) - @JoinColumn(name = "\"DMP\"", nullable = true) + @JoinColumn(name = "\"DMP\"", nullable = false) private DMP dmp; diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/ResearcherManager.java b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/ResearcherManager.java index c0aabc0fa..724d1e7ba 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/ResearcherManager.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/ResearcherManager.java @@ -28,7 +28,7 @@ public class ResearcherManager { QueryableList items = apiContext.getOperationsContext().getDatabaseRepository().getResearcherDao().getWithCriteria(researcherCriteriaRequest.getCriteria()); List researchers = items.select(item -> new eu.eudat.models.data.dmp.Researcher().fromDataModel(item)); - List> remoteRepos = remoteFetcher.getResearchers(researcherCriteriaRequest.getCriteria().getLike(),null); + List> remoteRepos = remoteFetcher.getResearchers(researcherCriteriaRequest.getCriteria().getName(),null); ResearchersExternalSourcesModel researchersExternalSourcesModel = new ResearchersExternalSourcesModel().fromExternalItem(remoteRepos); for (ExternalSourcesItemModel externalListingItem : researchersExternalSourcesModel) { eu.eudat.models.data.dmp.Researcher researcher = apiContext.getOperationsContext().getBuilderFactory().getBuilder(ResearcherBuilder.class) diff --git a/dmp-backend/web/src/main/resources/ProjectConfiguration.xml b/dmp-backend/web/src/main/resources/ProjectConfiguration.xml index 8016d483e..f52b78ba1 100644 --- a/dmp-backend/web/src/main/resources/ProjectConfiguration.xml +++ b/dmp-backend/web/src/main/resources/ProjectConfiguration.xml @@ -44,7 +44,15 @@ 1 https://eestore.paas2.uninett.no/api/projectrepo/ - $['data'][*]['attributes']['pid','name','uri','description'] + + $['data'][*]['attributes'] + + 'pid' + 'name' + 'uri' + 'description' + + $['meta']['pagination']['page','pages','count'] pid 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 511b7fb3c..d7a0738fc 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,19 +1,18 @@

{{ '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 }}

+ + +
-
+
-
+
@@ -129,7 +128,7 @@
-
@@ -159,7 +158,7 @@

-
@@ -180,7 +179,6 @@ [parentTemplate]='servicesTemplate' [displayFunction]='servicesDisplayFunc' [formGroup]="formGroup.get('services')" [viewOnly]='viewOnly' [subtitleFunction]='dataRepositoryDisplaySubtitleFunc' [autoCompleteConfiguration]="servicesAutoCompleteConfiguration" (onItemChange)="servicesOnItemChange($event)"> - @@ -190,7 +188,7 @@

-
@@ -207,7 +205,6 @@ placeholder="{{'DATASET-EDITOR.FIELDS.TAGS' | translate}}" [parentTemplate]='tagsTemplate' [displayFunction]='tagsDisplayFunc' [formGroup]="formGroup.get('tags')" [viewOnly]='viewOnly' [subtitleFunction]='tagsDisplaySubtitleFunc' [autoCompleteConfiguration]="tagsAutoCompleteConfiguration" (onItemChange)="tagsOnItemChange($event)"> - @@ -217,7 +214,7 @@

-
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 6dfdf3d00..3c08aa1bd 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 @@ -41,6 +41,7 @@ import { DataRepositoryReferencedModelHelperComponent } from '../dataset-referen import { RegistryReferencedModelHelperComponent } from '../dataset-referenced-models-helper/registry/registry-referenced-model-helper.component'; import { ExternalDatasetReferencedModelHelperComponent } from '../dataset-referenced-models-helper/externalDataset/externaldataset-referenced-model-helper.component'; import { ServicesReferencedModelHelperComponent } from '../dataset-referenced-models-helper/services/services-referenced-model-helper.component'; +import { BehaviorSubject } from 'rxjs'; @Component({ selector: 'app-dataset-wizard-component', @@ -114,23 +115,28 @@ export class DatasetWizardComponent implements OnInit, AfterViewInit, IBreadCrum const externalDatasetRequestItem: RequestItem = new RequestItem(); externalDatasetRequestItem.criteria = new ExternalDatasetCriteria(); - this.externalDatasetAutoCompleteConfiguration = new AutoCompleteConfiguration(this.externalSourcesService.searchDatasetSExternalDatasetservice.bind(this.externalSourcesService), externalDatasetRequestItem); + this.externalDatasetAutoCompleteConfiguration = new AutoCompleteConfiguration(this.externalSourcesService.searchDatasetSExternalDatasetservice.bind(this.externalSourcesService), + externalDatasetRequestItem, new BehaviorSubject(false)); const registriesRequestItem: RequestItem = new RequestItem(); registriesRequestItem.criteria = new RegistryCriteria(); - this.registriesAutoCompleteConfiguration = new AutoCompleteConfiguration(this.externalSourcesService.searchDatasetRegistry.bind(this.externalSourcesService), registriesRequestItem); + this.registriesAutoCompleteConfiguration = new AutoCompleteConfiguration(this.externalSourcesService.searchDatasetRegistry.bind(this.externalSourcesService), + registriesRequestItem, new BehaviorSubject(false)); const dataRepositoriesRequestItem: RequestItem = new RequestItem(); dataRepositoriesRequestItem.criteria = new DataRepositoryCriteria(); - this.dataRepositoriesAutoCompleteConfiguration = new AutoCompleteConfiguration(this.externalSourcesService.searchDatasetRepository.bind(this.externalSourcesService), dataRepositoriesRequestItem); + this.dataRepositoriesAutoCompleteConfiguration = new AutoCompleteConfiguration(this.externalSourcesService.searchDatasetRepository.bind(this.externalSourcesService), + dataRepositoriesRequestItem, new BehaviorSubject(false)); const servicesRequestItem: RequestItem = new RequestItem(); servicesRequestItem.criteria = new ServicesCriteria(); - this.servicesAutoCompleteConfiguration = new AutoCompleteConfiguration(this.externalSourcesService.searchDatasetService.bind(this.externalSourcesService), servicesRequestItem); + this.servicesAutoCompleteConfiguration = new AutoCompleteConfiguration(this.externalSourcesService.searchDatasetService.bind(this.externalSourcesService), + servicesRequestItem, new BehaviorSubject(false)); const tagsRequestItem: RequestItem = new RequestItem(); tagsRequestItem.criteria = new TagsCriteria(); - this.tagsAutoCompleteConfiguration = new AutoCompleteConfiguration(this.externalSourcesService.searchDatasetTags.bind(this.externalSourcesService), tagsRequestItem); + this.tagsAutoCompleteConfiguration = new AutoCompleteConfiguration(this.externalSourcesService.searchDatasetTags.bind(this.externalSourcesService), + tagsRequestItem, new BehaviorSubject(false)); this.externalSourcesConfigurationService.getExternalSourcesConfiguration().subscribe(result => { this.externalSourcesConfiguration = result; @@ -465,12 +471,14 @@ export class DatasetWizardComponent implements OnInit, AfterViewInit, IBreadCrum public enableForm() { this.editMode = true; + this.viewOnly = false; this.formGroup.enable(); } public disableForm() { this.editMode = false; + this.viewOnly = true; this.formGroup.disable(); } } diff --git a/dmp-frontend/src/app/projects/editor/project-editor.component.ts b/dmp-frontend/src/app/projects/editor/project-editor.component.ts index 0a84d46fa..a005b842a 100644 --- a/dmp-frontend/src/app/projects/editor/project-editor.component.ts +++ b/dmp-frontend/src/app/projects/editor/project-editor.component.ts @@ -166,7 +166,6 @@ export class ProjectEditorComponent implements OnInit, IBreadCrumbComponent { this.editMode = true; this.formGroup.enable(); } - } public disableForm() { diff --git a/dmp-frontend/src/app/shared/components/auto-complete/AutoCompleteConfiguration.ts b/dmp-frontend/src/app/shared/components/auto-complete/AutoCompleteConfiguration.ts index d12a66192..25d12102e 100644 --- a/dmp-frontend/src/app/shared/components/auto-complete/AutoCompleteConfiguration.ts +++ b/dmp-frontend/src/app/shared/components/auto-complete/AutoCompleteConfiguration.ts @@ -1,11 +1,14 @@ import { BaseCriteria } from '../../../models/criteria/BaseCriteria'; import { RequestItem } from '../../../models/criteria/RequestItem'; +import { BehaviorSubject } from 'rxjs'; export class AutoCompleteConfiguration { public callback: Function; + public refreshEvent: BehaviorSubject; public requestItem: RequestItem; - constructor(callback: Function, requestItem: RequestItem) { + constructor(callback: Function, requestItem: RequestItem, refreshEvent = null) { this.callback = callback; this.requestItem = requestItem; + this.refreshEvent = refreshEvent; } } diff --git a/dmp-frontend/src/app/shared/components/auto-complete/auto-complete.component.ts b/dmp-frontend/src/app/shared/components/auto-complete/auto-complete.component.ts index 682890cd9..a2f062fe8 100644 --- a/dmp-frontend/src/app/shared/components/auto-complete/auto-complete.component.ts +++ b/dmp-frontend/src/app/shared/components/auto-complete/auto-complete.component.ts @@ -1,4 +1,4 @@ -import { Input, OnInit, Component, AfterViewInit, Output, EventEmitter, OnChanges } from '@angular/core'; +import { Input, OnInit, Component, AfterViewInit, Output, EventEmitter, OnChanges, SimpleChanges } from '@angular/core'; import { FormGroup, FormControl, FormGroupDirective, NgForm } from '@angular/forms'; import { ErrorStateMatcher } from '@angular/material'; import { AutoCompleteConfiguration } from './AutoCompleteConfiguration'; @@ -39,7 +39,13 @@ export class AutoCompleteComponent implements OnInit, ErrorStateMatcher { } ngOnInit() { - + this.inputData.refreshEvent.subscribe(x => { + if (x) { + this.formCtrl.patchValue(null); + this.textFormCtrl.patchValue(null); + this.options = []; + } + }); this.textFormCtrl = new FormControl(); if (this.disabled) { this.textFormCtrl.disable(); } this.formCtrl.registerOnDisabledChange(isDisabled => { diff --git a/dmp-frontend/src/app/shared/components/external-items/external-item-listing/external-item-listing.component.html b/dmp-frontend/src/app/shared/components/external-items/external-item-listing/external-item-listing.component.html index 1facf7b0f..4f15acb38 100644 --- a/dmp-frontend/src/app/shared/components/external-items/external-item-listing/external-item-listing.component.html +++ b/dmp-frontend/src/app/shared/components/external-items/external-item-listing/external-item-listing.component.html @@ -11,8 +11,8 @@
-
diff --git a/dmp-frontend/src/app/shared/components/external-items/external-item-listing/external-item-listing.component.ts b/dmp-frontend/src/app/shared/components/external-items/external-item-listing/external-item-listing.component.ts index 1f305ce82..684724a9b 100644 --- a/dmp-frontend/src/app/shared/components/external-items/external-item-listing/external-item-listing.component.ts +++ b/dmp-frontend/src/app/shared/components/external-items/external-item-listing/external-item-listing.component.ts @@ -4,63 +4,64 @@ import { ExternalSourcesUrlModel } from '../../../../models/external-sources/Ext import { AutoCompleteConfiguration } from '../../auto-complete/AutoCompleteConfiguration'; @Component({ - selector: 'app-external-item-listing', - templateUrl: './external-item-listing.component.html', - styleUrls: ['./external-item-listing.component.scss'] + selector: 'app-external-item-listing', + templateUrl: './external-item-listing.component.html', + styleUrls: ['./external-item-listing.component.scss'] }) export class ExternalItemListingComponent implements OnInit { - @Input() - public placeholder: string; + @Input() + public placeholder: string; - @Input() - public formGroup: AbstractControl; + @Input() + public formGroup: AbstractControl; - @Input() - public autoCompleteConfiguration: AutoCompleteConfiguration; + @Input() + public autoCompleteConfiguration: AutoCompleteConfiguration; - @Input() - public displayFunction: Function; + @Input() + public displayFunction: Function; - @Input() - public subtitleFunction: Function; + @Input() + public subtitleFunction: Function; - @Input() - public disabled = true; + @Input() + public disabled = true; - @Input() - public viewOnly = false; + @Input() + public viewOnly = false; - @Input() - public titleKey: string; + @Input() + public titleKey: string; - @Input() - parentTemplate; + @Input() + parentTemplate; - @Input() - public options: Array; + @Input() + public options: Array; - @Output() - public onItemChange = new EventEmitter(); + @Output() + public onItemChange = new EventEmitter(); - public choice: string; - public formControl = new FormControl(); + public choice: string; + public formControl = new FormControl(); + enabled = true; + ngOnInit() { + if (this.disabled) { this.formControl.disable(); } + } - ngOnInit() { - if (this.disabled) { this.formControl.disable(); } - } + onItemChangeFunc(event) { + if (event) { this.onItemChange.emit(event); } + } - onItemChangeFunc(event) { - if (event) { this.onItemChange.emit(event); } - } + selectionChange(event) { + if (this.formControl.disabled) { this.formControl.enable(); } + this.autoCompleteConfiguration.requestItem.criteria['type'] = event.value; + this.autoCompleteConfiguration.refreshEvent.next(true); + } - selectionChange(event) { - if (this.formControl.disabled) { this.formControl.enable(); } - this.autoCompleteConfiguration.requestItem.criteria['type'] = event.value; - } - - deleteItem(name: number) { - (this.formGroup).removeAt(name); - } + deleteItem(name: number) { + (this.formGroup).removeAt(name); + } } diff --git a/dmp-frontend/src/assets/lang/en.json b/dmp-frontend/src/assets/lang/en.json index 63ca5be8d..1b023f958 100644 --- a/dmp-frontend/src/assets/lang/en.json +++ b/dmp-frontend/src/assets/lang/en.json @@ -190,7 +190,8 @@ "GO-TO-DATASETS": "Go To Datasets", "SAVE": "Save", "CANCEL": "Cancel", - "DELETE": "Remove" + "DELETE": "Remove", + "FINALISE": "Finalise" } }, "CRITERIA": { @@ -408,5 +409,11 @@ "TITLE": "DMP Organisations", "FILTER": "Filter Organisations" } + }, + "DMP-FINALISE-DIALOG": { + "SUBMIT": "Submit", + "FINALISE-TITLE": "Do you want to finalise any of the following Datasets?", + "ALREADY-FINALISED-DATASETS": "Already Finalised Datasets", + "NONE": "None" } } diff --git a/dmp-frontend/src/environments/environment.ts b/dmp-frontend/src/environments/environment.ts index 3f4dfba52..19e850c18 100644 --- a/dmp-frontend/src/environments/environment.ts +++ b/dmp-frontend/src/environments/environment.ts @@ -5,7 +5,7 @@ export const environment = { production: false, - Server: 'http://devel-21.local.cite.gr:5000/api/', + Server: 'http://devel-21.local.cite.gr:8080/api/', App: 'http://localhost:4200/', HelpService: { Enabled: false,