import { Pipe, PipeTransform } from '@angular/core'; import { AutomationBuilderModalTabType } from '../program-automation.typing'; export enum AutomationModalFooterButtonType { Previous = 1, Next = 2, SaveAndClose = 3, SaveAndPublish = 4, NewRoute = 5, EvaluationOrder = 6 } @Pipe({name: 'gcIsProgramAutomationButtonDisabled'}) export class ProgramAutomationModalFooterButtonPipe implements PipeTransform { transform ( activeTabType: AutomationBuilderModalTabType, buttonType: AutomationModalFooterButtonType, nextTabDisabled: boolean, tabValidityMap: Record, isDraft: boolean, numberOfRulesets: number ): boolean { const onDetailsTab = activeTabType === AutomationBuilderModalTabType.Details; const onRulesTab = activeTabType === AutomationBuilderModalTabType.Rules; const detailsValid = tabValidityMap[AutomationBuilderModalTabType.Details]; const rulesValid = tabValidityMap[AutomationBuilderModalTabType.Rules]; const fallbackValid = tabValidityMap[AutomationBuilderModalTabType.Fallback_Program]; switch (buttonType) { case AutomationModalFooterButtonType.Previous: return onDetailsTab || (onRulesTab && !rulesValid); case AutomationModalFooterButtonType.Next: return nextTabDisabled; case AutomationModalFooterButtonType.SaveAndClose: if (!detailsValid) { return true; } if (!isDraft) { return !rulesValid || !fallbackValid; } else if (onRulesTab) { return !rulesValid; } return false; case AutomationModalFooterButtonType.SaveAndPublish: return !detailsValid || !rulesValid || !fallbackValid; case AutomationModalFooterButtonType.NewRoute: return !rulesValid && numberOfRulesets !== 0; case AutomationModalFooterButtonType.EvaluationOrder: return !rulesValid || numberOfRulesets <= 1; } } }