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;
|
declare let jasmine: any;
|
||||||
|
|
||||||
describe('WidgetVisibilityService (mockBackend)', () => {
|
describe('WidgetVisibilityService', () => {
|
||||||
let service: WidgetVisibilityService;
|
let service: WidgetVisibilityService;
|
||||||
let booleanResult: boolean;
|
let booleanResult: boolean;
|
||||||
let stubFormWithFields = new FormModel(fakeFormJson);
|
let stubFormWithFields = new FormModel(fakeFormJson);
|
||||||
@ -474,7 +474,7 @@ describe('WidgetVisibilityService (mockBackend)', () => {
|
|||||||
visibilityObjTest.operator = '!=';
|
visibilityObjTest.operator = '!=';
|
||||||
visibilityObjTest.rightFormFieldId = 'test_3';
|
visibilityObjTest.rightFormFieldId = 'test_3';
|
||||||
let fakeFormField: FormFieldModel = new FormFieldModel(formTest, jsonFieldFake);
|
let fakeFormField: FormFieldModel = new FormFieldModel(formTest, jsonFieldFake);
|
||||||
service.refreshFieldVisibility(fakeFormField);
|
service.refreshEntityVisibility(fakeFormField);
|
||||||
|
|
||||||
expect(fakeFormField.isVisible).toBeFalsy();
|
expect(fakeFormField.isVisible).toBeFalsy();
|
||||||
});
|
});
|
||||||
@ -488,13 +488,13 @@ describe('WidgetVisibilityService (mockBackend)', () => {
|
|||||||
expect(isVisible).toBeTruthy();
|
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;
|
jsonFieldFake.visibilityCondition = null;
|
||||||
let fakeFormField: FormFieldModel = new FormFieldModel(fakeFormWithField, jsonFieldFake);
|
let fakeFormField: FormFieldModel = new FormFieldModel(fakeFormWithField, jsonFieldFake);
|
||||||
fakeFormField.isVisible = false;
|
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', () => {
|
it('should be able to retrieve the value of a form variable', () => {
|
||||||
@ -579,7 +579,7 @@ describe('WidgetVisibilityService (mockBackend)', () => {
|
|||||||
visibilityObjTest.operator = '==';
|
visibilityObjTest.operator = '==';
|
||||||
visibilityObjTest.rightFormFieldId = 'dropdown_LABEL';
|
visibilityObjTest.rightFormFieldId = 'dropdown_LABEL';
|
||||||
let fakeFormField: FormFieldModel = new FormFieldModel(formTest, jsonFieldFake);
|
let fakeFormField: FormFieldModel = new FormFieldModel(formTest, jsonFieldFake);
|
||||||
service.refreshFieldVisibility(fakeFormField);
|
service.refreshEntityVisibility(fakeFormField);
|
||||||
|
|
||||||
expect(fakeFormField.isVisible).toBeTruthy();
|
expect(fakeFormField.isVisible).toBeTruthy();
|
||||||
});
|
});
|
||||||
@ -589,7 +589,7 @@ describe('WidgetVisibilityService (mockBackend)', () => {
|
|||||||
visibilityObjTest.operator = '==';
|
visibilityObjTest.operator = '==';
|
||||||
visibilityObjTest.rightFormFieldId = 'dropdown';
|
visibilityObjTest.rightFormFieldId = 'dropdown';
|
||||||
let fakeFormField: FormFieldModel = new FormFieldModel(formTest, jsonFieldFake);
|
let fakeFormField: FormFieldModel = new FormFieldModel(formTest, jsonFieldFake);
|
||||||
service.refreshFieldVisibility(fakeFormField);
|
service.refreshEntityVisibility(fakeFormField);
|
||||||
|
|
||||||
expect(fakeFormField.isVisible).toBeTruthy();
|
expect(fakeFormField.isVisible).toBeTruthy();
|
||||||
});
|
});
|
||||||
@ -633,7 +633,7 @@ describe('WidgetVisibilityService (mockBackend)', () => {
|
|||||||
visibilityObjTest.rightFormFieldId = 'RIGHT_FORM_FIELD_ID';
|
visibilityObjTest.rightFormFieldId = 'RIGHT_FORM_FIELD_ID';
|
||||||
let tab = new TabModel(fakeFormWithField, {id: 'fake-tab-id', title: 'fake-tab-title', isVisible: true});
|
let tab = new TabModel(fakeFormWithField, {id: 'fake-tab-id', title: 'fake-tab-title', isVisible: true});
|
||||||
tab.visibilityCondition = visibilityObjTest;
|
tab.visibilityCondition = visibilityObjTest;
|
||||||
service.refreshTabVisibility(tab);
|
service.refreshEntityVisibility(tab);
|
||||||
|
|
||||||
expect(tab.isVisible).toBeFalsy();
|
expect(tab.isVisible).toBeFalsy();
|
||||||
});
|
});
|
||||||
@ -664,7 +664,7 @@ describe('WidgetVisibilityService (mockBackend)', () => {
|
|||||||
isVisible: true
|
isVisible: true
|
||||||
});
|
});
|
||||||
contModel.visibilityCondition = visibilityObjTest;
|
contModel.visibilityCondition = visibilityObjTest;
|
||||||
service.refreshContainerVisibility(contModel);
|
service.refreshEntityVisibility(contModel);
|
||||||
|
|
||||||
expect(contModel.isVisible).toBeFalsy();
|
expect(contModel.isVisible).toBeFalsy();
|
||||||
});
|
});
|
||||||
|
@ -35,37 +35,23 @@ export class WidgetVisibilityService {
|
|||||||
|
|
||||||
public refreshVisibility(form: FormModel) {
|
public refreshVisibility(form: FormModel) {
|
||||||
if (form && form.tabs && form.tabs.length > 0) {
|
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) {
|
if (form && form.fields.length > 0) {
|
||||||
form.fields.map(contModel => {
|
form.fields.map(contModel => {
|
||||||
this.refreshContainerVisibility(contModel);
|
this.refreshEntityVisibility(contModel);
|
||||||
contModel.columns.map(contColModel =>
|
contModel.columns.map(contColModel =>
|
||||||
contColModel.fields.map(field => this.refreshFieldVisibility(field)));
|
contColModel.fields.map(field => this.refreshEntityVisibility(field)));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
refreshFieldVisibility(field: FormFieldModel) {
|
refreshEntityVisibility(element: FormFieldModel | ContainerModel | TabModel) {
|
||||||
if (field.visibilityCondition) {
|
element.isVisible = this.evaluateVisibility(element.form, element.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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
evaluateVisibility(form: FormModel, visibilityObj: WidgetVisibilityModel): boolean {
|
evaluateVisibility(form: FormModel, visibilityObj: WidgetVisibilityModel): boolean {
|
||||||
let isLeftFieldPresent = visibilityObj.leftFormFieldId || visibilityObj.leftRestResponseId;
|
let isLeftFieldPresent = visibilityObj && ( visibilityObj.leftFormFieldId || visibilityObj.leftRestResponseId );
|
||||||
if (!isLeftFieldPresent || isLeftFieldPresent === 'null') {
|
if (!isLeftFieldPresent || isLeftFieldPresent === 'null') {
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
@ -96,14 +82,18 @@ export class WidgetVisibilityService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
getRightValue(form: FormModel, visibilityObj: WidgetVisibilityModel) {
|
getRightValue(form: FormModel, visibilityObj: WidgetVisibilityModel) {
|
||||||
let valueFound = null;
|
let valueFound = '';
|
||||||
if (visibilityObj.rightRestResponseId) {
|
if (visibilityObj.rightRestResponseId) {
|
||||||
valueFound = this.getVariableValue(form, visibilityObj.rightRestResponseId, this.processVarList);
|
valueFound = this.getVariableValue(form, visibilityObj.rightRestResponseId, this.processVarList);
|
||||||
} else if (visibilityObj.rightFormFieldId) {
|
} else if (visibilityObj.rightFormFieldId) {
|
||||||
valueFound = this.getFormValue(form, visibilityObj.rightFormFieldId);
|
valueFound = this.getFormValue(form, visibilityObj.rightFormFieldId);
|
||||||
|
} else {
|
||||||
|
if (moment(visibilityObj.rightValue, 'YYYY-MM-DD', true).isValid()) {
|
||||||
|
valueFound = visibilityObj.rightValue + 'T00:00:00.000Z';
|
||||||
} else {
|
} else {
|
||||||
valueFound = visibilityObj.rightValue;
|
valueFound = visibilityObj.rightValue;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return valueFound;
|
return valueFound;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -119,7 +109,7 @@ export class WidgetVisibilityService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
getFieldValue(valueList: any, fieldName: string) {
|
getFieldValue(valueList: any, fieldName: string) {
|
||||||
return fieldName ? valueList[fieldName] : fieldName;
|
return valueList[fieldName];
|
||||||
}
|
}
|
||||||
|
|
||||||
getDropDownName(valueList: any, fieldName: string) {
|
getDropDownName(valueList: any, fieldName: string) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user