diff --git a/ng2-components/ng2-activiti-form/src/services/widget-visibility.service.spec.ts b/ng2-components/ng2-activiti-form/src/services/widget-visibility.service.spec.ts index c1fd593aaf..6806163acd 100644 --- a/ng2-components/ng2-activiti-form/src/services/widget-visibility.service.spec.ts +++ b/ng2-components/ng2-activiti-form/src/services/widget-visibility.service.spec.ts @@ -31,7 +31,7 @@ import { FormModel, FormFieldModel, TabModel, ContainerModel } from '../componen declare let jasmine: any; -describe('WidgetVisibilityService (mockBackend)', () => { +describe('WidgetVisibilityService', () => { let service: WidgetVisibilityService; let booleanResult: boolean; let stubFormWithFields = new FormModel(fakeFormJson); @@ -474,7 +474,7 @@ describe('WidgetVisibilityService (mockBackend)', () => { visibilityObjTest.operator = '!='; visibilityObjTest.rightFormFieldId = 'test_3'; let fakeFormField: FormFieldModel = new FormFieldModel(formTest, jsonFieldFake); - service.refreshFieldVisibility(fakeFormField); + service.refreshEntityVisibility(fakeFormField); expect(fakeFormField.isVisible).toBeFalsy(); }); @@ -488,13 +488,13 @@ describe('WidgetVisibilityService (mockBackend)', () => { expect(isVisible).toBeTruthy(); }); - it('should not change the isVisible if field does not have visibility condition', () => { + it('should return always true when field does not have a visibility condition', () => { jsonFieldFake.visibilityCondition = null; let fakeFormField: FormFieldModel = new FormFieldModel(fakeFormWithField, jsonFieldFake); fakeFormField.isVisible = false; - service.refreshFieldVisibility(fakeFormField); + service.refreshEntityVisibility(fakeFormField); - expect(fakeFormField.isVisible).toBeFalsy(); + expect(fakeFormField.isVisible).toBeTruthy(); }); it('should be able to retrieve the value of a form variable', () => { @@ -579,7 +579,7 @@ describe('WidgetVisibilityService (mockBackend)', () => { visibilityObjTest.operator = '=='; visibilityObjTest.rightFormFieldId = 'dropdown_LABEL'; let fakeFormField: FormFieldModel = new FormFieldModel(formTest, jsonFieldFake); - service.refreshFieldVisibility(fakeFormField); + service.refreshEntityVisibility(fakeFormField); expect(fakeFormField.isVisible).toBeTruthy(); }); @@ -589,7 +589,7 @@ describe('WidgetVisibilityService (mockBackend)', () => { visibilityObjTest.operator = '=='; visibilityObjTest.rightFormFieldId = 'dropdown'; let fakeFormField: FormFieldModel = new FormFieldModel(formTest, jsonFieldFake); - service.refreshFieldVisibility(fakeFormField); + service.refreshEntityVisibility(fakeFormField); expect(fakeFormField.isVisible).toBeTruthy(); }); @@ -633,7 +633,7 @@ describe('WidgetVisibilityService (mockBackend)', () => { visibilityObjTest.rightFormFieldId = 'RIGHT_FORM_FIELD_ID'; let tab = new TabModel(fakeFormWithField, {id: 'fake-tab-id', title: 'fake-tab-title', isVisible: true}); tab.visibilityCondition = visibilityObjTest; - service.refreshTabVisibility(tab); + service.refreshEntityVisibility(tab); expect(tab.isVisible).toBeFalsy(); }); @@ -664,7 +664,7 @@ describe('WidgetVisibilityService (mockBackend)', () => { isVisible: true }); contModel.visibilityCondition = visibilityObjTest; - service.refreshContainerVisibility(contModel); + service.refreshEntityVisibility(contModel); expect(contModel.isVisible).toBeFalsy(); }); diff --git a/ng2-components/ng2-activiti-form/src/services/widget-visibility.service.ts b/ng2-components/ng2-activiti-form/src/services/widget-visibility.service.ts index 6271654812..1b735ffa7e 100644 --- a/ng2-components/ng2-activiti-form/src/services/widget-visibility.service.ts +++ b/ng2-components/ng2-activiti-form/src/services/widget-visibility.service.ts @@ -35,37 +35,23 @@ export class WidgetVisibilityService { public refreshVisibility(form: FormModel) { if (form && form.tabs && form.tabs.length > 0) { - form.tabs.map(tabModel => this.refreshTabVisibility(tabModel)); + form.tabs.map(tabModel => this.refreshEntityVisibility(tabModel)); } if (form && form.fields.length > 0) { form.fields.map(contModel => { - this.refreshContainerVisibility(contModel); + this.refreshEntityVisibility(contModel); contModel.columns.map(contColModel => - contColModel.fields.map(field => this.refreshFieldVisibility(field))); + contColModel.fields.map(field => this.refreshEntityVisibility(field))); }); } } - refreshFieldVisibility(field: FormFieldModel) { - if (field.visibilityCondition) { - field.isVisible = this.evaluateVisibility(field.form, field.visibilityCondition); - } - } - - refreshContainerVisibility(content: ContainerModel) { - if (content.visibilityCondition) { - content.isVisible = this.evaluateVisibility(content.form, content.visibilityCondition); - } - } - - refreshTabVisibility(tab: TabModel) { - if (tab.visibilityCondition) { - tab.isVisible = this.evaluateVisibility(tab.form, tab.visibilityCondition); - } + refreshEntityVisibility(element: FormFieldModel | ContainerModel | TabModel) { + element.isVisible = this.evaluateVisibility(element.form, element.visibilityCondition); } evaluateVisibility(form: FormModel, visibilityObj: WidgetVisibilityModel): boolean { - let isLeftFieldPresent = visibilityObj.leftFormFieldId || visibilityObj.leftRestResponseId; + let isLeftFieldPresent = visibilityObj && ( visibilityObj.leftFormFieldId || visibilityObj.leftRestResponseId ); if (!isLeftFieldPresent || isLeftFieldPresent === 'null') { return true; } else { @@ -96,13 +82,17 @@ export class WidgetVisibilityService { } getRightValue(form: FormModel, visibilityObj: WidgetVisibilityModel) { - let valueFound = null; + let valueFound = ''; if (visibilityObj.rightRestResponseId) { valueFound = this.getVariableValue(form, visibilityObj.rightRestResponseId, this.processVarList); } else if (visibilityObj.rightFormFieldId) { valueFound = this.getFormValue(form, visibilityObj.rightFormFieldId); } else { - valueFound = visibilityObj.rightValue; + if (moment(visibilityObj.rightValue, 'YYYY-MM-DD', true).isValid()) { + valueFound = visibilityObj.rightValue + 'T00:00:00.000Z'; + } else { + valueFound = visibilityObj.rightValue; + } } return valueFound; } @@ -119,7 +109,7 @@ export class WidgetVisibilityService { } getFieldValue(valueList: any, fieldName: string) { - return fieldName ? valueList[fieldName] : fieldName; + return valueList[fieldName]; } getDropDownName(valueList: any, fieldName: string) {