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 1ca0c57287..45de305e8c 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 @@ -353,14 +353,14 @@ describe('WidgetVisibilityService', () => { }); it('should be able to retrieve a field value searching in the form', () => { - let formValue = service.searchForm(stubFormWithFields, 'FIELD_WITH_CONDITION'); + let formValue = service.searchValueInForm(stubFormWithFields, 'FIELD_WITH_CONDITION'); expect(formValue).not.toBeNull(); expect(formValue).toBe('field_with_condition_value'); }); it('should return empty string if the field value is not in the form', () => { - let formValue = service.searchForm(stubFormWithFields, 'FIELD_MYSTERY'); + let formValue = service.searchValueInForm(stubFormWithFields, 'FIELD_MYSTERY'); expect(formValue).not.toBeUndefined(); expect(formValue).toBe(''); 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 9d43f05632..ae8066bc25 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 @@ -19,7 +19,7 @@ import { Injectable } from '@angular/core'; import * as moment from 'moment'; import { AlfrescoApiService, LogService } from 'ng2-alfresco-core'; import { Observable } from 'rxjs/Rx'; -import { ContainerColumnModel, ContainerModel, FormFieldModel, FormModel, TabModel } from '../components/widgets/core/index'; +import { FormFieldModel, FormModel, TabModel } from '../components/widgets/core/index'; import { TaskProcessVariableModel } from '../models/task-process-variable.model'; import { WidgetVisibilityModel } from '../models/widget-visibility.model'; @@ -98,43 +98,46 @@ export class WidgetVisibilityService { return valueFound; } - getFormValue(form: FormModel, field: string) { - let value = this.getFieldValue(form.values, field); - return value ? value : this.searchForm(form, field); + getFormValue(form: FormModel, fieldId: string) { + let value = this.getFieldValue(form.values, fieldId); + + if (!value) { + value = this.searchValueInForm(form, fieldId); + } + + return value; } - getFieldValue(valueList: any, fieldName: string) { - let dropDownFilterByName, valueFound = ''; - if (fieldName && fieldName.indexOf('_LABEL') > 0) { - dropDownFilterByName = fieldName.substring(0, fieldName.length - 6); + getFieldValue(valueList: any, fieldId: string) { + let dropDownFilterByName, valueFound; + if (fieldId && fieldId.indexOf('_LABEL') > 0) { + dropDownFilterByName = fieldId.substring(0, fieldId.length - 6); if (valueList[dropDownFilterByName]) { valueFound = valueList[dropDownFilterByName].name; } - } else if (valueList[fieldName] && valueList[fieldName].id) { - valueFound = valueList[fieldName].id; + } else if (valueList[fieldId] && valueList[fieldId].id) { + valueFound = valueList[fieldId].id; } else { - valueFound = valueList[fieldName]; + valueFound = valueList[fieldId]; } return valueFound; } - searchForm(form: FormModel, name: string) { + searchValueInForm(form: FormModel, fieldId: string) { let fieldValue = ''; - form.fields.forEach((containerModel: ContainerModel) => { - containerModel.field.columns.forEach((containerColumnModel: ContainerColumnModel) => { - let fieldFound = containerColumnModel.fields.find(field => this.isSearchedField(field, name)); - if (fieldFound) { - fieldValue = this.getObjectValue(fieldFound); - if (!fieldValue) { - if (fieldFound.value && fieldFound.value.id) { - fieldValue = fieldFound.value.id; - } else { - fieldValue = fieldFound.value; - } + form.getFormFields().forEach((formField: FormFieldModel) => { + if (this.isSearchedField(formField, fieldId)) { + fieldValue = this.getObjectValue(formField); + if (!fieldValue) { + if (formField.value && formField.value.id) { + fieldValue = formField.value.id; + } else { + fieldValue = formField.value; } } - }); + } }); + return fieldValue; } @@ -147,18 +150,19 @@ export class WidgetVisibilityService { if (option) { value = option.name; } else { + value = field.value; } } return value; } - private isSearchedField(field: FormFieldModel, fieldToFind: string) { - let forrmattedFieldName = this.removeLabel(field, fieldToFind); - return field.name ? field.name.toUpperCase() === forrmattedFieldName.toUpperCase() : false; + private isSearchedField(field: FormFieldModel, fieldToFind: string): boolean { + let formattedFieldName = this.removeLabel(field, fieldToFind); + return field.id ? field.id.toUpperCase() === formattedFieldName.toUpperCase() : false; } - private removeLabel(field: FormFieldModel, fieldToFind) { + private removeLabel(field: FormFieldModel, fieldToFind): string { let formattedFieldName = fieldToFind || ''; if (field.fieldType === 'RestFieldRepresentation' && fieldToFind.indexOf('_LABEL') > 0) { formattedFieldName = fieldToFind.substring(0, fieldToFind.length - 6);