mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2025-07-24 17:32:15 +00:00
[ADF-4710] - adapt visibility condition to the new schema (#4884)
* [ADF-4710] - adapt new visibility condition schema * [ADF-4710] - fix unit tests * [ADF-4710] - support visibility for APS1 and APS2
This commit is contained in:
committed by
Eugenio Romano
parent
ffd4413335
commit
72b3a75a85
@@ -22,7 +22,7 @@ import moment from 'moment-es6';
|
||||
import { Observable, from, throwError } from 'rxjs';
|
||||
import { FormFieldModel, FormModel, TabModel } from '../components/widgets/core/index';
|
||||
import { TaskProcessVariableModel } from '../models/task-process-variable.model';
|
||||
import { WidgetVisibilityModel } from '../models/widget-visibility.model';
|
||||
import { WidgetVisibilityModel, WidgetTypeEnum } from '../models/widget-visibility.model';
|
||||
import { map, catchError } from 'rxjs/operators';
|
||||
|
||||
@Injectable({
|
||||
@@ -52,7 +52,7 @@ export class WidgetVisibilityService {
|
||||
}
|
||||
|
||||
evaluateVisibility(form: FormModel, visibilityObj: WidgetVisibilityModel): boolean {
|
||||
const isLeftFieldPresent = visibilityObj && (visibilityObj.leftFormFieldId || visibilityObj.leftRestResponseId);
|
||||
const isLeftFieldPresent = visibilityObj && (visibilityObj.leftType || visibilityObj.leftValue);
|
||||
if (!isLeftFieldPresent || isLeftFieldPresent === 'null') {
|
||||
return true;
|
||||
} else {
|
||||
@@ -64,43 +64,43 @@ export class WidgetVisibilityService {
|
||||
const leftValue = this.getLeftValue(form, visibilityObj);
|
||||
const rightValue = this.getRightValue(form, visibilityObj);
|
||||
const actualResult = this.evaluateCondition(leftValue, rightValue, visibilityObj.operator);
|
||||
|
||||
accumulator.push({ value: actualResult, operator: visibilityObj.nextConditionOperator });
|
||||
if (visibilityObj.nextCondition) {
|
||||
result = this.isFieldVisible(form, visibilityObj.nextCondition, accumulator);
|
||||
} else {
|
||||
result = accumulator[0].value;
|
||||
result = accumulator[0].value ? accumulator[0].value : result;
|
||||
|
||||
for (let i = 1; i < accumulator.length; i++) {
|
||||
result = this.evaluateLogicalOperation(
|
||||
accumulator[i - 1].operator,
|
||||
result,
|
||||
accumulator[i].value
|
||||
);
|
||||
if (accumulator[i - 1].operator && accumulator[i].value) {
|
||||
result = this.evaluateLogicalOperation(
|
||||
accumulator[i - 1].operator,
|
||||
result,
|
||||
accumulator[i].value
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
return !!result;
|
||||
|
||||
}
|
||||
|
||||
getLeftValue(form: FormModel, visibilityObj: WidgetVisibilityModel): string {
|
||||
let leftValue = '';
|
||||
if (visibilityObj.leftRestResponseId && visibilityObj.leftRestResponseId !== 'null') {
|
||||
leftValue = this.getVariableValue(form, visibilityObj.leftRestResponseId, this.processVarList);
|
||||
} else if (visibilityObj.leftFormFieldId) {
|
||||
leftValue = this.getFormValue(form, visibilityObj.leftFormFieldId);
|
||||
leftValue = leftValue ? leftValue : this.getVariableValue(form, visibilityObj.leftFormFieldId, this.processVarList);
|
||||
if (visibilityObj.leftType && visibilityObj.leftType === WidgetTypeEnum.variable) {
|
||||
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);
|
||||
}
|
||||
return leftValue;
|
||||
}
|
||||
|
||||
getRightValue(form: FormModel, visibilityObj: WidgetVisibilityModel): string {
|
||||
let valueFound = '';
|
||||
if (visibilityObj.rightRestResponseId) {
|
||||
valueFound = this.getVariableValue(form, visibilityObj.rightRestResponseId, this.processVarList);
|
||||
} else if (visibilityObj.rightFormFieldId) {
|
||||
valueFound = this.getFormValue(form, visibilityObj.rightFormFieldId);
|
||||
if (visibilityObj.rightType === WidgetTypeEnum.variable) {
|
||||
valueFound = this.getVariableValue(form, visibilityObj.rightValue, this.processVarList);
|
||||
} else if (visibilityObj.rightType === WidgetTypeEnum.field) {
|
||||
valueFound = this.getFormValue(form, visibilityObj.rightValue);
|
||||
} else {
|
||||
if (moment(visibilityObj.rightValue, 'YYYY-MM-DD', true).isValid()) {
|
||||
valueFound = visibilityObj.rightValue + 'T00:00:00.000Z';
|
||||
@@ -117,7 +117,6 @@ export class WidgetVisibilityService {
|
||||
if (!value) {
|
||||
value = this.searchValueInForm(form, fieldId);
|
||||
}
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
@@ -178,16 +177,7 @@ export class WidgetVisibilityService {
|
||||
}
|
||||
|
||||
private isSearchedField(field: FormFieldModel, fieldToFind: string): boolean {
|
||||
const formattedFieldName = this.removeLabel(field, fieldToFind);
|
||||
return field.id ? field.id.toUpperCase() === formattedFieldName.toUpperCase() : false;
|
||||
}
|
||||
|
||||
private removeLabel(field: FormFieldModel, fieldToFind): string {
|
||||
let formattedFieldName = fieldToFind || '';
|
||||
if (field.fieldType === 'RestFieldRepresentation' && fieldToFind.indexOf('_LABEL') > 0) {
|
||||
formattedFieldName = fieldToFind.substring(0, fieldToFind.length - 6);
|
||||
}
|
||||
return formattedFieldName;
|
||||
return (field.id && fieldToFind) ? field.id.toUpperCase() === fieldToFind.toUpperCase() : false;
|
||||
}
|
||||
|
||||
getVariableValue(form: FormModel, name: string, processVarList: TaskProcessVariableModel[]): string {
|
||||
|
Reference in New Issue
Block a user