mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2025-05-19 17:14:57 +00:00
Add some improvements to visibility service
This commit is contained in:
parent
d6669fd4f7
commit
ae48e09471
@ -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();
|
||||
});
|
||||
|
@ -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) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user