From b7193d2dda1dd7483096502b8f768c09fc535fcd Mon Sep 17 00:00:00 2001 From: Ioannis Kalyvas Date: Fri, 19 Oct 2018 10:35:35 +0300 Subject: [PATCH] Implemented Preview Step in Admin Dataset Profile Definition --- .../main/java/eu/eudat/controllers/Admin.java | 1 - .../components/datasetprofile/FieldSet.java | 1 - .../form/form.component.html | 96 +++++++++++-------- .../form/form.component.ts | 49 +++++++--- .../app/dmps/editor/dmp-editor.component.html | 7 +- .../app/dmps/editor/dmp-editor.component.ts | 9 ++ .../dynamic-form/dynamic-form.component.html | 2 +- .../data-management-plan.service.ts | 4 + dmp-frontend/src/assets/lang/en.json | 5 + 9 files changed, 113 insertions(+), 61 deletions(-) diff --git a/dmp-backend/web/src/main/java/eu/eudat/controllers/Admin.java b/dmp-backend/web/src/main/java/eu/eudat/controllers/Admin.java index a06c7e905..aa9b021ea 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/controllers/Admin.java +++ b/dmp-backend/web/src/main/java/eu/eudat/controllers/Admin.java @@ -61,7 +61,6 @@ public class Admin extends BaseController { @RequestMapping(method = RequestMethod.POST, value = {"/admin/preview"}, consumes = "application/json",produces = "application/json") public ResponseEntity> getPreview(@RequestBody DatasetProfile profile, @ClaimedAuthorities(claims = {ADMIN}) Principal principal) { - //this.getLoggerService().info(principal, "Admin Previewed Dataset Profile"); eu.eudat.data.entities.DatasetProfile modelDefinition = AdminManager.generateViewStyleDefinition(profile, getApiContext()); eu.eudat.models.data.user.composite.DatasetProfile datasetProfile = UserManager.generateDatasetProfileModel(modelDefinition); PagedDatasetProfile pagedDatasetProfile = new PagedDatasetProfile(); diff --git a/dmp-backend/web/src/main/java/eu/eudat/models/data/admin/components/datasetprofile/FieldSet.java b/dmp-backend/web/src/main/java/eu/eudat/models/data/admin/components/datasetprofile/FieldSet.java index e7188125f..e24691dd8 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/models/data/admin/components/datasetprofile/FieldSet.java +++ b/dmp-backend/web/src/main/java/eu/eudat/models/data/admin/components/datasetprofile/FieldSet.java @@ -88,7 +88,6 @@ public class FieldSet implements Comparable, ViewStyleDefinition viewStylefields = new ModelBuilder().toViewStyleDefinition(this.fields, eu.eudat.models.data.entities.xmlmodels.datasetprofiledefinition.Field.class); item.setFields(viewStylefields); item.setId(this.id); diff --git a/dmp-frontend/src/app/dataset-profile-form/form/form.component.html b/dmp-frontend/src/app/dataset-profile-form/form/form.component.html index 9b6d4504d..706477395 100644 --- a/dmp-frontend/src/app/dataset-profile-form/form/form.component.html +++ b/dmp-frontend/src/app/dataset-profile-form/form/form.component.html @@ -1,60 +1,72 @@ -
+
{{'GENERAL.VALIDATION.REQUIRED' | translate}} + -
- - - {{i + - 1}}.{{form.get('pages').at(i).get('title').value}} -
- + {{'DATASET-PROFILE.PAGES-DESCRIPTION' | translate}} +
+
+ + + {{i + + 1}}.{{form.get('pages').at(i).get('title').value}} +
+ +
+
+
+
+ +
- -
-
- -
-
-
-
-
- + +
+
+ +
+ {{'DATASET-PROFILE.FORM-DESCRIPTION' | translate}}
- - - {{i + 1}}. - {{form.get('sections').get(''+i).get('title').value}} -
- +
+ + + {{i + 1}}. + {{form.get('sections').get(''+i).get('title').value}} +
+ +
+
+
+
+ +
- -
-
- -
-
-
+ +
+
+ +
-
- + + + {{'DATASET-PROFILE.PREVIEW' | translate}} +
+
-
diff --git a/dmp-frontend/src/app/dataset-profile-form/form/form.component.ts b/dmp-frontend/src/app/dataset-profile-form/form/form.component.ts index f7c457485..c45a1fa11 100644 --- a/dmp-frontend/src/app/dataset-profile-form/form/form.component.ts +++ b/dmp-frontend/src/app/dataset-profile-form/form/form.component.ts @@ -2,14 +2,17 @@ import { DatasetProfileService } from '../../services/dataset-profile.service'; import { DatasetProfileModelAdmin } from '../../models/datasetProfileAdmin/DatasetProfileModelAdmin'; import { Page } from '../../models/datasetProfileAdmin/Page'; -import { Component, OnInit } from '@angular/core'; +import { Component, OnInit, ViewChild, AfterViewInit } from '@angular/core'; import { FormGroup, FormControl } from '@angular/forms'; import { FormArray } from '@angular/forms'; import { Router, ActivatedRoute } from '@angular/router'; import { DatasetProfileAdmin } from '../../services/datasetProfileAdmin/datasetProfileAfmin.service'; import { Section } from '../../models/datasetProfileAdmin/Section'; -import { MatDialog } from '@angular/material'; +import { MatDialog, MatHorizontalStepper, MatStepper } from '@angular/material'; import { DatasetProfilePreviewerComponent } from '../previewer/dataset-profile-previewer.component'; +import { Observable } from 'rxjs'; +import { DatasetWizardModel } from '../../models/datasets/DatasetWizardModel'; +import { DatasetProfileDefinitionModel } from '../../models/DatasetProfileDefinitionModel'; @Component({ selector: 'app-form-component', @@ -18,16 +21,20 @@ import { DatasetProfilePreviewerComponent } from '../previewer/dataset-profile-p styleUrls: ['./form.component.scss'] }) -export class FormComponent implements OnInit { +export class FormComponent implements OnInit, AfterViewInit { + dataModel: DatasetProfileModelAdmin; form: FormGroup; + previewerFormGroup: FormGroup; private profileID: string; private cloneId: string; - + dataWizardModel: DatasetWizardModel; + @ViewChild('stepper') stepper: MatHorizontalStepper; constructor( public datasetprofileAdmin: DatasetProfileAdmin, private datasetProfileService: DatasetProfileService, + private datasetProfileAdminService: DatasetProfileAdmin, private route: ActivatedRoute, private router: Router, public dialog: MatDialog, @@ -36,19 +43,40 @@ export class FormComponent implements OnInit { this.cloneId = route.snapshot.params['cloneid']; } + ngAfterViewInit(): void { + console.log(this.stepper); + } + ngOnInit() { this.dataModel = JsonSerializer.fromJSONObject(new DatasetProfileModelAdmin(), DatasetProfileModelAdmin); - this.form = this.dataModel.buildForm(); if (this.profileID) { this.datasetProfileService.getDatasetProfileById(this.profileID).subscribe((data) => { this.dataModel = JsonSerializer.fromJSONObject(data, DatasetProfileModelAdmin); this.form = this.dataModel.buildForm(); + this.form.valueChanges.subscribe(change => { + this.datasetProfileAdminService.preview(this.dataModel).subscribe(dataset => { + const datasetModel = new DatasetWizardModel(); + datasetModel.datasetProfileDefinition = JsonSerializer.fromJSONObject(dataset, DatasetProfileDefinitionModel); + this.dataWizardModel = datasetModel; + this.previewerFormGroup = this.dataWizardModel.buildForm().get('datasetProfileDefinition'); + }); + }); + this.form.updateValueAndValidity(); }); } else if (this.cloneId) { this.datasetprofileAdmin.clone(this.cloneId).subscribe((data) => { this.dataModel = JsonSerializer.fromJSONObject(data, DatasetProfileModelAdmin); this.form = this.dataModel.buildForm(); + this.form.valueChanges.subscribe(change => { + this.datasetProfileAdminService.preview(this.dataModel).subscribe(dataset => { + const datasetModel = new DatasetWizardModel(); + datasetModel.datasetProfileDefinition = JsonSerializer.fromJSONObject(dataset, DatasetProfileDefinitionModel); + this.dataWizardModel = datasetModel; + this.previewerFormGroup = this.dataWizardModel.buildForm().get('datasetProfileDefinition'); + }); + }); + this.form.updateValueAndValidity(); }); } else { this.addSection(); @@ -106,14 +134,7 @@ export class FormComponent implements OnInit { } } - preview() { - const dialogRef = this.dialog.open(DatasetProfilePreviewerComponent, { - height: '355px', - width: '700px', - data: { - model: this.dataModel - } - }); + isStepActive(step: number) { + return this.stepper && this.stepper.selectedIndex === step; } - } diff --git a/dmp-frontend/src/app/dmps/editor/dmp-editor.component.html b/dmp-frontend/src/app/dmps/editor/dmp-editor.component.html index e2ce888d3..2f179d7c4 100644 --- a/dmp-frontend/src/app/dmps/editor/dmp-editor.component.html +++ b/dmp-frontend/src/app/dmps/editor/dmp-editor.component.html @@ -34,6 +34,9 @@ +
- 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 d7878d7d1..4ca65160f 100644 --- a/dmp-frontend/src/app/dmps/editor/dmp-editor.component.ts +++ b/dmp-frontend/src/app/dmps/editor/dmp-editor.component.ts @@ -343,6 +343,15 @@ export class DataManagementPlanEditorComponent implements AfterViewInit, IBreadC }); } + downloadDocx(id: string) { + this.dataManagementPlanService.downloadDocx(id).subscribe(response => { + const blob = new Blob([response.body], { type: 'application/octet-stream' }); + const filename = this.getFilenameFromContentDispositionHeader(response.headers.get('Content-Disposition')); + + FileSaver.saveAs(blob, filename); + }); + } + getFilenameFromContentDispositionHeader(header: string): string { const regex: RegExp = new RegExp(/filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/g); diff --git a/dmp-frontend/src/app/form/dynamic-form/dynamic-form.component.html b/dmp-frontend/src/app/form/dynamic-form/dynamic-form.component.html index 797a20220..2698679df 100644 --- a/dmp-frontend/src/app/form/dynamic-form/dynamic-form.component.html +++ b/dmp-frontend/src/app/form/dynamic-form/dynamic-form.component.html @@ -14,7 +14,7 @@
- +
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 ff3acde06..e32cc706d 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 @@ -75,4 +75,8 @@ export class DataManagementPlanService { public downloadXML(id: string): Observable> { return this.httpClient.get(this.actionUrl + 'getXml/' + id, { responseType: 'blob', observe: 'response' }); } + + public downloadDocx(id: string): Observable> { + return this.httpClient.get(this.actionUrl + 'getWord/' + id, { responseType: 'blob', observe: 'response' }); + } } diff --git a/dmp-frontend/src/assets/lang/en.json b/dmp-frontend/src/assets/lang/en.json index 45a2a5571..407114536 100644 --- a/dmp-frontend/src/assets/lang/en.json +++ b/dmp-frontend/src/assets/lang/en.json @@ -360,6 +360,11 @@ "SAVE": "Save" } }, + "DATASET-PROFILE": { + "PREVIEW": "Preview", + "FORM-DESCRIPTION": "Form Description", + "PAGES-DESCRIPTION": "Pages Description" + }, "RECENT-ACTIVITY": { "MY-TITLE-PROJECT": "My Recent Project Activity", "MY-TITLE-DMP": "My Recent DMP Activity",