From 0f964cddd05b8935e05af12760273ca7f2c4b9d5 Mon Sep 17 00:00:00 2001 From: dtziotzios Date: Fri, 15 Feb 2019 12:26:14 +0200 Subject: [PATCH] Dataset + Dataset Profile Date Picker Option For Fields Frond And Back End --- .../utilities/builders/ModelBuilder.java | 2 + .../utilities/documents/word/WordBuilder.java | 2 + .../commons/datafield/DataPickerData.java | 34 ++++++++ .../enum/dataset-profile-field-view-style.ts | 4 +- .../field-data/field-data.ts | 4 + .../services/utilities/enum-utils.service.ts | 1 + .../date-picker-data-editor-models.ts | 19 +++++ .../admin/field-editor-model.ts | 3 + .../dataset-profile/dataset-profile.module.ts | 2 + ...rofile-editor-default-value.component.html | 11 +++ ...le-editor-date-picker-field.component.html | 9 ++ ...le-editor-date-picker-field.component.scss | 3 + ...file-editor-date-picker-field.component.ts | 18 ++++ ...file-editor-free-text-field.component.html | 9 +- ...ataset-profile-editor-field.component.html | 3 + .../dataset-profile-editor-field.component.ts | 5 ++ .../dataset-profile-editor.component.ts | 4 +- .../form-field/form-field.component.html | 84 +++++++++++++------ dmp-frontend/src/assets/i18n/en.json | 9 +- 19 files changed, 194 insertions(+), 32 deletions(-) create mode 100644 dmp-backend/web/src/main/java/eu/eudat/models/data/components/commons/datafield/DataPickerData.java create mode 100644 dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-data/date-picker-data-editor-models.ts create mode 100644 dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/field-type/datepicker/dataset-profile-editor-date-picker-field.component.html create mode 100644 dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/field-type/datepicker/dataset-profile-editor-date-picker-field.component.scss create mode 100644 dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/field-type/datepicker/dataset-profile-editor-date-picker-field.component.ts diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/utilities/builders/ModelBuilder.java b/dmp-backend/web/src/main/java/eu/eudat/logic/utilities/builders/ModelBuilder.java index 6e4385ca9..36bfc04a7 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/utilities/builders/ModelBuilder.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/utilities/builders/ModelBuilder.java @@ -70,6 +70,7 @@ public class ModelBuilder { if (type.equals("checkBox")) return (FieldData) new CheckBoxData().fromData(data); if (type.equals("freetext")) return (FieldData) new FreeTextData().fromData(data); if (type.equals("textarea")) return (FieldData) new TextAreaData().fromData(data); + if (type.equals("datePicker")) return (FieldData) new DataPickerData().fromData(data); return null; } @@ -86,6 +87,7 @@ public class ModelBuilder { if (type.equals("checkBox")) return (FieldData) new CheckBoxData().fromData(data); if (type.equals("freetext")) return (FieldData) new FreeTextData().fromData(data); if (type.equals("textarea")) return (FieldData) new TextAreaData().fromData(data); + if (type.equals("datePicker")) return (FieldData) new DataPickerData().fromData(data); return null; } diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/utilities/documents/word/WordBuilder.java b/dmp-backend/web/src/main/java/eu/eudat/logic/utilities/documents/word/WordBuilder.java index 9791c4904..4d15ce539 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/utilities/documents/word/WordBuilder.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/utilities/documents/word/WordBuilder.java @@ -231,6 +231,8 @@ public class WordBuilder { return field.getValue(); case "textarea": return field.getValue(); + case "datepicker": + return field.getValue(); } return null; } diff --git a/dmp-backend/web/src/main/java/eu/eudat/models/data/components/commons/datafield/DataPickerData.java b/dmp-backend/web/src/main/java/eu/eudat/models/data/components/commons/datafield/DataPickerData.java new file mode 100644 index 000000000..eeab3c6b8 --- /dev/null +++ b/dmp-backend/web/src/main/java/eu/eudat/models/data/components/commons/datafield/DataPickerData.java @@ -0,0 +1,34 @@ +package eu.eudat.models.data.components.commons.datafield; + +import org.w3c.dom.Document; +import org.w3c.dom.Element; + +import java.util.Map; + +public class DataPickerData extends FieldData { + @Override + public DataPickerData fromData(Object data) { + if (data != null) { + this.setLabel((String) ((Map) data).get("label")); + } + return this; + } + + @Override + public Object toData() { + return null; + } + + @Override + public Element toXml(Document doc) { + Element root = doc.createElement("data"); + root.setAttribute("label", this.getLabel()); + return root; + } + + @Override + public DataPickerData fromXml(Element item) { + this.setLabel(item != null ? item.getAttribute("label") : ""); + return this; + } +} diff --git a/dmp-frontend/src/app/core/common/enum/dataset-profile-field-view-style.ts b/dmp-frontend/src/app/core/common/enum/dataset-profile-field-view-style.ts index 318810246..7a697ec5f 100644 --- a/dmp-frontend/src/app/core/common/enum/dataset-profile-field-view-style.ts +++ b/dmp-frontend/src/app/core/common/enum/dataset-profile-field-view-style.ts @@ -4,5 +4,7 @@ export enum DatasetProfileFieldViewStyle { ComboBox = "combobox", CheckBox = "checkBox", FreeText = "freetext", - RadioBox = "radiobox" + RadioBox = "radiobox", + DatePicker = "datePicker" + } \ No newline at end of file diff --git a/dmp-frontend/src/app/core/model/dataset-profile-definition/field-data/field-data.ts b/dmp-frontend/src/app/core/model/dataset-profile-definition/field-data/field-data.ts index fdeffeccc..ab96fd237 100644 --- a/dmp-frontend/src/app/core/model/dataset-profile-definition/field-data/field-data.ts +++ b/dmp-frontend/src/app/core/model/dataset-profile-definition/field-data/field-data.ts @@ -39,4 +39,8 @@ export interface WordListFieldData extends FieldData { export interface FieldDataOption extends FieldData { label: string; value: string; +} + +export interface DatePickerFieldData extends FieldData { + } \ No newline at end of file diff --git a/dmp-frontend/src/app/core/services/utilities/enum-utils.service.ts b/dmp-frontend/src/app/core/services/utilities/enum-utils.service.ts index 8aea375d8..70d35175a 100644 --- a/dmp-frontend/src/app/core/services/utilities/enum-utils.service.ts +++ b/dmp-frontend/src/app/core/services/utilities/enum-utils.service.ts @@ -71,6 +71,7 @@ export class EnumUtils { case DatasetProfileFieldViewStyle.FreeText: return this.language.instant('TYPES.DATASET-PROFILE-FIELD-VIEW-STYLE.FREE-TEXT'); case DatasetProfileFieldViewStyle.RadioBox: return this.language.instant('TYPES.DATASET-PROFILE-FIELD-VIEW-STYLE.RADIO-BOX'); case DatasetProfileFieldViewStyle.TextArea: return this.language.instant('TYPES.DATASET-PROFILE-FIELD-VIEW-STYLE.TEXT-AREA'); + case DatasetProfileFieldViewStyle.DatePicker: return this.language.instant('TYPES.DATASET-PROFILE-FIELD-VIEW-STYLE.DATE-PICKER'); } } diff --git a/dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-data/date-picker-data-editor-models.ts b/dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-data/date-picker-data-editor-models.ts new file mode 100644 index 000000000..6d65a7bef --- /dev/null +++ b/dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-data/date-picker-data-editor-models.ts @@ -0,0 +1,19 @@ +import { FormGroup } from '@angular/forms'; +import { FieldDataEditorModel } from './field-data-editor-model'; +import { DatePickerFieldData } from '../../../../../core/model/dataset-profile-definition/field-data/field-data'; + +export class DatePickerDataEditorModel extends FieldDataEditorModel { + public label: string; + + buildForm(): FormGroup { + const formGroup = this.formBuilder.group({ + label: [this.label] + }); + return formGroup; + } + + fromModel(item: DatePickerFieldData): DatePickerDataEditorModel { + this.label = item.label; + return this; + } +} diff --git a/dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-editor-model.ts b/dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-editor-model.ts index 4427f843c..d539b5069 100644 --- a/dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-editor-model.ts +++ b/dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-editor-model.ts @@ -13,6 +13,8 @@ import { TextAreaFieldDataEditorModel } from './field-data/text-area-field-data- import { WordListFieldDataEditorModel } from './field-data/word-list-field-data-editor-model'; import { ViewStyleEditorModel } from './view-style-editor-model'; import { VisibilityEditorModel } from './visibility-editor-model'; +import { DatasetProfileEditorDatePickerFieldComponent } from '../editor/components/field-type/datepicker/dataset-profile-editor-date-picker-field.component'; +import { DatePickerDataEditorModel } from './field-data/date-picker-data-editor-models'; export class FieldEditorModel extends BaseFormModel { @@ -45,6 +47,7 @@ export class FieldEditorModel extends BaseFormModel { if (this.viewStyle.renderStyle === 'textarea') { this.data = new TextAreaFieldDataEditorModel().fromModel(item.data); } if (this.viewStyle.renderStyle === 'freetext') { this.data = new FreeTextFieldDataEditorModel().fromModel(item.data); } if (this.viewStyle.renderStyle === 'booleanDecision') { this.data = new BooleanDecisionFieldDataEditorModel().fromModel(item.data); } + if (this.viewStyle.renderStyle === 'datePicker') { this.data = new DatePickerDataEditorModel().fromModel(item.data); } } } return this; diff --git a/dmp-frontend/src/app/ui/admin/dataset-profile/dataset-profile.module.ts b/dmp-frontend/src/app/ui/admin/dataset-profile/dataset-profile.module.ts index e41bef6ad..a90f0bc29 100644 --- a/dmp-frontend/src/app/ui/admin/dataset-profile/dataset-profile.module.ts +++ b/dmp-frontend/src/app/ui/admin/dataset-profile/dataset-profile.module.ts @@ -21,6 +21,7 @@ import { DatasetProfileEditorComponent } from './editor/dataset-profile-editor.c import { DatasetProfileCriteriaComponent } from './listing/criteria/dataset-profile.component'; import { DatasetProfileListingComponent } from './listing/dataset-profile-listing.component'; import { ConfirmationDialogModule } from '../../../library/confirmation-dialog/confirmation-dialog.module'; +import { DatasetProfileEditorDatePickerFieldComponent } from './editor/components/field-type/datepicker/dataset-profile-editor-date-picker-field.component'; @NgModule({ imports: [ @@ -46,6 +47,7 @@ import { ConfirmationDialogModule } from '../../../library/confirmation-dialog/c DatasetProfileEditorFreeTextFieldComponent, DatasetProfileEditorRadioBoxFieldComponent, DatasetProfileEditorTextAreaFieldComponent, + DatasetProfileEditorDatePickerFieldComponent, DatasetProfileEditorWordListFieldComponent, DatasetProfileEditorDefaultValueComponent diff --git a/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/composite-profile-editor-default-value/component-profile-editor-default-value.component.html b/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/composite-profile-editor-default-value/component-profile-editor-default-value.component.html index f06d9aaa3..99b31f13a 100644 --- a/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/composite-profile-editor-default-value/component-profile-editor-default-value.component.html +++ b/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/composite-profile-editor-default-value/component-profile-editor-default-value.component.html @@ -60,4 +60,15 @@ {{'GENERAL.VALIDATION.REQUIRED' | translate}} + + + + + + + {{'GENERAL.VALIDATION.REQUIRED' | translate}} + + \ No newline at end of file diff --git a/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/field-type/datepicker/dataset-profile-editor-date-picker-field.component.html b/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/field-type/datepicker/dataset-profile-editor-date-picker-field.component.html new file mode 100644 index 000000000..aeb72f4ed --- /dev/null +++ b/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/field-type/datepicker/dataset-profile-editor-date-picker-field.component.html @@ -0,0 +1,9 @@ +
+
{{'DATASET-PROFILE-EDITOR.STEPS.FORM.FIELD.FIELDS.FIELD-DATE-PICKER-TITLE' + | translate}}
+ + + +
\ No newline at end of file diff --git a/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/field-type/datepicker/dataset-profile-editor-date-picker-field.component.scss b/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/field-type/datepicker/dataset-profile-editor-date-picker-field.component.scss new file mode 100644 index 000000000..3db0dee74 --- /dev/null +++ b/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/field-type/datepicker/dataset-profile-editor-date-picker-field.component.scss @@ -0,0 +1,3 @@ +.full-width { + width: 100%; +} diff --git a/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/field-type/datepicker/dataset-profile-editor-date-picker-field.component.ts b/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/field-type/datepicker/dataset-profile-editor-date-picker-field.component.ts new file mode 100644 index 000000000..483284331 --- /dev/null +++ b/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/field-type/datepicker/dataset-profile-editor-date-picker-field.component.ts @@ -0,0 +1,18 @@ +import { Component, Input, OnInit } from '@angular/core'; +import { FormGroup } from '@angular/forms'; +import { DatePickerDataEditorModel } from '../../../../admin/field-data/date-picker-data-editor-models'; + +@Component({ + selector: 'app-dataset-profile-editor-date-picker-field-component', + styleUrls: ['./dataset-profile-editor-date-picker-field.component.scss'], + templateUrl: './dataset-profile-editor-date-picker-field.component.html' +}) +export class DatasetProfileEditorDatePickerFieldComponent implements OnInit { + + @Input() form: FormGroup; + private data: DatePickerDataEditorModel = new DatePickerDataEditorModel(); + + ngOnInit() { + if (!this.form.get('data')) { this.form.addControl('data', this.data.buildForm()); } + } +} diff --git a/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/field-type/free-text/dataset-profile-editor-free-text-field.component.html b/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/field-type/free-text/dataset-profile-editor-free-text-field.component.html index 4e285a97f..9509b5a57 100644 --- a/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/field-type/free-text/dataset-profile-editor-free-text-field.component.html +++ b/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/field-type/free-text/dataset-profile-editor-free-text-field.component.html @@ -1,8 +1,11 @@
-
{{'DATASET-PROFILE-EDITOR.STEPS.FORM.FIELD.FIELDS.FIELD-FREE-TEXT-TITLE' | translate}}
+
+ {{'DATASET-PROFILE-EDITOR.STEPS.FORM.FIELD.FIELDS.FIELD-FREE-TEXT-TITLE' | translate}}
- + -
+ \ No newline at end of file diff --git a/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/field/dataset-profile-editor-field.component.html b/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/field/dataset-profile-editor-field.component.html index 908050c10..58615d87b 100644 --- a/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/field/dataset-profile-editor-field.component.html +++ b/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/field/dataset-profile-editor-field.component.html @@ -15,6 +15,7 @@ {{enumUtils.toDatasetProfileFieldViewStyleString(viewStyleEnum.FreeText)}} {{enumUtils.toDatasetProfileFieldViewStyleString(viewStyleEnum.RadioBox)}} {{enumUtils.toDatasetProfileFieldViewStyleString(viewStyleEnum.TextArea)}} + {{enumUtils.toDatasetProfileFieldViewStyleString(viewStyleEnum.DatePicker)}} {{'GENERAL.VALIDATION.REQUIRED' | translate}} @@ -41,6 +42,8 @@ + + diff --git a/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/field/dataset-profile-editor-field.component.ts b/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/field/dataset-profile-editor-field.component.ts index 4dd3c74d3..63cf465b8 100644 --- a/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/field/dataset-profile-editor-field.component.ts +++ b/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/field/dataset-profile-editor-field.component.ts @@ -13,6 +13,7 @@ import { RadioBoxFieldDataEditorModel } from '../../../admin/field-data/radio-bo import { TextAreaFieldDataEditorModel } from '../../../admin/field-data/text-area-field-data-editor-model'; import { WordListFieldDataEditorModel } from '../../../admin/field-data/word-list-field-data-editor-model'; import { RuleEditorModel } from '../../../admin/rule-editor-model'; +import { DatePickerDataEditorModel } from '../../../admin/field-data/date-picker-data-editor-models'; @Component({ selector: 'app-dataset-profile-editor-field-component', @@ -66,6 +67,9 @@ export class DatasetProfileEditorFieldComponent extends BaseComponent implements case DatasetProfileFieldViewStyle.TextArea: this.form.addControl('data', new TextAreaFieldDataEditorModel().buildForm()); break; + case DatasetProfileFieldViewStyle.DatePicker: + this.form.addControl('data', new DatePickerDataEditorModel().buildForm()); + break; } } }); @@ -80,6 +84,7 @@ export class DatasetProfileEditorFieldComponent extends BaseComponent implements case DatasetProfileFieldViewStyle.FreeText: case DatasetProfileFieldViewStyle.ComboBox: case DatasetProfileFieldViewStyle.BooleanDecision: + case DatasetProfileFieldViewStyle.DatePicker: return false; default: return false; diff --git a/dmp-frontend/src/app/ui/admin/dataset-profile/editor/dataset-profile-editor.component.ts b/dmp-frontend/src/app/ui/admin/dataset-profile/editor/dataset-profile-editor.component.ts index 7f4025b8e..cdda82bf6 100644 --- a/dmp-frontend/src/app/ui/admin/dataset-profile/editor/dataset-profile-editor.component.ts +++ b/dmp-frontend/src/app/ui/admin/dataset-profile/editor/dataset-profile-editor.component.ts @@ -147,7 +147,7 @@ export class DatasetProfileEditorComponent extends BaseComponent implements OnIn } onSubmit() { - const data = this.form.value; + let data = this.form.value; if (this.datasetProfileId) { this.datasetProfileService.updateForm(this.datasetProfileId, data) @@ -156,6 +156,8 @@ export class DatasetProfileEditorComponent extends BaseComponent implements OnIn this.router.navigate(['/dataset-profiles']); }); } else { + this.form.get('status').setValue(0); + data = this.form.value; this.datasetProfileService.createForm(data) .pipe(takeUntil(this._destroyed)) .subscribe(() => { diff --git a/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-field/form-field.component.html b/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-field/form-field.component.html index c30df5897..52dacb3fd 100644 --- a/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-field/form-field.component.html +++ b/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-field/form-field.component.html @@ -1,44 +1,57 @@ -
+
{{this.form.get('title').value}}
-
{{this.form.get('description').value}}
-
{{this.form.get('extendedDescription').value}}
+
{{this.form.get('description').value}} +
+
+ {{this.form.get('extendedDescription').value}}
- + {{'GENERAL.VALIDATION.REQUIRED' | translate}}
- - + + - {{'GENERAL.VALIDATION.REQUIRED' | translate}} + {{'GENERAL.VALIDATION.REQUIRED' | translate}} + - - - {{opt.label}} + + + {{opt.label}} + - {{'GENERAL.VALIDATION.REQUIRED' | translate}} + {{'GENERAL.VALIDATION.REQUIRED' | translate}} +
- {{form.get('data').value.label}} + + {{form.get('data').value.label}}
- - {{'GENERAL.VALIDATION.REQUIRED' @@ -47,17 +60,38 @@
- Yes - No + Yes + + No + - {{'GENERAL.VALIDATION.REQUIRED' | translate}} + {{'GENERAL.VALIDATION.REQUIRED' | translate}} +
- {{option.label}} + {{option.label}} - {{'GENERAL.VALIDATION.REQUIRED' | translate}} + {{'GENERAL.VALIDATION.REQUIRED' | translate}} +
+ +
+ + + + + + {{'GENERAL.VALIDATION.REQUIRED' | translate}} + + +
+ + + +
\ No newline at end of file diff --git a/dmp-frontend/src/assets/i18n/en.json b/dmp-frontend/src/assets/i18n/en.json index 9317f7922..d4fea2439 100644 --- a/dmp-frontend/src/assets/i18n/en.json +++ b/dmp-frontend/src/assets/i18n/en.json @@ -136,7 +136,11 @@ "FIELD-AUTOCOMPLETE-LABEL": "Label", "FIELD-AUTOCOMPLETE-VALUE": "Value", "FIELD-AUTOCOMPLETE-URL": "Url", - "FIELD-AUTOCOMPLETE-OPTIONS-ROOT": "Options Root" + "FIELD-AUTOCOMPLETE-OPTIONS-ROOT": "Options Root", + "FIELD-DATE-PICKER-TITLE": "Date Picker", + "FIELD-DATE-PICKER-PLACEHOLDER": "Input Placeholder", + "FIELD-DATE-PICKER-LABEL": "Label", + "FIELD-DATE-PICKER-VALUE": "Value" }, "DEFAULT-VALUES": { "NONE": "None", @@ -487,7 +491,8 @@ "COMBO-BOX": "Combo Box", "FREE-TEXT": "Free Text", "RADIO-BOX": "Radio Box", - "TEXT-AREA": "Text Area" + "TEXT-AREA": "Text Area", + "DATE-PICKER":"Date Picker" }, "DATASET-PROFILE-COMBO-BOX-TYPE": { "WORD-LIST": "Word List",