Files
alfresco-content-app/projects/aca-folder-rules/src/lib/rule-details/validators/rule-composite-condition.validator.ts
Thomas Hunter 9cd616ff8c [ACS-3256] Add trigger / "when" section to rule details & edit rule dialog (#2603)
* Add triggers section with checkboxes

* Add some unit tests

* Changed Input property of rule details so that it takes a changeable value rather than just an initial value

* Made separate component with control value accessor for triggers

* Linting

* Change trigger values to lowercase to be in sync with the API

* Minor styling changes and add new rule button to manage rules screen

* Add option for unknown field to be selected

* Add read only to nested composite and simple conditions

* Added unknown field tests for simple condition

* Linting

* Change how the triggers component displays when disabled
2022-08-23 09:54:08 +01:00

43 lines
1.9 KiB
TypeScript

/*!
* @license
* Alfresco Example Content Application
*
* Copyright (C) 2005 - 2020 Alfresco Software Limited
*
* This file is part of the Alfresco Example Content Application.
* If the software was purchased under a paid Alfresco license, the terms of
* the paid license agreement will prevail. Otherwise, the software is
* provided under the following open source license terms:
*
* The Alfresco Example Content Application is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* The Alfresco Example Content Application is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
*/
import { RuleCompositeCondition } from '../../model/rule-composite-condition.model';
import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';
const isCompositeConditionValid = (value: RuleCompositeCondition, isRootCondition = true): boolean => {
if (value.compositeConditions.length > 0) {
return value.compositeConditions.reduce(
(arrayValid: boolean, nestedCondition: RuleCompositeCondition) => arrayValid && isCompositeConditionValid(nestedCondition, false),
true
);
}
return !!value.simpleConditions.length || isRootCondition;
};
export const ruleCompositeConditionValidator =
(): ValidatorFn =>
(control: AbstractControl): ValidationErrors | null =>
isCompositeConditionValid(control.value) ? null : { ruleCompositeConditionInvalid: true };