[ADF-2255] fixed loading for form loading data (#3032)

* [ADF-2255] fixed loading for form loading data

* [ADF-2255] fix wrong placeholder

* [ADF-2255] fixed and added test for new value retrieving form

* [ADF-2255] fixed test on validation
This commit is contained in:
Vito
2018-03-06 10:01:49 +00:00
committed by Eugenio Romano
parent 6aca2a2761
commit 169403bbae
15 changed files with 480 additions and 23 deletions

View File

@@ -822,14 +822,14 @@ describe('FormComponent', () => {
let labelField = formFields.find(field => field.id === 'label');
let radioField = formFields.find(field => field.id === 'raduio');
expect(labelField.value).toBe('empty');
expect(radioField.value).toBeNull();
expect(radioField.value).toBe('option_1');
let formValues: any = {};
formValues.label = {
id: 'option_1',
name: 'test1'
id: 'option_2',
name: 'test2'
};
formValues.raduio = { id: 'option_1', name: 'Option 1' };
formValues.raduio = { id: 'option_2', name: 'Option 2' };
let change = new SimpleChange(null, formValues, false);
formComponent.data = formValues;
formComponent.ngOnChanges({ 'data': change });
@@ -837,7 +837,25 @@ describe('FormComponent', () => {
formFields = formComponent.form.getFormFields();
labelField = formFields.find(field => field.id === 'label');
radioField = formFields.find(field => field.id === 'raduio');
expect(labelField.value).toBe('option_1');
expect(radioField.value).toBe('option_1');
expect(labelField.value).toBe('option_2');
expect(radioField.value).toBe('option_2');
});
it('should refresh radio buttons value when id is given to data', () => {
formComponent.form = new FormModel(fakeForm);
let formFields = formComponent.form.getFormFields();
let radioFieldById = formFields.find(field => field.id === 'raduio');
expect(radioFieldById.value).toBe('option_2');
let formValues: any = {};
formValues.raduio = 'option_3';
let change = new SimpleChange(null, formValues, false);
formComponent.data = formValues;
formComponent.ngOnChanges({ 'data': change });
formFields = formComponent.form.getFormFields();
radioFieldById = formFields.find(field => field.id === 'raduio');
expect(radioFieldById.value).toBe('option_3');
});
});

View File

@@ -82,9 +82,9 @@ describe('FormFieldValidator', () => {
let field = new FormFieldModel(new FormModel(), {
type: FormFieldTypes.RADIO_BUTTONS,
required: true,
value: 'one',
options: [{ id: 'two', name: 'two' }]
});
field.value = 'one';
expect(validator.validate(field)).toBeFalsy();
});

View File

@@ -266,8 +266,8 @@ describe('FormFieldModel', () => {
let field = new FormFieldModel(new FormModel(), {
type: FormFieldTypes.RADIO_BUTTONS,
options: [
{id: 'opt1', value: 'Option 1'},
{id: 'opt2', value: 'Option 2'}
{id: 'opt1', name: 'Option 1'},
{id: 'opt2', name: 'Option 2'}
],
value: 'opt2'
});
@@ -319,8 +319,8 @@ describe('FormFieldModel', () => {
id: 'radio-1',
type: FormFieldTypes.RADIO_BUTTONS,
options: [
{id: 'opt1', value: 'Option 1'},
{id: 'opt2', value: 'Option 2'}
{id: 'opt1', name: 'Option 1'},
{id: 'opt2', name: 'Option 2'}
]
});
@@ -334,8 +334,8 @@ describe('FormFieldModel', () => {
id: 'radio-2',
type: FormFieldTypes.RADIO_BUTTONS,
options: [
{id: 'opt1', value: 'Option 1'},
{id: 'opt2', value: 'Option 2'}
{id: 'opt1', name: 'Option 1'},
{id: 'opt2', name: 'Option 2'}
]
});

View File

@@ -298,6 +298,8 @@ export class FormFieldModel extends FormWidgetModel {
let emptyOption = json.options[0];
if (value === '' || value === emptyOption.id || value === emptyOption.name) {
value = emptyOption.id;
} else if (value.id && value.name) {
value = value.id;
}
}
}
@@ -311,9 +313,12 @@ export class FormFieldModel extends FormWidgetModel {
// Activiti has a bug with default radio button value where initial selection passed as `name` value
// so try resolving current one with a fallback to first entry via name or id
// TODO: needs to be reported and fixed at Activiti side
let entry: FormFieldOption[] = this.options.filter(opt => opt.id === value || opt.name === value);
let entry: FormFieldOption[] = this.options.filter(opt =>
opt.id === value || opt.name === value || (value && (opt.id === value.id || opt.name === value.name)));
if (entry.length > 0) {
value = entry[0].id;
} else {
value = this.options[0] ? this.options[0].id : json.value;
}
}
@@ -376,7 +381,7 @@ export class FormFieldModel extends FormWidgetModel {
}
break;
case FormFieldTypes.TYPEAHEAD:
let taEntry: FormFieldOption[] = this.options.filter(opt => opt.id === this.value);
let taEntry: FormFieldOption[] = this.options.filter(opt => opt.id === this.value || opt.name === this.value);
if (taEntry.length > 0) {
this.form.values[this.id] = taEntry[0];
} else if (this.options.length > 0) {

View File

@@ -268,10 +268,6 @@ export class FormModel {
if (data[field.id]) {
field.json.value = data[field.id];
field.value = field.parseValue(field.json);
if (field.type === FormFieldTypes.DROPDOWN ||
field.type === FormFieldTypes.RADIO_BUTTONS) {
field.value = data[field.id].id;
}
}
}
}

View File

@@ -67,7 +67,7 @@ export class TypeaheadWidgetComponent extends WidgetComponent implements OnInit
let fieldValue = this.field.value;
if (fieldValue) {
let toSelect = options.find(item => item.id === fieldValue);
let toSelect = options.find(item => item.id === fieldValue || item.name.toLocaleLowerCase() === fieldValue.toLocaleLowerCase());
if (toSelect) {
this.value = toSelect.name;
}