import { Pipe, PipeTransform } from '@angular/core'; // enums import { ToolbarFilterStringEnum } from '../../../components/ca-map/enums/toolbar-filter-string.enum'; // components import { CaStatusFilterComponent } from '../components/ca-status-filter/ca-status-filter.component'; import { CaTimeFilterComponent } from '../components/ca-time-filter/ca-time-filter.component'; import { CaDispatcherFilterComponent } from '../components/ca-dispatcher-filter/ca-dispatcher-filter.component'; import { CaStateFilterComponent } from '../components/ca-state-filter/ca-state-filter.component'; import { CaTruckTypeFilterComponent } from '../components/ca-truck-type-filter/ca-truck-type-filter.component'; import { CaTrailerTypeFilterComponent } from '../components/ca-trailer-type-filter/ca-trailer-type-filter.component'; import { CaPmFilterComponent } from '../components/ca-pm-filter/ca-pm-filter.component'; import { CaUserFilterComponent } from '../components/ca-user-filter/ca-user-filter.component'; import { CaViolationFilterComponent } from '../components/ca-violation-filter/ca-violation-filter.component'; import { CaTimeFilterDropdownComponent } from '../components/ca-time-filter-dropdown/ca-time-filter-dropdown.component'; @Pipe({ name: 'filterConditionsSet', standalone: true, pure: false, }) export class FilterConditionsSetPipe implements PipeTransform { transform( type: string, caStatusFilter: CaStatusFilterComponent, caTimeFilter: CaTimeFilterComponent, caDispatcherFilter: CaDispatcherFilterComponent, caStateFilter: CaStateFilterComponent, caTruckTypeFilter: CaTruckTypeFilterComponent, caTrailerTypeFilter: CaTrailerTypeFilterComponent, caPmFilter: CaPmFilterComponent, caUserFilter: CaUserFilterComponent, caViolationFilter: CaViolationFilterComponent, caTimeFilterDropdown: CaTimeFilterDropdownComponent ): boolean | number { switch (type) { case ToolbarFilterStringEnum.STATUS_FILTER: return caStatusFilter?.selectedUser?.length; case ToolbarFilterStringEnum.TIME_FILTER: return ( caTimeFilter?.selectedTimeValue !== caTimeFilter?.filterActiveTime ); case ToolbarFilterStringEnum.TIME_FILTER_DROPDOWN: return ( caTimeFilterDropdown?.selectedTimeValue !== caTimeFilterDropdown?.filterActiveTime ); case ToolbarFilterStringEnum.DISPATCHER_FILTER: case ToolbarFilterStringEnum.FUEL_STOP_FILTER: case ToolbarFilterStringEnum.BROKER_FILTER: case ToolbarFilterStringEnum.DRIVER_FILTER: return ( (caDispatcherFilter?.selectedUser.length || caDispatcherFilter?.filterActiveArray.length) && caDispatcherFilter?.isButtonAvailable ); case ToolbarFilterStringEnum.STATE_FILTER: return ( (caStateFilter?.canadaSelectedStates.length || caStateFilter?.usaSelectedStates.length) && caStateFilter?.isButtonAvailable ); case ToolbarFilterStringEnum.TRUCK_TYPE_FILTER: return ( caTruckTypeFilter?.selectedTruckTypeArray.length && caTruckTypeFilter?.isButtonAvailable ); case ToolbarFilterStringEnum.TRAILER_TYPE_FILTER: return ( caTrailerTypeFilter?.selectedTrailerTypeArray.length && caTrailerTypeFilter?.isButtonAvailable ); case ToolbarFilterStringEnum.PM_FILTER: case ToolbarFilterStringEnum.CATEGORY_REPAIR_FILTER: return ( caPmFilter?.selectedPmFilterArray.length && caPmFilter?.isButtonAvailable ); case ToolbarFilterStringEnum.FUEL_ITEM_FILTER: case ToolbarFilterStringEnum.DEPARTMENT_FILTER: case ToolbarFilterStringEnum.PARKING_FILTER: case ToolbarFilterStringEnum.TAG_FILTER: case ToolbarFilterStringEnum.ACTION_FILTER: case ToolbarFilterStringEnum.LABEL_FILTER: return ( caPmFilter?.selectedPmFilterArray.length && caPmFilter?.isButtonAvailable ); case ToolbarFilterStringEnum.USER_FILTER: case ToolbarFilterStringEnum.MODULE_FILTER: return ( caUserFilter?.hasSelectedUsers || caUserFilter?.isButtonAvailable ); case ToolbarFilterStringEnum.VIOLATION_FILTER: return ( caViolationFilter?.violationFilterForm.dirty && caViolationFilter?.violationFilterForm.valid ); default: return false; } } }