From 404632a3370714ec7255a536fbb558fe8d2ab263 Mon Sep 17 00:00:00 2001 From: apapachristou Date: Tue, 25 Aug 2020 18:34:28 +0300 Subject: [PATCH] Fixes save new dataset --- .../dataset-info/dataset-info.component.ts | 3 +- .../app/ui/dmp/editor/dmp-editor.component.ts | 36 ++++++++++++++++--- .../editor/main-info/main-info.component.html | 1 + .../editor/main-info/main-info.component.ts | 2 +- 4 files changed, 36 insertions(+), 6 deletions(-) diff --git a/dmp-frontend/src/app/ui/dmp/editor/dataset-info/dataset-info.component.ts b/dmp-frontend/src/app/ui/dmp/editor/dataset-info/dataset-info.component.ts index fb32f9e49..5b41d99fb 100644 --- a/dmp-frontend/src/app/ui/dmp/editor/dataset-info/dataset-info.component.ts +++ b/dmp-frontend/src/app/ui/dmp/editor/dataset-info/dataset-info.component.ts @@ -32,6 +32,7 @@ import { DmpListingModel } from '@app/core/model/dmp/dmp-listing'; export class DatasetInfoComponent extends BaseComponent implements OnInit { @Input() formGroup: FormGroup = null; + // @Input() datasetFormGroup: FormGroup = null; @Input() isUserOwner: boolean; @Input() dmp: DmpEditorModel; @Input() isPublic: boolean; @@ -84,7 +85,7 @@ export class DatasetInfoComponent extends BaseComponent implements OnInit { this.formGroup.get('extraProperties').get('publicDate').patchValue(new Date()); } - + // this.datasetFormGroup.get('dmp').valueChanges.pipe(takeUntil(this._destroyed)) this.formGroup.get('datasets')['controls'][0].get('dmp').valueChanges.pipe(takeUntil(this._destroyed)) .subscribe(x => { // this.registerFormListeners(); diff --git a/dmp-frontend/src/app/ui/dmp/editor/dmp-editor.component.ts b/dmp-frontend/src/app/ui/dmp/editor/dmp-editor.component.ts index 1613f1146..e881e9ecc 100644 --- a/dmp-frontend/src/app/ui/dmp/editor/dmp-editor.component.ts +++ b/dmp-frontend/src/app/ui/dmp/editor/dmp-editor.component.ts @@ -46,6 +46,7 @@ import { SingleAutoCompleteConfiguration } from '@app/library/auto-complete/sing import { DmpListingModel } from '@app/core/model/dmp/dmp-listing'; import { DmpCriteria } from '@app/core/query/dmp/dmp-criteria'; import { DatasetDescriptionFormEditorModel } from '@app/ui/misc/dataset-description-form/dataset-description-form.model'; +import { DatasetWizardService } from '@app/core/services/dataset-wizard/dataset-wizard.service'; @Component({ selector: 'app-dmp-editor-component', @@ -67,6 +68,7 @@ export class DmpEditorComponent extends BaseComponent implements OnInit, IBreadC dmp: DmpEditorModel; formGroup: FormGroup = null; + // datasetFormGroup: FormGroup; formGroupRawValue: any; datasetId: string = null; datasets = new FormArray([]); @@ -88,6 +90,7 @@ export class DmpEditorComponent extends BaseComponent implements OnInit, IBreadC constructor( private dmpProfileService: DmpProfileService, + private datasetWizardService: DatasetWizardService, private dmpService: DmpService, private route: ActivatedRoute, private router: Router, @@ -269,6 +272,7 @@ export class DmpEditorComponent extends BaseComponent implements OnInit, IBreadC this.dmp.extraProperties.visible = false; this.dmp.extraProperties.contact = this.authService.current().id; const datasetWizardEditorModel = new DatasetWizardEditorModel(); + // this.datasetFormGroup = datasetWizardEditorModel.buildForm(); // datasetWizardEditorModel.datasetProfileDefinition = new DatasetDescriptionFormEditorModel(); this.dmp.datasets.push(datasetWizardEditorModel); @@ -392,11 +396,20 @@ export class DmpEditorComponent extends BaseComponent implements OnInit, IBreadC formSubmit(showAddDatasetDialog?: boolean): void { this.formService.touchAllFormFields(this.formGroup); - if (!this.isFormValid()) { - this.showValidationErrorsDialog(); - return; + if (this.isNewDataset) { + if (!this.isDatasetFormValid) { + this.showValidationErrorsDialog(); + return; + } + this.onDatasetSubmit(); + } + else { + if (!this.isFormValid()) { + this.showValidationErrorsDialog(); + return; + } + this.onSubmit(showAddDatasetDialog); } - this.onSubmit(showAddDatasetDialog); } public isFormValid() { @@ -406,6 +419,10 @@ export class DmpEditorComponent extends BaseComponent implements OnInit, IBreadC // (this.formGroup.get('grant').get('label').valid || this.formGroup.get('grant').get('existGrant').valid); } + public isDatasetFormValid() { + return this.formGroup.get('datasets')['controls'][0].valid; + } + private showValidationErrorsDialog(projectOnly?: boolean) { const dialogRef = this.dialog.open(FormValidationErrorsDialogComponent, { disableClose: true, @@ -449,6 +466,17 @@ export class DmpEditorComponent extends BaseComponent implements OnInit, IBreadC } + onDatasetSubmit(): void { + this.datasetWizardService.createDataset(this.formGroup.get('datasets')['controls'][0].getRawValue()) + .pipe(takeUntil(this._destroyed)) + .subscribe( + data => { + this.onCallbackSuccess(this.formGroup.get('datasets')['controls'][0].get('id').value); + }, + error => this.onCallbackError(error) + ); + } + onCallbackSuccess(id?: String, datasetId?: string): void { this.uiNotificationService.snackBarNotification(this.isNew ? this.language.instant('GENERAL.SNACK-BAR.SUCCESSFUL-CREATION') : this.language.instant('GENERAL.SNACK-BAR.SUCCESSFUL-UPDATE'), SnackBarNotificationLevel.Success); if (id != null) { diff --git a/dmp-frontend/src/app/ui/dmp/editor/main-info/main-info.component.html b/dmp-frontend/src/app/ui/dmp/editor/main-info/main-info.component.html index f2cf3b18d..c3127df15 100644 --- a/dmp-frontend/src/app/ui/dmp/editor/main-info/main-info.component.html +++ b/dmp-frontend/src/app/ui/dmp/editor/main-info/main-info.component.html @@ -17,6 +17,7 @@ {{'GENERAL.VALIDATION.REQUIRED' | translate}} + diff --git a/dmp-frontend/src/app/ui/dmp/editor/main-info/main-info.component.ts b/dmp-frontend/src/app/ui/dmp/editor/main-info/main-info.component.ts index 4e401a070..5f07ecec7 100644 --- a/dmp-frontend/src/app/ui/dmp/editor/main-info/main-info.component.ts +++ b/dmp-frontend/src/app/ui/dmp/editor/main-info/main-info.component.ts @@ -27,6 +27,7 @@ import { DmpService } from '@app/core/services/dmp/dmp.service'; export class MainInfoComponent extends BaseComponent implements OnInit { @Input() formGroup: FormGroup = null; + // @Input() datasetFormGroup: FormGroup; @Input() isNewVersion: boolean; @Input() isNewDataset: boolean; @Input() isUserOwner: boolean; @@ -83,7 +84,6 @@ export class MainInfoComponent extends BaseComponent implements OnInit { this.formGroup.get('extraProperties').get('publicDate').patchValue(new Date()); } - // this.formControl = this.formGroup.get('datasets')['controls'][0].get('dmp'); this.formGroup.valueChanges.pipe(takeUntil(this._destroyed)) .subscribe(x => { this.onFormChanged.emit();