From ba865c9708ec28d895fa209536922b177da38b9a Mon Sep 17 00:00:00 2001 From: Kristan Ntavidi Date: Fri, 17 Sep 2021 12:12:48 +0300 Subject: [PATCH] Dataset Editor (Researchers Page). Incrementing ordinals on multiplicity items. --- .../form-composite-field.component.ts | 7 +++++++ .../form-section-inner.component.ts | 15 ++++++++++++--- .../form-section/form-section.component.ts | 15 ++++++++++++--- .../dataset-description-form.model.ts | 4 ++-- 4 files changed, 33 insertions(+), 8 deletions(-) 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 9776cf201..341749ef1 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 @@ -61,6 +61,13 @@ export class FormCompositeFieldComponent { const parent = this.form.parent; const index = (parent as FormArray).controls.indexOf(this.form); (parent as FormArray).removeAt(index); + (parent as FormArray).controls.forEach((control, i)=>{ + try{ + control.get('ordinal').setValue(i); + }catch{ + throw 'Could not find ordinal'; + } + }); // ((this.form as AbstractControl)).removeAt(fildIndex); } } diff --git a/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-section/form-section-inner/form-section-inner.component.ts b/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-section/form-section-inner/form-section-inner.component.ts index b6298840a..c14967308 100644 --- a/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-section/form-section-inner/form-section-inner.component.ts +++ b/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-section/form-section-inner/form-section-inner.component.ts @@ -58,8 +58,9 @@ export class FormSectionInnerComponent implements OnInit, OnChanges { addMultipleField(fieldsetIndex: number) { const compositeFieldToBeCloned = (this.form.get('compositeFields').get('' + fieldsetIndex) as FormGroup).getRawValue(); - const compositeField: DatasetDescriptionCompositeFieldEditorModel = new DatasetDescriptionCompositeFieldEditorModel().cloneForMultiplicity(compositeFieldToBeCloned); - ((this.form.get('compositeFields').get('' + fieldsetIndex).get('multiplicityItems'))).push(compositeField.buildForm()); + const multiplicityItemsArray = ((this.form.get('compositeFields').get('' + fieldsetIndex).get('multiplicityItems'))); + const compositeField: DatasetDescriptionCompositeFieldEditorModel = new DatasetDescriptionCompositeFieldEditorModel().cloneForMultiplicity(compositeFieldToBeCloned, multiplicityItemsArray.length); + multiplicityItemsArray.push(compositeField.buildForm()); } deleteCompositeFieldFormGroup(compositeFildIndex: number) { @@ -72,7 +73,15 @@ export class FormSectionInnerComponent implements OnInit, OnChanges { } deleteMultipeFieldFromCompositeFormGroup(compositeFildIndex: number, fildIndex: number) { - ((this.form.get('compositeFields').get('' + compositeFildIndex).get('multiplicityItems'))).removeAt(fildIndex); + const multiplicityItemsArray = ((this.form.get('compositeFields').get('' + compositeFildIndex).get('multiplicityItems'))) + multiplicityItemsArray.removeAt(fildIndex); + multiplicityItemsArray.controls.forEach((control, i)=>{ + try{ + control.get('ordinal').setValue(i); + }catch{ + throw 'Could not find ordinal'; + } + }); } // isElementVisible(fieldSet: CompositeField): boolean { 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 33eb6c076..66f67db4f 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 @@ -70,8 +70,9 @@ export class FormSectionComponent implements OnInit, OnChanges { addMultipleField(fieldsetIndex: number) { const compositeFieldToBeCloned = (this.form.get('compositeFields').get('' + fieldsetIndex) as FormGroup).getRawValue(); - const compositeField: DatasetDescriptionCompositeFieldEditorModel = new DatasetDescriptionCompositeFieldEditorModel().cloneForMultiplicity(compositeFieldToBeCloned); - ((this.form.get('compositeFields').get('' + fieldsetIndex).get('multiplicityItems'))).push(compositeField.buildForm()); + const multiplicityItemsArray = ((this.form.get('compositeFields').get('' + fieldsetIndex).get('multiplicityItems')));; + const compositeField: DatasetDescriptionCompositeFieldEditorModel = new DatasetDescriptionCompositeFieldEditorModel().cloneForMultiplicity(compositeFieldToBeCloned, multiplicityItemsArray.length); + multiplicityItemsArray.push(compositeField.buildForm()); } deleteCompositeFieldFormGroup(compositeFildIndex: number) { @@ -84,7 +85,15 @@ export class FormSectionComponent implements OnInit, OnChanges { } deleteMultipeFieldFromCompositeFormGroup(compositeFildIndex: number, fildIndex: number) { - ((this.form.get('compositeFields').get('' + compositeFildIndex).get('multiplicityItems'))).removeAt(fildIndex); + const multiplicityItemsArray = ((this.form.get('compositeFields').get('' + compositeFildIndex).get('multiplicityItems'))); + multiplicityItemsArray.removeAt(fildIndex); + multiplicityItemsArray.controls.forEach((control, i)=>{ + try{ + control.get('ordinal').setValue(i); + }catch{ + throw 'Could not find ordinal'; + } + }); } // isElementVisible(fieldSet: CompositeField): boolean { 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 c76550e26..0b7e6713e 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 @@ -194,13 +194,13 @@ export class DatasetDescriptionCompositeFieldEditorModel extends BaseFormModel { // return newItem; // } - cloneForMultiplicity(item: CompositeField): DatasetDescriptionCompositeFieldEditorModel { + cloneForMultiplicity(item: CompositeField, ordinal: number): DatasetDescriptionCompositeFieldEditorModel { 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.ordinal = item.ordinal; + newItem.ordinal = ordinal; return newItem; } }