diff --git a/dmp-backend/web/src/main/java/eu/eudat/models/data/user/components/datasetprofile/Field.java b/dmp-backend/web/src/main/java/eu/eudat/models/data/user/components/datasetprofile/Field.java index 6c7e2c636..f01ecf678 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/models/data/user/components/datasetprofile/Field.java +++ b/dmp-backend/web/src/main/java/eu/eudat/models/data/user/components/datasetprofile/Field.java @@ -141,7 +141,7 @@ public class Field implements Comparable, PropertiesModelBuilder, ViewStyleDefin Field newField = new Field(); newField.id = key; newField.ordinal = this.ordinal; - newField.value = (String) properties.get(key); + newField.value = properties.containsKey(key)? (String) properties.get(key): null; newField.viewStyle = this.viewStyle; newField.datatype = this.datatype; newField.page = this.page; diff --git a/dmp-backend/web/src/main/java/eu/eudat/models/data/user/components/datasetprofile/FieldSet.java b/dmp-backend/web/src/main/java/eu/eudat/models/data/user/components/datasetprofile/FieldSet.java index d3a60acba..7df5bba0c 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/models/data/user/components/datasetprofile/FieldSet.java +++ b/dmp-backend/web/src/main/java/eu/eudat/models/data/user/components/datasetprofile/FieldSet.java @@ -5,7 +5,9 @@ import eu.eudat.models.data.properties.PropertiesGenerator; import eu.eudat.models.data.user.composite.PropertiesModelBuilder; import eu.eudat.logic.utilities.builders.ModelBuilder; import eu.eudat.logic.utilities.interfaces.ViewStyleDefinition; +import sun.rmi.runtime.NewThreadAction; +import java.security.Key; import java.util.*; import java.util.stream.Collectors; @@ -149,35 +151,32 @@ public class FieldSet implements Comparable, PropertiesModelBuilder, ViewStyleDe this.fields.forEach(item -> { item.fromJsonObject(properties); }); - - List compositeKeys = properties.keySet().stream().filter(keys -> keys.startsWith("multiple_" + this.getId())).collect(Collectors.toList()); - for (String key : compositeKeys) { - this.multiplicityItems.add(this.cloneForMultiplicity(key, compositeKeys.indexOf(key), properties)); + List compositeKeysFather = properties.keySet().stream().filter(keys -> keys.startsWith("multiple_" + this.getId())).collect(Collectors.toList()); + List Ids=new ArrayList<>(); + for (String composite : compositeKeysFather) { + String[] split = composite.split("_"); + if (!Ids.contains(split[2])) { + Ids.add(split[2]); + this.multiplicityItems.add(this.CloneForMultiplicity2(properties.keySet().stream().filter(keys -> keys.startsWith("multiple_" + this.getId() + "_" + split[2])).collect(Collectors.toList()), properties,split)); + } } } - private FieldSet cloneForMultiplicity(String key, int index, Map properties) { + private FieldSet CloneForMultiplicity2(List key, Map properties,String[] ids){ FieldSet newFieldSet = new FieldSet(); - newFieldSet.id = key; + newFieldSet.id = ids[0]+"_"+ids[1]+"_"+ids[2]; newFieldSet.description = this.description; newFieldSet.extendedDescription = this.extendedDescription; newFieldSet.title = this.title; - newFieldSet.ordinal = this.ordinal; newFieldSet.fields = new LinkedList(); - this.fields.forEach(item -> { - newFieldSet.fields.add(item.cloneForMultiplicity(key, properties)); - }); - //newFieldSet.fields.forEach(item->item.fromJsonObject(properties)); + for (Field field: this.fields) { + newFieldSet.fields.add(field.cloneForMultiplicity(newFieldSet.id + "_" + field.getId(), properties)); + } return newFieldSet; } - private void createMultiplicityFields(List
fieldSet, Field field) { - FieldSet newFieldSet = new FieldSet(); - newFieldSet.fields = new LinkedList(); - newFieldSet.fields.add(field); - fieldSet.add(newFieldSet); - } + @Override public int compareTo(Object o) { diff --git a/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/field-type/radio-box/dataset-profile-editor-radio-box-field.component.html b/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/field-type/radio-box/dataset-profile-editor-radio-box-field.component.html index 1309c55b7..6227ff8df 100644 --- a/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/field-type/radio-box/dataset-profile-editor-radio-box-field.component.html +++ b/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/field-type/radio-box/dataset-profile-editor-radio-box-field.component.html @@ -1,24 +1,32 @@
-
{{'DATASET-PROFILE-EDITOR.STEPS.FORM.FIELD.FIELDS.FIELD-RADIO-BOX-TITLE' | translate}}
+
{{'DATASET-PROFILE-EDITOR.STEPS.FORM.FIELD.FIELDS.FIELD-RADIO-BOX-TITLE' + | translate}}
- +
- + - + - +
- - + +
-
+ \ No newline at end of file diff --git a/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/field-type/word-list/dataset-profile-editor-word-list-field.component.html b/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/field-type/word-list/dataset-profile-editor-word-list-field.component.html index bcca0780c..4925f223a 100644 --- a/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/field-type/word-list/dataset-profile-editor-word-list-field.component.html +++ b/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/field-type/word-list/dataset-profile-editor-word-list-field.component.html @@ -1,22 +1,29 @@
-
{{'DATASET-PROFILE-EDITOR.STEPS.FORM.FIELD.FIELDS.FIELD-WORD-LIST-TITLE' | translate}}
+
{{'DATASET-PROFILE-EDITOR.STEPS.FORM.FIELD.FIELDS.FIELD-WORD-LIST-TITLE' + | translate}}
- +
- - + + - - + + +
-
+ \ No newline at end of file diff --git a/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/field-type/word-list/dataset-profile-editor-word-list-field.component.ts b/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/field-type/word-list/dataset-profile-editor-word-list-field.component.ts index 857262d63..e9bee35d2 100644 --- a/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/field-type/word-list/dataset-profile-editor-word-list-field.component.ts +++ b/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/field-type/word-list/dataset-profile-editor-word-list-field.component.ts @@ -22,4 +22,8 @@ export class DatasetProfileEditorWordListFieldComponent implements OnInit { const wordListOptions: FieldDataOptionEditorModel = new FieldDataOptionEditorModel(); (this.form.get('data').get('options')).push(wordListOptions.buildForm()); } + + deleteRow(intex: number) { + if (this.form.get('data').get('options')) { (this.form.get('data').get('options')).removeAt(intex); } + } } 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 4e522118b..657d775e2 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 @@ -10,11 +10,17 @@ Mark For Consideration --> -
{{form.get('description').value}}
+
{{form.get('description').value}}
{{form.get('extendedDescription').value}}
- + + + +
@@ -22,25 +28,24 @@
{{form.get('numbering').value}} {{form.get('title').value}}
{{form.get('description').value}}
-
- {{form.get('extendedDescription').value}} -
+
{{form.get('extendedDescription').value}}
-
+ -
+
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 09ec6123f..881507f44 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 @@ -23,11 +23,11 @@ export class FormCompositeFieldComponent { ngOnInit() { } - addMultipleField(fieldIndex: number) { - const compositeFieldToBeCloned = (this.form.get('compositeFields').get('' + fieldIndex) as FormGroup).getRawValue(); - const compositeField: DatasetDescriptionCompositeFieldEditorModel = new DatasetDescriptionCompositeFieldEditorModel().cloneForMultiplicity(compositeFieldToBeCloned); - ((this.form.get('compositeFields').get('' + fieldIndex).get('multiplicityItems'))).push(compositeField.buildForm()); - } + // addMultipleField(fieldIndex: number) { + // const compositeFieldToBeCloned = (this.form.get('compositeFields').get('' + fieldIndex) as FormGroup).getRawValue(); + // const compositeField: DatasetDescriptionCompositeFieldEditorModel = new DatasetDescriptionCompositeFieldEditorModel().cloneForMultiplicity(compositeFieldToBeCloned); + // ((this.form.get('compositeFields').get('' + fieldIndex).get('multiplicityItems'))).push(compositeField.buildForm()); + // } // markForConsideration() { // this.markForConsiderationService.markForConsideration(this.compositeField); 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 1dcf718e6..f15c38054 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 @@ -20,7 +20,7 @@ export class FormFieldComponent extends BaseComponent implements OnInit { // @Input() field: Field; @Input() form: FormGroup; @Input() datasetProfileId: String; - @Input() isChild: Boolean =false; + @Input() isChild: Boolean = false; // change: Subscription; // trackByFn = (index, item) => item ? item['id'] : null; @@ -35,7 +35,9 @@ export class FormFieldComponent extends BaseComponent implements OnInit { ) { super(); } ngOnInit() { - //if (this.field) { + if (this.form.get('value').value) { + this.visibilityRulesService.updateValueAndVisibility(this.form.get('id').value, this.form.get('value').value); + } // Setup autocomplete configuration if needed if (this.form.get('viewStyle').value.renderStyle === DatasetProfileFieldViewStyle.ComboBox && this.form.get('data').value.type === DatasetProfileComboBoxType.Autocomplete) { diff --git a/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-progress-indication/form-progress-indication.component.ts b/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-progress-indication/form-progress-indication.component.ts index d2595f4fb..c704e231d 100644 --- a/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-progress-indication/form-progress-indication.component.ts +++ b/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-progress-indication/form-progress-indication.component.ts @@ -30,6 +30,7 @@ export class FormProgressIndicationComponent extends BaseComponent implements On const progressSoFar = this.countFormControlsWithValue(this.formGroup); const total = this.getFormControlDepthLength(this.formGroup); const perc = (progressSoFar / total) * 100; + // const perc = ((progressSoFar-this.StandarValues) / total) * 100; this.value = Number.parseFloat(perc.toPrecision(this.progressValueAccuracy)); } @@ -37,21 +38,31 @@ export class FormProgressIndicationComponent extends BaseComponent implements On let value = 0; Object.keys(form.controls).forEach(key => { const control = form.controls[key]; - if (control instanceof FormGroup) { value += this.countFormControlsWithValue(control); } else if (control instanceof FormArray) { + if (control instanceof FormGroup) { + value += this.countFormControlsWithValue(control); + } else if (control instanceof FormArray) { const formArray = (control); for (let i = 0; i < formArray.length; i++) { value += this.countFormControlsWithValue(formArray.get('' + i)); } - } else if (key === 'value' && control.value != null && control.value !== '') { value++; } + } else if (key === 'value' && control.value != null && control.value !== '' && this.visibilityRulesService.checkElementVisibility(form.controls['id'].value)) { + value++; + } }); return value; } + + + + getFormControlDepthLength(form: FormGroup): number { let value = 0; Object.keys(form.controls).forEach(key => { const control = form.controls[key]; - if (control instanceof FormGroup) { value += this.getFormControlDepthLength(control); } else if (control instanceof FormArray) { + if (control instanceof FormGroup) { + value += this.getFormControlDepthLength(control); + } else if (control instanceof FormArray) { const formArray = (control); for (let i = 0; i < formArray.length; i++) { if (formArray.get('' + i).value && this.visibilityRulesService.checkElementVisibility(formArray.get('' + i).value.id)) { 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 d79b131b8..9fd170c9f 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 @@ -20,11 +20,21 @@ Add one more fieldset +
- +
- +
+
+ +
+ +
+
+
diff --git a/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-section/form-section.component.scss b/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-section/form-section.component.scss index 3d10c28e0..8edce2c4c 100644 --- a/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-section/form-section.component.scss +++ b/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-section/form-section.component.scss @@ -3,3 +3,8 @@ margin-bottom: 1em; } } +.styleBorder{ + border: 1px solid lightgray; + border-radius: 0.5em; + margin-bottom: 0.5em; +} 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 e74cbf4c1..2d17c1c31 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 @@ -39,6 +39,10 @@ export class FormSectionComponent implements OnInit { ((this.form.get('compositeFields').get('' + fieldsetIndex).get('multiplicityItems'))).push(compositeField.buildForm()); } + deleteMultipeFieldFromCompositeFormGroup(compositeFildIndex: number, fildIndex: number) { + ((this.form.get('compositeFields').get('' + compositeFildIndex).get('multiplicityItems'))).removeAt(fildIndex); + } + // isElementVisible(fieldSet: CompositeField): boolean { // return fieldSet && fieldSet.fields && fieldSet.fields.length > 0 // } 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 a0ddde382..35b595ea0 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 @@ -188,7 +188,7 @@ export class DatasetDescriptionCompositeFieldEditorModel extends BaseFormModel { const newItem: DatasetDescriptionCompositeFieldEditorModel = new DatasetDescriptionCompositeFieldEditorModel(); newItem.id = 'multiple_' + item.id + '_' + Guid.create(); item.fields.forEach((field, index) => { - newItem.fields.push(new DatasetDescriptionFieldEditorModel().cloneForMultiplicity(field, newItem.id + '_')); + newItem.fields.push(new DatasetDescriptionFieldEditorModel().cloneForMultiplicity(field, newItem.id)); }); newItem.ordinal = item.ordinal; return newItem; @@ -275,10 +275,11 @@ export class DatasetDescriptionFieldEditorModel extends BaseFormModel { // return newItem; // } - cloneForMultiplicity(item: Field,idPath: string): DatasetDescriptionFieldEditorModel { + cloneForMultiplicity(item: Field, idPath: string): DatasetDescriptionFieldEditorModel { const newItem: DatasetDescriptionFieldEditorModel = new DatasetDescriptionFieldEditorModel(); - newItem.id = idPath ? idPath + Guid.create() : 'multiple_' + item.id + '_' + Guid.create(); + //newItem.id = idPath ? idPath : 'multiple_' + item.id + '_' + Guid.create(); + newItem.id = idPath ? idPath + '_' + item.id : 'multiple_' + Guid.create() + '_' + item.id; newItem.title = item.title; newItem.description = item.description; newItem.extendedDescription = item.extendedDescription;