Files
DiceCloud/app/imports/api/engine/computation/computeComputation/computeToggles.js
2023-08-24 12:09:14 +02:00

35 lines
1.1 KiB
JavaScript

export default function evaluateToggles(computation, node) {
let prop = node.data;
if (!prop) return;
let toggles = prop._computationDetails?.toggleAncestors;
if (!toggles) return;
toggles.forEach(toggle => {
if (
(
// Toggle isn't set to constantly enabled or disabled
!toggle.enabled &&
!toggle.disabled &&
// Toggle is not disabled by another toggle targeting it
// Ancestor toggles would've handled this child anyway,
// and tag targeted toggles break the link
!toggle.deactivatedByToggle &&
!toggle.deactivatedByAncestor &&
// Toggle has a condition with a falsy value
toggle.condition &&
!toggle.condition.value
)
|| (
// Toggle is disabled manually
toggle.disabled &&
// Toggle isn't deactivated by something else
!toggle.deactivatedByToggle &&
!toggle.deactivatedByAncestor
)
) {
prop.inactive = true;
prop.deactivatedByToggle = true;
prop.deactivatingToggleId = toggle._id;
}
});
}