[ADF-4774] - fix visibility condition between checkbox fields (#4964)

* [ADF-4774] - fix visibility condition between checkbox fields

* [ADF-4774] - PR changes
This commit is contained in:
Silviu Popa
2019-08-02 17:35:09 +03:00
committed by Eugenio Romano
parent 8a96ed2fbe
commit 78e60a4da4
3 changed files with 79 additions and 7 deletions

View File

@@ -271,10 +271,10 @@ describe('WidgetVisibilityCloudService', () => {
(res: TaskProcessVariableModel[]) => {
visibilityObjTest.leftValue = 'TEST_VAR_2';
visibilityObjTest.leftType = WidgetTypeEnum.field;
const rightValue = service.getLeftValue(formTest, visibilityObjTest);
const leftValue = service.getLeftValue(formTest, visibilityObjTest);
expect(rightValue).not.toBeNull();
expect(rightValue).toBe('test_value_2');
expect(leftValue).not.toBeNull();
expect(leftValue).toBe('test_value_2');
done();
}
);
@@ -897,6 +897,72 @@ describe('WidgetVisibilityCloudService', () => {
service.refreshEntityVisibility(contModel.field);
expect(contModel.isVisible).toBeFalsy();
});
it('should evaluate checkbox condition', (done) => {
visibilityObjTest.leftType = WidgetTypeEnum.field;
visibilityObjTest.leftValue = 'CheckboxOne';
visibilityObjTest.operator = '==';
visibilityObjTest.rightType = WidgetTypeEnum.field;
visibilityObjTest.rightValue = 'CheckboxTwo';
const checkboxForm = new FormModel({
id: '9999',
name: 'CHECKBOX_VISIBILITY',
processDefinitionId: 'PROCESS_TEST:9:9999',
processDefinitionName: 'PROCESS_TEST',
processDefinitionKey: 'PROCESS_TEST',
taskId: '999',
taskName: 'TEST',
fields: [
{
fieldType: 'ContainerRepresentation',
id: '000000000000000000',
name: 'Label',
type: 'container',
value: null,
numberOfColumns: 2,
fields: {
1: [
{
id: 'CheckboxOne',
name: 'CheckboxOne',
type: 'boolean',
required: false,
value: false,
colspan: 1,
visibilityCondition: null
},
{
id: 'CheckboxTwo',
name: 'CheckboxTwo',
type: 'boolean',
required: false,
value: false,
colspan: 1,
visibilityCondition: null
}
],
2: [
{
id: 'CheckboxNotReq',
name: 'CheckboxNotReq',
type: 'boolean',
required: false,
colspan: 1,
visibilityCondition: visibilityObjTest
}
]
}
}
]
});
service.refreshVisibility(checkboxForm);
const fieldWithVisibilityAttached = checkboxForm.getFieldById('CheckboxNotReq');
expect(fieldWithVisibilityAttached.isVisible).toBeTruthy();
done();
});
});
describe('Visibility based on form variables', () => {

View File

@@ -271,10 +271,10 @@ describe('WidgetVisibilityService', () => {
service.getTaskProcessVariable('9999').subscribe(
(res: TaskProcessVariableModel[]) => {
visibilityObjTest.leftRestResponseId = 'TEST_VAR_2';
const rightValue = service.getLeftValue(formTest, visibilityObjTest);
const leftValue = service.getLeftValue(formTest, visibilityObjTest);
expect(rightValue).not.toBeNull();
expect(rightValue).toBe('test_value_2');
expect(leftValue).not.toBeNull();
expect(leftValue).toBe('test_value_2');
done();
}
);

View File

@@ -93,7 +93,9 @@ export class WidgetVisibilityService {
leftValue = this.getVariableValue(form, visibilityObj.leftValue, this.processVarList);
} else if (visibilityObj.leftType && visibilityObj.leftType === WidgetTypeEnum.field) {
leftValue = this.getFormValue(form, visibilityObj.leftValue);
leftValue = leftValue ? leftValue : this.getVariableValue(form, visibilityObj.leftValue, this.processVarList);
if (this.isInvalidValue(leftValue)) {
leftValue = this.getVariableValue(form, visibilityObj.leftValue, this.processVarList);
}
}
return leftValue;
}
@@ -138,6 +140,10 @@ export class WidgetVisibilityService {
return valueFound;
}
private isInvalidValue(value: any): boolean {
return value === undefined || value === '';
}
searchValueInForm(form: FormModel, fieldId: string): string {
let fieldValue = '';
form.getFormFields().forEach((formField: FormFieldModel) => {