Dataset Editor (Researchers Page). Incrementing ordinals on multiplicity items.

This commit is contained in:
Kristian Ntavidi 2021-09-17 12:12:48 +03:00
parent 52c26cd864
commit ba865c9708
4 changed files with 33 additions and 8 deletions

View File

@ -61,6 +61,13 @@ export class FormCompositeFieldComponent {
const parent = this.form.parent; const parent = this.form.parent;
const index = (parent as FormArray).controls.indexOf(this.form); const index = (parent as FormArray).controls.indexOf(this.form);
(parent as FormArray).removeAt(index); (parent as FormArray).removeAt(index);
(parent as FormArray).controls.forEach((control, i)=>{
try{
control.get('ordinal').setValue(i);
}catch{
throw 'Could not find ordinal';
}
});
// (<FormArray>(this.form as AbstractControl)).removeAt(fildIndex); // (<FormArray>(this.form as AbstractControl)).removeAt(fildIndex);
} }
} }

View File

@ -58,8 +58,9 @@ export class FormSectionInnerComponent implements OnInit, OnChanges {
addMultipleField(fieldsetIndex: number) { addMultipleField(fieldsetIndex: number) {
const compositeFieldToBeCloned = (this.form.get('compositeFields').get('' + fieldsetIndex) as FormGroup).getRawValue(); const compositeFieldToBeCloned = (this.form.get('compositeFields').get('' + fieldsetIndex) as FormGroup).getRawValue();
const compositeField: DatasetDescriptionCompositeFieldEditorModel = new DatasetDescriptionCompositeFieldEditorModel().cloneForMultiplicity(compositeFieldToBeCloned); const multiplicityItemsArray = (<FormArray>(this.form.get('compositeFields').get('' + fieldsetIndex).get('multiplicityItems')));
(<FormArray>(this.form.get('compositeFields').get('' + fieldsetIndex).get('multiplicityItems'))).push(compositeField.buildForm()); const compositeField: DatasetDescriptionCompositeFieldEditorModel = new DatasetDescriptionCompositeFieldEditorModel().cloneForMultiplicity(compositeFieldToBeCloned, multiplicityItemsArray.length);
multiplicityItemsArray.push(compositeField.buildForm());
} }
deleteCompositeFieldFormGroup(compositeFildIndex: number) { deleteCompositeFieldFormGroup(compositeFildIndex: number) {
@ -72,7 +73,15 @@ export class FormSectionInnerComponent implements OnInit, OnChanges {
} }
deleteMultipeFieldFromCompositeFormGroup(compositeFildIndex: number, fildIndex: number) { deleteMultipeFieldFromCompositeFormGroup(compositeFildIndex: number, fildIndex: number) {
(<FormArray>(this.form.get('compositeFields').get('' + compositeFildIndex).get('multiplicityItems'))).removeAt(fildIndex); const multiplicityItemsArray = (<FormArray>(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 { // isElementVisible(fieldSet: CompositeField): boolean {

View File

@ -70,8 +70,9 @@ export class FormSectionComponent implements OnInit, OnChanges {
addMultipleField(fieldsetIndex: number) { addMultipleField(fieldsetIndex: number) {
const compositeFieldToBeCloned = (this.form.get('compositeFields').get('' + fieldsetIndex) as FormGroup).getRawValue(); const compositeFieldToBeCloned = (this.form.get('compositeFields').get('' + fieldsetIndex) as FormGroup).getRawValue();
const compositeField: DatasetDescriptionCompositeFieldEditorModel = new DatasetDescriptionCompositeFieldEditorModel().cloneForMultiplicity(compositeFieldToBeCloned); const multiplicityItemsArray = (<FormArray>(this.form.get('compositeFields').get('' + fieldsetIndex).get('multiplicityItems')));;
(<FormArray>(this.form.get('compositeFields').get('' + fieldsetIndex).get('multiplicityItems'))).push(compositeField.buildForm()); const compositeField: DatasetDescriptionCompositeFieldEditorModel = new DatasetDescriptionCompositeFieldEditorModel().cloneForMultiplicity(compositeFieldToBeCloned, multiplicityItemsArray.length);
multiplicityItemsArray.push(compositeField.buildForm());
} }
deleteCompositeFieldFormGroup(compositeFildIndex: number) { deleteCompositeFieldFormGroup(compositeFildIndex: number) {
@ -84,7 +85,15 @@ export class FormSectionComponent implements OnInit, OnChanges {
} }
deleteMultipeFieldFromCompositeFormGroup(compositeFildIndex: number, fildIndex: number) { deleteMultipeFieldFromCompositeFormGroup(compositeFildIndex: number, fildIndex: number) {
(<FormArray>(this.form.get('compositeFields').get('' + compositeFildIndex).get('multiplicityItems'))).removeAt(fildIndex); const multiplicityItemsArray = (<FormArray>(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 { // isElementVisible(fieldSet: CompositeField): boolean {

View File

@ -194,13 +194,13 @@ export class DatasetDescriptionCompositeFieldEditorModel extends BaseFormModel {
// return newItem; // return newItem;
// } // }
cloneForMultiplicity(item: CompositeField): DatasetDescriptionCompositeFieldEditorModel { cloneForMultiplicity(item: CompositeField, ordinal: number): DatasetDescriptionCompositeFieldEditorModel {
const newItem: DatasetDescriptionCompositeFieldEditorModel = new DatasetDescriptionCompositeFieldEditorModel(); const newItem: DatasetDescriptionCompositeFieldEditorModel = new DatasetDescriptionCompositeFieldEditorModel();
newItem.id = 'multiple_' + item.id + '_' + Guid.create(); newItem.id = 'multiple_' + item.id + '_' + Guid.create();
item.fields.forEach((field, index) => { 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; newItem.ordinal = ordinal;
return newItem; return newItem;
} }
} }