[AAE-2984] fix save not modified Form with dropdown (#5976)

* fix save not modified Form with dropdown

* Update form-field.model.ts

* Update form-field.model.ts

* fix empty value scenario

* fix unit
This commit is contained in:
Eugenio Romano
2020-08-12 22:34:16 +01:00
committed by GitHub
parent 9b3efb5502
commit 8a6358ef44
5 changed files with 38 additions and 34 deletions

View File

@@ -274,18 +274,23 @@ export class FormFieldModel extends FormWidgetModel {
but saving back as object: { id: <id>, name: <name> } but saving back as object: { id: <id>, name: <name> }
*/ */
if (json.type === FormFieldTypes.DROPDOWN) { if (json.type === FormFieldTypes.DROPDOWN) {
if (json.hasEmptyValue && json.options) {
if (json.options) {
const options = <FormFieldOption[]> json.options || []; const options = <FormFieldOption[]> json.options || [];
if (options.length > 0) { if (options.length > 0) {
if (json.hasEmptyValue) {
const emptyOption = json.options[0]; const emptyOption = json.options[0];
if (value === '' || value === emptyOption.id || value === emptyOption.name) { if (value === '' || value === emptyOption.id || value === emptyOption.name) {
value = emptyOption.id; value = emptyOption.id;
} else if (value.id && value.name) { }
} else {
if (value?.id && value?.name) {
value = value.id; value = value.id;
} }
} }
} }
} }
}
/* /*
This is needed due to Activiti issue related to reading radio button values as value string This is needed due to Activiti issue related to reading radio button values as value string

View File

@@ -62,7 +62,7 @@ export const fakeForm: any = {
1: [ 1: [
{ {
fieldType: 'RestFieldRepresentation', fieldType: 'RestFieldRepresentation',
id: 'label', id: 'dropdownId',
name: 'Label', name: 'Label',
type: 'dropdown', type: 'dropdown',
value: 'Choose one...', value: 'Choose one...',

View File

@@ -250,9 +250,6 @@ describe('PaginationComponent', () => {
expect(component.isFirstPage).toBe(true, 'isFirstPage'); expect(component.isFirstPage).toBe(true, 'isFirstPage');
expect(component.isLastPage).toBe(true, 'isLastPage'); expect(component.isLastPage).toBe(true, 'isLastPage');
// tslint:disable-next-line: no-console
console.log(JSON.stringify(component.pagination));
expect(component.range).toEqual([ 0, 0 ], 'range'); expect(component.range).toEqual([ 0, 0 ], 'range');
expect(component.pages).toEqual([ 1 ], 'pages'); expect(component.pages).toEqual([ 1 ], 'pages');
}); });

View File

@@ -975,13 +975,13 @@ describe('FormComponent', () => {
formComponent.form = new FormModel(JSON.parse(JSON.stringify(fakeForm))); formComponent.form = new FormModel(JSON.parse(JSON.stringify(fakeForm)));
let formFields = formComponent.form.getFormFields(); let formFields = formComponent.form.getFormFields();
let labelField = formFields.find((field) => field.id === 'label'); let dropdownField = formFields.find((field) => field.id === 'dropdownId');
let radioField = formFields.find((field) => field.id === 'radio'); let radioField = formFields.find((field) => field.id === 'radio');
expect(labelField.value).toBe('empty'); expect(dropdownField.value).toBe('empty');
expect(radioField.value).toBeNull(); expect(radioField.value).toBeNull();
const formValues: any = {}; const formValues: any = {};
formValues.label = { formValues.dropdownId = {
id: 'option_2', id: 'option_2',
name: 'test2' name: 'test2'
}; };
@@ -991,9 +991,11 @@ describe('FormComponent', () => {
formComponent.ngOnChanges({ 'data': change }); formComponent.ngOnChanges({ 'data': change });
formFields = formComponent.form.getFormFields(); formFields = formComponent.form.getFormFields();
labelField = formFields.find((field) => field.id === 'label'); dropdownField = formFields.find((field) => field.id === 'dropdownId');
radioField = formFields.find((field) => field.id === 'radio'); radioField = formFields.find((field) => field.id === 'radio');
expect(labelField.value).toBe('option_2');
expect(dropdownField.value.id).toBe('option_2');
expect(dropdownField.value.name).toBe('test2');
expect(radioField.value).toBe('option_2'); expect(radioField.value).toBe('option_2');
}); });