From 7a60c3a435787cbc7cca5b927e9007c75922feed Mon Sep 17 00:00:00 2001 From: dtziotzios Date: Mon, 28 Jan 2019 14:18:48 +0200 Subject: [PATCH 1/2] dataset profile editor fix delete section in section dataset profile fix validation for save --- .../eu/eudat/controllers/DatasetProfileController.java | 4 ++-- .../data/admin/components/datasetprofile/Field.java | 3 ++- .../ui/admin/dataset-profile/admin/field-editor-model.ts | 2 +- .../dataset-profile-editor-section.component.html | 2 +- .../dataset/dataset-wizard/dataset-wizard.component.html | 2 +- .../form-composite-field.component.html | 6 +++--- .../form-composite-field.component.ts | 1 + .../components/form-field/form-field.component.ts | 4 ++-- .../components/form-section/form-section.component.html | 9 +++++---- .../components/form-section/form-section.component.ts | 1 + .../dataset-description-form.component.html | 2 +- .../dataset-description-form.component.ts | 1 + .../visibility-rules/visibility-rules.service.ts | 2 +- 13 files changed, 22 insertions(+), 17 deletions(-) diff --git a/dmp-backend/web/src/main/java/eu/eudat/controllers/DatasetProfileController.java b/dmp-backend/web/src/main/java/eu/eudat/controllers/DatasetProfileController.java index 1a72ac2a5..f53a59ae5 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/controllers/DatasetProfileController.java +++ b/dmp-backend/web/src/main/java/eu/eudat/controllers/DatasetProfileController.java @@ -74,8 +74,8 @@ public class DatasetProfileController extends BaseController { @RequestMapping(method = RequestMethod.POST, value = {"/search/autocomplete"}, consumes = "application/json", produces = "application/json") public ResponseEntity getDataForAutocomplete(@RequestBody RequestItem lookupItem) throws XPathExpressionException { - eu.eudat.data.entities.Dataset dataset = this.getApiContext().getOperationsContext().getDatabaseRepository().getDatasetDao().find(UUID.fromString(lookupItem.getCriteria().getProfileID())); - eu.eudat.models.data.entities.xmlmodels.datasetprofiledefinition.Field modelfield = DatasetProfileManager.queryForField(dataset.getProfile().getDefinition(), lookupItem.getCriteria().getFieldID()); + eu.eudat.data.entities.DatasetProfile datasetProfile = this.getApiContext().getOperationsContext().getDatabaseRepository().getDatasetProfileDao().find(UUID.fromString(lookupItem.getCriteria().getProfileID())); + eu.eudat.models.data.entities.xmlmodels.datasetprofiledefinition.Field modelfield = DatasetProfileManager.queryForField(datasetProfile.getDefinition(), lookupItem.getCriteria().getFieldID()); AutoCompleteData data = (AutoCompleteData) modelfield.getData(); List> items = DatasetProfileManager.getAutocomplete(data, lookupItem.getCriteria().getLike()); return ResponseEntity.status(HttpStatus.OK).body(items); diff --git a/dmp-backend/web/src/main/java/eu/eudat/models/data/admin/components/datasetprofile/Field.java b/dmp-backend/web/src/main/java/eu/eudat/models/data/admin/components/datasetprofile/Field.java index fb7819e83..66cecd752 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/models/data/admin/components/datasetprofile/Field.java +++ b/dmp-backend/web/src/main/java/eu/eudat/models/data/admin/components/datasetprofile/Field.java @@ -31,7 +31,8 @@ public class Field implements ViewStyleDefinition; - public validations: ValidationType[]; + public validations: ValidationType[] = []; fromModel(item: Field): FieldEditorModel { this.id = item.id; diff --git a/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/section/dataset-profile-editor-section.component.html b/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/section/dataset-profile-editor-section.component.html index 96c98a93f..52d24c71c 100644 --- a/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/section/dataset-profile-editor-section.component.html +++ b/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/section/dataset-profile-editor-section.component.html @@ -43,7 +43,7 @@
{{i + 1}}. {{form.get('sections').get(''+i).get('title').value}} -
diff --git a/dmp-frontend/src/app/ui/dataset/dataset-wizard/dataset-wizard.component.html b/dmp-frontend/src/app/ui/dataset/dataset-wizard/dataset-wizard.component.html index 0fd3866d0..21032c60a 100644 --- a/dmp-frontend/src/app/ui/dataset/dataset-wizard/dataset-wizard.component.html +++ b/dmp-frontend/src/app/ui/dataset/dataset-wizard/dataset-wizard.component.html @@ -69,7 +69,7 @@ {{'DATASET-WIZARD.THIRD-STEP.TITLE' | translate}}
- +
diff --git a/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-composite-field/form-composite-field.component.html b/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-composite-field/form-composite-field.component.html index 4f52c1b06..13131fc95 100644 --- a/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-composite-field/form-composite-field.component.html +++ b/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-composite-field/form-composite-field.component.html @@ -11,7 +11,7 @@
{{compositeField.extendedDescription}}
- +
@@ -31,10 +31,10 @@
- +
- +
diff --git a/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-composite-field/form-composite-field.component.ts b/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-composite-field/form-composite-field.component.ts index bd04a60f5..7f3e9a39e 100644 --- a/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-composite-field/form-composite-field.component.ts +++ b/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-composite-field/form-composite-field.component.ts @@ -11,6 +11,7 @@ import { VisibilityRulesService } from '../../visibility-rules/visibility-rules. export class FormCompositeFieldComponent implements OnInit { @Input() compositeField: DatasetDescriptionCompositeFieldEditorModel; + @Input() datasetProfileId: String; form: FormGroup; trackByFn = (index, item) => item ? item['id'] : null; diff --git a/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-field/form-field.component.ts b/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-field/form-field.component.ts index b85f5982c..ea1b40568 100644 --- a/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-field/form-field.component.ts +++ b/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-field/form-field.component.ts @@ -19,6 +19,7 @@ import { VisibilityRulesService } from '../../visibility-rules/visibility-rules. }) export class FormFieldComponent extends BaseComponent implements OnInit { @Input() field: Field; + @Input() datasetProfileId: String; form: FormGroup; change: Subscription; @@ -59,8 +60,7 @@ export class FormFieldComponent extends BaseComponent implements OnInit { const autocompleteRequestItem: RequestItem = new RequestItem(); autocompleteRequestItem.criteria = new DatasetExternalAutocompleteCriteria(); autocompleteRequestItem.criteria.fieldID = this.field.id; - //TODO: why do we need dataset id? - //autocompleteRequestItem.criteria.profileID = this.datasetId; + autocompleteRequestItem.criteria.profileID = this.datasetProfileId; return this.datasetExternalAutocompleteService.queryAutocomplete(autocompleteRequestItem); } diff --git a/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-section/form-section.component.html b/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-section/form-section.component.html index 65f26c7e2..01d959db5 100644 --- a/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-section/form-section.component.html +++ b/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-section/form-section.component.html @@ -18,10 +18,11 @@ Add one more fieldset +
- +
- + @@ -35,9 +36,9 @@
- +
-
+ \ No newline at end of file diff --git a/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-section/form-section.component.ts b/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-section/form-section.component.ts index a55e30d8c..086238541 100644 --- a/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-section/form-section.component.ts +++ b/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-section/form-section.component.ts @@ -12,6 +12,7 @@ import { VisibilityRulesService } from '../../visibility-rules/visibility-rules. }) export class FormSectionComponent implements OnInit, AfterViewInit { + @Input() datasetProfileId: String; @Input() section: DatasetDescriptionSectionEditorModel; form: FormGroup; @Input() pathName: string; diff --git a/dmp-frontend/src/app/ui/misc/dataset-description-form/dataset-description-form.component.html b/dmp-frontend/src/app/ui/misc/dataset-description-form/dataset-description-form.component.html index ec6c4e87d..8cd24c943 100644 --- a/dmp-frontend/src/app/ui/misc/dataset-description-form/dataset-description-form.component.html +++ b/dmp-frontend/src/app/ui/misc/dataset-description-form/dataset-description-form.component.html @@ -9,7 +9,7 @@ {{page.title}}
- +
diff --git a/dmp-frontend/src/app/ui/misc/dataset-description-form/dataset-description-form.component.ts b/dmp-frontend/src/app/ui/misc/dataset-description-form/dataset-description-form.component.ts index e062af7a5..7a5d08d8b 100644 --- a/dmp-frontend/src/app/ui/misc/dataset-description-form/dataset-description-form.component.ts +++ b/dmp-frontend/src/app/ui/misc/dataset-description-form/dataset-description-form.component.ts @@ -32,6 +32,7 @@ export class DatasetDescriptionFormComponent extends BaseComponent implements On @Input() dataModel: DatasetProfileDefinitionModel; @Input() path: string; @Input() form: FormGroup; + @Input() datasetProfileId: String; id: string; trackByFn = (index, item) => item ? item['id'] : null; pageTrackByFn = (index, item) => item['id']; diff --git a/dmp-frontend/src/app/ui/misc/dataset-description-form/visibility-rules/visibility-rules.service.ts b/dmp-frontend/src/app/ui/misc/dataset-description-form/visibility-rules/visibility-rules.service.ts index 08949891c..d719c2341 100644 --- a/dmp-frontend/src/app/ui/misc/dataset-description-form/visibility-rules/visibility-rules.service.ts +++ b/dmp-frontend/src/app/ui/misc/dataset-description-form/visibility-rules/visibility-rules.service.ts @@ -52,7 +52,7 @@ export class VisibilityRulesService { public updateValueAndVisibility(id: string) { const visibilityRules = this.visibilityRuleContext.rules.filter(item => item.sourceVisibilityRules.filter(source => source.sourceControlId === id).length > 0); - visibilityRules.forEach(item => this.evaluateVisibility(item)); + //visibilityRules.forEach(item => this.evaluateVisibility(item)); } private evaluateVisibility(visibilityRule: VisibilityRule) { From df51afe83344e5ee398f54d9a0a0b48f41588e16 Mon Sep 17 00:00:00 2001 From: dtziotzios Date: Mon, 28 Jan 2019 15:05:19 +0200 Subject: [PATCH 2/2] try to fix the ComboBox --- .../field-data/field-data.ts | 2 +- .../auto-complete-field-data-editor-model.ts | 3 +- .../combo-box-field-data-editor-model.ts | 34 ++++++++++ .../word-list-field-data-editor-model.ts | 4 +- .../admin/field-editor-model.ts | 1 + ...rofile-editor-combo-box-field.component.ts | 37 ++++++++++- ...ataset-profile-editor-field.component.html | 4 +- .../dataset-profile-editor-field.component.ts | 66 ++++++++++++++++--- .../dataset-description-form.model.ts | 4 ++ 9 files changed, 136 insertions(+), 19 deletions(-) create mode 100644 dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-data/combo-box-field-data-editor-model.ts 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 1c6993e12..fdeffeccc 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 @@ -5,7 +5,7 @@ export interface FieldData { } export interface AutoCompleteFieldData extends FieldData { - type: string; + type: DatasetProfileComboBoxType; url: string; optionsRoot: string; autoCompleteOptions: FieldDataOption; diff --git a/dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-data/auto-complete-field-data-editor-model.ts b/dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-data/auto-complete-field-data-editor-model.ts index 9bf2a659f..fbcc694f6 100644 --- a/dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-data/auto-complete-field-data-editor-model.ts +++ b/dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-data/auto-complete-field-data-editor-model.ts @@ -1,11 +1,12 @@ import { FormGroup } from '@angular/forms'; +import { DatasetProfileComboBoxType } from '../../../../../core/common/enum/dataset-profile-combo-box-type'; import { AutoCompleteFieldData } from '../../../../../core/model/dataset-profile-definition/field-data/field-data'; import { FieldDataEditorModel } from './field-data-editor-model'; import { FieldDataOptionEditorModel } from './field-data-option-editor-model'; export class AutoCompleteFieldDataEditorModel extends FieldDataEditorModel { - public type: string; + public type: DatasetProfileComboBoxType = DatasetProfileComboBoxType.Autocomplete; public url: string; public optionsRoot: string; public autoCompleteOptions: FieldDataOptionEditorModel = new FieldDataOptionEditorModel(); diff --git a/dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-data/combo-box-field-data-editor-model.ts b/dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-data/combo-box-field-data-editor-model.ts new file mode 100644 index 000000000..f0998ef72 --- /dev/null +++ b/dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-data/combo-box-field-data-editor-model.ts @@ -0,0 +1,34 @@ +import { FormGroup } from '@angular/forms'; +import { DatasetProfileComboBoxType } from '../../../../../core/common/enum/dataset-profile-combo-box-type'; +import { WordListFieldData } from '../../../../../core/model/dataset-profile-definition/field-data/field-data'; +import { FieldDataEditorModel } from './field-data-editor-model'; +import { FieldDataOptionEditorModel } from './field-data-option-editor-model'; + +export class WordListFieldDataEditorModel extends FieldDataEditorModel { + public type: DatasetProfileComboBoxType = DatasetProfileComboBoxType.WordList; + public options: Array; + + buildForm(): FormGroup { + const formGroup = this.formBuilder.group({ + type: [this.type], + label: [this.label] + }); + const optionsFormArray = new Array(); + if (this.options) { + this.options.forEach(item => { + const form: FormGroup = item.buildForm(); + optionsFormArray.push(form); + }); + } + formGroup.addControl('options', this.formBuilder.array(optionsFormArray)); + + return formGroup; + } + + fromModel(item: WordListFieldData): WordListFieldDataEditorModel { + this.type = item.type; + if (item.options) { this.options = item.options.map(x => new FieldDataOptionEditorModel().fromModel(x)); } + this.label = item.label; + return this; + } +} diff --git a/dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-data/word-list-field-data-editor-model.ts b/dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-data/word-list-field-data-editor-model.ts index 174dc758e..f0998ef72 100644 --- a/dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-data/word-list-field-data-editor-model.ts +++ b/dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-data/word-list-field-data-editor-model.ts @@ -5,7 +5,7 @@ import { FieldDataEditorModel } from './field-data-editor-model'; import { FieldDataOptionEditorModel } from './field-data-option-editor-model'; export class WordListFieldDataEditorModel extends FieldDataEditorModel { - public type: DatasetProfileComboBoxType; + public type: DatasetProfileComboBoxType = DatasetProfileComboBoxType.WordList; public options: Array; buildForm(): FormGroup { @@ -27,7 +27,7 @@ export class WordListFieldDataEditorModel extends FieldDataEditorModel new FieldDataOptionEditorModel().fromModel(x)); } + if (item.options) { this.options = item.options.map(x => new FieldDataOptionEditorModel().fromModel(x)); } 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 dfe280a3a..83815402b 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 @@ -70,6 +70,7 @@ export class FieldEditorModel extends BaseFormModel { formGroup.addControl('visible', this.visible.buildForm()); //formGroup.addControl("data",this.data? this.data.buildForm():this.formBuilder.group({})); if (this.data) { formGroup.addControl('data', this.data.buildForm()); } + else { formGroup.addControl('data', new WordListFieldDataEditorModel().buildForm()); } return formGroup; } diff --git a/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/field-type/combo-box/dataset-profile-editor-combo-box-field.component.ts b/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/field-type/combo-box/dataset-profile-editor-combo-box-field.component.ts index 8e6feb7b5..84504b398 100644 --- a/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/field-type/combo-box/dataset-profile-editor-combo-box-field.component.ts +++ b/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/field-type/combo-box/dataset-profile-editor-combo-box-field.component.ts @@ -1,9 +1,9 @@ import { Component, Input, OnInit } from '@angular/core'; import { FormGroup } from '@angular/forms'; -import { DatasetProfileComboBoxType } from '../../../../../../../core/common/enum/dataset-profile-combo-box-type'; -import { EnumUtils } from '../../../../../../../core/services/utilities/enum-utils.service'; import { takeUntil } from 'rxjs/operators'; import { BaseComponent } from '../../../../../../../core/common/base/base.component'; +import { DatasetProfileComboBoxType } from '../../../../../../../core/common/enum/dataset-profile-combo-box-type'; +import { EnumUtils } from '../../../../../../../core/services/utilities/enum-utils.service'; @Component({ selector: 'app-dataset-profile-editor-combo-box-field-component', @@ -20,10 +20,41 @@ export class DatasetProfileEditorComboBoxFieldComponent extends BaseComponent im ) { super(); } ngOnInit() { + // this.form.get('data').get('type').valueChanges + // .pipe(takeUntil(this._destroyed)) + // .subscribe(x => { + // if (x === "autocomplete") { + // //if(!this.form.get('data').get('url')) this.form.addControl('data', new AutoCompleteFieldDataEditorModel().buildForm()); + // //delete + // if (this.form.get('data').get('options')) (this.form.get('data')).removeControl('options'); + // //add + // if (!this.form.get('data').get('url')) (this.form.get('data')).addControl('url', new FormControl('')); + // if (!this.form.get('data').get('optionsRoot')) (this.form.get('data')).addControl('optionsRoot', new FormControl('')); + // if (!this.form.get('data').get('autoCompleteOptions')) (this.form.get('data')).addControl('autoCompleteOptions', new FormControl('')); + + // } else if (x === "wordlist") { + // //this.form.addControl('data', new WordListFieldDataEditorModel().buildForm()); + // //delete + // if (this.form.get('data').get('url')) (this.form.get('data')).removeControl('url'); + // if (this.form.get('data').get('optionsRoot')) (this.form.get('data')).removeControl('optionsRoot'); + // if (this.form.get('data').get('autoCompleteOptions')) (this.form.get('data')).removeControl('autoCompleteOptions'); + // //add + // if (!this.form.get('data').get('options')) (this.form.get('data')).addControl('options', new FormControl); + // } + + // }); this.form.get('data').get('type').valueChanges .pipe(takeUntil(this._destroyed)) .subscribe(x => { - if (this.form.get('data')) { this.form.removeControl('data'); } + if (this.form.get('data')) { + this.form.removeControl('data'); + if(x==="autocomplete"){ + this.form.addControl('data',new AutoCompleteFieldDataEditorModel().buildForm()); + }else if(x==="wordlist"){ + this.form.addControl('data',new WordListFieldDataEditorModel().buildForm()); + } + } }) + } } 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 25a6e59dd..8e1525dbb 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 @@ -4,7 +4,7 @@ - + {{enumUtils.toDatasetProfileFieldViewStyleString(viewStyleEnum.BooleanDecision)}} {{enumUtils.toDatasetProfileFieldViewStyleString(viewStyleEnum.CheckBox)}} {{enumUtils.toDatasetProfileFieldViewStyleString(viewStyleEnum.ComboBox)}} @@ -21,7 +21,7 @@ - {{enumUtils.toDatasetProfileFieldValidationTypeString(option)}} + {{enumUtils.toDatasetProfileFieldValidationTypeString(validationTypeEnum.Required)}} 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 32e9d820b..cee2c6f62 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 @@ -1,30 +1,40 @@  -import { Component, Input, OnInit } from '@angular/core'; -import { FormArray, FormControl, FormGroup } from '@angular/forms'; +import { Component, Input, OnInit, ViewChild } from '@angular/core'; +import { FormBuilder, FormControl, FormGroup, Validators, FormArray } from '@angular/forms'; import { ValidationType } from '../../../../../../core/common/enum/validation-type'; import { EnumUtils } from '../../../../../../core/services/utilities/enum-utils.service'; import { RuleEditorModel } from '../../../admin/rule-editor-model'; import { DatasetProfileFieldViewStyle } from '../../../../../../core/common/enum/dataset-profile-field-view-style'; +import { RadioBoxFieldDataEditorModel } from '../../../admin/field-data/radio-box-field-data-editor-model'; +import { DatasetProfileEditorComboBoxFieldComponent } from '../field-type/combo-box/dataset-profile-editor-combo-box-field.component'; +import { takeUntil } from 'rxjs/operators'; +import { BaseComponent } from '../../../../../../core/common/base/base.component'; +import { ViewStyleEditorModel } from '../../../admin/view-style-editor-model'; +import { TextAreaFieldDataEditorModel } from '../../../admin/field-data/text-area-field-data-editor-model'; +import { BooleanDecisionFieldDataEditorModel } from '../../../admin/field-data/boolean-decision-field-data-editor-model'; +import { CheckBoxFieldDataEditorModel } from '../../../admin/field-data/check-box-field-data-editor-model'; +import { FreeTextFieldDataEditorModel } from '../../../admin/field-data/free-text-field-data-editor-model'; +import { WordListFieldDataEditorModel } from '../../../admin/field-data/word-list-field-data-editor-model'; +import { AutoCompleteFieldDataEditorModel } from '../../../admin/field-data/auto-complete-field-data-editor-model'; @Component({ selector: 'app-dataset-profile-editor-field-component', templateUrl: './dataset-profile-editor-field.component.html', styleUrls: ['./dataset-profile-editor-field.component.scss'] }) -export class DatasetProfileEditorFieldComponent implements OnInit { +export class DatasetProfileEditorFieldComponent extends BaseComponent implements OnInit { @Input() form: FormGroup; @Input() showMultiplicity = true; @Input() showOrdinal = true; @Input() indexPath: string; - validationsOptions: ValidationType[] = this.enumUtils.getEnumValues(ValidationType); + validationTypeEnum = ValidationType; viewStyleEnum = DatasetProfileFieldViewStyle; isFieldMultiplicityEnabled = false; constructor( public enumUtils: EnumUtils - ) { - } + ) { super(); } ngOnInit() { if (this.form.get('multiplicity')) { @@ -33,6 +43,46 @@ export class DatasetProfileEditorFieldComponent implements OnInit { } } // this.addNewRule(); + + this.form.get('viewStyle').get('renderStyle').valueChanges + .pipe(takeUntil(this._destroyed)) + .subscribe(x => { + if (this.form.get('data')) { + this.form.removeControl('data'); + + switch (x) { + case DatasetProfileFieldViewStyle.BooleanDecision: + this.form.addControl('data', new BooleanDecisionFieldDataEditorModel().buildForm()); + break; + + case DatasetProfileFieldViewStyle.CheckBox: + this.form.addControl('data', new CheckBoxFieldDataEditorModel().buildForm()); + break; + + case DatasetProfileFieldViewStyle.ComboBox: + //this.form.removeControl('data'); + this.form.addControl('data', new FormGroup({})); + (this.form.get('data')).addControl('type', new FormControl('')); + (this.form.get('data')).addControl('label', new FormControl('')); + //this.form.get('data').get('type').setValue("autocomplete"); + + + break; + + case DatasetProfileFieldViewStyle.FreeText: + this.form.addControl('data', new FreeTextFieldDataEditorModel().buildForm()); + break; + + case DatasetProfileFieldViewStyle.RadioBox: + this.form.addControl('data', new RadioBoxFieldDataEditorModel().buildForm()); + break; + + case DatasetProfileFieldViewStyle.TextArea: + this.form.addControl('data', new TextAreaFieldDataEditorModel().buildForm()); + break; + } + } + }); } onIsFieldMultiplicityEnabledChange(isFieldMultiplicityEnabled: boolean) { @@ -46,8 +96,4 @@ export class DatasetProfileEditorFieldComponent implements OnInit { const rule: RuleEditorModel = new RuleEditorModel(); (this.form.get('visible').get('rules')).push(rule.buildForm()); } - - onchangeCombo() { - if (this.form.get('data')) { this.form.removeControl('data'); } - } } diff --git a/dmp-frontend/src/app/ui/misc/dataset-description-form/dataset-description-form.model.ts b/dmp-frontend/src/app/ui/misc/dataset-description-form/dataset-description-form.model.ts index 446d63a58..a6b63b3e0 100644 --- a/dmp-frontend/src/app/ui/misc/dataset-description-form/dataset-description-form.model.ts +++ b/dmp-frontend/src/app/ui/misc/dataset-description-form/dataset-description-form.model.ts @@ -172,6 +172,10 @@ export class DatasetDescriptionCompositeFieldEditorModel extends BaseFormModel { this.fields.forEach(field => { newItem.fields.push(field.cloneForMultiplicity(this.fields.indexOf(field), newItem.id + '_')); }); + + // put on new item only the first (Fields) value and the last (Fields) value + // the first is on "fields":[{},{}] + // and the New is on "multiplicityItem":[{ fields":[{},{}] },{ fields":[{},{}] }] newItem.ordinal = this.ordinal; return newItem;