{"version":3,"file":"annalib-anna-design-components-lib.mjs","sources":["../../../projects/anna-design-components-lib/src/lib/bar-chart/bar-chart.component.ts","../../../projects/anna-design-components-lib/src/lib/bar-chart/bar-chart.component.html","../../../projects/anna-design-components-lib/src/lib/breadcrumbs/services/breadcrumbs.service.ts","../../../projects/anna-design-components-lib/src/lib/breadcrumbs/breadcrumbs.component.ts","../../../projects/anna-design-components-lib/src/lib/breadcrumbs/breadcrumbs.component.html","../../../projects/anna-design-components-lib/src/lib/buyer-contact/buyer-contact.component.ts","../../../projects/anna-design-components-lib/src/lib/buyer-contact/buyer-contact.component.html","../../../projects/anna-design-components-lib/src/lib/confirmation-popup/services/confirmation-popup.service.ts","../../../projects/anna-design-components-lib/src/lib/confirmation-popup/confirmation-popup.component.ts","../../../projects/anna-design-components-lib/src/lib/confirmation-popup/confirmation-popup.component.html","../../../projects/anna-design-components-lib/src/lib/custom-date-picker/constants/date-picker.constant.ts","../../../projects/anna-design-components-lib/src/lib/custom-date-picker/models/datePicker.model.ts","../../../projects/anna-design-components-lib/src/lib/custom-date-picker/services/datepickerService.ts","../../../projects/anna-design-components-lib/src/lib/custom-date-picker/custom-date-picker.component.ts","../../../projects/anna-design-components-lib/src/lib/custom-date-picker/custom-date-picker.component.html","../../../projects/anna-design-components-lib/src/lib/custom-ngb-datepicker-form-control/services/custom-date-formatter.service.ts","../../../projects/anna-design-components-lib/src/lib/custom-ngb-datepicker-form-control/custom-ngb-datepicker-form-control.component.ts","../../../projects/anna-design-components-lib/src/lib/custom-ngb-datepicker-form-control/custom-ngb-datepicker-form-control.component.html","../../../projects/anna-design-components-lib/src/lib/single-select/single-select.component.ts","../../../projects/anna-design-components-lib/src/lib/single-select/single-select.component.html","../../../projects/anna-design-components-lib/src/lib/toggle/toggle.component.ts","../../../projects/anna-design-components-lib/src/lib/toggle/toggle.component.html","../../../projects/anna-design-components-lib/src/lib/demo-normalization/demo-normalization.component.ts","../../../projects/anna-design-components-lib/src/lib/demo-normalization/demo-normalization.component.html","../../../projects/anna-design-components-lib/src/lib/equivalisation-of-data-toggle-btn/service/equivalisation-of-data.service.ts","../../../projects/anna-design-components-lib/src/lib/equivalisation-of-data-toggle-btn/equivalisation-of-data-toggle-btn.component.ts","../../../projects/anna-design-components-lib/src/lib/equivalisation-of-data-toggle-btn/equivalisation-of-data-toggle-btn.component.html","../../../projects/anna-design-components-lib/src/lib/dashboard-filter-modal/models/dashboard-filter-modal.model.ts","../../../projects/anna-design-components-lib/src/lib/order-container-filter-modal/constants/order-container-filter-modal.constant.ts","../../../projects/anna-design-components-lib/src/lib/order-container-filter-modal/services/calendar-quarter-year-filter.service.ts","../../../projects/anna-design-components-lib/src/lib/radio-buttons/radio-buttons.component.ts","../../../projects/anna-design-components-lib/src/lib/radio-buttons/radio-buttons.component.html","../../../projects/anna-design-components-lib/src/lib/week-calendar/services/week-calendar.service.ts","../../../projects/anna-design-components-lib/src/lib/week-calendar/week-calendar.component.ts","../../../projects/anna-design-components-lib/src/lib/week-calendar/week-calendar.component.html","../../../projects/anna-design-components-lib/src/lib/generic-period-selection/generic-period-selection.component.ts","../../../projects/anna-design-components-lib/src/lib/generic-period-selection/generic-period-selection.component.html","../../../projects/anna-design-components-lib/src/lib/multi-select/services/multi-select.service.ts","../../../projects/anna-design-components-lib/src/lib/multi-select/multi-select.component.ts","../../../projects/anna-design-components-lib/src/lib/multi-select/multi-select.component.html","../../../projects/anna-design-components-lib/src/lib/skeleton-loader/skeleton-loader.component.ts","../../../projects/anna-design-components-lib/src/lib/skeleton-loader/skeleton-loader.component.html","../../../projects/anna-design-components-lib/src/lib/dashboard-filter-modal/models/dashboard-filter-modal-service.token.ts","../../../projects/anna-design-components-lib/src/lib/globals/global.model.ts","../../../projects/anna-design-components-lib/src/lib/dashboard-filter-modal/models/dashboard-order.model.ts","../../../projects/anna-design-components-lib/src/lib/dashboard-filter-modal/dashboard-filter-modal.component.ts","../../../projects/anna-design-components-lib/src/lib/dashboard-filter-modal/dashboard-filter-modal.component.html","../../../projects/anna-design-components-lib/src/lib/doughnut-chart/doughnut-chart.component.ts","../../../projects/anna-design-components-lib/src/lib/doughnut-chart/doughnut-chart.component.html","../../../projects/anna-design-components-lib/src/lib/easy-filters/easy-filters.component.ts","../../../projects/anna-design-components-lib/src/lib/easy-filters/easy-filters.component.html","../../../projects/anna-design-components-lib/src/lib/filter-view-container/filter-view-container.component.ts","../../../projects/anna-design-components-lib/src/lib/filter-view-container/filter-view-container.component.html","../../../projects/anna-design-components-lib/src/lib/generic-line-chart/generic-line-chart.component.ts","../../../projects/anna-design-components-lib/src/lib/generic-line-chart/generic-line-chart.component.html","../../../projects/anna-design-components-lib/src/lib/generic-wizard-form/models/generic-wizard-form.constant.ts","../../../projects/anna-design-components-lib/src/lib/generic-wizard-form/generic-wizard-form.component.ts","../../../projects/anna-design-components-lib/src/lib/generic-wizard-form/generic-wizard-form.component.html","../../../projects/anna-design-components-lib/src/lib/include-outstanding-preemptions-toggle-btn/include-outstanding-preemptions-toggle-btn.component.ts","../../../projects/anna-design-components-lib/src/lib/include-outstanding-preemptions-toggle-btn/include-outstanding-preemptions-toggle-btn.component.html","../../../projects/anna-design-components-lib/src/lib/key-value/key-value.component.ts","../../../projects/anna-design-components-lib/src/lib/key-value/key-value.component.html","../../../projects/anna-design-components-lib/src/lib/message-box/models/message-box.model.ts","../../../projects/anna-design-components-lib/src/lib/message-box/message-box.component.ts","../../../projects/anna-design-components-lib/src/lib/message-box/message-box.component.html","../../../projects/anna-design-components-lib/src/lib/missing-posted-data/constants/missing-posted-data.constant.ts","../../../projects/anna-design-components-lib/src/lib/missing-posted-data/models/missing-posted-data.model.ts","../../../projects/anna-design-components-lib/src/lib/missing-posted-data/missing-posted-data.component.ts","../../../projects/anna-design-components-lib/src/lib/missing-posted-data/missing-posted-data.component.html","../../../projects/anna-design-components-lib/src/lib/number-input/number-input.component.ts","../../../projects/anna-design-components-lib/src/lib/number-input/number-input.component.html","../../../projects/anna-design-components-lib/src/lib/order-container-filter-modal/order-container-filter-modal.component.ts","../../../projects/anna-design-components-lib/src/lib/order-container-filter-modal/order-container-filter-modal.component.html","../../../projects/anna-design-components-lib/src/lib/over-or-under-delivery/over-or-under-delivery.component.ts","../../../projects/anna-design-components-lib/src/lib/over-or-under-delivery/over-or-under-delivery.component.html","../../../projects/anna-design-components-lib/src/lib/priority-dropdowns/priority-dropdowns.component.ts","../../../projects/anna-design-components-lib/src/lib/priority-dropdowns/priority-dropdowns.component.html","../../../projects/anna-design-components-lib/src/lib/sidebar/sidebar-footer/sidebar-footer.component.ts","../../../projects/anna-design-components-lib/src/lib/sidebar/sidebar-footer/sidebar-footer.component.html","../../../projects/anna-design-components-lib/src/lib/sidebar/sidebar-menu/models/sidebar-menu.model.ts","../../../projects/anna-design-components-lib/src/lib/sidebar/sidebar-menu/services/sidebar-menu.service.ts","../../../projects/anna-design-components-lib/src/lib/sidebar/sidebar-menu/sidebar-menu.component.ts","../../../projects/anna-design-components-lib/src/lib/sidebar/sidebar-menu/sidebar-menu.component.html","../../../projects/anna-design-components-lib/src/lib/stack-chart/models/chart.model.ts","../../../projects/anna-design-components-lib/src/lib/stack-chart/stack-chart.component.ts","../../../projects/anna-design-components-lib/src/lib/stack-chart/stack-chart.component.html","../../../projects/anna-design-components-lib/src/lib/timer/timer.component.ts","../../../projects/anna-design-components-lib/src/lib/timer/timer.component.html","../../../projects/anna-design-components-lib/src/lib/anna-design-components-lib.module.ts","../../../projects/anna-design-components-lib/src/lib/business-rules-timer/business-rules-timer.component.ts","../../../projects/anna-design-components-lib/src/lib/business-rules-timer/business-rules-timer.component.html","../../../projects/anna-design-components-lib/src/lib/generic-comment-popup/models/generic-comment-popup.model.ts","../../../projects/anna-design-components-lib/src/lib/generic-comment-popup/generic-comment-popup.component.ts","../../../projects/anna-design-components-lib/src/lib/generic-comment-popup/generic-comment-popup.component.html","../../../projects/anna-design-components-lib/src/lib/globals/global.constant.ts","../../../projects/anna-design-components-lib/src/lib/generic-line-chart/models/genericLineChartModel.ts","../../../projects/anna-design-components-lib/src/lib/key-value/models/key-value.model.ts","../../../projects/anna-design-components-lib/src/lib/priority-dropdowns/models/priority-dropdowns.model.ts","../../../projects/anna-design-components-lib/src/lib/generic-wizard-form/services/generic-wizard-form.service.ts","../../../projects/anna-design-components-lib/src/lib/info-popup/info-popup.component.ts","../../../projects/anna-design-components-lib/src/lib/info-popup/info-popup.component.html","../../../projects/anna-design-components-lib/src/public-api.ts","../../../projects/anna-design-components-lib/src/annalib-anna-design-components-lib.ts"],"sourcesContent":["import { CommonModule } from \"@angular/common\";\r\nimport { ChangeDetectionStrategy, Component, Input } from \"@angular/core\";\r\nimport { ChartData, ChartOptions, ChartType } from \"chart.js\";\r\nimport { BaseChartDirective } from \"ng2-charts\";\r\n\r\n@Component({\r\n    selector: \"anna-design-bar-chart\",\r\n    standalone: true,\r\n    imports: [CommonModule, BaseChartDirective],\r\n    templateUrl: \"./bar-chart.component.html\",\r\n    styleUrls: [\"./bar-chart.component.scss\"],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class BarChartComponent {\r\n    @Input() barChartData: ChartData<\"bar\">;\r\n    @Input() barChartOptions: ChartOptions;\r\n    barChartType: ChartType = \"bar\";\r\n}\r\n","<div class=\"chart-container\">\r\n    <canvas\r\n        baseChart\r\n        [data]=\"barChartData\"\r\n        [options]=\"barChartOptions\"\r\n        [legend]=\"false\"\r\n        [type]=\"barChartType\"\r\n    >\r\n    </canvas>\r\n</div>\r\n","import { Injectable } from \"@angular/core\";\r\n// eslint-disable-next-line import/no-extraneous-dependencies\r\nimport { BehaviorSubject } from \"rxjs\";\r\n\r\nimport { IBreadcrumb } from \"../models/breadcrumb.model\";\r\n\r\n@Injectable({\r\n    providedIn: \"root\",\r\n})\r\nexport class BreadcrumbsService {\r\n    isBreadcrumbClicked = false;\r\n    isOrderListingPageOpened: boolean = false;\r\n    public breadcrumbListSubject = new BehaviorSubject<Array<IBreadcrumb>>(null);\r\n    breadcrumbRoutes = {\r\n        dashboardToOrders: false,\r\n        dashboardToDailyRevision: false,\r\n    };\r\n\r\n    getBreadcrumbList(): Array<IBreadcrumb> {\r\n        return this.breadcrumbListSubject.value;\r\n    }\r\n\r\n    updateBreadcrumbs(name: string, path = \"\", append = false) {\r\n        const newBreadcrumb: IBreadcrumb = {\r\n            name,\r\n            path,\r\n        };\r\n        let breadcrumbsArray: Array<IBreadcrumb> = [];\r\n        if (append) breadcrumbsArray = this.getBreadcrumbList();\r\n        if (!breadcrumbsArray) {\r\n            breadcrumbsArray = [];\r\n        }\r\n        breadcrumbsArray.push(newBreadcrumb);\r\n        this.breadcrumbListSubject.next(breadcrumbsArray);\r\n    }\r\n\r\n    popBreadcrumbs(numberOfPops: number) {\r\n        const breadcrumbsArray: Array<IBreadcrumb> = this.getBreadcrumbList();\r\n        for (let i = 0; i < numberOfPops; i++) {\r\n            breadcrumbsArray.pop();\r\n        }\r\n        this.breadcrumbListSubject.next(breadcrumbsArray);\r\n    }\r\n\r\n    popAllBreadcrumbs() {\r\n        const breadcrumbArr = this.getBreadcrumbList();\r\n        if (breadcrumbArr && breadcrumbArr.length) {\r\n            breadcrumbArr.length = 0;\r\n        }\r\n        this.breadcrumbListSubject.next([]);\r\n    }\r\n\r\n    checkIfAnyRemovableBreadcrumbsExist(includeDashboardPages: boolean) {\r\n        const breadcrumbArr = this.getBreadcrumbList();\r\n        let hasBreadcrumbObjectIndex = -1;\r\n        let hasBreadcrumbObjectIndexForOrderContainerPages = -1;\r\n        let hasBreadcrumbObjectIndexForDashboardPages = -1;\r\n        let hasBreadcrumbObjectIndexForInventoryPages = -1;\r\n        let hasBreadcrumbObjectIndexForProgramSchedule = -1;\r\n        let hasBreadcrumbObjectIndexForAnalyticsPages = -1;\r\n        let hasBreadcrumbObjectIndexForBizRulesPages = -1;\r\n        let hasBreadcrumbObjectIndexForRolesPage = -1;\r\n        let hasBreadcrumbObjectIndexForUserPages = -1;\r\n        let hasBreadcrumbObjectIndexForStationSettingsPages = -1;\r\n        let hasBreadcrumbObjectIndexForLogCenterPages = -1;\r\n        let hasBreadcrumbObjectIndexForHelpCenter = -1;\r\n        let hasBreadcrumbObjectIndexForCustomerSupport = -1;\r\n\r\n        if (breadcrumbArr) {\r\n            hasBreadcrumbObjectIndex = breadcrumbArr.findIndex((n) => n.path && n.path.includes(\"orders\"));\r\n            hasBreadcrumbObjectIndexForOrderContainerPages = breadcrumbArr.findIndex(\r\n                (n) => n.path && n.path.includes(\"order-container\"),\r\n            );\r\n            if (includeDashboardPages) {\r\n                hasBreadcrumbObjectIndexForDashboardPages = breadcrumbArr.findIndex(\r\n                    (n) => n.name && n.name.includes(\"Dashboard\"),\r\n                );\r\n            }\r\n            hasBreadcrumbObjectIndexForInventoryPages = breadcrumbArr.findIndex(\r\n                (n) => n.name && n.name.includes(\"Inventory\"),\r\n            );\r\n            hasBreadcrumbObjectIndexForProgramSchedule = breadcrumbArr.findIndex(\r\n                (n) => n.name && n.name.includes(\"Program Schedule\"),\r\n            );\r\n            hasBreadcrumbObjectIndexForAnalyticsPages = breadcrumbArr.findIndex(\r\n                (n) => n.name && n.name.includes(\"Analytics & Yield\"),\r\n            );\r\n            hasBreadcrumbObjectIndexForBizRulesPages = breadcrumbArr.findIndex(\r\n                (n) => n.name && n.name.includes(\"Business Rules\"),\r\n            );\r\n            hasBreadcrumbObjectIndexForRolesPage = breadcrumbArr.findIndex((n) => n.name && n.name.includes(\"Roles\"));\r\n            hasBreadcrumbObjectIndexForUserPages = breadcrumbArr.findIndex((n) => n.name && n.name.includes(\"Users\"));\r\n            hasBreadcrumbObjectIndexForStationSettingsPages = breadcrumbArr.findIndex(\r\n                (n) => n.name && n.name.includes(\"Station Settings\"),\r\n            );\r\n            hasBreadcrumbObjectIndexForLogCenterPages = breadcrumbArr.findIndex(\r\n                (n) => n.name && n.name.includes(\"Log Center\"),\r\n            );\r\n            hasBreadcrumbObjectIndexForHelpCenter = breadcrumbArr.findIndex(\r\n                (n) => n.name && n.name.includes(\"Help Center\"),\r\n            );\r\n            hasBreadcrumbObjectIndexForCustomerSupport = breadcrumbArr.findIndex(\r\n                (n) => n.name && n.name.includes(\"Customer Support\"),\r\n            );\r\n        }\r\n\r\n        if (\r\n            hasBreadcrumbObjectIndex !== -1 ||\r\n            hasBreadcrumbObjectIndexForOrderContainerPages !== -1 ||\r\n            hasBreadcrumbObjectIndexForDashboardPages !== -1 ||\r\n            hasBreadcrumbObjectIndexForInventoryPages !== -1 ||\r\n            hasBreadcrumbObjectIndexForProgramSchedule !== -1 ||\r\n            hasBreadcrumbObjectIndexForAnalyticsPages !== -1 ||\r\n            hasBreadcrumbObjectIndexForBizRulesPages !== -1 ||\r\n            hasBreadcrumbObjectIndexForRolesPage !== -1 ||\r\n            hasBreadcrumbObjectIndexForUserPages !== -1 ||\r\n            hasBreadcrumbObjectIndexForStationSettingsPages !== -1 ||\r\n            hasBreadcrumbObjectIndexForLogCenterPages !== -1 ||\r\n            hasBreadcrumbObjectIndexForHelpCenter !== -1 ||\r\n            hasBreadcrumbObjectIndexForCustomerSupport !== -1\r\n        ) {\r\n            this.popBreadcrumbs(this.getBreadcrumbList().length - hasBreadcrumbObjectIndex);\r\n        }\r\n    }\r\n}\r\n","import { NgClass, NgFor, NgIf } from \"@angular/common\";\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Inject, OnInit } from \"@angular/core\";\r\n// eslint-disable-next-line import/no-extraneous-dependencies\r\nimport { Router } from \"@angular/router\";\r\n\r\nimport { IBreadcrumb } from \"./models/breadcrumb.model\";\r\nimport { BreadcrumbsService } from \"./services/breadcrumbs.service\";\r\n\r\n@Component({\r\n    selector: \"anna-design-breadcrumbs\",\r\n    templateUrl: \"./breadcrumbs.component.html\",\r\n    styleUrls: [\"./breadcrumbs.component.scss\"],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    imports: [NgClass, NgFor, NgIf]\r\n})\r\nexport class BreadcrumbsComponent implements OnInit {\r\n    breadcrumbList: Array<IBreadcrumb> = [];\r\n\r\n    constructor(\r\n        public breadcrumbsService: BreadcrumbsService,\r\n        @Inject(Router) private router: Router,\r\n        private cdr: ChangeDetectorRef,\r\n    ) {}\r\n\r\n    ngOnInit() {\r\n        this.breadcrumbsService.breadcrumbListSubject.subscribe((data) => {\r\n            this.breadcrumbList = data;\r\n            this.cdr.markForCheck();\r\n        });\r\n    }\r\n\r\n    breadcrumbClicked(data: IBreadcrumb, index: number) {\r\n        this.breadcrumbsService.isBreadcrumbClicked = true;\r\n        // remove all the breadcrumbs ahead of the active breadcrumb\r\n        const currentBreadcrumbList = this.breadcrumbList.slice(0, index + 1);\r\n        this.breadcrumbsService.breadcrumbListSubject.next(currentBreadcrumbList);\r\n        this.router.navigateByUrl(data.path);\r\n    }\r\n}\r\n","<ol\r\n    class=\"breadcrumb-component\"\r\n    [ngClass]=\"{\r\n        'order-listing-breadcrumb-component': breadcrumbsService.isOrderListingPageOpened\r\n    }\"\r\n>\r\n    <li\r\n        class=\"breadcrumb-item\"\r\n        *ngFor=\"let item of breadcrumbList; let i = index\"\r\n        [class.active]=\"i === breadcrumbList.length - 1\"\r\n    >\r\n        <ng-container *ngIf=\"i !== breadcrumbList.length - 1\">\r\n            <span (click)=\"breadcrumbClicked(item, i)\">\r\n                {{ item.name }}\r\n            </span>\r\n            <span class=\"mdi mdi-chevron-right\"></span>\r\n        </ng-container>\r\n        <span\r\n            class=\"black-text\"\r\n            *ngIf=\"i === breadcrumbList.length - 1\"\r\n        >\r\n            {{ item.name }}\r\n        </span>\r\n    </li>\r\n</ol>\r\n","import { NgIf } from \"@angular/common\";\r\nimport { ChangeDetectionStrategy, Component, Input, OnChanges, OnInit, SimpleChanges } from \"@angular/core\";\r\nimport { AnnaCoreModule } from \"@annalib/anna-core\";\r\n\r\n@Component({\r\n    selector: \"anna-design-buyer-contact\",\r\n    templateUrl: \"./buyer-contact.component.html\",\r\n    styleUrls: [\"./buyer-contact.component.scss\"],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    imports: [NgIf, AnnaCoreModule]\r\n})\r\nexport class BuyerContactComponent implements OnInit, OnChanges {\r\n    @Input() contact: any;\r\n    @Input() heading: string;\r\n    @Input() nullMessage: string = \"-\";\r\n    countryCode: string;\r\n\r\n    ngOnInit() {\r\n        const userProfileData = JSON.parse(localStorage.getItem(\"userProfileData\"));\r\n        this.countryCode = userProfileData ? userProfileData.countryCode : \"1\";\r\n    }\r\n\r\n    ngOnChanges(changes: SimpleChanges) {\r\n        if (changes.contact && changes.contact.currentValue && this.contact.phoneNo) {\r\n            if (!this.contact.phoneNo.includes(\"-\")) {\r\n                this.contact.phoneNo = this.changePhoneNoFormat(String(this.contact.phoneNo));\r\n            }\r\n        }\r\n    }\r\n\r\n    changePhoneNoFormat(value: string) {\r\n        let updatedValue = value.trim();\r\n        const regex = /-/gi;\r\n        updatedValue = updatedValue.replace(regex, \"\");\r\n        if (updatedValue.length > 3 && updatedValue.length <= 6)\r\n            updatedValue = `${updatedValue.slice(0, 3)}-${updatedValue.slice(3)}`;\r\n        else if (updatedValue.length > 6)\r\n            updatedValue = `${updatedValue.slice(0, 3)}-${updatedValue.slice(3, 6)}-${updatedValue.slice(6)}`;\r\n        return updatedValue;\r\n    }\r\n}\r\n","<div class=\"buyer-contact\">\r\n    <header>{{ heading }}</header>\r\n    <div *ngIf=\"contact\">\r\n        <span annaCoreShowEllipsisTextOnHover>\r\n            <b>{{ contact.name }}</b></span\r\n        >\r\n        <span annaCoreShowEllipsisTextOnHover> {{ contact.email ? contact.email : \"-\" }}</span>\r\n        <span\r\n            annaCoreShowEllipsisTextOnHover\r\n            *ngIf=\"contact.phoneNo\"\r\n        >\r\n            +{{ countryCode }} | {{ contact.phoneNo }}</span\r\n        >\r\n    </div>\r\n    <div *ngIf=\"!contact\">\r\n        <b>{{ nullMessage }}</b>\r\n    </div>\r\n</div>\r\n","import { Injectable } from \"@angular/core\";\r\n// eslint-disable-next-line import/no-extraneous-dependencies\r\nimport { Subject } from \"rxjs\";\r\n\r\n@Injectable({\r\n    providedIn: \"root\",\r\n})\r\nexport class ConfirmationPopupService {\r\n    public isUserConfirmedToLeaveUnsavedChanges$ = new Subject<boolean>();\r\n}\r\n","import { NgIf } from \"@angular/common\";\r\nimport { Component, EventEmitter, Inject, Input, Output, TemplateRef, ViewChild } from \"@angular/core\";\r\nimport { IConfirmationPopupConfig } from \"@annalib/anna-core\";\r\nimport { NgbModal, NgbModalOptions, NgbModalRef } from \"@ng-bootstrap/ng-bootstrap\";\r\n\r\nimport { ConfirmationPopupService } from \"./services/confirmation-popup.service\";\r\n\r\n@Component({\r\n    selector: \"anna-design-confirmation-popup\",\r\n    templateUrl: \"./confirmation-popup.component.html\",\r\n    styleUrls: [\"./confirmation-popup.component.scss\"],\r\n    imports: [NgIf],\r\n})\r\nexport class ConfirmationPopupComponent {\r\n    @Input({ required: true }) config: IConfirmationPopupConfig;\r\n    @Output() confirmClicked = new EventEmitter();\r\n    @Output() cancelClicked = new EventEmitter();\r\n\r\n    @ViewChild(\"confirmModal\") private confirmationModal: TemplateRef<any>;\r\n    public confirmationModalReference: NgbModalRef;\r\n\r\n    constructor(\r\n        @Inject(NgbModal) private modalService: NgbModal,\r\n        private confirmationPoupService: ConfirmationPopupService,\r\n    ) {}\r\n\r\n    openModal() {\r\n        let ngbModalOptions: NgbModalOptions = {\r\n            windowClass: this.config.windowClass,\r\n        };\r\n\r\n        if (this.config.centered) {\r\n            ngbModalOptions = { ...ngbModalOptions, centered: true };\r\n        }\r\n\r\n        this.confirmationModalReference = this.modalService.open(this.confirmationModal, ngbModalOptions);\r\n    }\r\n\r\n    closeModal(isModalClosedUsingIcon: boolean) {\r\n        if (this.confirmationModalReference) {\r\n            this.confirmationModalReference.close();\r\n            this.cancelClicked.emit(isModalClosedUsingIcon);\r\n            this.updateisUserConfirmedToLeaveUnsavedChangesValue(false);\r\n        }\r\n    }\r\n\r\n    confirmBtnClicked() {\r\n        this.confirmationModalReference.close();\r\n        this.confirmClicked.emit();\r\n        this.updateisUserConfirmedToLeaveUnsavedChangesValue(true);\r\n    }\r\n\r\n    updateisUserConfirmedToLeaveUnsavedChangesValue(val: boolean) {\r\n        this.confirmationPoupService.isUserConfirmedToLeaveUnsavedChanges$.next(val);\r\n        this.confirmationPoupService.isUserConfirmedToLeaveUnsavedChanges$.complete();\r\n    }\r\n}\r\n","<ng-template\r\n    #confirmModal\r\n    let-modal\r\n>\r\n    <div class=\"modal-header\">\r\n        <h3\r\n            class=\"modal-title\"\r\n            [innerHtml]=\"config.title\"\r\n        ></h3>\r\n        <ng-content select=\".ng-content-selector-after-title-message\"></ng-content>\r\n        <i\r\n            (click)=\"closeModal(true)\"\r\n            class=\"mi mdi-close-icon mdi-font-md close pull-right\"\r\n            *ngIf=\"config.showCloseIcon\"\r\n        ></i>\r\n\r\n        <h3\r\n            *ngIf=\"config?.subTitle\"\r\n            class=\"modal-subtitle\"\r\n            [innerHtml]=\"config?.subTitle\"\r\n        ></h3>\r\n\r\n        <div\r\n            class=\"btn-container\"\r\n            *ngIf=\"config.showCancelButton || config.showConfirmButton\"\r\n        >\r\n            <button\r\n                (click)=\"closeModal(false)\"\r\n                *ngIf=\"config.showCancelButton\"\r\n            >\r\n                {{ config.cancelButtonLabel }}\r\n            </button>\r\n            <button\r\n                (click)=\"confirmBtnClicked()\"\r\n                *ngIf=\"config.showConfirmButton\"\r\n            >\r\n                {{ config.confirmButtonLabel }}\r\n            </button>\r\n        </div>\r\n    </div>\r\n</ng-template>\r\n","export class DatePickerConstant {\r\n    static readonly PerformancePeriodModalTitle = \"Edit Period\";\r\n    static readonly PerformancePeriodModalMessage =\r\n        \"Select period for which you want to view the audience performance for.\";\r\n    static readonly SpotDetailsPeriodModalTitle = \"Edit Period\";\r\n    static readonly SpotDetailsPeriodModalMessage = \"Select period for which you want to view the spot details for.\";\r\n    static readonly Quarter = \"Quarter\";\r\n    static readonly Month = \"Month\";\r\n    static readonly CustomRange = \"Custom Range\";\r\n    static readonly Broadcast = \"broadcast\";\r\n    static readonly Fiscal = \"fiscal\";\r\n\r\n    static readonly InFlightAndUpcoming = \"In-flight & Upcoming\";\r\n    static readonly Completed = \"Completed\";\r\n    static readonly Blank = \"Blank\";\r\n    static readonly RATING = \"RATING\";\r\n    static readonly IMPRESSIONS = \"IMPRESSIONS\";\r\n}\r\n","export class YearsForDatePicker {\r\n    text: number;\r\n    disabled: boolean;\r\n    constructor(data: any) {\r\n        this.text = data.text;\r\n        this.disabled = data.disabled;\r\n    }\r\n}\r\n\r\nexport enum StartDateConsideringFactor {\r\n    \"FLIGHT_START_DATE\" = \"FLIGHT_START_DATE\",\r\n    \"FLIGHT_END_DATE\" = \"FLIGHT_END_DATE\",\r\n}\r\n\r\nexport class Month {\r\n    text: string;\r\n    displayText: string;\r\n    id: number;\r\n    disabled: boolean;\r\n    stringId: string;\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { AnnaDateTimeFormatService } from \"@annalib/anna-core\";\r\nimport { NgbDate } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport dayjs from \"dayjs\";\r\n\r\n@Injectable({\r\n    providedIn: \"root\",\r\n})\r\nexport class DatepickerService {\r\n    constructor(private annaDateTimeFormatService: AnnaDateTimeFormatService) {}\r\n\r\n    getAllMonths() {\r\n        return [\r\n            { text: \"JANUARY\", displayText: \"JAN\", id: 1, disabled: false, stringId: \"01\" },\r\n            { text: \"FEBRUARY\", displayText: \"FEB\", id: 2, disabled: false, stringId: \"02\" },\r\n            { text: \"MARCH\", displayText: \"MAR\", id: 3, disabled: false, stringId: \"03\" },\r\n            { text: \"APRIL\", displayText: \"APR\", id: 4, disabled: false, stringId: \"04\" },\r\n            { text: \"MAY\", displayText: \"MAY\", id: 5, disabled: false, stringId: \"05\" },\r\n            { text: \"JUNE\", displayText: \"JUN\", id: 6, disabled: false, stringId: \"06\" },\r\n            { text: \"JULY\", displayText: \"JUL\", id: 7, disabled: false, stringId: \"07\" },\r\n            { text: \"AUGUST\", displayText: \"AUG\", id: 8, disabled: false, stringId: \"08\" },\r\n            { text: \"SEPTEMBER\", displayText: \"SEP\", id: 9, disabled: false, stringId: \"09\" },\r\n            { text: \"OCTOBER\", displayText: \"OCT\", id: 10, disabled: false, stringId: \"10\" },\r\n            { text: \"NOVEMBER\", displayText: \"NOV\", id: 11, disabled: false, stringId: \"11\" },\r\n            { text: \"DECEMBER\", displayText: \"DEC\", id: 12, disabled: false, stringId: \"12\" },\r\n        ];\r\n    }\r\n\r\n    getDateForBroadcastMonth(year: string, month: string) {\r\n        const dates: any = {};\r\n        const startDate: string = `${year}-${month}-01`;\r\n\r\n        let firstDateOfMonth = dayjs(startDate, \"YYYY-M-DD\").startOf(\"month\");\r\n        while (firstDateOfMonth.day() !== 1) {\r\n            firstDateOfMonth = firstDateOfMonth.subtract(1, \"day\");\r\n        }\r\n        dates.startDate = firstDateOfMonth.format(\"YYYY-MM-DD\");\r\n\r\n        let lastDate = dayjs(startDate, \"YYYY-M-DD\").endOf(\"month\");\r\n        while (lastDate.day() !== 0) {\r\n            lastDate = lastDate.subtract(1, \"day\");\r\n        }\r\n        dates.endDate = lastDate.format(\"YYYY-MM-DD\");\r\n\r\n        return dates;\r\n    }\r\n\r\n    getDateForFiscalMonth(year: string, month: string) {\r\n        const dates: { startDate: string; endDate: string } = { startDate: \"\", endDate: \"\" };\r\n        const startDate: string = `${year}-${month}-01`;\r\n        dates.startDate = dayjs(startDate, \"YYYY-MM-DD\").startOf(\"month\").format(\"YYYY-MM-DD\");\r\n        dates.endDate = dayjs(startDate, \"YYYY-MM-DD\").endOf(\"month\").format(\"YYYY-MM-DD\");\r\n        return dates;\r\n    }\r\n\r\n    findBroadcastYearAndMonthForDate(date: NgbDate): { monthId: number; yearId: number } {\r\n        let monthId: number = date.month;\r\n        let yearId: number = date.year;\r\n        const firstAndLastDatesOfBroadcastMonth = this.getDateForBroadcastMonth(\r\n            date.year.toString(),\r\n            date.month.toString(),\r\n        );\r\n        if (\r\n            NgbDate.from(date).before(\r\n                this.annaDateTimeFormatService.convertToNgbDate(\r\n                    firstAndLastDatesOfBroadcastMonth.startDate,\r\n                    \"YYYY-MM-DD\",\r\n                ),\r\n            )\r\n        ) {\r\n            monthId -= 1;\r\n            if (monthId === 0) {\r\n                monthId = 12;\r\n                yearId -= 1;\r\n            }\r\n        } else if (\r\n            NgbDate.from(date).after(\r\n                this.annaDateTimeFormatService.convertToNgbDate(\r\n                    firstAndLastDatesOfBroadcastMonth.endDate,\r\n                    \"YYYY-MM-DD\",\r\n                ),\r\n            )\r\n        ) {\r\n            monthId += 1;\r\n            if (monthId === 13) {\r\n                monthId = 1;\r\n                yearId += 1;\r\n            }\r\n        }\r\n        return { monthId, yearId };\r\n    }\r\n\r\n    getCalenderTypeConfig(disableBroadcast: boolean, disableFiscal: boolean) {\r\n        return {\r\n            heading: \"Calendar Type\",\r\n            radioGroupName: \"calendarType\",\r\n            radioButtons: [\r\n                {\r\n                    value: \"broadcast\",\r\n                    isDisabled: disableBroadcast,\r\n                    label: \"Broadcast\",\r\n                    class: \"grey-background\",\r\n                    id: 2,\r\n                },\r\n                {\r\n                    value: \"fiscal\",\r\n                    isDisabled: disableFiscal,\r\n                    label: \"Fiscal\",\r\n                    class: \"grey-background\",\r\n                    id: 1,\r\n                },\r\n            ],\r\n        };\r\n    }\r\n}\r\n","// Angular import statements\r\nimport { NgClass, NgFor, NgIf, NgStyle, UpperCasePipe } from \"@angular/common\";\r\nimport {\r\n    ChangeDetectionStrategy,\r\n    Component,\r\n    EventEmitter,\r\n    Input,\r\n    OnChanges,\r\n    OnInit,\r\n    Output,\r\n    SimpleChanges,\r\n    ViewChild,\r\n    ViewEncapsulation,\r\n} from \"@angular/core\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { MatMenuModule, MatMenuTrigger } from \"@angular/material/menu\";\r\nimport { AnnaDateTimeFormatService, AnnaGlobalConfigService, ICustomMultiSelect } from \"@annalib/anna-core\";\r\nimport { NgbCalendar, NgbDate, NgbDatepicker, NgbDateStruct } from \"@ng-bootstrap/ng-bootstrap\";\r\n// Third party import statements\r\nimport dayjs from \"dayjs\";\r\n\r\n// User defined import statements\r\nimport { DatePickerConstant } from \"./constants/date-picker.constant\";\r\nimport { Month, StartDateConsideringFactor, YearsForDatePicker } from \"./models/datePicker.model\";\r\nimport { DatepickerService } from \"./services/datepickerService\";\r\n\r\n@Component({\r\n    selector: \"anna-design-custom-date-picker\",\r\n    templateUrl: \"./custom-date-picker.component.html\",\r\n    styleUrls: [\"./custom-date-picker.component.scss\"],\r\n    encapsulation: ViewEncapsulation.None,\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    imports: [MatMenuModule, NgClass, NgIf, NgFor, NgStyle, NgbDatepicker, FormsModule, UpperCasePipe],\r\n})\r\nexport class CustomDatePickerComponent implements OnInit, OnChanges {\r\n    @Input() calendarType: string;\r\n    @Input() maxDate: NgbDateStruct;\r\n    @Input() minDate: NgbDateStruct;\r\n    @Input() maxYear: number;\r\n    @Input() minYear: number;\r\n    @Input() selectedDate: any; // changed the type as part of Day.js\r\n    @Input() disabled: boolean;\r\n    @Input() allYearsWithData: string[];\r\n    @Input() startDateConsideringFactor: StartDateConsideringFactor;\r\n\r\n    @Output() dateSelect: EventEmitter<string> = new EventEmitter<string>();\r\n    config: ICustomMultiSelect;\r\n    allYears: YearsForDatePicker[];\r\n    datepickerMonths: string[];\r\n    showMonths: boolean = false;\r\n    showYears: boolean = false;\r\n    allMonths: Month[];\r\n    selectedMonth: Month;\r\n    selectedYear: number;\r\n    startDate: { month: number; day?: number; year: number };\r\n\r\n    @ViewChild(MatMenuTrigger) contextMenu: MatMenuTrigger;\r\n    contextMenuPosition = { x: \"0px\", y: \"0px\" };\r\n    selectedDateForDisplay: string;\r\n    weekCount: number;\r\n    broadcastMinMonthId: number;\r\n    broadcastMaxMonthId: number;\r\n    broadcastMinYearId: number;\r\n    broadcastMaxYearId: number;\r\n    constant: typeof DatePickerConstant;\r\n    markDisabled: (date: NgbDateStruct) => boolean;\r\n    @ViewChild(\"dp\", { static: true }) datepicker: NgbDatepicker;\r\n\r\n    constructor(\r\n        private annaGlobalConfig: AnnaGlobalConfigService,\r\n        private annaDateTimeFormatService: AnnaDateTimeFormatService,\r\n        private dpService: DatepickerService,\r\n        private calendar: NgbCalendar,\r\n    ) {}\r\n\r\n    ngOnInit(): void {\r\n        this.constant = DatePickerConstant;\r\n        this.config = { ...this.annaGlobalConfig.defaultMultiSelectConfig, ...this.config };\r\n        this.config.placeholder = \"mm/dd/yyyy\";\r\n        this.allMonths = this.dpService.getAllMonths();\r\n        this.selectedDateForDisplay = this.selectedDate\r\n            ? dayjs(this.selectedDate, \"YYYY-MM-DD\").format(\"MM/DD/YYYY\")\r\n            : null;\r\n        this.selectedDate = this.selectedDate\r\n            ? this.annaDateTimeFormatService.convertToNgbDate(this.selectedDate, \"YYYY-MM-DD\")\r\n            : null;\r\n    }\r\n\r\n    ngOnChanges(changes: SimpleChanges) {\r\n        if (\r\n            this.minDate &&\r\n            this.maxDate &&\r\n            ((changes.minDate && changes.minDate.currentValue) ||\r\n                (changes.maxDate && changes.maxDate.currentValue) ||\r\n                (changes.calendarType && changes.calendarType.currentValue))\r\n        ) {\r\n            this.setBroadcastMinMaxMonthsAndYears();\r\n            this.findAllYearsBetweenCampaignStartAndEndDates();\r\n            this.resetDate();\r\n            this.setStartDate();\r\n        }\r\n    }\r\n\r\n    findAllYearsBetweenCampaignStartAndEndDates() {\r\n        this.allYears = [];\r\n        let minYear = this.calendarType === DatePickerConstant.Broadcast ? this.broadcastMinYearId : this.minYear;\r\n        const maxYear = this.calendarType === DatePickerConstant.Broadcast ? this.broadcastMaxYearId : this.maxYear;\r\n        while (minYear <= maxYear) {\r\n            const isDisabled = !this.allYearsWithData.includes(minYear.toString());\r\n            this.allYears.push({ text: minYear, disabled: isDisabled });\r\n            minYear += 1;\r\n        }\r\n    }\r\n\r\n    //  requirement: open calendar with current date, if current date is not in range of minDate-maxDate,\r\n    //  then open calendar with flightStartDate/flighEndDate based on input\r\n    setStartDate() {\r\n        if (!this.selectedDate) {\r\n            const currentDate = this.calendar.getToday();\r\n            if (currentDate.before(this.maxDate) && currentDate.after(this.minDate)) {\r\n                this.startDate = currentDate;\r\n            } else {\r\n                switch (this.startDateConsideringFactor) {\r\n                    case StartDateConsideringFactor.FLIGHT_START_DATE:\r\n                        this.startDate = this.minDate;\r\n                        break;\r\n                    case StartDateConsideringFactor.FLIGHT_END_DATE:\r\n                        this.startDate = this.maxDate;\r\n                        break;\r\n                    // no default\r\n                }\r\n            }\r\n        } else {\r\n            this.startDate = this.annaDateTimeFormatService.convertToNgbDate(this.selectedDate, \"YYYY-MM-DD\");\r\n        }\r\n    }\r\n\r\n    setBroadcastMinMaxMonthsAndYears() {\r\n        let value = this.dpService.findBroadcastYearAndMonthForDate(NgbDate.from(this.minDate));\r\n        this.broadcastMinMonthId = value.monthId;\r\n        this.broadcastMinYearId = value.yearId;\r\n        value = this.dpService.findBroadcastYearAndMonthForDate(NgbDate.from(this.maxDate));\r\n        this.broadcastMaxMonthId = value.monthId;\r\n        this.broadcastMaxYearId = value.yearId;\r\n    }\r\n\r\n    enableDsiableMonthsOfYear() {\r\n        if (\r\n            (this.calendarType === DatePickerConstant.Fiscal && this.selectedYear === this.minDate.year) ||\r\n            (this.calendarType === DatePickerConstant.Broadcast && this.selectedYear === this.broadcastMinYearId)\r\n        ) {\r\n            const minMonthOfYear =\r\n                this.calendarType !== DatePickerConstant.Broadcast ? this.minDate.month : this.broadcastMinMonthId;\r\n            this.allMonths.forEach((item) => {\r\n                if (item.id < minMonthOfYear) {\r\n                    item.disabled = true;\r\n                } else {\r\n                    item.disabled = false;\r\n                }\r\n            });\r\n        } else if (\r\n            (this.calendarType === DatePickerConstant.Fiscal && this.selectedYear === this.maxDate.year) ||\r\n            (this.calendarType === DatePickerConstant.Broadcast && this.selectedYear === this.broadcastMaxYearId)\r\n        ) {\r\n            const maxMonthOfYear =\r\n                this.calendarType !== DatePickerConstant.Broadcast ? this.maxDate.month : this.broadcastMaxMonthId;\r\n            this.allMonths.forEach((item) => {\r\n                if (item.id > maxMonthOfYear) {\r\n                    item.disabled = true;\r\n                } else {\r\n                    item.disabled = false;\r\n                }\r\n            });\r\n        } else {\r\n            this.allMonths.forEach((item) => {\r\n                item.disabled = false;\r\n            });\r\n        }\r\n    }\r\n\r\n    displayYears() {\r\n        this.showYears = true;\r\n        this.showMonths = false;\r\n    }\r\n\r\n    displayMonths() {\r\n        this.showYears = false;\r\n        this.showMonths = true;\r\n    }\r\n\r\n    goToNextOrPrevYear(countOfYearsForNavigation: number) {\r\n        this.selectedYear += countOfYearsForNavigation;\r\n        this.changeSelectedMonthIfNotInSelectableRange();\r\n        this.datepicker.navigateTo({ year: this.selectedYear, month: this.selectedMonth.id });\r\n        this.setWeekCountInAMonth();\r\n        this.enableDsiableMonthsOfYear();\r\n        this.disableDays();\r\n    }\r\n\r\n    goToNextOrPreviousMonth(countOfMonthsForNavigation: number) {\r\n        let monthForNavigation: number;\r\n        if (countOfMonthsForNavigation + this.selectedMonth.id > 12) {\r\n            this.datepicker.navigateTo({ year: this.selectedYear + 1, month: 1 });\r\n            monthForNavigation = 1;\r\n            this.selectedYear += 1;\r\n            this.enableDsiableMonthsOfYear();\r\n        } else if (countOfMonthsForNavigation + this.selectedMonth.id < 1) {\r\n            this.datepicker.navigateTo({ year: this.selectedYear - 1, month: 12 });\r\n            monthForNavigation = 12;\r\n            this.selectedYear -= 1;\r\n            this.enableDsiableMonthsOfYear();\r\n        } else {\r\n            const { state, calendar } = this.datepicker;\r\n            monthForNavigation = this.selectedMonth.id + countOfMonthsForNavigation;\r\n            this.datepicker.navigateTo(calendar.getNext(state.firstDate, \"m\", countOfMonthsForNavigation));\r\n        }\r\n        this.selectedMonth = this.allMonths.filter((n) => n.id === monthForNavigation)[0];\r\n        this.setWeekCountInAMonth();\r\n        this.disableDays();\r\n    }\r\n\r\n    yearSelected(selectedYear: YearsForDatePicker) {\r\n        this.showMonths = false;\r\n        this.showYears = false;\r\n        this.selectedYear = selectedYear.text;\r\n        if (!this.selectedMonth) {\r\n            const { state } = this.datepicker;\r\n            this.selectedMonth = this.allMonths.filter((n) => n.id === state.firstDate.month)[0];\r\n        }\r\n        this.changeSelectedMonthIfNotInSelectableRange();\r\n        this.datepicker.navigateTo({ year: this.selectedYear, month: this.selectedMonth.id });\r\n        this.setWeekCountInAMonth();\r\n        this.enableDsiableMonthsOfYear();\r\n        this.disableDays();\r\n    }\r\n\r\n    changeSelectedMonthIfNotInSelectableRange() {\r\n        const minMonth =\r\n            this.calendarType === DatePickerConstant.Broadcast ? this.broadcastMinMonthId : this.minDate.month;\r\n        const minYear =\r\n            this.calendarType === DatePickerConstant.Broadcast ? this.broadcastMinYearId : this.minDate.year;\r\n        const maxMonth =\r\n            this.calendarType === DatePickerConstant.Broadcast ? this.broadcastMaxMonthId : this.maxDate.month;\r\n        const maxYear =\r\n            this.calendarType === DatePickerConstant.Broadcast ? this.broadcastMaxYearId : this.maxDate.year;\r\n        if (this.selectedYear === minYear && this.selectedMonth.id <= minMonth) {\r\n            this.selectedMonth = this.allMonths.filter((n) => n.id === minMonth)[0];\r\n        } else if (this.selectedYear === maxYear && this.selectedMonth.id >= maxMonth) {\r\n            this.selectedMonth = this.allMonths.filter((n) => n.id === maxMonth)[0];\r\n        }\r\n    }\r\n\r\n    monthSelected(selectedMonth: Month) {\r\n        this.showMonths = false;\r\n        this.showYears = false;\r\n        this.selectedMonth = selectedMonth;\r\n        if (!this.selectedYear) {\r\n            const { state } = this.datepicker;\r\n            this.selectedYear = state.firstDate.year;\r\n        }\r\n        this.datepicker.navigateTo({ year: this.selectedYear, month: selectedMonth.id });\r\n        this.setWeekCountInAMonth();\r\n        this.disableDays();\r\n    }\r\n\r\n    dateSelectionChanged() {\r\n        this.selectedDateForDisplay = this.annaDateTimeFormatService.convertNgbDateToMoment(this.selectedDate);\r\n        this.contextMenu.closeMenu();\r\n        this.dateSelect.emit(dayjs(this.selectedDateForDisplay, \"MM/DD/YYYY\").format(\"YYYY-MM-DD\"));\r\n    }\r\n\r\n    onOpenContextMenu() {\r\n        this.setInitialMonthAndYearForCalendarToOpenWith();\r\n        this.datepicker.navigateTo({ year: this.selectedYear, month: this.selectedMonth.id });\r\n        this.enableDsiableMonthsOfYear();\r\n        this.setWeekCountInAMonth();\r\n        this.disableDays();\r\n    }\r\n\r\n    setInitialMonthAndYearForCalendarToOpenWith() {\r\n        let openCalendarWithDate = this.startDate;\r\n        if (this.selectedDate) {\r\n            openCalendarWithDate =\r\n                typeof this.selectedDate === \"string\"\r\n                    ? this.annaDateTimeFormatService.convertToNgbDate(this.selectedDate, \"YYYY-MM-DD\")\r\n                    : this.selectedDate;\r\n        }\r\n\r\n        if (this.calendarType === DatePickerConstant.Broadcast) {\r\n            openCalendarWithDate = this.findBroadcastMonthForDate(openCalendarWithDate);\r\n        }\r\n        this.selectedMonth = this.allMonths.filter((n) => n.id === openCalendarWithDate.month)[0];\r\n        this.selectedYear = openCalendarWithDate.year;\r\n    }\r\n\r\n    findBroadcastMonthForDate(date: any): NgbDateStruct {\r\n        const monthAndYear: { monthId: number; yearId: number } = this.dpService.findBroadcastYearAndMonthForDate(date);\r\n        return { day: 1, month: monthAndYear.monthId, year: monthAndYear.yearId };\r\n    }\r\n\r\n    onCloseContextMenu() {\r\n        this.showMonths = false;\r\n        this.showYears = false;\r\n    }\r\n\r\n    setWeekCountInAMonth() {\r\n        const dates: { startDate: string; endDate: string } = this.dpService.getDateForBroadcastMonth(\r\n            this.selectedYear.toString(),\r\n            this.selectedMonth.stringId,\r\n        );\r\n        this.weekCount = dayjs(dates.endDate).diff(dayjs(dates.startDate), \"week\") + 1;\r\n    }\r\n\r\n    disableDays() {\r\n        this.markDisabled = (date: NgbDateStruct) =>\r\n            NgbDate.from(date).before(this.minDate) || NgbDate.from(date).after(this.maxDate);\r\n    }\r\n\r\n    resetDate() {\r\n        let selectedDateInNgbFormat = null;\r\n        if (this.selectedDate) {\r\n            selectedDateInNgbFormat =\r\n                typeof this.selectedDate === \"string\"\r\n                    ? this.annaDateTimeFormatService.convertToNgbDate(this.selectedDate, \"YYYY-MM-DD\")\r\n                    : this.selectedDate;\r\n        }\r\n        if (\r\n            selectedDateInNgbFormat &&\r\n            (NgbDate.from(selectedDateInNgbFormat).before(this.minDate) ||\r\n                NgbDate.from(selectedDateInNgbFormat).after(this.maxDate))\r\n        ) {\r\n            this.selectedDate = null;\r\n            this.selectedDateForDisplay = null;\r\n            if (this.datepicker && this.datepicker.model) {\r\n                this.datepicker.model.selectedDate = null;\r\n            }\r\n            this.dateSelect.emit(null);\r\n        }\r\n    }\r\n}\r\n","<div>\r\n    <button\r\n        #t=\"matMenuTrigger\"\r\n        [matMenuTriggerFor]=\"contextMenu\"\r\n        [disabled]=\"disabled\"\r\n        class=\"datepicker-dropdown\"\r\n        (click)=\"onOpenContextMenu()\"\r\n        [ngClass]=\"{ 'disabled-dp-button': disabled }\"\r\n    >\r\n        <span\r\n            class=\"placeholder\"\r\n            *ngIf=\"!selectedDate\"\r\n            >{{ config.placeholder }}</span\r\n        >\r\n        <span\r\n            class=\"display-date\"\r\n            *ngIf=\"selectedDate\"\r\n            >{{ selectedDateForDisplay }}</span\r\n        >\r\n        <i class=\"mdi mdi-calendar\"></i>\r\n    </button>\r\n</div>\r\n<mat-menu\r\n    #contextMenu=\"matMenu\"\r\n    class=\"dp-menu\"\r\n    (close)=\"onCloseContextMenu()\"\r\n>\r\n    <div\r\n        class=\"month-year-container\"\r\n        (click)=\"$event.stopPropagation()\"\r\n    >\r\n        <div class=\"month-navigation\">\r\n            <span\r\n                class=\"mdi mdi-menu-up previous-arrow\"\r\n                [ngClass]=\"{\r\n                    'disabled-navigation':\r\n                        (calendarType === 'fiscal' &&\r\n                            selectedYear === minDate?.year &&\r\n                            selectedMonth.id === minDate?.month) ||\r\n                        (calendarType === constant.Broadcast &&\r\n                            broadcastMinYearId === selectedYear &&\r\n                            broadcastMinMonthId === selectedMonth.id)\r\n                }\"\r\n                (click)=\"goToNextOrPreviousMonth(-1)\"\r\n            ></span>\r\n            <span\r\n                class=\"header-text\"\r\n                (click)=\"displayMonths()\"\r\n                >{{ selectedMonth?.text | uppercase }}</span\r\n            >\r\n            <span\r\n                class=\"mdi mdi-menu-down next-arrow\"\r\n                [ngClass]=\"{\r\n                    'disabled-navigation':\r\n                        (calendarType === 'fiscal' &&\r\n                            selectedYear === maxDate?.year &&\r\n                            selectedMonth?.id === maxDate?.month) ||\r\n                        (calendarType === constant.Broadcast &&\r\n                            broadcastMaxYearId === selectedYear &&\r\n                            broadcastMaxMonthId === selectedMonth.id)\r\n                }\"\r\n                (click)=\"goToNextOrPreviousMonth(1)\"\r\n            ></span>\r\n        </div>\r\n        <div class=\"year-navigation\">\r\n            <span\r\n                class=\"mdi mdi-menu-up previous-arrow\"\r\n                [ngClass]=\"{ 'disabled-navigation': allYears && selectedYear === allYears[0].text }\"\r\n                (click)=\"goToNextOrPrevYear(-1)\"\r\n            ></span>\r\n            <span\r\n                class=\"header-text\"\r\n                (click)=\"displayYears()\"\r\n                >{{ selectedYear }}</span\r\n            >\r\n            <span\r\n                class=\"mdi mdi-menu-down next-arrow\"\r\n                [ngClass]=\"{ 'disabled-navigation': allYears && selectedYear === allYears[allYears.length - 1].text }\"\r\n                (click)=\"goToNextOrPrevYear(1)\"\r\n            ></span>\r\n        </div>\r\n    </div>\r\n\r\n    <div\r\n        *ngIf=\"showYears\"\r\n        class=\"month-container\"\r\n        (click)=\"$event.stopPropagation()\"\r\n    >\r\n        <ng-container *ngFor=\"let year of allYears\">\r\n            <div\r\n                class=\"col-3\"\r\n                [ngClass]=\"{ 'active-item': selectedYear === year.text, 'disabled-year': year.disabled }\"\r\n                (click)=\"$event.stopPropagation(); yearSelected(year)\"\r\n            >\r\n                {{ year.text }}\r\n            </div>\r\n        </ng-container>\r\n    </div>\r\n\r\n    <div\r\n        *ngIf=\"showMonths\"\r\n        class=\"month-container\"\r\n        (click)=\"$event.stopPropagation()\"\r\n    >\r\n        <ng-container *ngFor=\"let month of allMonths\">\r\n            <div\r\n                class=\"col-3\"\r\n                [ngClass]=\"{ 'active-item': selectedMonth === month, 'disabled-year': month.disabled }\"\r\n                (click)=\"$event.stopPropagation(); monthSelected(month)\"\r\n            >\r\n                {{ month.displayText }}\r\n            </div>\r\n        </ng-container>\r\n    </div>\r\n\r\n    <div\r\n        (click)=\"$event.stopPropagation()\"\r\n        [ngStyle]=\"{ display: showMonths || showYears ? 'none' : '' }\"\r\n    >\r\n        <ngb-datepicker\r\n            #dp\r\n            [(ngModel)]=\"selectedDate\"\r\n            (dateSelect)=\"dateSelectionChanged()\"\r\n            [startDate]=\"startDate\"\r\n            [markDisabled]=\"markDisabled\"\r\n            [navigation]=\"'none'\"\r\n            [outsideDays]=\"calendarType === constant.Broadcast ? 'visible' : 'collapsed'\"\r\n            [ngClass]=\"{\r\n                'broadcast-dp-five-weeks': calendarType === constant.Broadcast && weekCount === 5,\r\n                'broadcast-dp-four-weeks': calendarType === constant.Broadcast && weekCount === 4\r\n            }\"\r\n            class=\"customized-dp\"\r\n        ></ngb-datepicker>\r\n    </div>\r\n</mat-menu>\r\n","import { Injectable } from \"@angular/core\";\r\nimport { NgbDateParserFormatter, NgbDateStruct } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport dayjs from \"dayjs\";\r\n\r\n@Injectable({\r\n    providedIn: \"root\",\r\n})\r\nexport class CustomDateParserFormatter extends NgbDateParserFormatter {\r\n    public dateFormat = \"MM/DD/YYYY\";\r\n\r\n    parse(value: string): NgbDateStruct | null {\r\n        if (!value) return null;\r\n        const d = dayjs(value, this.dateFormat);\r\n        return d.isValid() ? { year: d.year(), month: d.month() + 1, day: d.date() } : null;\r\n    }\r\n\r\n    format(date: NgbDateStruct | null): string {\r\n        if (!date) return \"\";\r\n        const jsDate = new Date(date.year, date.month - 1, date.day);\r\n        return dayjs(jsDate).format(this.dateFormat);\r\n    }\r\n}\r\n","import { CommonModule } from \"@angular/common\";\r\nimport { ChangeDetectionStrategy, Component, forwardRef, Input, OnInit } from \"@angular/core\";\r\nimport { FormsModule, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\nimport { NgbDate, NgbDateParserFormatter, NgbInputDatepicker } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport dayjs from \"dayjs\";\r\n\r\nimport { CustomDateParserFormatter } from \"./services/custom-date-formatter.service\";\r\n\r\n@Component({\r\n    selector: \"anna-design-custom-ngb-datepicker-form-control\",\r\n    imports: [CommonModule, NgbInputDatepicker, FormsModule],\r\n    templateUrl: \"./custom-ngb-datepicker-form-control.component.html\",\r\n    styleUrls: [\"./custom-ngb-datepicker-form-control.component.scss\"],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    providers: [\r\n        {\r\n            provide: NG_VALUE_ACCESSOR,\r\n            useExisting: forwardRef(() => CustomNgbDatepickerFormControlComponent),\r\n            multi: true,\r\n        },\r\n        { provide: NgbDateParserFormatter, useClass: CustomDateParserFormatter },\r\n    ],\r\n})\r\nexport class CustomNgbDatepickerFormControlComponent implements OnInit {\r\n    @Input() placeholder: string = \"Select a date\";\r\n    @Input() minDate!: NgbDate;\r\n    @Input() maxDate!: NgbDate;\r\n    @Input() format: string = \"MM/DD/YYYY\";\r\n\r\n    model!: NgbDate | null;\r\n    formattedValue = \"\";\r\n    private onChange: (value: any) => void = () => {};\r\n    private onTouched: () => void = () => {};\r\n\r\n    constructor(private customDateParserFormatter: CustomDateParserFormatter) {}\r\n\r\n    ngOnInit(): void {\r\n        this.customDateParserFormatter.dateFormat = this.format;\r\n    }\r\n\r\n    writeValue(value: any): void {\r\n        if (value) {\r\n            this.model = new NgbDate(value.year, value.month, value.day);\r\n            this.convertDateToSpecificFormat();\r\n        } else {\r\n            this.model = null;\r\n            this.formattedValue = \"\";\r\n        }\r\n    }\r\n\r\n    registerOnChange(fn: any): void {\r\n        this.onChange = fn;\r\n    }\r\n\r\n    registerOnTouched(fn: any): void {\r\n        this.onTouched = fn;\r\n    }\r\n\r\n    onDateSelect(date: NgbDate): void {\r\n        this.model = date;\r\n        this.onChange(date);\r\n        this.convertDateToSpecificFormat();\r\n    }\r\n\r\n    convertDateToSpecificFormat() {\r\n        const jsDate = new Date(this.model.year, this.model.month - 1, this.model.day);\r\n        this.formattedValue = dayjs(jsDate).format(this.format);\r\n    }\r\n}\r\n","<div class=\"input-group\">\r\n    <input\r\n        class=\"form-control\"\r\n        [placeholder]=\"placeholder\"\r\n        ngbDatepicker\r\n        #dp=\"ngbDatepicker\"\r\n        [minDate]=\"minDate\"\r\n        [maxDate]=\"maxDate\"\r\n        (dateSelect)=\"onDateSelect($event)\"\r\n        (click)=\"dp.toggle()\"\r\n        [(ngModel)]=\"model\"\r\n        readonly\r\n    />\r\n    <i\r\n        class=\"mdi mdi-calendar-range\"\r\n        (click)=\"dp.toggle()\"\r\n    ></i>\r\n</div>\r\n","/* eslint-disable import/no-extraneous-dependencies */\r\nimport { CdkFixedSizeVirtualScroll, CdkVirtualForOf, CdkVirtualScrollViewport } from \"@angular/cdk/scrolling\";\r\nimport { NgClass, NgFor, NgIf, NgTemplateOutlet } from \"@angular/common\";\r\nimport {\r\n    ChangeDetectionStrategy,\r\n    Component,\r\n    ElementRef,\r\n    EventEmitter,\r\n    forwardRef,\r\n    Input,\r\n    OnChanges,\r\n    OnInit,\r\n    Output,\r\n    SimpleChanges,\r\n    ViewChild,\r\n} from \"@angular/core\";\r\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\nimport { MatMenuModule } from \"@angular/material/menu\";\r\nimport {\r\n    AnnaCoreModule,\r\n    AnnaFilterSearchedTextPipe,\r\n    AnnaGlobalConfigService,\r\n    ICustomSingleSelect,\r\n} from \"@annalib/anna-core\";\r\nimport { isEqual } from \"lodash-es\";\r\n\r\nimport { SingleSelectIdText } from \"../globals/global.model\";\r\n\r\n@Component({\r\n    selector: \"anna-design-single-select\",\r\n    templateUrl: \"./single-select.component.html\",\r\n    styleUrls: [\"./single-select.component.scss\"],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    imports: [\r\n        MatMenuModule,\r\n        NgIf,\r\n        AnnaCoreModule,\r\n        NgClass,\r\n        FormsModule,\r\n        CdkVirtualScrollViewport,\r\n        CdkFixedSizeVirtualScroll,\r\n        CdkVirtualForOf,\r\n        NgTemplateOutlet,\r\n        NgFor,\r\n        AnnaFilterSearchedTextPipe\r\n    ],\r\n    providers: [\r\n        {\r\n            provide: NG_VALUE_ACCESSOR,\r\n            useExisting: forwardRef(() => SingleSelectComponent),\r\n            multi: true,\r\n        },\r\n    ],\r\n    standalone: true\r\n})\r\nexport class SingleSelectComponent implements OnInit, OnChanges, ControlValueAccessor {\r\n    @Input() config: ICustomSingleSelect;\r\n    @Input() loading: boolean = false;\r\n    @Input() showAdditionalDataInSelectedText: boolean = false;\r\n    @Input() disabled: boolean;\r\n    @Input({ required: true }) items: SingleSelectIdText[] | string[] | any;\r\n    @Input() selectedItem: SingleSelectIdText | string | any;\r\n    @Input() keyToUseForDisplay: string = \"text\";\r\n    @Input() keyToUseForCheckingSelectedItem: string = \"id\";\r\n    @Input() hideDropdownArrow: boolean = false;\r\n    @Input() borderbottomObject: any = {};\r\n    @Input() defaultDropdownHeight: number = null;\r\n    @Input() itemsToHideInDropdownIds: number[] = [];\r\n    @Input() showClearSelection: boolean = false;\r\n\r\n    @Output() valueChanged: EventEmitter<SingleSelectIdText> = new EventEmitter<SingleSelectIdText>();\r\n    @Output() dropdownClosedEvent: EventEmitter<any> = new EventEmitter<any>();\r\n    @Output() dropdownOpenedEvent: EventEmitter<any> = new EventEmitter<any>();\r\n    @Output() clearSelectionClickedEvent: EventEmitter<any> = new EventEmitter<any>();\r\n    searchFor: string;\r\n    yPosition: any = \"above\";\r\n    width: number;\r\n    heightOfCheckboxTooltipFilter: number;\r\n\r\n    @ViewChild(\"dropdown\") buttonElement: ElementRef;\r\n\r\n    private onChange: ((value: SingleSelectIdText) => void) | null = null;\r\n    private onTouched: (() => void) | null = null;\r\n    showBlueBorder: boolean = false;\r\n\r\n    constructor(\r\n        private annaGlobalConfig: AnnaGlobalConfigService,\r\n        private searchFilterPipe: AnnaFilterSearchedTextPipe,\r\n    ) {}\r\n\r\n    writeValue(obj: SingleSelectIdText): void {\r\n        this.selectedItem = obj;\r\n    }\r\n\r\n    registerOnChange(fn: any): void {\r\n        this.onChange = fn;\r\n    }\r\n\r\n    registerOnTouched(fn: any): void {\r\n        this.onTouched = fn;\r\n    }\r\n\r\n    ngOnChanges(changes: SimpleChanges) {\r\n        if (changes.config?.currentValue) {\r\n            this.config = { ...this.annaGlobalConfig.defaultSingleSelectConfig, ...this.config };\r\n        }\r\n\r\n        if (changes.items?.currentValue) {\r\n            if (this.defaultDropdownHeight) this.heightOfCheckboxTooltipFilter = this.defaultDropdownHeight;\r\n            else this.heightOfCheckboxTooltipFilter = this.items.length > 7 ? 200 : 25.68 * this.items.length;\r\n        }\r\n\r\n        if (changes.itemsToHideInDropdownIds?.currentValue) {\r\n            this.items = this.items.filter(\r\n                (item: SingleSelectIdText) => !this.itemsToHideInDropdownIds.includes(item.id),\r\n            );\r\n        }\r\n    }\r\n\r\n    ngOnInit(): void {\r\n        this.config = { ...this.annaGlobalConfig.defaultSingleSelectConfig, ...this.config };\r\n        this.setPostion();\r\n    }\r\n\r\n    trackByFn(index: number) {\r\n        return index;\r\n    }\r\n\r\n    itemSelected(item: SingleSelectIdText, event: MouseEvent) {\r\n        this.showBlueBorder = false;\r\n        if (item?.isDisabled) {\r\n            event.stopPropagation();\r\n            return;\r\n        }\r\n        if (this.onChange) {\r\n            this.onChange(item!); // Notify form control (Reactive Form)\r\n        } else if (!isEqual(this.selectedItem, item)) {\r\n            if (this.config.showBlueBorderOnEdit) {\r\n                this.showBlueBorder = true;\r\n            }\r\n            this.valueChanged.emit(item);\r\n        }\r\n        this.selectedItem = item;\r\n    }\r\n\r\n    dropdownOpened() {\r\n        this.searchFor = \"\";\r\n        this.updateHeight();\r\n        this.width = this.buttonElement.nativeElement.offsetWidth;\r\n        this.dropdownOpenedEvent.emit();\r\n    }\r\n\r\n    dropdownClosed() {\r\n        this.dropdownClosedEvent.emit();\r\n    }\r\n\r\n    clearSelectionClicked() {\r\n        this.selectedItem = null;\r\n        this.clearSelectionClickedEvent.emit();\r\n    }\r\n\r\n    setPostion() {\r\n        if (this.config && this.config.position === \"TOP\") {\r\n            this.yPosition = \"above\";\r\n        } else if (this.config && this.config.position === \"BOTTOM\") {\r\n            this.yPosition = \"below\";\r\n        }\r\n    }\r\n    updateHeight() {\r\n        const items = this.searchFilterPipe.transform(this.items, this.searchFor, this.keyToUseForDisplay);\r\n        if (items.length > 7) {\r\n            this.heightOfCheckboxTooltipFilter = 200;\r\n        } else if (items.length > 0) {\r\n            this.heightOfCheckboxTooltipFilter = 25.68 * items.length;\r\n        } else {\r\n            this.heightOfCheckboxTooltipFilter = 25.68;\r\n        }\r\n    }\r\n}\r\n","<button\r\n    id=\"dropdown-trigger\"\r\n    #dropdown\r\n    #t=\"matMenuTrigger\"\r\n    (menuClosed)=\"dropdownClosed()\"\r\n    (menuOpened)=\"dropdownOpened()\"\r\n    [ngClass]=\"{ 'blue-border': config?.showBlueBorderOnEdit && showBlueBorder }\"\r\n    [matMenuTriggerFor]=\"contextMenu\"\r\n    [disabled]=\"disabled || loading\"\r\n>\r\n    <span\r\n        class=\"placeholder\"\r\n        *ngIf=\"!selectedItem && config\"\r\n        >{{ config.placeholder }}</span\r\n    >\r\n    <span\r\n        class=\"selected-item\"\r\n        [class]=\"selectedItem.class\"\r\n        annaCoreShowEllipsisTextOnHover\r\n        *ngIf=\"selectedItem\"\r\n    >\r\n        <ng-container *ngIf=\"(selectedItem | AnnatypeofData) === 'object'; else stringTypeTemplate\">\r\n            {{ selectedItem[keyToUseForDisplay] }}\r\n            <ng-container *ngIf=\"showAdditionalDataInSelectedText && selectedItem && selectedItem?.additionalData\">\r\n                <span [class]=\"selectedItem?.additionalClass\">{{ selectedItem?.additionalData }} </span>\r\n            </ng-container>\r\n        </ng-container>\r\n        <ng-template #stringTypeTemplate>\r\n            {{ selectedItem }}\r\n        </ng-template>\r\n    </span>\r\n    <div\r\n        *ngIf=\"loading\"\r\n        [ngClass]=\"{ 'spinner-for-button-directive': loading }\"\r\n    ></div>\r\n\r\n    <ng-container *ngIf=\"!loading && !hideDropdownArrow\">\r\n        <i\r\n            *ngIf=\"!t.menuOpen\"\r\n            class=\"mdi mdi-menu-down icon\"\r\n        ></i>\r\n        <i\r\n            *ngIf=\"t.menuOpen\"\r\n            class=\"mdi mdi-menu-up icon\"\r\n        ></i>\r\n    </ng-container>\r\n</button>\r\n<ng-content select=\".role-tooltip-icon\"></ng-content>\r\n<mat-menu\r\n    backdropClass=\"single-select-dropdown\"\r\n    [yPosition]=\"yPosition\"\r\n    #contextMenu=\"matMenu\"\r\n>\r\n    <ng-template matMenuContent>\r\n        <div\r\n            class=\"{{ config.classes }}\"\r\n            [style.width.px]=\"width\"\r\n        >\r\n            <div\r\n                class=\"gap\"\r\n                *ngIf=\"config.showSearchBar\"\r\n            ></div>\r\n            <div\r\n                *ngIf=\"showClearSelection\"\r\n                class=\"clear-selection\"\r\n            >\r\n                <a\r\n                    (click)=\"clearSelectionClicked()\"\r\n                    [ngClass]=\"{ disabled: !selectedItem }\"\r\n                    >Clear selection</a\r\n                >\r\n            </div>\r\n            <section\r\n                *ngIf=\"config.showSearchBar\"\r\n                class=\"search-bar\"\r\n            >\r\n                <i class=\"mi mdi-search search-icon\"></i>\r\n                <input\r\n                    type=\"text\"\r\n                    [(ngModel)]=\"searchFor\"\r\n                    placeholder=\"Search\"\r\n                    (ngModelChange)=\"updateHeight()\"\r\n                    (click)=\"$event.stopPropagation()\"\r\n                />\r\n            </section>\r\n            <cdk-virtual-scroll-viewport\r\n                class=\"dropdown-data-container\"\r\n                itemSize=\"18\"\r\n                [style.height.px]=\"heightOfCheckboxTooltipFilter\"\r\n            >\r\n                <ul\r\n                    class=\"single-select-ul\"\r\n                    [style.width.px]=\"width\"\r\n                >\r\n                    <ng-container *ngIf=\"items && (items[0] | AnnatypeofData) === 'object'; else stringTypeTemplate\">\r\n                        <li\r\n                            annaCoreShowEllipsisTextOnHover\r\n                            *cdkVirtualFor=\"\r\n                                let item of items | AnnafilterSearchedText: searchFor : keyToUseForDisplay;\r\n                                let last = last;\r\n                                trackBy: trackByFn\r\n                            \"\r\n                            [ngClass]=\"{\r\n                                active:\r\n                                    selectedItem &&\r\n                                    selectedItem[keyToUseForCheckingSelectedItem] ===\r\n                                        item[keyToUseForCheckingSelectedItem],\r\n                                'show-bottom-border': !last && borderbottomObject[item.id],\r\n                                disabled: item.isDisabled\r\n                            }\"\r\n                            (click)=\"itemSelected(item, $event)\"\r\n                        >\r\n                            <span [class]=\"item.class\"> {{ item[keyToUseForDisplay] }} </span>\r\n                            <ng-container *ngIf=\"item && item.additionalData\">\r\n                                <span\r\n                                    class=\"ml-0\"\r\n                                    [class]=\"item.additionalClass\"\r\n                                >\r\n                                    {{ item?.additionalData }}\r\n                                </span>\r\n                            </ng-container>\r\n                        </li>\r\n\r\n                        <ng-container\r\n                            [ngTemplateOutlet]=\"noDataCase\"\r\n                            [ngTemplateOutletContext]=\"{ items: items }\"\r\n                        ></ng-container>\r\n                    </ng-container>\r\n\r\n                    <ng-template #stringTypeTemplate>\r\n                        <ng-container\r\n                            *ngFor=\"\r\n                                let item of items | AnnafilterSearchedText: searchFor : keyToUseForDisplay;\r\n                                trackBy: trackByFn\r\n                            \"\r\n                        >\r\n                            <li\r\n                                annaCoreShowEllipsisTextOnHover\r\n                                [ngClass]=\"{ active: selectedItem && selectedItem === item }\"\r\n                                (click)=\"itemSelected(item, $event)\"\r\n                            >\r\n                                <span> {{ item }} </span>\r\n                            </li>\r\n                        </ng-container>\r\n                        <ng-container\r\n                            [ngTemplateOutlet]=\"noDataCase\"\r\n                            [ngTemplateOutletContext]=\"{ items: items }\"\r\n                        ></ng-container>\r\n                    </ng-template>\r\n                </ul>\r\n            </cdk-virtual-scroll-viewport>\r\n        </div>\r\n    </ng-template>\r\n</mat-menu>\r\n\r\n<ng-template\r\n    #noDataCase\r\n    let-items=\"items\"\r\n>\r\n    <li\r\n        annaCoreShowEllipsisTextOnHover\r\n        *ngIf=\"(items | AnnafilterSearchedText: searchFor : keyToUseForDisplay)?.length === 0\"\r\n    >\r\n        <span> No data found </span>\r\n    </li>\r\n</ng-template>\r\n","import { NgClass, NgIf } from \"@angular/common\";\r\nimport {\r\n    ChangeDetectionStrategy,\r\n    Component,\r\n    EventEmitter,\r\n    forwardRef,\r\n    Input,\r\n    OnChanges,\r\n    Output,\r\n    SimpleChanges,\r\n} from \"@angular/core\";\r\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\n\r\n@Component({\r\n    selector: \"anna-design-toggle\",\r\n    templateUrl: \"./toggle.component.html\",\r\n    styleUrls: [\"./toggle.component.scss\"],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    imports: [NgClass, FormsModule, NgIf],\r\n    providers: [\r\n        {\r\n            provide: NG_VALUE_ACCESSOR,\r\n            useExisting: forwardRef(() => ToggleComponent),\r\n            multi: true,\r\n        },\r\n    ],\r\n})\r\nexport class ToggleComponent implements OnChanges, ControlValueAccessor {\r\n    @Input() isToggled: boolean;\r\n    @Input() isDisabled: boolean;\r\n    @Input() position: string;\r\n    config: { isToggleOn: boolean; isToggleDisabled: boolean; togglePlacement: string };\r\n\r\n    // eslint-disable-next-line @angular-eslint/no-output-native\r\n    @Output() toggle = new EventEmitter();\r\n\r\n    private onChange = (_: any) => {};\r\n    private onTouched = () => {};\r\n\r\n    private defaultValues = {\r\n        isToggleOn: true,\r\n        isToggleDisabled: false,\r\n        togglePlacement: \"left\",\r\n    };\r\n\r\n    constructor() {\r\n        let userConfig = {};\r\n        if (typeof this.isToggled !== \"undefined\") {\r\n            userConfig = {\r\n                isToggleOn: this.isToggled,\r\n                isToggleDisabled: this.isDisabled,\r\n                togglePlacement: this.position,\r\n            };\r\n        }\r\n        this.config = { ...this.defaultValues, ...userConfig };\r\n    }\r\n\r\n    writeValue(value: boolean): void {\r\n        this.config.isToggleOn = value;\r\n    }\r\n\r\n    registerOnChange(fn: any): void {\r\n        this.onChange = fn;\r\n    }\r\n\r\n    registerOnTouched(fn: any): void {\r\n        this.onTouched = fn;\r\n    }\r\n\r\n    setDisabledState?(isDisabled: boolean): void {\r\n        this.config.isToggleDisabled = isDisabled;\r\n    }\r\n\r\n    ngOnChanges(changes: SimpleChanges): void {\r\n        if (typeof this.isToggled !== \"undefined\" && this.config) {\r\n            this.config.isToggleOn = this.isToggled;\r\n        }\r\n\r\n        if (this.config && changes.position?.currentValue) {\r\n            this.config.togglePlacement = changes.position.currentValue;\r\n        }\r\n\r\n        if (this.config && changes.isDisabled?.currentValue !== undefined) {\r\n            this.config.isToggleDisabled = changes.isDisabled.currentValue;\r\n        }\r\n    }\r\n\r\n    toggled(event: any) {\r\n        event.stopPropagation();\r\n        // this.config.isToggleOn = !this.config.isToggleOn;\r\n        this.onChange(this.config.isToggleOn);\r\n        this.onTouched();\r\n        this.toggle.emit(this.config.isToggleOn);\r\n    }\r\n}\r\n","<label\r\n    class=\"switchBtn\"\r\n    [ngClass]=\"{ 'pull-left': config.togglePlacement === 'left', 'pull-right': config.togglePlacement === 'right' }\"\r\n>\r\n    <input\r\n        type=\"checkbox\"\r\n        [(ngModel)]=\"config.isToggleOn\"\r\n        [disabled]=\"config.isToggleDisabled\"\r\n        (change)=\"toggled($event)\"\r\n    />\r\n    <div\r\n        class=\"slide round\"\r\n        [ngClass]=\"{ 'disable-toggle': config.isToggleDisabled }\"\r\n    >\r\n        <span\r\n            id=\"yes\"\r\n            *ngIf=\"config.isToggleOn\"\r\n            >Yes</span\r\n        >\r\n        <span\r\n            id=\"no\"\r\n            *ngIf=\"!config.isToggleOn\"\r\n            >No</span\r\n        >\r\n    </div>\r\n</label>\r\n","import { NgIf } from \"@angular/common\";\r\nimport {\r\n    ChangeDetectionStrategy,\r\n    Component,\r\n    EventEmitter,\r\n    Input,\r\n    OnChanges,\r\n    OnInit,\r\n    Output,\r\n    SimpleChanges,\r\n} from \"@angular/core\";\r\nimport { AnnaGlobalConfigService, ICustomSingleSelect } from \"@annalib/anna-core\";\r\nimport { NgbTooltip } from \"@ng-bootstrap/ng-bootstrap\";\r\n\r\nimport { IdTextForSingleSelect } from \"../single-select/models/single-select.model\";\r\nimport { SingleSelectComponent } from \"../single-select/single-select.component\";\r\nimport { ToggleComponent } from \"../toggle/toggle.component\";\r\nimport { NormalizedData } from \"./models/demo-normalization.model\";\r\n\r\n@Component({\r\n    selector: \"anna-design-demo-normalization\",\r\n    templateUrl: \"./demo-normalization.component.html\",\r\n    styleUrls: [\"./demo-normalization.component.scss\"],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    imports: [NgbTooltip, ToggleComponent, NgIf, SingleSelectComponent]\r\n})\r\nexport class DemoNormalizationComponent implements OnInit, OnChanges {\r\n    @Input() normalizationTooltipClass: string = \"toggle-tooltip\";\r\n    @Input({ required: true }) dropdownData: IdTextForSingleSelect[];\r\n    @Input({ required: true }) selectedFilters: any;\r\n    @Input() isDisabled: boolean = false;\r\n\r\n    @Output() normalizationChange = new EventEmitter();\r\n\r\n    isNormalized: boolean;\r\n    normalizationMessage: string =\r\n        // eslint-disable-next-line max-len\r\n        \"Demo Normalization is a technique used to transform the Ratings, Impressions, CPP and CPM values of booked demos into a common ‘Normalized Demo’.\";\r\n    singleSelectConfig: ICustomSingleSelect;\r\n    selectedItem: IdTextForSingleSelect;\r\n    defaultDemo: string = \"A25-54\";\r\n\r\n    constructor(private annaGlobalConfig: AnnaGlobalConfigService) {}\r\n\r\n    ngOnChanges(changes: SimpleChanges): void {\r\n        if (changes.selectedFilters?.currentValue) {\r\n            this.setDropdownAndToggleValue(changes.selectedFilters.currentValue);\r\n        }\r\n    }\r\n\r\n    setDropdownAndToggleValue(appliedFilters: NormalizedData) {\r\n        this.isNormalized = appliedFilters.toggle;\r\n        if (appliedFilters.demoId) {\r\n            this.selectedItem = this.dropdownData?.filter((item) => item.id === appliedFilters.demoId)[0];\r\n        }\r\n    }\r\n\r\n    ngOnInit(): void {\r\n        this.singleSelectConfig = { ...this.annaGlobalConfig.defaultSingleSelectConfig };\r\n    }\r\n\r\n    toggleNormalizedData(toggle: boolean) {\r\n        this.isNormalized = toggle;\r\n        if (this.isNormalized) {\r\n            this.setDefaultDropdownValue();\r\n        }\r\n        const dataToEmit = this.createEmitData();\r\n        this.normalizationChange.emit(dataToEmit);\r\n    }\r\n\r\n    onNormalizationDropdownChange(val: IdTextForSingleSelect) {\r\n        this.selectedItem = val;\r\n        const dataToEmit = this.createEmitData();\r\n        this.normalizationChange.emit(dataToEmit);\r\n    }\r\n\r\n    setDefaultDropdownValue() {\r\n        this.selectedItem =\r\n            this.dropdownData.filter((item) => item.text === this.defaultDemo).length > 0\r\n                ? this.dropdownData.filter((item) => item.text === this.defaultDemo)[0]\r\n                : this.dropdownData[0];\r\n    }\r\n\r\n    createEmitData() {\r\n        const demoId = this.isNormalized ? this.selectedItem?.id : null;\r\n\r\n        return {\r\n            toggle: this.isNormalized,\r\n            demoId,\r\n        };\r\n    }\r\n}\r\n","<div class=\"toggle\">\r\n    <label\r\n        >Demo Normalization\r\n        <i\r\n            class=\"mi mdi-info-outline\"\r\n            [ngbTooltip]=\"normalizationTooltip\"\r\n            placement=\"bottom bottom-right\"\r\n            container=\"body\"\r\n            [tooltipClass]=\"normalizationTooltipClass\"\r\n            #t=\"ngbTooltip\"\r\n        ></i>\r\n    </label>\r\n    <anna-design-toggle\r\n        [isDisabled]=\"isDisabled\"\r\n        [position]=\"'none'\"\r\n        [isToggled]=\"isNormalized\"\r\n        (toggle)=\"toggleNormalizedData($event)\"\r\n    >\r\n    </anna-design-toggle>\r\n</div>\r\n<div\r\n    *ngIf=\"isNormalized\"\r\n    class=\"demo-dropdown\"\r\n>\r\n    <p class=\"label\">Demo</p>\r\n    <anna-design-single-select\r\n        [disabled]=\"isDisabled\"\r\n        [config]=\"singleSelectConfig\"\r\n        [items]=\"dropdownData\"\r\n        [selectedItem]=\"selectedItem\"\r\n        (valueChanged)=\"onNormalizationDropdownChange($event)\"\r\n    >\r\n    </anna-design-single-select>\r\n</div>\r\n\r\n<ng-template #normalizationTooltip>\r\n    <p\r\n        class=\"toggle-info\"\r\n        [innerHTML]=\"normalizationMessage\"\r\n    ></p>\r\n</ng-template>\r\n","import { Injectable } from \"@angular/core\";\r\n// eslint-disable-next-line import/no-extraneous-dependencies\r\nimport { Params } from \"@angular/router\";\r\n// eslint-disable-next-line import/no-extraneous-dependencies\r\nimport { Subject, Subscription } from \"rxjs\";\r\n\r\n@Injectable({\r\n    providedIn: \"root\",\r\n})\r\nexport class EquivalisationOfDataService {\r\n    isNoDataToDisplaySubject$ = new Subject<boolean>();\r\n    noDataToDisplaySubscription: Subscription;\r\n\r\n    persistingFilterEquivalisedData: boolean = null;\r\n    parentEquivalisedData: boolean = null;\r\n\r\n    publishIsNoDataStatusData(isNoData: boolean) {\r\n        return this.isNoDataToDisplaySubject$.next(isNoData);\r\n    }\r\n\r\n    getEquivalisedData(params: Params, defaultValue: boolean): boolean {\r\n        if (params.equivalisedData) {\r\n            return JSON.parse(params.equivalisedData);\r\n        } else if (params.parentEquivalisedData) {\r\n            return JSON.parse(params.parentEquivalisedData);\r\n        }\r\n        return defaultValue;\r\n    }\r\n}\r\n","import { NgClass, NgIf } from \"@angular/common\";\r\nimport {\r\n    ChangeDetectionStrategy,\r\n    ChangeDetectorRef,\r\n    Component,\r\n    EventEmitter,\r\n    Input,\r\n    OnChanges,\r\n    OnDestroy,\r\n    OnInit,\r\n    Output,\r\n    SimpleChanges,\r\n} from \"@angular/core\";\r\n// eslint-disable-next-line import/no-extraneous-dependencies\r\nimport { ActivatedRoute, Router } from \"@angular/router\";\r\nimport { NgbTooltip } from \"@ng-bootstrap/ng-bootstrap\";\r\n\r\nimport { ToggleComponent } from \"../toggle/toggle.component\";\r\nimport { EquivalisationOfDataService } from \"./service/equivalisation-of-data.service\";\r\n\r\n@Component({\r\n    selector: \"anna-design-equivalisation-of-data-toggle-btn\",\r\n    templateUrl: \"./equivalisation-of-data-toggle-btn.component.html\",\r\n    styleUrls: [\"./equivalisation-of-data-toggle-btn.component.scss\"],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    imports: [NgClass, NgIf, NgbTooltip, ToggleComponent]\r\n})\r\nexport class EquivalisationOfDataToggleBtnComponent implements OnInit, OnChanges, OnDestroy {\r\n    @Input() toShow: boolean = true;\r\n    @Input() considerParentEquivalizedData: boolean = false;\r\n    @Input() defaultEquivalisedValue: boolean = false;\r\n    @Input() equivalisationTooltipClass: string = \"equivalization-tooltip\";\r\n    @Input() equivalisationMessage?: string =\r\n        // eslint-disable-next-line max-len\r\n        '<ul class=\"equivalization-message-list\"><li>Equivalization refers to a process that occurs when data is aggregated for units of different length. Units where the lengths are not 30 seconds have their 30-second Impressions / GRPs / CPP / CPM weighted up or down in proportion to their length.</li></br><li><strong>Please note that the spots count for Paid Programs, Non-spots TV and Non-spots Digital are not equivalized.</strong></li></br><li>Each Paid Program is treated as a single unit.</li>';\r\n    @Input() isNewCustomEquivalisationMessage?: boolean = true;\r\n    @Input() isDisabled: boolean = false;\r\n    @Input() isParentOrderContainer: boolean = false; // will be true for only parent order container\r\n    @Input() isEquivalisedData: boolean;\r\n    @Input() updateQueryParamOnApplyBtn: boolean = false;\r\n\r\n    @Output() toggleChanged = new EventEmitter();\r\n\r\n    // persistingFilterEquivalisedData: boolean;\r\n    // parentEquivalisedData: boolean;\r\n\r\n    constructor(\r\n        private router: Router,\r\n        private currentRoute: ActivatedRoute,\r\n        private equivalisationOfDataService: EquivalisationOfDataService,\r\n        private cdr: ChangeDetectorRef,\r\n    ) {\r\n        this.apiWithNoDataToDisplaySubscription();\r\n    }\r\n\r\n    ngOnInit() {\r\n        if (this.isParentOrderContainer) {\r\n            this.isDisabled = false;\r\n        } else {\r\n            this.isDisabled = this.updateQueryParamOnApplyBtn ? this.isDisabled : true;\r\n        }\r\n    }\r\n\r\n    ngOnChanges(changes: SimpleChanges) {\r\n        if (changes.toShow && changes.toShow.currentValue) {\r\n            if (!this.updateQueryParamOnApplyBtn) {\r\n                if (!this.isParentOrderContainer) {\r\n                    this.isDisabled = true;\r\n                }\r\n                this.subscriptionToRouteParam();\r\n            }\r\n        }\r\n    }\r\n\r\n    subscriptionToRouteParam() {\r\n        this.currentRoute.queryParams.subscribe((params) => {\r\n            this.equivalisationOfDataService.persistingFilterEquivalisedData = params.equivalisedData\r\n                ? JSON.parse(params.equivalisedData)\r\n                : null;\r\n            this.equivalisationOfDataService.parentEquivalisedData = params.parentEquivalisedData\r\n                ? JSON.parse(params.parentEquivalisedData)\r\n                : null;\r\n            this.setEquivalisedData();\r\n            this.cdr.markForCheck();\r\n        });\r\n    }\r\n\r\n    setEquivalisedData() {\r\n        if (this.equivalisationOfDataService.persistingFilterEquivalisedData != null) {\r\n            this.setNewEquivalisedValue(this.equivalisationOfDataService.persistingFilterEquivalisedData);\r\n        } else if (\r\n            this.considerParentEquivalizedData &&\r\n            this.equivalisationOfDataService.parentEquivalisedData != null\r\n        ) {\r\n            this.setNewEquivalisedValue(this.equivalisationOfDataService.parentEquivalisedData);\r\n        } else {\r\n            this.setNewEquivalisedValue(this.defaultEquivalisedValue);\r\n        }\r\n    }\r\n\r\n    setNewEquivalisedValue(newEquivalisedData: boolean) {\r\n        if (this.isEquivalisedData !== newEquivalisedData) {\r\n            this.isEquivalisedData = newEquivalisedData;\r\n            // this.equivalisationOfDataService.publishEquivalisedData(newEquivalisedData);\r\n        }\r\n    }\r\n\r\n    toggleEquivalisedData(toggleValue: boolean) {\r\n        this.setNewEquivalisedValue(toggleValue);\r\n        if (!this.updateQueryParamOnApplyBtn) {\r\n            this.isDisabled = true;\r\n            this.updateNavigationHistory();\r\n        } else {\r\n            this.toggleChanged.emit(toggleValue);\r\n        }\r\n    }\r\n\r\n    apiWithNoDataToDisplaySubscription() {\r\n        this.equivalisationOfDataService.noDataToDisplaySubscription =\r\n            this.equivalisationOfDataService.isNoDataToDisplaySubject$.subscribe((isNoData: boolean) => {\r\n                this.isDisabled = isNoData;\r\n                this.cdr.markForCheck();\r\n            });\r\n    }\r\n\r\n    updateNavigationHistory() {\r\n        const queryParams = this.prepareQueryParamOnFilterApplication();\r\n        this.router.navigate([], {\r\n            relativeTo: this.currentRoute,\r\n            queryParams,\r\n            queryParamsHandling: \"merge\",\r\n        });\r\n    }\r\n\r\n    prepareQueryParamOnFilterApplication() {\r\n        const query = {\r\n            equivalisedData: this.isEquivalisedData,\r\n        };\r\n        return query;\r\n    }\r\n\r\n    ngOnDestroy() {\r\n        this.equivalisationOfDataService.noDataToDisplaySubscription.unsubscribe();\r\n    }\r\n}\r\n","<div\r\n    class=\"toggle\"\r\n    [ngClass]=\"{ 'reduced-font-toggle': updateQueryParamOnApplyBtn }\"\r\n>\r\n    <ng-container *ngIf=\"toShow\">\r\n        <label\r\n            >Show equivalized data\r\n            <i\r\n                class=\"mi mdi-info-outline\"\r\n                [ngbTooltip]=\"equivalizationTooltip\"\r\n                container=\"body\"\r\n                [tooltipClass]=\"equivalisationTooltipClass\"\r\n                #t=\"ngbTooltip\"\r\n            ></i>\r\n        </label>\r\n        <anna-design-toggle\r\n            [isDisabled]=\"isDisabled\"\r\n            [position]=\"'none'\"\r\n            [isToggled]=\"isEquivalisedData\"\r\n            (toggle)=\"toggleEquivalisedData($event)\"\r\n        ></anna-design-toggle>\r\n    </ng-container>\r\n</div>\r\n\r\n<ng-template #equivalizationTooltip>\r\n    <p\r\n        class=\"equivalization-info\"\r\n        [innerHTML]=\"equivalisationMessage\"\r\n    ></p>\r\n</ng-template>\r\n","export class DashboardFilterModalConstants {\r\n    static readonly DefaultDemo = \"A18+\";\r\n    static readonly Quarter = \"Quarter\";\r\n    static readonly Month = \"Month\";\r\n    static readonly Week = \"Week\";\r\n    static readonly CustomRange = \"Custom Range\";\r\n    static readonly Broadcast = \"broadcast\";\r\n    static readonly Fiscal = \"fiscal\";\r\n}\r\n","export class OrderContainerFilterModal {\r\n    static readonly PerformancePeriodModalTitle = \"Edit Period\";\r\n    static readonly PerformancePeriodModalMessage =\r\n        \"Select period for which you want to view the audience performance for.\";\r\n    static readonly SpotDetailsPeriodModalTitle = \"Edit Period\";\r\n    static readonly SpotDetailsPeriodModalMessage = \"Select period for which you want to view the spot details for.\";\r\n    static readonly Quarter = \"Quarter\";\r\n    static readonly Month = \"Month\";\r\n    static readonly CustomRange = \"Custom Range\";\r\n    static readonly Week = \"Week\";\r\n    static readonly Broadcast = \"broadcast\";\r\n    static readonly Fiscal = \"fiscal\";\r\n\r\n    static readonly InFlightAndUpcoming = \"In-flight & Upcoming\";\r\n    static readonly Completed = \"Completed\";\r\n    static readonly Blank = \"Blank\";\r\n    static readonly RATING = \"RATING\";\r\n    static readonly IMPRESSIONS = \"IMPRESSIONS\";\r\n    static readonly All = \"All\";\r\n}\r\n","// Angular import statements\r\nimport { Injectable } from \"@angular/core\";\r\n// Annnalib import statements\r\nimport { AnnaPersistingFilterService } from \"@annalib/anna-core\";\r\nimport dayjs from \"dayjs\";\r\nimport isSameOrAfter from \"dayjs/plugin/isSameOrAfter\";\r\nimport isSameOrBefore from \"dayjs/plugin/isSameOrBefore\";\r\n// eslint-disable-next-line import/no-extraneous-dependencies\r\nimport { BehaviorSubject, Subscription } from \"rxjs\";\r\n\r\nimport { DashboardFilterModalConstants } from \"../../dashboard-filter-modal/models/dashboard-filter-modal.model\";\r\nimport { OrderContainerFilterModal } from \"../constants/order-container-filter-modal.constant\";\r\n// User defined import statements\r\nimport {\r\n    CalendarQuarterYear,\r\n    ICalendarTypeResponse,\r\n    IQuarter,\r\n    PeriodSelectionPopUp,\r\n    QuarterFilterSubjectResponseType,\r\n} from \"../models/order-container-filter-modal.model\";\r\n\r\n@Injectable({\r\n    providedIn: \"root\",\r\n})\r\nexport class CalendarQuarterYearFilterService {\r\n    quarterFilterAPICompletedSubject$ = new BehaviorSubject<QuarterFilterSubjectResponseType>({\r\n        filterData: null,\r\n        selectedFilter: null,\r\n    });\r\n\r\n    quarterFilterSubscription: Subscription;\r\n    quarterFilterForOrderPerformance: PeriodSelectionPopUp = null;\r\n    quarterFilterForSpotDetails: PeriodSelectionPopUp = null;\r\n    quarterFilterForHistory: PeriodSelectionPopUp = null;\r\n    quarterFilterForDashboard: PeriodSelectionPopUp = null;\r\n    quarterFilterForRevision: PeriodSelectionPopUp = null;\r\n    quarterFilterForLineDetails: PeriodSelectionPopUp = null;\r\n    quarterFilterForOffers: PeriodSelectionPopUp = null;\r\n\r\n    // Let's keep any extra variable to be shared in service file, not as @output for calendar quarter component.\r\n    currentYear: number;\r\n    currentQuarter: IQuarter;\r\n    parentQuarterFilter: CalendarQuarterYear;\r\n    selectedStationId: number;\r\n    onDropdownChanged: boolean = false;\r\n    yearQuarterData: ICalendarTypeResponse;\r\n\r\n    publishQuarterFilterData(value: QuarterFilterSubjectResponseType) {\r\n        return this.quarterFilterAPICompletedSubject$.next(value);\r\n    }\r\n\r\n    getQuarterFilterData(): QuarterFilterSubjectResponseType {\r\n        return this.quarterFilterAPICompletedSubject$.value;\r\n    }\r\n\r\n    setSelectedPeriodData(params: any) {\r\n        if (params.quarterFilter && this.persistingFilterService.getActualQueryParams(params.quarterFilter)) {\r\n            return JSON.parse(this.persistingFilterService.getActualQueryParams(params.quarterFilter));\r\n        } else if (\r\n            params.parentQuarterFilter &&\r\n            this.persistingFilterService.getActualQueryParams(params.parentQuarterFilter)\r\n        ) {\r\n            return JSON.parse(this.persistingFilterService.getActualQueryParams(params.parentQuarterFilter));\r\n        }\r\n        return null;\r\n    }\r\n\r\n    getAllMonths() {\r\n        return [\r\n            { id: \"01\", text: \"January\" },\r\n            { id: \"02\", text: \"February\" },\r\n            { id: \"03\", text: \"March\" },\r\n            { id: \"04\", text: \"April\" },\r\n            { id: \"05\", text: \"May\" },\r\n            { id: \"06\", text: \"June\" },\r\n            { id: \"07\", text: \"July\" },\r\n            { id: \"08\", text: \"August\" },\r\n            { id: \"09\", text: \"September\" },\r\n            { id: \"10\", text: \"October\" },\r\n            { id: \"11\", text: \"November\" },\r\n            { id: \"12\", text: \"December\" },\r\n        ];\r\n    }\r\n    isFlightPeriodWithinSelectedDates(\r\n        flightStart: string,\r\n        flightEnd: string,\r\n        selectedStart: string,\r\n        selectedEnd: string,\r\n    ): boolean {\r\n        const flightStartDate = dayjs(flightStart);\r\n        const flightEndDate = dayjs(flightEnd);\r\n        const selectedStartDate = dayjs(selectedStart);\r\n        const selectedEndDate = dayjs(selectedEnd);\r\n\r\n        return flightStartDate.isSameOrAfter(selectedStartDate) && flightEndDate.isSameOrBefore(selectedEndDate);\r\n    }\r\n\r\n    getSelectedPeriodIfFlightPeriodWithinQuarter(\r\n        selectedPeriodData: { startDate: string; endDate: string },\r\n        primaryOrderData: any,\r\n    ): PeriodSelectionPopUp {\r\n        if (\r\n            selectedPeriodData &&\r\n            primaryOrderData &&\r\n            this.isFlightPeriodWithinSelectedDates(\r\n                primaryOrderData.campaignStartDate,\r\n                primaryOrderData.campaignEndDate,\r\n                selectedPeriodData?.startDate,\r\n                selectedPeriodData?.endDate,\r\n            )\r\n        ) {\r\n            const selectedPeriod = {\r\n                isEntireFlightPeriod: true,\r\n                startDate: primaryOrderData.campaignStartDate,\r\n                endDate: primaryOrderData.campaignEndDate,\r\n                calendarType: DashboardFilterModalConstants.Broadcast as \"broadcast\",\r\n                month: \"\",\r\n                year: \"\",\r\n                periodMode: \"\",\r\n                quarter: \"\",\r\n            };\r\n            return selectedPeriod;\r\n        }\r\n        return null;\r\n    }\r\n    constructor(private persistingFilterService: AnnaPersistingFilterService) {\r\n        dayjs.extend(isSameOrAfter);\r\n        dayjs.extend(isSameOrBefore);\r\n    }\r\n\r\n    getSelectedPeriodText(periodData: PeriodSelectionPopUp) {\r\n        if(!periodData) return \"-\";\r\n        \r\n        let selectedPeriodText = \"-\";\r\n\r\n        const selectedStartDate = periodData.startDate;\r\n        const selectedEndDate = periodData.endDate;\r\n\r\n        switch (periodData.periodMode) {\r\n            case OrderContainerFilterModal.Quarter:\r\n                selectedPeriodText = `${periodData.year  } ${  periodData.quarter}`;\r\n                break;\r\n            case OrderContainerFilterModal.Month:\r\n                selectedPeriodText = `${periodData.month} ${periodData.year}`;\r\n                break;\r\n            default:\r\n                selectedPeriodText = `${selectedStartDate} - ${selectedEndDate}`;\r\n                break;\r\n        }\r\n\r\n        return selectedPeriodText;\r\n    }\r\n}\r\n","import { NgClass, NgFor, NgIf } from \"@angular/common\";\r\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from \"@angular/core\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { IRadioButtonComponentConfig } from \"@annalib/anna-core\";\r\nimport { NgbTooltip } from \"@ng-bootstrap/ng-bootstrap\";\r\n\r\n@Component({\r\n    selector: \"anna-design-radio-buttons\",\r\n    templateUrl: \"./radio-buttons.component.html\",\r\n    styleUrls: [\"./radio-buttons.component.scss\"],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    imports: [NgIf, FormsModule, NgFor, NgClass, NgbTooltip],\r\n    standalone: true,\r\n})\r\nexport class RadioButtonsComponent {\r\n    @Input({ required: true }) config: IRadioButtonComponentConfig;\r\n    @Input() disabled: boolean;\r\n    @Input({ required: true }) selectedValue: any;\r\n    @Input() horizontalAlignment: boolean = true;\r\n    @Output() selectionChanged: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n    radioButtonSelected(selectedValue: any) {\r\n        this.selectedValue = selectedValue;\r\n        this.selectionChanged.emit(this.selectedValue);\r\n    }\r\n}\r\n","<p *ngIf=\"config.heading\">{{ config.heading }}</p>\r\n<div\r\n    class=\"radio-group\"\r\n    [ngClass]=\"{ 'd-flex': horizontalAlignment }\"\r\n>\r\n    <ng-container *ngFor=\"let radioButton of config.radioButtons; let i = index\">\r\n        <div\r\n            class=\"radio-container\"\r\n            [class]=\"radioButton?.class\"\r\n            (click)=\"!disabled && !radioButton.isDisabled && radioButtonSelected(radioButton.value)\"\r\n        >\r\n            <span\r\n                class=\"mdi radio-button-icon\"\r\n                [ngClass]=\"{\r\n                    'mdi-radiobox-marked': selectedValue === radioButton.value,\r\n                    'mdi-radiobox-blank': selectedValue !== radioButton.value\r\n                }\"\r\n                [class.disabled]=\"disabled || radioButton.isDisabled\"\r\n            ></span>\r\n\r\n            <label\r\n                class=\"radio-label\"\r\n                [class.disabled]=\"disabled || radioButton.isDisabled\"\r\n            >\r\n                {{ radioButton.label }}\r\n            </label>\r\n\r\n            <div class=\"info-icon\">\r\n                <i\r\n                    class=\"mi mdi-info-outline\"\r\n                    *ngIf=\"radioButton.tooltip\"\r\n                    [ngbTooltip]=\"radioButton.tooltip\"\r\n                ></i>\r\n            </div>\r\n\r\n            <br *ngIf=\"!horizontalAlignment\" />\r\n        </div>\r\n    </ng-container>\r\n</div>\r\n","import { Injectable } from \"@angular/core\";\r\nimport { AnnaDateTimeFormatService } from \"@annalib/anna-core\";\r\nimport { NgbDate } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport dayjs from \"dayjs\";\r\nimport timezone from \"dayjs/plugin/timezone\";\r\nimport utc from \"dayjs/plugin/utc\";\r\n\r\n@Injectable({\r\n    providedIn: \"root\",\r\n})\r\nexport class WeekCalendarService {\r\n    fmt: string = \"MM/DD/YYYY\";\r\n\r\n    constructor(private annaDateTimeFormatService: AnnaDateTimeFormatService) {\r\n        dayjs.extend(timezone);\r\n        dayjs.extend(utc);\r\n    }\r\n\r\n    setCurrentDate(currentTimezone: string): { today: NgbDate; fromDate: NgbDate } {\r\n        let backDatedPeriod = JSON.parse(localStorage.getItem(\"userProfileData\")).lockingPeriodDays;\r\n        backDatedPeriod = backDatedPeriod || 0;\r\n\r\n        const date = this.annaDateTimeFormatService.convertToNgbDate(\r\n            this.getCurrentDateBasedOnTimezone(currentTimezone, backDatedPeriod),\r\n            \"MM/DD/YYYY\",\r\n        );\r\n\r\n        return { today: NgbDate.from(date), fromDate: NgbDate.from(date) };\r\n    }\r\n\r\n    getCurrentDateBasedOnTimezone(currentTimezone: string, daysToBackdate: number) {\r\n        if (timezone && currentTimezone !== \"\") {\r\n            return dayjs().tz(currentTimezone).add(daysToBackdate, \"d\");\r\n        }\r\n        return dayjs().add(daysToBackdate);\r\n    }\r\n\r\n    setBroadcastWeek(systemDate: any) {\r\n        const selectedWeek = this.getBroadcastWeek(systemDate.format(\"MM/DD/YYYY\"));\r\n        const selectedWeeks = [];\r\n        selectedWeeks.push({\r\n            startDate: selectedWeek.start.format(\"YYYY-MM-DD\"),\r\n            endDate: selectedWeek.end.format(\"YYYY-MM-DD\"),\r\n        });\r\n\r\n        return selectedWeeks;\r\n    }\r\n\r\n    getBroadcastWeek(startDate: any) {\r\n        const dayjsDate = dayjs(startDate, this.fmt);\r\n        const date = dayjsDate.clone();\r\n\r\n        // Find the closest Monday <= the date\r\n        const start = dayjs(date).subtract((date.day() + 6) % 7, \"day\");\r\n\r\n        // Find the closest Sunday >= the date\r\n        const end = dayjs(date).add((7 - date.day()) % 7, \"day\");\r\n\r\n        return { start, end };\r\n    }\r\n}\r\n","import { DatePipe, NgClass, NgIf } from \"@angular/common\";\r\nimport {\r\n    AfterViewInit,\r\n    ChangeDetectionStrategy,\r\n    Component,\r\n    EventEmitter,\r\n    HostListener,\r\n    Input,\r\n    OnChanges,\r\n    OnInit,\r\n    Output,\r\n    SimpleChanges,\r\n    ViewChild,\r\n} from \"@angular/core\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { AnnaDateTimeFormatService, AnnaGlobalConfigService, IWeekCalendar, WeekObject } from \"@annalib/anna-core\";\r\nimport { NgbCalendar, NgbDate, NgbDatepicker, NgbDateStruct, NgbInputDatepicker } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport dayjs from \"dayjs\";\r\nimport isBetween from \"dayjs/plugin/isBetween\";\r\nimport quarterOfYear from \"dayjs/plugin/quarterOfYear\";\r\nimport timezone from \"dayjs/plugin/timezone\";\r\nimport utc from \"dayjs/plugin/utc\";\r\nimport { cloneDeep } from \"lodash-es\";\r\n\r\nimport { WeekCalendarService } from \"./services/week-calendar.service\";\r\n\r\n@Component({\r\n    selector: \"anna-design-week-calendar\",\r\n    templateUrl: \"./week-calendar.component.html\",\r\n    styleUrls: [\"./week-calendar.component.scss\"],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    imports: [NgIf, FormsModule, NgbInputDatepicker, NgClass, NgbDatepicker],\r\n})\r\nexport class WeekCalendarComponent implements OnInit, OnChanges, AfterViewInit {\r\n    fromDate: NgbDate;\r\n    hoveredDate: NgbDate | null = null;\r\n    model: NgbDateStruct;\r\n    toDate: NgbDate | null = null;\r\n    today: NgbDate;\r\n    weekNumbers: string[] = [];\r\n    pipe: DatePipe;\r\n    dateToDisplay: string = \"\";\r\n    weekObjects: WeekObject[];\r\n    multiSelectDropdownOpen: boolean = false;\r\n    datepicker: NgbInputDatepicker;\r\n    private formatter: any;\r\n    public formattedStartDate: string;\r\n    public formattedEndDate: string;\r\n    private calendarMap = new Map();\r\n    private flag1: boolean;\r\n    private flag2: boolean;\r\n    nextWeekNavigationDisabled: boolean;\r\n    previousWeekNavigationDisabled: boolean;\r\n    @Input() selectedFromDate: NgbDateStruct;\r\n    @Input() selectedEndDate: NgbDateStruct;\r\n    @Input() disabledDates: NgbDate[] = [];\r\n    @Input() maxDate: NgbDate;\r\n    @Input() minDate: NgbDate;\r\n    @Input() timezone: any;\r\n    @Input() selectWeekForDate: NgbDate;\r\n    @Input() config: IWeekCalendar;\r\n    @Input() noOfMonthsQuarterYearToEnableInPast: number = 2;\r\n    @Input() noOfMonthsQuarterYearToEnableInFuture: number = 1;\r\n    @Input() unitToEnableForMinDate: dayjs.QUnitType = \"years\";\r\n    @Input() unitToEnableForMaxDate: dayjs.QUnitType = \"years\";\r\n    @Input() disableWeekDropdown: boolean = false;\r\n    @Input() autoSelectDays: number = null;\r\n\r\n    @Input() weekCalendarPosition: string = null;\r\n\r\n    disabledFunc: any;\r\n    state: any;\r\n\r\n    currentSelectedStartDate: NgbDateStruct;\r\n    currentSelectedEndDate: NgbDateStruct;\r\n\r\n    // dateToStartWith = {\"year\": 2024, \"month\": 4};\r\n\r\n    // Setting the default values;\r\n    private defaultValues: IWeekCalendar;\r\n\r\n    @Output() applyWeekCalendarChanges = new EventEmitter();\r\n    @Output() calendarToggled = new EventEmitter();\r\n\r\n    @ViewChild(\"datepicker\") inputDatepicker: NgbInputDatepicker;\r\n\r\n    // weekCalendarPosition: string = \"bottom-left\";\r\n\r\n    defaultDateFormat: string = \"MM/DD/YYYY\";\r\n\r\n    disableApplyButton: boolean = true;\r\n\r\n    ngOnChanges(changes: SimpleChanges): void {\r\n        // if some values are not sent, setting the default values\r\n        this.defaultValues = this.annaGlobalConfig.defaultWeekCalendarConfig;\r\n        this.config = { ...this.defaultValues, ...this.config };\r\n\r\n        if (this.config.selectCurrentWeek) {\r\n            this.initializeWeekData();\r\n            this.selectWeek(this.fromDate);\r\n            this.currentSelectedStartDate = cloneDeep(this.fromDate);\r\n            this.currentSelectedEndDate = cloneDeep(this.toDate);\r\n        }\r\n\r\n        this.formatter = this.formattedDates();\r\n\r\n        if (changes.timezone && changes.timezone.currentValue && this.isTimezoneChanged(changes.timezone)) {\r\n            this.initializeWeekData();\r\n            this.setCalendarMap();\r\n            this.selectWeek(this.fromDate);\r\n            this.currentSelectedStartDate = cloneDeep(this.fromDate);\r\n            this.currentSelectedEndDate = cloneDeep(this.toDate);\r\n        }\r\n\r\n        if (\r\n            changes.noOfMonthsQuarterYearToEnableInPast?.currentValue != null ||\r\n            (changes.noOfMonthsQuarterYearToEnableInFuture?.currentValue != null && this.fromDate && this.toDate)\r\n        ) {\r\n            this.enableDisablePreviosNextNavigationIcons(true);\r\n        }\r\n\r\n        if (this.selectedFromDate && this.selectedEndDate && this.config) {\r\n            this.fromDate = NgbDate.from(this.selectedFromDate);\r\n            this.toDate = NgbDate.from(this.selectedEndDate);\r\n\r\n            this.currentSelectedStartDate = cloneDeep(this.fromDate);\r\n            this.currentSelectedEndDate = cloneDeep(this.toDate);\r\n\r\n            // this.selectWeek(this.fromDate);\r\n            this.weekNumberGenerator();\r\n            this.displayToUI();\r\n            this.setCalendarMap();\r\n            this.enableDisableApplyButton();\r\n        }\r\n\r\n        if (this.disabledDates.length > 0) {\r\n            this.disabledFunc = (date: NgbDate, current: { month: number }) => this.checkIfDateIsDisabled(date);\r\n        }\r\n    }\r\n\r\n    constructor(\r\n        private calendar: NgbCalendar,\r\n        private annaGlobalConfig: AnnaGlobalConfigService,\r\n        private annaDateTimeFormatService: AnnaDateTimeFormatService,\r\n        private weekCalendarService: WeekCalendarService,\r\n    ) {\r\n        dayjs.extend(utc);\r\n        dayjs.extend(timezone);\r\n        dayjs.extend(quarterOfYear);\r\n        dayjs.extend(isBetween);\r\n    }\r\n\r\n    getWeekNumber(week: any, firstDayOfWeek: any) {\r\n        const weekStartDate = dayjs(convertNgbDateToMoment(week[0]), this.defaultDateFormat);\r\n        const weekYear = weekStartDate.year();\r\n        const yearStartDate = dayjs(`01/01/${weekYear}`, this.defaultDateFormat);\r\n        const weekDay = yearStartDate.day();\r\n\r\n        const noOfDays = weekStartDate.diff(yearStartDate, \"d\") + 1;\r\n        function convertNgbDateToMoment(ngbDate: any): string {\r\n            let converted = dayjs();\r\n            converted = converted.month(ngbDate.month - 1);\r\n            converted = converted.date(ngbDate.day);\r\n            converted = converted.year(ngbDate.year);\r\n            return converted.format(\"MM/DD/YYYY\");\r\n        }\r\n\r\n        function checkIfYearIsBroadcastLeapYear() {\r\n            const isLeapYear = (weekYear % 4 === 0 && weekYear % 100 !== 0) || weekYear % 400 === 0;\r\n            return (isLeapYear && (weekDay === 0 || weekDay === 6)) || (!isLeapYear && weekDay === 0);\r\n        }\r\n\r\n        const isLeapYear = checkIfYearIsBroadcastLeapYear();\r\n        const divider = isLeapYear ? 53 : 52;\r\n        const adder = isLeapYear ? 2 : 1;\r\n\r\n        const broadcastNumberOfDays = weekDay + noOfDays;\r\n        const broadcastWeekNumber =\r\n            broadcastNumberOfDays % 7 > 0 ? broadcastNumberOfDays / 7 + adder : broadcastNumberOfDays / 7;\r\n\r\n        if (Math.floor(broadcastWeekNumber % divider) === 0) {\r\n            return divider;\r\n        }\r\n        return Math.floor(broadcastWeekNumber % divider);\r\n    }\r\n\r\n    ngAfterViewInit(): void {\r\n        const calendarProto = Object.getPrototypeOf(this.calendar);\r\n        calendarProto.getWeekNumber = this.getWeekNumber;\r\n    }\r\n\r\n    ngOnInit(): void {\r\n        // this.selectWeek(this.fromDate);\r\n        this.setCalendarMap();\r\n        if (!this.weekCalendarPosition) {\r\n            this.weekCalendarPosition = window.innerWidth > 1400 ? \"bottom-left\" : \"bottom-right\";\r\n        }\r\n    }\r\n\r\n    @HostListener(\"window:resize\", [\"$event\"])\r\n    onResize(event: any) {\r\n        this.weekCalendarPosition = window.innerWidth > 1400 ? \"bottom-left\" : \"bottom-right\";\r\n    }\r\n\r\n    initializeWeekData() {\r\n        this.weekObjects = [];\r\n        let dates: { today: NgbDate; fromDate: NgbDate };\r\n        if (this.selectWeekForDate && !this.config.selectCurrentWeek) {\r\n            dates = { today: this.selectWeekForDate, fromDate: this.selectWeekForDate };\r\n        } else {\r\n            dates = this.weekCalendarService.setCurrentDate(this.timezone);\r\n        }\r\n        this.today = cloneDeep(dates.today);\r\n        this.fromDate = cloneDeep(dates.fromDate);\r\n\r\n        // Disable months before numberOfMonthsToEnable\r\n        this.disabledFunc = (date: NgbDateStruct) => {\r\n            const [previousWeekStartDate, futureWeekEndDate] = this.getPreviousAndNextWeekDate();\r\n\r\n            this.minDate = NgbDate.from(\r\n                this.annaDateTimeFormatService.convertToNgbDate(previousWeekStartDate, this.defaultDateFormat),\r\n            );\r\n            this.maxDate = NgbDate.from(\r\n                this.annaDateTimeFormatService.convertToNgbDate(futureWeekEndDate, this.defaultDateFormat),\r\n            );\r\n\r\n            const calendarDate = this.annaDateTimeFormatService.convertNgbDateToMoment(date);\r\n\r\n            const isCalendarDateBetweenStartDateAndEndDate = dayjs(calendarDate, this.defaultDateFormat).isBetween(\r\n                previousWeekStartDate,\r\n                futureWeekEndDate,\r\n            );\r\n            const isCalendarDateSameAsStartDate = dayjs(calendarDate, this.defaultDateFormat).isSame(\r\n                previousWeekStartDate,\r\n            );\r\n            const isCalendarDateSameAsEndDate = dayjs(calendarDate, this.defaultDateFormat).isSame(futureWeekEndDate);\r\n\r\n            return !(\r\n                isCalendarDateBetweenStartDateAndEndDate ||\r\n                isCalendarDateSameAsEndDate ||\r\n                isCalendarDateSameAsStartDate\r\n            );\r\n        };\r\n\r\n        this.formatter = this.formattedDates();\r\n        this.flag1 = false;\r\n        this.flag2 = false;\r\n    }\r\n\r\n    selectWeek(date: NgbDate): void {\r\n        const dateObject = new Date(date.year, date.month - 1, date.day);\r\n        let constructDate = this.buildDate(dateObject);\r\n\r\n        // If autoSelectDays is set, automatically select the specified number of days from start date\r\n        if (this.autoSelectDays != null && this.autoSelectDays > 0) {\r\n            this.fromDate = this.constructStartDate(dateObject)(constructDate);\r\n\r\n            const startDateMoment = dayjs(\r\n                this.annaDateTimeFormatService.convertNgbDateToMoment(this.fromDate),\r\n                this.defaultDateFormat,\r\n            );\r\n\r\n            // Calculate end date by counting valid days\r\n            let dayjsCurrentDate = startDateMoment;\r\n            let validDaysCounted = 1; // Start date is included\r\n            let calculatedEndDate = startDateMoment;\r\n\r\n            // Get max date constraint\r\n            const maxDateMoment = this.maxDate\r\n                ? dayjs(this.annaDateTimeFormatService.convertNgbDateToMoment(this.maxDate), this.defaultDateFormat)\r\n                : null;\r\n\r\n            // Count valid (non-disabled) days up to autoSelectDays\r\n            while (validDaysCounted < this.autoSelectDays) {\r\n                dayjsCurrentDate = dayjsCurrentDate.add(1, \"day\");\r\n\r\n                // Stop if we exceed maxDate\r\n                if (maxDateMoment && dayjsCurrentDate.isAfter(maxDateMoment, \"day\")) {\r\n                    break;\r\n                }\r\n\r\n                // Check if date is disabled\r\n                const ngbDate = this.annaDateTimeFormatService.convertToNgbDate(\r\n                    dayjsCurrentDate,\r\n                    this.defaultDateFormat,\r\n                );\r\n\r\n                if (this.disabledDates.length === 0 || !this.checkIfDateIsDisabled(ngbDate)) {\r\n                    calculatedEndDate = dayjsCurrentDate;\r\n                    validDaysCounted += 1;\r\n                } else {\r\n                    // If disabled dates should stop selection, break here\r\n                    // Otherwise, continue counting (skip disabled dates)\r\n                    // For now, we'll stop at first disabled date to match existing behavior\r\n                    break;\r\n                }\r\n            }\r\n\r\n            // Convert calculated end date back to NgbDate\r\n            const endDateNgb = this.annaDateTimeFormatService.convertToNgbDate(\r\n                calculatedEndDate,\r\n                this.defaultDateFormat,\r\n            );\r\n            this.toDate = NgbDate.from(endDateNgb);\r\n\r\n            // Don't update currentSelectedStartDate/currentSelectedEndDate here\r\n            // They should only be updated in applyChanges() when user clicks Apply\r\n            // This ensures the button is enabled when there's a new selection\r\n\r\n            this.weekNumberGenerator();\r\n        } else if (!this.config.selectMultipleWeeks) {\r\n            // Single week selection\r\n            this.fromDate = this.constructStartDate(dateObject)(constructDate);\r\n            this.toDate = this.constructEndDate(dateObject)(constructDate);\r\n\r\n            this.weekNumberGenerator();\r\n        } else {\r\n            if (date.before(this.fromDate)) {\r\n                this.fromDate = this.constructStartDate(dateObject)(constructDate);\r\n                if (this.flag1) {\r\n                    this.toDate = this.constructEndDate(dateObject)(constructDate);\r\n                }\r\n                this.flag1 = !this.flag1;\r\n            } else if (date.after(this.toDate)) {\r\n                if (this.flag2) {\r\n                    this.fromDate = this.constructStartDate(dateObject)(constructDate);\r\n                    // this.toDate = this.constructEndDate(dateObject)(constructDate);\r\n                }\r\n                this.flag2 = !this.flag2;\r\n                this.toDate = this.constructEndDate(dateObject)(constructDate);\r\n            } else {\r\n                this.fromDate = this.constructStartDate(dateObject)(constructDate);\r\n                this.toDate = this.constructEndDate(dateObject)(constructDate);\r\n            }\r\n\r\n            if (this.disabledDates.length > 0) {\r\n                let dayjsStartDate = dayjs(\r\n                    this.annaDateTimeFormatService.convertNgbDateToMoment(this.fromDate),\r\n                    this.defaultDateFormat,\r\n                );\r\n                const dayjsEndDate = dayjs(\r\n                    this.annaDateTimeFormatService.convertNgbDateToMoment(this.toDate),\r\n                    this.defaultDateFormat,\r\n                );\r\n\r\n                let ngbDate;\r\n                while (!dayjsStartDate.isSame(dayjsEndDate)) {\r\n                    ngbDate = this.annaDateTimeFormatService.convertToNgbDate(dayjsStartDate, this.defaultDateFormat);\r\n                    if (this.checkIfDateIsDisabled(ngbDate)) {\r\n                        break;\r\n                    }\r\n                    dayjsStartDate = dayjsStartDate.add(1, \"d\");\r\n                }\r\n                const newDateObject = new Date(ngbDate.year, ngbDate.month - 1, ngbDate.day - 1);\r\n                constructDate = this.buildDate(newDateObject);\r\n                this.toDate = this.constructEndDate(newDateObject)(constructDate);\r\n            }\r\n\r\n            this.weekNumberGenerator();\r\n        }\r\n\r\n        if (!this.config.showAsDropdown || this.config.emitInitialSelection) {\r\n            this.config.emitInitialSelection = false;\r\n            this.applyChanges();\r\n        }\r\n        this.enableDisableApplyButton();\r\n    }\r\n\r\n    weekNumberGenerator(): void {\r\n        const dates = [];\r\n        let week = [];\r\n\r\n        let startDate = NgbDate.from(this.fromDate);\r\n        const endDate = NgbDate.from(this.toDate);\r\n\r\n        week.push(startDate);\r\n        while (endDate != null && !startDate.equals(endDate)) {\r\n            const date = this.calendar.getNext(startDate, \"d\", 1);\r\n            startDate = date;\r\n            week.push(date);\r\n\r\n            // Collect all days in week to calculate the week number\r\n            if (week.length === 7) {\r\n                dates.push(week);\r\n                week = [];\r\n            }\r\n        }\r\n        if (this.config.maxWeeksToSelect > 0 && dates.length > this.config.maxWeeksToSelect) {\r\n            dates.splice(this.config.maxWeeksToSelect, dates.length - this.config.maxWeeksToSelect);\r\n        }\r\n        this.selectedDates(dates);\r\n\r\n        this.weekNumbers = [];\r\n        this.weekObjects = [];\r\n\r\n        dates.forEach((date) => {\r\n            this.weekNumbers.push(` Week ${this.getWeekNumber(date, this.config.firstDayOfWeek)}`);\r\n            const formattedDates = this.formatter(date[0], date[6]);\r\n            const dateObjects = {\r\n                startDate: formattedDates.formattedStartDate,\r\n                endDate: formattedDates.formattedEndDate,\r\n            };\r\n            this.weekObjects.push(dateObjects);\r\n        });\r\n\r\n        this.displayToUI();\r\n        this.enableDisablePreviosNextNavigationIcons();\r\n    }\r\n\r\n    selectedDates(dates: any) {\r\n        if (dates.length > 0) {\r\n            this.fromDate = dates[0][0];\r\n            this.toDate = dates[dates.length - 1][6];\r\n        }\r\n    }\r\n\r\n    formattedDates() {\r\n        const pipe = new DatePipe(\"en-US\");\r\n        return (fromDate: NgbDate, toDate: NgbDate) => {\r\n            const fromDateObject = new Date(fromDate.year, fromDate.month - 1, fromDate.day);\r\n            const toDateObject = new Date(toDate.year, toDate.month - 1, toDate.day);\r\n            this.formattedStartDate = pipe.transform(fromDateObject, this.config.dateFormatForRequest);\r\n            this.formattedEndDate = pipe.transform(toDateObject, this.config.dateFormatForRequest);\r\n            this.dateToDisplay = `${pipe.transform(\r\n                fromDateObject,\r\n                this.config.dateFormatToDisplay,\r\n            )} to ${pipe.transform(toDateObject, this.config.dateFormatToDisplay)}`;\r\n            return this;\r\n        };\r\n    }\r\n\r\n    displayToUI() {\r\n        if (!this.config.selectMultipleWeeks && this.fromDate && this.toDate) {\r\n            // Display for only Single Week\r\n            this.formatter(this.fromDate, this.toDate);\r\n        } else if (this.weekNumbers.length > this.config.maxWeeksToShowWithRemainingCount) {\r\n            // Display for Multiple Weeks\r\n            const weekDisplay = [];\r\n            for (let i = 0; i < this.config.maxWeeksToShowWithRemainingCount; i++) {\r\n                weekDisplay.push(this.weekNumbers.shift());\r\n            }\r\n            const remainingWeeks = this.weekNumbers.length;\r\n            this.weekNumbers = [];\r\n            this.weekNumbers.push(`${weekDisplay} +${remainingWeeks}`);\r\n        }\r\n    }\r\n\r\n    constructStartDate(date: Date) {\r\n        const { firstDayOfWeek } = this.config;\r\n        return (constructDate: any) => {\r\n            const startDay = date.getDay() !== 0 ? firstDayOfWeek - date.getDay() : -6;\r\n            return constructDate(startDay);\r\n        };\r\n    }\r\n\r\n    constructEndDate(date: Date) {\r\n        const { firstDayOfWeek } = this.config;\r\n        return (constructDate: any) => {\r\n            const endDay = date.getDay() !== 0 ? firstDayOfWeek + 6 - date.getDay() : 0;\r\n            return constructDate(endDay);\r\n        };\r\n    }\r\n\r\n    buildDate(date: Date) {\r\n        return (number: number): NgbDate => {\r\n            const day = date.getDate() + number;\r\n            const dateObject = new Date(date.getFullYear(), date.getMonth(), day);\r\n\r\n            const ngbDateObject = {} as NgbDate;\r\n            ngbDateObject.day = day;\r\n\r\n            if (\r\n                ngbDateObject.day >= 31 ||\r\n                ngbDateObject.day < 1 ||\r\n                (ngbDateObject.day >= 30 && dateObject.getMonth() === 2)\r\n            ) {\r\n                ngbDateObject.day = dateObject.getDate();\r\n            }\r\n\r\n            ngbDateObject.month = dateObject.getMonth() + 1;\r\n            ngbDateObject.year = dateObject.getFullYear();\r\n            return NgbDate.from(ngbDateObject);\r\n        };\r\n    }\r\n\r\n    isHovered(date: NgbDate): boolean {\r\n        return (\r\n            this.fromDate &&\r\n            !this.toDate &&\r\n            this.hoveredDate &&\r\n            date.after(this.fromDate) &&\r\n            date.before(this.hoveredDate)\r\n        );\r\n    }\r\n\r\n    isInside(date: NgbDate): boolean {\r\n        return this.toDate && date.after(this.fromDate) && date.before(this.toDate);\r\n    }\r\n\r\n    isRange(date: NgbDate): boolean {\r\n        return (\r\n            date.equals(this.fromDate) ||\r\n            (this.toDate && date.equals(this.toDate)) ||\r\n            this.isInside(date) ||\r\n            this.isHovered(date)\r\n        );\r\n    }\r\n\r\n    previousWeek(): void {\r\n        this.toDate = this.calendar.getPrev(this.fromDate, \"d\", 1);\r\n        this.fromDate = this.calendar.getPrev(this.fromDate, \"d\", this.calendar.getDaysPerWeek());\r\n\r\n        this.currentSelectedStartDate = cloneDeep(this.fromDate);\r\n        this.currentSelectedEndDate = cloneDeep(this.toDate);\r\n\r\n        if (this.datepicker) {\r\n            this.datepicker.navigateTo(this.fromDate);\r\n        }\r\n        this.weekNumberGenerator();\r\n        this.applyChanges();\r\n        this.enableDisablePreviosNextNavigationIcons();\r\n        this.enableDisableApplyButton();\r\n        this.closeDatepicker();\r\n    }\r\n\r\n    nextWeek(): void {\r\n        this.fromDate = this.calendar.getNext(this.fromDate, \"d\", this.calendar.getDaysPerWeek());\r\n        this.toDate = this.calendar.getNext(this.fromDate, \"d\", this.calendar.getDaysPerWeek() - 1);\r\n\r\n        this.currentSelectedStartDate = cloneDeep(this.fromDate);\r\n        this.currentSelectedEndDate = cloneDeep(this.toDate);\r\n\r\n        if (this.datepicker) {\r\n            this.datepicker.navigateTo(this.fromDate);\r\n        }\r\n        this.weekNumberGenerator();\r\n        this.applyChanges();\r\n        this.enableDisablePreviosNextNavigationIcons();\r\n        this.enableDisableApplyButton();\r\n        this.closeDatepicker();\r\n    }\r\n\r\n    setCalendarMap() {\r\n        const dateObj = { fromDate: this.fromDate, toDate: this.toDate };\r\n        this.calendarMap.set(\"oldDates\", dateObj);\r\n    }\r\n\r\n    applyChanges() {\r\n        this.multiSelectDropdownOpen = false;\r\n\r\n        this.currentSelectedStartDate = cloneDeep(this.fromDate);\r\n        this.currentSelectedEndDate = cloneDeep(this.toDate);\r\n\r\n        if (!this.config.emitMultipleWeekObjects) {\r\n            const dates = {} as WeekObject;\r\n            const formattedDates = this.formatter(this.fromDate, this.toDate);\r\n            dates.startDate = formattedDates.formattedStartDate;\r\n            dates.endDate = formattedDates.formattedEndDate;\r\n            this.applyWeekCalendarChanges.emit(dates);\r\n        } else {\r\n            this.applyWeekCalendarChanges.emit(this.weekObjects);\r\n        }\r\n        this.setCalendarMap();\r\n    }\r\n\r\n    isFocused(value: any) {\r\n        this.calendarToggled.emit(value);\r\n        this.enableDisableApplyButton();\r\n    }\r\n\r\n    isDropdownOpenedForCalendar(datepicker: NgbInputDatepicker) {\r\n        this.datepicker = datepicker;\r\n\r\n        if (this.datepicker.isOpen()) {\r\n            this.revertDates();\r\n            this.datepicker.close();\r\n            this.multiSelectDropdownOpen = false;\r\n            this.datepicker = null;\r\n        } else {\r\n            this.datepicker.open();\r\n            const fromDate = this.fromDate ? cloneDeep(this.fromDate) : null;\r\n            this.datepicker.navigateTo(fromDate);\r\n            this.multiSelectDropdownOpen = true;\r\n        }\r\n    }\r\n\r\n    revertDates() {\r\n        this.multiSelectDropdownOpen = false;\r\n        if (this.calendarMap.get(\"oldDates\")) {\r\n            const dateObj = this.calendarMap.get(\"oldDates\");\r\n            this.fromDate = dateObj.fromDate;\r\n            this.toDate = dateObj.toDate;\r\n            this.weekNumberGenerator();\r\n            this.displayToUI();\r\n        }\r\n    }\r\n\r\n    checkIfDateIsDisabled(date: any): boolean {\r\n        const validatorFunc = (ngbDate: any) =>\r\n            ngbDate.year === date.year && ngbDate.month === date.month && ngbDate.day === date.day;\r\n        return this.disabledDates.some(validatorFunc);\r\n    }\r\n\r\n    closeDatepicker() {\r\n        if (this.datepicker) {\r\n            this.datepicker.close();\r\n            this.datepicker = null;\r\n        }\r\n    }\r\n\r\n    isTimezoneChanged(timezoneChanges: any) {\r\n        return timezoneChanges.currentValue && timezoneChanges.currentValue !== timezoneChanges.previousValue;\r\n    }\r\n\r\n    getCurrentDateBasedOnTimezone(daysToBackdate: number) {\r\n        if (this.timezone && this.timezone !== \"\") {\r\n            return dayjs().tz(this.timezone).add(daysToBackdate, \"d\");\r\n        }\r\n        const date = dayjs();\r\n        return date.add(daysToBackdate, \"days\");\r\n    }\r\n\r\n    enableDisablePreviosNextNavigationIcons(reCalculateMinAndMaxDate: boolean = false) {\r\n        if (!this.maxDate) {\r\n            const dates: { today: NgbDate; fromDate: NgbDate } = this.weekCalendarService.setCurrentDate(this.timezone);\r\n            this.today = cloneDeep(dates.today);\r\n            this.fromDate = cloneDeep(dates.fromDate);\r\n            this.currentSelectedStartDate = cloneDeep(this.fromDate);\r\n            this.currentSelectedEndDate = cloneDeep(this.toDate);\r\n        }\r\n\r\n        if (!this.maxDate || reCalculateMinAndMaxDate) {\r\n            const [previousWeekStartDate, futureWeekEndDate] = this.getPreviousAndNextWeekDate();\r\n            this.minDate = NgbDate.from(\r\n                this.annaDateTimeFormatService.convertToNgbDate(previousWeekStartDate, this.defaultDateFormat),\r\n            );\r\n            this.maxDate = NgbDate.from(\r\n                this.annaDateTimeFormatService.convertToNgbDate(futureWeekEndDate, this.defaultDateFormat),\r\n            );\r\n        }\r\n\r\n        if (this.maxDate && this.weekNumbers.length > 0) {\r\n            this.previousWeekNavigationDisabled = this.minDate.equals(this.fromDate);\r\n            this.nextWeekNavigationDisabled = this.maxDate.equals(this.toDate);\r\n        }\r\n    }\r\n\r\n    setCurrentDate() {\r\n        let backDatedPeriod = JSON.parse(localStorage.getItem(\"userProfileData\")).lockingPeriodDays;\r\n        backDatedPeriod = backDatedPeriod || 0;\r\n\r\n        const currentTimezoneDate = this.getCurrentDateBasedOnTimezone(backDatedPeriod);\r\n        const date = this.annaDateTimeFormatService.convertToNgbDate(currentTimezoneDate, this.defaultDateFormat);\r\n\r\n        this.today = NgbDate.from(date);\r\n        this.fromDate = NgbDate.from(date);\r\n    }\r\n\r\n    getPreviousAndNextWeekDate() {\r\n        if (!this.config.selectCurrentWeek && !this.today) {\r\n            const currentdayjsDate = this.annaDateTimeFormatService.convertNgbDateToMoment(this.minDate);\r\n            const currentdayjsEndDate = this.annaDateTimeFormatService.convertNgbDateToMoment(this.maxDate);\r\n            const previousWeekStartDate = this.annaDateTimeFormatService.getBroadcastWeek(currentdayjsDate).start;\r\n            const futureWeekEndDate = this.annaDateTimeFormatService.getBroadcastWeek(currentdayjsEndDate).end;\r\n            return [previousWeekStartDate, futureWeekEndDate];\r\n        }\r\n        // eslint-disable-next-line no-else-return\r\n        else {\r\n            const currentdayjsDate = this.annaDateTimeFormatService.convertNgbDateToMoment(this.today);\r\n            const previousYearDate = dayjs(currentdayjsDate, this.defaultDateFormat)\r\n                .subtract(this.noOfMonthsQuarterYearToEnableInPast, this.unitToEnableForMinDate)\r\n                .format(this.defaultDateFormat);\r\n            const previousWeekStartDate = this.annaDateTimeFormatService.getBroadcastWeek(previousYearDate).start;\r\n\r\n            const futureDate = dayjs(currentdayjsDate, this.defaultDateFormat)\r\n                .add(this.noOfMonthsQuarterYearToEnableInFuture, this.unitToEnableForMaxDate)\r\n                .format(this.defaultDateFormat);\r\n            const futureWeekEndDate = this.annaDateTimeFormatService.getBroadcastWeek(futureDate).end;\r\n\r\n            return [previousWeekStartDate, futureWeekEndDate];\r\n        }\r\n    }\r\n\r\n    enableDisableApplyButton() {\r\n        // If fromDate and toDate are set, check if they differ from current selected dates\r\n        if (this.fromDate && this.toDate) {\r\n            // If current selected dates are null, enable button (new selection not yet applied)\r\n            if (!this.currentSelectedStartDate || !this.currentSelectedEndDate) {\r\n                this.disableApplyButton = false;\r\n            } else {\r\n                // Compare current selection with applied selection\r\n                // Disable button only if they match (no changes)\r\n                this.disableApplyButton =\r\n                    this.currentSelectedStartDate.year === this.fromDate.year &&\r\n                    this.currentSelectedEndDate.year === this.toDate.year &&\r\n                    this.currentSelectedStartDate.month === this.fromDate.month &&\r\n                    this.currentSelectedEndDate.month === this.toDate.month &&\r\n                    this.currentSelectedStartDate.day === this.fromDate.day &&\r\n                    this.currentSelectedEndDate.day === this.toDate.day;\r\n            }\r\n        } else {\r\n            // No selection made, disable button\r\n            this.disableApplyButton = true;\r\n        }\r\n    }\r\n}\r\n","<form\r\n    class=\"form-inline position-relative\"\r\n    *ngIf=\"config.showAsDropdown\"\r\n    #datepickerAnchor\r\n>\r\n    <div class=\"form-group hidden\">\r\n        <div class=\"input-group\">\r\n            <input\r\n                name=\"datepicker\"\r\n                class=\"form-control datepicker-input d-none\"\r\n                ngbDatepicker\r\n                #datepicker=\"ngbDatepicker\"\r\n                [placement]=\"weekCalendarPosition\"\r\n                [autoClose]=\"false\"\r\n                (dateSelect)=\"selectWeek($event)\"\r\n                (closed)=\"isFocused(false)\"\r\n                [displayMonths]=\"1\"\r\n                [dayTemplate]=\"t\"\r\n                [firstDayOfWeek]=\"config.firstDayOfWeek\"\r\n                [showWeekNumbers]=\"config.showWeekNumbers\"\r\n                [footerTemplate]=\"footerTemplate\"\r\n                [markDisabled]=\"disabledFunc\"\r\n                [minDate]=\"minDate\"\r\n                [maxDate]=\"maxDate\"\r\n                [container]=\"config?.isContainerBody ? 'body' : undefined\"\r\n                [positionTarget]=\"datepickerAnchor\"\r\n            />\r\n        </div>\r\n    </div>\r\n\r\n    <!--Single week select-->\r\n    <div *ngIf=\"!config.selectMultipleWeeks\">\r\n        <span class=\"weeknumbers-label\"> &nbsp;{{ weekNumbers }} </span>\r\n        <div class=\"form-group\">\r\n            <div class=\"input-group\">\r\n                <div class=\"single-week\">\r\n                    <button\r\n                        class=\"left\"\r\n                        [disabled]=\"previousWeekNavigationDisabled\"\r\n                    >\r\n                        <span\r\n                            class=\"mdi mdi-chevron-right next-round-btn navigation-btn\"\r\n                            (click)=\"previousWeek()\"\r\n                        >\r\n                        </span>\r\n                    </button>\r\n                    <input\r\n                        #dpFromDate\r\n                        class=\"form-control datepicker-input\"\r\n                        placeholder=\"Select Weeks\"\r\n                        [ngClass]=\"[config.customClass === '' ? '' : config.customClass]\"\r\n                        name=\"dpFromDate\"\r\n                        [value]=\"dateToDisplay\"\r\n                        [readonly]=\"true\"\r\n                        placement=\"bottom-left\"\r\n                        [disabled]=\"disableWeekDropdown\"\r\n                        (click)=\"isFocused(true); isDropdownOpenedForCalendar(datepicker)\"\r\n                    />\r\n                    <i\r\n                        class=\"mdi mdi-menu-down\"\r\n                        *ngIf=\"!datepicker.isOpen()\"\r\n                        (click)=\"isDropdownOpenedForCalendar(datepicker)\"\r\n                    ></i>\r\n                    <i\r\n                        class=\"mdi mdi-menu-up\"\r\n                        *ngIf=\"datepicker.isOpen()\"\r\n                        (click)=\"isDropdownOpenedForCalendar(datepicker)\"\r\n                    ></i>\r\n                    <button\r\n                        class=\"right\"\r\n                        [disabled]=\"nextWeekNavigationDisabled\"\r\n                    >\r\n                        <span\r\n                            class=\"mdi mdi-chevron-right round-btn navigation-btn\"\r\n                            (click)=\"nextWeek()\"\r\n                        >\r\n                        </span>\r\n                    </button>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    </div>\r\n\r\n    <!--Multiple week select-->\r\n    <div\r\n        class=\"form-group\"\r\n        *ngIf=\"config.selectMultipleWeeks\"\r\n    >\r\n        <div class=\"input-group\">\r\n            <div class=\"multiple-weeks\">\r\n                <input\r\n                    #dpFromDate\r\n                    class=\"form-control datepicker-input\"\r\n                    placeholder=\"Select Weeks\"\r\n                    [ngClass]=\"[config.customClass === '' ? '' : config.customClass]\"\r\n                    name=\"dpFromDate\"\r\n                    [readonly]=\"true\"\r\n                    [disabled]=\"disableWeekDropdown\"\r\n                    [value]=\"weekNumbers\"\r\n                    (click)=\"isFocused(true); isDropdownOpenedForCalendar(datepicker)\"\r\n                />\r\n                <i\r\n                    *ngIf=\"!multiSelectDropdownOpen\"\r\n                    class=\"mdi mdi-calendar multiselect-input-arrow\"\r\n                ></i>\r\n                <i\r\n                    *ngIf=\"multiSelectDropdownOpen\"\r\n                    class=\"mdi mdi-calendar multiselect-input-arrow\"\r\n                ></i>\r\n            </div>\r\n        </div>\r\n    </div>\r\n</form>\r\n\r\n<ngb-datepicker\r\n    #weekPicker\r\n    *ngIf=\"!config.showAsDropdown\"\r\n    [displayMonths]=\"1\"\r\n    [startDate]=\"fromDate!\"\r\n    [firstDayOfWeek]=\"config.firstDayOfWeek\"\r\n    [showWeekNumbers]=\"config.showWeekNumbers\"\r\n    [dayTemplate]=\"t\"\r\n    [maxDate]=\"maxDate\"\r\n    [minDate]=\"minDate\"\r\n    (dateSelect)=\"selectWeek($event)\"\r\n    [markDisabled]=\"disabledFunc\"\r\n>\r\n</ngb-datepicker>\r\n\r\n<ng-template #footerTemplate>\r\n    <hr class=\"my-0\" />\r\n    <button\r\n        class=\"footer-btn btn-primary btn-sm m-2 float-right apply-btn\"\r\n        [disabled]=\"disableApplyButton\"\r\n        (click)=\"applyChanges(); closeDatepicker()\"\r\n    >\r\n        Apply\r\n    </button>\r\n    <button\r\n        class=\"footer-btn btn-primary btn-sm m-2 float-right cancel-btn\"\r\n        (click)=\"revertDates(); closeDatepicker()\"\r\n    >\r\n        Cancel\r\n    </button>\r\n</ng-template>\r\n\r\n<ng-template\r\n    #t\r\n    let-date\r\n    let-focused=\"focused\"\r\n    let-disabled=\"disabled\"\r\n>\r\n    <span\r\n        class=\"custom-day\"\r\n        [class.focused]=\"focused\"\r\n        [class.range]=\"isRange(date)\"\r\n        [class.faded]=\"isHovered(date) || isInside(date)\"\r\n        [class.disabled]=\"disabled\"\r\n        (mouseenter)=\"hoveredDate = date\"\r\n        (mouseleave)=\"hoveredDate = null\"\r\n    >\r\n        {{ date.day }}\r\n    </span>\r\n</ng-template>\r\n","/* eslint-disable import/no-extraneous-dependencies */\r\nimport { NgIf } from \"@angular/common\";\r\nimport {\r\n    ChangeDetectionStrategy,\r\n    Component,\r\n    EventEmitter,\r\n    Input,\r\n    OnChanges,\r\n    OnInit,\r\n    Output,\r\n    SimpleChanges,\r\n    TemplateRef,\r\n    ViewChild,\r\n} from \"@angular/core\";\r\nimport { ActivatedRoute, Router } from \"@angular/router\";\r\nimport {\r\n    AnnaDateTimeFormatService,\r\n    AnnaGlobalConfigService,\r\n    ICustomSingleSelect,\r\n    IRadioButtonComponentConfig,\r\n    IWeekCalendar,\r\n} from \"@annalib/anna-core\";\r\nimport { NgbDate, NgbDateStruct, NgbModal, NgbModalRef, NgbTooltip } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport dayjs from \"dayjs\";\r\nimport isBetween from \"dayjs/plugin/isBetween\";\r\nimport { cloneDeep, isEqual } from \"lodash-es\";\r\n\r\nimport { CustomDatePickerComponent } from \"../custom-date-picker/custom-date-picker.component\";\r\nimport { StartDateConsideringFactor } from \"../custom-date-picker/models/datePicker.model\";\r\nimport { DatepickerService } from \"../custom-date-picker/services/datepickerService\";\r\nimport { DashboardFilterModalConstants } from \"../dashboard-filter-modal/models/dashboard-filter-modal.model\";\r\nimport { TypeOfCalendar } from \"../globals/global.model\";\r\nimport {\r\n    ICalendarTypeResponse,\r\n    IQuarter,\r\n    IYearQuarter,\r\n    PeriodSelectionPopUp,\r\n} from \"../order-container-filter-modal/models/order-container-filter-modal.model\";\r\n// eslint-disable-next-line max-len\r\nimport { CalendarQuarterYearFilterService } from \"../order-container-filter-modal/services/calendar-quarter-year-filter.service\";\r\nimport { RadioButtonsComponent } from \"../radio-buttons/radio-buttons.component\";\r\nimport { SingleSelectComponent } from \"../single-select/single-select.component\";\r\nimport { WeekCalendarComponent } from \"../week-calendar/week-calendar.component\";\r\n\r\n@Component({\r\n    selector: \"anna-design-generic-period-selection\",\r\n    templateUrl: \"./generic-period-selection.component.html\",\r\n    styleUrls: [\"./generic-period-selection.component.scss\"],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    imports: [\r\n        RadioButtonsComponent,\r\n        NgIf,\r\n        SingleSelectComponent,\r\n        CustomDatePickerComponent,\r\n        WeekCalendarComponent,\r\n        NgbTooltip,\r\n    ],\r\n})\r\nexport class GenericPeriodSelectionComponent implements OnInit, OnChanges {\r\n    @Input() showEntireFlightPeriodSelection: boolean = false;\r\n    @Input() initialEntireFlightPeriodSelected: boolean = false;\r\n    @Input() minMaxDateRangeForCalendar: { startDate: string; endDate: string };\r\n    @Input() selectedData: PeriodSelectionPopUp;\r\n    @Input() disablePeriodSelection: boolean;\r\n    @Input() startDateConsideringFactor: StartDateConsideringFactor;\r\n    @Input() toShowAllPeriodMode: boolean = true;\r\n    @Input() toShowAllMonthsOfYear: boolean = true;\r\n    @Input() showAllSelectionInDropdown = true;\r\n    @Input() showCalendarTypeRadioBtn = true;\r\n    @Input() considerMinMaxDateRangeForCalendar = false;\r\n    @Input() considerFirstQuarterForMonthCreation = false;\r\n    @Input() showPastPeriodDropdown: boolean = false;\r\n    @Input() pastPeriodCalendarData: ICalendarTypeResponse; // Past period calendar data computed by parent\r\n    @Input() selectedPastPeriodData: PeriodSelectionPopUp; // Initial past period data to pre-populate\r\n    @Input() pastPeriodMinMaxDateRange: { startDate: string; endDate: string }; // Separate min/max dates for past period dropdown\r\n    @Input() autoSelectDays: number = null;\r\n    @Output() apply = new EventEmitter();\r\n    @Output() isFilterChanged = new EventEmitter<PeriodSelectionPopUp>();\r\n    @Output() pastPeriodFilterChanged = new EventEmitter<PeriodSelectionPopUp>();\r\n\r\n    @ViewChild(\"periodSelectModal\")\r\n    private periodSelectModal: TemplateRef<any>;\r\n    modalReference: NgbModalRef;\r\n\r\n    calendarTypeConfig: IRadioButtonComponentConfig;\r\n    @Input() PeriodOptions: string[] = [\"Quarter\", \"Month\", \"Custom Range\"];\r\n    yearQuarterData: ICalendarTypeResponse;\r\n\r\n    allYears: string[];\r\n    allBroadcastYears: string[];\r\n    allFiscalYears: string[];\r\n    allMonths: { id: string; text: string }[];\r\n    allQuartersOfYear: IQuarter[];\r\n\r\n    selectedQuarter: IQuarter;\r\n    selectedYear: string;\r\n    selectedMonth: { id: string; text: string };\r\n    selectedCalendarType: TypeOfCalendar;\r\n    selectedStartDate: string;\r\n    selectedEndDate: string;\r\n    selectedPeriodMode: string;\r\n    selectedDataCloned: PeriodSelectionPopUp;\r\n\r\n    // Past period properties\r\n    pastAllYears: string[];\r\n    pastAllQuartersOfYear: IQuarter[];\r\n    pastAllMonths: { id: string; text: string }[];\r\n    pastSelectedYear: string;\r\n    pastSelectedQuarter: IQuarter;\r\n    pastSelectedMonth: { id: string; text: string };\r\n    pastSelectedStartDate: string;\r\n    pastSelectedEndDate: string;\r\n    pastSelectedDataCloned: PeriodSelectionPopUp;\r\n    pastCalendarFromDate: NgbDate;\r\n    pastCalendarToDate: NgbDate;\r\n\r\n    currentYear: string;\r\n    currentQuarter: IQuarter;\r\n    currentBroadcastYear: string;\r\n    currentBroadcastQuarter: IQuarter;\r\n    currentFiscalYear: string;\r\n    currentFiscalQuarter: IQuarter;\r\n\r\n    isModalOpen: boolean;\r\n    capmaignStartDate: NgbDateStruct;\r\n    capmaignEndDate: NgbDateStruct;\r\n    constants = DashboardFilterModalConstants;\r\n    disableApply: boolean;\r\n    minEndDate: NgbDateStruct;\r\n    latestEmittedObj: { isEntireFlightPeriod: boolean; startDate: string; endDate: string };\r\n\r\n    yearNoData = \"No year found\";\r\n    monthNoData = \"No month found\";\r\n    quarterNoData = \"No quarter found\";\r\n    EntireRangeSelectionMessage = \"Entire Flight Period\";\r\n    entireFlightPeriodSelected: boolean;\r\n    disableCustomRange: boolean;\r\n\r\n    yearDropdownConfig: ICustomSingleSelect;\r\n    monthDropdownConfig: ICustomSingleSelect;\r\n    quarterDropdownConfig: ICustomSingleSelect;\r\n    periodDropdownConfig: ICustomSingleSelect;\r\n    pastYearDropdownConfig: ICustomSingleSelect;\r\n    pastMonthDropdownConfig: ICustomSingleSelect;\r\n    pastQuarterDropdownConfig: ICustomSingleSelect;\r\n\r\n    weekCalenderDaysToEnableInFuture: number;\r\n    weekCalenderDaysToEnableInPast: number = 0;\r\n    pastPeriodWeekCalenderDaysToEnableInPast: number = 0;\r\n    pastPeriodWeekCalenderDaysToEnableInFuture: number = 0;\r\n    timezone: string;\r\n    calendarFromDate: NgbDate;\r\n    calendarToDate: NgbDate;\r\n    weekConfig: IWeekCalendar;\r\n    currentTimezoneDate: dayjs.Dayjs;\r\n\r\n    constructor(\r\n        private modalService: NgbModal,\r\n        private annaGlobalConfig: AnnaGlobalConfigService,\r\n        private currentRoute: ActivatedRoute,\r\n        private filterService: CalendarQuarterYearFilterService,\r\n        private dpService: DatepickerService,\r\n        private router: Router,\r\n        private annaDateTimeFormatService: AnnaDateTimeFormatService,\r\n    ) {\r\n        this.setDropsownConfigurations();\r\n        dayjs.extend(isBetween);\r\n    }\r\n\r\n    ngOnInit(): void {\r\n        this.calendarTypeConfig = this.dpService.getCalenderTypeConfig(false, false);\r\n        this.allMonths = this.filterService.getAllMonths();\r\n\r\n        if (this.showAllSelectionInDropdown) {\r\n            this.allMonths.unshift({ id: \"0\", text: \"All\" });\r\n        }\r\n\r\n        if (this.minMaxDateRangeForCalendar) {\r\n            this.setMinMaxDateForCustomRangeAndWeekCalendar();\r\n        }\r\n\r\n        this.filterService.quarterFilterSubscription = this.filterService.quarterFilterAPICompletedSubject$.subscribe(\r\n            (result: { filterData: ICalendarTypeResponse; selectedFilter: any }) => {\r\n                if (result.filterData) {\r\n                    this.yearQuarterData = cloneDeep(result.filterData);\r\n                    this.initYearAndQuarterData();\r\n                    this.setInitialData();\r\n\r\n                    const objToEmit = {\r\n                        isEntireFlightPeriod: this.entireFlightPeriodSelected,\r\n                        startDate: this.selectedStartDate,\r\n                        endDate: this.selectedEndDate,\r\n                    };\r\n                    if (!isEqual(objToEmit, this.latestEmittedObj)) {\r\n                        this.latestEmittedObj = cloneDeep(objToEmit);\r\n                        this.apply.emit(objToEmit);\r\n                        this.setSelectedData();\r\n                        this.isFilterChanged.emit(this.selectedDataCloned);\r\n                    }\r\n                }\r\n            },\r\n        );\r\n    }\r\n\r\n    ngOnChanges(changes: SimpleChanges) {\r\n        if (this.yearQuarterData && changes.selectedData && changes.selectedData.currentValue) {\r\n            this.setInitialData();\r\n        }\r\n        if (\r\n            this.minMaxDateRangeForCalendar &&\r\n            changes.minMaxDateRangeForCalendar &&\r\n            changes.minMaxDateRangeForCalendar.currentValue\r\n        ) {\r\n            this.setMinMaxDateForCustomRangeAndWeekCalendar();\r\n        }\r\n        if (\r\n            this.pastPeriodMinMaxDateRange &&\r\n            changes.pastPeriodMinMaxDateRange &&\r\n            changes.pastPeriodMinMaxDateRange.currentValue\r\n        ) {\r\n            this.setPastPeriodMinMaxDateForWeekCalendar();\r\n        }\r\n        if (this.toShowAllPeriodMode && changes.selectedData && changes.selectedData.currentValue === false) {\r\n            this.selectedPeriodMode = this.constants.Quarter;\r\n        }\r\n        // Re-initialize past period data when pastPeriodCalendarData or selectedPastPeriodData changes\r\n        if (\r\n            this.showPastPeriodDropdown &&\r\n            this.pastPeriodCalendarData &&\r\n            this.yearQuarterData &&\r\n            (changes.pastPeriodCalendarData || changes.selectedPastPeriodData)\r\n        ) {\r\n            this.initPastPeriodData();\r\n            // Set past period week calendar constraints if pastPeriodMinMaxDateRange is available\r\n            if (this.pastPeriodMinMaxDateRange) {\r\n                this.setPastPeriodMinMaxDateForWeekCalendar();\r\n            }\r\n        }\r\n    }\r\n\r\n    setMinMaxDateForCustomRangeAndWeekCalendar() {\r\n        this.capmaignEndDate = this.annaDateTimeFormatService.convertToNgbDate(\r\n            this.minMaxDateRangeForCalendar.endDate,\r\n            \"MM/DD/YYYY\",\r\n        );\r\n        this.capmaignStartDate = this.annaDateTimeFormatService.convertToNgbDate(\r\n            this.minMaxDateRangeForCalendar.startDate,\r\n            \"MM/DD/YYYY\",\r\n        );\r\n\r\n        // WeekCalendar\r\n\r\n        let backDatedPeriod = JSON.parse(localStorage.getItem(\"userProfileData\"))?.lockingPeriodDays;\r\n        backDatedPeriod = backDatedPeriod || 0;\r\n\r\n        this.currentTimezoneDate = this.getCurrentDateBasedOnTimezone(backDatedPeriod);\r\n\r\n        this.weekCalenderDaysToEnableInPast = Math.abs(\r\n            dayjs(this.minMaxDateRangeForCalendar.startDate, \"MM/DD/YYYY\").diff(this.currentTimezoneDate, \"days\"),\r\n        );\r\n\r\n        this.weekCalenderDaysToEnableInFuture = dayjs(this.minMaxDateRangeForCalendar.endDate, \"MM/DD/YYYY\").diff(\r\n            this.currentTimezoneDate,\r\n            \"days\",\r\n        );\r\n    }\r\n\r\n    setPastPeriodMinMaxDateForWeekCalendar() {\r\n        if (!this.pastPeriodMinMaxDateRange) {\r\n            this.pastPeriodWeekCalenderDaysToEnableInPast = 0;\r\n            this.pastPeriodWeekCalenderDaysToEnableInFuture = 0;\r\n            return;\r\n        }\r\n\r\n        // For Weeks mode, constrain to 13 weeks relative to future period start date\r\n        if (this.selectedPeriodMode === this.constants.Week && this.selectedStartDate) {\r\n            const futureStartDate = dayjs(this.selectedStartDate, \"MM/DD/YYYY\");\r\n            // Calculate 13 weeks back from future period start date (13 weeks * 7 days = 91 days)\r\n            const thirteenWeeksBack = futureStartDate.subtract(91, \"days\");\r\n\r\n            // Use the future period start date as the reference point\r\n            this.pastPeriodWeekCalenderDaysToEnableInPast = Math.abs(thirteenWeeksBack.diff(futureStartDate, \"days\"));\r\n\r\n            // Past period should end at the future period start date (or slightly before)\r\n            this.pastPeriodWeekCalenderDaysToEnableInFuture = 0;\r\n        } else {\r\n            let backDatedPeriod = JSON.parse(localStorage.getItem(\"userProfileData\"))?.lockingPeriodDays;\r\n            backDatedPeriod = backDatedPeriod || 0;\r\n\r\n            const currentTimezoneDate = this.getCurrentDateBasedOnTimezone(backDatedPeriod);\r\n\r\n            this.pastPeriodWeekCalenderDaysToEnableInPast = Math.abs(\r\n                dayjs(this.pastPeriodMinMaxDateRange.startDate, \"MM/DD/YYYY\").diff(currentTimezoneDate, \"days\"),\r\n            );\r\n\r\n            this.pastPeriodWeekCalenderDaysToEnableInFuture = dayjs(\r\n                this.pastPeriodMinMaxDateRange.endDate,\r\n                \"MM/DD/YYYY\",\r\n            ).diff(currentTimezoneDate, \"days\");\r\n        }\r\n    }\r\n\r\n    getCurrentDateBasedOnTimezone(daysToBackdate: number) {\r\n        if (this.timezone && this.timezone !== \"\") {\r\n            return dayjs().tz(this.timezone).add(daysToBackdate, \"d\");\r\n        }\r\n        const date = dayjs();\r\n        return date.add(daysToBackdate, \"days\");\r\n    }\r\n\r\n    setInitialData() {\r\n        this.initData();\r\n        this.selectedDataCloned = {\r\n            endDate: this.selectedEndDate,\r\n            startDate: this.selectedStartDate,\r\n            month: this.selectedMonth ? this.selectedMonth.text : null,\r\n            year: this.selectedYear,\r\n            quarter: this.selectedQuarter ? this.selectedQuarter.DisplayDate : null,\r\n            calendarType: this.selectedCalendarType,\r\n            periodMode: this.selectedPeriodMode,\r\n            isEntireFlightPeriod: this.entireFlightPeriodSelected,\r\n        };\r\n    }\r\n\r\n    initData() {\r\n        if (this.selectedData && this.allBroadcastYears.length > 0) {\r\n            this.entireFlightPeriodSelected = this.selectedData.isEntireFlightPeriod\r\n                ? this.selectedData.isEntireFlightPeriod\r\n                : false;\r\n            this.selectedCalendarType = this.selectedData.calendarType;\r\n            this.selectedPeriodMode = this.selectedData.periodMode\r\n                ? this.selectedData.periodMode\r\n                : this.constants.Quarter;\r\n            this.selectedYear = this.selectedData.year ? this.selectedData.year : null;\r\n            this.allYears =\r\n                this.selectedCalendarType === this.constants.Broadcast\r\n                    ? cloneDeep(this.allBroadcastYears)\r\n                    : cloneDeep(this.allFiscalYears);\r\n\r\n            // if (this.selectedCalendarType == this.constants.Broadcast && this.selectedYear) {\r\n            //   this.allQuartersOfYear = this.yearQuarterData.BroadcastQuarterYear.filter(\r\n            //     (n) => n.Year.toString() == this.selectedYear\r\n            //   )[0]?.Quarters;\r\n            // } else if (this.selectedCalendarType == this.constants.Fiscal && this.selectedYear) {\r\n            //   this.allQuartersOfYear = this.yearQuarterData.FiscalQuarterYear.filter(\r\n            //     (n) => n.Year.toString() == this.selectedYear\r\n            //   )[0]?.Quarters;\r\n            // }\r\n            this.setQuartersOfYear(this.selectedYear);\r\n            this.changeListOfMonthInDropdown();\r\n            this.selectedQuarter = this.allQuartersOfYear\r\n                ? this.allQuartersOfYear.filter((n) => n.DisplayDate === this.selectedData.quarter)[0]\r\n                : null;\r\n            this.selectedMonth = this.selectedData.month\r\n                ? this.allMonths.filter((n) => n.text === this.selectedData.month)[0]\r\n                : null;\r\n\r\n            this.selectedStartDate = this.selectedData.startDate\r\n                ? cloneDeep(this.selectedData.startDate)\r\n                : dayjs(this.selectedQuarter.StartDate).format(\"MM/DD/YYYY\");\r\n            this.selectedEndDate = this.selectedData.endDate\r\n                ? cloneDeep(this.selectedData.endDate)\r\n                : dayjs(this.selectedQuarter.EndDate).format(\"MM/DD/YYYY\");\r\n            this.minEndDate = this.selectedData.startDate\r\n                ? cloneDeep(this.annaDateTimeFormatService.convertToNgbDate(this.selectedData.startDate, \"YYYY-MM-DD\"))\r\n                : cloneDeep(this.capmaignStartDate);\r\n            const ngbStartDateForWeekCalendar = this.annaDateTimeFormatService.convertToNgbDateStandardFormat(\r\n                this.selectedStartDate,\r\n            );\r\n            const ngbEndDateForWeekCalendar = this.annaDateTimeFormatService.convertToNgbDateStandardFormat(\r\n                this.selectedEndDate,\r\n            );\r\n            this.calendarFromDate = new NgbDate(\r\n                ngbStartDateForWeekCalendar.year,\r\n                ngbStartDateForWeekCalendar.month,\r\n                ngbStartDateForWeekCalendar.day,\r\n            );\r\n            this.calendarToDate = new NgbDate(\r\n                ngbEndDateForWeekCalendar.year,\r\n                ngbEndDateForWeekCalendar.month,\r\n                ngbEndDateForWeekCalendar.day,\r\n            );\r\n\r\n            // Initialize past period if enabled and data is provided\r\n            if (this.showPastPeriodDropdown && this.pastPeriodCalendarData) {\r\n                this.initPastPeriodData();\r\n            }\r\n        } else {\r\n            this.initWithDefaultData();\r\n        }\r\n    }\r\n\r\n    initYearAndQuarterData() {\r\n        this.allBroadcastYears = [];\r\n        this.allFiscalYears = [];\r\n\r\n        // Check if campaign start and end dates are available\r\n        const startYear = this.capmaignStartDate ? this.capmaignStartDate?.year : null;\r\n        const endYear = this.capmaignEndDate ? this.capmaignEndDate?.year : null;\r\n\r\n        // If dates are not set, consider all years and quarters\r\n        const isDateRangeSet = startYear !== null && endYear !== null;\r\n\r\n        // Filter Broadcast Quarters based on the date range\r\n        this.yearQuarterData.BroadcastQuarterYear.forEach((yearQuarterObj: IYearQuarter) => {\r\n            if (\r\n                !this.considerMinMaxDateRangeForCalendar ||\r\n                !isDateRangeSet ||\r\n                (yearQuarterObj.Year >= startYear && yearQuarterObj.Year <= endYear)\r\n            ) {\r\n                this.allBroadcastYears.push(yearQuarterObj.Year.toString());\r\n\r\n                // Get the current quarter within this year\r\n                const currentQuarter = yearQuarterObj.Quarters.filter((obj) => obj.IsCurrentQuarter)[0];\r\n                if (currentQuarter) {\r\n                    this.currentBroadcastYear = yearQuarterObj.Year.toString();\r\n                    this.currentBroadcastQuarter = currentQuarter;\r\n                }\r\n            }\r\n        });\r\n\r\n        // Filter Fiscal Quarters based on the date range\r\n        this.yearQuarterData.FiscalQuarterYear.forEach((yearQuarterObj: IYearQuarter) => {\r\n            if (\r\n                !this.considerMinMaxDateRangeForCalendar ||\r\n                !isDateRangeSet ||\r\n                (yearQuarterObj.Year >= startYear && yearQuarterObj.Year <= endYear)\r\n            ) {\r\n                this.allFiscalYears.push(yearQuarterObj.Year.toString());\r\n\r\n                // Get the current quarter within this fiscal year\r\n                const currentQuarter = yearQuarterObj.Quarters.filter((obj) => obj.IsCurrentQuarter)[0];\r\n                if (currentQuarter) {\r\n                    this.currentFiscalYear = yearQuarterObj.Year.toString();\r\n                    this.currentFiscalQuarter = currentQuarter;\r\n                }\r\n            }\r\n        });\r\n    }\r\n\r\n    initWithDefaultData() {\r\n        this.entireFlightPeriodSelected = this.initialEntireFlightPeriodSelected;\r\n        this.selectedCalendarType = this.constants.Broadcast;\r\n        this.selectedPeriodMode = this.constants.Quarter;\r\n        if (!this.yearQuarterData.BroadcastQuarterYear.length || !this.yearQuarterData.FiscalQuarterYear.length) {\r\n            this.noQuarterDataAvailable();\r\n        } else {\r\n            this.selectCurrentYearAndQuarter(this.constants.Broadcast);\r\n            this.changeListOfMonthInDropdown();\r\n\r\n            if (this.entireFlightPeriodSelected) {\r\n                this.selectedStartDate = dayjs(this.minMaxDateRangeForCalendar.startDate).format(\"MM/DD/YYYY\");\r\n                this.selectedEndDate = dayjs(this.minMaxDateRangeForCalendar.endDate).format(\"MM/DD/YYYY\");\r\n            } else {\r\n                this.selectedStartDate = dayjs(this.selectedQuarter.StartDate).format(\"MM/DD/YYYY\");\r\n                this.selectedEndDate = dayjs(this.selectedQuarter.EndDate).format(\"MM/DD/YYYY\");\r\n            }\r\n        }\r\n\r\n        this.minEndDate = cloneDeep(this.capmaignStartDate);\r\n    }\r\n\r\n    selectCurrentYearAndQuarter(calendarType: TypeOfCalendar) {\r\n        if (calendarType === this.constants.Broadcast) {\r\n            if (this.currentBroadcastYear) {\r\n                this.allYears = cloneDeep(this.allBroadcastYears);\r\n                // this.allQuartersOfYear = this.yearQuarterData.BroadcastQuarterYear.filter(\r\n                //     (n) => n.Year.toString() === this.currentBroadcastYear,\r\n                // )[0].Quarters;\r\n                this.selectedYear = cloneDeep(this.currentBroadcastYear);\r\n                this.setQuartersOfYear(this.selectedYear);\r\n                this.selectedQuarter = cloneDeep(this.currentBroadcastQuarter);\r\n            }\r\n        } else if (this.currentFiscalYear) {\r\n            this.allYears = cloneDeep(this.allFiscalYears);\r\n            // this.allQuartersOfYear = this.yearQuarterData.FiscalQuarterYear.filter(\r\n            //     (n) => n.Year.toString() === this.currentFiscalYear,\r\n            // )[0].Quarters;\r\n            this.selectedYear = cloneDeep(this.currentFiscalYear);\r\n            this.setQuartersOfYear(this.selectedYear);\r\n            this.selectedQuarter = cloneDeep(this.currentFiscalQuarter);\r\n        }\r\n    }\r\n\r\n    openPeriodSelectModal() {\r\n        this.isModalOpen = true;\r\n        this.modalReference = this.modalService.open(this.periodSelectModal);\r\n    }\r\n\r\n    closeModal() {\r\n        this.isModalOpen = false;\r\n        this.modalReference.close();\r\n    }\r\n\r\n    periodSelectionChanged(selectedItem?: any) {\r\n        if (selectedItem) {\r\n            this.selectedPeriodMode = cloneDeep(selectedItem);\r\n        }\r\n        this.disableCustomRange = false;\r\n        this.selectedYear =\r\n            this.selectedCalendarType === this.constants.Broadcast ? this.currentBroadcastYear : this.currentFiscalYear;\r\n        this.selectedMonth = null;\r\n        this.selectedQuarter = null;\r\n        this.selectedStartDate = null;\r\n        this.selectedEndDate = null;\r\n        if (this.selectedPeriodMode === this.constants.Quarter) {\r\n            if (this.yearQuarterData.BroadcastQuarterYear.length && this.yearQuarterData.FiscalQuarterYear.length) {\r\n                this.setQuartersOfYear(this.selectedYear);\r\n            }\r\n        } else if (this.selectedPeriodMode === this.constants.CustomRange) {\r\n            this.minEndDate = cloneDeep(this.capmaignStartDate);\r\n        } else if (this.selectedPeriodMode === this.constants.Week) {\r\n            this.setCurrentWeekForWeekCalendar();\r\n            this.selectedStartDate = this.annaDateTimeFormatService.convertNgbDateToMoment(this.calendarFromDate);\r\n            this.selectedEndDate = this.annaDateTimeFormatService.convertNgbDateToMoment(this.calendarToDate);\r\n        }\r\n\r\n        if (!this.yearQuarterData.BroadcastQuarterYear.length || !this.yearQuarterData.FiscalQuarterYear.length) {\r\n            this.noQuarterDataAvailable();\r\n        }\r\n        this.changeListOfMonthInDropdown();\r\n        this.setSelectedData();\r\n        this.isFilterChanged.emit(this.selectedDataCloned);\r\n\r\n        // Re-initialize past period when period mode changes\r\n        if (this.showPastPeriodDropdown && this.pastPeriodCalendarData) {\r\n            this.pastSelectedYear = null;\r\n            this.pastSelectedQuarter = null;\r\n            this.pastSelectedMonth = null;\r\n            this.pastSelectedStartDate = null;\r\n            this.pastSelectedEndDate = null;\r\n            this.pastCalendarFromDate = null;\r\n            this.pastCalendarToDate = null;\r\n            this.initPastPeriodData();\r\n        }\r\n    }\r\n\r\n    setCurrentWeekForWeekCalendar() {\r\n        const currentWeekBroadcastStartEndDate = this.annaDateTimeFormatService.getBroadcastWeek(\r\n            this.currentTimezoneDate.format(\"MM/DD/YYYY\"),\r\n            \"MM/DD/YYYY\",\r\n        );\r\n\r\n        const weekStartDate = this.annaDateTimeFormatService.convertToNgbDateStandardFormat(\r\n            currentWeekBroadcastStartEndDate.start.format(\"MM/DD/YYYY\"),\r\n        );\r\n        const weekEndDate = this.annaDateTimeFormatService.convertToNgbDateStandardFormat(\r\n            currentWeekBroadcastStartEndDate.end.format(\"MM/DD/YYYY\"),\r\n        );\r\n\r\n        this.calendarFromDate = new NgbDate(weekStartDate.year, weekStartDate.month, weekStartDate.day);\r\n        this.calendarToDate = new NgbDate(weekEndDate.year, weekEndDate.month, weekEndDate.day);\r\n    }\r\n\r\n    changeListOfMonthInDropdown() {\r\n        this.setQuartersOfYear(this.selectedYear);\r\n        const allQuarterYearLength = this.allQuartersOfYear.length;\r\n\r\n        if (allQuarterYearLength && !this.toShowAllMonthsOfYear) {\r\n            this.allMonths = this.filterService.getAllMonths();\r\n            if (this.showAllSelectionInDropdown) {\r\n                this.allMonths.unshift({ id: \"0\", text: \"All\" });\r\n            }\r\n\r\n            if (this.considerMinMaxDateRangeForCalendar) {\r\n                const firstQuarter = this.allQuartersOfYear[0];\r\n                const lastQuarter = this.allQuartersOfYear[allQuarterYearLength - 1];\r\n\r\n                const firstQuarterStartDate = dayjs(firstQuarter.StartDate, \"YYYY-MM-DD\").format(\"MM/DD/YYYY\");\r\n                const lastQuarterEndDate = dayjs(lastQuarter.EndDate, \"YYYY-MM-DD\").format(\"MM/DD/YYYY\");\r\n\r\n                const minFirstQuarterDate = dayjs(firstQuarterStartDate).isSameOrAfter(\r\n                    this.minMaxDateRangeForCalendar.startDate,\r\n                )\r\n                    ? firstQuarterStartDate\r\n                    : this.minMaxDateRangeForCalendar.startDate;\r\n\r\n                const maxLastQuarterDate = dayjs(lastQuarterEndDate).isSameOrBefore(\r\n                    this.minMaxDateRangeForCalendar.endDate,\r\n                )\r\n                    ? lastQuarterEndDate\r\n                    : this.minMaxDateRangeForCalendar.endDate;\r\n\r\n                let minFirstQuarterMonth = dayjs(minFirstQuarterDate).format(\"MMMM\");\r\n                let maxLastQuarterMonth = dayjs(maxLastQuarterDate).format(\"MMMM\");\r\n\r\n                if (this.selectedCalendarType === this.constants.Broadcast) {\r\n                    const firstMonthBroadcastDates = this.dpService.getDateForBroadcastMonth(\r\n                        this.selectedYear,\r\n                        dayjs(minFirstQuarterDate).format(\"M\"),\r\n                    );\r\n                    const lastMonthBroadcastDates = this.dpService.getDateForBroadcastMonth(\r\n                        this.selectedYear,\r\n                        dayjs(maxLastQuarterDate).format(\"M\"),\r\n                    );\r\n                    if (dayjs(firstMonthBroadcastDates.endDate).isBefore(minFirstQuarterDate))\r\n                        minFirstQuarterMonth = dayjs(minFirstQuarterDate).add(1, \"M\").format(\"MMMM\");\r\n                    if (dayjs(lastMonthBroadcastDates.endDate).isBefore(maxLastQuarterDate))\r\n                        maxLastQuarterMonth = dayjs(maxLastQuarterDate).add(1, \"M\").format(\"MMMM\");\r\n                }\r\n\r\n                const lastQuarteMonthIndex = this.allMonths.findIndex((x) => x.text === maxLastQuarterMonth);\r\n                let firstQuarterMonthIndex = this.allMonths.findIndex((x) => x.text === minFirstQuarterMonth);\r\n\r\n                // firstQuarterMonthIndex =\r\n                //     firstQuarterMonthIndex === 1 ? firstQuarterMonthIndex - 1 : firstQuarterMonthIndex;\r\n\r\n                // If Quarter 1 is 27Dec to 27Mar, the firstQuarterMonthIndex will be 11 and\r\n                // want to actually show the January.\r\n                firstQuarterMonthIndex = firstQuarterMonthIndex >= lastQuarteMonthIndex ? 0 : firstQuarterMonthIndex;\r\n\r\n                this.allMonths = this.allMonths.slice(firstQuarterMonthIndex, lastQuarteMonthIndex + 1);\r\n            } else {\r\n                let firstQuarterMonthIndex = 0;\r\n\r\n                const lastQuarter = this.allQuartersOfYear[allQuarterYearLength - 1];\r\n                const lastQuarterMonth = dayjs(lastQuarter.EndDate).format(\"MMMM\");\r\n\r\n                const lastQuarteMonthIndex = this.allMonths.findIndex((x) => x.text === lastQuarterMonth);\r\n\r\n                if (this.considerFirstQuarterForMonthCreation) {\r\n                    const firstQuarter = this.allQuartersOfYear[0];\r\n                    const firstQuarterMonth = dayjs(firstQuarter.StartDate).format(\"MMMM\");\r\n                    const firstQuarterYear = dayjs(firstQuarter.StartDate).format(\"YYYY\");\r\n\r\n                    const lastQuarterYear = dayjs(lastQuarter.EndDate).format(\"YYYY\");\r\n                    firstQuarterMonthIndex = this.allMonths.findIndex((x) => x.text === firstQuarterMonth);\r\n\r\n                    firstQuarterMonthIndex =\r\n                        firstQuarterMonthIndex > lastQuarteMonthIndex ||\r\n                        (firstQuarterMonthIndex === lastQuarteMonthIndex && firstQuarterYear !== lastQuarterYear)\r\n                            ? 0\r\n                            : firstQuarterMonthIndex;\r\n                }\r\n\r\n                this.allMonths = this.allMonths.slice(firstQuarterMonthIndex, lastQuarteMonthIndex + 1);\r\n            }\r\n        }\r\n    }\r\n\r\n    yearSelectionChanged(selectedItem?: any) {\r\n        if (selectedItem) {\r\n            this.selectedYear = cloneDeep(selectedItem);\r\n        }\r\n        if (this.selectedPeriodMode === this.constants.Quarter) {\r\n            this.setQuartersOfYear(this.selectedYear);\r\n            this.selectedQuarter = null;\r\n        } else if (this.selectedPeriodMode === this.constants.Month) {\r\n            this.selectedMonth = null;\r\n        }\r\n        this.selectedStartDate = null;\r\n        this.selectedEndDate = null;\r\n        this.changeListOfMonthInDropdown();\r\n        this.setSelectedData();\r\n        this.isFilterChanged.emit(this.selectedDataCloned);\r\n\r\n        // Initialize past period when main period year changes\r\n        if (this.showPastPeriodDropdown && this.selectedYear && this.pastPeriodCalendarData) {\r\n            this.initPastPeriodData();\r\n        }\r\n    }\r\n\r\n    setQuartersOfYear(year: string) {\r\n        // Determine which quarter data to use based on the selected calendar type\r\n        const quartersOfYear =\r\n            this.selectedCalendarType === this.constants.Broadcast\r\n                ? this.yearQuarterData.BroadcastQuarterYear[\r\n                      this.yearQuarterData.BroadcastQuarterYear.findIndex((n) => n.Year.toString() === year)\r\n                  ]?.Quarters\r\n                : this.yearQuarterData.FiscalQuarterYear[\r\n                      this.yearQuarterData.FiscalQuarterYear.findIndex((n) => n.Year.toString() === year)\r\n                  ]?.Quarters;\r\n\r\n        if (quartersOfYear) {\r\n            // Filter quarters based on the campaign start and end dates, if available\r\n            this.allQuartersOfYear = quartersOfYear.filter((quarter: IQuarter) => {\r\n                // If the campaign dates are not set, include all quarters\r\n                if (!this.considerMinMaxDateRangeForCalendar || !this.capmaignStartDate || !this.capmaignEndDate) {\r\n                    return true; // Include all quarters\r\n                }\r\n\r\n                // Include only the quarters whose range overlaps with the campaign date range\r\n                return (\r\n                    dayjs(quarter.StartDate).isBetween(\r\n                        dayjs(this.minMaxDateRangeForCalendar.startDate),\r\n                        dayjs(this.minMaxDateRangeForCalendar.endDate),\r\n                    ) ||\r\n                    dayjs(quarter.EndDate).isBetween(\r\n                        dayjs(this.minMaxDateRangeForCalendar.startDate),\r\n                        dayjs(this.minMaxDateRangeForCalendar.endDate),\r\n                    )\r\n                );\r\n            });\r\n\r\n            // Add \"All\" option at the top if needed\r\n            if (\r\n                this.showAllSelectionInDropdown &&\r\n                this.allQuartersOfYear[0]?.DisplayDate !== \"All\" &&\r\n                this.allQuartersOfYear?.length > 1\r\n            ) {\r\n                this.allQuartersOfYear?.unshift({\r\n                    DisplayDate: \"All\",\r\n                    StartDate: this.allQuartersOfYear[0]?.StartDate,\r\n                    EndDate: this.allQuartersOfYear[this.allQuartersOfYear.length - 1]?.EndDate,\r\n                    IsCurrentQuarter: null,\r\n                });\r\n            } else if (!this.showAllSelectionInDropdown) {\r\n                // Remove \"All\" if it's in the list and we don't want it\r\n                this.allQuartersOfYear = this.allQuartersOfYear?.filter(\r\n                    (quarter: IQuarter) => quarter.DisplayDate !== \"All\",\r\n                );\r\n            }\r\n        }\r\n    }\r\n\r\n    monthSelectionChanged(selectedItem?: any) {\r\n        if (selectedItem) {\r\n            this.selectedMonth = cloneDeep(selectedItem);\r\n        }\r\n        let dates: { startDate: string; endDate: string } = { startDate: \"\", endDate: \"\" };\r\n        if (this.selectedCalendarType === this.constants.Broadcast) {\r\n            if (this.selectedMonth?.text === \"All\") {\r\n                dates.startDate = this.dpService.getDateForBroadcastMonth(\r\n                    this.selectedYear,\r\n                    this.allMonths[1].id,\r\n                ).startDate;\r\n                dates.endDate = this.dpService.getDateForBroadcastMonth(\r\n                    this.selectedYear,\r\n                    this.allMonths[this.allMonths.length - 1].id,\r\n                ).endDate;\r\n            } else {\r\n                dates = this.dpService.getDateForBroadcastMonth(this.selectedYear, this.selectedMonth.id);\r\n            }\r\n        } else if (this.selectedMonth?.text === \"All\") {\r\n            const startDate: string = `${this.selectedYear}-${this.allMonths[1].id}-01`;\r\n            const endDate: string = `${this.selectedYear}-${this.allMonths[this.allMonths.length - 1].id}-01`;\r\n            dates.startDate = dayjs(startDate, \"YYYY-MM-DD\").startOf(\"month\").format(\"YYYY-MM-DD\");\r\n            dates.endDate = dayjs(endDate, \"YYYY-MM-DD\").endOf(\"month\").format(\"YYYY-MM-DD\");\r\n        } else {\r\n            dates = this.dpService.getDateForFiscalMonth(this.selectedYear, this.selectedMonth.id);\r\n        }\r\n        this.selectedStartDate = dayjs(dates.startDate).format(\"MM/DD/YYYY\");\r\n        this.selectedEndDate = dayjs(dates.endDate).format(\"MM/DD/YYYY\");\r\n        this.setSelectedData();\r\n        this.isFilterChanged.emit(this.selectedDataCloned);\r\n\r\n        // Initialize past period when main month changes\r\n        if (this.showPastPeriodDropdown && this.selectedYear && !this.pastSelectedYear && this.pastPeriodCalendarData) {\r\n            this.initPastPeriodData();\r\n        }\r\n    }\r\n\r\n    quarterSelectionChanged(selectedItem?: any) {\r\n        if (selectedItem) {\r\n            this.selectedQuarter = cloneDeep(selectedItem);\r\n        }\r\n        if (this.selectedQuarter.DisplayDate === \"All\") {\r\n            this.selectedStartDate = dayjs(this.allQuartersOfYear[0].StartDate, \"YYYY-MM-DD\").format(\"MM/DD/YYYY\");\r\n            this.selectedEndDate = dayjs(\r\n                this.allQuartersOfYear[this.allQuartersOfYear.length - 1].EndDate,\r\n                \"YYYY-MM-DD\",\r\n            ).format(\"MM/DD/YYYY\");\r\n        } else {\r\n            this.selectedStartDate = dayjs(this.selectedQuarter.StartDate, \"YYYY-MM-DD\").format(\"MM/DD/YYYY\");\r\n            this.selectedEndDate = dayjs(this.selectedQuarter.EndDate, \"YYYY-MM-DD\").format(\"MM/DD/YYYY\");\r\n        }\r\n        this.setSelectedData();\r\n        this.isFilterChanged.emit(this.selectedDataCloned);\r\n    }\r\n\r\n    customRangeDPStartDateSelected(date: string) {\r\n        this.selectedStartDate = date;\r\n        this.minEndDate = this.annaDateTimeFormatService.convertToNgbDate(this.selectedStartDate, \"YYYY-MM-DD\");\r\n        this.setSelectedData();\r\n        this.isFilterChanged.emit(this.selectedDataCloned);\r\n    }\r\n\r\n    customRangeDPEndDateSelected(date: any) {\r\n        this.selectedEndDate = date;\r\n        this.setSelectedData();\r\n        this.isFilterChanged.emit(this.selectedDataCloned);\r\n    }\r\n\r\n    applyPeriodSelection() {\r\n        this.isModalOpen = false;\r\n        this.apply.emit({\r\n            isEntireFlightPeriod: this.entireFlightPeriodSelected,\r\n            startDate: this.selectedStartDate,\r\n            endDate: this.selectedEndDate,\r\n        });\r\n\r\n        if (this.entireFlightPeriodSelected) {\r\n            this.selectedCalendarType = this.constants.Broadcast;\r\n            this.selectedYear = null;\r\n            this.selectedMonth = null;\r\n            this.selectedQuarter = null;\r\n        }\r\n\r\n        this.setSelectedData();\r\n        this.updateNavigationHistory();\r\n        this.modalReference.close();\r\n    }\r\n\r\n    setSelectedData() {\r\n        this.selectedDataCloned = {\r\n            isEntireFlightPeriod: this.entireFlightPeriodSelected,\r\n            calendarType: this.selectedCalendarType,\r\n            periodMode: this.selectedPeriodMode,\r\n            year: this.selectedYear,\r\n            month: this.selectedMonth ? this.selectedMonth.text : null,\r\n            quarter: this.selectedQuarter ? this.selectedQuarter.DisplayDate : null,\r\n            startDate: this.selectedStartDate,\r\n            endDate: this.selectedEndDate,\r\n        };\r\n    }\r\n\r\n    updateNavigationHistory() {\r\n        const queryParams = this.selectedDataCloned;\r\n        this.router.navigate([], {\r\n            relativeTo: this.currentRoute,\r\n            queryParams: { quarterFilter: JSON.stringify(queryParams) },\r\n            queryParamsHandling: \"merge\",\r\n        });\r\n    }\r\n\r\n    calendarTypeSelectionChanged(calendarType: TypeOfCalendar) {\r\n        this.selectedCalendarType = calendarType;\r\n        if (this.selectedPeriodMode === this.constants.Quarter) {\r\n            if (this.selectedQuarter) {\r\n                this.selectCurrentYearAndQuarter(this.selectedCalendarType);\r\n                this.quarterSelectionChanged();\r\n            } else {\r\n                this.allYears =\r\n                    calendarType === this.constants.Broadcast\r\n                        ? cloneDeep(this.allBroadcastYears)\r\n                        : cloneDeep(this.allFiscalYears);\r\n                this.selectedYear =\r\n                    calendarType === this.constants.Broadcast\r\n                        ? cloneDeep(this.currentBroadcastYear)\r\n                        : cloneDeep(this.currentFiscalYear);\r\n                this.setQuartersOfYear(this.selectedYear);\r\n                // this.allQuartersOfYear =\r\n                //     calendarType === this.constants.Broadcast\r\n                //         ? this.yearQuarterData.BroadcastQuarterYear.filter(\r\n                //               (n) => n.Year.toString() === this.currentBroadcastYear,\r\n                //           )[0].Quarters\r\n                //         : this.yearQuarterData.FiscalQuarterYear.filter(\r\n                //               (n) => n.Year.toString() === this.currentFiscalYear,\r\n                //           )[0].Quarters;\r\n            }\r\n        } else if (this.selectedPeriodMode === this.constants.Month) {\r\n            this.allYears =\r\n                this.selectedCalendarType === this.constants.Broadcast\r\n                    ? cloneDeep(this.allBroadcastYears)\r\n                    : cloneDeep(this.allFiscalYears);\r\n            if (!this.allYears.includes(this.selectedYear)) {\r\n                this.selectedYear = this.allYears[this.allYears.length - 1];\r\n            }\r\n            this.monthSelectionChanged();\r\n        } else if (this.selectedPeriodMode === this.constants.CustomRange) {\r\n            this.setMinMaxDateForCustomRangeAndWeekCalendar();\r\n            this.setSelectedData();\r\n            this.isFilterChanged.emit(this.selectedDataCloned);\r\n        }\r\n\r\n        // Re-initialize past period when calendar type changes\r\n        if (this.showPastPeriodDropdown && this.selectedYear && this.pastPeriodCalendarData) {\r\n            this.pastSelectedYear = null;\r\n            this.pastSelectedQuarter = null;\r\n            this.pastSelectedMonth = null;\r\n            this.pastSelectedStartDate = null;\r\n            this.pastSelectedEndDate = null;\r\n            this.initPastPeriodData();\r\n        }\r\n    }\r\n\r\n    entireFlightPeriodCheckboxToggled() {\r\n        this.entireFlightPeriodSelected = !this.entireFlightPeriodSelected;\r\n        this.setMinMaxDateForCustomRangeAndWeekCalendar();\r\n        if (this.entireFlightPeriodSelected) {\r\n            this.selectedStartDate = cloneDeep(\r\n                dayjs(this.minMaxDateRangeForCalendar.startDate, \"MM/DD/YYYY\").format(\"MM/DD/YYYY\"),\r\n            );\r\n            this.selectedEndDate = cloneDeep(\r\n                dayjs(this.minMaxDateRangeForCalendar.endDate, \"MM/DD/YYYY\").format(\"MM/DD/YYYY\"),\r\n            );\r\n        } else {\r\n            this.selectedStartDate = null;\r\n            this.selectedEndDate = null;\r\n            this.allQuartersOfYear = [];\r\n            this.setPeriodSelectionMode();\r\n            this.calendarTypeSelectionChanged(this.selectedCalendarType ? this.selectedCalendarType : \"broadcast\");\r\n        }\r\n        this.setSelectedData();\r\n        this.isFilterChanged.emit(this.selectedDataCloned);\r\n    }\r\n\r\n    setPeriodSelectionMode() {\r\n        if (this.PeriodOptions?.length === 1) {\r\n            this.selectedPeriodMode = this.PeriodOptions[0];\r\n        } else {\r\n            this.selectedPeriodMode = this.constants.Quarter;\r\n        }\r\n    }\r\n\r\n    cancelClicked() {\r\n        this.selectedData = cloneDeep(this.selectedDataCloned);\r\n        this.selectedStartDate = cloneDeep(this.selectedDataCloned.startDate);\r\n        this.selectedEndDate = cloneDeep(this.selectedDataCloned.endDate);\r\n        this.selectedPeriodMode = cloneDeep(this.selectedDataCloned.periodMode);\r\n        this.selectedCalendarType = cloneDeep(this.selectedDataCloned.calendarType);\r\n        this.selectedMonth.text = cloneDeep(this.selectedDataCloned.month);\r\n        this.selectedYear = cloneDeep(this.selectedDataCloned.year);\r\n        this.selectedQuarter.DisplayDate = cloneDeep(this.selectedDataCloned.quarter);\r\n        this.entireFlightPeriodSelected = cloneDeep(this.selectedDataCloned.isEntireFlightPeriod);\r\n        this.closeModal();\r\n    }\r\n\r\n    noQuarterDataAvailable() {\r\n        this.selectedStartDate = null;\r\n        this.selectedEndDate = null;\r\n        this.selectedMonth = null;\r\n        this.selectedQuarter = null;\r\n        this.selectedYear = null;\r\n        this.allYears = null;\r\n        this.allMonths = null;\r\n        this.allQuartersOfYear = null;\r\n        if (this.selectedPeriodMode === this.constants.CustomRange) {\r\n            this.disableCustomRange = true;\r\n        }\r\n    }\r\n\r\n    setDropsownConfigurations() {\r\n        this.setYearDropdownConfig();\r\n        this.setMonthDropdownConfig();\r\n        this.setQuarterDropdownConfig();\r\n        this.setPeriodDropdownConfig();\r\n        this.setPastYearDropdownConfig();\r\n        this.setPastMonthDropdownConfig();\r\n        this.setPastQuarterDropdownConfig();\r\n        this.setWeeksCalenderConfig();\r\n    }\r\n\r\n    setWeeksCalenderConfig() {\r\n        this.weekConfig = {} as IWeekCalendar;\r\n        this.weekConfig.selectMultipleWeeks = true;\r\n        this.weekConfig.customClass = \"generic-period-week-calendar\";\r\n        this.weekConfig.maxWeeksToSelect = 13;\r\n        this.weekConfig.emitMultipleWeekObjects = false;\r\n        this.weekConfig.numberOfMonthsToEnableInPast = 0;\r\n        this.weekConfig.showAsDropdown = true;\r\n        this.weekConfig.selectCurrentWeek = false;\r\n    }\r\n\r\n    setYearDropdownConfig() {\r\n        this.yearDropdownConfig = { ...this.annaGlobalConfig.defaultSingleSelectConfig };\r\n        this.yearDropdownConfig.placeholder = \"Select Year\";\r\n    }\r\n\r\n    setMonthDropdownConfig() {\r\n        this.monthDropdownConfig = { ...this.annaGlobalConfig.defaultSingleSelectConfig };\r\n        this.monthDropdownConfig.placeholder = \"Select month\";\r\n    }\r\n\r\n    setQuarterDropdownConfig() {\r\n        this.quarterDropdownConfig = { ...this.annaGlobalConfig.defaultSingleSelectConfig };\r\n        this.quarterDropdownConfig.placeholder = \"Select quarter\";\r\n    }\r\n\r\n    setPeriodDropdownConfig() {\r\n        this.periodDropdownConfig = { ...this.annaGlobalConfig.defaultSingleSelectConfig };\r\n        this.periodDropdownConfig.placeholder = \"Select Period\";\r\n    }\r\n\r\n    setPastYearDropdownConfig() {\r\n        this.pastYearDropdownConfig = { ...this.annaGlobalConfig.defaultSingleSelectConfig };\r\n        this.pastYearDropdownConfig.placeholder = \"Select Year\";\r\n    }\r\n\r\n    setPastMonthDropdownConfig() {\r\n        this.pastMonthDropdownConfig = { ...this.annaGlobalConfig.defaultSingleSelectConfig };\r\n        this.pastMonthDropdownConfig.placeholder = \"Select month\";\r\n    }\r\n\r\n    setPastQuarterDropdownConfig() {\r\n        this.pastQuarterDropdownConfig = { ...this.annaGlobalConfig.defaultSingleSelectConfig };\r\n        this.pastQuarterDropdownConfig.placeholder = \"Select quarter\";\r\n    }\r\n\r\n    weekSelectionChanged(value: { startDate: string; endDate: string }) {\r\n        if (value) {\r\n            this.selectedStartDate = dayjs(value.startDate, \"YYYY-MM-DD\").format(\"MM/DD/YYYY\");\r\n            this.selectedEndDate = dayjs(value.endDate, \"YYYY-MM-DD\").format(\"MM/DD/YYYY\");\r\n        }\r\n        this.setSelectedData();\r\n        this.isFilterChanged.emit(this.selectedDataCloned);\r\n\r\n        // Initialize past period when week changes\r\n        if (this.showPastPeriodDropdown && this.pastPeriodCalendarData) {\r\n            this.setPastWeekForWeekCalendar();\r\n            if (this.pastSelectedStartDate && this.pastSelectedEndDate) {\r\n                this.setPastSelectedData();\r\n                this.pastPeriodFilterChanged.emit(this.pastSelectedDataCloned);\r\n            }\r\n        }\r\n    }\r\n\r\n    // Past period methods - now uses data provided by parent component\r\n    initPastPeriodData() {\r\n        if (!this.showPastPeriodDropdown || !this.pastPeriodCalendarData) {\r\n            return;\r\n        }\r\n\r\n        // For Week mode, we don't need selectedYear, so skip that check\r\n        if (this.selectedPeriodMode !== this.constants.Week && !this.selectedYear) {\r\n            return;\r\n        }\r\n\r\n        // Extract years from past period calendar data provided by parent\r\n        const sourceYearQuarterData =\r\n            this.selectedCalendarType === this.constants.Broadcast\r\n                ? this.pastPeriodCalendarData.BroadcastQuarterYear\r\n                : this.pastPeriodCalendarData.FiscalQuarterYear;\r\n\r\n        // Extract all available years from the provided past period data\r\n        this.pastAllYears = sourceYearQuarterData?.map((yearQuarter) => yearQuarter.Year.toString()) || [];\r\n\r\n        // Initialize arrays if empty\r\n        if (!this.pastAllQuartersOfYear) {\r\n            this.pastAllQuartersOfYear = [];\r\n        }\r\n        if (!this.pastAllMonths) {\r\n            this.pastAllMonths = [];\r\n        }\r\n\r\n        // Pre-populate from selectedPastPeriodData if provided\r\n        if (this.selectedPastPeriodData) {\r\n            if (this.selectedPastPeriodData.year) {\r\n                this.pastSelectedYear = this.selectedPastPeriodData.year;\r\n            }\r\n            if (this.selectedPastPeriodData.startDate) {\r\n                this.pastSelectedStartDate = this.selectedPastPeriodData.startDate;\r\n            }\r\n            if (this.selectedPastPeriodData.endDate) {\r\n                this.pastSelectedEndDate = this.selectedPastPeriodData.endDate;\r\n            }\r\n        }\r\n\r\n        // Set default past year to first available year if not already selected\r\n        if (this.pastAllYears.length > 0 && !this.pastSelectedYear) {\r\n            this.pastSelectedYear = this.pastAllYears[0];\r\n        }\r\n\r\n        // Initialize based on period mode\r\n        if (this.selectedPeriodMode === this.constants.Week) {\r\n            // For Week mode, use dates directly if provided\r\n            if (this.selectedPastPeriodData?.startDate && this.selectedPastPeriodData?.endDate) {\r\n                this.pastSelectedStartDate = this.selectedPastPeriodData.startDate;\r\n                this.pastSelectedEndDate = this.selectedPastPeriodData.endDate;\r\n            } else {\r\n                this.setPastWeekForWeekCalendar();\r\n            }\r\n        } else if (this.pastSelectedYear) {\r\n            this.setPastQuartersOfYear(this.pastSelectedYear);\r\n\r\n            // Pre-populate quarter and month if selectedPastPeriodData is provided\r\n            if (this.selectedPastPeriodData) {\r\n                // Always populate months first so we can find the month if needed\r\n                this.changePastListOfMonthInDropdown();\r\n\r\n                // Try to find quarter from DisplayDate first\r\n                if (this.selectedPastPeriodData.quarter && this.pastAllQuartersOfYear.length > 0) {\r\n                    this.pastSelectedQuarter =\r\n                        this.pastAllQuartersOfYear.find((q) => q.DisplayDate === this.selectedPastPeriodData.quarter) ||\r\n                        null;\r\n                }\r\n                // If quarter not found by DisplayDate, try to find it from dates\r\n                if (\r\n                    !this.pastSelectedQuarter &&\r\n                    this.selectedPastPeriodData.startDate &&\r\n                    this.pastAllQuartersOfYear.length > 0\r\n                ) {\r\n                    const startDate = dayjs(this.selectedPastPeriodData.startDate, \"MM/DD/YYYY\");\r\n                    this.pastSelectedQuarter =\r\n                        this.pastAllQuartersOfYear.find(\r\n                            (q) =>\r\n                                startDate.isSameOrAfter(dayjs(q.StartDate, \"YYYY-MM-DD\"), \"day\") &&\r\n                                startDate.isSameOrBefore(dayjs(q.EndDate, \"YYYY-MM-DD\"), \"day\"),\r\n                        ) || null;\r\n                }\r\n\r\n                // Set month if provided\r\n                if (this.selectedPastPeriodData.month && this.pastAllMonths.length > 0) {\r\n                    this.pastSelectedMonth =\r\n                        this.pastAllMonths.find((m) => m.text === this.selectedPastPeriodData.month) || null;\r\n                }\r\n                // If month not found by name but we have dates, try to derive month from startDate\r\n                if (\r\n                    !this.pastSelectedMonth &&\r\n                    this.selectedPastPeriodData.startDate &&\r\n                    this.pastAllMonths.length > 0 &&\r\n                    this.selectedPeriodMode === this.constants.Month\r\n                ) {\r\n                    const startDate = dayjs(this.selectedPastPeriodData.startDate, \"MM/DD/YYYY\");\r\n                    const monthName = startDate.format(\"MMMM\");\r\n                    this.pastSelectedMonth = this.pastAllMonths.find((m) => m.text === monthName) || null;\r\n                }\r\n\r\n                // If dates are provided, use them (they override quarter/month selections)\r\n                if (this.selectedPastPeriodData.startDate && this.selectedPastPeriodData.endDate) {\r\n                    this.pastSelectedStartDate = this.selectedPastPeriodData.startDate;\r\n                    this.pastSelectedEndDate = this.selectedPastPeriodData.endDate;\r\n                } else if (this.pastSelectedQuarter) {\r\n                    // If dates not provided but quarter is selected, set dates from quarter\r\n                    this.pastSelectedStartDate = dayjs(this.pastSelectedQuarter.StartDate, \"YYYY-MM-DD\").format(\r\n                        \"MM/DD/YYYY\",\r\n                    );\r\n                    this.pastSelectedEndDate = dayjs(this.pastSelectedQuarter.EndDate, \"YYYY-MM-DD\").format(\r\n                        \"MM/DD/YYYY\",\r\n                    );\r\n                } else if (this.pastSelectedMonth && this.selectedPeriodMode === this.constants.Month) {\r\n                    // If dates not provided but month is selected, set dates from month\r\n                    let dates: { startDate: string; endDate: string } = { startDate: \"\", endDate: \"\" };\r\n                    if (this.selectedCalendarType === this.constants.Broadcast) {\r\n                        dates = this.dpService.getDateForBroadcastMonth(\r\n                            this.pastSelectedYear,\r\n                            this.pastSelectedMonth.id,\r\n                        );\r\n                    } else {\r\n                        dates = this.dpService.getDateForFiscalMonth(this.pastSelectedYear, this.pastSelectedMonth.id);\r\n                    }\r\n                    this.pastSelectedStartDate = dayjs(dates.startDate).format(\"MM/DD/YYYY\");\r\n                    this.pastSelectedEndDate = dayjs(dates.endDate).format(\"MM/DD/YYYY\");\r\n                }\r\n            } else {\r\n                this.changePastListOfMonthInDropdown();\r\n            }\r\n        }\r\n    }\r\n\r\n    setPastQuartersOfYear(year: string) {\r\n        if (!this.pastPeriodCalendarData) {\r\n            this.pastAllQuartersOfYear = [];\r\n            return;\r\n        }\r\n\r\n        // Get quarters from past period calendar data provided by parent\r\n        const yearQuarterIndex =\r\n            this.selectedCalendarType === this.constants.Broadcast\r\n                ? this.pastPeriodCalendarData.BroadcastQuarterYear.findIndex((n) => n.Year.toString() === year)\r\n                : this.pastPeriodCalendarData.FiscalQuarterYear.findIndex((n) => n.Year.toString() === year);\r\n\r\n        if (yearQuarterIndex === -1) {\r\n            this.pastAllQuartersOfYear = [];\r\n            return;\r\n        }\r\n\r\n        const quartersOfYear =\r\n            this.selectedCalendarType === this.constants.Broadcast\r\n                ? this.pastPeriodCalendarData.BroadcastQuarterYear[yearQuarterIndex]?.Quarters\r\n                : this.pastPeriodCalendarData.FiscalQuarterYear[yearQuarterIndex]?.Quarters;\r\n\r\n        if (quartersOfYear && quartersOfYear.length > 0) {\r\n            // Use quarters provided by parent (already filtered based on business rules)\r\n            this.pastAllQuartersOfYear = cloneDeep(quartersOfYear);\r\n\r\n            // Add \"All\" option if needed\r\n            if (\r\n                this.showAllSelectionInDropdown &&\r\n                this.pastAllQuartersOfYear[0]?.DisplayDate !== \"All\" &&\r\n                this.pastAllQuartersOfYear?.length > 1\r\n            ) {\r\n                this.pastAllQuartersOfYear.unshift({\r\n                    DisplayDate: \"All\",\r\n                    StartDate: this.pastAllQuartersOfYear[0]?.StartDate,\r\n                    EndDate: this.pastAllQuartersOfYear[this.pastAllQuartersOfYear.length - 1]?.EndDate,\r\n                    IsCurrentQuarter: false,\r\n                });\r\n            }\r\n        } else {\r\n            this.pastAllQuartersOfYear = [];\r\n        }\r\n    }\r\n\r\n    changePastListOfMonthInDropdown() {\r\n        if (!this.pastSelectedYear) {\r\n            this.pastAllMonths = [];\r\n            return;\r\n        }\r\n\r\n        this.setPastQuartersOfYear(this.pastSelectedYear);\r\n        const allQuarterYearLength = this.pastAllQuartersOfYear?.length || 0;\r\n\r\n        // For Month mode, always populate months if year is selected (regardless of quarters)\r\n        // For other modes, only populate if quarters exist and toShowAllMonthsOfYear is false\r\n        const shouldPopulateMonths =\r\n            this.selectedPeriodMode === this.constants.Month\r\n                ? this.pastSelectedYear != null\r\n                : allQuarterYearLength > 0 && !this.toShowAllMonthsOfYear;\r\n\r\n        if (shouldPopulateMonths) {\r\n            this.pastAllMonths = this.filterService.getAllMonths();\r\n            if (this.showAllSelectionInDropdown) {\r\n                this.pastAllMonths.unshift({ id: \"0\", text: \"All\" });\r\n            }\r\n\r\n            // If no quarters found but in Month mode, show all months (will be filtered by date range if needed)\r\n            if (allQuarterYearLength === 0 && this.selectedPeriodMode === this.constants.Month) {\r\n                // Don't filter months - show all available months\r\n                return;\r\n            }\r\n\r\n            if (this.considerMinMaxDateRangeForCalendar && allQuarterYearLength > 0) {\r\n                const firstQuarter = this.pastAllQuartersOfYear[0];\r\n                const lastQuarter = this.pastAllQuartersOfYear[allQuarterYearLength - 1];\r\n\r\n                const firstQuarterStartDate = dayjs(firstQuarter.StartDate, \"YYYY-MM-DD\").format(\"MM/DD/YYYY\");\r\n                const lastQuarterEndDate = dayjs(lastQuarter.EndDate, \"YYYY-MM-DD\").format(\"MM/DD/YYYY\");\r\n\r\n                // For past periods, use quarter dates directly without constraining to minMaxDateRangeForCalendar\r\n                // since past period selection should display all historical data regardless of the current date range filter\r\n                const minFirstQuarterDate = firstQuarterStartDate;\r\n                const maxLastQuarterDate = lastQuarterEndDate;\r\n\r\n                let minFirstQuarterMonth = dayjs(minFirstQuarterDate).format(\"MMMM\");\r\n                let maxLastQuarterMonth = dayjs(maxLastQuarterDate).format(\"MMMM\");\r\n\r\n                if (this.selectedCalendarType === this.constants.Broadcast) {\r\n                    const firstMonthBroadcastDates = this.dpService.getDateForBroadcastMonth(\r\n                        this.pastSelectedYear,\r\n                        dayjs(minFirstQuarterDate).format(\"M\"),\r\n                    );\r\n                    const lastMonthBroadcastDates = this.dpService.getDateForBroadcastMonth(\r\n                        this.pastSelectedYear,\r\n                        dayjs(maxLastQuarterDate).format(\"M\"),\r\n                    );\r\n                    if (dayjs(firstMonthBroadcastDates.endDate).isBefore(minFirstQuarterDate))\r\n                        minFirstQuarterMonth = dayjs(minFirstQuarterDate).add(1, \"M\").format(\"MMMM\");\r\n                    if (dayjs(lastMonthBroadcastDates.endDate).isBefore(maxLastQuarterDate))\r\n                        maxLastQuarterMonth = dayjs(maxLastQuarterDate).add(1, \"M\").format(\"MMMM\");\r\n                }\r\n\r\n                const lastQuarteMonthIndex = this.pastAllMonths.findIndex((x) => x.text === maxLastQuarterMonth);\r\n                let firstQuarterMonthIndex = this.pastAllMonths.findIndex((x) => x.text === minFirstQuarterMonth);\r\n\r\n                firstQuarterMonthIndex = firstQuarterMonthIndex >= lastQuarteMonthIndex ? 0 : firstQuarterMonthIndex;\r\n\r\n                this.pastAllMonths = this.pastAllMonths.slice(firstQuarterMonthIndex, lastQuarteMonthIndex + 1);\r\n            } else {\r\n                let firstQuarterMonthIndex = 0;\r\n\r\n                const lastQuarter = this.pastAllQuartersOfYear[allQuarterYearLength - 1];\r\n                const lastQuarterMonth = dayjs(lastQuarter.EndDate).format(\"MMMM\");\r\n\r\n                const lastQuarteMonthIndex = this.pastAllMonths.findIndex((x) => x.text === lastQuarterMonth);\r\n\r\n                if (this.considerFirstQuarterForMonthCreation) {\r\n                    const firstQuarter = this.pastAllQuartersOfYear[0];\r\n                    const firstQuarterMonth = dayjs(firstQuarter.StartDate).format(\"MMMM\");\r\n                    const firstQuarterYear = dayjs(firstQuarter.StartDate).format(\"YYYY\");\r\n\r\n                    const lastQuarterYear = dayjs(lastQuarter.EndDate).format(\"YYYY\");\r\n                    firstQuarterMonthIndex = this.pastAllMonths.findIndex((x) => x.text === firstQuarterMonth);\r\n\r\n                    firstQuarterMonthIndex =\r\n                        firstQuarterMonthIndex > lastQuarteMonthIndex ||\r\n                        (firstQuarterMonthIndex === lastQuarteMonthIndex && firstQuarterYear !== lastQuarterYear)\r\n                            ? 0\r\n                            : firstQuarterMonthIndex;\r\n                }\r\n\r\n                this.pastAllMonths = this.pastAllMonths.slice(firstQuarterMonthIndex, lastQuarteMonthIndex + 1);\r\n            }\r\n        }\r\n    }\r\n\r\n    pastYearSelectionChanged(selectedItem?: any) {\r\n        if (selectedItem) {\r\n            this.pastSelectedYear = cloneDeep(selectedItem);\r\n        }\r\n        if (this.selectedPeriodMode === this.constants.Quarter) {\r\n            this.setPastQuartersOfYear(this.pastSelectedYear);\r\n            this.pastSelectedQuarter = null;\r\n        } else if (this.selectedPeriodMode === this.constants.Month) {\r\n            this.pastSelectedMonth = null;\r\n        } else if (this.selectedPeriodMode === this.constants.Week) {\r\n            this.setPastWeekForWeekCalendar();\r\n        }\r\n        this.pastSelectedStartDate = null;\r\n        this.pastSelectedEndDate = null;\r\n        this.changePastListOfMonthInDropdown();\r\n        this.setPastSelectedData();\r\n        this.pastPeriodFilterChanged.emit(this.pastSelectedDataCloned);\r\n    }\r\n\r\n    pastQuarterSelectionChanged(selectedItem?: any) {\r\n        if (selectedItem) {\r\n            this.pastSelectedQuarter = cloneDeep(selectedItem);\r\n        }\r\n        if (this.pastSelectedQuarter && this.pastSelectedQuarter.DisplayDate === \"All\") {\r\n            this.pastSelectedStartDate = dayjs(this.pastAllQuartersOfYear[0].StartDate, \"YYYY-MM-DD\").format(\r\n                \"MM/DD/YYYY\",\r\n            );\r\n            this.pastSelectedEndDate = dayjs(\r\n                this.pastAllQuartersOfYear[this.pastAllQuartersOfYear.length - 1].EndDate,\r\n                \"YYYY-MM-DD\",\r\n            ).format(\"MM/DD/YYYY\");\r\n        } else if (this.pastSelectedQuarter) {\r\n            this.pastSelectedStartDate = dayjs(this.pastSelectedQuarter.StartDate, \"YYYY-MM-DD\").format(\"MM/DD/YYYY\");\r\n            this.pastSelectedEndDate = dayjs(this.pastSelectedQuarter.EndDate, \"YYYY-MM-DD\").format(\"MM/DD/YYYY\");\r\n        } else {\r\n            this.pastSelectedQuarter = null;\r\n            this.pastSelectedStartDate = null;\r\n            this.pastSelectedEndDate = null;\r\n        }\r\n        this.setPastSelectedData();\r\n        this.pastPeriodFilterChanged.emit(this.pastSelectedDataCloned);\r\n    }\r\n\r\n    pastMonthSelectionChanged(selectedItem?: any) {\r\n        if (selectedItem) {\r\n            this.pastSelectedMonth = cloneDeep(selectedItem);\r\n        }\r\n        let dates: { startDate: string; endDate: string } = { startDate: \"\", endDate: \"\" };\r\n        if (this.selectedCalendarType === this.constants.Broadcast) {\r\n            if (this.pastSelectedMonth?.text === \"All\") {\r\n                dates.startDate = this.dpService.getDateForBroadcastMonth(\r\n                    this.pastSelectedYear,\r\n                    this.pastAllMonths[1].id,\r\n                ).startDate;\r\n                dates.endDate = this.dpService.getDateForBroadcastMonth(\r\n                    this.pastSelectedYear,\r\n                    this.pastAllMonths[this.pastAllMonths.length - 1].id,\r\n                ).endDate;\r\n            } else {\r\n                dates = this.dpService.getDateForBroadcastMonth(this.pastSelectedYear, this.pastSelectedMonth.id);\r\n            }\r\n        } else if (this.pastSelectedMonth?.text === \"All\") {\r\n            const startDate: string = `${this.pastSelectedYear}-${this.pastAllMonths[1].id}-01`;\r\n            const endDate: string = `${this.pastSelectedYear}-${this.pastAllMonths[this.pastAllMonths.length - 1].id}-01`;\r\n            dates.startDate = dayjs(startDate, \"YYYY-MM-DD\").startOf(\"month\").format(\"YYYY-MM-DD\");\r\n            dates.endDate = dayjs(endDate, \"YYYY-MM-DD\").endOf(\"month\").format(\"YYYY-MM-DD\");\r\n        } else {\r\n            dates = this.dpService.getDateForFiscalMonth(this.pastSelectedYear, this.pastSelectedMonth.id);\r\n        }\r\n        this.pastSelectedStartDate = dayjs(dates.startDate).format(\"MM/DD/YYYY\");\r\n        this.pastSelectedEndDate = dayjs(dates.endDate).format(\"MM/DD/YYYY\");\r\n        this.setPastSelectedData();\r\n        this.pastPeriodFilterChanged.emit(this.pastSelectedDataCloned);\r\n    }\r\n\r\n    setPastSelectedData() {\r\n        this.pastSelectedDataCloned = {\r\n            isEntireFlightPeriod: false,\r\n            calendarType: this.selectedCalendarType,\r\n            periodMode: this.selectedPeriodMode,\r\n            year: this.pastSelectedYear,\r\n            month: this.pastSelectedMonth ? this.pastSelectedMonth.text : null,\r\n            quarter: this.pastSelectedQuarter ? this.pastSelectedQuarter.DisplayDate : null,\r\n            startDate: this.pastSelectedStartDate,\r\n            endDate: this.pastSelectedEndDate,\r\n        };\r\n    }\r\n\r\n    setPastWeekForWeekCalendar() {\r\n        if (!this.selectedStartDate || !this.selectedEndDate) {\r\n            return;\r\n        }\r\n\r\n        // Calculate the same week from the past year (1 year ago)\r\n        const selectedStartDate = dayjs(this.selectedStartDate, \"MM/DD/YYYY\");\r\n\r\n        // Subtract 1 year from the selected start date\r\n        const pastStartDate = selectedStartDate.subtract(1, \"year\");\r\n\r\n        // Get broadcast week for the past date\r\n        const pastWeekBroadcastStartEndDate = this.annaDateTimeFormatService.getBroadcastWeek(\r\n            pastStartDate.format(\"MM/DD/YYYY\"),\r\n            \"MM/DD/YYYY\",\r\n        );\r\n\r\n        const weekStartDate = this.annaDateTimeFormatService.convertToNgbDateStandardFormat(\r\n            pastWeekBroadcastStartEndDate.start.format(\"MM/DD/YYYY\"),\r\n        );\r\n        const weekEndDate = this.annaDateTimeFormatService.convertToNgbDateStandardFormat(\r\n            pastWeekBroadcastStartEndDate.end.format(\"MM/DD/YYYY\"),\r\n        );\r\n\r\n        this.pastCalendarFromDate = new NgbDate(weekStartDate.year, weekStartDate.month, weekStartDate.day);\r\n        this.pastCalendarToDate = new NgbDate(weekEndDate.year, weekEndDate.month, weekEndDate.day);\r\n\r\n        this.pastSelectedStartDate = pastWeekBroadcastStartEndDate.start.format(\"MM/DD/YYYY\");\r\n        this.pastSelectedEndDate = pastWeekBroadcastStartEndDate.end.format(\"MM/DD/YYYY\");\r\n    }\r\n\r\n    pastWeekSelectionChanged(value: { startDate: string; endDate: string }) {\r\n        if (value) {\r\n            this.pastSelectedStartDate = dayjs(value.startDate, \"YYYY-MM-DD\").format(\"MM/DD/YYYY\");\r\n            this.pastSelectedEndDate = dayjs(value.endDate, \"YYYY-MM-DD\").format(\"MM/DD/YYYY\");\r\n        }\r\n        this.setPastSelectedData();\r\n        this.pastPeriodFilterChanged.emit(this.pastSelectedDataCloned);\r\n    }\r\n}\r\n","<div class=\"logout-modal\">\r\n    <label\r\n        class=\"flight-period-label\"\r\n        *ngIf=\"showEntireFlightPeriodSelection\"\r\n        (click)=\"entireFlightPeriodCheckboxToggled()\"\r\n    >\r\n        <i\r\n            class=\"mi mdi-check-box blue-checkbox checked-option\"\r\n            *ngIf=\"entireFlightPeriodSelected\"\r\n        ></i>\r\n        <i\r\n            class=\"mi mdi-check-box-outline-blank blue-checkbox unchecked-option\"\r\n            *ngIf=\"!entireFlightPeriodSelected\"\r\n        ></i>\r\n        {{ EntireRangeSelectionMessage }}\r\n    </label>\r\n\r\n    <div *ngIf=\"showCalendarTypeRadioBtn\">\r\n        <anna-design-radio-buttons\r\n            [config]=\"calendarTypeConfig\"\r\n            [selectedValue]=\"selectedCalendarType\"\r\n            (selectionChanged)=\"calendarTypeSelectionChanged($event)\"\r\n            [disabled]=\"entireFlightPeriodSelected || disablePeriodSelection\"\r\n            class=\"period-select-modal-radio\"\r\n        ></anna-design-radio-buttons>\r\n    </div>\r\n\r\n    <ng-container *ngIf=\"toShowAllPeriodMode\">\r\n        <p class=\"dropdown-label\">Period</p>\r\n        <anna-design-single-select\r\n            [items]=\"PeriodOptions\"\r\n            [selectedItem]=\"selectedPeriodMode\"\r\n            [config]=\"periodDropdownConfig\"\r\n            [disabled]=\"entireFlightPeriodSelected || disablePeriodSelection\"\r\n            (valueChanged)=\"periodSelectionChanged($event)\"\r\n        >\r\n        </anna-design-single-select>\r\n    </ng-container>\r\n    <div class=\"year-quarter-dropdowns\">\r\n        <ng-container *ngIf=\"selectedPeriodMode === constants.Month || selectedPeriodMode === constants.Quarter\">\r\n            <div class=\"year-dropdown\">\r\n                <p class=\"dropdown-label\">\r\n                    @if (showPastPeriodDropdown) {\r\n                        Future\r\n                    }\r\n                    Year\r\n                </p>\r\n                <anna-design-single-select\r\n                    [items]=\"allYears\"\r\n                    [selectedItem]=\"selectedYear\"\r\n                    [config]=\"yearDropdownConfig\"\r\n                    [disabled]=\"entireFlightPeriodSelected || disablePeriodSelection\"\r\n                    (valueChanged)=\"yearSelectionChanged($event)\"\r\n                >\r\n                </anna-design-single-select>\r\n            </div>\r\n        </ng-container>\r\n        <ng-container *ngIf=\"selectedPeriodMode === constants.Month\">\r\n            <div>\r\n                <p class=\"dropdown-label\">\r\n                    @if (showPastPeriodDropdown) {\r\n                        Future\r\n                    }\r\n                    {{ constants.Month }}\r\n                </p>\r\n                <anna-design-single-select\r\n                    [items]=\"allMonths\"\r\n                    [selectedItem]=\"selectedMonth\"\r\n                    [config]=\"monthDropdownConfig\"\r\n                    [disabled]=\"entireFlightPeriodSelected || disablePeriodSelection\"\r\n                    (valueChanged)=\"monthSelectionChanged($event)\"\r\n                >\r\n                </anna-design-single-select>\r\n            </div>\r\n        </ng-container>\r\n\r\n        <ng-container *ngIf=\"selectedPeriodMode === constants.Quarter\">\r\n            <div>\r\n                <p class=\"dropdown-label\">\r\n                    @if (showPastPeriodDropdown) {\r\n                        Future\r\n                    }\r\n                    {{ constants.Quarter }}\r\n                </p>\r\n                <anna-design-single-select\r\n                    [items]=\"allQuartersOfYear\"\r\n                    [keyToUseForDisplay]=\"'DisplayDate'\"\r\n                    [keyToUseForCheckingSelectedItem]=\"'DisplayDate'\"\r\n                    [selectedItem]=\"selectedQuarter\"\r\n                    [config]=\"quarterDropdownConfig\"\r\n                    [disabled]=\"entireFlightPeriodSelected || disablePeriodSelection\"\r\n                    (valueChanged)=\"quarterSelectionChanged($event)\"\r\n                >\r\n                </anna-design-single-select>\r\n            </div>\r\n        </ng-container>\r\n    </div>\r\n\r\n    <ng-container\r\n        *ngIf=\"\r\n            showPastPeriodDropdown &&\r\n            (selectedPeriodMode === constants.Month ||\r\n                selectedPeriodMode === constants.Quarter ||\r\n                selectedPeriodMode === constants.Week)\r\n        \"\r\n    >\r\n        <div class=\"year-quarter-dropdowns past-period-dropdowns\">\r\n            <ng-container *ngIf=\"selectedPeriodMode === constants.Month || selectedPeriodMode === constants.Quarter\">\r\n                <div class=\"year-dropdown\">\r\n                    <p class=\"dropdown-label\">\r\n                        @if (showPastPeriodDropdown) {\r\n                            Past\r\n                        }\r\n                        Year\r\n                    </p>\r\n                    <anna-design-single-select\r\n                        [items]=\"pastAllYears\"\r\n                        [selectedItem]=\"pastSelectedYear\"\r\n                        [config]=\"pastYearDropdownConfig\"\r\n                        [disabled]=\"entireFlightPeriodSelected || disablePeriodSelection\"\r\n                        (valueChanged)=\"pastYearSelectionChanged($event)\"\r\n                    >\r\n                    </anna-design-single-select>\r\n                </div>\r\n            </ng-container>\r\n            <ng-container *ngIf=\"selectedPeriodMode === constants.Month\">\r\n                <div>\r\n                    <p class=\"dropdown-label\">\r\n                        @if (showPastPeriodDropdown) {\r\n                            Past\r\n                        }\r\n                        {{ constants.Month }}\r\n                    </p>\r\n                    <anna-design-single-select\r\n                        [items]=\"pastAllMonths\"\r\n                        [selectedItem]=\"pastSelectedMonth\"\r\n                        [config]=\"pastMonthDropdownConfig\"\r\n                        [disabled]=\"entireFlightPeriodSelected || disablePeriodSelection\"\r\n                        (valueChanged)=\"pastMonthSelectionChanged($event)\"\r\n                    >\r\n                    </anna-design-single-select>\r\n                </div>\r\n            </ng-container>\r\n\r\n            <ng-container *ngIf=\"selectedPeriodMode === constants.Quarter\">\r\n                <div>\r\n                    <p class=\"dropdown-label\">\r\n                        @if (showPastPeriodDropdown) {\r\n                            Past\r\n                        }\r\n                        {{ constants.Quarter }}\r\n                    </p>\r\n                    <anna-design-single-select\r\n                        [items]=\"pastAllQuartersOfYear\"\r\n                        [keyToUseForDisplay]=\"'DisplayDate'\"\r\n                        [keyToUseForCheckingSelectedItem]=\"'DisplayDate'\"\r\n                        [selectedItem]=\"pastSelectedQuarter\"\r\n                        [config]=\"pastQuarterDropdownConfig\"\r\n                        [disabled]=\"entireFlightPeriodSelected || disablePeriodSelection\"\r\n                        (valueChanged)=\"pastQuarterSelectionChanged($event)\"\r\n                    >\r\n                    </anna-design-single-select>\r\n                </div>\r\n            </ng-container>\r\n        </div>\r\n    </ng-container>\r\n\r\n    <ng-container *ngIf=\"selectedPeriodMode === constants.CustomRange\">\r\n        <div class=\"custom-range-dropdowns\">\r\n            <div>\r\n                <p class=\"dropdown-label\">Start date</p>\r\n                <anna-design-custom-date-picker\r\n                    [calendarType]=\"selectedCalendarType\"\r\n                    [maxDate]=\"capmaignEndDate\"\r\n                    [minDate]=\"capmaignStartDate\"\r\n                    [maxYear]=\"capmaignEndDate?.year\"\r\n                    [minYear]=\"capmaignStartDate?.year\"\r\n                    [selectedDate]=\"selectedStartDate\"\r\n                    [disabled]=\"entireFlightPeriodSelected || disableCustomRange || disablePeriodSelection\"\r\n                    [startDateConsideringFactor]=\"startDateConsideringFactor\"\r\n                    [allYearsWithData]=\"selectedCalendarType === 'broadcast' ? allBroadcastYears : allFiscalYears\"\r\n                    (dateSelect)=\"customRangeDPStartDateSelected($event)\"\r\n                >\r\n                </anna-design-custom-date-picker>\r\n            </div>\r\n            <div>\r\n                <p class=\"dropdown-label\">End date</p>\r\n                <anna-design-custom-date-picker\r\n                    [calendarType]=\"selectedCalendarType\"\r\n                    [maxDate]=\"capmaignEndDate\"\r\n                    [minDate]=\"minEndDate\"\r\n                    [maxYear]=\"capmaignEndDate?.year\"\r\n                    [minYear]=\"minEndDate?.year\"\r\n                    [selectedDate]=\"selectedEndDate\"\r\n                    [startDateConsideringFactor]=\"startDateConsideringFactor\"\r\n                    [disabled]=\"entireFlightPeriodSelected || disableCustomRange || disablePeriodSelection\"\r\n                    [allYearsWithData]=\"selectedCalendarType === 'broadcast' ? allBroadcastYears : allFiscalYears\"\r\n                    (dateSelect)=\"customRangeDPEndDateSelected($event)\"\r\n                >\r\n                </anna-design-custom-date-picker>\r\n            </div>\r\n        </div>\r\n    </ng-container>\r\n\r\n    <ng-container *ngIf=\"selectedPeriodMode === constants.Week\">\r\n        <div class=\"week-dropdowns\">\r\n            <div>\r\n                <p class=\"dropdown-label\">\r\n                    Select\r\n                    @if (showPastPeriodDropdown) {\r\n                        Future\r\n                    }\r\n                    Weeks\r\n                    <i\r\n                        class=\"mi mdi-info-outline week-info-icon\"\r\n                        #t=\"ngbTooltip\"\r\n                        [ngbTooltip]=\"WeekToolTip\"\r\n                        placement=\"bottom left auto\"\r\n                        tooltipClass=\"custom-tooltip week-tooltip\"\r\n                    >\r\n                    </i>\r\n                </p>\r\n\r\n                <anna-design-week-calendar\r\n                    class=\"generic-period-week\"\r\n                    *ngIf=\"weekConfig\"\r\n                    [config]=\"weekConfig\"\r\n                    [selectedFromDate]=\"calendarFromDate\"\r\n                    [selectedEndDate]=\"calendarToDate\"\r\n                    [timezone]=\"timezone\"\r\n                    (applyWeekCalendarChanges)=\"weekSelectionChanged($event)\"\r\n                    [noOfMonthsQuarterYearToEnableInPast]=\"weekCalenderDaysToEnableInPast\"\r\n                    [noOfMonthsQuarterYearToEnableInFuture]=\"weekCalenderDaysToEnableInFuture\"\r\n                    [unitToEnableForMaxDate]=\"'days'\"\r\n                    [unitToEnableForMinDate]=\"'days'\"\r\n                >\r\n                </anna-design-week-calendar>\r\n            </div>\r\n        </div>\r\n    </ng-container>\r\n\r\n    <ng-container *ngIf=\"showPastPeriodDropdown && selectedPeriodMode === constants.Week\">\r\n        <div class=\"week-dropdowns past-period-dropdowns\">\r\n            <div>\r\n                <p class=\"dropdown-label\">\r\n                    Select Past Weeks\r\n                    <i\r\n                        class=\"mi mdi-info-outline week-info-icon\"\r\n                        #t=\"ngbTooltip\"\r\n                        [ngbTooltip]=\"WeekToolTip\"\r\n                        placement=\"bottom left auto\"\r\n                        tooltipClass=\"custom-tooltip week-tooltip\"\r\n                    >\r\n                    </i>\r\n                </p>\r\n                <anna-design-week-calendar\r\n                    class=\"generic-period-week\"\r\n                    [config]=\"weekConfig\"\r\n                    [autoSelectDays]=\"autoSelectDays\"\r\n                    [selectedFromDate]=\"pastCalendarFromDate\"\r\n                    [selectedEndDate]=\"pastCalendarToDate\"\r\n                    [timezone]=\"timezone\"\r\n                    (applyWeekCalendarChanges)=\"pastWeekSelectionChanged($event)\"\r\n                    [noOfMonthsQuarterYearToEnableInPast]=\"pastPeriodWeekCalenderDaysToEnableInPast\"\r\n                    [noOfMonthsQuarterYearToEnableInFuture]=\"pastPeriodWeekCalenderDaysToEnableInFuture\"\r\n                    [unitToEnableForMaxDate]=\"'days'\"\r\n                    [unitToEnableForMinDate]=\"'days'\"\r\n                >\r\n                </anna-design-week-calendar>\r\n            </div>\r\n        </div>\r\n    </ng-container>\r\n</div>\r\n\r\n<ng-template #WeekToolTip> Maximum of 13 weeks can be selected. </ng-template>\r\n","import { Injectable } from \"@angular/core\";\r\n// eslint-disable-next-line import/no-extraneous-dependencies\r\nimport { map } from \"lodash-es\";\r\n\r\nimport { MultiSelectIdText } from \"../../globals/global.model\";\r\n\r\n@Injectable({\r\n    providedIn: \"root\",\r\n})\r\nexport class MultiSelectDropdownService {\r\n    resetMultiSelect(selectedItems: MultiSelectIdText[], items: MultiSelectIdText[]) {\r\n        const selectedIdsSet = new Set(map(selectedItems, \"id\"));\r\n        items.forEach((item) => {\r\n            item.isSelected = selectedIdsSet.has(item.id);\r\n        });\r\n    }\r\n\r\n    getTextFromSelectedFilters(data: MultiSelectIdText[], originalData: MultiSelectIdText[]) {\r\n        if (data) {\r\n            if (originalData.length === data.length) {\r\n                return `All (${originalData.length})`;\r\n            }\r\n            if (data.length === 1) {\r\n                return `${data[0].text}`;\r\n            }\r\n            if (data.length > 1 && data[0].text === \"-\") {\r\n                return `${data[1].text} + ${data.length - 1}`;\r\n            }\r\n            if (data.length > 1 && data[0].text !== \"-\") {\r\n                return `${data[0].text} + ${data.length - 1}`;\r\n            }\r\n        } else {\r\n            return \"-\";\r\n        }\r\n        return \"-\";\r\n    }\r\n}\r\n","/* eslint-disable import/no-extraneous-dependencies */\r\nimport { CdkFixedSizeVirtualScroll, CdkVirtualForOf, CdkVirtualScrollViewport } from \"@angular/cdk/scrolling\";\r\nimport { NgClass, NgIf, NgTemplateOutlet } from \"@angular/common\";\r\nimport {\r\n    ChangeDetectionStrategy,\r\n    Component,\r\n    ElementRef,\r\n    EventEmitter,\r\n    Input,\r\n    OnChanges,\r\n    OnInit,\r\n    Output,\r\n    SimpleChanges,\r\n    ViewChild,\r\n} from \"@angular/core\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { MatMenuModule, MatMenuTrigger } from \"@angular/material/menu\";\r\nimport {\r\n    AnnaCoreModule,\r\n    AnnaFilterSearchedTextPipe,\r\n    AnnaGlobalConfigService,\r\n    ICustomMultiSelect,\r\n} from \"@annalib/anna-core\";\r\nimport { cloneDeep, isEqual } from \"lodash-es\";\r\n\r\nimport { MultiSelectIdText } from \"../globals/global.model\";\r\nimport { MultiSelectDropdownService } from \"./services/multi-select.service\";\r\n\r\n@Component({\r\n    selector: \"anna-design-multi-select\",\r\n    templateUrl: \"./multi-select.component.html\",\r\n    styleUrls: [\"./multi-select.component.scss\"],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    imports: [\r\n        NgClass,\r\n        MatMenuModule,\r\n        NgIf,\r\n        AnnaCoreModule,\r\n        FormsModule,\r\n        CdkVirtualScrollViewport,\r\n        CdkFixedSizeVirtualScroll,\r\n        CdkVirtualForOf,\r\n        NgTemplateOutlet,\r\n        AnnaFilterSearchedTextPipe\r\n    ],\r\n    standalone: true\r\n})\r\nexport class MultiSelectComponent implements OnInit, OnChanges {\r\n    @Input({ required: true }) items: MultiSelectIdText[];\r\n    @Input() loading: boolean = false;\r\n    @Input() hideOptionsEnabled: boolean = false;\r\n    @Input() hideDropdownArrow: boolean = false;\r\n    @Input() showAdditionalDataInSelectedText: boolean = false;\r\n    @Input() config: ICustomMultiSelect;\r\n    @Input() disabled: boolean;\r\n    @Input() borderbottomObject: any = {};\r\n    @Input() disableOptionsEnabled: boolean = false;\r\n    @Input() defaultDropdownHeight: number = null;\r\n    @Input() isEquivalentHigherDpComponent: boolean = false;\r\n    @Output() applied: EventEmitter<MultiSelectIdText[]> = new EventEmitter<MultiSelectIdText[]>();\r\n    @Output() valueChanged: EventEmitter<MultiSelectIdText[]> = new EventEmitter<MultiSelectIdText[]>();\r\n    @Output() selectionApplied: EventEmitter<MultiSelectIdText[]> = new EventEmitter<MultiSelectIdText[]>();\r\n    @Output() selectionChangedEmitAllItems: EventEmitter<MultiSelectIdText[]> = new EventEmitter<MultiSelectIdText[]>();\r\n    @Output() dropdownClosedEvent: EventEmitter<any> = new EventEmitter<MultiSelectIdText[]>();\r\n    @Output() dropdownOpenedEvent: EventEmitter<any> = new EventEmitter();\r\n\r\n    originalSetOfItems: MultiSelectIdText[];\r\n    selectedAndNotHiddenItems: MultiSelectIdText[];\r\n    searchFor: string;\r\n    yPosition: any = \"above\";\r\n    width: number;\r\n    showErrorMessage: boolean = false;\r\n    isAllSelected: boolean;\r\n    anyItemDisabled: boolean;\r\n    hideAllCheckbox: boolean = false;\r\n    isSearchAllFilterSelected: boolean;\r\n    filteredResults: MultiSelectIdText[] = [];\r\n    disableAllOption: boolean;\r\n    heightOfCheckboxTooltipFilter: number = null;\r\n    isOriginalDaypartSelected: boolean = false;\r\n\r\n    @ViewChild(\"dropdown\") buttonElement: ElementRef;\r\n    keyToUseForDisplay = \"text\";\r\n\r\n    disableApply: boolean = true;\r\n    applyButtonClicked: boolean;\r\n\r\n    constructor(\r\n        private annaGlobalConfig: AnnaGlobalConfigService,\r\n        private searchFilterPipe: AnnaFilterSearchedTextPipe,\r\n        private multiSelectService: MultiSelectDropdownService,\r\n    ) {}\r\n\r\n    ngOnChanges(changes: SimpleChanges): void {\r\n        if (changes && changes.items) {\r\n            this.originalSetOfItems = cloneDeep(this.items);\r\n            this.populateSelectedItemsArr();\r\n            this.checkUnCheckAllOptionCheckbox();\r\n            this.showHideError();\r\n            this.setAnyItemDisabled();\r\n            if (this.defaultDropdownHeight) this.heightOfCheckboxTooltipFilter = this.defaultDropdownHeight;\r\n            else this.heightOfCheckboxTooltipFilter = this.items.length > 5 ? 154 : 26.48 * this.items.length + 1;\r\n        }\r\n    }\r\n\r\n    ngOnInit(): void {\r\n        this.config = { ...this.annaGlobalConfig.defaultMultiSelectConfig, ...this.config };\r\n        this.setPostion();\r\n    }\r\n\r\n    setAnyItemDisabled() {\r\n        this.anyItemDisabled = this.items.filter((n) => n.isDisabled).length !== 0;\r\n        if (this.isEquivalentHigherDpComponent) {\r\n            // here for original daypart even though it is disabled we need to consider it in the count total count i.e if ALl is selected we should show All(n).\r\n            this.anyItemDisabled =\r\n                this.items.filter((n) => n.isDisabled && n.additionalData !== \"(Original)\").length !== 0;\r\n        }\r\n    }\r\n\r\n    populateSelectedItemsArr() {\r\n        if (this.items && this.items.length > 0) {\r\n            this.selectedAndNotHiddenItems = this.hideOptionsEnabled\r\n                ? this.items.filter((item) => item.isSelected && !item.isHidden)\r\n                : this.items.filter((item) => item.isSelected);\r\n        } else {\r\n            this.items = [];\r\n            this.selectedAndNotHiddenItems = [];\r\n        }\r\n    }\r\n\r\n    trackByFn(index: number) {\r\n        return index;\r\n    }\r\n\r\n    checkboxClicked(item: MultiSelectIdText) {\r\n        if (this.searchFor && this.searchFor !== \"\") {\r\n            this.selectUnselectItemWithSearch(item);\r\n        } else {\r\n            this.selectUnselectItemWithoutSearch(item);\r\n        }\r\n        this.setAnyItemDisabled();\r\n        this.enableDisableApply();\r\n        window.event.stopPropagation();\r\n    }\r\n\r\n    enableDisableApply() {\r\n        this.disableApply = this.items.filter(n => n.isSelected)?.length === 0 ||\r\n            isEqual(this.originalSetOfItems.filter(n => n.isSelected).map(n => n.id).sort(), this.items.filter(n => n.isSelected).map(n => n.id).sort());\r\n    }\r\n\r\n    selectUnselectItemWithSearch(item: MultiSelectIdText) {\r\n        item.isSelected = !item.isSelected;\r\n        this.isSearchAllFilterSelected = this.hideOptionsEnabled\r\n            ? this.filteredResults.filter((filteredItem) => !filteredItem.isSelected && !filteredItem.isHidden)\r\n                  .length === 0\r\n            : this.filteredResults.filter((filteredItem) => !filteredItem.isSelected).length === 0;\r\n        this.selectedAndNotHiddenItems = this.hideOptionsEnabled\r\n            ? this.filteredResults.filter((filteredItem) => !filteredItem.isSelected && !filteredItem.isHidden)\r\n            : this.filteredResults.filter((filteredItem) => filteredItem.isSelected);\r\n        this.selectionChangedEmitAllItems.emit(this.items);\r\n    }\r\n\r\n    selectUnselectItemWithoutSearch(item: MultiSelectIdText) {\r\n        item.isSelected = !item.isSelected;\r\n\r\n        this.populateSelectedItemsArr();\r\n        this.checkUnCheckAllOptionCheckbox();\r\n        this.showHideError();\r\n        this.valueChanged.emit(this.selectedAndNotHiddenItems);\r\n        this.selectionChangedEmitAllItems.emit(this.items);\r\n    }\r\n\r\n    dropdownOpened() {\r\n        this.searchFor = \"\";\r\n        this.updateHeight();\r\n        this.width = this.buttonElement.nativeElement.offsetWidth;\r\n        this.enableDisableAll();\r\n        this.checkUnCheckAllOptionCheckbox();\r\n        this.dropdownOpenedEvent.emit(this.items);\r\n    }\r\n\r\n    enableDisableAll() {\r\n        this.disableAllOption = this.items.filter((n: MultiSelectIdText) => !n.isDisabled).length === 0;\r\n    }\r\n\r\n    closeDropdown(trigger: MatMenuTrigger) {\r\n        this.items = cloneDeep(this.originalSetOfItems);\r\n        trigger.closeMenu();\r\n    }\r\n\r\n    applyClicked() {\r\n        this.applied.emit(this.selectedAndNotHiddenItems);\r\n        this.applyButtonClicked = true;\r\n    }\r\n\r\n    revert() {\r\n        this.items = cloneDeep(this.originalSetOfItems);\r\n        this.populateSelectedItemsArr();\r\n        this.checkUnCheckAllOptionCheckbox();\r\n        this.showHideError();\r\n        this.setAnyItemDisabled();\r\n    }\r\n\r\n    dropdownClosed() {\r\n        if(this.config?.showCancelAndApplyButtons && !this.applyButtonClicked) {\r\n            this.revert();\r\n        }\r\n        this.multiSelectService.resetMultiSelect(this.selectedAndNotHiddenItems, this.items);\r\n        this.enableDisableAll();\r\n        this.checkUnCheckAllOptionCheckbox();\r\n        this.showHideError();\r\n        this.valueChanged.emit(this.selectedAndNotHiddenItems);\r\n        this.dropdownClosedEvent.emit(this.items);\r\n        this.applyButtonClicked = false;\r\n    }\r\n\r\n    setPostion() {\r\n        if (this.config && this.config.position === \"TOP\") {\r\n            this.yPosition = \"above\";\r\n        } else if (this.config && this.config.position === \"BOTTOM\") {\r\n            this.yPosition = \"below\";\r\n        }\r\n    }\r\n\r\n    checkUnCheckAllOptionCheckbox() {\r\n        if (this.items && this.items.length > 0) {\r\n            this.isAllSelected =\r\n                (!this.disableAllOption &&\r\n                    this.items.filter((n) => !n.isSelected && !n.isDisabled && !n.isHidden).length === 0) ||\r\n                // If All items are selected and disabled then we need to select all option to be true\r\n                this.items.every((n) => n.isSelected && n.isDisabled && !n.isHidden);\r\n            if (this.isEquivalentHigherDpComponent) {\r\n                this.isAllSelected = !this.disableAllOption && this.items.filter((n) => !n.isSelected).length === 0;\r\n            }\r\n\r\n            this.hideAllCheckbox = false;\r\n        }\r\n        this.setAnyItemDisabled();\r\n        this.enableDisableApply();\r\n    }\r\n\r\n    checkUnCheckAll() {\r\n        if (this.searchFor) {\r\n            this.selectUnselectAllItemsWithSearch();\r\n        } else {\r\n            this.selectUnselectAllItemsWithoutSearch();\r\n        }\r\n        this.enableDisableApply();\r\n        window.event.stopPropagation();\r\n    }\r\n\r\n    selectUnselectAllItemsWithoutSearch() {\r\n        this.isAllSelected = !this.isAllSelected;\r\n        this.items.forEach((item: MultiSelectIdText) => {\r\n            item.isSelected =\r\n                (!this.hideOptionsEnabled || (this.hideOptionsEnabled && !item.isHidden)) &&\r\n                (!this.disableOptionsEnabled || (this.disableOptionsEnabled && !item.isDisabled))\r\n                    ? cloneDeep(this.isAllSelected)\r\n                    : item.isSelected;\r\n        });\r\n\r\n        this.populateSelectedItemsArr();\r\n        this.showHideError();\r\n\r\n        this.valueChanged.emit(this.selectedAndNotHiddenItems);\r\n        this.selectionChangedEmitAllItems.emit(this.items);\r\n    }\r\n\r\n    selectUnselectAllItemsWithSearch() {\r\n        this.isSearchAllFilterSelected = !this.isSearchAllFilterSelected;\r\n\r\n        const filteredIds: any[] = this.filteredResults.map((n) => n.id);\r\n        this.items.forEach((item) => {\r\n            item.isSelected =\r\n                filteredIds.includes(item.id) &&\r\n                (!this.hideOptionsEnabled || (this.hideOptionsEnabled && !item.isHidden)) &&\r\n                (!this.disableOptionsEnabled || (this.disableOptionsEnabled && !item.isDisabled))\r\n                    ? cloneDeep(this.isSearchAllFilterSelected)\r\n                    : item.isSelected;\r\n        });\r\n        this.filteredResults.forEach((item) => {\r\n            item.isSelected =\r\n                (!this.hideOptionsEnabled || (this.hideOptionsEnabled && !item.isHidden)) &&\r\n                (!this.disableOptionsEnabled || (this.disableOptionsEnabled && !item.isDisabled))\r\n                    ? cloneDeep(this.isSearchAllFilterSelected)\r\n                    : item.isSelected;\r\n        });\r\n        this.selectedAndNotHiddenItems = this.hideOptionsEnabled\r\n            ? this.filteredResults.filter((item) => !item.isSelected && !item.isHidden)\r\n            : this.filteredResults.filter((item) => item.isSelected);\r\n        this.showHideError();\r\n        this.selectionChangedEmitAllItems.emit(this.items);\r\n    }\r\n\r\n    showHideError() {\r\n        this.showErrorMessage = this.selectedAndNotHiddenItems.length === 0;\r\n    }\r\n\r\n    inputValueChange() {\r\n        this.searchFor = this.searchFor.trim();\r\n        if (this.searchFor === \"\") {\r\n            this.hideAllCheckbox = this.hideOptionsEnabled\r\n                ? this.items.filter((item) => !item.isHidden).length === 0\r\n                : this.items.length === 0;\r\n            this.selectedAndNotHiddenItems = this.hideOptionsEnabled\r\n                ? this.items.filter((item) => !item.isHidden && item.isSelected)\r\n                : this.items.filter((item) => item.isSelected);\r\n            this.filteredResults = [];\r\n        } else {\r\n            this.filteredResults = this.items.filter((obj) => {\r\n                if (this.disableOptionsEnabled && obj.isDisabled) {\r\n                    return true;\r\n                }\r\n                return obj.text ? obj.text.toLowerCase().includes(this.searchFor.toLowerCase()) : false;\r\n            });\r\n\r\n            const actualFilteredResult = this.items.filter((obj) =>\r\n                obj.text ? obj.text.toLowerCase().includes(this.searchFor.toLowerCase()) : false,\r\n            );\r\n            this.hideAllCheckbox = this.showOrHideAllCheckbox(actualFilteredResult);\r\n\r\n            this.isSearchAllFilterSelected = this.hideOptionsEnabled\r\n                ? this.filteredResults.filter((item) => !item.isHidden && item.isSelected).length === 0\r\n                : this.filteredResults.filter((item) => !item.isSelected).length === 0;\r\n            this.selectedAndNotHiddenItems = this.hideOptionsEnabled\r\n                ? this.filteredResults.filter((item) => !item.isHidden && item.isSelected)\r\n                : this.filteredResults.filter((item) => item.isSelected);\r\n\r\n            const selectedItems = this.filteredResults.map(n => n.id)\r\n            this.items.forEach(item => {\r\n                item.isSelected = selectedItems.includes(item.id);\r\n            })\r\n        }\r\n\r\n        this.isAllSelected = this.selectedAndNotHiddenItems.length === this.items.length;\r\n        this.enableDisableApply();\r\n    }\r\n\r\n    showOrHideAllCheckbox(actualFilteredResult: MultiSelectIdText[]) {\r\n        let hideCheckbox = false;\r\n\r\n        if (this.hideOptionsEnabled) {\r\n            hideCheckbox = this.filteredResults.filter((item) => !item.isHidden).length === 0;\r\n        } else if (this.disableOptionsEnabled) {\r\n            hideCheckbox =\r\n                actualFilteredResult.length === 0 ||\r\n                actualFilteredResult.filter((item) => item.isDisabled).length === actualFilteredResult.length;\r\n        } else {\r\n            hideCheckbox = this.filteredResults.length === 0;\r\n        }\r\n\r\n        return hideCheckbox;\r\n    }\r\n\r\n    removeSearchedString() {\r\n        this.searchFor = \"\";\r\n        this.inputValueChange();\r\n        this.updateHeight();\r\n        window.event.stopPropagation();\r\n    }\r\n\r\n    updateHeight() {\r\n        const items = this.searchFilterPipe.transform(this.items, this.searchFor, this.keyToUseForDisplay);\r\n        if (items.length > 5) {\r\n            this.heightOfCheckboxTooltipFilter = 154;\r\n        } else if (items.length > 0) {\r\n            this.heightOfCheckboxTooltipFilter = 26.48 * items.length + 1;\r\n        } else {\r\n            this.heightOfCheckboxTooltipFilter = 26.48;\r\n        }\r\n    }\r\n}\r\n","<button\r\n    id=\"dropdown-trigger\"\r\n    [ngClass]=\"{ error: !loading && showErrorMessage && config && config.showErrorWhenNoOptionSelected }\"\r\n    #dropdown\r\n    #t=\"matMenuTrigger\"\r\n    (menuClosed)=\"dropdownClosed()\"\r\n    (menuOpened)=\"dropdownOpened()\"\r\n    [matMenuTriggerFor]=\"contextMenu\"\r\n    [disabled]=\"disabled || loading\"\r\n>\r\n    <span\r\n        class=\"placeholder\"\r\n        *ngIf=\"!selectedAndNotHiddenItems || (selectedAndNotHiddenItems && selectedAndNotHiddenItems.length === 0)\"\r\n    >\r\n        {{ isEquivalentHigherDpComponent && disabled ? \"-\" : config.placeholder }}\r\n    </span>\r\n    <ng-container *ngIf=\"selectedAndNotHiddenItems && selectedAndNotHiddenItems.length > 0\">\r\n        <ng-container *ngIf=\"isEquivalentHigherDpComponent\">\r\n            <ng-container *ngIf=\"!isAllSelected || (isAllSelected && anyItemDisabled)\">\r\n                <span\r\n                    class=\"selected-item\"\r\n                    annaCoreShowEllipsisTextOnHover\r\n                    *ngIf=\"selectedAndNotHiddenItems && selectedAndNotHiddenItems.length > 0\"\r\n                >\r\n                    <!-- Show Hyphen if there is only hyphen selected -->\r\n                    <ng-container *ngIf=\"selectedAndNotHiddenItems.length === 1\">\r\n                        {{ selectedAndNotHiddenItems[0].text }}\r\n                    </ng-container>\r\n                    <!-- Show Next value after Hyphen if hyphen is the first value selected -->\r\n                    <ng-container\r\n                        *ngIf=\"selectedAndNotHiddenItems.length > 1 && selectedAndNotHiddenItems[0].text === '-'\"\r\n                    >\r\n                        {{ selectedAndNotHiddenItems[1].text }}\r\n                    </ng-container>\r\n                    <!-- Show exact value if the first value is not hyphen-->\r\n                    <ng-container\r\n                        *ngIf=\"selectedAndNotHiddenItems.length > 1 && selectedAndNotHiddenItems[0].text !== '-'\"\r\n                    >\r\n                        {{ selectedAndNotHiddenItems[0].text }}\r\n                    </ng-container>\r\n\r\n                    <ng-container\r\n                        *ngIf=\"\r\n                            showAdditionalDataInSelectedText &&\r\n                            selectedAndNotHiddenItems.length === 1 &&\r\n                            selectedAndNotHiddenItems[0].additionalData &&\r\n                            !isEquivalentHigherDpComponent\r\n                        \"\r\n                    >\r\n                        <span [class]=\"selectedAndNotHiddenItems[0].additionalClass\"\r\n                            >{{ selectedAndNotHiddenItems[0].additionalData }}\r\n                        </span>\r\n                    </ng-container>\r\n                </span>\r\n                <span\r\n                    class=\"count\"\r\n                    *ngIf=\"selectedAndNotHiddenItems && selectedAndNotHiddenItems.length > 1\"\r\n                >\r\n                    +{{ selectedAndNotHiddenItems.length - 1 }}</span\r\n                >\r\n            </ng-container>\r\n            <ng-container *ngIf=\"isAllSelected && !anyItemDisabled\">\r\n                <span\r\n                    *ngIf=\"selectedAndNotHiddenItems.length > 1\"\r\n                    class=\"selected-item\"\r\n                >\r\n                    All ({{ selectedAndNotHiddenItems.length }})\r\n                </span>\r\n                <span\r\n                    class=\"selected-item\"\r\n                    annaCoreShowEllipsisTextOnHover\r\n                    *ngIf=\"selectedAndNotHiddenItems.length === 1\"\r\n                    >{{ selectedAndNotHiddenItems[0]?.text }}</span\r\n                >\r\n            </ng-container>\r\n        </ng-container>\r\n\r\n        <ng-container *ngIf=\"!isEquivalentHigherDpComponent\">\r\n            <!-- Previous condition: !isAllSelected || anyItemDisabled -->\r\n            <ng-container *ngIf=\"!isAllSelected\">\r\n                <span\r\n                    class=\"selected-item\"\r\n                    annaCoreShowEllipsisTextOnHover\r\n                    *ngIf=\"selectedAndNotHiddenItems && selectedAndNotHiddenItems.length > 0\"\r\n                >\r\n                    <!-- Show Hyphen if there is only hyphen selected -->\r\n                    <ng-container *ngIf=\"selectedAndNotHiddenItems.length === 1\">\r\n                        {{ selectedAndNotHiddenItems[0].text }}\r\n                    </ng-container>\r\n                    <!-- Show Next value after Hyphen if hyphen is the first value selected -->\r\n                    <ng-container\r\n                        *ngIf=\"selectedAndNotHiddenItems.length > 1 && selectedAndNotHiddenItems[0].text === '-'\"\r\n                    >\r\n                        {{ selectedAndNotHiddenItems[1].text }}\r\n                    </ng-container>\r\n                    <!-- Show exact value if the first value is not hyphen-->\r\n                    <ng-container\r\n                        *ngIf=\"selectedAndNotHiddenItems.length > 1 && selectedAndNotHiddenItems[0].text !== '-'\"\r\n                    >\r\n                        {{ selectedAndNotHiddenItems[0].text }}\r\n                    </ng-container>\r\n\r\n                    <ng-container\r\n                        *ngIf=\"\r\n                            showAdditionalDataInSelectedText &&\r\n                            selectedAndNotHiddenItems.length === 1 &&\r\n                            selectedAndNotHiddenItems[0].additionalData\r\n                        \"\r\n                    >\r\n                        <span [class]=\"selectedAndNotHiddenItems[0].additionalClass\"\r\n                            >{{ selectedAndNotHiddenItems[0].additionalData }}\r\n                        </span>\r\n                    </ng-container>\r\n                </span>\r\n                <span\r\n                    class=\"count\"\r\n                    *ngIf=\"selectedAndNotHiddenItems && selectedAndNotHiddenItems.length > 1\"\r\n                >\r\n                    +{{ selectedAndNotHiddenItems.length - 1 }}</span\r\n                >\r\n            </ng-container>\r\n\r\n            <!-- Previous condition: isAllSelected && !anyItemDisabled\r\n             changes made by Pranav to show \"All (lengthOfSelectedItems)\"\r\n             even if there are disabled items \r\n        -->\r\n\r\n            <ng-container *ngIf=\"isAllSelected\">\r\n                <span class=\"selected-item\"> All ({{ selectedAndNotHiddenItems.length }}) </span>\r\n            </ng-container>\r\n        </ng-container>\r\n    </ng-container>\r\n\r\n    <div\r\n        *ngIf=\"loading\"\r\n        [ngClass]=\"{ 'spinner-for-button-directive': loading }\"\r\n    ></div>\r\n\r\n    <ng-container *ngIf=\"!loading && !hideDropdownArrow\">\r\n        <i\r\n            *ngIf=\"!t.menuOpen\"\r\n            class=\"mdi mdi-menu-down icon ml-4\"\r\n        ></i>\r\n        <i\r\n            *ngIf=\"t.menuOpen\"\r\n            class=\"mdi mdi-menu-up icon ml-4\"\r\n        ></i>\r\n    </ng-container>\r\n</button>\r\n\r\n<ng-content select=\".multi-select-icon\"></ng-content>\r\n\r\n<mat-menu\r\n    backdropClass=\"multi-select-dropdown\"\r\n    [yPosition]=\"yPosition\"\r\n    #contextMenu=\"matMenu\"\r\n>\r\n    <ng-template matMenuContent>\r\n        <div\r\n            class=\"{{ config.classes }}\"\r\n            [style.width.px]=\"width\"\r\n        >\r\n            <div class=\"gap\"></div>\r\n            <section class=\"search-bar\">\r\n                <i\r\n                    class=\"mi mdi-search search-icon\"\r\n                    *ngIf=\"!searchFor\"\r\n                ></i>\r\n                <i\r\n                    class=\"mi mdi-close-icon search-icon close-icon\"\r\n                    (click)=\"removeSearchedString()\"\r\n                    *ngIf=\"searchFor\"\r\n                ></i>\r\n                <input\r\n                    type=\"text\"\r\n                    [(ngModel)]=\"searchFor\"\r\n                    (ngModelChange)=\"inputValueChange(); updateHeight()\"\r\n                    placeholder=\"Search\"\r\n                    (click)=\"$event.stopPropagation()\"\r\n                />\r\n            </section>\r\n            <p\r\n                *ngIf=\"!hideAllCheckbox\"\r\n                (click)=\"checkUnCheckAll()\"\r\n                [ngClass]=\"{\r\n                    'disabled-option': disableAllOption\r\n                }\"\r\n            >\r\n                <ng-container *ngIf=\"!searchFor\">\r\n                    <i\r\n                        class=\"mi mdi-check-box checked-option\"\r\n                        *ngIf=\"isAllSelected\"\r\n                    ></i>\r\n                    <i\r\n                        class=\"mi mdi-check-box-outline-blank unchecked-option\"\r\n                        *ngIf=\"!isAllSelected\"\r\n                    ></i>\r\n                    <span>All</span>\r\n                </ng-container>\r\n                <ng-container *ngIf=\"searchFor\">\r\n                    <i\r\n                        class=\"mi mdi-check-box checked-option\"\r\n                        *ngIf=\"isSearchAllFilterSelected\"\r\n                    ></i>\r\n                    <i\r\n                        class=\"mi mdi-check-box-outline-blank unchecked-option\"\r\n                        *ngIf=\"!isSearchAllFilterSelected\"\r\n                    ></i>\r\n                    <span class=\"search-filtered-results\">Select filtered results</span>\r\n                </ng-container>\r\n            </p>\r\n\r\n            <cdk-virtual-scroll-viewport\r\n                itemSize=\"18\"\r\n                [style.height.px]=\"heightOfCheckboxTooltipFilter\"\r\n                class=\"dropdown-data-container\"\r\n            >\r\n                <ul\r\n                    *cdkVirtualFor=\"\r\n                        let item of items | AnnafilterSearchedText: searchFor : keyToUseForDisplay;\r\n                        let last = last;\r\n                        trackBy: trackByFn\r\n                    \"\r\n                    [style.width.px]=\"width\"\r\n                >\r\n                    <li\r\n                        [ngClass]=\"{\r\n                            'show-bottom-border': !last && borderbottomObject[item.id],\r\n                            'disabled-option': disableOptionsEnabled && item.isDisabled\r\n                        }\"\r\n                        annaCoreShowEllipsisTextOnHover\r\n                        *ngIf=\"!hideOptionsEnabled || (hideOptionsEnabled && !item.isHidden)\"\r\n                        (click)=\"checkboxClicked(item)\"\r\n                    >\r\n                        <i\r\n                            class=\"mi mdi-check-box checked-option\"\r\n                            *ngIf=\"item.isSelected\"\r\n                        ></i>\r\n                        <i\r\n                            class=\"mi mdi-check-box-outline-blank unchecked-option\"\r\n                            *ngIf=\"!item.isSelected\"\r\n                        ></i>\r\n                        <span>{{ item.text }}</span>\r\n                        <ng-container *ngIf=\"item && item.additionalData\">\r\n                            <span [class]=\"item.additionalClass + ' additional-text'\">\r\n                                {{ item?.additionalData }}\r\n                            </span>\r\n                        </ng-container>\r\n                    </li>\r\n                </ul>\r\n\r\n                <ng-container\r\n                    [ngTemplateOutlet]=\"noDataCase\"\r\n                    [ngTemplateOutletContext]=\"{ items: items }\"\r\n                ></ng-container>\r\n            </cdk-virtual-scroll-viewport>\r\n\r\n\r\n        @if(config?.showCancelAndApplyButtons) {\r\n            <div *ngIf=\"config?.showCancelAndApplyButtons\" class=\"buttons-container checkbox-filter-buttons-container\">\r\n                <button\r\n                    class=\"button\"\r\n                    (click)=\"closeDropdown(t)\"\r\n                >\r\n                    Cancel\r\n                </button>\r\n                <button\r\n                    class=\"button\"\r\n                    [ngClass]=\"{ disabled: disableApply }\"\r\n                    (click)=\"applyClicked()\"\r\n                    [disabled]=\"disableApply\"\r\n                >\r\n                    Apply\r\n                </button>\r\n            </div>\r\n        }\r\n        </div>\r\n    </ng-template>\r\n</mat-menu>\r\n\r\n\r\n<ng-template\r\n    #noDataCase\r\n    let-items=\"items\"\r\n>\r\n    <li\r\n        class=\"no-data-found\"\r\n        *ngIf=\"(items | AnnafilterSearchedText: searchFor : keyToUseForDisplay)?.length === 0\"\r\n    >\r\n        <span> No data found </span>\r\n    </li>\r\n</ng-template>\r\n","import { ChangeDetectionStrategy, Component, Input } from \"@angular/core\";\r\nimport { NgxSkeletonLoaderModule } from \"ngx-skeleton-loader\";\r\n\r\n@Component({\r\n    selector: \"anna-design-skt-loader\",\r\n    templateUrl: \"./skeleton-loader.component.html\",\r\n    styleUrls: [\"./skeleton-loader.component.scss\"],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    imports: [NgxSkeletonLoaderModule]\r\n})\r\nexport class SkeletonLoaderComponent {\r\n    @Input() theme: any;\r\n    @Input() count?: number = 1;\r\n}\r\n","<ngx-skeleton-loader\r\n    [count]=\"count\"\r\n    [theme]=\"theme\"\r\n>\r\n</ngx-skeleton-loader>\r\n","import { InjectionToken } from \"@angular/core\";\r\n// eslint-disable-next-line import/no-extraneous-dependencies\r\nimport { Observable } from \"rxjs\";\r\n\r\nexport const DASHBOARD_FILTER_MODAL_SERVICE_TOKEN: InjectionToken<IDashboardFilterModalService> =\r\n    new InjectionToken<IDashboardFilterModalService>(\"IDashboardFilterModalService token\");\r\n\r\nexport interface IDashboardFilterModalService {\r\n    loggedInUserId: number;\r\n\r\n    defaultDemoToggleValue: boolean;\r\n    defaultEquivalisationToggleValue: boolean;\r\n\r\n    getNormalizedDemoForStation(): Observable<{ Id: number; Name: string }[]>;\r\n}\r\n","export type MeasurementType = \"IMP('000)\" | \"GRP\";\r\nexport type TypeOfCalendar = \"broadcast\" | \"fiscal\";\r\n\r\nexport class IdText {\r\n    id: string | number;\r\n    text: string;\r\n    constructor(id: string | number, text: string) {\r\n        this.id = id;\r\n        this.text = text;\r\n    }\r\n}\r\n\r\nexport class SingleSelectIdText {\r\n    id: any;\r\n    text: string;\r\n    class?: string;\r\n    additionalClass?: string;\r\n    additionalData?: string;\r\n    isSelected?: boolean;\r\n    isDisabled?: boolean;\r\n    constructor(\r\n        id: any,\r\n        text: string,\r\n        className?: string,\r\n        additionalClass?: string,\r\n        additionalData?: string,\r\n        isSelected?: boolean,\r\n        isDisabled?: boolean,\r\n    ) {\r\n        this.id = id;\r\n        this.text = text;\r\n        this.class = className;\r\n        this.additionalClass = additionalClass;\r\n        this.additionalData = additionalData;\r\n        this.isSelected = isSelected;\r\n        this.isDisabled = isDisabled;\r\n    }\r\n}\r\n\r\nexport class MultiSelectIdText {\r\n    id: any;\r\n    text: string;\r\n    isSelected: boolean;\r\n    isHidden?: boolean;\r\n    isDisabled?: boolean;\r\n    additionalClass?: string;\r\n    additionalData?: string;\r\n    constructor(\r\n        id: any,\r\n        text: string,\r\n        isSelected?: boolean,\r\n        isHidden?: boolean,\r\n        isDisabled?: boolean,\r\n        additionalData?: string,\r\n        additionalClass?: string,\r\n    ) {\r\n        this.id = id;\r\n        this.text = text;\r\n        this.isSelected = isSelected;\r\n        this.isHidden = isHidden;\r\n        this.additionalData = additionalData;\r\n        this.additionalClass = additionalClass;\r\n        this.isDisabled = isDisabled;\r\n    }\r\n}\r\n\r\nexport interface AssociatedChannel {\r\n    StationName: string;\r\n    StationId: number;\r\n    StationLogoUrl: string;\r\n    BroadcastStartTime: string;\r\n    BackDate: string;\r\n    IsSandboxMode: boolean;\r\n    CountryId: number;\r\n    CountryCode: string;\r\n    Timezone: string;\r\n    TimezoneShortform: string;\r\n}\r\n","import { NormalizedData } from \"../../demo-normalization/models/demo-normalization.model\";\r\nimport { MultiSelectIdText } from \"../../globals/global.model\";\r\nimport { PeriodSelectionPopUp } from \"../../order-container-filter-modal/models/order-container-filter-modal.model\";\r\n\r\nexport type DashboardIntelliFilter = \"IN-FLIGHT\" | \"UPCOMING\" | \"COMPLETED\";\r\n\r\nexport interface PersistedDashboardPrimaryFilters {\r\n    og?: IdTextForDropdown;\r\n    stationId?: number;\r\n    stationIds?: number[];\r\n    periodData?: PeriodSelectionPopUp;\r\n    isEquivalised?: boolean;\r\n    normalizedData?: NormalizedData;\r\n}\r\n\r\nexport interface DashboardFilterSelectionPopUp extends PersistedDashboardPrimaryFilters {\r\n    updateNavigation?: boolean;\r\n}\r\n\r\nexport class IdTextForDropdown {\r\n    id: number;\r\n    text: string;\r\n    isStationInSandboxMode?: boolean = false;\r\n    additionalClass?: string;\r\n    additionalData?: string;\r\n    constructor(id: number, text: string, isStationInSandboxMode?: boolean) {\r\n        this.id = id;\r\n        this.text = text;\r\n        this.isStationInSandboxMode = isStationInSandboxMode;\r\n    }\r\n}\r\n\r\nexport class PrimaryFiltersData {\r\n    stationArr: IdTextForDropdown[];\r\n    stationArrForMultiSelection: MultiSelectIdText[] = [];\r\n    // originalStationArr: IdTextForDropdown[];\r\n    stationCalendarTypeMap;\r\n\r\n    ogArr: IdTextForDropdown[];\r\n    // origninalOGArr: IdTextForDropdown[];\r\n    ogCalendarTypeMap;\r\n    constructor(\r\n        stationOrOGWiseFilterData: any,\r\n        isSandboxmodeFeaturePresent: boolean,\r\n        showStation: boolean,\r\n        showOwnershipGroup: boolean,\r\n    ) {\r\n        this.stationArr = [];\r\n\r\n        // this.originalStationArr = [];\r\n        this.stationCalendarTypeMap = new Map();\r\n\r\n        this.ogArr = [];\r\n        // this.origninalOGArr = [];\r\n        this.ogCalendarTypeMap = new Map();\r\n\r\n        if (showStation) {\r\n            stationOrOGWiseFilterData.forEach((stationObj: any, index: number) => {\r\n                // this.originalStationArr.push(new IdTextForDropdown(stationObj.StationId, stationObj.StationName));\r\n\r\n                const stationOptionText =\r\n                    isSandboxmodeFeaturePresent && stationObj.IsStationInSandboxMode\r\n                        ? `${stationObj.StationName} (Sandbox)`\r\n                        : stationObj.StationName;\r\n\r\n                this.stationArr.push(new IdTextForDropdown(stationObj.StationId, stationOptionText));\r\n\r\n                this.stationArrForMultiSelection.push(\r\n                    new MultiSelectIdText(stationObj.StationId, stationOptionText, index === 0),\r\n                );\r\n\r\n                const calendarTypeObj = {\r\n                    FiscalQuarterYear: stationObj.CalendarTypes.FiscalQuarterYear,\r\n                    BroadcastQuarterYear: stationObj.CalendarTypes.BroadcastQuarterYear,\r\n                };\r\n\r\n                this.stationCalendarTypeMap.set(stationObj.StationId, calendarTypeObj);\r\n            });\r\n        }\r\n        if (showOwnershipGroup) {\r\n            stationOrOGWiseFilterData.forEach((ogObj: any) => {\r\n                // this.origninalOGArr.push(new IdTextForDropdown(ogObj.OgId, ogObj.OgName));\r\n\r\n                const ogOptionText =\r\n                    isSandboxmodeFeaturePresent && ogObj.IsStationInSandboxMode\r\n                        ? `${ogObj.OgName} (Sandbox)`\r\n                        : ogObj.OgName;\r\n\r\n                this.ogArr.push(new IdTextForDropdown(ogObj.OgId, ogOptionText));\r\n\r\n                const calendarTypeObj = {\r\n                    FiscalQuarterYear: ogObj.CalendarTypes.FiscalQuarterYear,\r\n                    BroadcastQuarterYear: ogObj.CalendarTypes.BroadcastQuarterYear,\r\n                };\r\n\r\n                this.ogCalendarTypeMap.set(ogObj.OgId, calendarTypeObj);\r\n            });\r\n        }\r\n    }\r\n}\r\n","/* eslint-disable import/no-extraneous-dependencies */\r\n// Angular import statements\r\nimport { DatePipe, NgIf, NgSwitch, NgSwitchCase, NgSwitchDefault, NgTemplateOutlet } from \"@angular/common\";\r\nimport {\r\n    ChangeDetectionStrategy,\r\n    Component,\r\n    EventEmitter,\r\n    Inject,\r\n    Input,\r\n    OnChanges,\r\n    Output,\r\n    SimpleChanges,\r\n    TemplateRef,\r\n    ViewChild,\r\n} from \"@angular/core\";\r\nimport { ActivatedRoute, Router } from \"@angular/router\";\r\n// Anna Lib\r\nimport {\r\n    AnnaGlobalConfigService,\r\n    ICustomMultiSelect,\r\n    ICustomSingleSelect,\r\n    IRadioButtonComponentConfig,\r\n    UpdateStationIdService,\r\n} from \"@annalib/anna-core\";\r\nimport { NgbModal, NgbModalOptions, NgbModalRef } from \"@ng-bootstrap/ng-bootstrap\";\r\n// Third party import statements\r\nimport dayjs from \"dayjs\";\r\nimport minMax from \"dayjs/plugin/minMax\";\r\nimport { cloneDeep, isEqual } from \"lodash-es\";\r\n\r\n// User defined Imports\r\nimport { StartDateConsideringFactor } from \"../custom-date-picker/models/datePicker.model\";\r\nimport { DemoNormalizationComponent } from \"../demo-normalization/demo-normalization.component\";\r\nimport { NormalizedData } from \"../demo-normalization/models/demo-normalization.model\";\r\n// eslint-disable-next-line max-len\r\nimport { EquivalisationOfDataToggleBtnComponent } from \"../equivalisation-of-data-toggle-btn/equivalisation-of-data-toggle-btn.component\";\r\nimport { GenericPeriodSelectionComponent } from \"../generic-period-selection/generic-period-selection.component\";\r\nimport { MultiSelectIdText } from \"../globals/global.model\";\r\nimport { MultiSelectComponent } from \"../multi-select/multi-select.component\";\r\nimport {\r\n    ICalendarTypeResponse,\r\n    IYearQuarter,\r\n    PeriodSelectionPopUp,\r\n} from \"../order-container-filter-modal/models/order-container-filter-modal.model\";\r\n// eslint-disable-next-line max-len\r\nimport { CalendarQuarterYearFilterService } from \"../order-container-filter-modal/services/calendar-quarter-year-filter.service\";\r\nimport { SingleSelectComponent } from \"../single-select/single-select.component\";\r\nimport { SkeletonLoaderComponent } from \"../skeleton-loader/skeleton-loader.component\";\r\nimport { DashboardFilterModalConstants } from \"./models/dashboard-filter-modal.model\";\r\nimport {\r\n    DASHBOARD_FILTER_MODAL_SERVICE_TOKEN,\r\n    IDashboardFilterModalService,\r\n} from \"./models/dashboard-filter-modal-service.token\";\r\nimport {\r\n    DashboardFilterSelectionPopUp,\r\n    IdTextForDropdown,\r\n    PersistedDashboardPrimaryFilters,\r\n    PrimaryFiltersData,\r\n} from \"./models/dashboard-order.model\";\r\n\r\n@Component({\r\n    selector: \"anna-design-dashboard-filter-modal\",\r\n    templateUrl: \"./dashboard-filter-modal.component.html\",\r\n    styleUrls: [\"./dashboard-filter-modal.component.scss\"],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    imports: [\r\n        NgIf,\r\n        NgTemplateOutlet,\r\n        SingleSelectComponent,\r\n        MultiSelectComponent,\r\n        GenericPeriodSelectionComponent,\r\n        DemoNormalizationComponent,\r\n        EquivalisationOfDataToggleBtnComponent,\r\n        NgSwitch,\r\n        NgSwitchCase,\r\n        NgSwitchDefault,\r\n        SkeletonLoaderComponent,\r\n        DatePipe,\r\n    ],\r\n})\r\nexport class DashboardFilterModalComponent implements OnChanges {\r\n    @Input() error: boolean;\r\n    @Input() toDisable: boolean;\r\n    @Input() disableEditButton: boolean = false;\r\n    @Input({ required: true }) filterData: PrimaryFiltersData;\r\n    @Input({ required: true }) persistingFilter: PersistedDashboardPrimaryFilters;\r\n    @Input({ required: true }) headerText: string;\r\n    @Input() handleNavigation: boolean = true;\r\n    @Input() showEquivilization: boolean = true;\r\n    @Input() showNormalization: boolean = true;\r\n    @Input() showOwnershipGroup: boolean = false;\r\n    @Input() showStation: boolean = true;\r\n    @Input() showMultiSelectionForStation: boolean = false;\r\n    @Input() stationIdsWithValidLicense: number[] = [];\r\n\r\n    @Output() applyFilter = new EventEmitter<any>();\r\n    @Output() getInitialFilter = new EventEmitter<any>();\r\n    @Input() message = \"Edit data for which you want to view the dashboard for.\";\r\n\r\n    @ViewChild(\"dbFilterModal\", { static: true }) private dbFilterModal: TemplateRef<any>;\r\n    modalRef: NgbModalRef;\r\n    ngbModalOptions: NgbModalOptions;\r\n    constants = DashboardFilterModalConstants;\r\n\r\n    clonedFilter: DashboardFilterSelectionPopUp;\r\n\r\n    stationDropdownConfig: ICustomSingleSelect;\r\n    multiStationsDropdownConfig: ICustomMultiSelect;\r\n    ogDropdownConfig: ICustomSingleSelect;\r\n    calendarTypeConfig: IRadioButtonComponentConfig;\r\n\r\n    selectedStation: IdTextForDropdown;\r\n    stationsForMultiSelection: MultiSelectIdText[] = [];\r\n    stations: IdTextForDropdown[];\r\n    selectedPeriodData: PeriodSelectionPopUp;\r\n    selectedStartDate: string;\r\n    selectedEndDate: string;\r\n    minMaxDateRangeForCalendar: { startDate: string; endDate: string };\r\n\r\n    selectedOwnershipGroup: IdTextForDropdown;\r\n    ownershipGroup: IdTextForDropdown[];\r\n\r\n    loggedInUserId: number;\r\n\r\n    @Input() toShowAllPeriodModeSetting: boolean = false;\r\n    @Input() PeriodOptions: string[] = [\"Quarter\", \"Month\", \"Custom Range\"];\r\n\r\n    defaultQuarterYear: string;\r\n    defaultQuarter: string;\r\n    calendarData: any;\r\n\r\n    DATE_FORMAT = \"MM/DD/YYYY\";\r\n    DATE_FORMAT_HTML = \"MM/dd/YYYY\";\r\n    MONTH_DATE_FORMAT_HTML = \"d MMM\";\r\n    isFilterValueChanged: boolean;\r\n\r\n    isStationChanged: boolean;\r\n    noQuarterYearPresent: boolean;\r\n    previousSelectedStation: IdTextForDropdown;\r\n    previousMultiSelectStations: MultiSelectIdText[];\r\n    previousSelectedOwnershipGroup: IdTextForDropdown;\r\n\r\n    selectedNormalization: NormalizedData;\r\n    selectedEquivilizationToggle: boolean;\r\n    demoToShow: string = \"\";\r\n\r\n    normalizationDemographics: IdTextForDropdown[];\r\n    defaultDemo: string = DashboardFilterModalConstants.DefaultDemo;\r\n    disableEquivalization: boolean;\r\n    periodDataAndNormalizationLoader: boolean;\r\n    initialFiltersForStationAndPeriod: PersistedDashboardPrimaryFilters;\r\n    StartDateConsideringFactor = StartDateConsideringFactor;\r\n\r\n    multiStationFilterViewText: string = \"-\";\r\n\r\n    constructor(\r\n        private router: Router,\r\n        private currentRoute: ActivatedRoute,\r\n        private modalService: NgbModal,\r\n        private annaGlobalService: AnnaGlobalConfigService,\r\n        private quarterFilterService: CalendarQuarterYearFilterService,\r\n        @Inject(DASHBOARD_FILTER_MODAL_SERVICE_TOKEN)\r\n        public consumingProjectDashboardFilterService: IDashboardFilterModalService,\r\n        private updateStationIdService: UpdateStationIdService,\r\n    ) {\r\n        dayjs.extend(minMax);\r\n        this.configModalOptions();\r\n        this.setStationDropdownConfig();\r\n        this.setMultiStationSelectionConfig();\r\n        this.setOGDropdownConfig();\r\n        this.resetClonedFilter();\r\n    }\r\n\r\n    ngOnChanges(changes: SimpleChanges) {\r\n        if (changes.filterData && changes.filterData.currentValue) {\r\n            if (this.stationIdsWithValidLicense?.length) {\r\n                this.filterData.stationArr = this.filterData.stationArr.filter((station) =>\r\n                    this.stationIdsWithValidLicense.includes(station.id),\r\n                );\r\n                this.filterData.stationArrForMultiSelection = this.filterData.stationArrForMultiSelection.filter(\r\n                    (station) => this.stationIdsWithValidLicense.includes(station.id),\r\n                );\r\n                const isAnyStationSelected = this.filterData.stationArrForMultiSelection.some(\r\n                    (station) => station.isSelected,\r\n                );\r\n                if (!isAnyStationSelected && this.filterData.stationArrForMultiSelection?.length) {\r\n                    this.filterData.stationArrForMultiSelection[0].isSelected = true;\r\n                }\r\n            }\r\n            this.disableEditFilterBtn();\r\n            this.getLoginUserId();\r\n            this.setDashboardFilterData();\r\n        }\r\n    }\r\n\r\n    setInitialFiltersForComponent() {\r\n        let calendarData;\r\n        if (this.showStation) {\r\n            let stationId: number;\r\n            if (this.showMultiSelectionForStation) {\r\n                this.initialFiltersForStationAndPeriod = {\r\n                    stationIds: this.filterData?.stationArrForMultiSelection.map((data) => data.id),\r\n                };\r\n                stationId = this.filterData.stationArr[0].id;\r\n            } else {\r\n                this.initialFiltersForStationAndPeriod = {\r\n                    stationId: this.stations[0].id,\r\n                };\r\n                stationId = this.stations[0].id;\r\n            }\r\n\r\n            calendarData = this.filterData.stationCalendarTypeMap.get(stationId);\r\n        } else if (this.showOwnershipGroup) {\r\n            this.initialFiltersForStationAndPeriod = {\r\n                og: this.selectedOwnershipGroup,\r\n            };\r\n            calendarData = this.filterData.ogCalendarTypeMap.get(this.selectedOwnershipGroup.id);\r\n        }\r\n\r\n        if (this.calendarData.BroadcastQuarterYear.length) {\r\n            let selectedQuarter;\r\n            const quarter = calendarData.BroadcastQuarterYear;\r\n            for (let i = 0; i < quarter.length; i++) {\r\n                selectedQuarter = quarter[i].Quarters.filter((data: any) => data.IsCurrentQuarter);\r\n                if (selectedQuarter.length) {\r\n                    break;\r\n                }\r\n            }\r\n\r\n            if (selectedQuarter) {\r\n                const defaultQuarterYear = dayjs(selectedQuarter[0].EndDate).format(\"YYYY\");\r\n                const defaultQuarter = selectedQuarter[0].DisplayDate;\r\n\r\n                const selectedStartDate = dayjs(selectedQuarter[0].StartDate).format(this.DATE_FORMAT);\r\n                const selectedEndDate = dayjs(selectedQuarter[0].EndDate).format(this.DATE_FORMAT);\r\n\r\n                this.initialFiltersForStationAndPeriod.periodData = {\r\n                    year: defaultQuarterYear,\r\n                    quarter: defaultQuarter,\r\n                    calendarType: this.constants.Broadcast,\r\n                    periodMode: this.constants.Quarter,\r\n                    month: null,\r\n                    isEntireFlightPeriod: false,\r\n                    startDate: selectedStartDate,\r\n                    endDate: selectedEndDate,\r\n                };\r\n            } else {\r\n                this.initialFiltersForStationAndPeriod.periodData = null;\r\n            }\r\n        }\r\n\r\n        this.initialFiltersForStationAndPeriod.normalizedData = this.showNormalization\r\n            ? this.setDefaultDataForNormalization(false)\r\n            : null;\r\n        this.initialFiltersForStationAndPeriod.isEquivalised =\r\n            this.consumingProjectDashboardFilterService.defaultEquivalisationToggleValue;\r\n\r\n        if (!this.handleNavigation) {\r\n            this.getInitialFilter.emit(this.initialFiltersForStationAndPeriod);\r\n        }\r\n    }\r\n\r\n    disableEditFilterBtn() {\r\n        this.noQuarterYearPresent = true;\r\n        if (this.showStation) {\r\n            this.filterData.stationCalendarTypeMap.forEach((value, key) => {\r\n                if (value.BroadcastQuarterYear.length > 0) {\r\n                    this.noQuarterYearPresent = false;\r\n                }\r\n            });\r\n        } else if (this.showOwnershipGroup) {\r\n            this.filterData.ogCalendarTypeMap.forEach((value, key) => {\r\n                if (value.BroadcastQuarterYear.length > 0) {\r\n                    this.noQuarterYearPresent = false;\r\n                }\r\n            });\r\n        }\r\n    }\r\n\r\n    setDashboardFilterData() {\r\n        this.periodDataAndNormalizationLoader = true;\r\n        if (this.showOwnershipGroup) {\r\n            this.setOGData();\r\n        }\r\n        if (this.showStation) {\r\n            this.setStationData();\r\n        }\r\n        this.setCalendarQuarterFilter();\r\n        this.setEquivilizationToggleVal();\r\n        this.setNormalizationData(this.callBackFuncOnInitialSetup);\r\n    }\r\n\r\n    callBackFuncOnInitialSetup() {\r\n        if (this.showNormalization) {\r\n            this.selectedNormalization = this.persistingFilter?.normalizedData\r\n                ? this.setPersistedNormalizedFilter()\r\n                : this.setDefaultDataForNormalization();\r\n        } else {\r\n            this.selectedNormalization = null;\r\n        }\r\n        this.setInitialFiltersForComponent();\r\n        this.setClonedDataAndEmitFilters();\r\n        this.periodDataAndNormalizationLoader = false;\r\n        this.isFilterValueChanged = false;\r\n    }\r\n\r\n    setPersistedNormalizedFilter() {\r\n        if (this.persistingFilter.normalizedData.toggle) {\r\n            const { demoId } = this.persistingFilter.normalizedData;\r\n            this.demoToShow = this.normalizationDemographics.filter((item) => item.id === demoId)[0].text;\r\n        }\r\n\r\n        return this.persistingFilter.normalizedData;\r\n    }\r\n\r\n    setOGData() {\r\n        this.ownershipGroup = this.filterData.ogArr;\r\n        this.selectedOwnershipGroup =\r\n            this.persistingFilter && this.persistingFilter?.og?.id\r\n                ? this.ownershipGroup.filter((n) => n.id === this.persistingFilter?.og?.id)[0]\r\n                : this.ownershipGroup[0];\r\n        this.previousSelectedOwnershipGroup = cloneDeep(this.selectedOwnershipGroup);\r\n    }\r\n\r\n    setStationData() {\r\n        if (!this.showMultiSelectionForStation) {\r\n            this.stations = this.filterData.stationArr;\r\n            if (this.persistingFilter && this.persistingFilter.stationId) {\r\n                this.selectedStation = this.stations.some((station) => station.id === this.persistingFilter.stationId)\r\n                    ? this.stations.find((station) => station.id === this.persistingFilter.stationId)\r\n                    : this.stations[0];\r\n            } else {\r\n                this.selectedStation = this.stations[0];\r\n            }\r\n            this.previousSelectedStation = cloneDeep(this.selectedStation);\r\n        } else {\r\n            this.stationsForMultiSelection = cloneDeep(this.filterData.stationArrForMultiSelection);\r\n            if (this.persistingFilter?.stationIds?.length) {\r\n                const selectedStationSet = new Set(this.persistingFilter.stationIds);\r\n                this.stationsForMultiSelection.forEach((station) => {\r\n                    station.isSelected = selectedStationSet.has(station.id);\r\n                });\r\n            }\r\n            this.previousMultiSelectStations = cloneDeep(this.stationsForMultiSelection);\r\n            this.setMultipleStationViewText();\r\n        }\r\n    }\r\n\r\n    setMultipleStationViewText() {\r\n        const selectedStations = this.stationsForMultiSelection.filter((station) => station.isSelected);\r\n        if (this.stationsForMultiSelection.length === selectedStations.length) {\r\n            this.multiStationFilterViewText = `All (${selectedStations.length})`;\r\n        } else if (selectedStations.length === 1) {\r\n            this.multiStationFilterViewText = selectedStations[0].text;\r\n        } else if (selectedStations.length > 1) {\r\n            this.multiStationFilterViewText = `${selectedStations[0].text} + ${selectedStations.length - 1}`;\r\n        } else {\r\n            this.multiStationFilterViewText = \"-\";\r\n        }\r\n    }\r\n\r\n    setCalendarQuarterFilter() {\r\n        this.selectedPeriodData =\r\n            this.persistingFilter && this.persistingFilter.periodData ? this.persistingFilter.periodData : null;\r\n        this.setGenericPeriodSelectionComponentData();\r\n        if (this.isPeriodData()) {\r\n            this.setStartAndEndDate(this.calendarData);\r\n            this.setMinMaxDateRangeAsPerQuarter();\r\n        }\r\n    }\r\n\r\n    setNormalizationData(callbackFunc: any) {\r\n        if (this.showStation && this.showNormalization) {\r\n            // const stationId = this.showMultiSelectionForStation ? this.filterData.stationArr[0].id : this.selectedStation.id;\r\n            this.consumingProjectDashboardFilterService.getNormalizedDemoForStation().subscribe((res: any) => {\r\n                this.normalizationDemographics = res?.length\r\n                    ? res.map((item: { Id: number; Name: string }) => new IdTextForDropdown(item.Id, item.Name))\r\n                    : [];\r\n                callbackFunc.call(this);\r\n            });\r\n        } else if (this.showOwnershipGroup && this.showNormalization) {\r\n            this.consumingProjectDashboardFilterService.getNormalizedDemoForStation().subscribe((res: any) => {\r\n                this.normalizationDemographics = res?.length\r\n                    ? res.map((item: { Id: number; Name: string }) => new IdTextForDropdown(item.Id, item.Name))\r\n                    : [];\r\n                callbackFunc.call(this);\r\n            });\r\n        } else if (!this.showNormalization) {\r\n            callbackFunc.call(this);\r\n        }\r\n    }\r\n\r\n    setAutomationTypeData() { }\r\n\r\n    setEquivilizationToggleVal() {\r\n        this.selectedEquivilizationToggle =\r\n            this.persistingFilter?.isEquivalised != null\r\n                ? this.persistingFilter.isEquivalised\r\n                : this.consumingProjectDashboardFilterService.defaultEquivalisationToggleValue;\r\n        this.addEquivalizationKeyInClonedFilter(this.selectedEquivilizationToggle);\r\n    }\r\n\r\n    setDefaultDataForNormalization(setSelectedDemoText: boolean = true) {\r\n        const A18Demo = this.normalizationDemographics.filter((item) => item.text === this.defaultDemo)[0];\r\n        if (!A18Demo) {\r\n            this.demoToShow = null;\r\n            return {\r\n                toggle: false,\r\n                demoId: null,\r\n            };\r\n        }\r\n        if (setSelectedDemoText) {\r\n            this.demoToShow = A18Demo?.text;\r\n        }\r\n        const A18DemoId = A18Demo?.id;\r\n        return {\r\n            toggle: this.consumingProjectDashboardFilterService.defaultDemoToggleValue,\r\n            demoId: A18DemoId,\r\n        };\r\n    }\r\n\r\n    isPeriodData() {\r\n        return this.calendarData.BroadcastQuarterYear.length;\r\n    }\r\n\r\n    setGenericPeriodSelectionComponentData() {\r\n        if (this.showStation) {\r\n            const stationId = this.showMultiSelectionForStation\r\n                ? this.filterData.stationArr[0]?.id\r\n                : this.selectedStation.id;\r\n            this.calendarData = this.filterData.stationCalendarTypeMap.get(stationId);\r\n        } else if (this.showOwnershipGroup) {\r\n            this.calendarData = this.filterData.ogCalendarTypeMap.get(this.selectedOwnershipGroup.id);\r\n        }\r\n        this.quarterFilterService.publishQuarterFilterData({ filterData: this.calendarData, selectedFilter: null });\r\n    }\r\n\r\n    setMinMaxDateRangeAsPerQuarter() {\r\n        if (this.calendarData.BroadcastQuarterYear.length > 0) {\r\n            this.minMaxDateRangeForCalendar = null;\r\n            if (this.isFiscalPeriod()) {\r\n                this.setMinMaxDate(this.calendarData.FiscalQuarterYear);\r\n            } else {\r\n                this.setMinMaxDate(this.calendarData.BroadcastQuarterYear);\r\n            }\r\n        }\r\n    }\r\n\r\n    setMinMaxDate(quarterYear: IYearQuarter[]) {\r\n        const totalYear = quarterYear.length - 1;\r\n        const totalQuarterInLastYear = quarterYear[totalYear].Quarters.length - 1;\r\n\r\n        const startDate = dayjs(quarterYear[0].Quarters[0].StartDate).format(this.DATE_FORMAT);\r\n        const endDate = dayjs(quarterYear[totalYear].Quarters[totalQuarterInLastYear].EndDate).format(this.DATE_FORMAT);\r\n        this.minMaxDateRangeForCalendar = { startDate, endDate };\r\n    }\r\n\r\n    isFiscalPeriod() {\r\n        return (\r\n            (this.persistingFilter &&\r\n                this.persistingFilter.periodData &&\r\n                this.persistingFilter.periodData.calendarType === this.constants.Fiscal) ||\r\n            (this.selectedPeriodData && this.selectedPeriodData.calendarType === this.constants.Fiscal)\r\n        );\r\n    }\r\n\r\n    setStartAndEndDate(calendarData: ICalendarTypeResponse) {\r\n        if (this.persistingFilter && this.persistingFilter.periodData) {\r\n            this.selectedStartDate = this.persistingFilter.periodData.startDate;\r\n            this.selectedEndDate = this.persistingFilter.periodData.endDate;\r\n            this.defaultQuarterYear = null;\r\n            this.defaultQuarter = null;\r\n        } else {\r\n            this.setDefaultPeriodFilter(calendarData);\r\n        }\r\n    }\r\n\r\n    openDashboardFilterModal() {\r\n        this.previousSelectedStation = null;\r\n        if (this.persistingFilter && this.persistingFilter.stationId) {\r\n            this.previousSelectedStation = this.stations?.filter((n) => n.id === this.persistingFilter.stationId)[0];\r\n        } else if (this.stations) {\r\n            this.previousSelectedStation = this.stations[0];\r\n        }\r\n        this.modalRef = this.modalService.open(this.dbFilterModal, this.ngbModalOptions);\r\n    }\r\n\r\n    closeOptionsModal() {\r\n        this.modalRef.close();\r\n    }\r\n\r\n    isPeriodFilterChanged(periodFilter: PeriodSelectionPopUp) {\r\n        this.selectedPeriodData = cloneDeep(periodFilter);\r\n        this.selectedStartDate = periodFilter.startDate;\r\n        this.selectedEndDate = periodFilter.endDate;\r\n        this.setMinMaxDateRangeAsPerQuarter();\r\n        this.customDateRangeAddRestriction(periodFilter);\r\n        this.isFilterDropdownValueChanged();\r\n    }\r\n\r\n    customDateRangeAddRestriction(periodFilter: PeriodSelectionPopUp) {\r\n        if (periodFilter.periodMode === this.constants.CustomRange) {\r\n            if (periodFilter.startDate) {\r\n                const nextThirteenWeekDate = dayjs(periodFilter.startDate).add(13, \"weeks\");\r\n                this.minMaxDateRangeForCalendar.endDate = dayjs\r\n                    .min(nextThirteenWeekDate, dayjs(this.minMaxDateRangeForCalendar.endDate))\r\n                    .format(this.DATE_FORMAT);\r\n            } else if (periodFilter.endDate) {\r\n                const prevThirteenWeekDate = dayjs(periodFilter.startDate).subtract(13, \"weeks\");\r\n                this.minMaxDateRangeForCalendar.endDate = dayjs\r\n                    .min(prevThirteenWeekDate, dayjs(this.minMaxDateRangeForCalendar.endDate))\r\n                    .format(this.DATE_FORMAT);\r\n            }\r\n        }\r\n    }\r\n\r\n    // default is broadcast quater year\r\n    setDefaultPeriodFilter(calendarData: ICalendarTypeResponse) {\r\n        let selectedQuarter;\r\n        const quarter = calendarData.BroadcastQuarterYear;\r\n        for (let i = 0; i < quarter.length; i++) {\r\n            selectedQuarter = quarter[i].Quarters.filter((data) => data.IsCurrentQuarter);\r\n            if (selectedQuarter.length) {\r\n                break;\r\n            }\r\n        }\r\n        this.defaultQuarterYear = dayjs(selectedQuarter[0].EndDate).format(\"YYYY\");\r\n        this.defaultQuarter = selectedQuarter[0].DisplayDate;\r\n\r\n        this.selectedStartDate = dayjs(selectedQuarter[0].StartDate).format(this.DATE_FORMAT);\r\n        this.selectedEndDate = dayjs(selectedQuarter[0].EndDate).format(this.DATE_FORMAT);\r\n    }\r\n\r\n    onApplyDashboardFilterAndUpdateNavigation() {\r\n        const selectedStationIds = this.stationsForMultiSelection\r\n            .filter((station) => station.isSelected)\r\n            .map((station) => station.id);\r\n        this.updateStationIdService.updateStationIdInLocalStorage(selectedStationIds);\r\n        this.previousSelectedStation = cloneDeep(this.selectedStation);\r\n        this.previousMultiSelectStations = cloneDeep(this.stationsForMultiSelection);\r\n        this.setClonedDataAndEmitFilters(true);\r\n        if (this.showNormalization) {\r\n            this.showSelectedDemoValue();\r\n        }\r\n        // If handleNavigation is true : dashboard-filter-modal-component will handle navigation\r\n        // else parent component will handle navigation\r\n        if (this.handleNavigation) {\r\n            this.updateNavigationHistory();\r\n        }\r\n\r\n        if (this.showMultiSelectionForStation) this.setMultipleStationViewText();\r\n\r\n        this.closeOptionsModal();\r\n    }\r\n\r\n    showSelectedDemoValue() {\r\n        if (this.selectedNormalization?.toggle) {\r\n            const demoId = this.selectedNormalization?.demoId;\r\n            this.demoToShow = this.normalizationDemographics.filter((item) => item.id === demoId)[0].text;\r\n        } else {\r\n            this.demoToShow = null;\r\n        }\r\n    }\r\n\r\n    setClonedDataAndEmitFilters(updateNavigation: boolean = false) {\r\n        const filterApplied = this.setClonedFilter(updateNavigation);\r\n        this.applyFilter.emit(filterApplied);\r\n    }\r\n\r\n    setClonedFilter(updateNavigation: boolean) {\r\n        this.clonedFilter = {\r\n            periodData: cloneDeep(this.selectedPeriodData),\r\n            stationId: this.showStation && !this.showMultiSelectionForStation ? this.selectedStation.id : null,\r\n            stationIds:\r\n                this.showStation && this.showMultiSelectionForStation\r\n                    ? this.stationsForMultiSelection\r\n                        ?.filter((station) => station.isSelected)\r\n                        .map((station) => station.id)\r\n                    : [],\r\n            og: this.showOwnershipGroup ? this.selectedOwnershipGroup : null,\r\n            updateNavigation,\r\n        };\r\n        this.updateStationIdService.updateStationIdInLocalStorage(\r\n            this.showMultiSelectionForStation ? this.clonedFilter.stationIds : [this.clonedFilter.stationId],\r\n        );\r\n        this.addEquivalizationKeyInClonedFilter(this.selectedEquivilizationToggle);\r\n        this.addNormalizationKeyInClonedFilter(this.selectedNormalization);\r\n        this.setDefaultSelectedPeriodData();\r\n        return this.clonedFilter;\r\n    }\r\n\r\n    addEquivalizationKeyInClonedFilter(val: boolean) {\r\n        if (this.showEquivilization) {\r\n            this.clonedFilter.isEquivalised = val;\r\n        }\r\n    }\r\n\r\n    addNormalizationKeyInClonedFilter(val: NormalizedData) {\r\n        if (this.showNormalization) {\r\n            this.clonedFilter.normalizedData = val;\r\n        }\r\n    }\r\n\r\n    setDefaultSelectedPeriodData() {\r\n        if (this.clonedFilter.periodData == null && this.defaultQuarter) {\r\n            this.clonedFilter.periodData = {\r\n                year: this.defaultQuarterYear,\r\n                quarter: this.defaultQuarter,\r\n                calendarType: this.constants.Broadcast,\r\n                periodMode: this.constants.Quarter,\r\n                month: null,\r\n                startDate: this.selectedStartDate,\r\n                endDate: this.selectedEndDate,\r\n            };\r\n            this.clonedFilter = cloneDeep(this.clonedFilter);\r\n        } else {\r\n            this.clonedFilter.periodData = cloneDeep(this.selectedPeriodData);\r\n        }\r\n    }\r\n\r\n    onCancelClicked() {\r\n        this.selectedStartDate = this.clonedFilter.periodData?.startDate;\r\n        this.selectedEndDate = this.clonedFilter.periodData?.endDate;\r\n\r\n        this.selectedPeriodData = cloneDeep(this.clonedFilter.periodData);\r\n        this.selectedEquivilizationToggle = this.showEquivilization\r\n            ? this.clonedFilter.isEquivalised\r\n            : this.selectedEquivilizationToggle;\r\n        this.setPreviousDataForStationOrOG();\r\n        this.setGenericPeriodSelectionComponentData();\r\n        this.setMinMaxDateRangeAsPerQuarter();\r\n        this.closeOptionsModal();\r\n    }\r\n\r\n    setPreviousDataForStationOrOG() {\r\n        if (this.showStation) {\r\n            let currentSelectedStationId;\r\n            let previousSelectedStationId;\r\n\r\n            if (this.showMultiSelectionForStation) {\r\n                this.stationsForMultiSelection = cloneDeep(this.previousMultiSelectStations);\r\n            } else {\r\n                currentSelectedStationId = this.selectedStation?.id;\r\n                previousSelectedStationId = this.clonedFilter.stationId;\r\n                this.selectedStation = this.stations.filter((n) => n.id === this.clonedFilter.stationId)[0];\r\n            }\r\n\r\n            if (currentSelectedStationId === previousSelectedStationId) {\r\n                this.callBackFuncOnCancelClicked();\r\n            } else {\r\n                this.setNormalizationData(this.callBackFuncOnCancelClicked);\r\n            }\r\n        } else if (this.showOwnershipGroup) {\r\n            const currentSelectedOgId = this.selectedOwnershipGroup.id;\r\n            const previousSelectedOgId = this.clonedFilter.og.id;\r\n            this.selectedOwnershipGroup = this.ownershipGroup.filter((n) => n.id === this.clonedFilter.og.id)[0];\r\n\r\n            if (currentSelectedOgId === previousSelectedOgId) {\r\n                this.callBackFuncOnCancelClicked();\r\n            } else {\r\n                this.setNormalizationData(this.callBackFuncOnCancelClicked);\r\n            }\r\n        }\r\n    }\r\n\r\n    callBackFuncOnCancelClicked() {\r\n        this.selectedNormalization = this.showNormalization\r\n            ? cloneDeep(this.clonedFilter.normalizedData)\r\n            : this.selectedNormalization;\r\n    }\r\n\r\n    resetClonedFilter() {\r\n        this.clonedFilter = {\r\n            periodData: null,\r\n            stationId: null,\r\n            stationIds: [],\r\n            og: null,\r\n            updateNavigation: null,\r\n        };\r\n\r\n        this.addEquivalizationKeyInClonedFilter(false);\r\n        this.addNormalizationKeyInClonedFilter(null);\r\n    }\r\n\r\n    updateNavigationHistory() {\r\n        const queryParams = cloneDeep(this.setClonedFilter(true));\r\n        // Component will handle the navigation, on change of filters\r\n        if (this.handleNavigation) {\r\n            delete queryParams.updateNavigation;\r\n        }\r\n\r\n        this.router.navigate([], {\r\n            relativeTo: this.currentRoute,\r\n            queryParams: { popupFilter: JSON.stringify(queryParams) },\r\n            queryParamsHandling: \"merge\",\r\n        });\r\n    }\r\n\r\n    stationSelected(selectedStation: IdTextForDropdown) {\r\n        this.selectedStation = selectedStation;\r\n        const previousQuarterFilter = this.filterData.stationCalendarTypeMap.get(this.previousSelectedStation.id);\r\n        const currentQuarterFilter = this.filterData.stationCalendarTypeMap.get(this.selectedStation.id);\r\n\r\n        if (previousQuarterFilter.BroadcastQuarterYear.length !== currentQuarterFilter.BroadcastQuarterYear.length) {\r\n            this.setGenericPeriodSelectionComponentData();\r\n            if (this.isPeriodData()) {\r\n                this.setStartAndEndDate(this.calendarData);\r\n                this.setMinMaxDateRangeAsPerQuarter();\r\n            }\r\n        }\r\n\r\n        // this.previousSelectedStation = cloneDeep(this.selectedStation);\r\n        this.selectedStation = cloneDeep(selectedStation);\r\n\r\n        // this.isStationChanged = true;\r\n        this.setNormalizationData(this.callBackFuncOnStationChange);\r\n\r\n        // this.isStationChanged = false;\r\n    }\r\n\r\n    stationSelectionChange(stations: MultiSelectIdText[]) {\r\n        const stationIds: number[] = stations.map(n => n.id);\r\n        // eslint-disable-next-line no-return-assign\r\n        this.stationsForMultiSelection.map(n => n.isSelected = stationIds.includes(n.id));\r\n        this.isFilterDropdownValueChanged();\r\n    }\r\n\r\n    ownershipGroupSelected(selectedOg: IdTextForDropdown) {\r\n        const previousQuarterFilter = this.filterData.ogCalendarTypeMap.get(this.previousSelectedOwnershipGroup.id);\r\n        const currentQuarterFilter = this.filterData.ogCalendarTypeMap.get(this.selectedOwnershipGroup.id);\r\n\r\n        if (previousQuarterFilter.BroadcastQuarterYear.length !== currentQuarterFilter.BroadcastQuarterYear.length) {\r\n            this.setGenericPeriodSelectionComponentData();\r\n            if (this.isPeriodData()) {\r\n                this.setStartAndEndDate(this.calendarData);\r\n                this.setMinMaxDateRangeAsPerQuarter();\r\n            }\r\n        }\r\n\r\n        this.previousSelectedOwnershipGroup = cloneDeep(this.selectedOwnershipGroup);\r\n        this.selectedOwnershipGroup = cloneDeep(selectedOg);\r\n\r\n        // this.isStationChanged = true;\r\n        this.setNormalizationData(this.callBackFuncOnStationChange);\r\n\r\n        // this.isStationChanged = false;\r\n    }\r\n\r\n    callBackFuncOnStationChange() {\r\n        this.selectedNormalization = this.showNormalization ? this.setDefaultDataForNormalization() : null;\r\n        this.isFilterDropdownValueChanged();\r\n    }\r\n\r\n    configModalOptions() {\r\n        this.ngbModalOptions = {\r\n            windowClass: \"dashboard-filter-modal\",\r\n        };\r\n    }\r\n\r\n    getLoginUserId() {\r\n        this.loggedInUserId = +this.consumingProjectDashboardFilterService.loggedInUserId;\r\n    }\r\n\r\n    isFilterDropdownValueChanged() {\r\n        this.isFilterValueChanged =\r\n            !isEqual(this.clonedFilter.periodData?.startDate, this.selectedStartDate) ||\r\n            !isEqual(this.clonedFilter.periodData?.endDate, this.selectedEndDate) ||\r\n            !isEqual(this.clonedFilter.periodData?.periodMode, this.selectedPeriodData?.periodMode) ||\r\n            !isEqual(this.clonedFilter.periodData?.calendarType, this.selectedPeriodData?.calendarType);\r\n\r\n        if (this.showNormalization && !this.isFilterValueChanged) {\r\n            this.isFilterValueChanged = !isEqual(this.clonedFilter.normalizedData, this.selectedNormalization);\r\n        }\r\n\r\n        if (this.showEquivilization && !this.isFilterValueChanged) {\r\n            this.isFilterValueChanged = this.clonedFilter.isEquivalised !== this.selectedEquivilizationToggle;\r\n        }\r\n\r\n        if (this.showStation && !this.isFilterValueChanged) {\r\n            let isStationSelectionChanged: boolean = false;\r\n\r\n            if (this.showMultiSelectionForStation) {\r\n                const selectedStationIds = this.stationsForMultiSelection?.filter((s) => s.isSelected).map((s) => s.id);\r\n                isStationSelectionChanged =\r\n                    selectedStationIds.length && !isEqual(this.clonedFilter.stationIds, selectedStationIds);\r\n            } else isStationSelectionChanged = !isEqual(this.clonedFilter.stationId, this.selectedStation?.id);\r\n\r\n            this.isFilterValueChanged = isStationSelectionChanged;\r\n        }\r\n\r\n        if (this.showOwnershipGroup && !this.isFilterValueChanged) {\r\n            this.isFilterValueChanged = !isEqual(this.clonedFilter.og.id, this.selectedOwnershipGroup?.id);\r\n        }\r\n    }\r\n\r\n    updateEquivalizationToggle(val: boolean) {\r\n        this.selectedEquivilizationToggle = val;\r\n        this.isFilterDropdownValueChanged();\r\n    }\r\n\r\n    updateNormalizationValue(val: NormalizedData) {\r\n        this.selectedNormalization = val;\r\n        this.isFilterDropdownValueChanged();\r\n    }\r\n\r\n    setStationDropdownConfig() {\r\n        this.stationDropdownConfig = { ...this.annaGlobalService.defaultSingleSelectConfig };\r\n        this.stationDropdownConfig.placeholder = \"No station selected\";\r\n    }\r\n\r\n    setMultiStationSelectionConfig() {\r\n        this.multiStationsDropdownConfig = { ...this.annaGlobalService.defaultMultiSelectConfig };\r\n        this.multiStationsDropdownConfig.placeholder = \"Select station\";\r\n    }\r\n\r\n    setOGDropdownConfig() {\r\n        this.ogDropdownConfig = { ...this.annaGlobalService.defaultSingleSelectConfig };\r\n        this.ogDropdownConfig.placeholder = \"No OG selected\";\r\n    }\r\n}\r\n","<article class=\"selected-filters-container\">\r\n    <section\r\n        *ngIf=\"filterData\"\r\n        class=\"filter-view\"\r\n    >\r\n        <div *ngIf=\"showStation && !showMultiSelectionForStation\">\r\n            <header class=\"header\">Station</header>\r\n            <p class=\"selected-value\">\r\n                {{ previousSelectedStation && previousSelectedStation.text ? previousSelectedStation.text : \"-\" }}\r\n            </p>\r\n        </div>\r\n\r\n        <div *ngIf=\"showStation && showMultiSelectionForStation\">\r\n            <header class=\"header\">Stations</header>\r\n            <p class=\"selected-value\">{{ multiStationFilterViewText }}</p>\r\n        </div>\r\n\r\n        <div *ngIf=\"showOwnershipGroup\">\r\n            <header class=\"header\">OG</header>\r\n            <p class=\"selected-value\">\r\n                {{ selectedOwnershipGroup && selectedOwnershipGroup.text ? selectedOwnershipGroup.text : \"-\" }}\r\n            </p>\r\n        </div>\r\n\r\n        <div>\r\n            <ng-container\r\n                *ngIf=\"!periodDataAndNormalizationLoader\"\r\n                [ngTemplateOutlet]=\"periodSelected\"\r\n            ></ng-container>\r\n            <ng-container\r\n                *ngIf=\"periodDataAndNormalizationLoader\"\r\n                [ngTemplateOutlet]=\"periodSkeletonLoader\"\r\n            ></ng-container>\r\n        </div>\r\n\r\n        <div *ngIf=\"showNormalization\">\r\n            <ng-container *ngIf=\"!periodDataAndNormalizationLoader\">\r\n                <header class=\"header\">Demo Normalization</header>\r\n                <ng-container [ngTemplateOutlet]=\"normalizationSelected\"></ng-container>\r\n            </ng-container>\r\n            <ng-container\r\n                *ngIf=\"periodDataAndNormalizationLoader\"\r\n                [ngTemplateOutlet]=\"normalizationSkeletonLoader\"\r\n            ></ng-container>\r\n        </div>\r\n\r\n        <div *ngIf=\"showEquivilization\">\r\n            <ng-container *ngIf=\"!periodDataAndNormalizationLoader\">\r\n                <header class=\"header\">Equivalized Data</header>\r\n                <p class=\"selected-value\">{{ clonedFilter.isEquivalised ? \"Yes\" : \"No\" }}</p>\r\n            </ng-container>\r\n            <ng-container\r\n                *ngIf=\"periodDataAndNormalizationLoader\"\r\n                [ngTemplateOutlet]=\"normalizationSkeletonLoader\"\r\n            ></ng-container>\r\n        </div>\r\n    </section>\r\n\r\n    <section\r\n        *ngIf=\"!filterData && !error\"\r\n        class=\"filter-view\"\r\n    >\r\n        <ng-container [ngTemplateOutlet]=\"skeletonLoader\"></ng-container>\r\n    </section>\r\n\r\n    <button\r\n        *ngIf=\"!toDisable\"\r\n        class=\"anna edit-button\"\r\n        [disabled]=\"!filterData || noQuarterYearPresent || disableEditButton || toDisable\"\r\n        (click)=\"openDashboardFilterModal()\"\r\n    >\r\n        Edit\r\n    </button>\r\n    <ng-container\r\n        *ngIf=\"toDisable\"\r\n        [ngTemplateOutlet]=\"editButtonLoader\"\r\n    ></ng-container>\r\n</article>\r\n\r\n<ng-template\r\n    #dbFilterModal\r\n    let-modal\r\n>\r\n    <div class=\"modal-header confirm-modal-header\">\r\n        <h3 class=\"modal-title\">{{ headerText }}</h3>\r\n        <!-- <i class=\"mi mdi-close-icon mdi-font-md close pull-right\" style=\"cursor: pointer\" (click)=\"onCancelClicked()\"></i> -->\r\n    </div>\r\n    <div class=\"modal-body\">\r\n        <div class=\"filter-dropdown\">\r\n            <div\r\n                class=\"popup-filter\"\r\n                *ngIf=\"showStation\"\r\n            >\r\n                <header class=\"popup-dropdown-label\">Station</header>\r\n                <anna-design-single-select\r\n                    *ngIf=\"stations?.length && !showMultiSelectionForStation\"\r\n                    [items]=\"stations\"\r\n                    [selectedItem]=\"selectedStation\"\r\n                    [config]=\"stationDropdownConfig\"\r\n                    (valueChanged)=\"stationSelected($event)\"\r\n                >\r\n                </anna-design-single-select>\r\n\r\n                <anna-design-multi-select\r\n                    *ngIf=\"stationsForMultiSelection?.length && showMultiSelectionForStation\"\r\n                    [config]=\"multiStationsDropdownConfig\"\r\n                    [items]=\"stationsForMultiSelection\"\r\n                    (valueChanged)=\"stationSelectionChange($event)\"\r\n                >\r\n                </anna-design-multi-select>\r\n            </div>\r\n\r\n            <div\r\n                class=\"popup-filter\"\r\n                *ngIf=\"showOwnershipGroup\"\r\n            >\r\n                <header class=\"popup-dropdown-label\">Ownership Group</header>\r\n                <anna-design-single-select\r\n                    *ngIf=\"ownershipGroup.length\"\r\n                    [items]=\"ownershipGroup\"\r\n                    [selectedItem]=\"selectedOwnershipGroup\"\r\n                    [config]=\"ogDropdownConfig\"\r\n                    (valueChanged)=\"ownershipGroupSelected($event)\"\r\n                >\r\n                </anna-design-single-select>\r\n            </div>\r\n\r\n            <div class=\"popup-filter\">\r\n                <anna-design-generic-period-selection\r\n                    [selectedData]=\"persistingFilter?.periodData\"\r\n                    [disablePeriodSelection]=\"false\"\r\n                    [PeriodOptions]=\"PeriodOptions\"\r\n                    [minMaxDateRangeForCalendar]=\"minMaxDateRangeForCalendar\"\r\n                    [startDateConsideringFactor]=\"StartDateConsideringFactor.FLIGHT_START_DATE\"\r\n                    (isFilterChanged)=\"isPeriodFilterChanged($event)\"\r\n                    [toShowAllPeriodMode]=\"toShowAllPeriodModeSetting\"\r\n                    [showAllSelectionInDropdown]=\"false\"\r\n                    [toShowAllMonthsOfYear]=\"false\"\r\n                >\r\n                </anna-design-generic-period-selection>\r\n            </div>\r\n\r\n            <div\r\n                class=\"border-top\"\r\n                *ngIf=\"showNormalization\"\r\n            >\r\n                <anna-design-demo-normalization\r\n                    [dropdownData]=\"normalizationDemographics\"\r\n                    [selectedFilters]=\"selectedNormalization\"\r\n                    (normalizationChange)=\"updateNormalizationValue($event)\"\r\n                ></anna-design-demo-normalization>\r\n            </div>\r\n\r\n            <div\r\n                class=\"border-top\"\r\n                *ngIf=\"showEquivilization\"\r\n            >\r\n                <anna-design-equivalisation-of-data-toggle-btn\r\n                    [toShow]=\"true\"\r\n                    [isDisabled]=\"disableEquivalization\"\r\n                    [isEquivalisedData]=\"selectedEquivilizationToggle\"\r\n                    [updateQueryParamOnApplyBtn]=\"true\"\r\n                    [defaultEquivalisedValue]=\"true\"\r\n                    [equivalisationTooltipClass]=\"'dashboard-equivalization-tooltip'\"\r\n                    [isNewCustomEquivalisationMessage]=\"true\"\r\n                    (toggleChanged)=\"updateEquivalizationToggle($event)\"\r\n                ></anna-design-equivalisation-of-data-toggle-btn>\r\n            </div>\r\n        </div>\r\n        <div class=\"btn-group\">\r\n            <button\r\n                class=\"anna cancel-button\"\r\n                (click)=\"onCancelClicked()\"\r\n            >\r\n                Cancel\r\n            </button>\r\n\r\n            <button\r\n                class=\"anna apply-button\"\r\n                [disabled]=\"\r\n                    !isFilterValueChanged ||\r\n                    !selectedStartDate ||\r\n                    !selectedEndDate ||\r\n                    (selectedNormalization?.toggle && !selectedNormalization?.demoId)\r\n                \"\r\n                (click)=\"onApplyDashboardFilterAndUpdateNavigation()\"\r\n            >\r\n                Apply\r\n            </button>\r\n        </div>\r\n    </div>\r\n</ng-template>\r\n\r\n<ng-template #periodSelected>\r\n    <header class=\"header\">Period</header>\r\n    <ng-container *ngIf=\"clonedFilter.periodData\">\r\n        <ng-container [ngSwitch]=\"clonedFilter.periodData.periodMode\">\r\n            <p\r\n                class=\"selected-value\"\r\n                *ngSwitchCase=\"constants.Quarter\"\r\n            >\r\n                {{ clonedFilter.periodData.year }}\r\n                {{ clonedFilter.periodData.quarter }}\r\n            </p>\r\n\r\n            <p\r\n                class=\"selected-value\"\r\n                *ngSwitchCase=\"constants.Month\"\r\n            >\r\n                {{ clonedFilter.periodData.year }}\r\n                {{ clonedFilter.periodData.month }}\r\n                ({{ clonedFilter.periodData.startDate | date: MONTH_DATE_FORMAT_HTML }} -\r\n                {{ clonedFilter.periodData.endDate | date: MONTH_DATE_FORMAT_HTML }})\r\n            </p>\r\n\r\n            <p\r\n                class=\"selected-value\"\r\n                *ngSwitchCase=\"constants.CustomRange\"\r\n            >\r\n                {{ clonedFilter.periodData.startDate | date: DATE_FORMAT_HTML }} -\r\n                {{ clonedFilter.periodData.endDate | date: DATE_FORMAT_HTML }}\r\n            </p>\r\n\r\n            <p\r\n                class=\"selected-value\"\r\n                *ngSwitchDefault\r\n            >\r\n                {{ clonedFilter.periodData.startDate | date: DATE_FORMAT_HTML }} -\r\n                {{ clonedFilter.periodData.endDate | date: DATE_FORMAT_HTML }}\r\n            </p>\r\n        </ng-container>\r\n    </ng-container>\r\n\r\n    <ng-container *ngIf=\"!clonedFilter.periodData\">\r\n        <p class=\"selected-value\">-</p>\r\n    </ng-container>\r\n</ng-template>\r\n\r\n<!-- <ng-template #userSelected>\r\n  <header>Users</header>\r\n  <p *ngIf=\"isAllUserSelected\"> {{ clonedFilter.users.usersFiltered ?  'All' : '-' }} </p>\r\n  <p *ngIf=\"!isAllUserSelected\">\r\n    {{selectedUserFirstNameInArr}}\r\n    <ng-container *ngIf=\"clonedFilter.users.usersStateArr.selectedUsers.length > 1\">\r\n      {{' + ' + (clonedFilter.users.usersStateArr.selectedUsers.length - 1) }}\r\n    </ng-container>\r\n  </p>\r\n</ng-template> -->\r\n\r\n<ng-template #normalizationSelected>\r\n    <ng-container *ngIf=\"clonedFilter.normalizedData\">\r\n        <p class=\"selected-value\">\r\n            {{ clonedFilter.normalizedData.toggle ? \"Yes\" : \"No\" }}\r\n            <span *ngIf=\"clonedFilter.normalizedData.toggle\"> ({{ demoToShow }}) </span>\r\n        </p>\r\n    </ng-container>\r\n    <ng-container *ngIf=\"!clonedFilter.normalizedData\">\r\n        <p class=\"selected-value\">-</p>\r\n    </ng-container>\r\n</ng-template>\r\n\r\n<ng-template #skeletonLoader>\r\n    <anna-design-skt-loader\r\n        [theme]=\"{\r\n            height: '100%',\r\n            width: '150px',\r\n            'margin-bottom': '0',\r\n            'margin-right': '20px',\r\n            display: 'inline-block'\r\n        }\"\r\n    >\r\n    </anna-design-skt-loader>\r\n    <anna-design-skt-loader\r\n        [theme]=\"{\r\n            height: '100%',\r\n            width: '170px',\r\n            'margin-bottom': '0',\r\n            'margin-right': '20px',\r\n            display: 'inline-block'\r\n        }\"\r\n    >\r\n    </anna-design-skt-loader>\r\n    <anna-design-skt-loader\r\n        *ngIf=\"showEquivilization\"\r\n        [theme]=\"{\r\n            height: '100%',\r\n            width: '100px',\r\n            'margin-bottom': '0',\r\n            'margin-right': '20px',\r\n            display: 'inline-block'\r\n        }\"\r\n    >\r\n    </anna-design-skt-loader>\r\n    <anna-design-skt-loader\r\n        *ngIf=\"showNormalization\"\r\n        [theme]=\"{\r\n            height: '100%',\r\n            width: '100px',\r\n            'margin-bottom': '0',\r\n            'margin-right': '20px',\r\n            display: 'inline-block'\r\n        }\"\r\n    >\r\n    </anna-design-skt-loader>\r\n</ng-template>\r\n\r\n<ng-template #periodSkeletonLoader>\r\n    <anna-design-skt-loader\r\n        [theme]=\"{\r\n            height: '100%',\r\n            width: '167px',\r\n            'margin-bottom': '0',\r\n            'margin-right': '0px',\r\n            display: 'inline-block'\r\n        }\"\r\n    >\r\n    </anna-design-skt-loader>\r\n</ng-template>\r\n\r\n<ng-template #normalizationSkeletonLoader>\r\n    <anna-design-skt-loader\r\n        [theme]=\"{\r\n            height: '100%',\r\n            width: '109px',\r\n            'margin-bottom': '0',\r\n            'margin-right': '0px',\r\n            display: 'inline-block'\r\n        }\"\r\n    >\r\n    </anna-design-skt-loader>\r\n</ng-template>\r\n\r\n<ng-template #editButtonLoader>\r\n    <anna-design-skt-loader\r\n        [theme]=\"{\r\n            height: '100%',\r\n            width: '52px',\r\n            'margin-bottom': '0',\r\n            'margin-right': '0px',\r\n            display: 'inline-block'\r\n        }\"\r\n    >\r\n    </anna-design-skt-loader>\r\n</ng-template>\r\n","import { NgClass } from \"@angular/common\";\r\nimport { ChangeDetectionStrategy, Component, Input, ViewChild } from \"@angular/core\";\r\nimport { ArcElement, Chart, ChartOptions, ChartType, Filler, Legend, PieController, Tooltip } from \"chart.js\";\r\nimport { BaseChartDirective } from \"ng2-charts\";\r\n\r\nimport { NewChartJSType } from \"../stack-chart/models/chart.model\";\r\n\r\nChart.register(PieController, ArcElement, Tooltip, Legend, Filler);\r\n\r\n@Component({\r\n    selector: \"anna-design-doughnut-chart\",\r\n    templateUrl: \"./doughnut-chart.component.html\",\r\n    styleUrls: [\"./doughnut-chart.component.scss\"],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    imports: [NgClass, BaseChartDirective],\r\n    standalone: true,\r\n})\r\nexport class DoughnutChartComponent {\r\n    @Input({ required: true }) doughnutChartData: NewChartJSType;\r\n    @Input({ required: true }) doughnutChartOptions: ChartOptions;\r\n    @Input() parentComponent: string;\r\n\r\n    @ViewChild(BaseChartDirective) chart: BaseChartDirective;\r\n\r\n    public doughnutChartType: ChartType = \"doughnut\";\r\n}\r\n","<div\r\n    [ngClass]=\"{\r\n        'premption-card': parentComponent === 'PREEMPTION',\r\n        'order-card-chart': parentComponent === 'ORDER',\r\n        'drr-card': parentComponent === 'DRRCARD',\r\n        'advertiser-card': parentComponent === 'ADVERTISER'\r\n    }\"\r\n>\r\n    <canvas\r\n        baseChart\r\n        [data]=\"doughnutChartData\"\r\n        [options]=\"doughnutChartOptions\"\r\n        [legend]=\"false\"\r\n        [type]=\"doughnutChartType\"\r\n    >\r\n    </canvas>\r\n</div>\r\n","import { NgClass, NgFor, NgIf, NgStyle, NgTemplateOutlet } from \"@angular/common\";\r\nimport {\r\n    ChangeDetectionStrategy,\r\n    ChangeDetectorRef,\r\n    Component,\r\n    EventEmitter,\r\n    Input,\r\n    OnChanges,\r\n    OnInit,\r\n    Output,\r\n    SimpleChanges,\r\n    ViewChild,\r\n} from \"@angular/core\";\r\nimport {\r\n    AnnaCoreModule,\r\n    AnnaFilterService,\r\n    AnnaGlobalConfigService,\r\n    AnnaPayForPerformanceIconTemplateComponent,\r\n    IConfirmationPopupConfig,\r\n} from \"@annalib/anna-core\";\r\nimport { isEqual } from \"lodash-es\";\r\nimport { NgxSkeletonLoaderModule } from \"ngx-skeleton-loader\";\r\n\r\nimport { ConfirmationPopupComponent } from \"../confirmation-popup/confirmation-popup.component\";\r\nimport { EasyFilters, Filter } from \"./models/easy-filters.model\";\r\n\r\n@Component({\r\n    selector: \"anna-design-easy-filters\",\r\n    templateUrl: \"./easy-filters.component.html\",\r\n    styleUrls: [\"./easy-filters.component.scss\"],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    imports: [\r\n        NgIf,\r\n        NgFor,\r\n        NgClass,\r\n        NgStyle,\r\n        AnnaCoreModule,\r\n        NgTemplateOutlet,\r\n        NgxSkeletonLoaderModule,\r\n        AnnaCoreModule,\r\n        AnnaPayForPerformanceIconTemplateComponent,\r\n        ConfirmationPopupComponent,\r\n    ],\r\n})\r\nexport class EasyFiltersComponent implements OnChanges, OnInit {\r\n    @Input() showLoader: boolean;\r\n    @Input() tableData: any[];\r\n    @Input() clonedTableData: any[];\r\n    @Input() autoSelectionOfOnlyEnabledFilter: boolean = false;\r\n    @Input() showUnsavedChangesPopup: boolean = false;\r\n    @Input() isUnSavedChangesPresent: boolean = false;\r\n    @Input() defaultFilterNameToBeSelected: string = null;\r\n    @Input() filterToBeUpdatedManually: string = null;\r\n\r\n    @Input({ required: true }) easyFilters: EasyFilters[];\r\n    @Input() numberOfItemsForLoader: number = 4;\r\n    @Output() easyFilterClickEvent = new EventEmitter<any>(); // Change any to interface: EasyFilterEmittedData\r\n    @Output() easyFilterIsSelected = new EventEmitter<any>();\r\n\r\n    @Output() getUpdatedDataAfterUserAction = new EventEmitter<any>();\r\n\r\n    @ViewChild(\"easyFilterDiscardUnsavedChangesConfirmModal\")\r\n    private daypartUnsavedChangesConfirmModal: ConfirmationPopupComponent;\r\n    discardUnsavedChangesConfirmConfig: IConfirmationPopupConfig;\r\n    pfpIconActiveColor = \"#9B1B93\";\r\n    groupIdAssociatedKeysMap: Map<string, string[]>;\r\n    filterNameValueMap: Map<string, any[]>;\r\n    isEasyFilterClicked: boolean = false;\r\n    selectedGroupId: string;\r\n    selectedFilter: Filter;\r\n\r\n    constructor(\r\n        private annaFilterService: AnnaFilterService,\r\n        private cdRef: ChangeDetectorRef,\r\n        private annaGlobalConfig: AnnaGlobalConfigService,\r\n    ) {}\r\n\r\n    ngOnInit(): void {\r\n        if (this.showUnsavedChangesPopup) {\r\n            this.setDiscardUnsavedChangesConfirmConfig();\r\n        }\r\n    }\r\n    ngOnChanges(changes: SimpleChanges): void {\r\n        if (changes.easyFilters && changes.easyFilters.currentValue) {\r\n            this.createGroupIdAssociatedKeysMap();\r\n        }\r\n\r\n        // This func will be called\r\n        // 1. when there is no easy filter applied\r\n        // 2. Column level filter or reset all filter\r\n        if (!this.showLoader && changes.tableData?.currentValue) {\r\n            if (!this.isEasyFilterClicked) {\r\n                this.enableDisableIntelliFilter();\r\n                // this func will set the easy filter in active state which are part of persisting filter\r\n                if (this.annaFilterService.appliedFiltersArray.length > 0) {\r\n                    this.setEasyFilterInActiveState();\r\n                } else {\r\n                    // when user clicks on reset all filters\r\n                    this.unActiveAllIntelliFilters();\r\n\r\n                    if (this.defaultFilterNameToBeSelected) {\r\n                        this.selectDefaultFilter();\r\n                    }\r\n                }\r\n            } else {\r\n                this.isEasyFilterClicked = false;\r\n            }\r\n        }\r\n\r\n        if (\r\n            !this.showLoader &&\r\n            this.autoSelectionOfOnlyEnabledFilter &&\r\n            changes.clonedTableData?.currentValue?.length\r\n        ) {\r\n            this.checkIfThereIsOnlyOneEnabledEasyFilter();\r\n        }\r\n\r\n        if (!this.showLoader && this.filterToBeUpdatedManually) {\r\n            this.updateEasyFiltersAfterUserTookAction(this.filterToBeUpdatedManually);\r\n        }\r\n    }\r\n\r\n    selectDefaultFilter() {\r\n        const filterObjectArr = this.getEasyFilterObject(this.defaultFilterNameToBeSelected);\r\n\r\n        if (filterObjectArr) {\r\n            const [filter, groupId] = filterObjectArr;\r\n            const isDataPresentWithSelectedFilterVal = !filter.isDisabled;\r\n\r\n            if (isDataPresentWithSelectedFilterVal) {\r\n                this.easyFilterClicked(filter, groupId);\r\n            }\r\n        }\r\n    }\r\n\r\n    unActiveAllIntelliFilters() {\r\n        this.easyFilters.forEach((group) => {\r\n            group.filters.forEach((filter) => {\r\n                filter.isActive = false;\r\n            });\r\n        });\r\n    }\r\n\r\n    setEasyFilterInActiveState() {\r\n        this.annaFilterService.appliedFiltersArray.forEach((filteredKey) => {\r\n            if (filteredKey.includes(\"easy_\")) {\r\n                const filteredKeyArr = filteredKey.split(\"_\");\r\n                const key = filteredKeyArr[2];\r\n                const groupId = filteredKeyArr[1];\r\n\r\n                const filteredGroup = this.easyFilters.find((group) => group.groupId === groupId);\r\n\r\n                if (filteredGroup && !this.annaFilterService.tooltipSelectedMap.has(`skipFilter_${key}`)) {\r\n                    const value = this.annaFilterService.tooltipSelectedMap.get(key);\r\n                    const intelliFilter = filteredGroup.filters.find(\r\n                        (item) =>\r\n                            item.filterKeyValue.key === key &&\r\n                            this.checkIfValuesAreEqual(value, item.filterKeyValue.valueToCheck),\r\n                    );\r\n                    if (intelliFilter) {\r\n                        intelliFilter.isActive = true;\r\n                    }\r\n                }\r\n            }\r\n        });\r\n    }\r\n\r\n    checkIfValuesAreEqual(tooltipMapValue: any, easyFilterValue: any) {\r\n        if (Array.isArray(easyFilterValue)) {\r\n            return isEqual(easyFilterValue, tooltipMapValue);\r\n        }\r\n        return easyFilterValue === tooltipMapValue[0];\r\n    }\r\n\r\n    createGroupIdAssociatedKeysMap() {\r\n        this.groupIdAssociatedKeysMap = new Map();\r\n        this.filterNameValueMap = new Map();\r\n\r\n        this.easyFilters.forEach((group) => {\r\n            const groupsFilterKey: string[] = [];\r\n\r\n            group.filters.forEach((filter) => {\r\n                groupsFilterKey.push(filter.filterKeyValue.key);\r\n                this.filterNameValueMap.set(filter.text, [\r\n                    filter.filterKeyValue.key,\r\n                    filter.filterKeyValue.valueToCheck,\r\n                ]);\r\n            });\r\n\r\n            this.groupIdAssociatedKeysMap.set(group.groupId, groupsFilterKey);\r\n        });\r\n    }\r\n\r\n    enableDisableIntelliFilter() {\r\n        const appliedFiltersArr = this.annaFilterService.appliedFiltersArray;\r\n        if (\r\n            (appliedFiltersArr.length > 0 && !appliedFiltersArr[appliedFiltersArr.length - 1].includes(\"easy_\")) ||\r\n            appliedFiltersArr.length === 0\r\n        ) {\r\n            this.enableDisableIntelliFilterBasedOnColumnLevelFilter();\r\n        } else {\r\n            this.enableDisableIntelliFilterBasedOnEasyFilter();\r\n        }\r\n    }\r\n\r\n    enableDisableIntelliFilterBasedOnColumnLevelFilter() {\r\n        const filterEnabledSet = this.getEnabledFilterSet(this.tableData);\r\n\r\n        this.easyFilters.forEach((easyFilter) => {\r\n            easyFilter.filters.forEach((item) => {\r\n                item.isDisabled = !filterEnabledSet.has(item.text);\r\n            });\r\n        });\r\n    }\r\n\r\n    enableDisableIntelliFilterBasedOnEasyFilter() {\r\n        const appliedFiltersArr = this.annaFilterService.appliedFiltersArray;\r\n        const easyFilterKeyArr = appliedFiltersArr[appliedFiltersArr.length - 1].split(\"_\");\r\n        const key = easyFilterKeyArr[2];\r\n        const groupId = easyFilterKeyArr[1];\r\n        const filterValue = this.annaFilterService.tooltipSelectedMap.get(key);\r\n\r\n        const dataToUseForEnabledFilterSet = this.annaFilterService.filterData(this.clonedTableData, key);\r\n        const latestDataToUseForEnabedFilterSet = this.annaFilterService.tooltipSelectedMap.has(`skipFilter_${key}`)\r\n            ? dataToUseForEnabledFilterSet\r\n            : dataToUseForEnabledFilterSet.filter((u) => filterValue.includes(u[key]));\r\n\r\n        const enabledFilterSetForLatestGroup = this.getEnabledFilterSet(dataToUseForEnabledFilterSet);\r\n        const enabledFilterSetForOtherGroup = this.getEnabledFilterSet(latestDataToUseForEnabedFilterSet);\r\n\r\n        this.easyFilters.forEach((easyFilter) => {\r\n            const filterEnabledSet =\r\n                groupId !== easyFilter.groupId ? enabledFilterSetForOtherGroup : enabledFilterSetForLatestGroup;\r\n\r\n            easyFilter.filters.forEach((item) => {\r\n                item.isDisabled = !filterEnabledSet.has(item.text);\r\n            });\r\n        });\r\n    }\r\n\r\n    getDataForEnablingEasyFilter(groupId: string) {\r\n        const appliedFiltersArr = this.annaFilterService.appliedFiltersArray;\r\n        let dataToCheck: any[] = [];\r\n\r\n        if (\r\n            (appliedFiltersArr.length > 0 && !appliedFiltersArr[appliedFiltersArr.length - 1].includes(\"easy_\")) ||\r\n            appliedFiltersArr.length === 0\r\n        ) {\r\n            dataToCheck = this.tableData;\r\n        } else {\r\n            // Easy filter is the latest filter\r\n            const keyToSkip = appliedFiltersArr[appliedFiltersArr.length - 1].split(\"_\")[2];\r\n            dataToCheck = this.annaFilterService.filterData(this.clonedTableData, keyToSkip);\r\n        }\r\n\r\n        return dataToCheck;\r\n    }\r\n\r\n    getEnabledFilterSet(dataToCheck: any[]) {\r\n        const filterEnabledSet = new Set();\r\n\r\n        dataToCheck.forEach((row) => {\r\n            this.filterNameValueMap.forEach((value, filterText) => {\r\n                const [key, valueToCheck] = value;\r\n                const objValue = this.annaFilterService.getValueFromObject(row, key);\r\n                const valueToCompare = Array.isArray(valueToCheck) ? valueToCheck : [valueToCheck];\r\n\r\n                if (valueToCompare.includes(objValue)) {\r\n                    filterEnabledSet.add(filterText);\r\n                }\r\n            });\r\n        });\r\n\r\n        return filterEnabledSet;\r\n    }\r\n    openUnsavedChangesPopup(filter: Filter, groupId: string) {\r\n        if (this.isUnSavedChangesPresent) {\r\n            this.selectedFilter = filter;\r\n            this.selectedGroupId = groupId;\r\n            this.daypartUnsavedChangesConfirmModal.openModal();\r\n        } else {\r\n            this.easyFilterClicked(filter, groupId);\r\n        }\r\n    }\r\n\r\n    easyFilterClicked(filter: Filter, groupId: string) {\r\n        this.isEasyFilterClicked = true;\r\n        const isFilterActive = filter.isActive;\r\n        const defaultFilterPresent =\r\n            this.defaultFilterNameToBeSelected && this.isDefaultFilterPresentInTheGroup(groupId);\r\n\r\n        this.removeIntelliFilterKeysOfSameGroup(groupId, defaultFilterPresent);\r\n        this.unActiveAllIntelliFiltersOfGroup(groupId);\r\n        filter.isActive = !isFilterActive;\r\n        if (filter.isActive) {\r\n            this.easyFilterIsSelected.emit(true);\r\n        }\r\n        if (!isFilterActive) {\r\n            this.setFilterValueInTooltipSelectedMap(filter.text, groupId);\r\n        }\r\n        // Default filter is unselected\r\n        // Or Earlier you have selected some other filter and now you removed that filter\r\n        // In that case default filter unselected key should be there\r\n        else if (defaultFilterPresent) {\r\n            this.setFilterValueInTooltipSelectedMap(filter.text, groupId, true);\r\n        }\r\n\r\n        this.tableData = this.annaFilterService.filterData(this.clonedTableData, \"\");\r\n        this.enableDisableIntelliFilter();\r\n        this.easyFilterClickEvent.emit({ intelliFilter: filter, filteredData: this.tableData });\r\n    }\r\n\r\n    isDefaultFilterPresentInTheGroup(groupId: string) {\r\n        const group = this.easyFilters.find((filterGroup) => filterGroup.groupId === groupId);\r\n        if (group) {\r\n            return group.filters.some((filter) => filter.text === this.defaultFilterNameToBeSelected);\r\n        }\r\n        return false;\r\n    }\r\n\r\n    removeIntelliFilterKeysOfSameGroup(groupId: string, defaultFilterPresent: boolean) {\r\n        const appliedFiltersSet = new Set(this.annaFilterService.appliedFiltersArray);\r\n\r\n        const keys = this.groupIdAssociatedKeysMap.get(groupId);\r\n\r\n        keys.forEach((key) => {\r\n            const easyFilterKey = `easy_${groupId}_${key}`;\r\n            if (appliedFiltersSet.has(easyFilterKey)) {\r\n                this.annaFilterService.tooltipSelectedMap.delete(key);\r\n                if (defaultFilterPresent) {\r\n                    this.annaFilterService.tooltipSelectedMap.delete(`skipFilter_${key}`);\r\n                }\r\n\r\n                appliedFiltersSet.delete(easyFilterKey);\r\n            }\r\n        });\r\n\r\n        this.annaFilterService.appliedFiltersArray = [...appliedFiltersSet];\r\n    }\r\n\r\n    unActiveAllIntelliFiltersOfGroup(groupId: string) {\r\n        const currentGroupFilter = this.easyFilters.find((item) => item.groupId === groupId);\r\n        currentGroupFilter.filters.forEach((intelliFilter) => {\r\n            intelliFilter.isActive = false;\r\n        });\r\n    }\r\n\r\n    setFilterValueInTooltipSelectedMap(filterName: string, groupId: string, isDefaultFilter: boolean = false) {\r\n        const [key, value] = this.filterNameValueMap.get(filterName);\r\n        const valueToEnter = Array.isArray(value) ? value : [value];\r\n\r\n        if (isDefaultFilter) {\r\n            this.annaFilterService.tooltipSelectedMap.set(`skipFilter_${key}`, valueToEnter);\r\n        } else {\r\n            this.annaFilterService.tooltipSelectedMap.set(key, valueToEnter);\r\n        }\r\n\r\n        this.annaFilterService.appliedFiltersArray.push(`easy_${groupId}_${key}`);\r\n    }\r\n\r\n    checkIfThereIsOnlyOneEnabledEasyFilter() {\r\n        const filterEnabledSet = this.getEnabledFilterSet(this.clonedTableData);\r\n\r\n        // No need to enable filters as that logic will be handled by tableData\r\n        // as tableData is the latest filteredData based on that only filters should be enabled\r\n        if (filterEnabledSet.size === 1) {\r\n            this.easyFilters.forEach((group) => {\r\n                group.filters.forEach((filter) => {\r\n                    filter.onlyEnabledActiveFilter = filterEnabledSet.has(filter.text);\r\n                });\r\n            });\r\n        }\r\n    }\r\n\r\n    getEasyFilterObject(filterName: string): any {\r\n        let arrToSend: any[] = [];\r\n        this.easyFilters.forEach((group) => {\r\n            // eslint-disable-next-line consistent-return\r\n            group.filters.forEach((filter) => {\r\n                if (filter.text === filterName) {\r\n                    arrToSend = [filter, group.groupId];\r\n                }\r\n            });\r\n        });\r\n\r\n        return arrToSend.length === 0 ? null : arrToSend;\r\n    }\r\n\r\n    applyEasyFilterUsingFilterName(filterName: string) {\r\n        const filterObjectArr = this.getEasyFilterObject(filterName);\r\n        if (filterObjectArr) {\r\n            const [filter, groupId] = filterObjectArr;\r\n            const isDataPresentWithSelectedFilterVal = !filter.isDisabled;\r\n\r\n            if (isDataPresentWithSelectedFilterVal) {\r\n                this.easyFilterClicked(filter, groupId);\r\n            }\r\n        }\r\n    }\r\n\r\n    // Need to invoke this func manually\r\n    // as there can be a scenario where filter is disabled and active (incase of range column level)\r\n    updateEasyFiltersAfterUserTookAction(filterName: string) {\r\n        const filterObjectArr = this.getEasyFilterObject(filterName);\r\n\r\n        if (filterObjectArr) {\r\n            // If filterBtn is disabled , then for easy filter is not there\r\n            const [filter, groupId] = filterObjectArr;\r\n            const isDataPresentWithSelectedFilterVal = !filter.isDisabled;\r\n\r\n            if (isDataPresentWithSelectedFilterVal) {\r\n                // Easy filter already selected\r\n                // User took some action\r\n                // Now we need to filter the data again as the row on which action is taken is not part of the filter\r\n                if (filter.isActive) {\r\n                    const updatedData = this.annaFilterService.filterData(this.clonedTableData, \"\");\r\n                    this.getUpdatedDataAfterUserAction.emit(updatedData);\r\n                }\r\n            }\r\n            // Remove the easy filter as there is no data present with that filter\r\n            else if (filter.isActive) {\r\n                this.easyFilterClicked(filter, groupId);\r\n            }\r\n        }\r\n    }\r\n\r\n    setDiscardUnsavedChangesConfirmConfig() {\r\n        this.discardUnsavedChangesConfirmConfig = {\r\n            ...this.annaGlobalConfig.defaultUnsavedChangesConfirmationPopupConfig,\r\n        };\r\n        this.discardUnsavedChangesConfirmConfig.windowClass = \"generic-confirm-modal\";\r\n    }\r\n\r\n    discardChangesGoToNextEasyFilter() {\r\n        this.easyFilterClicked(this.selectedFilter, this.selectedGroupId);\r\n    }\r\n    stayOnSameEasyFilter() {}\r\n    detectChanges() {\r\n        this.cdRef.detectChanges();\r\n    }\r\n}\r\n","<section\r\n    class=\"d-flex flex-wrap\"\r\n    *ngIf=\"!showLoader\"\r\n>\r\n    <div\r\n        class=\"{{ group.class }} d-flex align-items-end\"\r\n        *ngFor=\"let group of easyFilters; let last = last\"\r\n    >\r\n        <div class=\"wrapper\">\r\n            <p\r\n                *ngIf=\"group?.label\"\r\n                class=\"filter-label\"\r\n            >\r\n                {{ group.label }}\r\n            </p>\r\n\r\n            <div class=\"d-flex\">\r\n                <div *ngFor=\"let filter of group.filters\">\r\n                    <button\r\n                        class=\"intelli-filter {{ filter.class }}\"\r\n                        [ngClass]=\"{\r\n                            active: filter.isActive,\r\n                            'icon-button': filter.iconRequired,\r\n                            'only-enabled-button': filter.onlyEnabledActiveFilter\r\n                        }\"\r\n                        [ngStyle]=\"{\r\n                            'background-color': filter.backgroundColor,\r\n                            border: filter.border,\r\n                            color: filter.textColor\r\n                        }\"\r\n                        [disabled]=\"filter.isDisabled\"\r\n                        (click)=\"\r\n                            showUnsavedChangesPopup\r\n                                ? openUnsavedChangesPopup(filter, group.groupId)\r\n                                : easyFilterClicked(filter, group.groupId)\r\n                        \"\r\n                    >\r\n                        <i\r\n                            class=\"{{ filter.iconClass }}\"\r\n                            *ngIf=\"filter.iconRequired && !filter.isSvgIcon\"\r\n                        ></i>\r\n\r\n                        <anna-core-pay-for-performance-icon-template\r\n                            *ngIf=\"filter.iconRequired && filter.isSvgIcon && filter.svgIconKey === 'POD'\"\r\n                            [isTitle]=\"false\"\r\n                            [color]=\"pfpIconActiveColor\"\r\n                            [width]=\"'12px'\"\r\n                            [height]=\"'12px'\"\r\n                        >\r\n                        </anna-core-pay-for-performance-icon-template>\r\n\r\n                        {{ filter.text }}\r\n                    </button>\r\n                    <div\r\n                        class=\"count\"\r\n                        *ngIf=\"filter?.count > 0\"\r\n                    >\r\n                        {{ filter.count }}\r\n                    </div>\r\n                    <div\r\n                        *ngIf=\"filter?.textBelowFilter\"\r\n                        [innerHTML]=\"filter.textBelowFilter\"\r\n                        class=\"{{ filter.textBelowFilterClass }}\"\r\n                    ></div>\r\n                </div>\r\n                <div\r\n                    class=\"filter-divider\"\r\n                    [ngClass]=\"{ 'without-label-btn': group.label === '' }\"\r\n                    *ngIf=\"!last\"\r\n                ></div>\r\n            </div>\r\n        </div>\r\n    </div>\r\n</section>\r\n\r\n<ng-container\r\n    [ngTemplateOutlet]=\"easyFilterSkeletonLoader\"\r\n    *ngIf=\"showLoader\"\r\n>\r\n</ng-container>\r\n\r\n<ng-template #easyFilterSkeletonLoader>\r\n    <ngx-skeleton-loader\r\n        [count]=\"numberOfItemsForLoader\"\r\n        [theme]=\"{\r\n            width: '90px',\r\n            height: '16px',\r\n            display: 'inline-block',\r\n            'margin-right': '10px',\r\n            'margin-left': '0px',\r\n            'margin-top': '20px',\r\n            'margin-bottom': '0px'\r\n        }\"\r\n    >\r\n    </ngx-skeleton-loader>\r\n</ng-template>\r\n\r\n<anna-design-confirmation-popup\r\n    #easyFilterDiscardUnsavedChangesConfirmModal\r\n    [config]=\"discardUnsavedChangesConfirmConfig\"\r\n    (confirmClicked)=\"discardChangesGoToNextEasyFilter()\"\r\n    (cancelClicked)=\"stayOnSameEasyFilter()\"\r\n>\r\n</anna-design-confirmation-popup>\r\n","import { NgClass, NgFor, NgIf, NgTemplateOutlet } from \"@angular/common\";\r\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from \"@angular/core\";\r\nimport { NgbTooltip } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { NgxSkeletonLoaderModule } from \"ngx-skeleton-loader\";\r\n\r\nimport { DemoNormalizationComponent } from \"../demo-normalization/demo-normalization.component\";\r\n// eslint-disable-next-line max-len\r\nimport { EquivalisationOfDataToggleBtnComponent } from \"../equivalisation-of-data-toggle-btn/equivalisation-of-data-toggle-btn.component\";\r\nimport { GenericPeriodSelectionComponent } from \"../generic-period-selection/generic-period-selection.component\";\r\nimport { SingleSelectComponent } from \"../single-select/single-select.component\";\r\nimport { IFiltersViewData } from \"./models/view-filter.model\";\r\n\r\n@Component({\r\n    selector: \"anna-design-filter-view-container\",\r\n    templateUrl: \"./filter-view-container.component.html\",\r\n    styleUrls: [\"./filter-view-container.component.scss\"],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    imports: [\r\n        NgIf,\r\n        NgFor,\r\n        NgClass,\r\n        NgbTooltip,\r\n        NgTemplateOutlet,\r\n        SingleSelectComponent,\r\n        GenericPeriodSelectionComponent,\r\n        DemoNormalizationComponent,\r\n        EquivalisationOfDataToggleBtnComponent,\r\n        NgxSkeletonLoaderModule,\r\n    ]\r\n})\r\nexport class FilterViewContainerComponent {\r\n    @Input({ required: true }) selectedFiltersViewData: IFiltersViewData[] = [];\r\n    @Input() showSkeletonLoading: boolean;\r\n    @Input() disableFilterBtn: boolean;\r\n    @Input() countOfSkeletonLoaderItems: number = 3;\r\n    @Input() filterClassName: string;\r\n    @Input() EditButtonText: string = \"Edit\";\r\n    @Output() editFilterButtonClick: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n    openFilterPopup() {\r\n        this.editFilterButtonClick.emit();\r\n    }\r\n}\r\n","<section [class]=\"filterClassName\">\r\n    <div\r\n        class=\"view-filter-data\"\r\n        *ngIf=\"selectedFiltersViewData?.length\"\r\n    >\r\n        <div\r\n            [class]=\"data.parentClass\"\r\n            *ngFor=\"let data of selectedFiltersViewData\"\r\n        >\r\n            <div\r\n                [class]=\"data.headerClass\"\r\n                class=\"header\"\r\n            >\r\n                <p\r\n                    annaCoreShowEllipsisTextOnHover\r\n                    class=\"label\"\r\n                >\r\n                    {{ data.header }}\r\n                </p>\r\n                <i\r\n                    *ngIf=\"data.showTooltip\"\r\n                    [class]=\"data.tooltipClass\"\r\n                    placement=\"top auto\"\r\n                    container=\"body\"\r\n                    [autoClose]=\"true\"\r\n                    [ngbTooltip]=\"data.tooltipMessage\"\r\n                ></i>\r\n            </div>\r\n            <p\r\n                annaCoreShowEllipsisTextOnHover\r\n                [ngClass]=\"data.valueClass\"\r\n                class=\"value\"\r\n            >\r\n                {{ data.selectedValue }}\r\n            </p>\r\n        </div>\r\n    </div>\r\n    <ng-container *ngIf=\"!selectedFiltersViewData?.length\">\r\n        <ngx-skeleton-loader\r\n            class=\"d-flex w-100 h-100\"\r\n            [count]=\"countOfSkeletonLoaderItems\"\r\n            [theme]=\"{\r\n                height: '100%',\r\n                'max-width': '150px',\r\n                'margin-right': '20px'\r\n            }\"\r\n        >\r\n        </ngx-skeleton-loader>\r\n    </ng-container>\r\n    <ng-container *ngIf=\"showSkeletonLoading\">\r\n        <ngx-skeleton-loader\r\n            class=\"h-100\"\r\n            [theme]=\"{\r\n                height: '26px',\r\n                width: '48px',\r\n                'margin-top': '1px',\r\n                'margin-right': '0px',\r\n                display: 'inline-block'\r\n            }\"\r\n        >\r\n        </ngx-skeleton-loader>\r\n    </ng-container>\r\n    <button\r\n        class=\"edit-button\"\r\n        *ngIf=\"!showSkeletonLoading\"\r\n        (click)=\"openFilterPopup()\"\r\n        [disabled]=\"disableFilterBtn\"\r\n    >\r\n        {{ EditButtonText }}\r\n    </button>\r\n</section>\r\n","// Angular imports\r\nimport { ChangeDetectionStrategy, Component, Input, OnChanges, SimpleChanges, ViewChild } from \"@angular/core\";\r\n// 3rd party imports\r\nimport {\r\n    CategoryScale,\r\n    Chart,\r\n    ChartOptions,\r\n    ChartType,\r\n    LinearScale,\r\n    LineController,\r\n    LineElement,\r\n    PointElement,\r\n} from \"chart.js\";\r\nimport { BaseChartDirective } from \"ng2-charts\";\r\n\r\nChart.register(LineController, LineElement, PointElement, CategoryScale, LinearScale);\r\n\r\n@Component({\r\n    selector: \"anna-design-generic-line-chart\",\r\n    templateUrl: \"./generic-line-chart.component.html\",\r\n    styleUrls: [\"./generic-line-chart.component.scss\"],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    imports: [BaseChartDirective],\r\n    standalone: true,\r\n})\r\nexport class GenericLineChartComponent implements OnChanges {\r\n    @Input() chartClassName: string;\r\n    @Input({ required: true }) lineChartOptions: ChartOptions;\r\n    @Input({ required: true }) lineChartData: any;\r\n    @Input() sizeOfChart: { height: string; width: string };\r\n\r\n    @ViewChild(BaseChartDirective) chart: BaseChartDirective;\r\n\r\n    chartHeight: string;\r\n    chartWidth: string;\r\n    public chartType: ChartType = \"line\";\r\n\r\n    ngOnChanges(changes: SimpleChanges) {\r\n        if (changes.sizeOfChart && changes.sizeOfChart.currentValue) {\r\n            this.chartHeight = this.sizeOfChart.height;\r\n            this.chartWidth = this.sizeOfChart.width;\r\n        }\r\n    }\r\n}\r\n","<div\r\n    id=\"canvasParent\"\r\n    [class]=\"chartClassName\"\r\n>\r\n    <canvas\r\n        baseChart\r\n        [data]=\"lineChartData\"\r\n        [options]=\"lineChartOptions\"\r\n        [type]=\"'line'\"\r\n        [legend]=\"false\"\r\n    >\r\n    </canvas>\r\n</div>\r\n","export enum WizardStepState {\r\n    visited = \"visited\",\r\n    active = \"active\",\r\n    notVisited = \"not-visited\",\r\n    pending = \"pending\",\r\n    error = \"error\",\r\n    // pending means some pending changes in current tab. both not-visited and pending have same wizard icon\r\n}\r\n\r\nexport class WizardConstant {\r\n    static readonly PendingErrorStates = [WizardStepState.error, WizardStepState.pending];\r\n    static readonly ValidStates = [WizardStepState.visited, WizardStepState.notVisited];\r\n}\r\n\r\nexport enum ValidStates {\r\n    visited = \"visited\",\r\n    notVisited = \"not-visited\",\r\n}\r\n","import { NgClass, NgFor, NgIf, NgStyle } from \"@angular/common\";\r\nimport {\r\n    ChangeDetectionStrategy,\r\n    Component,\r\n    EventEmitter,\r\n    Input,\r\n    OnChanges,\r\n    Output,\r\n    SimpleChanges,\r\n} from \"@angular/core\";\r\nimport { AnnaCoreModule } from \"@annalib/anna-core\";\r\nimport { NgbTooltip } from \"@ng-bootstrap/ng-bootstrap\";\r\n// eslint-disable-next-line import/no-extraneous-dependencies\r\nimport { cloneDeep } from \"lodash-es\";\r\n\r\nimport { WizardConstant, WizardStepState } from \"./models/generic-wizard-form.constant\";\r\nimport { IWizardTab } from \"./models/generic-wizard-form.model\";\r\n\r\n@Component({\r\n    selector: \"anna-design-generic-wizard-form\",\r\n    templateUrl: \"./generic-wizard-form.component.html\",\r\n    styleUrls: [\"./generic-wizard-form.component.scss\"],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    imports: [NgIf, NgFor, NgStyle, NgClass, NgbTooltip, AnnaCoreModule]\r\n})\r\nexport class GenericWizardFormComponent implements OnChanges {\r\n    @Input({ required: true }) wizardTabs: IWizardTab[] = [];\r\n    @Input({ required: true }) wizardTabsCloned: IWizardTab[] = [];\r\n    @Input() selectedWizardTab: IWizardTab = null;\r\n\r\n    @Input() wizardFormClass: string = null;\r\n    @Input() tabClass: string = null;\r\n    @Input() listTabClass: string = null;\r\n\r\n    @Input() editMode: boolean = false;\r\n    @Input() currentTabHasError: boolean = false;\r\n    @Input() currentTabHasPendingChanges: boolean = false;\r\n\r\n    @Input() errorMessage: string = null;\r\n\r\n    @Output() wizardTabsChanged = new EventEmitter<{ selectedWizardTab: IWizardTab; wizardTabList: IWizardTab[] }>();\r\n\r\n    WizardStepState = WizardStepState;\r\n\r\n    notUndefinedOrNull(value: any) {\r\n        return value !== undefined && value != null;\r\n    }\r\n\r\n    ngOnChanges(changes: SimpleChanges) {\r\n        if (changes?.editMode?.currentValue) {\r\n            this.wizardStepIconClicked(this.selectedWizardTab);\r\n        }\r\n\r\n        if (\r\n            this.notUndefinedOrNull(changes?.currentTabHasPendingChanges?.currentValue) ||\r\n            this.notUndefinedOrNull(changes?.currentTabHasError?.currentValue)\r\n        ) {\r\n            if (this.currentTabHasPendingChanges) {\r\n                this.setGivenStateForCurrentTab(WizardStepState.pending);\r\n            }\r\n            if (this.currentTabHasError) {\r\n                this.setGivenStateForCurrentTab(WizardStepState.error);\r\n            } else if (!this.currentTabHasError && !this.currentTabHasPendingChanges) {\r\n                this.setGivenStateForCurrentTab(WizardStepState.active);\r\n            }\r\n        }\r\n    }\r\n\r\n    setGivenStateForCurrentTab(newState: WizardStepState) {\r\n        const updatedTabs = this.wizardTabs.map((tab: IWizardTab) => {\r\n            if (tab.heading === this.selectedWizardTab.heading) {\r\n                return this.setCurrentAndPreviousStepState(tab, newState);\r\n            }\r\n            return tab;\r\n        });\r\n\r\n        this.wizardTabs = cloneDeep(updatedTabs);\r\n    }\r\n\r\n    wizardStepIconClicked(tabClicked: IWizardTab) {\r\n        // reason: only 1 tab can be active at a time, so rest of tab will mark as visited\r\n        const updatedTabs = this.wizardTabs.map((tab: IWizardTab) => {\r\n            if (\r\n                tab.stepState === WizardStepState.active &&\r\n                !WizardConstant.PendingErrorStates.includes(tab.stepState)\r\n            ) {\r\n                return this.setCurrentAndPreviousStepState(tab, WizardStepState.visited);\r\n            }\r\n            return tab;\r\n        });\r\n\r\n        this.wizardTabs = cloneDeep(updatedTabs);\r\n\r\n        this.selectedWizardTab = tabClicked;\r\n        const currentTabIndex = this.wizardTabs.findIndex(\r\n            (tab: IWizardTab) => tab.heading === this.selectedWizardTab.heading,\r\n        );\r\n\r\n        if (!WizardConstant.PendingErrorStates.includes(tabClicked.stepState)) {\r\n            this.wizardTabs[currentTabIndex].stepState = WizardStepState.active;\r\n        }\r\n\r\n        this.wizardTabs = cloneDeep(this.wizardTabs);\r\n        this.wizardTabsChanged.emit({ selectedWizardTab: this.selectedWizardTab, wizardTabList: this.wizardTabs });\r\n    }\r\n\r\n    tabChangedInReadMode(tab: IWizardTab) {\r\n        this.selectedWizardTab = tab;\r\n        const currentTabIndex = this.wizardTabs.findIndex(\r\n            (wizardTab: IWizardTab) => wizardTab.heading === this.selectedWizardTab.heading,\r\n        );\r\n        this.wizardTabs[currentTabIndex].stepState = WizardStepState.active;\r\n\r\n        this.wizardTabs = cloneDeep(this.wizardTabs);\r\n        this.wizardTabsChanged.emit({ selectedWizardTab: this.selectedWizardTab, wizardTabList: this.wizardTabs });\r\n    }\r\n    setCurrentAndPreviousStepState(tab: IWizardTab, newState: WizardStepState): IWizardTab {\r\n        if (WizardConstant.ValidStates.includes(newState)) {\r\n            tab.previousValidStepState = newState;\r\n        } else if (WizardConstant.ValidStates.includes(tab.stepState)) {\r\n            tab.previousValidStepState = tab.stepState;\r\n        } else {\r\n            const previousValidStepState = this.wizardTabsCloned.filter((x: IWizardTab) => x.heading === tab.heading)[0]\r\n                ?.stepState;\r\n            tab.previousValidStepState = previousValidStepState;\r\n        }\r\n        tab.stepState = newState;\r\n        return tab;\r\n    }\r\n    nextorPreviousWizardTabStepClicked(isNextTab: boolean) {\r\n        const currentTabIndex = this.wizardTabs.findIndex(\r\n            (tab: IWizardTab) => tab.heading === this.selectedWizardTab.heading,\r\n        );\r\n        const selectedTab = isNextTab ? this.wizardTabs[currentTabIndex + 1] : this.wizardTabs[currentTabIndex - 1];\r\n        this.selectedWizardTab = selectedTab;\r\n        const currentStepState = this.wizardTabs[currentTabIndex].stepState;\r\n\r\n        if (isNextTab) {\r\n            if (!WizardConstant.PendingErrorStates.includes(currentStepState)) {\r\n                this.wizardTabs[currentTabIndex] = this.setCurrentAndPreviousStepState(\r\n                    this.wizardTabs[currentTabIndex],\r\n                    WizardStepState.visited,\r\n                );\r\n            }\r\n            this.wizardTabs[currentTabIndex + 1].stepState = WizardStepState.active;\r\n        } else {\r\n            if (!WizardConstant.PendingErrorStates.includes(currentStepState)) {\r\n                this.wizardTabs[currentTabIndex] = this.setCurrentAndPreviousStepState(\r\n                    this.wizardTabs[currentTabIndex],\r\n                    WizardStepState.visited,\r\n                );\r\n            }\r\n            this.wizardTabs[currentTabIndex - 1].stepState = WizardStepState.active;\r\n        }\r\n\r\n        if (\r\n            currentTabIndex === this.wizardTabs.length - 1 &&\r\n            !WizardConstant.PendingErrorStates.includes(currentStepState)\r\n        ) {\r\n            this.wizardTabs[currentTabIndex] = this.setCurrentAndPreviousStepState(\r\n                this.wizardTabs[currentTabIndex],\r\n                WizardStepState.visited,\r\n            );\r\n        }\r\n\r\n        this.wizardTabs = cloneDeep(this.wizardTabs);\r\n        this.wizardTabsChanged.emit({ selectedWizardTab: this.selectedWizardTab, wizardTabList: this.wizardTabs });\r\n    }\r\n}\r\n","<div\r\n    id=\"path\"\r\n    class=\"{{ wizardFormClass }}\"\r\n    *ngIf=\"editMode\"\r\n>\r\n    <div\r\n        class=\"status-pathline-message\"\r\n        [ngStyle]=\"{ flex: last ? 0 : 1 }\"\r\n        *ngFor=\"let wizardTab of wizardTabs; let first = first; let last = last\"\r\n    >\r\n        <ng-container *ngIf=\"!wizardTab.hideStep\">\r\n            <div>\r\n                <div\r\n                    class=\"icon-box\"\r\n                    class=\"{{ wizardTab.stepState }}\"\r\n                    [ngClass]=\"{ active: selectedWizardTab?.heading === wizardTab.heading }\"\r\n                    (click)=\"wizardStepIconClicked(wizardTab)\"\r\n                >\r\n                    <i\r\n                        *ngIf=\"wizardTab.stepState === WizardStepState.visited\"\r\n                        class=\"mdi mdi-check-circle\"\r\n                    ></i>\r\n                    <i\r\n                        *ngIf=\"\r\n                            wizardTab.stepState === WizardStepState.active ||\r\n                            selectedWizardTab?.heading === wizardTab.heading\r\n                        \"\r\n                        class=\"mdi mdi-circle\"\r\n                    ></i>\r\n                    <i\r\n                        *ngIf=\"wizardTab.stepState === WizardStepState.notVisited\"\r\n                        class=\"mdi mdi-circle-outline\"\r\n                    ></i>\r\n                    <i\r\n                        *ngIf=\"\r\n                            selectedWizardTab?.heading !== wizardTab.heading &&\r\n                            wizardTab.stepState === WizardStepState.pending\r\n                        \"\r\n                        class=\"mdi mdi-progress-alert\"\r\n                    ></i>\r\n                    <i\r\n                        *ngIf=\"\r\n                            selectedWizardTab?.heading !== wizardTab.heading &&\r\n                            wizardTab.stepState === WizardStepState.error\r\n                        \"\r\n                        class=\"mdi mdi-alert-octagon\"\r\n                    ></i>\r\n                </div>\r\n                <div\r\n                    *ngIf=\"!last\"\r\n                    class=\"path-line\"\r\n                >\r\n                    <i class=\"mdi mdi-chevron-down expand-icon right-icon align-on-line\"></i>\r\n                </div>\r\n            </div>\r\n            <span class=\"step-heading\">\r\n                {{ wizardTab.heading }}\r\n                <i\r\n                    *ngIf=\"wizardTab?.iconClass\"\r\n                    class=\"{{ wizardTab?.iconClass }}\"\r\n                ></i>\r\n                <span\r\n                    [class]=\"wizardTab?.rightAdditionalMessageClass\"\r\n                    *ngIf=\"wizardTab?.rightAdditionalMessage\"\r\n                >\r\n                    {{ wizardTab?.rightAdditionalMessage }}\r\n                </span>\r\n                <!-- <i class=\"header-icon mdi mdi-alert-octagon\"\r\n          *ngIf=\"selectedWizardTab?.heading == wizardTab.heading && wizardTab?.stepState ==  WizardStepState.error\"></i> -->\r\n                <i\r\n                    class=\"header-icon mdi mdi-progress-alert\"\r\n                    *ngIf=\"\r\n                        selectedWizardTab?.heading === wizardTab.heading &&\r\n                        wizardTab?.stepState === WizardStepState.pending\r\n                    \"\r\n                ></i>\r\n            </span>\r\n        </ng-container>\r\n    </div>\r\n</div>\r\n\r\n<div\r\n    class=\"row parent-tab {{ tabClass }}\"\r\n    *ngIf=\"!editMode\"\r\n>\r\n    <ng-container *ngFor=\"let tab of wizardTabs\">\r\n        <div class=\"list-tab {{ listTabClass }}\">\r\n            <ng-container>\r\n                <span\r\n                    [id]=\"tab?.elementId\"\r\n                    class=\"tab-element\"\r\n                    ngbTooltip=\"{{ tab?.tooltipText }}\"\r\n                    placement=\"auto\"\r\n                    container=\"body\"\r\n                    tooltipClass=\"{{ tab?.tooltipClass }}\"\r\n                    (click)=\"tabChangedInReadMode(tab)\"\r\n                    [ngClass]=\"{ 'tab-active': tab?.heading === selectedWizardTab?.heading }\"\r\n                >\r\n                    <span>\r\n                        {{ tab?.heading }}\r\n                    </span>\r\n                    <i\r\n                        *ngIf=\"tab?.iconClass\"\r\n                        class=\"{{ tab?.iconClass }}\"\r\n                    ></i>\r\n                    <span\r\n                        [class]=\"tab?.rightAdditionalMessageClass\"\r\n                        *ngIf=\"tab?.rightAdditionalMessage\"\r\n                    >\r\n                        {{ tab?.rightAdditionalMessage }}</span\r\n                    >\r\n\r\n                    <i\r\n                        class=\"header-icon mdi mdi-alert-octagon\"\r\n                        *ngIf=\"tab?.stepState === WizardStepState.error\"\r\n                    ></i>\r\n                    <!-- <i class=\"header-icon mdi mdi-progress-alert\" *ngIf=\"tab?.stepState ==  WizardStepState.pending\"></i> -->\r\n                </span>\r\n            </ng-container>\r\n        </div>\r\n    </ng-container>\r\n</div>\r\n\r\n<div\r\n    class=\"view-container\"\r\n    [ngClass]=\"{ 'no-data': errorMessage }\"\r\n>\r\n    <div\r\n        class=\"row p-0\"\r\n        *ngIf=\"editMode\"\r\n    >\r\n        <header>{{ selectedWizardTab?.heading }}</header>\r\n        <section>\r\n            <div\r\n                class=\"icon-circle-box\"\r\n                *ngIf=\"selectedWizardTab?.id !== 1\"\r\n            >\r\n                <i\r\n                    class=\"mdi mdi-chevron-down left-icon\"\r\n                    (click)=\"nextorPreviousWizardTabStepClicked(false)\"\r\n                ></i>\r\n            </div>\r\n            <div\r\n                class=\"icon-circle-box\"\r\n                *ngIf=\"selectedWizardTab?.id !== wizardTabs.length\"\r\n                [ngClass]=\"{ disabled: currentTabHasError }\"\r\n            >\r\n                <i\r\n                    class=\"mdi mdi-chevron-down right-icon\"\r\n                    (click)=\"nextorPreviousWizardTabStepClicked(true)\"\r\n                ></i>\r\n            </div>\r\n        </section>\r\n    </div>\r\n    <hr *ngIf=\"editMode\" />\r\n    <ng-container *ngIf=\"!errorMessage\">\r\n        <ng-content select=\".view\"></ng-content>\r\n    </ng-container>\r\n    <ng-container *ngIf=\"errorMessage\">\r\n        <anna-core-no-data-lib [width]=\"'55%'\"> </anna-core-no-data-lib>\r\n    </ng-container>\r\n</div>\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from \"@angular/core\";\r\nimport { NgbTooltip } from \"@ng-bootstrap/ng-bootstrap\";\r\n\r\nimport { ToggleComponent } from \"../toggle/toggle.component\";\r\n\r\n@Component({\r\n    selector: \"anna-design-include-outstanding-preemptions-toggle-btn\",\r\n    templateUrl: \"./include-outstanding-preemptions-toggle-btn.component.html\",\r\n    styleUrls: [\"./include-outstanding-preemptions-toggle-btn.component.scss\"],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    imports: [NgbTooltip, ToggleComponent]\r\n})\r\nexport class IncludeOutstandingPreemptionsToggleBtnComponent {\r\n    @Input() includeOSPreemptionsTooltipClass: string = \"toggle-tooltip\";\r\n    @Input() includeOSPreemptionsMessage: string =\r\n        // eslint-disable-next-line max-len\r\n        \"Enabling this option considers any outstanding preemptions in the Booked value, affecting overall metrics and calculations.\";\r\n    @Input() isOSPreemptionsIncluded: boolean = false;\r\n\r\n    @Output() toggleValueChanged = new EventEmitter();\r\n\r\n    toggleOSPreemptions(toggleValue: boolean) {\r\n        this.isOSPreemptionsIncluded = toggleValue;\r\n        this.toggleValueChanged.emit(toggleValue);\r\n    }\r\n}\r\n","<div class=\"toggle\">\r\n    <label\r\n        >Include O/S PEs\r\n        <i\r\n            class=\"mi mdi-info-outline\"\r\n            [ngbTooltip]=\"includeOSPreemptions\"\r\n            container=\"body\"\r\n            [tooltipClass]=\"includeOSPreemptionsTooltipClass\"\r\n            #t=\"ngbTooltip\"\r\n        ></i>\r\n    </label>\r\n    <anna-design-toggle\r\n        [position]=\"'none'\"\r\n        [isToggled]=\"isOSPreemptionsIncluded\"\r\n        (toggle)=\"toggleOSPreemptions($event)\"\r\n    ></anna-design-toggle>\r\n</div>\r\n\r\n<ng-template #includeOSPreemptions>\r\n    <p\r\n        class=\"toggle-info\"\r\n        [innerHTML]=\"includeOSPreemptionsMessage\"\r\n    ></p>\r\n</ng-template>\r\n","import { NgFor, NgIf } from \"@angular/common\";\r\nimport { ChangeDetectionStrategy, Component, Input } from \"@angular/core\";\r\n\r\nimport { KeyValue } from \"./models/key-value.model\";\r\n\r\n@Component({\r\n    selector: \"anna-design-key-value\",\r\n    templateUrl: \"./key-value.component.html\",\r\n    styleUrls: [\"./key-value.component.scss\"],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    imports: [NgIf, NgFor]\r\n})\r\nexport class KeyValueComponent {\r\n    @Input({ required: true }) data: KeyValue[];\r\n    @Input() component: string = \"OTHER\";\r\n}\r\n","<ng-container *ngIf=\"component === 'OTHER'\">\r\n    <div\r\n        *ngFor=\"let item of data\"\r\n        class=\"{{ item.parentClass }}\"\r\n    >\r\n        <span class=\"{{ item.keyClass }}\">{{ item.key }} </span>\r\n        <span class=\"{{ item.valueClass }}\">\r\n            {{ item.value }}\r\n            <span *ngIf=\"item.keyClass === 'ratings-imps-key'\">\r\n                <ng-content select=\".ud-liability-info-icon\"></ng-content></span\r\n        ></span>\r\n    </div>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"component === 'ORDERCARD'\">\r\n    <div class=\"d-flex\">\r\n        <ng-container *ngFor=\"let item of data; let i = index; let even = even\">\r\n            <div\r\n                *ngIf=\"i % 3 === 0\"\r\n                class=\"col-6 p-0 order-card-content\"\r\n            >\r\n                <div class=\"{{ item.parentClass }}\">\r\n                    <span class=\"{{ item.keyClass }}\">{{ item.key }}</span>\r\n                    <span class=\"{{ item.valueClass }}\"> {{ item.value }}</span>\r\n                </div>\r\n                <div class=\"{{ data[i + 1].parentClass }}\">\r\n                    <span class=\"{{ data[i + 1].keyClass }}\">{{ data[i + 1].key }}</span>\r\n                    <span class=\"{{ data[i + 1].valueClass }}\">{{ data[i + 1].value }}</span>\r\n                </div>\r\n                <div class=\"{{ data[i + 2].parentClass }}\">\r\n                    <span class=\"{{ data[i + 2].keyClass }}\">{{ data[i + 2].key }}</span>\r\n                    <span class=\"{{ data[i + 2].valueClass }}\">{{ data[i + 2].value }}</span>\r\n                </div>\r\n            </div>\r\n        </ng-container>\r\n    </div>\r\n</ng-container>\r\n","export class MessageBoxData {\r\n    messageHeading: string;\r\n    message: string;\r\n    subHeading?: string;\r\n    subMessage?: string;\r\n    iconClass: string;\r\n    messageBoxClass: string;\r\n    constructor(\r\n        messageHeading: string,\r\n        message: string,\r\n        iconClass: string,\r\n        messageBoxClass: string,\r\n        subHeading?: string,\r\n        subMessage?: string,\r\n    ) {\r\n        this.messageHeading = messageHeading;\r\n        this.message = message;\r\n        this.iconClass = iconClass;\r\n        this.messageBoxClass = messageBoxClass;\r\n        this.subHeading = subHeading;\r\n        this.subMessage = subMessage;\r\n    }\r\n}\r\n\r\nexport class GenericMessageBoxTheme {\r\n    static readonly successGreen = { iconClass: \"mdi mdi-check-circle\", messageBoxClass: \"success-message-box\" };\r\n    static readonly warningYellow = { iconClass: \"mi mdi-warning\", messageBoxClass: \"warning-yellow-box\" };\r\n    static readonly bellYellow = { iconClass: \"mdi mdi-bell\", messageBoxClass: \"warning-yellow-box\" };\r\n    static readonly informationBlue = { iconClass: \"mdi success-green-icon\", messageBoxClass: \"information-blue-box\" };\r\n    static readonly informationBlueGeneric = {\r\n        iconClass: \"mdi mdi-information\",\r\n        messageBoxClass: \"information-blue-box\",\r\n    };\r\n    static readonly changeOrange = { iconClass: \"mdi mdi-close-circle\", messageBoxClass: \"change-orange-box\" };\r\n    static readonly darkGray = { iconClass: \"\", messageBoxClass: \"dark-gray-box\" };\r\n    static readonly dangerRed = { iconClass: \"mdi mdi-close-circle\", messageBoxClass: \"danger-red-box\" };\r\n    static readonly purple = { iconClass: \"\", messageBoxClass: \"purple-box\" };\r\n    static readonly errorRed = { iconClass: \"mdi mdi-alert-octagon\", messageBoxClass: \"error-red-box\" };\r\n}\r\n","import { NgClass, NgIf, TitleCasePipe } from \"@angular/common\";\r\nimport { ChangeDetectionStrategy, Component, Input } from \"@angular/core\";\r\n\r\nimport { MessageBoxData } from \"./models/message-box.model\";\r\n\r\n@Component({\r\n    selector: \"anna-design-message-box\",\r\n    templateUrl: \"./message-box.component.html\",\r\n    styleUrls: [\"./message-box.component.scss\"],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    imports: [NgIf, NgClass, TitleCasePipe]\r\n})\r\nexport class MessageBoxComponent {\r\n    // give messageBoxData.messageBoxClass = 'sm' for a smaller message boz\r\n    @Input({ required: true }) messageBoxData: MessageBoxData;\r\n    @Input() showHyphen: boolean = false;\r\n    @Input() hide: boolean = false;\r\n    @Input() headerAsBlockElement: boolean = false;\r\n}\r\n","<section\r\n    *ngIf=\"!hide && messageBoxData\"\r\n    class=\"message-box\"\r\n    [class]=\"messageBoxData.messageBoxClass\"\r\n>\r\n    <div class=\"div-icon\">\r\n        <ng-content select=\".custom-icon-class\"></ng-content>\r\n        <i [class]=\"messageBoxData.iconClass\"></i>\r\n    </div>\r\n    <div class=\"div-message\">\r\n        <p class=\"message-label\">\r\n            <b\r\n                *ngIf=\"messageBoxData.messageHeading\"\r\n                class=\"header\"\r\n                [ngClass]=\"{ display: headerAsBlockElement ? 'block' : 'inline-block' }\"\r\n                >{{ messageBoxData.messageHeading | titlecase }}\r\n            </b>\r\n            <span *ngIf=\"showHyphen\">:</span>\r\n            <span [innerHtml]=\"messageBoxData.message\"></span>\r\n        </p>\r\n        <p\r\n            class=\"message-label sub-heading\"\r\n            *ngIf=\"messageBoxData.subHeading\"\r\n        >\r\n            <b>{{ messageBoxData.subHeading | titlecase }} </b> {{ messageBoxData.subMessage }}\r\n        </p>\r\n        <ng-content select=\".ng-content-selector-for-message\"></ng-content>\r\n    </div>\r\n</section>\r\n","export class MissingPostedDataConstant {\r\n    static readonly postedDataNotFound = \"Posted data not found\";\r\n    static readonly postedDataNotFoundDatesMessage = \"Posted data could not be found for the following dates\";\r\n    static readonly postedDataNotFoundDemosMessage =\r\n        \"Posted data could not be found for one or more days of the following demographics\";\r\n}\r\n","// eslint-disable-next-line import/no-extraneous-dependencies\r\nimport { cloneDeep, uniq } from \"lodash-es\";\r\n\r\nexport interface MissingPostedDataRequestPayload {\r\n    StationId: number;\r\n    Demographs: string[];\r\n    StartDate: string;\r\n    EndDate: string;\r\n    CentralBuyerId?: string;\r\n}\r\n\r\nexport class MissingPostedData {\r\n    postEvalDatesMessage: string;\r\n    demoAndDatesMappedArray: DemosAndDates[];\r\n    allUniqueDates: string[];\r\n    constructor(data: any) {\r\n        this.allUniqueDates = [];\r\n        this.demoAndDatesMappedArray = [];\r\n        this.postEvalDatesMessage = data.PostEvalDatesMessage;\r\n        if (data?.MissingPostedData) {\r\n            data?.MissingPostedData.forEach((item: any) => {\r\n                this.allUniqueDates = [...this.allUniqueDates, ...[item.MissingDates]];\r\n                this.demoAndDatesMappedArray.push(new DemosAndDates(item));\r\n            });\r\n        }\r\n        this.allUniqueDates = uniq(this.allUniqueDates);\r\n    }\r\n}\r\n\r\nexport class DemosAndDates {\r\n    demograph: string[];\r\n    missingDates: string;\r\n    measurementAgency: string;\r\n    constructor(obj: any) {\r\n        this.demograph = cloneDeep(obj.Demograph);\r\n        this.missingDates = obj.MissingDates.split(\",\");\r\n        this.measurementAgency = obj.MeasurementAgencyType;\r\n    }\r\n}\r\n\r\nexport class PostedDataConstants {\r\n    static readonly NielsenSweeps = \"Nielsen (Sweeps)\";\r\n    static readonly NielsenOvernightsWithHHData = \"Nielsen (HH Overnights)\";\r\n    static readonly NielsenOvernightsWithoutHHData = \"Nielsen (Overnights)\";\r\n    static readonly ComscorePulse = \"Comscore (Pulse)\";\r\n    static readonly ComscorePerson = \"Comscore (Persons)\";\r\n}\r\n","// Angular import statements\r\nimport { NgFor, NgIf } from \"@angular/common\";\r\nimport {\r\n    ChangeDetectionStrategy,\r\n    Component,\r\n    Input,\r\n    OnInit,\r\n    TemplateRef,\r\n    ViewChild\r\n} from \"@angular/core\";\r\nimport { AnnaCoreModule } from \"@annalib/anna-core\";\r\n// 3rd party import statements\r\nimport { NgbModal, NgbModalOptions, NgbModalRef } from \"@ng-bootstrap/ng-bootstrap\";\r\n\r\n// User defined import statements\r\nimport { SkeletonLoaderComponent } from \"../skeleton-loader/skeleton-loader.component\";\r\nimport { MissingPostedDataConstant } from \"./constants/missing-posted-data.constant\";\r\nimport {\r\n    MissingPostedData,\r\n    MissingPostedDataRequestPayload,\r\n    PostedDataConstants,\r\n} from \"./models/missing-posted-data.model\";\r\n\r\n@Component({\r\n    selector: \"anna-design-missing-posted-data\",\r\n    templateUrl: \"./missing-posted-data.component.html\",\r\n    styleUrls: [\"./missing-posted-data.component.scss\"],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    imports: [NgIf, NgFor, AnnaCoreModule, SkeletonLoaderComponent],\r\n})\r\nexport class MissingPostedDataComponent implements OnInit {\r\n    @Input() page: string = \"DASHBOARD\";\r\n    @Input() isHHData: boolean;\r\n    @Input() selectedDemoCount: number;\r\n    @Input() showDemographicInfo: boolean;\r\n    @Input({ required: true }) missingPostedData: MissingPostedData;\r\n    @Input() payload: MissingPostedDataRequestPayload;\r\n\r\n    constants: typeof MissingPostedDataConstant;\r\n\r\n    @ViewChild(\"postedDataNotFoundModal\")\r\n    private postedDataNotFoundModal: TemplateRef<any>;\r\n    postedDataNotFoundModalReference: NgbModalRef;\r\n\r\n    PostedDataConstants = PostedDataConstants;\r\n    measurementAgencyDate: string;\r\n\r\n    constructor(private modalService: NgbModal) {}\r\n\r\n    ngOnInit(): void {\r\n        this.constants = MissingPostedDataConstant;\r\n    }\r\n\r\n    showPostedDataNotFoundDetails() {\r\n        const ngbModalOptions: NgbModalOptions = {\r\n            windowClass: \"missing-postedData-su-modal\",\r\n        };\r\n        this.postedDataNotFoundModalReference = this.modalService.open(this.postedDataNotFoundModal, ngbModalOptions);\r\n    }\r\n\r\n    closeModal() {\r\n        this.postedDataNotFoundModalReference.close();\r\n    }\r\n}\r\n","<div\r\n    class=\"posted-data-not-found-container\"\r\n    *ngIf=\"missingPostedData && missingPostedData.allUniqueDates.length > 0\"\r\n>\r\n    <i class=\"mi mdi-error error-icon\"></i>\r\n    <span class=\"text-container\"> Posted data could not be found for - </span>\r\n    <button (click)=\"showPostedDataNotFoundDetails()\">View</button>\r\n</div>\r\n\r\n<ng-template\r\n    #postedDataNotFoundModal\r\n    let-modal\r\n>\r\n    <div class=\"modal-header missing-posted-data-modal-header\">\r\n        <h3 class=\"modal-title\">{{ constants.postedDataNotFound }}</h3>\r\n        <i\r\n            class=\"mi mdi-close-icon mdi-font-md close pull-right\"\r\n            (click)=\"closeModal()\"\r\n        ></i>\r\n    </div>\r\n\r\n    <div class=\"modal-body\">\r\n        <section>\r\n            <div class=\"message\">\r\n                <ng-container *ngIf=\"page === 'DASHBOARD'\">\r\n                    {{ missingPostedData.postEvalDatesMessage }} \r\n                    However, posted data could not be found\r\n                    for the following prior dates<span *ngIf=\"showDemographicInfo\"> in this quarter</span>.\r\n                </ng-container>\r\n                <ng-container *ngIf=\"page === 'RATINGS'\">\r\n                    Posted data could not be found for the following dates.\r\n                </ng-container>\r\n            </div>\r\n            <ng-container *ngIf=\"!showDemographicInfo; else misingPostedDataTable\">\r\n                <div class=\"data\">\r\n                    <!-- <ng-container *ngFor=\"let data of missingPostedData.allUniqueDates; let i = last\">\r\n                        <span>{{ data | annaReplaceChar: \",\" : \", \" }}</span>\r\n                        <span *ngIf=\"!i\">, </span>\r\n                    </ng-container> -->\r\n\r\n                    @for (row of missingPostedData.demoAndDatesMappedArray; track row.missingDates) {\r\n                        @for (missingDate of row.missingDates; track missingDate; let last = $last) {\r\n                            {{ missingDate }}\r\n                            @if (!last) {\r\n                                ,\r\n                            }\r\n                            @if (last) {\r\n                                {{ row.measurementAgency }}\r\n                            }\r\n                        }\r\n                        <br />\r\n                    }\r\n                </div>\r\n            </ng-container>\r\n            <ng-template #misingPostedDataTable>\r\n                <div class=\"table-container\">\r\n                    <table\r\n                        class=\"missingPostedDataTable\"\r\n                        annaCoreFixedRowsInPopupTable\r\n                        [popupRowHeight]=\"38\"\r\n                        [tableDataLength]=\"missingPostedData?.demoAndDatesMappedArray?.length\"\r\n                    >\r\n                        <thead>\r\n                            <th>Dates</th>\r\n                            <th>Demos</th>\r\n                        </thead>\r\n                        <tbody>\r\n                            <tr *ngFor=\"let row of missingPostedData.demoAndDatesMappedArray\">\r\n                                <td>\r\n                                    <ng-container *ngFor=\"let date of row.missingDates\">\r\n                                        {{ date }}\r\n                                        <br />\r\n                                    </ng-container>\r\n                                </td>\r\n                                <td>\r\n                                    <ng-container\r\n                                        *ngIf=\"page === 'RATINGS' && row.demograph.length === selectedDemoCount\"\r\n                                    >\r\n                                        All\r\n                                    </ng-container>\r\n                                    <ng-container\r\n                                        *ngIf=\"\r\n                                            page !== 'RATINGS' ||\r\n                                            (page === 'RATINGS' && row.demograph.length !== selectedDemoCount)\r\n                                        \"\r\n                                    >\r\n                                        <ng-container *ngFor=\"let demograph of row.demograph; let i = last\">\r\n                                            <span>{{ demograph }}</span>\r\n                                            <span *ngIf=\"!i\">, </span>\r\n                                        </ng-container>\r\n                                    </ng-container>\r\n                                </td>\r\n                            </tr>\r\n                        </tbody>\r\n                    </table>\r\n                </div>\r\n            </ng-template>\r\n        </section>\r\n    </div>\r\n</ng-template>\r\n\r\n<div\r\n    class=\"container-div\"\r\n    *ngIf=\"missingPostedData && missingPostedData.allUniqueDates.length === 0\"\r\n></div>\r\n<div *ngIf=\"!missingPostedData\">\r\n    <anna-design-skt-loader\r\n        [theme]=\"{\r\n            width: '280px',\r\n            height: '24px',\r\n            'background-color': '#f6f6f6',\r\n            'margin-bottom': '0',\r\n            'margin-top': '-4%'\r\n        }\"\r\n    ></anna-design-skt-loader>\r\n</div>\r\n","import { NgClass, NgIf } from \"@angular/common\";\r\nimport { ChangeDetectionStrategy, Component, EventEmitter, forwardRef, Input, Output } from \"@angular/core\";\r\nimport { FormsModule, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\n\r\n@Component({\r\n    selector: \"anna-design-number-input\",\r\n    standalone: true,\r\n    imports: [FormsModule, NgClass, NgIf],\r\n    templateUrl: \"./number-input.component.html\",\r\n    styleUrl: \"./number-input.component.scss\",\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    providers: [\r\n        {\r\n            provide: NG_VALUE_ACCESSOR,\r\n            useExisting: forwardRef(() => NumberInputComponent),\r\n            multi: true,\r\n        },\r\n    ],\r\n})\r\nexport class NumberInputComponent {\r\n    @Input({ required: true }) minValue: number;\r\n    @Input({ required: true }) maxValue: number;\r\n    @Input({ required: true }) value: number;\r\n    @Input() disableInput: boolean = false;\r\n    @Input() className: string = \"number-input\";\r\n    @Input() step: number = 1;\r\n    @Input() showPercentage: boolean = false;\r\n    @Input() showSign: boolean = false;\r\n    @Input() sign: string = \"\";\r\n    @Input() showError: boolean;\r\n    @Output() valueChanged = new EventEmitter<number>();\r\n\r\n    onChange = (_: any) => {};\r\n    onTouched = () => {};\r\n\r\n    numberInputValueChanged(value: number) {\r\n        this.valueChanged.emit(value);\r\n        this.onChange(this.value);\r\n        this.onTouched();\r\n    }\r\n\r\n    writeValue(value: any): void {\r\n        this.value = value;\r\n    }\r\n\r\n    registerOnChange(fn: any): void {\r\n        this.onChange = fn;\r\n    }\r\n\r\n    registerOnTouched(fn: any): void {\r\n        this.onTouched = fn;\r\n    }\r\n}\r\n","<div class=\"number-input-container\">\r\n    <div\r\n        *ngIf=\"showSign\"\r\n        class=\"sign-or-percentage-div\"\r\n    >\r\n        {{ sign }}\r\n    </div>\r\n    <div class=\"number-input-div\">\r\n        <input\r\n            class=\"{{ className }}\"\r\n            [ngClass]=\"{ 'disable-input': disableInput }\"\r\n            annaCoreDigitOnly\r\n            [min]=\"minValue\"\r\n            [max]=\"maxValue\"\r\n            [(ngModel)]=\"value\"\r\n            (ngModelChange)=\"numberInputValueChanged($event)\"\r\n            inputmode=\"numeric\"\r\n            type=\"number\"\r\n            step=\"step\"\r\n        />\r\n    </div>\r\n    <div\r\n        *ngIf=\"showPercentage\"\r\n        class=\"sign-or-percentage-div\"\r\n    >\r\n        %\r\n    </div>\r\n</div>\r\n<p\r\n    *ngIf=\"showError\"\r\n    class=\"error-message\"\r\n>\r\n    Enter value within {{ minValue }} & {{ maxValue }}\r\n</p>\r\n","/* eslint-disable import/no-extraneous-dependencies */\r\n// Angular import statements\r\nimport { DatePipe, NgClass, NgIf, NgSwitch, NgSwitchCase, NgTemplateOutlet } from \"@angular/common\";\r\nimport {\r\n    ChangeDetectionStrategy,\r\n    Component,\r\n    EventEmitter,\r\n    Input,\r\n    OnChanges,\r\n    OnDestroy,\r\n    OnInit,\r\n    Output,\r\n    SimpleChanges,\r\n    TemplateRef,\r\n    ViewChild,\r\n} from \"@angular/core\";\r\nimport { MatDialog, MatDialogRef } from \"@angular/material/dialog\";\r\nimport { ActivatedRoute, Router } from \"@angular/router\";\r\n// Annalib import statements\r\nimport {\r\n    AnnaDateTimeFormatService,\r\n    AnnaGlobalConfigService,\r\n    AnnaGtHelperService,\r\n    AnnaPersistingFilterService,\r\n    ICustomSingleSelect,\r\n    INgSelectSettings,\r\n    IRadioButtonComponentConfig,\r\n    IWeekCalendar,\r\n} from \"@annalib/anna-core\";\r\n// Third party import statements\r\nimport { NgbDate, NgbDateStruct } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport dayjs from \"dayjs\";\r\nimport isSameOrAfter from \"dayjs/plugin/isSameOrAfter\";\r\nimport isSameOrBefore from \"dayjs/plugin/isSameOrBefore\";\r\nimport { cloneDeep, isEqual } from \"lodash-es\";\r\nimport { NgxSkeletonLoaderModule } from \"ngx-skeleton-loader\";\r\n\r\n// User defined import statements\r\nimport { CustomDatePickerComponent } from \"../custom-date-picker/custom-date-picker.component\";\r\nimport { StartDateConsideringFactor } from \"../custom-date-picker/models/datePicker.model\";\r\nimport { DatepickerService } from \"../custom-date-picker/services/datepickerService\";\r\nimport { TypeOfCalendar } from \"../globals/global.model\";\r\nimport { RadioButtonsComponent } from \"../radio-buttons/radio-buttons.component\";\r\nimport { SingleSelectComponent } from \"../single-select/single-select.component\";\r\nimport { WeekCalendarComponent } from \"../week-calendar/week-calendar.component\";\r\nimport { OrderContainerFilterModal } from \"./constants/order-container-filter-modal.constant\";\r\nimport {\r\n    ICalendarTypeResponse,\r\n    IQuarter,\r\n    IYearQuarter,\r\n    PeriodSelectionPopUp,\r\n} from \"./models/order-container-filter-modal.model\";\r\nimport { CalendarQuarterYearFilterService } from \"./services/calendar-quarter-year-filter.service\";\r\n\r\n@Component({\r\n    selector: \"anna-design-order-container-filter-modal\",\r\n    templateUrl: \"./order-container-filter-modal.component.html\",\r\n    styleUrls: [\"./order-container-filter-modal.component.scss\"],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    imports: [\r\n        NgIf,\r\n        NgClass,\r\n        NgSwitch,\r\n        NgSwitchCase,\r\n        NgTemplateOutlet,\r\n        NgxSkeletonLoaderModule,\r\n        RadioButtonsComponent,\r\n        SingleSelectComponent,\r\n        CustomDatePickerComponent,\r\n        DatePipe,\r\n        WeekCalendarComponent,\r\n    ],\r\n})\r\nexport class OrderContainerFilterModalComponent implements OnInit, OnChanges, OnDestroy {\r\n    @Input() title: string;\r\n    @Input() flightPeriod: { statDate: string; endDate: string };\r\n    @Input() message: string;\r\n    @Input() showEntireFilghtPeriodSelection: boolean = true;\r\n    @Input() showCalendarTypeSelection: boolean = true;\r\n    @Input() selectedData: PeriodSelectionPopUp;\r\n    @Input() disablePeriodSelection: boolean;\r\n    @Input() startDateConsideringFactor: StartDateConsideringFactor = StartDateConsideringFactor.FLIGHT_END_DATE;\r\n    @Input() parentQueryParams: any;\r\n    @Input() PeriodOptions: string[] = [\"Quarter\", \"Month\", \"Custom Range\"];\r\n    @Input() disableBroadcast = false;\r\n    @Input() EntireRangeSelectionMessage: string = \"Entire Flight Period\";\r\n    @Input() disableFiscal = false;\r\n    @Input() removeQuarterSelectionsIfOnlyOneQuarter = false;\r\n    @Input() defaultPeriodSelection: \"Quarter\" | \"Month\" | \"Custom Range\" | \"Week\" = \"Quarter\";\r\n    @Input() showAllInMonthsDropdown: boolean = true;\r\n    @Input() showAllInQuartersDropdown: boolean = true;\r\n    @Input() error: boolean = false;\r\n\r\n    @Output() initialQuarterStartEndDateEmitter = new EventEmitter();\r\n    // @Input() parentComponent: string = \"OTHER\";\r\n    @Output() apply = new EventEmitter();\r\n\r\n    @ViewChild(\"periodSelectModal\")\r\n    private periodSelectModal: TemplateRef<any>;\r\n\r\n    calendarTypeConfig: IRadioButtonComponentConfig;\r\n    ngSelectConfig1: INgSelectSettings;\r\n    yearQuarterData: ICalendarTypeResponse;\r\n\r\n    allYears: string[];\r\n    allBroadcastYears: string[];\r\n    allFiscalYears: string[];\r\n    allMonths: { id: string; text: string }[];\r\n    allQuartersOfYear: IQuarter[];\r\n\r\n    selectedQuarter: IQuarter;\r\n    entireFlightPeriodSelected: boolean;\r\n    selectedYear: string;\r\n    selectedMonth: any;\r\n    selectedCalendarType: TypeOfCalendar;\r\n    selectedStartDate: any;\r\n    selectedEndDate: any;\r\n    selectedPeriodMode: string;\r\n    selectedDataCloned: PeriodSelectionPopUp;\r\n\r\n    currentYear: string;\r\n    currentQuarter: IQuarter;\r\n    currentBroadcastYear: string;\r\n    currentBroadcastQuarter: IQuarter;\r\n    currentFiscalYear: string;\r\n    currentFiscalQuarter: IQuarter;\r\n\r\n    // isModalOpen: boolean;\r\n    capmaignStartDate: NgbDateStruct;\r\n    capmaignEndDate: NgbDateStruct;\r\n    constants = OrderContainerFilterModal;\r\n    disableApply: boolean;\r\n    minEndDate: NgbDateStruct;\r\n    latestEmittedObj: { isEntireFlightPeriod: boolean; startDate: string; endDate: string };\r\n    isFilterValueChanged: boolean;\r\n    displayDate: string;\r\n    DATE_FORMAT = \"MM/DD/YYYY\";\r\n    DATE_FORMAT_HTML = \"MM/dd/YYYY\";\r\n    MONTH_DATE_FORMAT_HTML = \"d MMM\";\r\n\r\n    initialPeriodData: PeriodSelectionPopUp;\r\n\r\n    yearDropdownConfig: ICustomSingleSelect;\r\n    monthDropdownConfig: ICustomSingleSelect;\r\n    quarterDropdownConfig: ICustomSingleSelect;\r\n    periodDropdownConfig: ICustomSingleSelect;\r\n\r\n    entireFlightPeriodDisplayDate: { startDate: string; endDate: string };\r\n    modalReference: MatDialogRef<any>;\r\n\r\n    // week config\r\n    weekCalenderDaysToEnableInFuture: number;\r\n    weekCalenderDaysToEnableInPast: number = 0;\r\n    calendarFromDate: NgbDate;\r\n    calendarToDate: NgbDate;\r\n    calendarMinDate: NgbDate;\r\n    calendarMaxDate: NgbDate;\r\n    weekConfig: IWeekCalendar;\r\n\r\n    constructor(\r\n        private modalService: MatDialog,\r\n        private annaGlobalConfig: AnnaGlobalConfigService,\r\n        private currentRoute: ActivatedRoute,\r\n        private filterService: CalendarQuarterYearFilterService,\r\n        private dpService: DatepickerService,\r\n        private router: Router,\r\n        private annaDateTimeFormatService: AnnaDateTimeFormatService,\r\n        private annaGenericTableService: AnnaGtHelperService,\r\n        private persistingFilterService: AnnaPersistingFilterService,\r\n    ) {\r\n        dayjs.extend(isSameOrAfter);\r\n        dayjs.extend(isSameOrBefore);\r\n        this.setWeeksCalenderConfig();\r\n        this.ngSelectConfig1 = { ...this.annaGlobalConfig.defaultNgSelectSettings };\r\n        this.ngSelectConfig1.placeholder = \"Year not selected\";\r\n        this.setDropsownConfigurations();\r\n    }\r\n\r\n    ngOnInit(): void {\r\n        this.calendarTypeConfig = this.dpService.getCalenderTypeConfig(this.disableBroadcast, this.disableFiscal);\r\n        this.allMonths = this.filterService.getAllMonths();\r\n        if (this.showAllInMonthsDropdown) {\r\n            this.allMonths.unshift({ id: \"0\", text: \"All\" });\r\n        }\r\n\r\n        this.capmaignEndDate = this.annaDateTimeFormatService.convertToNgbDate(\r\n            this.flightPeriod?.endDate,\r\n            \"MM/DD/YYYY\",\r\n        );\r\n        this.capmaignStartDate = this.annaDateTimeFormatService.convertToNgbDate(\r\n            this.flightPeriod?.statDate,\r\n            \"MM/DD/YYYY\",\r\n        );\r\n        this.filterService.quarterFilterSubscription = this.filterService.quarterFilterAPICompletedSubject$.subscribe(\r\n            (result: { filterData: ICalendarTypeResponse; selectedFilter: any }) => {\r\n                this.capmaignEndDate = this.annaDateTimeFormatService.convertToNgbDate(\r\n                    this.flightPeriod?.endDate,\r\n                    \"MM/DD/YYYY\",\r\n                );\r\n                this.capmaignStartDate = this.annaDateTimeFormatService.convertToNgbDate(\r\n                    this.flightPeriod?.statDate,\r\n                    \"MM/DD/YYYY\",\r\n                );\r\n                this.OnSubscriptionSuccess(result);\r\n            },\r\n        );\r\n    }\r\n    changeDataFromFiscalToBroadcast() {\r\n        if (this.selectedData && this.selectedData?.periodMode) {\r\n            if (this.selectedData.calendarType === this.constants.Fiscal) {\r\n                let startDate;\r\n                let endDate;\r\n                this.selectedData.calendarType = this.constants.Broadcast;\r\n                this.selectedCalendarType = this.constants.Broadcast;\r\n                if (this.selectedData.periodMode === this.constants.Quarter) {\r\n                    let selectedYearQuarters = this.yearQuarterData.BroadcastQuarterYear.find(\r\n                        (year) => year.Year === +this.selectedData.year,\r\n                    );\r\n                    selectedYearQuarters =\r\n                        selectedYearQuarters ||\r\n                        this.yearQuarterData.BroadcastQuarterYear.find(\r\n                            (year) => year.Year === +this.selectedData.year + 1,\r\n                        );\r\n                    if (this.selectedData.quarter === this.constants.All) {\r\n                        // Quarter --> ALL\r\n                        this.selectedData.year = selectedYearQuarters.Year.toString();\r\n                        startDate = dayjs(selectedYearQuarters.Quarters[0].StartDate, \"YYYY-MM-DD\").format(\r\n                            \"MM/DD/YYYY\",\r\n                        );\r\n                        endDate = dayjs(\r\n                            selectedYearQuarters.Quarters[selectedYearQuarters.Quarters.length - 1].EndDate,\r\n                            \"YYYY-MM-DD\",\r\n                        ).format(\"MM/DD/YYYY\");\r\n                    } else {\r\n                        // Quarter --> Specific Quarter\r\n                        const quarter = this.selectedData.quarter.split(\" \")[0];\r\n                        let selectedQuarter;\r\n                        if (selectedYearQuarters.Year === +this.selectedData.year) {\r\n                            // similar Broadcast year is found\r\n                            selectedQuarter = selectedYearQuarters.Quarters.find(\r\n                                (q) => q.DisplayDate.split(\" \")[0] === quarter,\r\n                            );\r\n                            if (!selectedQuarter)\r\n                                // Similar Broadcast Quarter not found\r\n                                selectedQuarter = selectedYearQuarters.Quarters[0];\r\n                        } else {\r\n                            // similar Broadcast year is not found\r\n                            this.selectedData.year = selectedYearQuarters.Year.toString();\r\n                            selectedQuarter = selectedYearQuarters.Quarters[0];\r\n                        }\r\n                        startDate = dayjs(selectedQuarter.StartDate, \"YYYY-MM-DD\").format(\"MM/DD/YYYY\");\r\n                        endDate = dayjs(selectedQuarter.EndDate, \"YYYY-MM-DD\").format(\"MM/DD/YYYY\");\r\n                        this.selectedData.quarter = selectedQuarter.DisplayDate;\r\n                    }\r\n                } else if (this.selectedData.periodMode === this.constants.Month) {\r\n                    this.selectedYear = this.allBroadcastYears.includes(this.selectedData.year)\r\n                        ? this.selectedData.year\r\n                        : (+this.selectedData.year + 1).toString();\r\n                    this.changeListOfMonthInDropdown();\r\n                    if (this.selectedData.month === this.constants.All) {\r\n                        if (this.allMonths[0].text === this.constants.All) {\r\n                            // Month --> All selected\r\n                            ({ startDate } = this.dpService.getDateForBroadcastMonth(\r\n                                this.selectedData.year,\r\n                                this.allMonths[1].id,\r\n                            ));\r\n                            ({ endDate } = this.dpService.getDateForBroadcastMonth(\r\n                                this.selectedData.year,\r\n                                this.allMonths[this.allMonths.length - 1].id,\r\n                            ));\r\n                        } else {\r\n                            // Month --> All selected but All option not available\r\n                            ({ startDate } = this.dpService.getDateForBroadcastMonth(\r\n                                this.selectedData.year,\r\n                                this.allMonths[0].id,\r\n                            ));\r\n                            ({ endDate } = this.dpService.getDateForBroadcastMonth(\r\n                                this.selectedData.year,\r\n                                this.allMonths[0].id,\r\n                            ));\r\n                        }\r\n                    } else {\r\n                        let month;\r\n                        if (this.selectedYear === this.selectedData.year) {\r\n                            // Month --> Specific month selected\r\n                            month = this.allMonths.find((m) => m.text === this.selectedData.month);\r\n                        }\r\n                        this.selectedData.year = this.selectedYear;\r\n\r\n                        if (!month) {\r\n                            // Month --> Specific month not found\r\n                            month =\r\n                                this.allMonths[0].text === this.constants.All ? this.allMonths[1] : this.allMonths[0];\r\n                        }\r\n                        const dates = this.dpService.getDateForBroadcastMonth(this.selectedData.year, month.id);\r\n                        this.selectedData.month = month.text;\r\n                        this.selectedMonth = month;\r\n                        ({ startDate } = dates);\r\n                        ({ endDate } = dates);\r\n                    }\r\n                }\r\n                this.selectedData.startDate = startDate;\r\n                this.selectedData.endDate = endDate;\r\n                this.setInitialData();\r\n            }\r\n        }\r\n        this.applyPeriodSelection();\r\n    }\r\n\r\n    ngOnChanges(changes: SimpleChanges) {\r\n        if (this.yearQuarterData && changes.selectedData && !changes.parentQueryParams) {\r\n            this.setInitialData();\r\n        }\r\n        if (changes.disableFiscal || changes.disableBroadcast) {\r\n            this.calendarTypeConfig = this.dpService.getCalenderTypeConfig(this.disableBroadcast, this.disableFiscal);\r\n        }\r\n        if (changes.disableFiscal && this.selectedDataCloned) {\r\n            this.changeDataFromFiscalToBroadcast();\r\n        }\r\n    }\r\n\r\n    OnSubscriptionSuccess(result: { filterData: ICalendarTypeResponse; selectedFilter: any }) {\r\n        if (result.filterData) {\r\n            this.yearQuarterData = cloneDeep(result.filterData);\r\n            this.initYearAndQuarterData();\r\n            this.setInitialData();\r\n            if (this.selectedData?.calendarType === this.constants.Fiscal && this.disableFiscal) {\r\n                this.changeDataFromFiscalToBroadcast();\r\n            } else {\r\n                const objToEmit = {\r\n                    isEntireFlightPeriod: this.entireFlightPeriodSelected,\r\n                    startDate: this.selectedStartDate,\r\n                    endDate: this.selectedEndDate,\r\n                    selectedCalendarType: this.selectedCalendarType,\r\n                };\r\n                if (!isEqual(objToEmit, this.latestEmittedObj)) {\r\n                    this.latestEmittedObj = cloneDeep(objToEmit);\r\n                    this.apply.emit(objToEmit);\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    setInitialData() {\r\n        // this.setInitialPeriodData();\r\n        this.initDataWithDefaultOrPersistingFilter();\r\n        this.selectedDataCloned = {\r\n            endDate: this.selectedEndDate,\r\n            startDate: this.selectedStartDate,\r\n            month: this.selectedMonth ? this.selectedMonth.text : null,\r\n            year: this.selectedYear,\r\n            quarter: this.selectedQuarter ? this.selectedQuarter.DisplayDate : null,\r\n            calendarType: this.selectedCalendarType,\r\n            periodMode: this.selectedPeriodMode,\r\n            isEntireFlightPeriod: this.entireFlightPeriodSelected,\r\n        };\r\n\r\n        this.setDisplayDate();\r\n    }\r\n\r\n    setInitialPeriodData() {\r\n        this.selectedCalendarType = this.constants.Broadcast;\r\n        this.selectedPeriodMode = this.constants.Quarter;\r\n        this.selectCurrentYearAndQuarter(this.constants.Broadcast);\r\n\r\n        if (this.currentBroadcastYear) {\r\n            this.selectedYear = cloneDeep(this.currentBroadcastYear);\r\n            this.selectedQuarter = cloneDeep(this.currentBroadcastQuarter);\r\n        }\r\n\r\n        const selectedStartDate = dayjs(this.selectedQuarter.StartDate).format(\"MM/DD/YYYY\");\r\n        const selectedEndDate = dayjs(this.selectedQuarter.EndDate).format(\"MM/DD/YYYY\");\r\n\r\n        this.initialPeriodData = {\r\n            endDate: selectedEndDate,\r\n            startDate: selectedStartDate,\r\n            month: null,\r\n            year: this.selectedYear,\r\n            quarter: this.selectedQuarter ? this.selectedQuarter.DisplayDate : null,\r\n            calendarType: this.constants.Broadcast,\r\n            periodMode: this.constants.Quarter,\r\n            isEntireFlightPeriod: false,\r\n        };\r\n    }\r\n\r\n    setQuarterAsDefaultPeriodSelection() {\r\n        this.selectedPeriodMode = this.constants.Quarter;\r\n        this.selectCurrentYearAndQuarter(this.constants.Broadcast);\r\n\r\n        if (this.currentBroadcastYear) {\r\n            this.selectedYear = cloneDeep(this.currentBroadcastYear);\r\n            this.selectedQuarter = cloneDeep(this.currentBroadcastQuarter);\r\n        }\r\n    }\r\n\r\n    initDataWithDefaultOrPersistingFilter() {\r\n        this.setDefaultFilterAndIntialFilter();\r\n        if (this.selectedData) {\r\n            this.setWithPersistingFilter();\r\n        } else {\r\n            const startEndDateObjToEmit = {\r\n                startDate: dayjs(this.selectedStartDate).format(\"MM/DD/YYYY\"),\r\n                endDate: dayjs(this.selectedEndDate).format(\"MM/DD/YYYY\"),\r\n            };\r\n            this.initialQuarterStartEndDateEmitter.emit(startEndDateObjToEmit);\r\n        }\r\n    }\r\n\r\n    setWeekAsDefaultPeriodSelection() {\r\n        this.selectedCalendarType = this.selectedCalendarType ? this.selectedCalendarType : \"broadcast\";\r\n        this.selectedPeriodMode = this.constants.Week;\r\n\r\n        this.selectedStartDate = this.yearQuarterData.LatestOffersWeekDate.StartDate;\r\n        this.selectedEndDate = this.yearQuarterData.LatestOffersWeekDate.EndDate;\r\n        const isDateSelectedAsEntireFlightPeriod =\r\n            this.flightPeriod.statDate === this.selectedStartDate && this.flightPeriod.endDate === this.selectedEndDate;\r\n        if (isDateSelectedAsEntireFlightPeriod) {\r\n            this.entireFlightPeriodSelected = true;\r\n        } else {\r\n            this.entireFlightPeriodSelected = false;\r\n        }\r\n        this.setWeekCalendarRange();\r\n        this.setCurrentWeekForWeekCalendar();\r\n    }\r\n\r\n    setDefaultFilterAndIntialFilter() {\r\n        this.selectedCalendarType = this.constants.Broadcast;\r\n        this.entireFlightPeriodSelected = false;\r\n\r\n        if (this.defaultPeriodSelection === \"Week\") {\r\n            // calling setQuarterAsDefaultPeriodSelection to set all years and all quarter list\r\n            this.setQuarterAsDefaultPeriodSelection();\r\n            this.setWeekAsDefaultPeriodSelection();\r\n            this.initialPeriodData = {\r\n                endDate: this.selectedEndDate,\r\n                startDate: this.selectedStartDate,\r\n                month: null,\r\n                year: null,\r\n                quarter: null,\r\n                calendarType: this.constants.Broadcast,\r\n                periodMode: this.constants.Week,\r\n                isEntireFlightPeriod: false,\r\n            };\r\n        } else {\r\n            this.setQuarterAsDefaultPeriodSelection();\r\n            const selectedStartDate = dayjs(this.selectedQuarter.StartDate).format(\"MM/DD/YYYY\");\r\n            const selectedEndDate = dayjs(this.selectedQuarter.EndDate).format(\"MM/DD/YYYY\");\r\n            this.selectedStartDate = dayjs(this.selectedQuarter.StartDate).format(\"MM/DD/YYYY\");\r\n            this.selectedEndDate = dayjs(this.selectedQuarter.EndDate).format(\"MM/DD/YYYY\");\r\n\r\n            this.minEndDate = cloneDeep(this.capmaignStartDate);\r\n\r\n            this.initialPeriodData = {\r\n                endDate: selectedEndDate,\r\n                startDate: selectedStartDate,\r\n                month: null,\r\n                year: this.selectedYear,\r\n                quarter: this.selectedQuarter ? this.selectedQuarter.DisplayDate : null,\r\n                calendarType: this.constants.Broadcast,\r\n                periodMode: this.constants.Quarter,\r\n                isEntireFlightPeriod: false,\r\n            };\r\n        }\r\n    }\r\n\r\n    setWithPersistingFilter() {\r\n        this.entireFlightPeriodSelected = this.selectedData.isEntireFlightPeriod\r\n            ? this.selectedData.isEntireFlightPeriod\r\n            : false;\r\n        this.selectedCalendarType = this.selectedData.calendarType;\r\n        this.selectedPeriodMode = this.selectedData.periodMode ? this.selectedData.periodMode : this.constants.Quarter;\r\n        if (this.selectedData.year) {\r\n            this.selectedYear = this.selectedData.year;\r\n        } else if (this.selectedCalendarType === \"broadcast\") {\r\n            this.selectedYear = this.currentBroadcastYear;\r\n        } else {\r\n            this.selectedYear = this.currentFiscalYear;\r\n        }\r\n        this.allYears =\r\n            this.selectedCalendarType === this.constants.Broadcast\r\n                ? cloneDeep(this.allBroadcastYears)\r\n                : cloneDeep(this.allFiscalYears);\r\n\r\n        this.setQuartersOfYear(this.selectedYear);\r\n        if (this.allQuartersOfYear && this.selectedData.quarter) {\r\n            this.selectedQuarter = this.allQuartersOfYear.filter((n) => n.DisplayDate === this.selectedData.quarter)[0];\r\n        } else if (this.selectedCalendarType === \"broadcast\") {\r\n            this.selectedQuarter = this.currentBroadcastQuarter;\r\n        } else {\r\n            this.selectedQuarter = this.currentFiscalQuarter;\r\n        }\r\n        this.changeListOfMonthInDropdown();\r\n        this.selectedMonth = this.allMonths.filter((n) => n.text === this.selectedData.month)[0];\r\n\r\n        this.selectedStartDate = this.selectedData.startDate\r\n            ? cloneDeep(this.selectedData.startDate)\r\n            : dayjs(this.selectedQuarter?.StartDate).format(\"MM/DD/YYYY\");\r\n        this.selectedEndDate = this.selectedData.endDate\r\n            ? cloneDeep(this.selectedData.endDate)\r\n            : dayjs(this.selectedQuarter?.EndDate).format(\"MM/DD/YYYY\");\r\n        this.minEndDate = this.selectedData.startDate\r\n            ? cloneDeep(this.annaDateTimeFormatService.convertToNgbDate(this.selectedData.startDate, \"YYYY-MM-DD\"))\r\n            : cloneDeep(this.capmaignStartDate);\r\n        if (this.selectedPeriodMode === this.constants.Week) {\r\n            const weekStartDate = this.annaDateTimeFormatService.convertToNgbDateStandardFormat(\r\n                dayjs(this.selectedStartDate).format(\"MM/DD/YYYY\"),\r\n            );\r\n            const weekEndDate = this.annaDateTimeFormatService.convertToNgbDateStandardFormat(\r\n                dayjs(this.selectedEndDate).format(\"MM/DD/YYYY\"),\r\n            );\r\n            this.calendarFromDate = new NgbDate(weekStartDate.year, weekStartDate.month, weekStartDate.day);\r\n            this.calendarToDate = new NgbDate(weekEndDate.year, weekEndDate.month, weekEndDate.day);\r\n        }\r\n    }\r\n\r\n    initYearAndQuarterData() {\r\n        this.allBroadcastYears = [];\r\n        this.yearQuarterData.BroadcastQuarterYear.forEach((yearQuarterObj: IYearQuarter) => {\r\n            this.allBroadcastYears.push(yearQuarterObj.Year.toString());\r\n            const currentQuarter = yearQuarterObj.Quarters.filter((obj) => obj.IsCurrentQuarter)[0];\r\n            if (currentQuarter) {\r\n                this.currentBroadcastYear = yearQuarterObj.Year.toString();\r\n                this.currentBroadcastQuarter = currentQuarter;\r\n            }\r\n        });\r\n        this.allFiscalYears = [];\r\n        this.yearQuarterData.FiscalQuarterYear.forEach((yearQuarterObj: IYearQuarter) => {\r\n            this.allFiscalYears.push(yearQuarterObj.Year.toString());\r\n            const currentQuarter = yearQuarterObj.Quarters.filter((obj) => obj.IsCurrentQuarter)[0];\r\n            if (currentQuarter) {\r\n                this.currentFiscalYear = yearQuarterObj.Year.toString();\r\n                this.currentFiscalQuarter = currentQuarter;\r\n            }\r\n        });\r\n    }\r\n\r\n    // initWithDefaultData() {\r\n    //     this.entireFlightPeriodSelected = false;\r\n    //     this.selectedCalendarType = this.constants.Broadcast;\r\n    //     this.selectedPeriodMode = this.constants.Quarter;\r\n    //     this.selectCurrentYearAndQuarter(this.constants.Broadcast);\r\n    //     this.selectedStartDate = dayjs(this.selectedQuarter.StartDate).format(\"MM/DD/YYYY\");\r\n    //     this.selectedEndDate = dayjs(this.selectedQuarter.EndDate).format(\"MM/DD/YYYY\");\r\n    //     this.minEndDate = cloneDeep(this.capmaignStartDate);\r\n    //     const startEndDateObjToEmit = {\r\n    //         startDate: this.selectedStartDate,\r\n    //         endDate: this.selectedEndDate,\r\n    //     };\r\n    //     this.initialQuarterStartEndDateEmitter.emit(startEndDateObjToEmit);\r\n    //     // emit default start and end date for global search\r\n    // }\r\n\r\n    selectCurrentYearAndQuarter(calendarType: TypeOfCalendar) {\r\n        if (calendarType === this.constants.Broadcast) {\r\n            if (this.currentBroadcastYear) {\r\n                this.allYears = cloneDeep(this.allBroadcastYears);\r\n                this.selectedYear = cloneDeep(this.currentBroadcastYear);\r\n                this.selectedQuarter = cloneDeep(this.currentBroadcastQuarter);\r\n            }\r\n        } else if (this.currentFiscalYear) {\r\n            this.allYears = cloneDeep(this.allFiscalYears);\r\n            this.selectedYear = cloneDeep(this.currentFiscalYear);\r\n            this.selectedQuarter = cloneDeep(this.currentFiscalQuarter);\r\n        }\r\n        this.setQuartersOfYear(this.selectedYear);\r\n    }\r\n\r\n    openPeriodSelectModal() {\r\n        // this.isModalOpen = true;\r\n        this.modalReference = this.modalService.open(this.periodSelectModal, {\r\n            width: \"500px\",\r\n            panelClass: \"order-container-filter-modal\",\r\n            enterAnimationDuration: 0,\r\n            exitAnimationDuration: 0,\r\n        });\r\n        this.isFilterDropdownValueChanged();\r\n    }\r\n\r\n    closeModal() {\r\n        // this.isModalOpen = false;\r\n        this.modalReference.close();\r\n    }\r\n\r\n    periodSelectionChanged(selectedItem?: any) {\r\n        if (selectedItem) {\r\n            this.selectedPeriodMode = cloneDeep(selectedItem);\r\n        }\r\n        // this.selectedYear =\r\n        // this.selectedCalendarType == this.constants.Broadcast ? this.currentBroadcastYear : this.currentFiscalYear;\r\n        this.selectedMonth = null;\r\n        this.selectedQuarter = null;\r\n        this.selectedStartDate = null;\r\n        this.selectedEndDate = null;\r\n        if (this.selectedPeriodMode === this.constants.Quarter) {\r\n            this.setQuartersOfYear(this.selectedYear);\r\n        } else if (this.selectedPeriodMode === this.constants.CustomRange) {\r\n            this.minEndDate = cloneDeep(this.capmaignStartDate);\r\n        } else if (this.selectedPeriodMode === this.constants.Month) {\r\n            this.changeListOfMonthInDropdown();\r\n        } else if (this.selectedPeriodMode === this.constants.Week) {\r\n            this.setCurrentWeekForWeekCalendar();\r\n            this.selectedStartDate = this.annaDateTimeFormatService.convertNgbDateToMoment(this.calendarFromDate);\r\n            this.selectedEndDate = this.annaDateTimeFormatService.convertNgbDateToMoment(this.calendarToDate);\r\n        }\r\n        this.isFilterDropdownValueChanged();\r\n    }\r\n\r\n    changeListOfMonthInDropdown() {\r\n        this.setQuartersOfYear(this.selectedYear);\r\n        const allQuarterYearLength = this.allQuartersOfYear.length;\r\n\r\n        this.allMonths = this.filterService.getAllMonths();\r\n\r\n        if (allQuarterYearLength && allQuarterYearLength < 5) {\r\n            const firstQuarter = this.allQuartersOfYear[0];\r\n            const lastQuarter = this.allQuartersOfYear[allQuarterYearLength - 1];\r\n\r\n            const firstQuarterStartDate = dayjs(firstQuarter.StartDate).format(\"MM/DD/YY\");\r\n            const lastQuarterEndDate = dayjs(lastQuarter.EndDate).format(\"MM/DD/YY\");\r\n\r\n            const minFirstQuarterDate = dayjs(firstQuarterStartDate).isSameOrAfter(this.flightPeriod.statDate)\r\n                ? firstQuarterStartDate\r\n                : this.flightPeriod.statDate;\r\n            const maxLastQuarterDate = dayjs(lastQuarterEndDate).isSameOrBefore(this.flightPeriod.endDate)\r\n                ? lastQuarterEndDate\r\n                : this.flightPeriod.endDate;\r\n\r\n            let minFirstQuarterMonth = dayjs(minFirstQuarterDate).format(\"MMMM\");\r\n            let maxLastQuarterMonth = dayjs(maxLastQuarterDate).format(\"MMMM\");\r\n\r\n            if (this.selectedCalendarType === this.constants.Broadcast) {\r\n                const firstMonthBroadcastDates = this.dpService.getDateForBroadcastMonth(\r\n                    dayjs(minFirstQuarterDate).format(\"YYYY\"),\r\n                    dayjs(minFirstQuarterDate).format(\"M\"),\r\n                );\r\n                const lastMonthBroadcastDates = this.dpService.getDateForBroadcastMonth(\r\n                    this.selectedYear,\r\n                    dayjs(maxLastQuarterDate).format(\"M\"),\r\n                );\r\n                if (dayjs(firstMonthBroadcastDates.endDate).isBefore(minFirstQuarterDate))\r\n                    minFirstQuarterMonth = dayjs(minFirstQuarterDate).add(1, \"M\").format(\"MMMM\");\r\n                if (dayjs(lastMonthBroadcastDates.endDate).isBefore(maxLastQuarterDate))\r\n                    maxLastQuarterMonth = dayjs(maxLastQuarterDate).add(1, \"M\").format(\"MMMM\");\r\n            }\r\n\r\n            const lastQuarteMonthIndex = this.allMonths.findIndex((x) => x.text === maxLastQuarterMonth);\r\n            let firstQuarterMonthIndex = this.allMonths.findIndex((x) => x.text === minFirstQuarterMonth);\r\n\r\n            // firstQuarterMonthIndex = firstQuarterMonthIndex === 1 ? firstQuarterMonthIndex - 1 : firstQuarterMonthIndex;\r\n\r\n            // If Quarter 1 is 27Dec to 27Mar, the firstQuarterMonthIndex will be 11 and\r\n            // want to actually show the January.\r\n            firstQuarterMonthIndex = firstQuarterMonthIndex > lastQuarteMonthIndex ? 0 : firstQuarterMonthIndex;\r\n\r\n            this.allMonths = this.allMonths.slice(firstQuarterMonthIndex, lastQuarteMonthIndex + 1);\r\n        }\r\n        if (this.allMonths.length > 1 && this.showAllInMonthsDropdown) {\r\n            this.allMonths.unshift({ id: \"0\", text: \"All\" });\r\n        }\r\n        // this.selectedMonth = this.allMonths.find((month) => month.id == this.selectedMonth?.id)\r\n        //     ? this.selectedMonth\r\n        //     : this.allMonths[0];\r\n    }\r\n\r\n    yearSelectionChanged(selectedItem?: any) {\r\n        if (selectedItem) {\r\n            this.selectedYear = cloneDeep(selectedItem);\r\n        }\r\n        if (this.selectedPeriodMode === this.constants.Quarter) {\r\n            this.setQuartersOfYear(this.selectedYear);\r\n            this.selectedQuarter = null;\r\n        } else if (this.selectedPeriodMode === this.constants.Month) {\r\n            this.selectedMonth = null;\r\n            this.changeListOfMonthInDropdown();\r\n        }\r\n\r\n        // if(this.parentComponent == \"OTHER\"){\r\n        this.selectedStartDate = null;\r\n        this.selectedEndDate = null;\r\n        this.isFilterDropdownValueChanged();\r\n        // }\r\n        // else{\r\n        //     this.quarterSelectionChanged();\r\n        // }\r\n    }\r\n\r\n    setQuartersOfYear(year: string) {\r\n        this.allQuartersOfYear = cloneDeep(\r\n            this.selectedCalendarType === this.constants.Broadcast\r\n                ? this.yearQuarterData.BroadcastQuarterYear[\r\n                      this.yearQuarterData.BroadcastQuarterYear.findIndex((n) => n.Year.toString() === year)\r\n                  ]?.Quarters\r\n                : this.yearQuarterData.FiscalQuarterYear[\r\n                      this.yearQuarterData.FiscalQuarterYear.findIndex((n) => n.Year.toString() === year)\r\n                  ]?.Quarters,\r\n        );\r\n        if (\r\n            this.showAllInQuartersDropdown &&\r\n            this.allQuartersOfYear?.length > 1 &&\r\n            this.allQuartersOfYear[0]?.DisplayDate !== \"All\"\r\n        ) {\r\n            this.allQuartersOfYear?.unshift({\r\n                DisplayDate: \"All\",\r\n                StartDate: this.allQuartersOfYear[0].StartDate,\r\n                EndDate: this.allQuartersOfYear[this.allQuartersOfYear.length - 1].EndDate,\r\n                IsCurrentQuarter: null,\r\n            });\r\n        }\r\n    }\r\n\r\n    monthSelectionChanged(selectedItem?: any) {\r\n        if (selectedItem) {\r\n            this.selectedMonth = cloneDeep(selectedItem);\r\n        } else {\r\n            return;\r\n        }\r\n        let dates: { startDate: string; endDate: string } = { startDate: \"\", endDate: \"\" };\r\n        if (this.selectedCalendarType === this.constants.Broadcast) {\r\n            if (this.selectedMonth?.text === \"All\") {\r\n                dates.startDate = this.dpService.getDateForBroadcastMonth(\r\n                    this.selectedYear,\r\n                    this.allMonths[1].id,\r\n                ).startDate;\r\n                dates.endDate = this.dpService.getDateForBroadcastMonth(\r\n                    this.selectedYear,\r\n                    this.allMonths[this.allMonths.length - 1].id,\r\n                ).endDate;\r\n            } else {\r\n                dates = this.dpService.getDateForBroadcastMonth(this.selectedYear, this.selectedMonth.id);\r\n            }\r\n        } else if (this.selectedMonth?.text === \"All\") {\r\n            const startDate: string = `${this.selectedYear}-${this.allMonths[1].id}-01`;\r\n            const endDate: string = `${this.selectedYear}-${this.allMonths[this.allMonths.length - 1].id}-01`;\r\n            dates.startDate = dayjs(startDate, \"YYYY-MM-DD\").startOf(\"month\").format(\"YYYY-MM-DD\");\r\n            dates.endDate = dayjs(endDate, \"YYYY-MM-DD\").endOf(\"month\").format(\"YYYY-MM-DD\");\r\n        } else {\r\n            dates = this.dpService.getDateForFiscalMonth(this.selectedYear, this.selectedMonth.id);\r\n        }\r\n        this.selectedStartDate = dates.startDate;\r\n        this.selectedEndDate = dates.endDate;\r\n        this.isFilterDropdownValueChanged();\r\n    }\r\n\r\n    quarterSelectionChanged(selectedItem?: any) {\r\n        if (selectedItem) {\r\n            this.selectedQuarter = cloneDeep(selectedItem);\r\n        }\r\n        if (this.selectedQuarter.DisplayDate === \"All\") {\r\n            this.selectedStartDate = dayjs(this.allQuartersOfYear[0].StartDate, \"YYYY-MM-DD\").format(\"MM/DD/YYYY\");\r\n            this.selectedEndDate = dayjs(\r\n                this.allQuartersOfYear[this.allQuartersOfYear.length - 1].EndDate,\r\n                \"YYYY-MM-DD\",\r\n            ).format(\"MM/DD/YYYY\");\r\n        } else {\r\n            this.selectedStartDate = dayjs(this.selectedQuarter.StartDate, \"YYYY-MM-DD\").format(\"MM/DD/YYYY\");\r\n            this.selectedEndDate = dayjs(this.selectedQuarter.EndDate, \"YYYY-MM-DD\").format(\"MM/DD/YYYY\");\r\n        }\r\n        this.isFilterDropdownValueChanged();\r\n    }\r\n\r\n    customRangeDPStartDateSelected(date: string) {\r\n        this.selectedStartDate = date;\r\n        this.minEndDate = this.annaDateTimeFormatService.convertToNgbDate(this.selectedStartDate, \"YYYY-MM-DD\");\r\n        this.isFilterDropdownValueChanged();\r\n    }\r\n\r\n    customRangeDPEndDateSelected(date: string) {\r\n        this.selectedEndDate = date;\r\n        this.isFilterDropdownValueChanged();\r\n    }\r\n\r\n    applyPeriodSelection() {\r\n        // this.isModalOpen = false;\r\n        this.disableApply = true;\r\n\r\n        if (this.entireFlightPeriodSelected) {\r\n            this.selectedCalendarType = this.constants.Broadcast;\r\n            // this.selectedYear = null;\r\n            // this.selectedMonth = null;\r\n            // this.selectedQuarter = null;\r\n        }\r\n        this.selectedDataCloned = {\r\n            isEntireFlightPeriod: this.entireFlightPeriodSelected,\r\n            calendarType: this.selectedCalendarType,\r\n            periodMode: this.selectedPeriodMode,\r\n            year: this.selectedYear,\r\n            month: this.selectedMonth ? this.selectedMonth.text : null,\r\n            quarter: this.selectedQuarter ? this.selectedQuarter.DisplayDate : null,\r\n            startDate: this.selectedStartDate,\r\n            endDate: this.selectedEndDate,\r\n        };\r\n\r\n        this.setDisplayDate();\r\n\r\n        const objToEmit: any = {\r\n            isEntireFlightPeriod: this.entireFlightPeriodSelected,\r\n            startDate: this.selectedStartDate,\r\n            endDate: this.selectedEndDate,\r\n            selectedCalendarType: this.selectedCalendarType,\r\n        };\r\n\r\n        // if(this.parentComponent != \"OTHER\"){\r\n        //     objToEmit[\"calendarType\"] = this.selectedCalendarType;\r\n        //     objToEmit[\"periodMode\"] = this.selectedPeriodMode;\r\n        //     objToEmit[\"year\"] = this.selectedYear;\r\n        //     objToEmit[\"month\"] = this.selectedMonth;\r\n        //     objToEmit[\"quarter\"] = this.selectedQuarter;\r\n        // }\r\n\r\n        this.latestEmittedObj = cloneDeep(objToEmit);\r\n        this.apply.emit(objToEmit);\r\n\r\n        // if(this.parentComponent == \"OTHER\"){\r\n        this.updateNavigationHistory();\r\n        // }\r\n        if (this.modalReference) this.modalReference.close();\r\n    }\r\n\r\n    updateNavigationHistory() {\r\n        const queryParams = this.selectedDataCloned;\r\n        const updatedParentQueryParams = this.parentQueryParams ? cloneDeep(this.parentQueryParams) : {};\r\n        this.annaGenericTableService.updateQueryParamsFilter(\"filters\", {}, \"DELETE\", updatedParentQueryParams);\r\n\r\n        if (isEqual(this.initialPeriodData, queryParams)) {\r\n            this.annaGenericTableService.updateQueryParamsFilter(\r\n                \"quarterFilter\",\r\n                {},\r\n                \"DELETE\",\r\n                updatedParentQueryParams,\r\n            );\r\n        } else {\r\n            const hashedQueryParam = this.persistingFilterService.storeKeyValueInLocalStorage(queryParams);\r\n            this.annaGenericTableService.updateQueryParamsFilter(\r\n                \"quarterFilter\",\r\n                hashedQueryParam,\r\n                \"ADD\",\r\n                updatedParentQueryParams,\r\n            );\r\n        }\r\n\r\n        if (Object.keys(updatedParentQueryParams).length > 0) {\r\n            this.router.navigate([], {\r\n                relativeTo: this.currentRoute,\r\n                queryParams: updatedParentQueryParams,\r\n            });\r\n        } else {\r\n            this.router.navigate([], {\r\n                relativeTo: this.currentRoute,\r\n            });\r\n        }\r\n    }\r\n\r\n    calendarTypeSelectionChanged(calendarType: TypeOfCalendar) {\r\n        this.selectedCalendarType = calendarType;\r\n        if (this.selectedPeriodMode === this.constants.Quarter) {\r\n            if (this.selectedQuarter) {\r\n                this.selectCurrentYearAndQuarter(this.selectedCalendarType);\r\n                this.quarterSelectionChanged();\r\n            } else {\r\n                this.allYears =\r\n                    calendarType === this.constants.Broadcast\r\n                        ? cloneDeep(this.allBroadcastYears)\r\n                        : cloneDeep(this.allFiscalYears);\r\n                this.allQuartersOfYear =\r\n                    calendarType === this.constants.Broadcast\r\n                        ? this.yearQuarterData.BroadcastQuarterYear.filter(\r\n                              (n) => n.Year.toString() === this.currentBroadcastYear,\r\n                          )[0].Quarters\r\n                        : this.yearQuarterData.FiscalQuarterYear.filter(\r\n                              (n) => n.Year.toString() === this.currentFiscalYear,\r\n                          )[0].Quarters;\r\n                this.selectedYear =\r\n                    calendarType === this.constants.Broadcast ? this.currentBroadcastYear : this.currentFiscalYear;\r\n                this.selectedQuarter =\r\n                    calendarType === this.constants.Broadcast\r\n                        ? this.currentBroadcastQuarter\r\n                        : this.currentFiscalQuarter;\r\n                this.selectedDataCloned.periodMode = this.selectedPeriodMode;\r\n                this.selectedStartDate = this.selectedQuarter.StartDate;\r\n                this.selectedEndDate = this.selectedQuarter.EndDate;\r\n                this.selectedDataCloned.year = this.selectedYear;\r\n                this.selectedDataCloned.quarter = this.selectedQuarter.DisplayDate;\r\n                // this.selectedDataCloned.startDate = this.selectedStartDate;\r\n                // this.selectedDataCloned.endDate = this.selectedEndDate;\r\n            }\r\n        } else if (this.selectedPeriodMode === this.constants.Month) {\r\n            this.allYears =\r\n                this.selectedCalendarType === this.constants.Broadcast\r\n                    ? cloneDeep(this.allBroadcastYears)\r\n                    : cloneDeep(this.allFiscalYears);\r\n            if (!this.allYears.includes(this.selectedYear)) {\r\n                this.selectedYear = this.allYears[this.allYears.length - 1];\r\n            }\r\n            this.changeListOfMonthInDropdown();\r\n            this.monthSelectionChanged(this.selectedMonth || undefined);\r\n        }\r\n        this.removeQuarterOptionFromPeriods();\r\n        this.isFilterDropdownValueChanged();\r\n    }\r\n\r\n    removeQuarterOptionFromPeriods() {\r\n        if (\r\n            this.removeQuarterSelectionsIfOnlyOneQuarter &&\r\n            this.allYears.length === 1 &&\r\n            this.allQuartersOfYear.length === 1\r\n        ) {\r\n            this.PeriodOptions = this.PeriodOptions.filter((option) => option !== this.constants.Quarter);\r\n            this.selectedPeriodMode = this.constants.Month;\r\n        } else {\r\n            this.PeriodOptions = !this.PeriodOptions.includes(this.constants.Quarter)\r\n                ? [this.constants.Quarter, ...this.PeriodOptions]\r\n                : this.PeriodOptions;\r\n        }\r\n    }\r\n\r\n    entireFlightPeriodCheckboxToggled() {\r\n        this.entireFlightPeriodSelected = !this.entireFlightPeriodSelected;\r\n        if (this.entireFlightPeriodSelected) {\r\n            this.selectedStartDate = cloneDeep(dayjs(this.flightPeriod.statDate, \"MM/DD/YYYY\").format(\"MM/DD/YYYY\"));\r\n            this.selectedEndDate = cloneDeep(dayjs(this.flightPeriod.endDate, \"MM/DD/YYYY\").format(\"MM/DD/YYYY\"));\r\n        } else {\r\n            // eslint-disable-next-line no-lonely-if\r\n            if (this.defaultPeriodSelection === \"Week\") {\r\n                this.setWeekAsDefaultPeriodSelection();\r\n            } else {\r\n                this.selectedStartDate = null;\r\n                this.selectedEndDate = null;\r\n                this.allQuartersOfYear = [];\r\n                this.setPeriodSelectionMode();\r\n                this.calendarTypeSelectionChanged(this.selectedCalendarType ? this.selectedCalendarType : \"broadcast\");\r\n            }\r\n        }\r\n        this.isFilterDropdownValueChanged();\r\n    }\r\n\r\n    setPeriodSelectionMode() {\r\n        if (this.PeriodOptions?.length === 1) {\r\n            this.selectedPeriodMode = this.PeriodOptions[0];\r\n        } else {\r\n            this.selectedPeriodMode = this.constants.Quarter;\r\n        }\r\n    }\r\n\r\n    cancelClicked() {\r\n        this.selectedData = cloneDeep(this.selectedDataCloned);\r\n        this.selectedStartDate = cloneDeep(this.selectedDataCloned.startDate);\r\n        this.selectedEndDate = cloneDeep(this.selectedDataCloned.endDate);\r\n        this.selectedPeriodMode = cloneDeep(this.selectedDataCloned.periodMode);\r\n        this.selectedCalendarType = cloneDeep(this.selectedDataCloned.calendarType);\r\n        this.selectedMonth = cloneDeep(this.selectedDataCloned.month);\r\n        this.selectedYear = cloneDeep(this.selectedDataCloned.year);\r\n        // this.selectedQuarter.DisplayDate = cloneDeep(this.selectedDataCloned.quarter);\r\n\r\n        // If cancel is clicked check if persisting filter(i.e.selectedData) else take it from currentBroadcastQuarter\r\n        if (this.selectedData && this.selectedData.quarter) {\r\n            this.setQuartersOfYear(this.selectedYear);\r\n            this.selectedQuarter = this.allQuartersOfYear\r\n                ? this.allQuartersOfYear.filter((n) => n.DisplayDate === this.selectedData.quarter)[0]\r\n                : null;\r\n        } else {\r\n            this.selectedQuarter = this.currentBroadcastQuarter ? cloneDeep(this.currentBroadcastQuarter) : null;\r\n        }\r\n\r\n        this.setDisplayDate();\r\n        this.entireFlightPeriodSelected = cloneDeep(this.selectedDataCloned.isEntireFlightPeriod);\r\n        this.closeModal();\r\n    }\r\n\r\n    setDisplayDate() {\r\n        const displayQuarter = this.selectedDataCloned.quarter;\r\n        const displayYear = this.selectedYear;\r\n        if (!this.entireFlightPeriodSelected && this.selectedPeriodMode === \"Quarter\" && displayQuarter !== \"All\") {\r\n            this.displayDate = `${displayYear} ${displayQuarter}`;\r\n        } else if (this.selectedDataCloned.startDate.includes(\"/\")) {\r\n            this.displayDate = `${this.selectedDataCloned.startDate} - ${this.selectedDataCloned.endDate}`;\r\n            this.entireFlightPeriodDisplayDate = {\r\n                startDate: this.selectedDataCloned.startDate,\r\n                endDate: this.selectedDataCloned.endDate,\r\n            };\r\n        } else {\r\n            const startDate = dayjs(this.selectedDataCloned.startDate, \"YYYY-MM-DD\").format(\"MM/DD/YYYY\");\r\n            const endDate = dayjs(this.selectedDataCloned.endDate, \"YYYY-MM-DD\").format(\"MM/DD/YYYY\");\r\n            this.displayDate = `${startDate} - ${endDate}`;\r\n            this.entireFlightPeriodDisplayDate = {\r\n                startDate,\r\n                endDate,\r\n            };\r\n        }\r\n    }\r\n\r\n    isFilterDropdownValueChanged() {\r\n        const intialStartDate = dayjs(this.selectedStartDate).format(\"MM/DD/YYYY\");\r\n        const intialEndDate = dayjs(this.selectedEndDate).format(\"MM/DD/YYYY\");\r\n        const selectedStartDate = dayjs(this.selectedDataCloned?.startDate).format(\"MM/DD/YYYY\");\r\n        const selectedEndDate = dayjs(this.selectedDataCloned?.endDate).format(\"MM/DD/YYYY\");\r\n        this.isFilterValueChanged =\r\n            !isEqual(selectedStartDate, intialStartDate) ||\r\n            !isEqual(selectedEndDate, intialEndDate) ||\r\n            !isEqual(this.selectedDataCloned?.calendarType, this.selectedCalendarType) ||\r\n            !this.selectedDataCloned?.isEntireFlightPeriod === this.entireFlightPeriodSelected;\r\n    }\r\n\r\n    setDropsownConfigurations() {\r\n        this.setYearDropdownConfig();\r\n        this.setMonthDropdownConfig();\r\n        this.setQuarterDropdownConfig();\r\n        this.setPeriodDropdownConfig();\r\n    }\r\n\r\n    setYearDropdownConfig() {\r\n        this.yearDropdownConfig = { ...this.annaGlobalConfig.defaultSingleSelectConfig };\r\n        this.yearDropdownConfig.placeholder = \"Select Year\";\r\n    }\r\n\r\n    setMonthDropdownConfig() {\r\n        this.monthDropdownConfig = { ...this.annaGlobalConfig.defaultSingleSelectConfig };\r\n        this.monthDropdownConfig.placeholder = \"Select month\";\r\n    }\r\n\r\n    setQuarterDropdownConfig() {\r\n        this.quarterDropdownConfig = { ...this.annaGlobalConfig.defaultSingleSelectConfig };\r\n        this.quarterDropdownConfig.placeholder = \"Select quarter\";\r\n    }\r\n\r\n    setPeriodDropdownConfig() {\r\n        this.periodDropdownConfig = { ...this.annaGlobalConfig.defaultSingleSelectConfig };\r\n        this.periodDropdownConfig.placeholder = \"Select Period\";\r\n    }\r\n\r\n    setCurrentWeekForWeekCalendar() {\r\n        const weekStartDate = this.annaDateTimeFormatService.convertToNgbDateStandardFormat(\r\n            dayjs(this.yearQuarterData.LatestOffersWeekDate.StartDate).format(\"MM/DD/YYYY\"),\r\n        );\r\n        const weekEndDate = this.annaDateTimeFormatService.convertToNgbDateStandardFormat(\r\n            dayjs(this.yearQuarterData.LatestOffersWeekDate.EndDate).format(\"MM/DD/YYYY\"),\r\n        );\r\n        this.calendarFromDate = new NgbDate(weekStartDate.year, weekStartDate.month, weekStartDate.day);\r\n        this.calendarToDate = new NgbDate(weekEndDate.year, weekEndDate.month, weekEndDate.day);\r\n    }\r\n\r\n    setWeekCalendarRange() {\r\n        this.weekCalenderDaysToEnableInPast = Math.abs(\r\n            dayjs(this.flightPeriod.statDate, \"MM/DD/YYYY\").diff(\r\n                dayjs(this.yearQuarterData.LatestOffersWeekDate.StartDate, \"MM/DD/YYYY\"),\r\n                \"days\",\r\n            ),\r\n        );\r\n        this.weekCalenderDaysToEnableInFuture = dayjs(this.flightPeriod.endDate, \"MM/DD/YYYY\").diff(\r\n            dayjs(this.yearQuarterData.LatestOffersWeekDate.EndDate, \"MM/DD/YYYY\"),\r\n            \"days\",\r\n        );\r\n\r\n        const orderFlightPeriodStart = this.annaDateTimeFormatService.convertToNgbDateStandardFormat(\r\n            dayjs(this.flightPeriod.statDate).format(\"MM/DD/YYYY\"),\r\n        );\r\n        const orderFlightPeriodEnd = this.annaDateTimeFormatService.convertToNgbDateStandardFormat(\r\n            dayjs(this.flightPeriod.endDate).format(\"MM/DD/YYYY\"),\r\n        );\r\n        this.calendarMinDate = new NgbDate(\r\n            orderFlightPeriodStart.year,\r\n            orderFlightPeriodStart.month,\r\n            orderFlightPeriodStart.day,\r\n        );\r\n        this.calendarMaxDate = new NgbDate(\r\n            orderFlightPeriodEnd.year,\r\n            orderFlightPeriodEnd.month,\r\n            orderFlightPeriodEnd.day,\r\n        );\r\n    }\r\n\r\n    weekSelectionChanged(value: { startDate: string; endDate: string }) {\r\n        if (value) {\r\n            this.selectedStartDate = dayjs(value.startDate, \"YYYY-MM-DD\").format(\"MM/DD/YYYY\");\r\n            this.selectedEndDate = dayjs(value.endDate, \"YYYY-MM-DD\").format(\"MM/DD/YYYY\");\r\n        }\r\n        this.isFilterDropdownValueChanged();\r\n    }\r\n\r\n    setWeeksCalenderConfig() {\r\n        this.weekConfig = {} as IWeekCalendar;\r\n        this.weekConfig.selectMultipleWeeks = true;\r\n        this.weekConfig.customClass = \"generic-order-period-week-calendar\";\r\n        this.weekConfig.maxWeeksToSelect = 0;\r\n        this.weekConfig.emitMultipleWeekObjects = false;\r\n        this.weekConfig.numberOfMonthsToEnableInPast = 0;\r\n        this.weekConfig.showAsDropdown = true;\r\n        this.weekConfig.selectCurrentWeek = false;\r\n        this.weekConfig.isContainerBody = true;\r\n    }\r\n    ngOnDestroy() {\r\n        this.filterService.quarterFilterSubscription.unsubscribe();\r\n    }\r\n}\r\n","<p class=\"header\">Period</p>\r\n<div\r\n    *ngIf=\"selectedDataCloned || error\"\r\n    (click)=\"openPeriodSelectModal()\"\r\n    class=\"period-dropdown\"\r\n    [ngClass]=\"{ disabled: disablePeriodSelection || error }\"\r\n>\r\n    <ng-container *ngIf=\"selectedDataCloned\">\r\n        <ng-container *ngIf=\"!selectedDataCloned.isEntireFlightPeriod\">\r\n            <ng-container [ngSwitch]=\"selectedDataCloned.periodMode\">\r\n                <span *ngSwitchCase=\"constants.Quarter\">\r\n                    <ng-container *ngIf=\"selectedDataCloned.quarter === 'All'\">\r\n                        <ng-container [ngTemplateOutlet]=\"customRange\"></ng-container>\r\n                    </ng-container>\r\n                    <ng-container *ngIf=\"selectedDataCloned.quarter !== 'All'\">\r\n                        {{ selectedDataCloned.year }}\r\n                        {{ selectedDataCloned.quarter }}\r\n                    </ng-container>\r\n                </span>\r\n\r\n                <span *ngSwitchCase=\"constants.Month\">\r\n                    <ng-container *ngIf=\"selectedDataCloned.month === 'All'\">\r\n                        <ng-container [ngTemplateOutlet]=\"customRange\"></ng-container>\r\n                    </ng-container>\r\n                    <ng-container *ngIf=\"selectedDataCloned.month !== 'All'\">\r\n                        {{ selectedDataCloned.year }}\r\n                        {{ selectedDataCloned.month }}\r\n                        ({{ selectedDataCloned.startDate | date: MONTH_DATE_FORMAT_HTML }} -\r\n                        {{ selectedDataCloned.endDate | date: MONTH_DATE_FORMAT_HTML }})\r\n                    </ng-container>\r\n                </span>\r\n\r\n                <span *ngSwitchCase=\"constants.CustomRange\">\r\n                    <ng-container [ngTemplateOutlet]=\"customRange\"></ng-container>\r\n                </span>\r\n                <span *ngSwitchCase=\"constants.Week\">\r\n                    <ng-container [ngTemplateOutlet]=\"customRange\"></ng-container>\r\n                </span>\r\n            </ng-container>\r\n        </ng-container>\r\n\r\n        <ng-container *ngIf=\"selectedDataCloned.isEntireFlightPeriod\">\r\n            <span>\r\n                <ng-container [ngTemplateOutlet]=\"customRange\"></ng-container>\r\n            </span>\r\n        </ng-container>\r\n    </ng-container>\r\n    <i class=\"mdi mdi-calendar\"></i>\r\n</div>\r\n<ngx-skeleton-loader\r\n    *ngIf=\"!selectedDataCloned && !error\"\r\n    count=\"1\"\r\n    [theme]=\"{\r\n        width: '280px',\r\n        height: '24px',\r\n        'background-color': '#D8D8D8',\r\n        'border-radius': 0,\r\n        'margin-bottom': '0px'\r\n    }\"\r\n></ngx-skeleton-loader>\r\n\r\n<ng-template\r\n    #periodSelectModal\r\n    let-dialogRef=\"dialogRef\"\r\n>\r\n    <div class=\"modal-header\">\r\n        <!-- <i class=\"mi mdi-close-icon close-icon\" (click)=\"cancelClicked()\"></i> -->\r\n        <h3 class=\"modal-title\">{{ title }}</h3>\r\n    </div>\r\n\r\n    <div class=\"modal-body logout-modal\">\r\n        <span class=\"message\">{{ message }}</span>\r\n\r\n        <label\r\n            class=\"flight-period-label\"\r\n            *ngIf=\"showEntireFilghtPeriodSelection\"\r\n            (click)=\"entireFlightPeriodCheckboxToggled()\"\r\n        >\r\n            <i\r\n                class=\"mi mdi-check-box blue-checkbox checked-option\"\r\n                *ngIf=\"entireFlightPeriodSelected\"\r\n            ></i>\r\n            <i\r\n                class=\"mi mdi-check-box-outline-blank blue-checkbox unchecked-option\"\r\n                *ngIf=\"!entireFlightPeriodSelected\"\r\n            ></i>\r\n            {{ EntireRangeSelectionMessage }}\r\n        </label>\r\n\r\n        <div *ngIf=\"showCalendarTypeSelection\">\r\n            <anna-design-radio-buttons\r\n                class=\"period-select-modal-radio\"\r\n                [config]=\"calendarTypeConfig\"\r\n                [selectedValue]=\"selectedCalendarType\"\r\n                (selectionChanged)=\"calendarTypeSelectionChanged($event)\"\r\n                [disabled]=\"entireFlightPeriodSelected\"\r\n            ></anna-design-radio-buttons>\r\n        </div>\r\n\r\n        <div>\r\n            <label class=\"dropdown-label\">Period</label>\r\n            <anna-design-single-select\r\n                [items]=\"PeriodOptions\"\r\n                [disabled]=\"entireFlightPeriodSelected\"\r\n                [selectedItem]=\"selectedPeriodMode\"\r\n                [config]=\"periodDropdownConfig\"\r\n                (valueChanged)=\"periodSelectionChanged($event)\"\r\n            >\r\n            </anna-design-single-select>\r\n        </div>\r\n\r\n        <div class=\"year-quarter-dropdowns\">\r\n            <ng-container *ngIf=\"selectedPeriodMode === constants.Month || selectedPeriodMode === constants.Quarter\">\r\n                <div class=\"year-dropdown\">\r\n                    <label class=\"dropdown-label\">Year</label>\r\n                    <anna-design-single-select\r\n                        [items]=\"allYears\"\r\n                        [disabled]=\"entireFlightPeriodSelected\"\r\n                        [selectedItem]=\"selectedYear\"\r\n                        [config]=\"yearDropdownConfig\"\r\n                        (valueChanged)=\"yearSelectionChanged($event)\"\r\n                    >\r\n                    </anna-design-single-select>\r\n                </div>\r\n            </ng-container>\r\n            <ng-container *ngIf=\"selectedPeriodMode === constants.Month\">\r\n                <div>\r\n                    <label class=\"dropdown-label\">{{ constants.Month }}</label>\r\n                    <anna-design-single-select\r\n                        [items]=\"allMonths\"\r\n                        [disabled]=\"entireFlightPeriodSelected\"\r\n                        [selectedItem]=\"selectedMonth\"\r\n                        [config]=\"monthDropdownConfig\"\r\n                        (valueChanged)=\"monthSelectionChanged($event)\"\r\n                    >\r\n                    </anna-design-single-select>\r\n                </div>\r\n            </ng-container>\r\n\r\n            <ng-container *ngIf=\"selectedPeriodMode === constants.Quarter\">\r\n                <div>\r\n                    <label class=\"dropdown-label\">{{ constants.Quarter }}</label>\r\n                    <anna-design-single-select\r\n                        [items]=\"allQuartersOfYear\"\r\n                        [keyToUseForDisplay]=\"'DisplayDate'\"\r\n                        [keyToUseForCheckingSelectedItem]=\"'DisplayDate'\"\r\n                        [disabled]=\"entireFlightPeriodSelected\"\r\n                        [selectedItem]=\"selectedQuarter\"\r\n                        [config]=\"quarterDropdownConfig\"\r\n                        (valueChanged)=\"quarterSelectionChanged($event)\"\r\n                    >\r\n                    </anna-design-single-select>\r\n                </div>\r\n            </ng-container>\r\n\r\n            <ng-container *ngIf=\"selectedPeriodMode === constants.Week\">\r\n                <div class=\"week-dropdowns\">\r\n                    <div>\r\n                        <p class=\"dropdown-label\">Select Weeks</p>\r\n                        <anna-design-week-calendar\r\n                            class=\"generic-period-week-order-container\"\r\n                            *ngIf=\"weekConfig\"\r\n                            [config]=\"weekConfig\"\r\n                            [selectedFromDate]=\"calendarFromDate\"\r\n                            [selectedEndDate]=\"calendarToDate\"\r\n                            [minDate]=\"calendarMinDate\"\r\n                            [maxDate]=\"calendarMaxDate\"\r\n                            (applyWeekCalendarChanges)=\"weekSelectionChanged($event)\"\r\n                            [noOfMonthsQuarterYearToEnableInPast]=\"weekCalenderDaysToEnableInPast\"\r\n                            [noOfMonthsQuarterYearToEnableInFuture]=\"weekCalenderDaysToEnableInFuture\"\r\n                            [unitToEnableForMaxDate]=\"'days'\"\r\n                            [unitToEnableForMinDate]=\"'days'\"\r\n                            [disableWeekDropdown]=\"entireFlightPeriodSelected\"\r\n                            [weekCalendarPosition]=\"'top-start'\"\r\n                        >\r\n                        </anna-design-week-calendar>\r\n                    </div>\r\n                </div>\r\n            </ng-container>\r\n        </div>\r\n\r\n        <ng-container *ngIf=\"selectedPeriodMode === constants.CustomRange\">\r\n            <div class=\"custom-range-dropdowns\">\r\n                <div>\r\n                    <label class=\"dropdown-label\">Start date</label>\r\n                    <anna-design-custom-date-picker\r\n                        [calendarType]=\"selectedCalendarType\"\r\n                        [maxDate]=\"capmaignEndDate\"\r\n                        [minDate]=\"capmaignStartDate\"\r\n                        [maxYear]=\"capmaignEndDate?.year\"\r\n                        [minYear]=\"capmaignStartDate?.year\"\r\n                        [selectedDate]=\"selectedStartDate\"\r\n                        [disabled]=\"entireFlightPeriodSelected\"\r\n                        [startDateConsideringFactor]=\"startDateConsideringFactor\"\r\n                        [allYearsWithData]=\"selectedCalendarType === 'broadcast' ? allBroadcastYears : allFiscalYears\"\r\n                        (dateSelect)=\"customRangeDPStartDateSelected($event)\"\r\n                    >\r\n                    </anna-design-custom-date-picker>\r\n                </div>\r\n                <div>\r\n                    <label class=\"dropdown-label\">End date</label>\r\n                    <anna-design-custom-date-picker\r\n                        [calendarType]=\"selectedCalendarType\"\r\n                        [maxDate]=\"capmaignEndDate\"\r\n                        [minDate]=\"minEndDate\"\r\n                        [maxYear]=\"capmaignEndDate?.year\"\r\n                        [minYear]=\"minEndDate?.year\"\r\n                        [selectedDate]=\"selectedEndDate\"\r\n                        [startDateConsideringFactor]=\"startDateConsideringFactor\"\r\n                        [disabled]=\"entireFlightPeriodSelected\"\r\n                        [allYearsWithData]=\"selectedCalendarType === 'broadcast' ? allBroadcastYears : allFiscalYears\"\r\n                        (dateSelect)=\"customRangeDPEndDateSelected($event)\"\r\n                    >\r\n                    </anna-design-custom-date-picker>\r\n                </div>\r\n            </div>\r\n        </ng-container>\r\n        <div class=\"buttons\">\r\n            <button\r\n                class=\"anna cancel-button\"\r\n                (click)=\"cancelClicked()\"\r\n            >\r\n                Cancel\r\n            </button>\r\n            <button\r\n                [disabled]=\"!isFilterValueChanged || !selectedEndDate || !selectedStartDate\"\r\n                class=\"anna apply-button\"\r\n                (click)=\"applyPeriodSelection()\"\r\n            >\r\n                Apply\r\n            </button>\r\n        </div>\r\n    </div>\r\n</ng-template>\r\n\r\n<ng-template #customRange>\r\n    {{ entireFlightPeriodDisplayDate.startDate }} -\r\n    {{ entireFlightPeriodDisplayDate.endDate }}\r\n</ng-template>\r\n","import { NgClass, NgIf } from \"@angular/common\";\r\nimport { ChangeDetectionStrategy, Component, Input } from \"@angular/core\";\r\nimport { NgbTooltip } from \"@ng-bootstrap/ng-bootstrap\";\r\n\r\n@Component({\r\n    selector: \"anna-design-over-or-under-delivery\",\r\n    templateUrl: \"./over-or-under-delivery.component.html\",\r\n    styleUrls: [\"./over-or-under-delivery.component.scss\"],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    imports: [NgIf, NgClass, NgbTooltip]\r\n})\r\nexport class OverOrUnderDeliveryComponent {\r\n    @Input() data: any;\r\n    @Input() isOverdelivered: boolean = false;\r\n    @Input() tooltipMessage: string = null;\r\n    @Input() isImp: boolean = false;\r\n    @Input() isGRP: boolean = false;\r\n    @Input() showOrderCount: boolean = false;\r\n    @Input() showRedText: boolean = false;\r\n    @Input() showMinimumLiablityPercent: boolean = false;\r\n    @Input() minimumLiablityPercent: number = null;\r\n}\r\n","<div class=\"title\">\r\n    {{ data.key }}\r\n    <i\r\n        class=\"mi mdi-info-outline info-icon pdl-5\"\r\n        *ngIf=\"data.tooltipBesideKey\"\r\n        [ngbTooltip]=\"data.tooltipBesideKey\"\r\n        placement=\"bottom bottom-right\"\r\n        container=\"body\"\r\n        #t=\"ngbTooltip\"\r\n    ></i>\r\n</div>\r\n\r\n<ng-container *ngIf=\"data && data.value\">\r\n    <section class=\"cost-percent\">\r\n        <div\r\n            class=\"cost\"\r\n            [ngClass]=\"{ red: showRedText }\"\r\n        >\r\n            ${{ data.value.value }}\r\n        </div>\r\n        <div class=\"other percent\">\r\n            ({{ data.value.percentage }}%)\r\n            <i\r\n                class=\"mi mdi-info-outline info-icon pdl-5\"\r\n                *ngIf=\"isOverdelivered\"\r\n                tooltipClass=\"od-tooltip\"\r\n                [ngbTooltip]=\"deliveryInfo\"\r\n                placement=\"bottom bottom-right\"\r\n                container=\"body\"\r\n                #t=\"ngbTooltip\"\r\n            ></i>\r\n        </div>\r\n    </section>\r\n\r\n    <div\r\n        class=\"other\"\r\n        *ngIf=\"isImp\"\r\n    >\r\n        IMP('000): {{ data.value.impression }}\r\n    </div>\r\n    <div\r\n        class=\"other\"\r\n        *ngIf=\"isGRP\"\r\n    >\r\n        GRP: {{ data.value.grp }}\r\n    </div>\r\n    <div\r\n        class=\"other\"\r\n        *ngIf=\"showOrderCount\"\r\n    >\r\n        Orders: {{ data.value.orders }}\r\n    </div>\r\n    <div\r\n        class=\"other\"\r\n        *ngIf=\"showMinimumLiablityPercent\"\r\n    >\r\n        Minimum liability %: {{ minimumLiablityPercent }}%\r\n    </div>\r\n</ng-container>\r\n<div\r\n    class=\"no-data-case\"\r\n    *ngIf=\"!data || !data.value\"\r\n>\r\n    -\r\n</div>\r\n\r\n<ng-template #deliveryInfo>\r\n    <div class=\"delivery-info\">\r\n        {{ tooltipMessage }}\r\n    </div>\r\n</ng-template>\r\n","import { NgClass, NgIf } from \"@angular/common\";\r\nimport {\r\n    ChangeDetectionStrategy,\r\n    Component,\r\n    EventEmitter,\r\n    Input,\r\n    OnChanges,\r\n    Output,\r\n    SimpleChanges,\r\n} from \"@angular/core\";\r\nimport { AnnaGlobalConfigService, ICustomSingleSelect } from \"@annalib/anna-core\";\r\nimport { NgbTooltip } from \"@ng-bootstrap/ng-bootstrap\";\r\n// eslint-disable-next-line import/no-extraneous-dependencies\r\nimport { cloneDeep } from \"lodash-es\";\r\n\r\nimport { SingleSelectComponent } from \"../single-select/single-select.component\";\r\nimport { PopulateListDropdown } from \"./models/priority-dropdowns.model\";\r\n\r\n@Component({\r\n    selector: \"anna-design-priority-dropdowns\",\r\n    templateUrl: \"./priority-dropdowns.component.html\",\r\n    styleUrls: [\"./priority-dropdowns.component.scss\"],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    imports: [NgIf, SingleSelectComponent, NgClass, NgbTooltip],\r\n})\r\nexport class PriorityDropdownsComponent implements OnChanges {\r\n    @Input() highPriorityHeading: string;\r\n    @Input() lowPriorityHeading: string;\r\n    @Input() isDisabled: boolean = false;\r\n    @Input() lowPriorityList: PopulateListDropdown[];\r\n    @Input() highPriorityList: PopulateListDropdown[];\r\n    @Input() differences: any = [false, false];\r\n    @Input() showAutoApproval: boolean = true;\r\n    @Input() showNeedBuyerApproval: boolean = true;\r\n    @Input() disableDropdownInEditMode: boolean = false;\r\n    @Input() disabledPriorityOption: boolean = false;\r\n    @Input() disabledLowPriorityOption: boolean = false;\r\n    @Input() errorInPriorityDropdown: boolean = false;\r\n    @Output() highPriorityListChange = new EventEmitter<PopulateListDropdown[]>();\r\n    @Output() lowPriorityListChange = new EventEmitter<PopulateListDropdown[]>();\r\n\r\n    selectedLowPriorityOption: PopulateListDropdown;\r\n    selectedHighPriorityOption: PopulateListDropdown;\r\n\r\n    dropdownConfig: ICustomSingleSelect;\r\n    readMode: boolean = true;\r\n\r\n    constructor(private annaGlobalConfig: AnnaGlobalConfigService) {\r\n        this.setDropdownConfig();\r\n    }\r\n\r\n    ngOnChanges(changes: SimpleChanges) {\r\n        if (changes.lowPriorityList?.currentValue || changes.highPriorityList?.currentValue) {\r\n            this.selectedLowPriorityOption = this.lowPriorityList?.filter((e) => e.isSelected)[0];\r\n            this.selectedHighPriorityOption = this.highPriorityList?.filter((e) => e.isSelected)[0];\r\n        }\r\n        if (changes.isDisabled) {\r\n            this.readMode = this.isDisabled;\r\n        }\r\n    }\r\n\r\n    highPriorityListSelected(selectedItem: any) {\r\n        this.selectedHighPriorityOption = cloneDeep(selectedItem);\r\n        // this.lowPriorityList.forEach((element: any, index: any) => {\r\n        //     if (element.id < this.selectedHighPriorityOption.id) {\r\n        //         element.isDisabled = true;\r\n        //     } else {\r\n        //         element.isDisabled = false;\r\n        //     }\r\n        // });\r\n\r\n        // if (this.selectedLowPriorityOption.id < this.selectedHighPriorityOption.id) {\r\n        //     this.highPriorityList.map((e: PopulateListDropdown) => (e.isSelected = false));\r\n        //     this.lowPriorityList.map((e: PopulateListDropdown) => (e.isSelected = false));\r\n        //     for (let i = 0; i < this.lowPriorityList.length; i++) {\r\n        //         // if (!this.lowPriorityList[i].isDisabled) {\r\n        //             this.lowPriorityList[i].isSelected = true;\r\n        //             this.selectedLowPriorityOption = this.lowPriorityList[i];\r\n        //             break;\r\n        //         // }\r\n        //     }\r\n        // }\r\n\r\n        this.highPriorityList.forEach((e: PopulateListDropdown) => {\r\n            if (e.id !== this.selectedHighPriorityOption.id) {\r\n                e.isSelected = false;\r\n            } else {\r\n                e.isSelected = true;\r\n            }\r\n        });\r\n        this.highPriorityListChange.emit(this.highPriorityList);\r\n    }\r\n\r\n    lowPriorityListSelected(selectedItem: any) {\r\n        this.selectedLowPriorityOption = cloneDeep(selectedItem);\r\n        this.lowPriorityList.forEach((e: PopulateListDropdown) => {\r\n            if (e.id !== this.selectedLowPriorityOption.id) {\r\n                e.isSelected = false;\r\n            } else {\r\n                e.isSelected = true;\r\n            }\r\n        });\r\n        this.lowPriorityListChange.emit(this.lowPriorityList);\r\n    }\r\n\r\n    setDropdownConfig() {\r\n        this.dropdownConfig = { ...this.annaGlobalConfig.defaultSingleSelectConfig };\r\n    }\r\n}\r\n","<div\r\n    class=\"priority-container\"\r\n    *ngIf=\"showAutoApproval\"\r\n>\r\n    <ng-container *ngIf=\"!readMode\">\r\n        <anna-design-single-select\r\n            class=\"priority-custom-dropdown\"\r\n            [ngClass]=\"{\r\n                'changed-entity': differences[0],\r\n                'error-priority-dropdowns': !selectedHighPriorityOption?.inventoryText\r\n            }\"\r\n            [keyToUseForDisplay]=\"'inventoryText'\"\r\n            [keyToUseForCheckingSelectedItem]=\"'inventory'\"\r\n            [disabled]=\"isDisabled || disableDropdownInEditMode\"\r\n            [items]=\"highPriorityList\"\r\n            [selectedItem]=\"selectedHighPriorityOption\"\r\n            [config]=\"dropdownConfig\"\r\n            (valueChanged)=\"highPriorityListSelected($event)\"\r\n        >\r\n        </anna-design-single-select>\r\n    </ng-container>\r\n    <ng-container *ngIf=\"readMode\">\r\n        {{ selectedHighPriorityOption?.inventoryText }}\r\n    </ng-container>\r\n    <div\r\n        class=\"input-difference-icon\"\r\n        *ngIf=\"differences[0]\"\r\n    ></div>\r\n</div>\r\n\r\n<div\r\n    class=\"priority-container\"\r\n    *ngIf=\"showNeedBuyerApproval\"\r\n>\r\n    <ng-container *ngIf=\"!readMode\">\r\n        <anna-design-single-select\r\n            class=\"priority-custom-dropdown\"\r\n            [ngClass]=\"{\r\n                'changed-entity': differences[1],\r\n                'error-priority-dropdowns': errorInPriorityDropdown || !selectedLowPriorityOption?.inventoryText\r\n            }\"\r\n            [keyToUseForDisplay]=\"'inventoryText'\"\r\n            [keyToUseForCheckingSelectedItem]=\"'inventory'\"\r\n            [disabled]=\"isDisabled || disableDropdownInEditMode || disabledLowPriorityOption\"\r\n            [items]=\"lowPriorityList\"\r\n            [selectedItem]=\"selectedLowPriorityOption\"\r\n            [config]=\"dropdownConfig\"\r\n            (valueChanged)=\"lowPriorityListSelected($event)\"\r\n        >\r\n        </anna-design-single-select>\r\n    </ng-container>\r\n    <ng-container *ngIf=\"readMode\">\r\n        {{ selectedLowPriorityOption?.inventoryText }}\r\n    </ng-container>\r\n\r\n    <div\r\n        class=\"input-difference-icon\"\r\n        *ngIf=\"differences[1]\"\r\n    ></div>\r\n\r\n    <i\r\n        class=\"mdi mdi-alert-octagon\"\r\n        *ngIf=\"errorInPriorityDropdown\"\r\n        placement=\"top bottom auto\"\r\n        [tooltipClass]=\"'priority-dropdown-tooltip'\"\r\n        container=\"body\"\r\n        [ngbTooltip]=\"needBuyerApprovalHasToBeGreater\"\r\n        #t=\"ngbTooltip\"\r\n    ></i>\r\n</div>\r\n<ng-template #needBuyerApprovalHasToBeGreater>\r\n    The Relaxed value has to be greater than or equal to the Standard value.\r\n</ng-template>\r\n","import { NgIf } from \"@angular/common\";\r\nimport { ChangeDetectionStrategy, Component, Input } from \"@angular/core\";\r\nimport { SurewavesYearLogoComponent, VersionAndTermPolicyComponent } from \"@annalib/anna-cognito-lib\";\r\n\r\n@Component({\r\n    selector: \"anna-design-sidebar-footer\",\r\n    templateUrl: \"./sidebar-footer.component.html\",\r\n    styleUrls: [\"./sidebar-footer.component.scss\"],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    imports: [NgIf, VersionAndTermPolicyComponent, SurewavesYearLogoComponent]\r\n})\r\nexport class SidebarFooterComponent {\r\n    @Input() showAnnaLogo: boolean = true;\r\n    @Input() showVersionNumber: boolean = true;\r\n    @Input() showYearTextLogo: boolean = true;\r\n}\r\n","<div class=\"sidebar-footer\">\r\n    <div\r\n        class=\"anna-logo-container\"\r\n        *ngIf=\"showAnnaLogo\"\r\n    >\r\n        <img\r\n            class=\"anna-logo\"\r\n            src=\"assets/images/Anna-Logo-for-footer-min.png\"\r\n        />\r\n    </div>\r\n    <div>\r\n        <div class=\"bottom-line\">\r\n            <anna-cognito-lib-version-and-term-policy\r\n                class=\"{{ showVersionNumber ? '' : 'hide' }}\"\r\n            ></anna-cognito-lib-version-and-term-policy>\r\n        </div>\r\n        <div\r\n            class=\"powered-by-text\"\r\n            *ngIf=\"showYearTextLogo\"\r\n        >\r\n            <anna-cognito-lib-surewaves-year-logo\r\n                class=\"cognito-lib-surewaves-year-logo\"\r\n            ></anna-cognito-lib-surewaves-year-logo>\r\n        </div>\r\n    </div>\r\n</div>\r\n","export class NavItemList {\r\n    name: string;\r\n    url: string;\r\n    icon: string;\r\n    imagePath?:string;\r\n    activeImagePath?:string;\r\n    acl: boolean;\r\n    parent: null | string;\r\n    isHidden?: boolean;\r\n    children: boolean;\r\n    childTabUrlList: string[] = [];\r\n    constructor(data: any) {\r\n        this.name = data.name;\r\n        this.url = data.url;\r\n        this.icon = data.icon;\r\n        this.acl = data.acl;\r\n        this.parent = data.parent;\r\n        this.children = data.children;\r\n        this.isHidden = data.parent != null;\r\n        this.imagePath = data.imagePath;\r\n        this.activeImagePath = data.activeImagePath;\r\n        this.childTabUrlList = data.childTabUrlList ? data.childTabUrlList : [];\r\n    }\r\n}\r\n\r\nexport class NavItem {\r\n    navItems: NavItemList[];\r\n    constructor(data: any) {\r\n        this.navItems = [];\r\n        data.forEach((item: any) => {\r\n            this.navItems.push(new NavItemList(item));\r\n        });\r\n    }\r\n}\r\n\r\nexport class SidebarItemEmittedObj {\r\n    isClicked: boolean;\r\n    itemClicked: NavItemList;\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { Subject } from \"rxjs\";\r\n\r\nimport { NavItemList, SidebarItemEmittedObj } from \"../models/sidebar-menu.model\";\r\n\r\n@Injectable({\r\n    providedIn: \"root\",\r\n})\r\nexport class SidebarMenuService {\r\n    activeSidebarNavItem: NavItemList;\r\n    appSidebarClicked$ = new Subject<SidebarItemEmittedObj>();\r\n    resetActiveNavItem = new Subject<NavItemList>();\r\n    closeSideBarMenu$ = new Subject<boolean>();\r\n}\r\n","import { NgClass, NgFor, NgIf } from \"@angular/common\";\r\nimport {\r\n    ChangeDetectionStrategy,\r\n    ChangeDetectorRef,\r\n    Component,\r\n    ElementRef,\r\n    EventEmitter,\r\n    Input,\r\n    OnChanges,\r\n    OnDestroy,\r\n    OnInit,\r\n    Output,\r\n    SimpleChanges,\r\n    ViewChild,\r\n} from \"@angular/core\";\r\nimport { NavigationEnd, Router } from \"@angular/router\";\r\nimport { AnnaLibAclService } from \"@annalib/anna-cognito-lib\";\r\nimport { ShowEllipsisTextOnHoverDirective } from \"@annalib/anna-core\";\r\nimport { cloneDeep } from \"lodash-es\";\r\nimport { filter } from \"rxjs/operators\";\r\n\r\nimport { BreadcrumbsService } from \"../../breadcrumbs/services/breadcrumbs.service\";\r\nimport { SidebarFooterComponent } from \"../sidebar-footer/sidebar-footer.component\";\r\nimport { NavItemList, SidebarItemEmittedObj } from \"./models/sidebar-menu.model\";\r\nimport { SidebarMenuService } from \"./services/sidebar-menu.service\";\r\n\r\n@Component({\r\n    selector: \"anna-design-sidebar-menu\",\r\n    templateUrl: \"./sidebar-menu.component.html\",\r\n    styleUrls: [\"./sidebar-menu.component.scss\"],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    imports: [NgIf, NgFor, NgClass, SidebarFooterComponent, ShowEllipsisTextOnHoverDirective],\r\n})\r\nexport class SidebarMenuComponent implements OnDestroy, OnChanges, OnInit {\r\n    @Input({ required: true }) navigation: NavItemList[] = [];\r\n    @Input() activeItem: string = null;\r\n    @Input() urlsNotPartOfSideMenu: string[];\r\n    @Input() parentUrlToTabUrlMap: Map<string, string[]> = new Map();\r\n\r\n    @Input() showAnnaLogo: boolean = true;\r\n    @Input() showVersionNumber: boolean = true;\r\n    @Input() showYearTextLogo: boolean = true;\r\n\r\n    @Output() navItemClicked = new EventEmitter<NavItemList>();\r\n\r\n    loading: boolean;\r\n    navigationSubscription: any;\r\n    currentUrlWithoutInitialSlashAndQueryParam: string = null;\r\n    isScrolledInsidebarMenu: boolean = false;\r\n    @ViewChild(\"sidebarMenuBlock\", { static: true }) sidebarMenuBlock: ElementRef;\r\n\r\n    constructor(\r\n        private router: Router,\r\n        private aclService: AnnaLibAclService,\r\n        public breadcrumbService: BreadcrumbsService,\r\n        public sidebarMenuService: SidebarMenuService,\r\n        private cdr: ChangeDetectorRef,\r\n    ) {\r\n        this.sidebarMenuService.closeSideBarMenu$.subscribe((toCloseSidebarMenu: boolean) => {\r\n            if (toCloseSidebarMenu) {\r\n                this.mouseLeave();\r\n            }\r\n        });\r\n    }\r\n\r\n    ngOnChanges(changes: SimpleChanges) {\r\n        if (changes && changes.navigation) {\r\n            this.setActiveMenuItem();\r\n        }\r\n    }\r\n\r\n    ngOnDestroy(): void {\r\n        if (this.navigationSubscription) {\r\n            this.navigationSubscription.unsubscribe();\r\n        }\r\n    }\r\n\r\n    ngOnInit() {\r\n        this.loading = true;\r\n        this.sidebarMenuBlock.nativeElement.classList.add(\"sidebar-minimized\");\r\n        this.setNavigationListBasedOnAcl();\r\n        this.sidebarMenuService.resetActiveNavItem.subscribe((item: NavItemList) => {\r\n            this.setActiveStyleForNavItem(item);\r\n            this.cdr.markForCheck();\r\n        });\r\n        this.loading = false;\r\n        this.navigationSubscription = this.router.events\r\n            .pipe(filter((event) => event instanceof NavigationEnd))\r\n            .subscribe((val) => {\r\n                this.setActiveMenuItem();\r\n                this.cdr.markForCheck();\r\n            });\r\n    }\r\n\r\n    setNavigationListBasedOnAcl() {\r\n        const navigation = cloneDeep(this.navigation);\r\n\r\n        this.navigation = [];\r\n        navigation.forEach((item) => {\r\n            if (item.children && this.removeParentTabWhenChildrenUnAuthorised(item, navigation)) {\r\n                this.navigation.push(new NavItemList(item));\r\n            } else if (!item.children && !item.childTabUrlList.length && this.isUserAuthorisedToAccessTab(item)) {\r\n                this.navigation.push(new NavItemList(item));\r\n            } else if (\r\n                !item.children &&\r\n                item.childTabUrlList.length &&\r\n                this.checkIfOneOfTheUserPageHasAccess(item.childTabUrlList)\r\n            ) {\r\n                this.navigation.push(new NavItemList(item));\r\n            }\r\n        });\r\n\r\n        if (!this.sidebarMenuService.activeSidebarNavItem) {\r\n            this.sidebarMenuService.activeSidebarNavItem = cloneDeep(this.navigation[0]);\r\n        }\r\n        this.activeItem =\r\n            this.sidebarMenuService.activeSidebarNavItem.parent == null\r\n                ? this.sidebarMenuService.activeSidebarNavItem.name\r\n                : this.sidebarMenuService.activeSidebarNavItem.parent;\r\n\r\n        if (this.urlsNotPartOfSideMenu.includes(this.currentUrlWithoutInitialSlashAndQueryParam)) {\r\n            this.sidebarMenuService.activeSidebarNavItem = null;\r\n            this.activeItem = null;\r\n        }\r\n    }\r\n\r\n    setActiveMenuItem() {\r\n        this.currentUrlWithoutInitialSlashAndQueryParam = this.router.url.slice(1).split(\"?\")[0].split(\"/\")[0];\r\n        const activeItem = this.navigation.filter((n) =>\r\n            n.url.includes(this.currentUrlWithoutInitialSlashAndQueryParam),\r\n        )[0];\r\n\r\n        if (activeItem) {\r\n            this.sidebarMenuService.activeSidebarNavItem = new NavItemList(activeItem);\r\n        } else if (this.urlsNotPartOfSideMenu.includes(this.currentUrlWithoutInitialSlashAndQueryParam)) {\r\n            this.sidebarMenuService.activeSidebarNavItem = null;\r\n            this.activeItem = null;\r\n        } else {\r\n            this.sidebarMenuService.activeSidebarNavItem = new NavItemList(this.navigation[0]);\r\n        }\r\n\r\n        if (this.sidebarMenuService.activeSidebarNavItem) {\r\n            this.activeItem =\r\n                this.sidebarMenuService.activeSidebarNavItem.parent == null\r\n                    ? this.sidebarMenuService.activeSidebarNavItem.name\r\n                    : this.sidebarMenuService.activeSidebarNavItem.parent;\r\n        }\r\n    }\r\n\r\n    checkIfOneOfTheUserPageHasAccess(pathToChecks: any[]) {\r\n        const isAccessPresent = pathToChecks.some((item) => this.aclService.isUserAuthorisedToAccessPage(item));\r\n        return isAccessPresent;\r\n    }\r\n\r\n    itemClicked(item: NavItemList) {\r\n        this.breadcrumbService.isBreadcrumbClicked = false;\r\n        const objToEmit = {} as SidebarItemEmittedObj;\r\n        objToEmit.isClicked = true;\r\n        objToEmit.itemClicked = item;\r\n        this.sidebarMenuService.appSidebarClicked$.next(objToEmit);\r\n        const children = this.navigation.filter((n) => n.parent === item.name);\r\n        if (children.length > 0) {\r\n            const isCollapsed = children[0].isHidden;\r\n            this.navigation\r\n                .filter((n) => n.parent === item.name)\r\n                .forEach((navItem) => {\r\n                    navItem.isHidden = !isCollapsed;\r\n                });\r\n            if (isCollapsed) {\r\n                this.navigation\r\n                    .filter(\r\n                        (n) =>\r\n                            n.parent != null &&\r\n                            n.parent !== item.name &&\r\n                            this.sidebarMenuService.activeSidebarNavItem &&\r\n                            n.parent !== this.sidebarMenuService.activeSidebarNavItem.parent,\r\n                    )\r\n                    .forEach((navItem) => {\r\n                        navItem.isHidden = true;\r\n                    });\r\n            }\r\n        } else {\r\n            if (item.url === \"/orders\" && this.router.url.includes(\"/orders/order-container\"))\r\n                this.breadcrumbService.popBreadcrumbs(this.breadcrumbService.getBreadcrumbList()?.length);\r\n            if (!this.router.url.includes(item.url))\r\n                this.breadcrumbService.popBreadcrumbs(this.breadcrumbService.getBreadcrumbList()?.length);\r\n            if (item.childTabUrlList && item.childTabUrlList.length) {\r\n                const pathToRoute = this.getTabFirstVisibleTabPath(item.childTabUrlList);\r\n\r\n                this.breadcrumbService.isBreadcrumbClicked = false;\r\n\r\n                this.router.navigate([item.url, pathToRoute]);\r\n            } else {\r\n                this.router.navigate([item.url]);\r\n            }\r\n\r\n            this.sidebarMenuService.activeSidebarNavItem = cloneDeep(item);\r\n            this.activeItem = item.parent == null ? item.name : item.parent;\r\n            this.navigation\r\n                .filter((n) => n.parent != null)\r\n                .forEach((navItem) => {\r\n                    if (\r\n                        navItem.parent !== item.parent &&\r\n                        this.sidebarMenuService.activeSidebarNavItem.parent !== navItem.parent\r\n                    ) {\r\n                        navItem.isHidden = true;\r\n                    }\r\n                });\r\n        }\r\n\r\n        this.navItemClicked.emit(item);\r\n    }\r\n\r\n    getTabFirstVisibleTabPath(pathToChecks: string[]) {\r\n        let pathToReturn = \"\";\r\n        pathToChecks.some((item: any) => {\r\n            if (this.aclService.isUserAuthorisedToAccessPage(item)) {\r\n                pathToReturn = item;\r\n                return true;\r\n            }\r\n            return false;\r\n        });\r\n        return pathToReturn;\r\n    }\r\n\r\n    mouseEnter() {\r\n        this.navigation.forEach((navItem) => {\r\n            navItem.isHidden = !(\r\n                navItem.parent == null ||\r\n                (this.sidebarMenuService.activeSidebarNavItem &&\r\n                    this.sidebarMenuService.activeSidebarNavItem.parent === navItem.parent)\r\n            );\r\n        });\r\n        this.sidebarMenuBlock.nativeElement.classList.remove(\"sidebar-minimized\");\r\n    }\r\n\r\n    mouseLeave() {\r\n        this.sidebarMenuBlock.nativeElement.classList.add(\"sidebar-minimized\");\r\n        this.navigation\r\n            .filter((n) => n.parent != null)\r\n            .forEach((navItem) => {\r\n                navItem.isHidden = true;\r\n            });\r\n    }\r\n\r\n    public isUserAuthorisedToAccessTab(item: NavItemList): boolean {\r\n        if (item.acl) {\r\n            const urlWithoutSlash = item.url.slice(1);\r\n            return this.aclService.isUserAuthorisedToAccessPage(urlWithoutSlash);\r\n        }\r\n        return true;\r\n    }\r\n\r\n    public removeParentTabWhenChildrenUnAuthorised(parent: NavItemList, allItems: NavItemList[]) {\r\n        let showTab = false;\r\n        allItems\r\n            .filter((n: any) => n.parent === parent.name)\r\n            .forEach((childTab) => {\r\n                if (this.isUserAuthorisedToAccessTab(childTab)) {\r\n                    showTab = true;\r\n                }\r\n            });\r\n        return showTab;\r\n    }\r\n\r\n    setActiveStyleForNavItem(item: NavItemList) {\r\n        this.sidebarMenuService.activeSidebarNavItem = cloneDeep(item);\r\n        this.activeItem = item.parent == null ? item.name : item.parent;\r\n    }\r\n\r\n    onScrollingSideMenu(event: any) {\r\n        if (event.target.scrollTop > 0) {\r\n            this.isScrolledInsidebarMenu = true;\r\n        } else {\r\n            this.isScrolledInsidebarMenu = false;\r\n        }\r\n    }\r\n}\r\n","<div\r\n    id=\"sidebar\"\r\n    [ngClass]=\"{ 'scrolled-inside-sidebar-menu': isScrolledInsidebarMenu }\"\r\n    class=\"sidebar\"\r\n    (mouseenter)=\"mouseEnter()\"\r\n    (mouseleave)=\"mouseLeave()\"\r\n    #sidebarMenuBlock\r\n>\r\n    <ul\r\n        *ngIf=\"!loading\"\r\n        class=\"nav-items-list\"\r\n        (scroll)=\"onScrollingSideMenu($event)\"\r\n    >\r\n        <ng-container *ngFor=\"let navItem of navigation; let i = index\">\r\n            <li\r\n                class=\"nav-item\"\r\n                *ngIf=\"!navItem.isHidden\"\r\n            >\r\n                <a\r\n                    class=\"nav-link\"\r\n                    (click)=\"itemClicked(navItem)\"\r\n                    [ngClass]=\"{\r\n                        active: activeItem && activeItem === navItem.name,\r\n                        'nav-child': navItem.parent != null\r\n                    }\"\r\n                >\r\n                    <span\r\n                        class=\"active-item-span\"\r\n                        *ngIf=\"activeItem && navItem.name === activeItem\"\r\n                    ></span>\r\n                    <i\r\n                        *ngIf=\"navItem.icon\"\r\n                        class=\"{{ navItem.icon }}\"\r\n                    ></i>\r\n                    <img\r\n                        *ngIf=\"navItem.imagePath\"\r\n                        class=\"nav-icon-img\"\r\n                        [height]=\"24\"\r\n                        [width]=\"24\"\r\n                        [src]=\"navItem.name === activeItem ? navItem.activeImagePath : navItem.imagePath\"\r\n                        alt=\"\"\r\n                    />\r\n\r\n                    <span\r\n                    annaCoreShowEllipsisTextOnHover\r\n                        class=\"link-name\"\r\n                        [ngClass]=\"{ 'green-text': sidebarMenuService?.activeSidebarNavItem?.name === navItem.name }\"\r\n                    >\r\n                        {{ navItem.name }}\r\n                    </span>\r\n\r\n                    <span\r\n                        [ngClass]=\"{\r\n                            'nav-dropdown-toggle': navItem.children && navigation[i + 1].isHidden,\r\n                            'nav-dropdown-toggle-active': navItem.children && !navigation[i + 1].isHidden\r\n                        }\"\r\n                    >\r\n                    </span>\r\n                </a>\r\n            </li>\r\n        </ng-container>\r\n    </ul>\r\n    <anna-design-sidebar-footer\r\n        [showAnnaLogo]=\"showAnnaLogo\"\r\n        [showVersionNumber]=\"showVersionNumber\"\r\n        [showYearTextLogo]=\"showYearTextLogo\"\r\n    >\r\n    </anna-design-sidebar-footer>\r\n</div>\r\n","export interface NewChartJSType {\r\n    labels: string[];\r\n    datasets: Dataset[];\r\n}\r\n\r\nexport interface Dataset {\r\n    data: any[];\r\n    stack?: string;\r\n    backgroundColor?: string[] | string;\r\n    hoverBackgroundColor?: string[] | string;\r\n    hoverBorderColor?: string[] | string;\r\n}\r\n\r\nexport class SizeOfChart {\r\n    width: string;\r\n    height: string;\r\n    constructor(width: string, height: string) {\r\n        this.width = width;\r\n        this.height = height;\r\n    }\r\n}\r\n","import { NgStyle } from \"@angular/common\";\r\nimport { ChangeDetectionStrategy, Component, Input, ViewChild } from \"@angular/core\";\r\nimport {\r\n    BarController,\r\n    BarElement,\r\n    CategoryScale,\r\n    Chart,\r\n    ChartOptions,\r\n    ChartType,\r\n    LinearScale,\r\n    Tooltip,\r\n} from \"chart.js\";\r\nimport { BaseChartDirective } from \"ng2-charts\";\r\n\r\nimport { NewChartJSType, SizeOfChart } from \"./models/chart.model\";\r\n\r\nChart.register(CategoryScale, LinearScale, BarElement, BarController, Tooltip);\r\n\r\n@Component({\r\n    selector: \"anna-design-stack-chart\",\r\n    templateUrl: \"./stack-chart.component.html\",\r\n    styleUrls: [\"./stack-chart.component.scss\"],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    imports: [NgStyle, BaseChartDirective],\r\n    standalone: true,\r\n})\r\nexport class StackChartComponent {\r\n    @Input({ required: true }) barchartData: NewChartJSType;\r\n    @Input({ required: true }) barchartOptions: ChartOptions;\r\n    @Input() sizeOfChart: SizeOfChart;\r\n    @Input() barChartTypeInput: ChartType = \"bar\";\r\n    @Input() chartClass: string;\r\n\r\n    @ViewChild(BaseChartDirective) chart: BaseChartDirective;\r\n}\r\n","<div\r\n    id=\"canvasParent\"\r\n    [ngStyle]=\"{ width: sizeOfChart?.width, height: sizeOfChart?.height }\"\r\n    [class]=\"chartClass\"\r\n>\r\n    <canvas\r\n        baseChart\r\n        [data]=\"barchartData\"\r\n        [options]=\"barchartOptions\"\r\n        [legend]=\"false\"\r\n        [type]=\"barChartTypeInput\"\r\n    >\r\n    </canvas>\r\n</div>\r\n","import { NgIf, NgStyle } from \"@angular/common\";\r\nimport {\r\n    ChangeDetectionStrategy,\r\n    ChangeDetectorRef,\r\n    Component,\r\n    EventEmitter,\r\n    Input,\r\n    OnDestroy,\r\n    OnInit,\r\n    Output,\r\n} from \"@angular/core\";\r\nimport { AnnaCircularProgressComponent } from '@annalib/anna-core'\r\n// eslint-disable-next-line import/no-extraneous-dependencies\r\n\r\n@Component({\r\n    selector: \"anna-design-timer\",\r\n    templateUrl: \"./timer.component.html\",\r\n    styleUrls: [\"./timer.component.scss\"],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    standalone: true,\r\n    imports: [NgIf, NgStyle, AnnaCircularProgressComponent],\r\n})\r\nexport class TimerComponent implements OnInit, OnDestroy {\r\n    @Input() outerStrokeColor: string;\r\n    @Input() innerStrokeColor: string;\r\n    @Input() duration: number;\r\n    @Input() durationLeft: number;\r\n    @Input() top: string;\r\n    @Input() timerTextLeftValue: string;\r\n    @Input() timerCircleLeftValue: string;\r\n    @Output() timedOut = new EventEmitter<any>();\r\n\r\n    secondsLeft: number;\r\n    minutesLeft: number;\r\n    secondsPassed: number = 0;\r\n    secondsLeftForDisplay: string = \"00\";\r\n    percentDone: number = 0;\r\n    intervalId: NodeJS.Timeout;\r\n    stopTimer: boolean = false;\r\n\r\n    constructor(private cdRef: ChangeDetectorRef) {}\r\n\r\n    ngOnInit() {\r\n        this.resetAllVariables();\r\n        this.startTimer();\r\n    }\r\n\r\n    reset() {\r\n        this.closeTimer();\r\n        this.resetAllVariables();\r\n        this.cdRef.detectChanges();\r\n        this.startTimer();\r\n    }\r\n\r\n    resetAllVariables() {\r\n        this.minutesLeft = this.durationLeft === undefined ? this.duration / 60 : Math.floor(this.durationLeft / 60);\r\n        this.secondsLeft = this.durationLeft === undefined ? 0 : this.durationLeft % 60;\r\n        this.secondsPassed = this.durationLeft === undefined ? 0 : this.duration - this.durationLeft;\r\n        this.secondsLeftForDisplay = this.durationLeft === undefined ? \"00\" : this.getSecondLeftForDisplay();\r\n        this.percentDone = (this.secondsPassed * 100) / this.duration;\r\n    }\r\n\r\n    startTimer() {\r\n        if (this.percentDone !== 100) {\r\n            this.intervalId = setInterval(() => {\r\n                this.minutesLeft = this.secondsLeft === 0 ? (this.minutesLeft -= 1) : this.minutesLeft;\r\n                this.secondsLeft = this.secondsLeft === 0 ? 59 : (this.secondsLeft -= 1);\r\n                this.secondsLeftForDisplay = this.getSecondLeftForDisplay();\r\n                if (this.minutesLeft === 0 && this.secondsLeft === 0) {\r\n                    this.stopTimer = true;\r\n                    this.timedOut.emit();\r\n                }\r\n                this.secondsPassed += 1;\r\n                this.percentDone = (this.secondsPassed * 100) / this.duration;\r\n                this.cdRef.detectChanges();\r\n            }, 1000);\r\n        } else {\r\n            this.stopTimer = true;\r\n            this.timedOut.emit();\r\n        }\r\n    }\r\n\r\n    getSecondLeftForDisplay() {\r\n        return this.secondsLeft < 10 ? `0${this.secondsLeft}` : this.secondsLeft.toString();\r\n    }\r\n\r\n    closeTimer() {\r\n        if (this.intervalId) {\r\n            clearInterval(this.intervalId);\r\n        }\r\n    }\r\n\r\n    ngOnDestroy() {\r\n        this.closeTimer();\r\n    }\r\n}\r\n","<ng-container *ngIf=\"!stopTimer\">\r\n    <span\r\n        class=\"timer-text\"\r\n        [ngStyle]=\"{ top: top, left: timerTextLeftValue }\"\r\n        >{{ minutesLeft === 10 ? minutesLeft : \"0\" + minutesLeft }}:{{ secondsLeftForDisplay }}</span\r\n    >\r\n    <anna-core-circular-progress\r\n        class=\"timer-progress\"\r\n        [ngStyle]=\"{ top: top, left: timerCircleLeftValue }\"\r\n        [percent]=\"percentDone\"\r\n        [radius]=\"24\"\r\n        [outerStrokeWidth]=\"5\"\r\n        [innerStrokeWidth]=\"5\"\r\n        [outerStrokeColor]=\"outerStrokeColor\"\r\n        [innerStrokeColor]=\"innerStrokeColor\"\r\n        [animationDuration]=\"0\"\r\n    ></anna-core-circular-progress>\r\n</ng-container>\r\n","/* eslint-disable import/no-extraneous-dependencies */\r\n\r\n// Angular import statements\r\nimport { ScrollingModule } from \"@angular/cdk/scrolling\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { MatMenuModule } from \"@angular/material/menu\";\r\n// ANNA lib import statements\r\nimport { AnnaCoreModule, AnnaFilterSearchedTextPipe } from \"@annalib/anna-core\";\r\n// Third party import statements\r\nimport { NgbModule } from \"@ng-bootstrap/ng-bootstrap\";\r\n// import { NgChartsModule } from \"ng2-charts\";\r\nimport { NgxSkeletonLoaderModule } from \"ngx-skeleton-loader\";\r\n\r\n// User defined Import statements\r\nimport { BarChartComponent } from \"./bar-chart/bar-chart.component\";\r\nimport { BreadcrumbsComponent } from \"./breadcrumbs/breadcrumbs.component\";\r\nimport { BuyerContactComponent } from \"./buyer-contact/buyer-contact.component\";\r\nimport { ConfirmationPopupComponent } from \"./confirmation-popup/confirmation-popup.component\";\r\nimport { CustomDatePickerComponent } from \"./custom-date-picker/custom-date-picker.component\";\r\nimport { CustomNgbDatepickerFormControlComponent } from \"./custom-ngb-datepicker-form-control/custom-ngb-datepicker-form-control.component\";\r\nimport { DashboardFilterModalComponent } from \"./dashboard-filter-modal/dashboard-filter-modal.component\";\r\nimport { DemoNormalizationComponent } from \"./demo-normalization/demo-normalization.component\";\r\nimport { DoughnutChartComponent } from \"./doughnut-chart/doughnut-chart.component\";\r\nimport { EasyFiltersComponent } from \"./easy-filters/easy-filters.component\";\r\n// eslint-disable-next-line max-len\r\nimport { EquivalisationOfDataToggleBtnComponent } from \"./equivalisation-of-data-toggle-btn/equivalisation-of-data-toggle-btn.component\";\r\nimport { FilterViewContainerComponent } from \"./filter-view-container/filter-view-container.component\";\r\nimport { GenericLineChartComponent } from \"./generic-line-chart/generic-line-chart.component\";\r\nimport { GenericPeriodSelectionComponent } from \"./generic-period-selection/generic-period-selection.component\";\r\nimport { GenericWizardFormComponent } from \"./generic-wizard-form/generic-wizard-form.component\";\r\n// eslint-disable-next-line max-len\r\nimport { IncludeOutstandingPreemptionsToggleBtnComponent } from \"./include-outstanding-preemptions-toggle-btn/include-outstanding-preemptions-toggle-btn.component\";\r\nimport { KeyValueComponent } from \"./key-value/key-value.component\";\r\nimport { MessageBoxComponent } from \"./message-box/message-box.component\";\r\nimport { MissingPostedDataComponent } from \"./missing-posted-data/missing-posted-data.component\";\r\nimport { MultiSelectComponent } from \"./multi-select/multi-select.component\";\r\nimport { NumberInputComponent } from \"./number-input/number-input.component\";\r\n// eslint-disable-next-line max-len\r\nimport { OrderContainerFilterModalComponent } from \"./order-container-filter-modal/order-container-filter-modal.component\";\r\nimport { OverOrUnderDeliveryComponent } from \"./over-or-under-delivery/over-or-under-delivery.component\";\r\nimport { PriorityDropdownsComponent } from \"./priority-dropdowns/priority-dropdowns.component\";\r\nimport { RadioButtonsComponent } from \"./radio-buttons/radio-buttons.component\";\r\nimport { SidebarFooterComponent } from \"./sidebar/sidebar-footer/sidebar-footer.component\";\r\nimport { SidebarMenuComponent } from \"./sidebar/sidebar-menu/sidebar-menu.component\";\r\nimport { SingleSelectComponent } from \"./single-select/single-select.component\";\r\nimport { SkeletonLoaderComponent } from \"./skeleton-loader/skeleton-loader.component\";\r\nimport { StackChartComponent } from \"./stack-chart/stack-chart.component\";\r\nimport { TimerComponent } from \"./timer/timer.component\";\r\nimport { ToggleComponent } from \"./toggle/toggle.component\";\r\nimport { WeekCalendarComponent } from \"./week-calendar/week-calendar.component\";\r\n\r\n@NgModule({\r\n    imports: [\r\n        CustomDatePickerComponent,\r\n        GenericLineChartComponent,\r\n        KeyValueComponent,\r\n        MissingPostedDataComponent,\r\n        RadioButtonsComponent,\r\n        OrderContainerFilterModalComponent,\r\n        SkeletonLoaderComponent,\r\n        ToggleComponent,\r\n        EquivalisationOfDataToggleBtnComponent,\r\n        DemoNormalizationComponent,\r\n        BreadcrumbsComponent,\r\n        BuyerContactComponent,\r\n        SidebarFooterComponent,\r\n        SidebarMenuComponent,\r\n        PriorityDropdownsComponent,\r\n        MessageBoxComponent,\r\n        OverOrUnderDeliveryComponent,\r\n        ConfirmationPopupComponent,\r\n        SingleSelectComponent,\r\n        MultiSelectComponent,\r\n        OverOrUnderDeliveryComponent,\r\n        DoughnutChartComponent,\r\n        StackChartComponent,\r\n        GenericPeriodSelectionComponent,\r\n        DashboardFilterModalComponent,\r\n        EasyFiltersComponent,\r\n        GenericWizardFormComponent,\r\n        TimerComponent,\r\n        IncludeOutstandingPreemptionsToggleBtnComponent,\r\n        FilterViewContainerComponent,\r\n        WeekCalendarComponent,\r\n        NumberInputComponent,\r\n        FormsModule,\r\n        NgbModule,\r\n        CommonModule,\r\n        MatMenuModule,\r\n        NgxSkeletonLoaderModule,\r\n        AnnaCoreModule,\r\n        ScrollingModule,\r\n        BarChartComponent,\r\n        CustomNgbDatepickerFormControlComponent,\r\n    ],\r\n    exports: [\r\n        CustomDatePickerComponent,\r\n        GenericLineChartComponent,\r\n        KeyValueComponent,\r\n        MissingPostedDataComponent,\r\n        RadioButtonsComponent,\r\n        SkeletonLoaderComponent,\r\n        OrderContainerFilterModalComponent,\r\n        ToggleComponent,\r\n        WeekCalendarComponent,\r\n        EquivalisationOfDataToggleBtnComponent,\r\n        DemoNormalizationComponent,\r\n        BreadcrumbsComponent,\r\n        BuyerContactComponent,\r\n        PriorityDropdownsComponent,\r\n        MessageBoxComponent,\r\n        OverOrUnderDeliveryComponent,\r\n        ConfirmationPopupComponent,\r\n        SingleSelectComponent,\r\n        MultiSelectComponent,\r\n        OverOrUnderDeliveryComponent,\r\n        DoughnutChartComponent,\r\n        StackChartComponent,\r\n        DashboardFilterModalComponent,\r\n        GenericPeriodSelectionComponent,\r\n        FilterViewContainerComponent,\r\n        EasyFiltersComponent,\r\n        GenericWizardFormComponent,\r\n        TimerComponent,\r\n        IncludeOutstandingPreemptionsToggleBtnComponent,\r\n        BarChartComponent,\r\n        CustomNgbDatepickerFormControlComponent,\r\n        NumberInputComponent,\r\n    ],\r\n    providers: [AnnaFilterSearchedTextPipe],\r\n})\r\nexport class AnnaDesignComponentsLibModule {}\r\n","import { CommonModule } from \"@angular/common\";\r\nimport { ChangeDetectorRef, Component, EventEmitter, Input, OnChanges, OnDestroy, Output, SimpleChanges } from \"@angular/core\";\r\nimport { interval, Subscription } from \"rxjs\";\r\n\r\n@Component({\r\n    selector: \"anna-design-business-rules-timer\",\r\n    imports: [CommonModule],\r\n    templateUrl: \"./business-rules-timer.component.html\",\r\n    styleUrls: [\"./business-rules-timer.component.scss\"]\r\n})\r\nexport class BusinessRulesTimerComponent implements OnDestroy,OnChanges {\r\n    @Input() minutes: number = 5;\r\n    @Input() seconds: number = 0;\r\n    @Input() fillColor: string = \"#F44336\";\r\n    @Input() strokeColor: string = \"black\";\r\n    @Input() backgroundColor: string = \"#D9D9D9\";\r\n    @Input() strokeWidth: number = 0.5;\r\n    @Input() svgWidth: number = 20;\r\n    @Input() svgHeight: number = 20;\r\n\r\n    @Output() timedOut = new EventEmitter<any>();\r\n\r\n    arcPath = \"\";\r\n    private timerSubscription: Subscription;\r\n    intervalId: NodeJS.Timeout;\r\n    totalTime = this.minutes * 60;\r\n    remainingTime = this.totalTime;\r\n\r\n    constructor(private cdRef: ChangeDetectorRef) {}\r\n    ngOnChanges(changes: SimpleChanges) {\r\n        if (changes.minutes) {\r\n            this.totalTime = this.minutes * 60;\r\n            this.remainingTime = this.totalTime;\r\n        }\r\n    }\r\n    ngOnDestroy() {\r\n        if (this.timerSubscription) {\r\n            this.timerSubscription.unsubscribe();\r\n        }\r\n    }\r\n    startTimer() {\r\n        this.resetAllVariables();\r\n        this.updateArcPath();\r\n        this.timerSubscription = interval(1000).subscribe(() => {\r\n            if (this.remainingTime > 0) {\r\n                this.remainingTime -= 1;\r\n                this.minutes = Math.floor(this.remainingTime / 60);\r\n                this.seconds = this.remainingTime % 60;\r\n                this.updateArcPath();\r\n            } else {\r\n                this.timedOut.emit();\r\n                this.timerSubscription?.unsubscribe();\r\n            }\r\n            this.cdRef.detectChanges();\r\n        });\r\n    }\r\n    updateArcPath() {\r\n        const progress = (this.totalTime - this.remainingTime) / this.totalTime;\r\n        this.arcPath = this.describeArc(18, 18, 15.9155, 0, progress * 360);\r\n    }\r\n    describeArc(x: number, y: number, radius: number, startAngle: number, endAngle: number) {\r\n        // creates an SVG arc path based on a starting and ending angle allowing the arc to fill like a pie chart as time progresses\r\n        const start = this.polarToCartesian(x, y, radius, endAngle);\r\n        const end = this.polarToCartesian(x, y, radius, startAngle);\r\n        const largeArcFlag = endAngle - startAngle <= 180 ? \"0\" : \"1\";\r\n        return [\r\n            \"M\",\r\n            x,\r\n            y,\r\n            \"L\",\r\n            start.x,\r\n            start.y,\r\n            \"A\",\r\n            radius,\r\n            radius,\r\n            0,\r\n            largeArcFlag,\r\n            0,\r\n            end.x,\r\n            end.y,\r\n            \"L\",\r\n            x,\r\n            y,\r\n        ].join(\" \");\r\n    }\r\n\r\n    polarToCartesian(centerX: number, centerY: number, radius: number, angleInDegrees: number) {\r\n        const angleInRadians = ((angleInDegrees - 90) * Math.PI) / 180.0;\r\n        return {\r\n            x: centerX + radius * Math.cos(angleInRadians),\r\n            y: centerY + radius * Math.sin(angleInRadians),\r\n        };\r\n    }\r\n    resetAllVariables() {\r\n        this.timerSubscription?.unsubscribe();\r\n        this.totalTime = 5 * 60;\r\n        this.remainingTime = this.totalTime;\r\n        this.minutes = 5;\r\n        this.seconds = 0;\r\n        this.arcPath = \"\";\r\n    }\r\n    resetTimer() {\r\n        this.startTimer();\r\n    }\r\n    closeTimer() {\r\n        this.timerSubscription?.unsubscribe();\r\n    }\r\n    stopTimer() {\r\n        this.timerSubscription?.unsubscribe();\r\n        this.totalTime = 0;\r\n        this.remainingTime = this.totalTime;\r\n        this.minutes = 0;\r\n        this.seconds = 0;\r\n        this.arcPath = \"\";\r\n    }\r\n}\r\n","<div class=\"timer-container\">\r\n    <svg\r\n        class=\"clock\"\r\n        [attr.width]=\"svgWidth\"\r\n        [attr.height]=\"svgHeight\"\r\n        viewBox=\"0 0 36 36\"\r\n    >\r\n        <circle\r\n            cx=\"18\"\r\n            cy=\"18\"\r\n            r=\"16.5\"\r\n            fill=\"none\"\r\n            [attr.stroke]=\"strokeColor\"\r\n            [attr.stroke-width]=\"strokeWidth\"\r\n        ></circle>\r\n        <circle\r\n            class=\"background-circle\"\r\n            cx=\"18\"\r\n            cy=\"18\"\r\n            r=\"15.9155\"\r\n            [attr.fill]=\"backgroundColor\"\r\n            [attr.stroke]=\"strokeColor\"\r\n            [attr.stroke-width]=\"strokeWidth\"\r\n        ></circle>\r\n        <path\r\n            class=\"progress-arc\"\r\n            [attr.d]=\"arcPath\"\r\n            [attr.fill]=\"fillColor\"\r\n            [attr.stroke]=\"strokeColor\"\r\n            [attr.stroke-width]=\"strokeWidth\"\r\n        ></path>\r\n    </svg>\r\n    <span class=\"time-text\">{{ minutes }}:{{ seconds | number: \"2.0\" }}</span>\r\n</div>\r\n","interface IMessageBox {\r\n    messageHeading: string;\r\n    message: string;\r\n    subHeading?: string;\r\n    subMessage?: string;\r\n    iconClass: string;\r\n    messageBoxClass: string;\r\n}\r\n\r\nexport class GenericCommentPopupModel {\r\n    commentData: string;\r\n    modalTitle: string;\r\n    modalHeader: string;\r\n    modalMessage: string;\r\n    modalAdditionalMessage: string;\r\n    modalMessageInMessageBox: IMessageBox;\r\n    showCloseIcon: boolean;\r\n    applyButtonLabel: string;\r\n    cancelButtonLabel: string;\r\n    specialCharactersAllowed: boolean;\r\n    regexPattern: RegExp;\r\n    isCommentDisabled: boolean;\r\n    allowCommentToBeEmpty: boolean;\r\n    checkCommentChangesToEnableApply: boolean = true;\r\n    constructor(data?: Partial<GenericCommentPopupModel>) {\r\n        this.commentData = data?.commentData || \"\";\r\n        this.modalTitle = data?.modalTitle || \"Add Comment\";\r\n        this.modalMessage = data?.modalMessage || null;\r\n        this.modalMessageInMessageBox = data?.modalMessageInMessageBox || null;\r\n        this.showCloseIcon = data?.showCloseIcon || false;\r\n        this.applyButtonLabel = data?.applyButtonLabel || \"Apply\";\r\n        this.cancelButtonLabel = data?.cancelButtonLabel || \"Cancel\";\r\n        this.isCommentDisabled = data?.isCommentDisabled || false;\r\n        this.specialCharactersAllowed = data?.specialCharactersAllowed || false;\r\n        this.regexPattern = data?.regexPattern || /[`!@#$%^&*()_+\\-=[\\]{};':\"\\\\|,.<>/?~]/;\r\n        this.allowCommentToBeEmpty = data?.allowCommentToBeEmpty || false;\r\n        this.checkCommentChangesToEnableApply = data?.checkCommentChangesToEnableApply !== undefined ? \r\n                                data.checkCommentChangesToEnableApply : true;\r\n    }\r\n}\r\n","import { CommonModule } from \"@angular/common\";\r\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, TemplateRef, ViewChild } from \"@angular/core\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { NgbModal, NgbModalOptions, NgbModalRef } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { cloneDeep } from \"lodash-es\";\r\n\r\nimport { MessageBoxComponent } from \"../message-box/message-box.component\";\r\nimport { GenericCommentPopupModel } from \"./models/generic-comment-popup.model\";\r\n\r\n@Component({\r\n    selector: \"anna-design-generic-comment-popup\",\r\n    standalone: true,\r\n    imports: [CommonModule, FormsModule, MessageBoxComponent],\r\n    templateUrl: \"./generic-comment-popup.component.html\",\r\n    styleUrl: \"./generic-comment-popup.component.scss\",\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class GenericCommentPopupComponent {\r\n    @Input({ required: true }) commentPopupConfig: GenericCommentPopupModel = null;\r\n\r\n    @Output() commentPopupClosed = new EventEmitter<void>();\r\n    @Output() commentPopupSaved = new EventEmitter<string>();\r\n\r\n    @ViewChild(\"genericCommentPopup\") private genericCommentPopupModal: TemplateRef<any>;\r\n    genericCommentPopupRef: NgbModalRef;\r\n    modalOptions: NgbModalOptions = {\r\n        windowClass: \"generic-comment-popup-modal\",\r\n    };\r\n\r\n    isApplyButtonDisabled: boolean = true;\r\n    private commentDataCloned: string = null;\r\n\r\n    hasSpecialCharacterErrors: boolean = false;\r\n\r\n    constructor(private modalService: NgbModal) {}\r\n\r\n    onCommentTextChange(comment: unknown) {\r\n        this.updateCommentData(comment as string);\r\n        this.validateComment(comment as string);\r\n        this.updateApplyButtonState(comment as string);\r\n    }\r\n\r\n    private updateCommentData(comment: string): void {\r\n        this.commentPopupConfig.commentData = comment;\r\n    }\r\n\r\n    private validateComment(comment: string): void {\r\n        if (this.commentPopupConfig.specialCharactersAllowed) {\r\n            this.hasSpecialCharacterErrors = this.commentPopupConfig.regexPattern.test(comment);\r\n        } else {\r\n            this.hasSpecialCharacterErrors = false;\r\n        }\r\n    }\r\n\r\n    private updateApplyButtonState(comment?: string): void {\r\n        const isCommentNull = this.commentPopupConfig.allowCommentToBeEmpty ? false : !comment?.trim();\r\n        const commentNoChanged = this.commentPopupConfig.commentData === this.commentDataCloned;\r\n        this.isApplyButtonDisabled = this.hasSpecialCharacterErrors || \r\n            (this.commentPopupConfig.checkCommentChangesToEnableApply && (isCommentNull || commentNoChanged));\r\n    }\r\n\r\n    openCommentPopup() {\r\n        this.commentDataCloned = cloneDeep(this.commentPopupConfig?.commentData);\r\n        this.genericCommentPopupRef = this.modalService.open(this.genericCommentPopupModal, this.modalOptions);\r\n        this.updateApplyButtonState();\r\n    }\r\n\r\n    onCloseCommentPopup() {\r\n        this.resetCommentData();\r\n        this.genericCommentPopupRef.close();\r\n    }\r\n\r\n    private resetCommentData(): void {\r\n        this.isApplyButtonDisabled = true;\r\n        this.commentPopupConfig.commentData = cloneDeep(this.commentDataCloned);\r\n    }\r\n\r\n    onApplyCommentChanges() {\r\n        this.commentPopupSaved.emit(this.commentPopupConfig.commentData);\r\n        this.isApplyButtonDisabled = true;\r\n        this.genericCommentPopupRef.close();\r\n    }\r\n}\r\n","<ng-template #genericCommentPopup>\r\n    <div class=\"modal-header\">\r\n        <h3 class=\"modal-title\">{{ commentPopupConfig?.modalTitle }}</h3>\r\n        <i\r\n            class=\"mdi mdi-close close-icon\"\r\n            *ngIf=\"commentPopupConfig?.showCloseIcon\"\r\n            (click)=\"onCloseCommentPopup()\"\r\n        ></i>\r\n    </div>\r\n    <div class=\"modal-body\">\r\n        <div\r\n            class=\"modal-body-header\"\r\n            *ngIf=\"commentPopupConfig?.modalMessage\"\r\n            [innerHTML]=\"commentPopupConfig?.modalMessage\"\r\n        ></div>\r\n\r\n        <anna-design-message-box\r\n            class=\"comment-popup-msg-box\"\r\n            *ngIf=\"commentPopupConfig?.modalMessageInMessageBox\"\r\n            [messageBoxData]=\"commentPopupConfig?.modalMessageInMessageBox\"\r\n        ></anna-design-message-box>\r\n\r\n        <div class=\"modal-body-value\">\r\n            <textarea\r\n                [ngModel]=\"commentPopupConfig.commentData\"\r\n                [disabled]=\"commentPopupConfig?.isCommentDisabled\"\r\n                (ngModelChange)=\"onCommentTextChange($event)\"\r\n            ></textarea>\r\n        </div>\r\n\r\n        <p\r\n            class=\"text-danger\"\r\n            *ngIf=\"hasSpecialCharacterErrors\"\r\n        >\r\n            Special Character not allowed\r\n        </p>\r\n\r\n        <div\r\n            class=\"buttons-popup-container\"\r\n            *ngIf=\"!commentPopupConfig?.isCommentDisabled\"\r\n        >\r\n            <button\r\n                class=\"anna cancel-button cancel\"\r\n                (click)=\"onCloseCommentPopup()\"\r\n            >\r\n                {{ commentPopupConfig?.cancelButtonLabel }}\r\n            </button>\r\n            <button\r\n                [disabled]=\"isApplyButtonDisabled\"\r\n                class=\"anna apply-button save\"\r\n                (click)=\"onApplyCommentChanges()\"\r\n            >\r\n                {{ commentPopupConfig?.applyButtonLabel }}\r\n            </button>\r\n        </div>\r\n    </div>\r\n</ng-template>\r\n","export class GlobalConstant {\r\n    static readonly impressionUnit = \"IMP('000)\";\r\n    static readonly impressionName = \"Impression\";\r\n    static readonly grpUnit = \"GRP\";\r\n    static readonly spotsUnit = \"Spots\";\r\n    static readonly adus = \"ADUs \";\r\n}\r\n\r\nexport class OrdersConstant {\r\n    // buyer-contact-details\r\n    static readonly buyerApprovalAndContact = \"Buyer Approval & Contact\";\r\n    static readonly buyerBizApprovalNeeded = \"Buyer business rules approval needed\";\r\n    static readonly noContactsAdded = \"No Contact added\";\r\n    static readonly buyerApprovalRequired = \"Buyer approval required\";\r\n    static readonly emailOnlyOrderSchedule = \"Email only order schedule\";\r\n    static readonly buyer = \"Buyer\";\r\n    static readonly buyerContact = `${OrdersConstant.buyer} contact`;\r\n    static readonly addBuyer = `Add \"${OrdersConstant.buyer.toLowerCase()}`;\r\n    static readonly addBuyerContact = `Add ${OrdersConstant.buyer} Contact`;\r\n    static readonly editBuyer = \"Edit \";\r\n    static readonly yes = \"Yes\";\r\n    static readonly no = \"No\";\r\n\r\n    // add-buyer-contact constants\r\n    static readonly primary = \"Primary\";\r\n    static readonly secondary = \"Secondary\";\r\n    static readonly primaryBuyerDetails = `${OrdersConstant.primary} ${OrdersConstant.buyer.toLowerCase()} details`;\r\n\r\n    static readonly namePlaceholder = \"Enter buyer’s name\";\r\n    static readonly emailPlaceholder = \"Enter buyer’s email ID\";\r\n    static readonly phoneNoPlaceholder = \"Enter buyer’s phone number\";\r\n\r\n    static readonly invalidName = \"*Invalid Name\";\r\n    static readonly Name = \"Name*\";\r\n    static readonly pleaseEnterFullName = \"*Please enter full name\";\r\n    static readonly specialCharNotAllowed = \"Special Charater not allowed\";\r\n\r\n    static readonly invalidEmail = \"*Invalid Email\";\r\n    static readonly email = \"Email*\";\r\n    static readonly pleaseEnterEmailId = \"Please enter email ID\";\r\n    static readonly pleaseEnterValidEmailId = \"Please enter a valid email ID\";\r\n\r\n    static readonly invalidPhone = \"Invalid Phone\";\r\n    static readonly phone = \"Phone\";\r\n    static readonly pleaseEnterValidPhoneNo = \"Please enter a valid Phone No\";\r\n\r\n    // eslint-disable-next-line max-len\r\n    static readonly secondaryBuyerContactDetails = `${OrdersConstant.secondary} ${OrdersConstant.buyer.toLowerCase()} Details`;\r\n    // eslint-disable-next-line max-len\r\n    static readonly addSecondaryBuyerContactDetails = `Add ${OrdersConstant.secondaryBuyerContactDetails.toLowerCase()}`;\r\n    // eslint-disable-next-line max-len\r\n    static readonly removeSecondaryBuyerContactDetails = `Remove ${OrdersConstant.secondaryBuyerContactDetails.toLowerCase()}`;\r\n    static readonly save = \"Save \";\r\n\r\n    static readonly newBuyerSuccess = \"New Buyer Contact details added successfully.\";\r\n    static readonly updateBuyerSuccess = \"Buyer Contact details updated successfully.\";\r\n    static readonly BuyerErrorMessage = \"Some Error occured. Couldn't add Buyer details\";\r\n    static readonly secondaryBuyerDeleteErrorMessage = \"Some Error occured while deleting secondary Buyer details\";\r\n\r\n    static readonly businessRulesTabName = \"Business Rules\";\r\n    static readonly UndefinedEndDate = \"indefinitely\";\r\n    static readonly ProxyOrderToasteTextPartOne = \"This order belongs to \";\r\n    static readonly ProxyOrderToasteTextPartTwo = \". You can manage this order since you are the proxy user from\";\r\n    static readonly writeEnabledOrderToastrMessage =\r\n        // eslint-disable-next-line max-len\r\n        \"This is a Automated order. Action taken on spots for this order will be fed into the traffic system.\";\r\n    static readonly notWriteEnabledOrderToastrMessage =\r\n        \"This is a Read-Only order. No approval action can be taken for these orders.\";\r\n\r\n    static readonly PerformancePeriodModalTitle = \"Edit Period\";\r\n    static readonly PerformancePeriodModalMessage =\r\n        \"Select period for which you want to view the audience performance for.\";\r\n    static readonly SpotDetailsPeriodModalTitle = \"Edit Period\";\r\n    static readonly SpotDetailsPeriodModalMessage = \"Select period for which you want to view the spot details for.\";\r\n    static readonly Quarter = \"Quarter\";\r\n    static readonly Month = \"Month\";\r\n    static readonly CustomRange = \"Custom Range\";\r\n    static readonly Broadcast = \"broadcast\";\r\n    static readonly Fiscal = \"fiscal\";\r\n\r\n    static readonly InFlightAndUpcoming = \"In-flight & Upcoming\";\r\n    static readonly Completed = \"Completed\";\r\n    static readonly Blank = \"Blank\";\r\n    static readonly TodaysAnnaOffers = \"Today’s ANNA Offers\";\r\n    static readonly TodaysUserOffers = \"Today’s User Offers\";\r\n    static readonly RATING = \"RATINGS\";\r\n    static readonly IMPRESSIONS = \"IMPRESSIONS\";\r\n    static readonly GRP = \"GRP\";\r\n\r\n    static readonly TvRevenueAndDigital = \"TV & Digital\";\r\n    static readonly DRR = \"Daily Revisions\";\r\n\r\n    static readonly TvRevenue = \"TV Revenue\";\r\n    static readonly OtherRevenue = \"Other Revenue\";\r\n\r\n    static readonly OngoingTemporaryRevisionMessage =\r\n        \"This is an ongoing temporary revision. Any new revision will henceforth be for the live order.\";\r\n\r\n    static readonly DefaultDemo = \"A25-54\";\r\n}\r\n","import { KeyValue } from \"../../key-value/models/key-value.model\";\r\n\r\nexport class LineChartData {\r\n    measurementName?: string;\r\n    data: number[];\r\n    tooltipDisplayValue: string[];\r\n    tooltipImpsOrGrpDisplay?: string[];\r\n    color: string;\r\n\r\n    constructor(\r\n        measurementName: string,\r\n        value: number[],\r\n        displayValue: string[],\r\n        displayImpsOrGrp: string[],\r\n        color: string,\r\n    ) {\r\n        this.measurementName = measurementName;\r\n        this.data = value;\r\n        this.tooltipDisplayValue = displayValue;\r\n        this.tooltipImpsOrGrpDisplay = displayImpsOrGrp;\r\n        this.color = color;\r\n    }\r\n}\r\n\r\nexport class LegendData {\r\n    legendName: string;\r\n    legendDotColor: string;\r\n    legendMetaData: KeyValue[];\r\n    constructor(name: string, color: string, data: KeyValue[]) {\r\n        this.legendName = name;\r\n        this.legendDotColor = color;\r\n        this.legendMetaData = data;\r\n    }\r\n}\r\n\r\nexport class Dataset {\r\n    data: number[];\r\n    tooltipDisplayValue: string[];\r\n    borderWidth: any;\r\n    borderColor: string;\r\n    order: number;\r\n    hoverBorderColor: string;\r\n    backgroundColor?: string;\r\n    hoverBackgroundColor?: string;\r\n    label?: string;\r\n    fill?: boolean = false;\r\n    hoverBorderCapStyle?: string;\r\n    pointHoverBackgroundColor?: string;\r\n    pointHoverBorderColor?: string;\r\n    borderRadius?: number;\r\n    borderDash?: number[];\r\n    measurementName?: string;\r\n\r\n    constructor(value: number[], displayValue: string[], borderColor: string, order: number, borderWidth: number = 2) {\r\n        this.data = value;\r\n        this.tooltipDisplayValue = displayValue;\r\n        this.borderColor = borderColor;\r\n        this.borderWidth = borderWidth;\r\n        this.order = order;\r\n        this.pointHoverBackgroundColor = borderColor;\r\n        this.pointHoverBorderColor = borderColor;\r\n    }\r\n}\r\n","export class KeyValue {\r\n    key: string;\r\n    value?: string;\r\n    keyClass: string;\r\n    valueClass: string;\r\n    parentClass?: string;\r\n    constructor(key: string, value: string, keyClass = \"\", valueClass = \"\", parentClass = \"\") {\r\n        this.key = key;\r\n        this.value = value;\r\n        this.keyClass = keyClass;\r\n        this.valueClass = valueClass;\r\n        this.parentClass = parentClass;\r\n    }\r\n}\r\n","export class PopulateListDropdown {\r\n    id: number;\r\n    inventory: string;\r\n    inventoryText?: string;\r\n    isSelected: boolean;\r\n    constructor(obj: any) {\r\n        this.id = obj.id;\r\n        this.inventory = obj.inventory;\r\n        this.inventoryText = obj.inventoryText;\r\n        this.isSelected = obj.isSelected;\r\n    }\r\n}\r\n\r\nexport class PopulateListDropdownWithDisable extends PopulateListDropdown {\r\n    isDisabled: boolean = false;\r\n    // eslint-disable-next-line @typescript-eslint/no-useless-constructor\r\n    constructor(obj: any) {\r\n        super(obj);\r\n    }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\n@Injectable({\r\n    providedIn: \"root\",\r\n})\r\nexport class GenericWizardFormService {}\r\n","import { NgClass, NgIf, NgTemplateOutlet } from \"@angular/common\";\r\nimport { ChangeDetectionStrategy, Component, Input, TemplateRef, ViewChild } from \"@angular/core\";\r\nimport { NgbModal, NgbModalOptions, NgbModalRef } from \"@ng-bootstrap/ng-bootstrap\";\r\n\r\n@Component({\r\n    selector: \"anna-design-info-popup\",\r\n    standalone: true,\r\n    imports: [NgIf, NgClass, NgTemplateOutlet],\r\n    templateUrl: \"./info-popup.component.html\",\r\n    styleUrl: \"./info-popup.component.scss\",\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class InfoPopupComponent {\r\n    @Input() popupHeading: string;\r\n\r\n    @ViewChild(\"infoPopupTemplate\") private infoPopupTemplate: TemplateRef<any>;\r\n    infoPopupReference: NgbModalRef;\r\n    constructor(private modalService: NgbModal) {}\r\n    openPopup() {\r\n        const ngbModalOptions: NgbModalOptions = {\r\n            size: \"md\",\r\n            windowClass: \"info-popup\",\r\n        };\r\n\r\n        this.infoPopupReference = this.modalService.open(this.infoPopupTemplate, ngbModalOptions);\r\n    }\r\n    closePopup() {\r\n        this.modalService.dismissAll();\r\n    }\r\n}\r\n","<ng-template #infoPopupTemplate>\r\n    <section>\r\n        <div class=\"modal-header\">\r\n            <h3 class=\"modal-title\">{{ popupHeading }}</h3>\r\n            <i\r\n                class=\"mi mdi-close-icon mdi-font-md close\"\r\n                (click)=\"closePopup()\"\r\n            ></i>\r\n        </div>\r\n        <div class=\"modal-body\">\r\n            <div class=\"info-container\">\r\n                <ng-content></ng-content>\r\n            </div>\r\n        </div>\r\n    </section>\r\n</ng-template>\r\n","/*\r\n * Public API Surface of anna-design-components-lib\r\n */\r\nexport * from \"./lib/anna-design-components-lib.module\";\r\n\r\n// COMPONENTS\r\nexport * from \"./lib/bar-chart/bar-chart.component\";\r\nexport * from \"./lib/breadcrumbs/breadcrumbs.component\";\r\nexport * from \"./lib/business-rules-timer/business-rules-timer.component\";\r\nexport * from \"./lib/buyer-contact/buyer-contact.component\";\r\nexport * from \"./lib/confirmation-popup/confirmation-popup.component\";\r\nexport * from \"./lib/custom-date-picker/custom-date-picker.component\";\r\nexport * from \"./lib/custom-ngb-datepicker-form-control/custom-ngb-datepicker-form-control.component\";\r\nexport * from \"./lib/dashboard-filter-modal/dashboard-filter-modal.component\";\r\nexport * from \"./lib/demo-normalization/demo-normalization.component\";\r\nexport * from \"./lib/doughnut-chart/doughnut-chart.component\";\r\nexport * from \"./lib/easy-filters/easy-filters.component\";\r\nexport * from \"./lib/equivalisation-of-data-toggle-btn/equivalisation-of-data-toggle-btn.component\";\r\nexport * from \"./lib/filter-view-container/filter-view-container.component\";\r\nexport * from \"./lib/generic-comment-popup/generic-comment-popup.component\";\r\nexport * from \"./lib/generic-line-chart/generic-line-chart.component\";\r\nexport * from \"./lib/generic-period-selection/generic-period-selection.component\";\r\nexport * from \"./lib/generic-wizard-form/generic-wizard-form.component\";\r\nexport * from \"./lib/include-outstanding-preemptions-toggle-btn/include-outstanding-preemptions-toggle-btn.component\";\r\nexport * from \"./lib/key-value/key-value.component\";\r\nexport * from \"./lib/message-box/message-box.component\";\r\nexport * from \"./lib/missing-posted-data/missing-posted-data.component\";\r\nexport * from \"./lib/multi-select/multi-select.component\";\r\nexport * from \"./lib/number-input/number-input.component\";\r\nexport * from \"./lib/order-container-filter-modal/order-container-filter-modal.component\";\r\nexport * from \"./lib/over-or-under-delivery/over-or-under-delivery.component\";\r\nexport * from \"./lib/priority-dropdowns/priority-dropdowns.component\";\r\nexport * from \"./lib/radio-buttons/radio-buttons.component\";\r\nexport * from \"./lib/sidebar/sidebar-footer/sidebar-footer.component\";\r\nexport * from \"./lib/sidebar/sidebar-menu/sidebar-menu.component\";\r\nexport * from \"./lib/single-select/single-select.component\";\r\nexport * from \"./lib/skeleton-loader/skeleton-loader.component\";\r\nexport * from \"./lib/stack-chart/stack-chart.component\";\r\nexport * from \"./lib/timer/timer.component\";\r\nexport * from \"./lib/toggle/toggle.component\";\r\nexport * from \"./lib/week-calendar/week-calendar.component\";\r\n\r\n// CONSTANTS\r\nexport * from \"./lib/custom-date-picker/constants/date-picker.constant\";\r\nexport * from \"./lib/generic-wizard-form/models/generic-wizard-form.constant\";\r\nexport * from \"./lib/globals/global.constant\";\r\nexport * from \"./lib/missing-posted-data/constants/missing-posted-data.constant\";\r\nexport * from \"./lib/order-container-filter-modal/constants/order-container-filter-modal.constant\";\r\n\r\n// MODELS\r\nexport * from \"./lib/breadcrumbs/models/breadcrumb.model\";\r\nexport * from \"./lib/custom-date-picker/models/datePicker.model\";\r\nexport * from \"./lib/dashboard-filter-modal/models/dashboard-filter-modal.model\";\r\nexport * from \"./lib/dashboard-filter-modal/models/dashboard-filter-modal-service.token\";\r\nexport * from \"./lib/dashboard-filter-modal/models/dashboard-order.model\";\r\nexport * from \"./lib/demo-normalization/models/demo-normalization.model\";\r\nexport * from \"./lib/easy-filters/models/easy-filters.model\";\r\nexport * from \"./lib/filter-view-container/models/view-filter.model\";\r\nexport * from \"./lib/generic-comment-popup/models/generic-comment-popup.model\";\r\nexport * from \"./lib/generic-line-chart/models/genericLineChartModel\";\r\nexport * from \"./lib/generic-wizard-form/models/generic-wizard-form.model\";\r\nexport * from \"./lib/globals/global.model\";\r\nexport * from \"./lib/key-value/models/key-value.model\";\r\nexport * from \"./lib/message-box/models/message-box.model\";\r\nexport * from \"./lib/missing-posted-data/models/missing-posted-data.model\";\r\nexport * from \"./lib/order-container-filter-modal/models/order-container-filter-modal.model\";\r\nexport * from \"./lib/priority-dropdowns/models/priority-dropdowns.model\";\r\nexport * from \"./lib/radio-buttons/models/radioButton\";\r\nexport * from \"./lib/sidebar/sidebar-menu/models/sidebar-menu.model\";\r\nexport * from \"./lib/single-select/models/single-select.model\";\r\n// SERVICES\r\nexport * from \"./lib/breadcrumbs/services/breadcrumbs.service\";\r\nexport * from \"./lib/confirmation-popup/services/confirmation-popup.service\";\r\nexport * from \"./lib/custom-date-picker/services/datepickerService\";\r\nexport * from \"./lib/equivalisation-of-data-toggle-btn/service/equivalisation-of-data.service\";\r\nexport * from \"./lib/generic-wizard-form/services/generic-wizard-form.service\";\r\nexport * from \"./lib/info-popup/info-popup.component\";\r\nexport * from \"./lib/multi-select/services/multi-select.service\";\r\nexport * from \"./lib/order-container-filter-modal/services/calendar-quarter-year-filter.service\";\r\nexport * from \"./lib/sidebar/sidebar-menu/services/sidebar-menu.service\";\r\nexport * from \"./lib/week-calendar/services/week-calendar.service\";\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i1.ConfirmationPopupService","i2.DatepickerService","i3","i1.CustomDateParserFormatter","i2","i2.EquivalisationOfDataService","i3.WeekCalendarService","i4","i4.CalendarQuarterYearFilterService","i5.DatepickerService","i2.MultiSelectDropdownService","i6","i3.BreadcrumbsService","i4.SidebarMenuService"],"mappings":"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"}