{"version":3,"file":"annalib-anna-feature-lib.mjs","sources":["../../../projects/anna-feature-lib/src/lib/acl-directives/anna-feature-read-only.directive.ts","../../../projects/anna-feature-lib/src/lib/liability-modal/liability-modal.component.ts","../../../projects/anna-feature-lib/src/lib/liability-modal/liability-modal.component.html","../../../projects/anna-feature-lib/src/lib/order-listing/models/order-listing.constant.ts","../../../projects/anna-feature-lib/src/lib/order-listing/models/order-listing.model.ts","../../../projects/anna-feature-lib/src/lib/primary-order-panel/models/primary-order-panel.model.ts","../../../projects/anna-feature-lib/src/lib/audience-performance/constants/audiencePerformance.constant.ts","../../../projects/anna-feature-lib/src/lib/audience-performance/models/audiencePerformance.model.ts","../../../projects/anna-feature-lib/src/lib/audience-performance/audience-performance.component.ts","../../../projects/anna-feature-lib/src/lib/audience-performance/audience-performance.component.html","../../../projects/anna-feature-lib/src/lib/billing-report-table/services/billing-report-table.service.ts","../../../projects/anna-feature-lib/src/lib/billing-report-table/models/billing-report-table.model.ts","../../../projects/anna-feature-lib/src/lib/billing-details-table/billing-details-table.component.ts","../../../projects/anna-feature-lib/src/lib/billing-details-table/billing-details-table.component.html","../../../projects/anna-feature-lib/src/lib/billing-report-table/billing-report-table.component.ts","../../../projects/anna-feature-lib/src/lib/billing-report-table/billing-report-table.component.html","../../../projects/anna-feature-lib/src/lib/global-order-search-header/global-order-search-header.component.ts","../../../projects/anna-feature-lib/src/lib/global-order-search-header/global-order-search-header.component.html","../../../projects/anna-feature-lib/src/lib/hiatus-window-popup/model/hiatus-window-popup.model.ts","../../../projects/anna-feature-lib/src/lib/hiatus-window-popup/service/hiatus-window-popup.service.ts.service.ts","../../../projects/anna-feature-lib/src/lib/hiatus-window-popup/hiatus-window-popup.component.ts","../../../projects/anna-feature-lib/src/lib/hiatus-window-popup/hiatus-window-popup.component.html","../../../projects/anna-feature-lib/src/lib/line-details/config/line-details-service.token.ts","../../../projects/anna-feature-lib/src/lib/line-details/models/line-details.model.ts","../../../projects/anna-feature-lib/src/lib/line-details/services/line-details.service.ts","../../../projects/anna-feature-lib/src/lib/line-details/services/line-details-filter.service.ts","../../../projects/anna-feature-lib/src/lib/line-details/line-details.component.ts","../../../projects/anna-feature-lib/src/lib/line-details/line-details.component.html","../../../projects/anna-feature-lib/src/lib/notifications/mass-copy-status-popup/models/mass-copy-status.model.ts","../../../projects/anna-feature-lib/src/lib/notifications/mass-copy-status-popup/services/mass-copy-status-backend.service.ts","../../../projects/anna-feature-lib/src/lib/notifications/mass-copy-status-popup/mass-copy-status-popup.component.ts","../../../projects/anna-feature-lib/src/lib/notifications/mass-copy-status-popup/mass-copy-status-popup.component.html","../../../projects/anna-feature-lib/src/lib/notifications/services/notifications.service.ts","../../../projects/anna-feature-lib/src/lib/notifications/utils/notification-navigation.util.ts","../../../projects/anna-feature-lib/src/lib/notifications/app-notification-header/app-notification-header.component.ts","../../../projects/anna-feature-lib/src/lib/notifications/app-notification-header/app-notification-header.component.html","../../../projects/anna-feature-lib/src/lib/notifications/Constants.ts","../../../projects/anna-feature-lib/src/lib/notifications/notification-page/notification-page.component.ts","../../../projects/anna-feature-lib/src/lib/notifications/notification-page/notification-page.component.html","../../../projects/anna-feature-lib/src/lib/spot-details/config/spot-details-backend-service.token.ts","../../../projects/anna-feature-lib/src/lib/spot-details/constants/spot-details.constants.ts","../../../projects/anna-feature-lib/src/lib/spot-details/models/generic-spot-details.model.ts","../../../projects/anna-feature-lib/src/lib/spot-details/services/generic-spot-details.service.ts","../../../projects/anna-feature-lib/src/lib/spot-details/services/spot-details.service.ts","../../../projects/anna-feature-lib/src/lib/schedule-posting-report-popup/Model/schedulePostingReportPopup.model.ts","../../../projects/anna-feature-lib/src/lib/schedule-posting-report-popup/schedule-posting-report-popup.component.ts","../../../projects/anna-feature-lib/src/lib/schedule-posting-report-popup/schedule-posting-report-popup.component.html","../../../projects/anna-feature-lib/src/lib/order-history/constants/order-hitory.contsant.ts","../../../projects/anna-feature-lib/src/lib/order-history/models/orderHistory.model.ts","../../../projects/anna-feature-lib/src/lib/order-history/order-history-backend-service.token.ts","../../../projects/anna-feature-lib/src/lib/order-history/services/order-history.service.ts","../../../projects/anna-feature-lib/src/lib/order-history/order-history.component.ts","../../../projects/anna-feature-lib/src/lib/order-history/order-history.component.html","../../../projects/anna-feature-lib/src/lib/login/login-token.service.ts","../../../projects/anna-feature-lib/src/lib/order-listing/models/order-listing-backend-token.service.ts","../../../projects/anna-feature-lib/src/lib/order-listing/services/dashboard-and-order-listing.service.ts","../../../projects/anna-feature-lib/src/lib/order-listing/services/order-listing-helper.service.ts","../../../projects/anna-feature-lib/src/lib/order-listing/order-listing.component.ts","../../../projects/anna-feature-lib/src/lib/order-listing/order-listing.component.html","../../../projects/anna-feature-lib/src/lib/order-revisions/constants/order-revisions.constants.ts","../../../projects/anna-feature-lib/src/lib/order-revisions/services/orderRevisions.service.ts","../../../projects/anna-feature-lib/src/lib/order-revisions/order-revisions.component.ts","../../../projects/anna-feature-lib/src/lib/order-revisions/order-revisions.component.html","../../../projects/anna-feature-lib/src/lib/hiatus-window-popup/service/hiatus-window-popup-token.service.ts","../../../projects/anna-feature-lib/src/lib/primary-order-panel/primary-order-panel.component.ts","../../../projects/anna-feature-lib/src/lib/primary-order-panel/primary-order-panel.component.html","../../../projects/anna-feature-lib/src/lib/spot-details/models/spot-details.model.ts","../../../projects/anna-feature-lib/src/lib/spot-details/spot-details.component.ts","../../../projects/anna-feature-lib/src/lib/spot-details/spot-details.component.html","../../../projects/anna-feature-lib/src/lib/anna-feature-lib.module.ts","../../../projects/anna-feature-lib/src/lib/notifications/models/notifications.model.ts","../../../projects/anna-feature-lib/src/lib/order-revisions/models/orderRevisionsModel.ts","../../../projects/anna-feature-lib/src/lib/global-order-search-header/models/global-order-search-header.model.ts","../../../projects/anna-feature-lib/src/public-api.ts","../../../projects/anna-feature-lib/src/annalib-anna-feature-lib.ts"],"sourcesContent":["import { AfterViewChecked, Directive, ElementRef, Inject } from \"@angular/core\";\nimport { AnnaLibAclService } from \"@annalib/anna-cognito-lib\";\n\n@Directive({\n    selector: \"[annaFeatureReadOnly]\",\n    standalone: true,\n})\nexport class AnnaFeatureReadOnlyDirective implements AfterViewChecked {\n    public elem: HTMLElement;\n    permissionStatus: boolean;\n\n    constructor(\n        @Inject(ElementRef) private el: ElementRef,\n        @Inject(AnnaLibAclService) public aclService: AnnaLibAclService,\n    ) {}\n\n    ngAfterViewChecked() {\n        this.elem = this.el.nativeElement;\n        this.permissionStatus = this.aclService.isUserAuthorisedToAccessElement(this.elem.id);\n        if (this.permissionStatus) {\n            this.elem.removeAttribute(\"disabled\");\n        } else {\n            this.elem.setAttribute(\"disabled\", \"true\");\n        }\n    }\n}\n","import { NgClass, NgIf } from \"@angular/common\";\nimport {\n    ChangeDetectionStrategy,\n    Component,\n    EventEmitter,\n    Input,\n    OnChanges,\n    Output,\n    SimpleChanges,\n} from \"@angular/core\";\nimport { FormBuilder, FormGroup, FormsModule, ReactiveFormsModule, Validators } from \"@angular/forms\";\nimport { AnnaCoreModule, IRadioButtonComponentConfig } from \"@annalib/anna-core\";\nimport { AnnaDesignComponentsLibModule } from \"@annalib/anna-design-components-lib\";\n\n@Component({\n    selector: \"anna-feature-liability-modal\",\n    templateUrl: \"./liability-modal.component.html\",\n    styleUrls: [\"./liability-modal.component.scss\"],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [NgIf, AnnaDesignComponentsLibModule, FormsModule, ReactiveFormsModule, AnnaCoreModule, NgClass],\n})\nexport class LiabilityModalComponent implements OnChanges {\n    @Input() orderType: string;\n    @Input() orderMetric: string;\n    @Input() liabilityValue: any = null;\n    @Output() save = new EventEmitter();\n    // eslint-disable-next-line @angular-eslint/no-output-native\n    @Output() cancel = new EventEmitter();\n\n    isOrderMetricSet: boolean = false;\n    isImpressions: boolean = false;\n    liabilityForm: FormGroup;\n    radioConfig: IRadioButtonComponentConfig;\n    selectedMetric: any = \"Ratings\";\n    liabilityPattern = \"^[0-9]*(.[0-9]{1,2})?$\";\n    disableButton: boolean = true;\n\n    constructor(private formBuilder: FormBuilder) {\n        this.radioConfig = this.getRadioConfig();\n    }\n\n    ngOnChanges(changes: SimpleChanges) {\n        if (changes.orderMetric) {\n            if (this.orderMetric === \"Ratings\") {\n                this.isImpressions = false;\n                this.isOrderMetricSet = true;\n            } else if (this.orderMetric === \"Impressions\") {\n                this.isImpressions = true;\n                this.isOrderMetricSet = true;\n                this.liabilityPattern = \"^[0-9]*(.[0-9]{1})?$\";\n            } else {\n                this.isOrderMetricSet = false;\n                this.isImpressions = false;\n                this.selectedMetric = \"Ratings\";\n                this.liabilityPattern = \"^[0-9]*(.[0-9]{1,2})?$\";\n            }\n        }\n        if (changes.liabilityValue || changes.orderMetric) {\n            this.initializeForm();\n            this.liabilityForm.get(\"liabilityInput\").patchValue(this.liabilityValue);\n        }\n    }\n\n    initializeForm(): void {\n        this.liabilityForm = this.formBuilder.group({\n            liabilityInput: [\"\", [Validators.required, Validators.pattern(this.liabilityPattern)]],\n        });\n    }\n    metricSelectionChange(event: any) {\n        if (event === \"Impressions\") {\n            this.isImpressions = true;\n            this.liabilityPattern = \"^[0-9]*(.[0-9]{1})?$\";\n        } else {\n            this.isImpressions = false;\n            this.liabilityPattern = \"^[0-9]*(.[0-9]{1,2})?$\";\n        }\n        this.disableButton = true;\n        this.selectedMetric = event;\n        this.liabilityForm.get(\"liabilityInput\")?.reset(\"\");\n    }\n\n    closePopup() {\n        this.cancel.emit();\n    }\n\n    onInputChange(event: Event): void {\n        if (+this.liabilityForm.get(\"liabilityInput\").value === 0) {\n            this.disableButton = true;\n        } else {\n            this.disableButton = this.liabilityForm.get(\"liabilityInput\").errors !== null;\n        }\n        if (this.liabilityValue != null && this.liabilityForm.get(\"liabilityInput\").value === this.liabilityValue) {\n            this.disableButton = true;\n        }\n    }\n\n    saveLiability() {\n        const metric = this.isOrderMetricSet ? this.orderMetric.toUpperCase() : this.selectedMetric.toUpperCase();\n        const data = {\n            UserSelectedMetric: metric,\n            Liability: this.liabilityForm.get(\"liabilityInput\").value,\n        };\n        this.save.emit(data);\n        this.closePopup();\n    }\n\n    getRadioConfig() {\n        return {\n            heading: \"Metric\",\n            radioGroupName: \"MetricRadioConfig\",\n            radioButtons: [\n                {\n                    value: \"Ratings\",\n                    isDisabled: false,\n                    label: \"Ratings\",\n                    class: \"grey-background\",\n                    id: 3,\n                },\n                {\n                    value: \"Impressions\",\n                    isDisabled: false,\n                    label: \"IMPS\",\n                    class: \"grey-background\",\n                    id: 2,\n                },\n            ],\n        };\n    }\n}\n","<section class=\"main-modal\">\n    <div class=\"modal-header\">\n        <span>\n            <h3 class=\"modal-title\">Enter Liability</h3>\n        </span>\n    </div>\n\n    <div class=\"modal-body\">\n        <div class=\"meta-data\">\n            <span\n                >Order type: <b>{{ orderType }}</b></span\n            >\n            <span\n                *ngIf=\"isOrderMetricSet\"\n                class=\"order-metric\"\n                >Buyer metric: <b>{{ orderMetric }}</b></span\n            >\n            <div\n                class=\"liability-radio-button\"\n                *ngIf=\"!isOrderMetricSet\"\n            >\n                <anna-design-radio-buttons\n                    [config]=\"radioConfig\"\n                    [selectedValue]=\"selectedMetric\"\n                    (selectionChanged)=\"metricSelectionChange($event)\"\n                    [disabled]=\"false\"\n                    class=\"liability-radio\"\n                ></anna-design-radio-buttons>\n            </div>\n        </div>\n        <form [formGroup]=\"liabilityForm\">\n            <div class=\"form-group\">\n                <label\n                    class=\"label\"\n                    for=\"liabilityInput\"\n                    >Liability\n                    <span>{{ isImpressions ? \"(In IMPS)\" : \"(In Ratings)\" }}</span>\n                </label>\n\n                <input\n                    annaCoreDigitOnly\n                    type=\"text\"\n                    [decimal]=\"true\"\n                    inputmode=\"numeric\"\n                    [pattern]=\"liabilityPattern\"\n                    [min]=\"0\"\n                    [allowPaste]=\"false\"\n                    class=\"form-control\"\n                    id=\"liabilityInput\"\n                    formControlName=\"liabilityInput\"\n                    [placeholder]=\"isImpressions ? 'Enter liability (in IMPS)' : 'Enter liability (in Ratings)'\"\n                    [ngClass]=\"{\n                        error:\n                            liabilityForm.get('liabilityInput').dirty &&\n                            (liabilityForm.get('liabilityInput').errors ||\n                            +liabilityForm.get('liabilityInput').value === 0)\n                    }\"\n                    (input)=\"onInputChange($event)\"\n                />\n                <!-- Do not use === here -->\n            </div>\n        </form>\n\n        <ul class=\"order-ul\">\n            <li>The UD liability entered will be against the order flight dates.</li>\n            <!-- <li>The UD liability once entered, can not be edited later.</li> -->\n        </ul>\n        <div class=\"button-container\">\n            <button\n                class=\"anna cancel-button\"\n                (click)=\"closePopup()\"\n            >\n                Cancel\n            </button>\n            <button\n                class=\"anna apply-button\"\n                [disabled]=\"disableButton\"\n                (click)=\"saveLiability()\"\n            >\n                Save\n            </button>\n        </div>\n    </div>\n</section>\n","// Manisha move this to TableColumnNameConstants drr constant\nexport class DRRTableColumnNameConstants {\n    static readonly PrimaryAE = \"PRIMARY AE\";\n    static readonly Region = \"REGION\";\n    static readonly Agency = \"AGENCY\";\n    static readonly Location = \"LOCATION\";\n    static readonly Advertiser = \"ADVERTISER\";\n    static readonly ProductCode = \"PRODUCT CODE\";\n    static readonly RevisionStartDate = \" REVISION START DATE\";\n    static readonly StartDate = \"START DATE\";\n    static readonly EndDate = \"END DATE\";\n    static readonly OrderNumber = \"STN ORDER#-REV#\";\n    static readonly BuyerOrderId = \"BUYER ORDER#\";\n    static readonly AltOrderId = \"ALT/REP ORDER#\";\n\n    static readonly GRP = \"GRP\";\n    static readonly CPP = \"CPP\";\n    static readonly IMPS = \"IMPS\";\n    static readonly CPM = \"CPM\";\n    static readonly OfferefMadegood = \"OFFERED MG\";\n    static readonly OSPEValue = \"O/S PE\";\n    static readonly OfferefADUs = \"OFFERED ADUs\";\n    static readonly AudienceDeficit = \"O/S AUD DELTA\";\n    static readonly BookedValue = \"$ BOOKED\";\n    static readonly BookedSpots = \"SPOTS\";\n    static readonly UserChanges = \"USER CHANGES\";\n    static readonly RevisionType = \"REVISION TYPE\";\n    static readonly BuyerChanges = \"BUYER CHANGES\";\n    static readonly UserADUs = \"USER ADUs\";\n    static readonly UserMGs = \"USER MG\";\n    static readonly Demo = \"DEMO\";\n}\n\nexport class OrderListingEasyFilterConstants {\n    static readonly ORDER_FLIGHT_STATUS = \"Order flight status\";\n    static readonly IN_FLIGHT = \"IN-FLIGHT\";\n    static readonly COMPLETED = \"COMPLETED\";\n    static readonly UPCOMING = \"UPCOMING\";\n\n    static readonly BUSINESS_RULES_STATUS = \"Buyer business rule approval\";\n    static readonly NOTIFY = \"NOTIFY BUYER\";\n    static readonly AWAITING_BUYER_APPROVAL = \"AWAITING BUYER APPROVAL\";\n    static readonly AWAITING_SELLER_CONFIRMATION = \"AWAITING SELLER CONFIRMATION\";\n\n    static readonly AWAITING_SELLER_APPROVAL = \"AWAITING SELLER APPROVAL\";\n    static readonly AWAITING_BUYER_CONFIRMATION = \"AWAITING BUYER CONFIRMATION\";\n    static readonly NEED_BUYER_CONFIRMATION = \"NEED BUYER CONFIRMATION\";\n    static readonly NEED_SELLER_CONFIRMATION = \"NEED SELLER CONFIRMATION\";\n\n    static readonly STARRED = \"STARRED\";\n    static readonly POD = \"PoD\";\n    static readonly P4S = \"P4S\";\n    static readonly WRITE_ENABLED = \"AUTOMATED\";\n    static readonly NON_AUTOMATED = \"NON-AUTOMATED\";\n    static readonly BLANK = \"BLANK\";\n    static readonly DELETED = \"DELETED\";\n\n    static readonly ADU_DISCREPANCY = \"ADU DISCREPANCY\";\n}\nexport class OrderTypeConstants {\n    static readonly PAID_AUDIENCE = \"Paid (Aud Posting)\";\n    static readonly PAID_NO_AUDIENCE = \"Paid (No Aud Posting)\";\n    static readonly UD_LIABILITY_NOT_SET = \"UD (Liability not set)\";\n    static readonly UD_LIABILITY_SET = \"UD (Liability set)\";\n    static readonly UD = \"UD\";\n}\nexport class OrderListingTableHeaderConstants extends DRRTableColumnNameConstants {\n    static readonly STATION = \"STATION\";\n    static readonly BUYERS = \"BUYERS\";\n    static readonly REPS = \"REPS\";\n    static readonly NETWORK_AFFILIATE = \"NETWORK AFFILIATE\";\n    static readonly MARKET = \"MARKET\";\n    static readonly ALT_ORDER = \"ALT/REP ORDER #\";\n    static readonly DEMO = \"DEMO\";\n    static readonly ESTIMATE = \"ESTIMATE#\";\n    static readonly REV_CODE_1 = \"REV CODE 1\";\n    static readonly REV_CODE_2 = \"REV CODE 2\";\n    static readonly REV_CODE_3 = \"REV CODE 3\";\n    static readonly MADEGOOD_PE = \"$ MADEGOOD PEs\";\n    static readonly OUTSTANDING_PE = \"$ O/S PEs\";\n    static readonly POSTED_ADUs = \"$ POSTED ADUs\";\n    static readonly SCHEDULED_ADUs = \"$ SCHEDULED ADUs\";\n    static readonly OUTSTANDING_AUD_DELTA = \"$ O/S AUDIENCE\";\n    static readonly POSTED_AUDIENCE_PER = \"POSTED AUDIENCE %\";\n    static readonly STN_ORDERNO_REV_NO = \"STN ORDER#-REV#\";\n    static readonly ORDER_SOURCE = \"ORDER ROUTE\";\n    static readonly ORDER_TYPE = \"ORDER TYPE\";\n    static readonly ANNA_REVISED = \"ANNA REVISED\";\n    static readonly CASH_TRADE = \"C/T\";\n    static readonly ORDER_CATEGORY = \"REVENUE CATEGORY\";\n    static readonly REVISION_TYPE = \"REVISION TYPE\";\n    static readonly STATUS = \"STATUS\";\n    static readonly BOOKED = \"$ BOOKED\";\n    static readonly UD_IMPS = \"PROJ. UD IMPS\";\n    static readonly UD_GRP = \"PROJ. UD GRP\";\n    static readonly OD_IMPS = \"PROJ. OD IMPS\";\n    static readonly OD_GRP = \"PROJ. OD GRP\";\n    static readonly UD_PERCENT = \"PROJ. UD %\";\n    static readonly UD_GRP_PERCENT = \"UD GRP %\";\n    static readonly OD_PERCENT = \" PROJ. OD %\";\n    static readonly OD_GRP_PERCENT = \"OD GRP %\";\n    static readonly OD_VALUE = \"PROJ. $ OD\";\n    static readonly UD_VALUE = \"PROJ. $ UD\";\n    static readonly AUDIENCE_POSTING = \"AUDIENCE POSTING\";\n}\n\nexport class OrdersConstant {\n    // buyer-contact-details\n    static readonly buyerApprovalAndContact = \"Buyer Approval & Contact\";\n    static readonly buyerBizApprovalNeeded = \"Buyer business rules approval needed\";\n    static readonly noContactsAdded = \"No Contact added\";\n    static readonly buyerApprovalRequired = \"Buyer approval required\";\n    static readonly emailOnlyOrderSchedule = \"Email only order schedule\";\n    static readonly buyer = \"Buyer\";\n    static readonly buyerContact = `${OrdersConstant.buyer} contact`;\n    static readonly addBuyer = `Add ${OrdersConstant.buyer.toLowerCase()}`;\n    static readonly addBuyerContact = `Add ${OrdersConstant.buyer} Contact`;\n    static readonly editBuyer = \"Edit \";\n    static readonly yes = \"Yes\";\n    static readonly no = \"No\";\n\n    // add-buyer-contact constants\n    static readonly primary = \"Primary\";\n    static readonly secondary = \"Secondary\";\n    static readonly primaryBuyerDetails = `${OrdersConstant.primary} ${OrdersConstant.buyer.toLowerCase()} details`;\n\n    static readonly namePlaceholder = \"Enter buyer’s name\";\n    static readonly emailPlaceholder = \"Enter buyer’s email ID\";\n    static readonly phoneNoPlaceholder = \"Enter buyer’s phone number\";\n\n    static readonly invalidName = \"*Invalid Name\";\n    static readonly Name = \"Name*\";\n    static readonly pleaseEnterFullName = \"*Please enter full name\";\n    static readonly specialCharNotAllowed = \"Special Charater not allowed\";\n\n    static readonly invalidEmail = \"*Invalid Email\";\n    static readonly email = \"Email*\";\n    static readonly pleaseEnterEmailId = \"Please enter email ID\";\n    static readonly pleaseEnterValidEmailId = \"Please enter a valid email ID\";\n\n    static readonly invalidPhone = \"Invalid Phone\";\n    static readonly phone = \"Phone\";\n    static readonly pleaseEnterValidPhoneNo = \"Please enter a valid Phone No\";\n\n    static readonly secondaryBuyerContactDetails = `${OrdersConstant.secondary} ${OrdersConstant.buyer.toLowerCase()} Details`;\n    static readonly addSecondaryBuyerContactDetails = `Add ${OrdersConstant.secondaryBuyerContactDetails.toLowerCase()}`;\n    static readonly removeSecondaryBuyerContactDetails = `Remove ${OrdersConstant.secondaryBuyerContactDetails.toLowerCase()}`;\n    static readonly save = \"Save \";\n\n    static readonly newBuyerSuccess = \"New Buyer Contact details added successfully.\";\n    static readonly updateBuyerSuccess = \"Buyer Contact details updated successfully.\";\n    static readonly BuyerErrorMessage = \"Some Error occured. Couldn't add Buyer details\";\n    static readonly secondaryBuyerDeleteErrorMessage = \"Some Error occured while deleting secondary Buyer details\";\n\n    static readonly businessRulesTabName = \"Business Rules\";\n    static readonly UndefinedEndDate = \"indefinitely\";\n    static readonly ProxyOrderToasteTextPartOne = \"This order belongs to \";\n    static readonly ProxyOrderToasteTextPartTwo = \". You can manage this order since you are the proxy user from\";\n    static readonly writeEnabledOrderToastrMessage =\n        \"This is a Automated order. Action taken on spots for this order will be fed into the traffic system.\";\n    static readonly notWriteEnabledOrderToastrMessage =\n        \"This is a Read-Only order. No approval action can be taken for these orders.\";\n\n    static readonly PerformancePeriodModalTitle = \"Edit Period\";\n    static readonly PerformancePeriodModalMessage =\n        \"Select period for which you want to view the audience performance for.\";\n    static readonly SpotDetailsPeriodModalTitle = \"Edit Period\";\n    static readonly SpotDetailsPeriodModalMessage = \"Select period for which you want to view the spot details for.\";\n    static readonly Quarter = \"Quarter\";\n    static readonly Month = \"Month\";\n    static readonly CustomRange = \"Custom Range\";\n    static readonly Broadcast = \"broadcast\";\n    static readonly Fiscal = \"fiscal\";\n\n    static readonly OngoingTemporaryRevisionMessage =\n        \"This is an ongoing temporary revision. Any new revision will henceforth be for the live order.\";\n\n    static readonly AnnaOrderEntry = \"ANNA ORDER ENTRY\";\n}\nexport class OrderDiscrepanciesHeaderConstant {\n    static readonly STATION = \"STATION\";\n    static readonly MARKET = \"MARKET\";\n    static readonly ALT_REP_ORDER = \"ALT/REP ORDER#\";\n    static readonly STN_ORDER = \"STN ORDER#\";\n    static readonly SOURCE = \"SOURCE\";\n    static readonly ESTIMATE = \"ESTIMATE#\";\n    static readonly PRIMARY_AE = \"PRIMARY AE\";\n    static readonly AGENCY = \"AGENCY\";\n    static readonly ADVERTISER = \"ADVERTISER\";\n    static readonly DEMO = \"DEMO\";\n    static readonly METRIC = \"METRIC\";\n    static readonly BOOKED = \"$ BOOKED\";\n    static readonly BOOKED_RTG = \"BOOKED RTG\";\n    static readonly BOOKED_IMPS = \"BOOKED IMPS\";\n    static readonly FLIGHT_DATES = \"FLIGHT DATES\";\n    static readonly SPOTS = \"# SPOTS\";\n    static readonly LEN = \"LEN (# SPOTS)\";\n}\n\nexport class VerifyMappingEasyFilterConstants {\n    static readonly NEEDS_REVIEW = \"NEEDS REVIEW\";\n    static readonly RATE_RTG_GREATER = \"RATE | RTG > 125%\";\n    static readonly RATE_RTG_LESS = \"RATE | RTG < 75%\";\n}\n","import { CurrencyPipe, DecimalPipe } from \"@angular/common\";\nimport {\n    AnnaNumberFormatService,\n    IActionItemTypeWithStringIconOrTextAction,\n    SvgOrIconNames,\n    SvgOrIconTypeInGTTable,\n} from \"@annalib/anna-core\";\nimport { OrderListingConstants, OrderRoute } from \"@annalib/anna-feature-shared-lib\";\n\n// import { TypeOfActionLinkForGtEnum } from \"../../../../biz-rules-order-listing/model/biz-rule-order-listing.model\";\nimport { OrderTypeConstants } from \"./order-listing.constant\";\n\nexport type RevisionType = \"ANNA\" | \"Buyer revision\" | \"User offers\" | \"-\" | \"- (High discrepancy)\";\nexport type RevisionStatus =\n    | \"Seller Pending\"\n    | \"Buyer Pending\"\n    | \"SM Pending\"\n    | \"Rev Generated\"\n    | \"Rev discarded\"\n    | \"O/S Spots\"\n    | \"O/S UD\";\n\nexport interface Filter {\n    text: string;\n    isActive: boolean;\n    isDisabled: boolean;\n    iconRequired?: boolean;\n    isSvgIcon?: boolean;\n    iconClass?: string;\n}\n\nexport interface OrderListingEasyFilter {\n    label: string;\n    class?: string;\n    filters: Filter[];\n}\nexport enum OrderType {\n    PAID_WITH_AUDIENCE = \"PAID_WITH_AUDIENCE\",\n    PAID_NO_AUDIENCE = \"PAID_NO_AUDIENCE\",\n    UD_LIABILITY_NOT_SET = \"UD_LIABILITY_NOT_SET\",\n    UD_LIABILITY_SET = \"UD_LIABILITY_SET\",\n    UD = \"UD\",\n}\nexport class OrderDetails {\n    station: string;\n    primaryBuyer: string;\n    secondaryBuyer: string;\n    estimateNo: string;\n    stationId: number;\n    agency: string;\n    location: string;\n    advertiser: string;\n    buyerNames: string = null;\n    repUserNames: string = null;\n    brand: string;\n    brandId: number;\n    startDate: string;\n    endDate: string;\n    orderId: number;\n    campaignId: number;\n    revision: string;\n    orderStatus: string;\n    // orderRevisionStatus: string;\n    orderStarred: boolean;\n    payForPerformance: boolean;\n    bizRuleStatus: string;\n    primaryAe: string;\n    region: string;\n    orderNoRevNo: string;\n    revCode1: string;\n    revCode2: string;\n    revCode3: string;\n    advertiserId;\n    isWriteEnabled: boolean;\n    demo: string;\n    productCode: string;\n    buyerOrderId: string;\n    bookedValueExcludingZeroRtngSpots: number;\n    poDAndAAIconKey: SvgOrIconTypeInGTTable[];\n    deletedOrderIconKey: SvgOrIconTypeInGTTable[];\n    isAnnaOrderEntry: boolean;\n\n    booked: number;\n    displayBooked: string;\n\n    spots: number;\n    displaySpots: string;\n    grp: number;\n    grpWithoutRoundoff: number;\n\n    imps: number;\n\n    cpp: number;\n    displaycpp: string;\n\n    cpm: number;\n    displaycpm: string;\n\n    rcvPreempt: number;\n    displayMadegoodPe: string;\n\n    osPreempt: number;\n    displayOsPe: string;\n\n    postedAdu: number;\n    displayPostedADUs: string;\n\n    scheduledAdu: number;\n    displayScheduledADUs: string;\n\n    audienceDeficit: number;\n    displayOsAudienceDelta: string;\n\n    postedAudPercent: number;\n    displayPostedAudiencePer: string;\n    iconClass: string;\n    gtClass: string;\n\n    orderCategory: string;\n    revisionType: RevisionType;\n    revisionStatus: RevisionStatus | string;\n    annaRevised: string;\n    cashOrTrade: string;\n    orderSource: string;\n    underDeliveryPercent: number;\n    overDeliveryPercent: number;\n\n    underDeliveryImpsDisplay: string;\n    underDeliveryGrpDisplay: string;\n    overDeliveryImpsDisplay: string;\n    overDeliveryGrpDisplay: string;\n    underDeliveryPercentDisplay: string;\n    overDeliveryPercentDisplay: string;\n    UDImps: number;\n    UDGrp: number;\n    ODImps: number;\n    ODGrp: number;\n    odImpsPercent: number;\n    odGrpPercent: number;\n    udImpsPercent: number;\n    udGrpPercent: number;\n    displayGrp: string;\n    displayimps: string;\n    // showPFPViewOnlyModeForBuyer: boolean;\n    orderTypeActionKey?: any;\n    orderTypeTooltipKey: { key: string; value: string }[];\n    isDeletedOrder: boolean;\n    orderType?: string;\n    redirectTo: \"order-business-rules\" | \"line-details\" | \"audience-performance\";\n\n    displayUdValue: string;\n    udValue: number;\n    displayOdValue: string;\n    odValue: number;\n    isHiatusDateSet: boolean = false;\n    startDateActionKey: IActionItemTypeWithStringIconOrTextAction[] = [];\n    startDateTooltipKey: { key: string; value: string }[] = [];\n    hasAduDiscrepancy: boolean;\n    market: string;\n    networkAffiliate: string;\n    bookedImpWithoutRoundoff: number;\n    isAudiencePostingRequired: boolean;\n    isAudiencePostingRequiredText: string;\n\n    constructor(data: any, currencyPipe: CurrencyPipe, decimalPipe: DecimalPipe, currentListingTab: string) {\n        this.station = data.Station;\n\n        this.market = data?.MarketName ?? \"-\";\n        this.networkAffiliate = data?.NetworkAffiliate ?? \"-\";\n        this.redirectTo = data.RedirectTo;\n        this.primaryBuyer = data?.PrimaryBuyerName ? data.PrimaryBuyerName : \"-\";\n        this.secondaryBuyer = data?.SecondaryBuyerName ? data.SecondaryBuyerName : \"-\";\n        this.estimateNo = data?.EstimateNumber ? data?.EstimateNumber : \"-\";\n        this.stationId = data.StationId;\n        this.agency = data.AgencyName;\n        this.location = data.Location ? data.Location : \"-\";\n        this.advertiser = data.AdvertiserName;\n        this.brand = data.BrandName;\n        this.brandId = data.BrandId;\n        this.startDate = data.FlightStartDate;\n        this.endDate = data.FlightEndDate;\n        this.orderId = data.OrderId;\n        this.campaignId = data.CampaignId;\n        this.revision = data.OrderRevisionNo;\n        this.buyerNames = OrderDetails.convertToCommaSeperatedString(data.BuyerNames);\n        this.repUserNames = OrderDetails.convertToCommaSeperatedString(data.RepContactNames);\n        this.isAnnaOrderEntry = data.AnnaEnteredRepOrder;\n        this.rcvPreempt = data.PreemptedRecoveredCost;\n        this.osPreempt = data.PreemptedUnrecoveredCost;\n\n        this.hasAduDiscrepancy = data.HasAduDiscrepancy;\n\n        this.orderType =\n            data.OrderType === OrderType.UD_LIABILITY_NOT_SET\n                ? OrderTypeConstants.UD_LIABILITY_NOT_SET\n                : OrderDetails.mapOrderTypeToText(data.OrderType);\n\n        this.orderTypeActionKey = OrderDetails.getOrderTypeActionKey(data.OrderType, this.hasAduDiscrepancy);\n        // this.mapOrderTypeToText(data.OrderType);\n        this.orderTypeTooltipKey = OrderDetails.getOrderTypeTooltipKey(this.hasAduDiscrepancy);\n\n        this.orderStatus = data.OrderFlightStatus;\n        // this.orderRevisionStatus = data.OrderRevisionStatus ? data.OrderRevisionStatus.toUpperCase() : \"\";\n        this.region = data.Region;\n        this.isHiatusDateSet = data.IsHiatusDatesSet;\n\n        const hiatusActions = new HaitusTextActions(data);\n        this.startDateActionKey.push(hiatusActions);\n        this.startDateTooltipKey = this.startDateActionKey[0].tooltipData;\n        this.orderNoRevNo = `${data.OrderId}-${data.OrderRevisionNo.split(\" \").join(\"\")}`;\n        this.revCode1 = data.RevCode1 ? data.RevCode1 : \"-\";\n        this.revCode2 = data.RevCode2 ? data.RevCode2 : \"-\";\n        this.revCode3 = data.RevCode3 ? data.RevCode3 : \"-\";\n        this.revCode3 = !data.RevCode2 && !data.RevCode3 ? null : this.revCode3;\n        this.booked = data.BookedValue;\n        this.spots = data.BookedSpots;\n        this.displaySpots = this.spots.toLocaleString();\n        this.primaryAe = data.PrimaryAEName;\n        this.grp = data.BookedGrp;\n        this.displayGrp = data.OrderType === OrderType.UD_LIABILITY_SET ? \"-\" : this.grp.toLocaleString();\n        this.grpWithoutRoundoff = data.BookedGrpWithoutRoundoff;\n        this.cpp = data.Cpp;\n        this.imps = data.BookedImp;\n        this.displayimps = data.OrderType === OrderType.UD_LIABILITY_SET ? \"-\" : this.imps.toLocaleString();\n        this.cpm = data.Cpm;\n        this.advertiserId = data.AdvertiserId;\n        this.orderStarred = data.MarkedAsStarred;\n        this.bizRuleStatus = data.BizRuleStatus ? data.BizRuleStatus.toUpperCase() : \"\";\n        this.isWriteEnabled = data.IsAutomated;\n\n        this.payForPerformance = data.IsPayForPerformanceOrder ? data.IsPayForPerformanceOrder : false;\n        this.isAudiencePostingRequired = data.IsAudiencePostingRequired;\n        this.isAudiencePostingRequiredText = data.IsAudiencePostingRequired ? \"Yes\" : \"No\";\n        this.demo = data.TgName;\n        // hotfix changes : change buyer_order_id to alternate_order_id\n        this.buyerOrderId = data.AlternateOrderId ? data.AlternateOrderId : \"-\";\n        // this.buyerOrderId = data.buyer_order_id;\n        this.productCode = data.ProductCode ? data.ProductCode : \"-\";\n        this.postedAdu = data.PostedAduCost;\n        this.scheduledAdu = data.ScheduleAduCost;\n        this.audienceDeficit = data.UdDeficitValue;\n        this.postedAudPercent = data.PostedUdPercent;\n        this.bookedValueExcludingZeroRtngSpots = data.BookedValueWithoutZeroRatingSpots;\n\n        this.UDImps = data.under_delivery.Impression;\n        this.UDGrp = data.under_delivery.Grp;\n        this.ODImps = data.over_delivery.Impression;\n        this.ODGrp = data.over_delivery.Grp;\n\n        this.underDeliveryImpsDisplay = this.UDImps === 0 ? \"-\" : this.UDImps?.toLocaleString();\n        this.underDeliveryGrpDisplay = this.UDGrp === 0 ? \"-\" : this.UDGrp?.toLocaleString();\n        this.overDeliveryImpsDisplay = this.ODImps === 0 ? \"-\" : this.ODImps?.toLocaleString();\n        this.overDeliveryGrpDisplay = this.ODGrp === 0 ? \"-\" : this.ODGrp?.toLocaleString();\n\n        this.odImpsPercent = data.over_delivery.Percent;\n        this.odGrpPercent = data.over_delivery.Percent;\n        this.udImpsPercent = data.under_delivery.Percent;\n        this.udGrpPercent = data.under_delivery.Percent;\n\n        this.underDeliveryPercent = data.under_delivery.Percent === 0 ? \"-\" : data.under_delivery.Percent;\n        this.overDeliveryPercent = data.over_delivery.Percent === 0 ? \"-\" : data.over_delivery.Percent;\n\n        this.underDeliveryPercentDisplay = this.toPercent(decimalPipe, this.underDeliveryPercent);\n        this.overDeliveryPercentDisplay = this.toPercent(decimalPipe, this.overDeliveryPercent);\n\n        this.displayBooked = currencyPipe.transform(this.booked ? this.booked : 0, \"USD\", \"symbol\", \"1.0-2\");\n        this.displaycpp = this.cpp ? currencyPipe.transform(this.cpp, \"USD\", \"symbol\", \"1.0-0\") : \"-\";\n        this.displaycpm = this.cpm ? currencyPipe.transform(this.cpm, \"USD\", \"symbol\", \"1.0-1\") : \"-\";\n\n        this.udValue = data.under_delivery.Value;\n        this.displayUdValue = this.udValue\n            ? currencyPipe.transform(this.udValue ? this.udValue : 0, \"USD\", \"symbol\", \"1.0-0\")\n            : \"-\";\n\n        this.odValue = data.over_delivery.Value;\n        this.displayOdValue = currencyPipe.transform(this.odValue ? this.odValue : 0, \"USD\", \"symbol\", \"1.0-0\");\n        if (\n            data.OrderType === OrderType.UD_LIABILITY_NOT_SET ||\n            data.OrderType === OrderType.UD_LIABILITY_SET ||\n            data.OrderType === OrderType.PAID_NO_AUDIENCE\n        ) {\n            this.displayOdValue = \"-\";\n            this.displayUdValue = \"-\";\n        }\n        if (this.overDeliveryGrpDisplay === \"-\" && this.overDeliveryImpsDisplay === \"-\" && !this.odValue) {\n            this.displayOdValue = \"-\";\n        }\n        if (this.underDeliveryGrpDisplay === \"-\" && this.underDeliveryImpsDisplay === \"-\" && !this.udValue) {\n            this.displayUdValue = \"-\";\n        }\n        this.displayMadegoodPe =\n            this.rcvPreempt == null ? \"-\" : currencyPipe.transform(this.rcvPreempt, \"USD\", \"symbol\", \"1.0-0\");\n        this.displayOsPe =\n            this.osPreempt == null ? \"-\" : currencyPipe.transform(this.osPreempt, \"USD\", \"symbol\", \"1.0-0\");\n        this.displayOsPe = this.osPreempt == null && this.rcvPreempt === 0 ? null : this.displayOsPe;\n\n        this.displayPostedADUs =\n            this.postedAdu == null ? \"-\" : currencyPipe.transform(this.postedAdu, \"USD\", \"symbol\", \"1.0-0\");\n        this.displayScheduledADUs =\n            this.scheduledAdu == null ? \"-\" : currencyPipe.transform(this.scheduledAdu, \"USD\", \"symbol\", \"1.0-0\");\n        this.displayScheduledADUs =\n            this.postedAdu == null && this.scheduledAdu === 0 ? null : this.displayScheduledADUs;\n\n        this.displayOsAudienceDelta = \"-\";\n        if (this.audienceDeficit != null) {\n            this.displayOsAudienceDelta =\n                this.audienceDeficit < 0\n                    ? \"$0\"\n                    : currencyPipe.transform(this.audienceDeficit, \"USD\", \"symbol\", \"1.0-0\");\n        }\n\n        this.displayPostedAudiencePer =\n            this.postedAudPercent == null ? \"-\" : `${decimalPipe.transform(this.postedAudPercent, \"1.2-2\")}%`;\n        this.displayPostedAudiencePer =\n            this.audienceDeficit == null && this.postedAudPercent == null ? null : this.displayPostedAudiencePer;\n\n        if (this.audienceDeficit < 0) {\n            this.gtClass = \"red-color-audience\";\n        }\n\n        this.iconClass = this.orderStarred ? \"mdi mdi-star highlight-star\" : \"mdi mdi-star-outline\";\n\n        this.orderCategory = data.OrderCategory;\n        this.cashOrTrade = data.CashOrTrade;\n        this.revisionType = data.RevisionType;\n        this.annaRevised = data.AnnaRevised;\n        this.revisionStatus = data.RevisionStatus;\n        this.orderSource = data.OrderSource;\n\n        this.isDeletedOrder = data.IsDeletedAtTraffic;\n\n        if (currentListingTab === OrderListingConstants.BlankAndDeleted && !this.isDeletedOrder) {\n            this.gtClass = \"grey-background-row\";\n        }\n\n        this.deletedOrderIconKey = [\n            {\n                showObjectKey: true,\n                svgOrIconName: this.isDeletedOrder ? \"DELETED_ORDER\" : null,\n            },\n        ];\n\n        this.poDAndAAIconKey = [\n            {\n                showObjectKey: true,\n                svgOrIconName: this.payForPerformance ? SvgOrIconNames.PAY_FOR_PERFORMANCE_ACTIVE : null,\n            },\n            {\n                showObjectKey: false,\n                svgOrIconName: this.isWriteEnabled ? SvgOrIconNames.AUTOMATED : null,\n            },\n        ];\n\n        this.bookedImpWithoutRoundoff = data.BookedImpWithoutRoundoff;\n    }\n\n    public static getOrderTypeActionKey(orderType: OrderType, hasAduDiscrepancy: boolean) {\n        return [\n            {\n                showTooltip: hasAduDiscrepancy,\n                dataToDisplay: OrderDetails.mapOrderTypeToText(orderType),\n                tooltipPosition: \"bottom auto\",\n                additionalTextWoTooltip:\n                    orderType === OrderType.UD_LIABILITY_NOT_SET\n                        ? \"(<span class='liability-not-set'>Liability not set</span>)\"\n                        : null,\n                tooltipIconClass: \"mi mdi-warning adu-discrepancy\",\n                tooltipInnerClass: \"order-adu-discrepancy-tooltip\",\n                disableTooltip: false,\n            },\n        ];\n    }\n\n    public static getOrderTypeTooltipKey(hasAduDiscrepancy: boolean): { key: string; value: string }[] {\n        return hasAduDiscrepancy\n            ? [\n                  {\n                      key: \"\",\n                      value: \"The order type is set to Paid on ANNA where no audience posting is required but has user booked ADUs\",\n                  },\n              ]\n            : [];\n    }\n\n    public toPercent(decimalPipe: DecimalPipe, value: number | string): string {\n        return value == null || value === \"-\" ? \"-\" : `${decimalPipe.transform(value, \"1.2-2\")}%`;\n    }\n\n    public to$Value(currencyPipe: CurrencyPipe, value: string): string {\n        return value == null || value === \"-\" ? \"-\" : currencyPipe.transform(value, \"USD\", \"symbol\", \"1.0-0\");\n    }\n    public static mapOrderTypeToText(orderType: OrderType): string {\n        switch (orderType) {\n            case OrderType.PAID_WITH_AUDIENCE:\n                return OrderTypeConstants.PAID_AUDIENCE;\n            case OrderType.PAID_NO_AUDIENCE:\n                return OrderTypeConstants.PAID_NO_AUDIENCE;\n            case OrderType.UD_LIABILITY_NOT_SET:\n                return \"UD \";\n            case OrderType.UD_LIABILITY_SET:\n                return OrderTypeConstants.UD_LIABILITY_SET;\n            case OrderType.UD:\n                return OrderTypeConstants.UD;\n            default:\n                return \"\";\n        }\n    }\n    static convertToCommaSeperatedString(arrList: any[]): string {\n        let nameList = \"\";\n        if (arrList && arrList.length) {\n            nameList = arrList.join(\", \");\n        } else {\n            nameList = \"-\";\n        }\n        return nameList;\n    }\n}\n\nexport class HaitusTextActions {\n    id: any;\n    data: string;\n    iconClass: string;\n    showIcon: boolean = false;\n    disabledIcon: boolean = false;\n    linkClass: string;\n    showLink: boolean = false;\n    disabledLink: boolean = false;\n    showTooltip: boolean = false;\n    disableTooltip: boolean = false;\n    additionalTextBeforeLink: string = null;\n    typeOfData: \"STRING\" | \"ICON_TEXT_ACTION\";\n    enableTooltipForAdditionalText: boolean = false;\n    tooltipData: { key: string; value: string }[];\n    tooltipPlacement: string;\n    tooltipClass: string = null;\n\n    constructor(data: any) {\n        this.showLink = false;\n        this.data = data.FlightStartDate;\n        this.disabledLink = false;\n        this.typeOfData = \"STRING\";\n\n        if (data.IsHiatusDatesSet) {\n            const haitusDateTooltip = [];\n            const tooltip: { key: string; value: string } = {\n                key: \"Hiatus Dates have been set for this order\",\n                value: null,\n            };\n            haitusDateTooltip.push(tooltip);\n            this.tooltipData = haitusDateTooltip;\n            this.showTooltip = true;\n            this.showIcon = true;\n            this.iconClass = \"mdi mdi-alpha-h-box\";\n            this.tooltipClass = \"hiatus-tooltip\";\n        }\n    }\n}\n\nexport class OrderListingTotalRow {\n    bookedValue: number = 0;\n    bookedSpots: number = 0;\n    bookedGrp: number = 0;\n    bookedGrpWithoutRoundoff: number = 0;\n    cpp: number = 0;\n    imps: number = 0;\n    cpm: number = 0;\n    rcvPreempt: number = 0;\n    osPreempt: number = 0;\n    // rcvUnderDly: number;\n    postedAudPercent: number = 0;\n    postedAdu: number = 0;\n    scheduledAdu: number = 0;\n    audienceDeficit: number = 0;\n    bookedValueExcludingZeroRtngSpots: number = 0;\n    bookedImpWithoutRoundoff: number = 0;\n    orderCountWithPostedAudiencePer: number = 0;\n    // displayCpp: string;\n    // displayCpm: string;\n    displayImps: string;\n    displayBookedValue: string;\n    displayPostedAdu: string;\n    displayScheduledAdu: string;\n    displayAudienceDeficit: string;\n    displayRcvPreempt: string;\n    displayOsPreempt: string;\n    underDeliveryPercent: number = 0;\n    overDeliveryPercent: number = 0;\n    displayUdImps: any = 0;\n    displayUdGrp: any = 0;\n    displayOdImps: any = 0;\n    displayOdGrp: any = 0;\n    displayUdPercent: any = \"0%\";\n    displayOdPercent: any = \"0%\";\n    udCountWithoutNull: number = 0;\n    odCountWithoutNull: number = 0;\n    udValue: number = 0;\n    odValue: number = 0;\n    displayUdValue: string;\n    displayOdValue: string;\n\n    constructor(data: OrderDetails[]) {\n        data.forEach((order: OrderDetails) => {\n            this.bookedValue += order.booked;\n            this.bookedSpots += order.spots;\n            this.bookedGrp += order.grp;\n            this.bookedGrpWithoutRoundoff += order.grpWithoutRoundoff;\n            // this.cpp += order.cpp;\n            this.imps += order.imps;\n            // this.cpm += order.cpm;\n            this.rcvPreempt += order.rcvPreempt;\n            this.osPreempt += order.osPreempt;\n            this.postedAdu += order.postedAdu;\n            this.scheduledAdu += order.scheduledAdu;\n            this.audienceDeficit += order.audienceDeficit;\n            this.postedAudPercent += order.postedAudPercent;\n            this.bookedValueExcludingZeroRtngSpots += order.bookedValueExcludingZeroRtngSpots;\n            this.bookedImpWithoutRoundoff += order.bookedImpWithoutRoundoff;\n            if (order.postedAudPercent > 0) {\n                this.orderCountWithPostedAudiencePer += 1;\n            }\n            this.odValue += order.odValue;\n            this.udValue += order.udValue;\n\n            this.displayUdImps += order.underDeliveryImpsDisplay === \"-\" ? 0 : order.UDImps;\n            this.displayUdGrp += order.underDeliveryGrpDisplay === \"-\" ? 0 : order.UDGrp;\n            this.displayOdImps += order.overDeliveryImpsDisplay === \"-\" ? 0 : order.ODImps;\n            this.displayOdGrp += order.overDeliveryGrpDisplay === \"-\" ? 0 : order.ODGrp;\n            this.underDeliveryPercent += order.underDeliveryPercentDisplay === \"-\" ? 0 : order.underDeliveryPercent;\n            this.overDeliveryPercent += order.overDeliveryPercentDisplay === \"-\" ? 0 : order.overDeliveryPercent;\n            this.udCountWithoutNull =\n                order.underDeliveryPercentDisplay === \"-\" ? this.udCountWithoutNull : this.udCountWithoutNull + 1;\n            this.odCountWithoutNull =\n                order.overDeliveryPercentDisplay === \"-\" ? this.odCountWithoutNull : this.odCountWithoutNull + 1;\n        });\n        this.displayOdGrp = this.displayOdGrp === 0 ? \"-\" : this.displayOdGrp.toString();\n        this.displayOdImps =\n            this.displayOdImps === 0 ? \"-\" : AnnaNumberFormatService.GetRoundedValueWithUnits(this.displayOdImps, 1);\n        this.displayUdGrp = this.displayUdGrp === 0 ? \"-\" : this.displayUdGrp.toString();\n        this.displayUdImps =\n            this.displayUdImps === 0 ? \"-\" : AnnaNumberFormatService.GetRoundedValueWithUnits(this.displayUdImps, 1);\n\n        this.underDeliveryPercent = this.udCountWithoutNull ? this.underDeliveryPercent / this.udCountWithoutNull : 0;\n        this.overDeliveryPercent = this.odCountWithoutNull ? this.overDeliveryPercent / this.odCountWithoutNull : 0;\n\n        this.cpp =\n            this.bookedGrpWithoutRoundoff > 0\n                ? this.bookedValueExcludingZeroRtngSpots / this.bookedGrpWithoutRoundoff\n                : null;\n        this.cpm =\n            this.bookedImpWithoutRoundoff > 0\n                ? this.bookedValueExcludingZeroRtngSpots / this.bookedImpWithoutRoundoff\n                : null;\n        this.postedAudPercent =\n            this.orderCountWithPostedAudiencePer > 0 ? this.postedAudPercent / this.orderCountWithPostedAudiencePer : 0;\n\n        this.displayImps = this.imps > 0 ? AnnaNumberFormatService.GetRoundedImpressionsWithUnits(this.imps, 1) : \"$0\";\n        this.displayBookedValue =\n            this.bookedValue > 0 ? `$${AnnaNumberFormatService.GetRoundedValueWithUnits(this.bookedValue)}` : \"$0\";\n        this.displayPostedAdu =\n            this.postedAdu > 0 ? `$${AnnaNumberFormatService.GetRoundedValueWithUnits(this.postedAdu)}` : \"$0\";\n        this.displayScheduledAdu =\n            this.scheduledAdu > 0 ? `$${AnnaNumberFormatService.GetRoundedValueWithUnits(this.scheduledAdu)}` : \"$0\";\n        this.displayAudienceDeficit =\n            this.audienceDeficit > 0\n                ? `$${AnnaNumberFormatService.GetRoundedValueWithUnits(this.audienceDeficit)}`\n                : \"$0\";\n        this.displayRcvPreempt =\n            this.rcvPreempt > 0 ? `$${AnnaNumberFormatService.GetRoundedValueWithUnits(this.rcvPreempt)}` : \"0\";\n        this.displayOsPreempt =\n            this.osPreempt > 0 ? `$${AnnaNumberFormatService.GetRoundedValueWithUnits(this.osPreempt)}` : \"0\";\n        this.displayUdPercent =\n            this.underDeliveryPercent > 0\n                ? AnnaNumberFormatService.GetRoundedImpressionsWithUnits(this.underDeliveryPercent)\n                : \"-\";\n        this.displayOdPercent =\n            this.overDeliveryPercent > 0\n                ? AnnaNumberFormatService.GetRoundedImpressionsWithUnits(this.overDeliveryPercent)\n                : \"-\";\n        this.displayUdValue =\n            this.udValue > 0 ? `$${AnnaNumberFormatService.GetRoundedValueWithUnits(this.udValue)}` : \"-\";\n        this.displayOdValue =\n            this.odValue > 0 ? `$${AnnaNumberFormatService.GetRoundedValueWithUnits(this.odValue)}` : \"-\";\n    }\n}\n\nexport class OrderDetailsGroupedByRevisionStatus {\n    orders: OrderDetails[] = [];\n    constructor(data: any, currencyPipe: CurrencyPipe, decimalPipe: DecimalPipe, currentTab: string) {\n        data?.forEach((eachOrder: any) => {\n            const order = new OrderDetails(eachOrder, currencyPipe, decimalPipe, currentTab);\n            this.orders.push(order);\n        });\n    }\n}\n\nexport class OrderListingTabName {\n    static readonly TVRevenue = \"TVRevenue\";\n    static readonly OtherRevenue = \"OtherRevenue\";\n    static readonly BlankAndDeleted = \"BlankAndDeleted\";\n    static readonly Deleted = \"Deleted\";\n    static readonly PostingAndUDTracker = \"PostingAndUDTracker\";\n    static readonly TodaysAnnaOffers = \"TodaysAnnaOffers\";\n    static readonly TodaysUserOffers = \"TodaysUserOffers\";\n    static readonly OffersAwaitingApproval = \"OffersAwaitingApproval\";\n    static readonly ECOrders = \"ECOrders\";\n}\n\nexport interface OrderListingTab {\n    element: string;\n    name: string;\n    url: string;\n    componentName: OrderListingTabName;\n    showDivider: boolean;\n}\n\nexport class OrderDetailsInfo {\n    channelId: number;\n    orderId: string;\n    campaignId: number;\n    campaignStartDate: string;\n    campaignEndDate: string;\n    displayOrderId: string;\n    currentTab: number;\n    advertiserId: string;\n    latest_revision: number;\n    navigateTo: string;\n    currentListingTab: number;\n    searchRedirected: boolean;\n    currentListingTabName: string;\n    order_type: OrderRoute;\n    orderType: string;\n    constructor() {\n        this.channelId = 0;\n        this.orderId = null;\n        this.campaignId = 0;\n        this.campaignStartDate = null;\n        this.campaignEndDate = null;\n        this.displayOrderId = null;\n        this.currentTab = 0;\n        this.currentListingTab = 1;\n        this.currentListingTabName = \"\";\n        this.advertiserId = \"\";\n        this.latest_revision = null;\n        this.navigateTo = \"\";\n        this.orderType = null;\n    }\n}\n\nexport type OrderListingTabsName = \"TV Revenue\" | \"TV\" | \"Other Revenue\" | \"Blank & Deleted\" | \"Deleted\";\n","import { OrderRoute } from \"@annalib/anna-feature-shared-lib\";\nimport dayjs from \"dayjs\";\n\nimport { OrderTypeConstants } from \"../../order-listing/models/order-listing.constant\";\nimport { OrderType } from \"../../order-listing/models/order-listing.model\";\nimport { ESTIMATEPRIORITIES } from \"../../spot-details/models/generic-spot-details.model\";\n\nexport type CashOrTrade = \"Cash\" | \"Trade\";\nexport type OrderCategory =\n    | OrderCategoryEnum.tvRevenue\n    | OrderCategoryEnum.nonSpotsDigital\n    | OrderCategoryEnum.stationUtilizedTV\n    | OrderCategoryEnum.tradeTV;\nexport type OrderFlightStatus =\n    | OrderFlightStatusEnum.inflight\n    | OrderFlightStatusEnum.completed\n    | OrderFlightStatusEnum.upcoming;\n\nexport enum OrderCategoryEnum {\n    tvRevenue = \"TV Revenue\",\n    nonSpotsDigital = \"Non-spots Digital\",\n    stationUtilizedTV = \"Station Utilized TV\",\n    tradeTV = \"Trade TV\",\n}\n\nexport enum OrderFlightStatusEnum {\n    inflight = \"LIVE\",\n    completed = \"COMPLETED\",\n    upcoming = \"UPCOMING\",\n}\n\nexport enum OrderMetricsFromBE {\n    grp = \"GRP\",\n    impressions = \"Impressions\",\n}\n\nexport class StartEndDate {\n    StartDate: string;\n    EndDate: string;\n    constructor(obj: any) {\n        this.StartDate = obj.StartDate;\n        this.EndDate = obj.EndDate;\n    }\n}\n\nexport enum HiatusStatusEnum {\n    \"QUEUED_FOR_ENTRY\" = \"QUEUED_FOR_ENTRY\",\n    \"ENTRY_IN_PROGRESS\" = \"ENTRY_IN_PROGRESS\",\n    \"ENTRY_FAILED\" = \"ENTRY_FAILED\",\n    \"AWAITING_APPROVAL\" = \"AWAITING_APPROVAL\",\n    \"APPROVED\" = \"APPROVED\",\n    \"DATES_NOT_SET\" = \"DATES_NOT_SET\",\n    \"REJECTED\" = \"REJECTED\",\n}\n\nexport class HiatusDetailsForPopup {\n    enableEdit: boolean = false;\n    statusClass: string = null;\n    hiatusDateRange: StartEndDate[] = [];\n    lastEditedByUsername: string = null;\n    lastEditedByUserType: \"SELLER\" | \"BUYER\" | null = null;\n    lastEditedTime: string = null;\n    hiatusStatus: HiatusStatusEnum;\n    hiatusStatusTextToDisplay: string;\n    hiatusStatusIconClasss: string;\n    sellerComments: string = null;\n    disableSellerComments: boolean;\n    lastEditAndEnteredOnTrafficMessage: string = \"\";\n\n    constructor(data: any, disableEdit: boolean, isEOSApplication: boolean = false) {\n        if (data.HiatusPeriod) {\n            data.HiatusPeriod.forEach((date: StartEndDate) => {\n                const hiatusStartEndDate = new StartEndDate(date);\n                this.hiatusDateRange.push(hiatusStartEndDate);\n            });\n        }\n\n        this.lastEditedByUsername = data.UserName ? data.UserName : null;\n        this.lastEditedByUserType = data.LastUpdatedUserType ? data.LastUpdatedUserType : null;\n        this.lastEditedTime = data.LastUpdatedAt ? data.LastUpdatedAt : null;\n        this.hiatusStatus = data.Status;\n        this.sellerComments = data.Comment;\n\n        switch (this.hiatusStatus) {\n            case HiatusStatusEnum.QUEUED_FOR_ENTRY:\n                this.statusClass = \"queued-for-entry\";\n                this.hiatusStatusTextToDisplay = \"Queued for Entry\";\n                this.hiatusStatusIconClasss = \"mdi mdi-message-arrow-right\";\n                break;\n            case HiatusStatusEnum.ENTRY_FAILED:\n                this.statusClass = \"entry-failed\";\n                this.hiatusStatusTextToDisplay = \"Entry Failed\";\n                this.hiatusStatusIconClasss = \"mdi mdi-alert-octagon\";\n                break;\n            case HiatusStatusEnum.ENTRY_IN_PROGRESS:\n                this.statusClass = \"entry-in-progress\";\n                this.hiatusStatusTextToDisplay = \"Entry in Progress\";\n                this.hiatusStatusIconClasss = \"mdi mdi-check-circle\";\n                break;\n            case HiatusStatusEnum.AWAITING_APPROVAL:\n                this.statusClass = \"awaiting-approval\";\n                this.hiatusStatusTextToDisplay = \"Awaiting Approval\";\n                this.hiatusStatusIconClasss = \"mdi mdi-progress-clock\";\n                break;\n            case HiatusStatusEnum.APPROVED:\n                this.enableEdit = !disableEdit;\n                break;\n            case HiatusStatusEnum.REJECTED:\n                this.enableEdit = !disableEdit;\n                break;\n            case HiatusStatusEnum.DATES_NOT_SET:\n                this.enableEdit = !disableEdit;\n                break;\n            // no default\n        }\n\n        this.disableSellerComments = !this.enableEdit || (this.enableEdit && isEOSApplication);\n        if (this.lastEditedByUserType != null) {\n            const userType = this.lastEditedByUserType === \"SELLER\" ? \"Seller\" : \"Buyer\";\n            this.lastEditAndEnteredOnTrafficMessage += `Last edited by ${userType} (${this.lastEditedByUsername}) on <span class=\"bold-text\"> ${this.lastEditedTime}</span> `;\n        }\n        if (this.lastEditedByUserType != null && data.TrafficEntryDateTime != null) {\n            this.lastEditAndEnteredOnTrafficMessage += `<span class='divider'>|</span> `;\n        }\n        if (data.TrafficEntryDateTime != null) {\n            this.lastEditAndEnteredOnTrafficMessage += `Entered on WO Traffic on <span class=\"bold-text\">${data.TrafficEntryDateTime}</span>`;\n        }\n    }\n}\nexport class HiatusDetailsForOrderSummary {\n    // enableEdit: boolean = false;\n    hiatusDateRange: StartEndDate[] = [];\n    actionLinkForPopup: string;\n    constructor(data: any, orderCategory: OrderCategory, isDeletedOrder: boolean) {\n        if (data.HiatusDates) {\n            data.HiatusDates.forEach((date: StartEndDate) => {\n                const hiatusStartEndDate = new StartEndDate(date);\n                this.hiatusDateRange.push(hiatusStartEndDate);\n            });\n        }\n\n        if (orderCategory === OrderCategoryEnum.tvRevenue && !isDeletedOrder) {\n            this.actionLinkForPopup = data?.IsHiatusDatesSet ? \"View\" : \"Add\";\n        } else {\n            this.actionLinkForPopup = data?.IsHiatusDatesSet ? \"-\" : \"View\";\n        }\n    }\n}\n\nexport enum MeasurementAgencyInOrderSummary {\n    NielsenHHOvernights = \"Nielsen (Overnights)\",\n    NielsenSweeps = \"Nielsen (Sweeps)\",\n    Comscore = \"Comscore\",\n}\n\nexport class OrderInfo {\n    stationName: string;\n    networkAffiliate: string;\n    market: string;\n    latestRevisionDate: string;\n    orderCreationDate: string;\n    aeName: string;\n    isUserForThisOrderActivated: boolean;\n    salesOffice: string;\n    measurementAgency: MeasurementAgencyInOrderSummary;\n    region: string;\n    demographic: string;\n    stationOrderId: string;\n    flightStartDate: string;\n    flightEndDate: string;\n    hiatusPeriod: StartEndDate[] = [];\n    revCode1: string;\n    revCode2: string;\n    revCode3: string;\n    revenueClass: string;\n    postingType: string;\n    isPayForPerformanceOrder: boolean;\n    isStarredOrder: boolean;\n    isStationInSandboxMode: boolean;\n    isWriteEnabledOrder: boolean;\n    orderRoute: OrderRoute;\n    orderType: string;\n    isRepOrder: boolean;\n    orderCategory: OrderCategory;\n    cashOrTrade: CashOrTrade;\n    isDrOrder: boolean;\n    orderFlightStatus: OrderFlightStatus;\n    disableIfInSandboxAndWriteDisabled: boolean;\n    isDeletedOrder: boolean;\n    isCommercialOrder: boolean;\n    unitCode: string;\n    repStartDate: string;\n    repEndDate: string;\n    actionLinkForHiatusPopup: string;\n    isAnnaOrderEntry: boolean;\n    isGenerateAduPostingInBizRuleSet: boolean;\n    showPodWarningMessage: boolean;\n    // isAutomationActivatedActionAllowed: boolean;\n    allowDisablingAutomation: boolean;\n    allowAutomation: boolean;\n    considerSpotsWithBonusOrAdu: boolean;\n\n    constructor(obj: any) {\n        this.stationName = obj.StationName;\n        this.networkAffiliate = obj.NetworkAffiliate;\n        this.market = obj.MarketName;\n        this.orderCreationDate = obj.OrderCreationDate;\n        this.allowDisablingAutomation = obj.AllowDisablingAutomation;\n        this.allowAutomation = obj.AllowAutomation;\n        this.aeName = obj.AeName;\n        this.measurementAgency = obj.MeasurementAgencyType;\n        this.isUserForThisOrderActivated = obj.IsUserForThisOrderActivated;\n        this.salesOffice = obj.SalesOffice;\n        this.region = obj.Region;\n        this.demographic = obj.Demographic;\n        this.stationOrderId = obj.StationOrderId;\n        this.flightStartDate = obj.FlightStartDate;\n        this.flightEndDate = obj.FlightEndDate;\n        // this.orderType=\"\";\n        this.orderType = this.mapOrderTypeToText(obj.OrderType);\n        this.postingType = obj.PostingType;\n        this.revenueClass = obj.RevenueClass;\n        this.revCode1 = obj.RevCode1;\n        this.revCode2 = obj.RevCode2;\n        this.revCode3 = obj.RevCode3;\n        this.isPayForPerformanceOrder = obj.IsPayForPerformanceOrder;\n        this.isStarredOrder = obj.IsStarredOrder;\n        this.isGenerateAduPostingInBizRuleSet = obj.IsGenerateAduPostingInBizRuleSet;\n        this.showPodWarningMessage = !!obj.ShowPodWarningMessage;\n        // this.isAutomationActivatedActionAllowed = obj.IsAutomationActivatedActionAllowed;\n        this.isStationInSandboxMode = obj.IsStationInSandboxMode;\n        this.isWriteEnabledOrder = obj.IsAutomated;\n        this.orderRoute = obj.OrderRoute;\n        this.orderCategory = obj.OrderCategory;\n        this.cashOrTrade = obj.CashOrTrade;\n        this.isDrOrder = obj.IsDrOrder;\n        this.orderFlightStatus = obj.OrderFlightStatus;\n        this.disableIfInSandboxAndWriteDisabled = this.isStationInSandboxMode ? !this.isWriteEnabledOrder : false;\n        this.isRepOrder = obj.IsRepOrder;\n        this.isDeletedOrder = obj.IsDeletedAtTraffic;\n        this.isCommercialOrder = obj.IsCommercialOrder;\n        this.unitCode = obj.UnitCode;\n        this.repStartDate = obj.RepStartDate;\n        this.repEndDate = obj.RepEndDate;\n        this.isAnnaOrderEntry = obj.AnnaEnteredRepOrder;\n        this.considerSpotsWithBonusOrAdu = obj.ConsiderSpotsWithBonusOrAdu;\n\n        if (obj.HiatusPeriod) {\n            obj.HiatusPeriod.forEach((date: StartEndDate) => {\n                const hiatusStartEndDate = new StartEndDate(date);\n                this.hiatusPeriod.push(hiatusStartEndDate);\n            });\n        }\n        if (\n            this.orderCategory === OrderCategoryEnum.tvRevenue &&\n            !this.isDeletedOrder &&\n            this.orderFlightStatus !== OrderFlightStatusEnum.completed\n        ) {\n            this.actionLinkForHiatusPopup = obj.IsHiatusDatesSet ? \"View\" : \"Add\";\n        } else {\n            this.actionLinkForHiatusPopup = obj.IsHiatusDatesSet ? \"View\" : \"-\";\n        }\n    }\n    mapOrderTypeToText(orderType: OrderType): string {\n        switch (orderType) {\n            case OrderType.PAID_WITH_AUDIENCE:\n                return OrderTypeConstants.PAID_AUDIENCE;\n            case OrderType.PAID_NO_AUDIENCE:\n                return OrderTypeConstants.PAID_NO_AUDIENCE;\n            case OrderType.UD_LIABILITY_NOT_SET:\n                return OrderTypeConstants.UD_LIABILITY_NOT_SET;\n            case OrderType.UD_LIABILITY_SET:\n                return OrderTypeConstants.UD_LIABILITY_SET;\n            case OrderType.UD:\n                return OrderTypeConstants.UD;\n            default:\n                return \"\";\n        }\n    }\n}\n\nexport class PrimaryDetailContactInfo {\n    name: string;\n    email: string;\n    phoneNo: string;\n    constructor(obj: any) {\n        this.name = obj.Name;\n        this.email = obj.Email;\n        this.phoneNo = obj.ContactNumber;\n    }\n}\n\nexport class ClientInfo {\n    agencyName: string;\n    agencyLocation: string;\n    advertiserName: string;\n    advertiserId: number;\n    productCode: string;\n    alternateOrderId: string;\n    estimateNo: string;\n    orderProductDescription: string;\n    orderMinSeparation: string;\n\n    constructor(obj: any) {\n        this.advertiserId = obj.AdvertiserId;\n        this.agencyName = obj.AgencyName;\n        this.agencyLocation = obj.AgencyLocation;\n        this.advertiserName = obj.AdvertiserName;\n        this.productCode = obj.ProductCode;\n        this.alternateOrderId = obj.AlternateOrderId;\n        this.estimateNo = obj.EstimateNo;\n        this.orderProductDescription = obj.OrderProductDescription;\n        this.orderMinSeparation = obj.MinOrderSeparation;\n        // this.primaryBuyer = obj.BuyerContactDetails.Primary\n        //     ? new PrimaryDetailContactInfo(obj.BuyerContactDetails.Primary)\n        //     : null;\n        // this.secondaryBuyer = obj.BuyerContactDetails.Secondary\n        //     ? new PrimaryDetailContactInfo(obj.BuyerContactDetails.Secondary)\n        //     : null;\n        // this.testBuyer = obj.BuyerContactDetails.TestBuyer\n        //     ? new PrimaryDetailContactInfo(obj.BuyerContactDetails.TestBuyer)\n        //     : null;\n    }\n}\n\nexport class SpotsMeasurementCostAndValue {\n    spots: number;\n    value: string;\n    grp: string;\n    imps: string;\n\n    constructor(obj: any) {\n        this.spots = obj.Spots !== null ? obj.Spots : \"-\";\n        this.value = obj.Value;\n        this.grp = obj.GRP;\n        this.imps = obj.IMP;\n    }\n}\n\nexport class RevenueInfo {\n    isUdLiabilitySet: boolean;\n    udLiabilityMetric?: string;\n    originallyOrdered: SpotsMeasurementCostAndValue;\n    booked: SpotsMeasurementCostAndValue;\n    projected: SpotsMeasurementCostAndValue;\n    orderedToDate: SpotsMeasurementCostAndValue;\n    airedToDate: SpotsMeasurementCostAndValue;\n    postedToDate: SpotsMeasurementCostAndValue;\n    outstandingPreemptions: SpotsMeasurementCostAndValue;\n    credited: SpotsMeasurementCostAndValue;\n    unresolved: SpotsMeasurementCostAndValue;\n\n    constructor(obj: any) {\n        this.isUdLiabilitySet = obj.IsUDLiabilitySet;\n        this.udLiabilityMetric = obj.LiabilityMetric;\n        this.originallyOrdered = new SpotsMeasurementCostAndValue(obj.OriginallyOrdered);\n        this.booked = new SpotsMeasurementCostAndValue(obj.Booked);\n        this.projected = new SpotsMeasurementCostAndValue(obj.Projected);\n        this.orderedToDate = new SpotsMeasurementCostAndValue(obj.OrderedToDate);\n        this.airedToDate = new SpotsMeasurementCostAndValue(obj.AiredToDate);\n        this.postedToDate = new SpotsMeasurementCostAndValue(obj.PostedToDate);\n        this.outstandingPreemptions = new SpotsMeasurementCostAndValue(obj.OutstandingPreemptions);\n        this.credited = new SpotsMeasurementCostAndValue(obj.Credited);\n        this.unresolved = new SpotsMeasurementCostAndValue(obj.Unresolved);\n    }\n}\n\nexport class ProxyPeriod {\n    startDate: string;\n    endDate: string | null;\n    constructor(data: any) {\n        this.startDate = dayjs(data.StartDate).format(\"MM/DD/YYYY\");\n        this.endDate = data.EndDate != null ? dayjs(data.EndDate).format(\"MM/DD/YYYY\") : null;\n    }\n}\n\nexport class PrimaryDetails {\n    stationId: number;\n    orderId: string;\n    campaignStartDate: string;\n    campaignEndDate: string;\n    og: { id: number; text: string };\n    campaignId: number;\n    orderMeasurementType: string;\n    timeZone: string;\n    lastSunsetDateAndTimeAndTimezone: string;\n    latestConfirmedRevNo: number;\n    postAirDate: string;\n    postEvalDatesMessages: string[];\n    proxiedUserId: number | null;\n    orderInfo: OrderInfo;\n    clientInfo: ClientInfo;\n    revenueInfo: RevenueInfo;\n    proxyPeriod: ProxyPeriod | null;\n    estimatePriorities: ESTIMATEPRIORITIES[] | string[];\n\n    constructor(obj: any, isBuyerInterface: boolean = false) {\n        this.stationId = obj.StationId;\n        this.orderId = obj.OrderInfo.StationOrderId;\n        this.campaignStartDate = dayjs(obj.OrderInfo.FlightStartDate, \"MM/DD/YY\").format(\"MM/DD/YYYY\");\n        this.campaignEndDate = dayjs(obj.OrderInfo.FlightEndDate, \"MM/DD/YY\").format(\"MM/DD/YYYY\");\n        this.og = { id: obj?.OgId, text: obj?.OgName };\n        this.campaignId = obj.CampaignId;\n        this.orderMeasurementType = obj.OrderMeasurementType;\n        this.timeZone = obj.TimeZone;\n        this.lastSunsetDateAndTimeAndTimezone = obj.LastSunsetAt;\n        this.latestConfirmedRevNo = obj.LatestConfirmedRevNo;\n        this.postAirDate = obj.PostAirDate;\n        this.postEvalDatesMessages = obj.PostEvalDatesMessages;\n        this.proxiedUserId = obj.UserId;\n        this.orderInfo = new OrderInfo(obj.OrderInfo);\n        this.clientInfo = new ClientInfo(obj.ClientInfo);\n        this.revenueInfo = new RevenueInfo(obj.RevenueInfo);\n        if (this.orderInfo.orderType === OrderTypeConstants.UD_LIABILITY_NOT_SET) {\n            this.revenueInfo.booked.grp = \"-\";\n            this.revenueInfo.booked.imps = \"-\";\n            this.revenueInfo.orderedToDate.grp = \"-\";\n            this.revenueInfo.orderedToDate.imps = \"-\";\n        }\n        this.proxyPeriod = obj.ProxyPeriod != null ? new ProxyPeriod(obj.ProxyPeriod) : null;\n        this.estimatePriorities = obj.EstimatePriorities;\n    }\n}\n\nexport class Group {\n    group: KeyValueInfo[] = [];\n    constructor(...groupArr: any) {\n        groupArr.forEach((group: KeyValueInfo) => {\n            this.group.push(group);\n        });\n    }\n}\n\nexport class KeyValueInfo {\n    name: string;\n    value: any;\n    nameClass: string;\n    valueClass: string;\n    isSpotGrpValue: boolean;\n    noBorderBottom: boolean;\n    nameColspan: number;\n    valueColspan: number;\n    tooltipMessageBesideName: string | null;\n    showLink: boolean;\n    constructor(\n        name: string,\n        value: string,\n        nameClass: string,\n        valueClass: string,\n        isSpotGrpValue = false,\n        nameColspan = 1,\n        valueColspan = 1,\n        noBorderBottom = false,\n        tooltipMessageBesideName: string | null = null,\n        showLink = false,\n    ) {\n        this.name = name;\n        this.value = value;\n        this.nameClass = nameClass;\n        this.valueClass = valueClass;\n        this.isSpotGrpValue = isSpotGrpValue;\n        this.nameColspan = nameColspan;\n        this.valueColspan = valueColspan;\n        this.noBorderBottom = noBorderBottom;\n        this.showLink = showLink;\n        this.tooltipMessageBesideName = tooltipMessageBesideName;\n    }\n}\n\nexport class CollapseKeyValueInfo {\n    name: string;\n    value: string;\n    firstValue?: string;\n    secondValue?: string;\n    className: string;\n    showLink: boolean;\n    constructor(\n        name: string,\n        value: string,\n        className: string = null,\n        showLink: boolean = false,\n        firstValue: string = null,\n        secondValue: string = null,\n    ) {\n        this.name = name;\n        this.value = value;\n        this.className = className;\n        this.showLink = showLink;\n        this.firstValue = firstValue;\n        this.secondValue = secondValue;\n    }\n}\n","export class AudiencePerformanceConstant {\n    // colors\n    static readonly bookedInQuaterColor = \"#9b1b93\";\n    static readonly airedToDateColor = \"#d780d1\";\n    static readonly postedToDateColor = \"#8db72e\";\n    static readonly postedToDateWithAduColor = \"#426000\";\n    static readonly whiteColor = \"#fff\";\n    static readonly noDataColor = \"#d8d8d8\";\n    static readonly radiantBookedInQuarterColor = \"#CB04A5\";\n    static readonly radiantPostedToDateColor = \"#52D1DC\";\n    static readonly radiantPostedToDateWithAduColor = \"#1C8A94\";\n\n    // unit constants\n    static readonly impressionUnit = \"IMP('000)\";\n    static readonly impressionName = \"Impression\";\n    static readonly grpUnit = \"GRP\";\n    static readonly spotsUnit = \"Spots\";\n    static readonly adus = \"ADUs \";\n    static readonly impressionUnitKey = `${AudiencePerformanceConstant.impressionUnit}:`;\n    static readonly grpUnitKey = `${AudiencePerformanceConstant.grpUnit}:`;\n\n    // keywords\n    static readonly booked = \"Booked\";\n    static readonly posted = \"Posted\";\n    static readonly toDate = \"to date\";\n    static readonly throughDate = \"through date\";\n    static readonly total = \"Total\";\n\n    // audience delivery card\n    static readonly audienceDelivery = \"Audience Delivery\";\n    static readonly audiencePerformance = \"Audience Performance\";\n    // static readonly commercialOrderWithRating = \"Commercial orders with ratings/impressions\";\n    static readonly paidOrderWithAudience = \"Orders that require audience posting\";\n    static readonly audienceDeliveredThroughDate = \"% of Audience $Value delivered through \";\n    static readonly bookedInQuater = `${AudiencePerformanceConstant.booked} in the quarter`;\n    static readonly postedToDate = `${AudiencePerformanceConstant.posted} ${AudiencePerformanceConstant.toDate} `;\n    // eslint-disable-next-line max-len\n    static readonly postedThroughDate = `${AudiencePerformanceConstant.posted} ${AudiencePerformanceConstant.throughDate} `;\n    static readonly postedThrough = `${AudiencePerformanceConstant.posted} through`;\n    static readonly postedProjection = `${AudiencePerformanceConstant.posted} Projection`;\n    // eslint-disable-next-line max-len\n    static readonly totalSpotsKeyUnit = `${AudiencePerformanceConstant.total} ${AudiencePerformanceConstant.spotsUnit.toLowerCase()}: `;\n    static readonly noPostedData = \"No Posted data*\";\n    static readonly noAiredData = \"No Aired data*\";\n    static readonly airedThrough = \"Booked through \";\n    static readonly inTheQuater = \"in the quarter\";\n    static readonly inTheSelectedPeriod = \"in the selected period\";\n    static readonly withAdus = \" (With ADUs)\";\n    static readonly NoAdus = \" (No ADUs)\";\n    static readonly noData = \" -\";\n    static readonly scheduled = \"Scheduled\";\n    static readonly postedDataNotFound = \"Posted data not found\";\n    static readonly postedDataNotFoundDatesMessage = \"Posted data could not be found for the following dates\";\n    static readonly postedDataNotFoundDemosMessage =\n        \"Posted data could not be found for one or more days of the following demographics\";\n    static readonly InfoData = \"Info-Value\";\n    static readonly udLiability = \"UD LIABILITY\";\n    static readonly udPercentageDelivered = \"% Delivered:\";\n\n    static readonly underDeliveryAtHundredPercent = \"UD (@ 100%)\";\n    static readonly unPaidOverDelivery = \"UNPAID OD (> 100%)\";\n    static readonly underDeliveryAtThreshold = \"UD (@ THRESHOLD)\";\n    static readonly projectedUnderDeliveryAtHundredPercent = \"PROJ. UD (@ 100%)\";\n    static readonly overDeliveryProjection = \"PROJ. UNPAID OD (> 100%)\";\n    static readonly projectedUnderDeliveryAtThreshold = \"PROJ. UD (@ THRESHOLD)\";\n    static readonly carryForwardUnderDeliveryLiability = \"C/F UD LIABILITY\";\n    static readonly podBillingReduction = \"PoD BILLING REDUCTION\";\n    static readonly projectedCFunderDeliveryLiability = \"PROJ. C/F UD LIABILITY\";\n    static readonly projectedPodBillingReduction = \"PROJ. PoD BILLING REDUCTION\";\n    static readonly deliveryThresholdHeading = \"DELIVERY THRESHOLD %\";\n\n    static readonly udLiabilityTooltipForDashboardCard =\n        // eslint-disable-next-line max-len\n        \"This under-delivery is a liability to the station since it is below the permitted audience delivery limit as set in the business rules for the respective orders.\";\n    static readonly udLiabilityTooltipPartOne =\n        \"This under-delivery is a liability to the station since it is below the permitted audience delivery limit (\";\n    static readonly udLiabilityTooltipPartTwo = \"%) as set in the business rules for this order.\";\n}\n","import { AnnaNumberFormatService } from \"@annalib/anna-core\";\nimport { IdText, KeyValue, SingleSelectIdText, TypeOfCalendar } from \"@annalib/anna-design-components-lib\";\nimport dayjs from \"dayjs\";\nimport { cloneDeep } from \"lodash-es\";\n\nimport { OrderType } from \"../../order-listing/models/order-listing.model\";\nimport { AudiencePerformanceConstant } from \"../constants/audiencePerformance.constant\";\n\nexport interface MissingPostedDataRequestPayload {\n    StationId: number;\n    Demographs: string[];\n    StartDate: string;\n    EndDate: string;\n    PostingType: PostingTypeEnum;\n    MeasurementAgencyType: string;\n}\nexport enum PostingTypeEnum {\n    LIVE_PLUS_SAME_DAY = \"LS\",\n    LIVE_PLUS_ONE_DAY = \"L1\",\n    LIVE_PLUS_THREE_DAYS = \"L3\",\n    LIVE_PLUS_SEVEN_DAYS = \"L7\",\n}\nexport class LegendData {\n    legendName: string;\n    legendDotColor: string;\n    legendMetaData: KeyValue[];\n    constructor(name: string, color: string, data: KeyValue[]) {\n        this.legendName = name;\n        this.legendDotColor = color;\n        this.legendMetaData = data;\n    }\n}\n\nexport class PostedBifurcationData {\n    heading: string;\n    value: string;\n    keyValue: KeyValue[];\n    constructor(heading: string, value: string, keyValue: KeyValue[]) {\n        this.heading = heading;\n        this.value = value;\n        this.keyValue = keyValue;\n    }\n}\n\nexport class Dataset {\n    data: number[];\n    measurementName?: string;\n    tooltipDisplayValue: string[];\n    tooltipImpsOrGrpDisplay?: string[];\n    label: string;\n    fill: boolean = true;\n    borderColor: string;\n    backgroundColor: string;\n    hoverBackgroundColor: string;\n    hoverBorderColor: string;\n    hoverBorderCapStyle: string;\n    pointBorderColor: string;\n    pointBackgroundColor: string;\n    pointHoverBackgroundColor: string;\n    pointHoverBorderColor: string;\n    borderRadius: number;\n    borderDash: number[];\n    borderWidth: any;\n    order: number;\n\n    constructor(\n        measurementName: string,\n        value: number[],\n        displayValue: string[],\n        displayImpsOrGrp: string[],\n        borderColor: string,\n        backgroundColor: string,\n        borderRadius: number,\n        order: number,\n        borderDash: number[] = [],\n        borderWidth: number = 2,\n    ) {\n        this.measurementName = measurementName;\n        this.data = value;\n        this.tooltipDisplayValue = displayValue;\n        this.tooltipImpsOrGrpDisplay = displayImpsOrGrp;\n        this.pointHoverBackgroundColor = borderColor;\n        this.pointHoverBorderColor = borderColor;\n        this.borderColor = borderColor;\n        this.backgroundColor = backgroundColor;\n        this.borderRadius = borderRadius;\n        this.borderWidth = borderWidth;\n        this.borderDash = borderDash;\n        this.order = order;\n    }\n}\n\nexport interface NewChartJSType {\n    labels: string[];\n    datasets: Dataset[];\n}\n\nexport interface PeriodSelectionPopUp {\n    isEntireFlightPeriod?: boolean;\n    calendarType: TypeOfCalendar;\n    periodMode: string;\n    year: string | null;\n    month: any | null;\n    quarter: any | null;\n    startDate: string | null;\n    endDate: string | null;\n}\n\nexport interface ICalendarTypeResponse {\n    BroadcastQuarterYear: IYearQuarter[];\n    FiscalQuarterYear: IYearQuarter[];\n}\n\nexport interface IYearQuarter {\n    Year: number;\n    Quarters: IQuarter[];\n}\n\nexport interface IQuarter {\n    DisplayDate: string;\n    StartDate: string;\n    EndDate: string;\n    IsCurrentQuarter: boolean;\n}\n\nexport class AudienceImpressionsGraphData {\n    date: string[] = [];\n    grp: number[] = [];\n    impression: number[] = [];\n\n    valueDisplay: string[] = [];\n    grpDisplay: string[] = [];\n    impressionDisplay: string[] = [];\n    constructor(arr: ChartDataObjects[]) {\n        if (arr) {\n            arr.forEach((data: ChartDataObjects) => {\n                this.date.push(data.Date);\n                this.impression.push(data.Impressions);\n                this.grp.push(data.Grps);\n\n                this.impressionDisplay.push(data.ImpressionsDisplay);\n                this.valueDisplay.push(data.ValueDisplay);\n                this.grpDisplay.push(data.GrpsDisplay);\n            });\n        }\n    }\n}\n\ninterface ChartDataObjects {\n    Date: string;\n    Grps: number;\n    GrpsDisplay: string;\n    Impressions: number;\n    ImpressionsDisplay: string;\n    Value: number;\n    ValueDisplay: string;\n}\n\nexport class AudienceDeliveryCardInfo {\n    udLiabilityValueDisplay: string;\n    udLiablityImpressionDisplay: string;\n    udLiabilityGRPDisplay: string;\n    udLiabilitypercentageDelivered: string;\n    orderType: OrderType;\n    isPaidOrdersPresent: boolean;\n    audienceDeliveredToDateDisplay: string;\n    projectedAudienceDeliveredToDateDisplay: string;\n    bookedImpressionDisplay: string;\n    bookedGrpDisplay: string;\n    bookedValueDisplay: string;\n    bookedSpotsDisplay: string;\n    daypartGroup: SingleSelectIdText[];\n    preApprovedSpotsDisplay: string;\n    buyerApprovedSpotsDisplay: string;\n    airedImpressionDisplay: string;\n    airedGrpDisplay: string;\n    airedValueDisplay: string;\n    airedSpotsDisplay: string;\n    postedImpressionDisplay: string;\n    postedGrpDisplay: string;\n    postedValueDisplay: string;\n    postedWithoutAduSpotsDisplay: string;\n    bookedAndAduImpressionDisplay: string;\n    bookedAndAduGrpDisplay: string;\n    bookedAndAduValue: string;\n    postedWithAduSpotsDisplay: string;\n    udImpactsToDisplay: string;\n\n    postedProjectionNoAduSpotsDisplay: string;\n    postedProjectionNoAduValueDisplay: string;\n    postedProjectionNoAduGrpDisplay: string;\n    postedProjectionNoAduImpressionDisplay: string;\n\n    postedProjectionAduSpotsDisplay: string;\n    postedProjectionAduValueDisplay: string;\n    postedProjectionAduGrpDisplay: string;\n    postedProjectionAduImpressionDisplay: string;\n\n    scheduledAduImpressionDisplay: string;\n    scheduledAduGrpDisplay: string;\n    scheduledAduValueDisplay: string;\n    scheduledAduSpotsDisplay: string;\n\n    annaAduImpressionDisplay: string;\n    annaAduGrpDisplay: string;\n    annaAduValueDisplay: string;\n    annaAduSpotsDisplay: string;\n\n    userAduImpressionDisplay: string;\n    userAduGrpDisplay: string;\n    userAduValueDisplay: string;\n    userAduSpotsDisplay: string;\n\n    postedAduImpressionDisplay: string;\n    postedAduGrpDisplay: string;\n    postedAduValueDisplay: string;\n    postedAduSpotsDisplay: string;\n\n    postedToDate: string;\n    airedToDate: string;\n\n    audienceBookedData: AudienceImpressionsGraphData;\n    audiencePostedNoAduData: AudienceImpressionsGraphData;\n    audiencePostedwithAduData: AudienceImpressionsGraphData;\n    audienceAiredData: AudienceImpressionsGraphData;\n    projectionWithAduData: AudienceImpressionsGraphData;\n    projectionWithoutAduData: AudienceImpressionsGraphData;\n    // postedReportUpdatedTillDate: string;\n\n    demographs: string[];\n\n    //  underDelivery: ODUD;\n    overDelivery: ODUD;\n    // underDeliveryLiability: ODUD;\n    // underDeliveryProjection: ODUD;\n    overDeliveryProjection: ODUD;\n    // underDeliveryProjectionLiability: ODUD;\n\n    //  deliveryThresholdPercent: string;\n    // projectedDeliveryThresholdPercent: string;\n    udImpacts: string;\n    projectedUdImpacts: string;\n    underDeliveryAtHundredPercent: ODUD;\n    underDeliveryAtThreshold: ODUD;\n    carryForwardUnderDeliveryLiability: ODUD;\n    podBillingReduction: ODUD;\n    projectedUnderDeliveryAtHundredPercent: ODUD;\n    projectedUnderDeliveryAtThreshold: ODUD;\n    projectedCFunderDeliveryLiability: ODUD;\n    projectedPodBillingReduction: ODUD;\n\n    udLiabilityMetricDisplay: string;\n    udLiabilityMetricValueDisplay: string;\n    bizRulesAudienceDeliveryLimit: number;\n    isPoDOrder: boolean;\n    providedAdusValueForTooltipDisplay: string;\n\n    // keys added at UI\n    bookedInTheSelectedPeriodDataForChart: AudienceImpressionsGraphData;\n    projectionWithAduDataForChart: AudienceImpressionsGraphData;\n    projectionWithoutAduDataForChart: AudienceImpressionsGraphData;\n    postedReportUpdatedTillDateFormatted: string;\n    dontPlotPostedReportUpdatedTillDateInGraph: boolean;\n    PROJECTIONWITHADUDATAONLASTPOSTEDDATE: ChartDataObjects;\n    PROJECTIONWITHOUTADUDATAONLASTPOSTEDDATE: ChartDataObjects;\n\n    constructor(obj: any, isDashboard: boolean = false) {\n        this.udLiabilityMetricDisplay = obj?.UdLiabilityMetricDisplay;\n        this.udLiabilityMetricValueDisplay = obj?.UdLiabilityValueDisplay;\n\n        this.udLiabilitypercentageDelivered = obj?.UdLiabilityDeliveredPercentDisplay;\n        this.orderType = obj?.OrderType;\n        this.isPaidOrdersPresent = obj?.IsPaidOrdersPresent;\n        this.audienceDeliveredToDateDisplay = obj.DeliveryPercentAtThresholdDisplay || \"-\";\n        this.projectedAudienceDeliveredToDateDisplay = obj.ProjectedDeliveryPercentAtThresholdDisplay || \"-\";\n        this.udImpactsToDisplay = obj.UdImpacts;\n\n        this.bookedImpressionDisplay = obj.BookedImpressionDisplay;\n        this.bookedGrpDisplay = obj.BookedGrpDisplay;\n        this.bookedValueDisplay = obj.BookedValueDisplay;\n        this.bookedSpotsDisplay = obj.BookedSpotsDisplay;\n        this.preApprovedSpotsDisplay = obj.pre_approved_spots_display;\n        this.buyerApprovedSpotsDisplay = obj.buyer_approved_spots_display;\n        this.postedToDate = obj.PostedWithoutAduAudienceData?.PostedToDate || \"-\";\n        this.providedAdusValueForTooltipDisplay = obj.ProvidedAdusValue;\n        this.isPoDOrder = obj.IsPayForPerformanceOrder;\n        // this.daypartGroup.push(new SingleSelectIdText(0,\"All\",null,null,null,true))\n        // obj.DaypartGroups.forEach((group:any)=>{\n        //   this.daypartGroup.push(new SingleSelectIdText(group.Id, group.GroupsDisplayText, null, null, null, group.IsSelected))\n        // })\n        this.airedImpressionDisplay = obj.AiredImpressionDisplay;\n        this.airedGrpDisplay = obj.AiredGrpDisplay;\n        this.airedValueDisplay = obj.AiredValueDisplay;\n        this.airedSpotsDisplay = obj.AiredSpotsDisplay;\n        this.airedToDate = obj.AiredAudienceData.AiredToDate;\n\n        this.postedImpressionDisplay = obj.PostedWithoutAduImpressionDisplay;\n        this.postedGrpDisplay = obj.PostedWithoutAduGrpDisplay;\n        this.postedValueDisplay = obj.PostedWithoutAduValueDisplay;\n        this.postedWithoutAduSpotsDisplay = obj.PostedWithoutAduSpotsDisplay; // used\n\n        this.bookedAndAduImpressionDisplay = obj.PostedWithAduImpressionDisplay;\n        this.bookedAndAduGrpDisplay = obj.PostedWithAduGrpDisplay;\n        this.bookedAndAduValue = obj.PostedWithAduValueDisplay;\n        this.postedWithAduSpotsDisplay = obj.PostedWithAduSpotsDisplay; // used\n\n        this.postedProjectionNoAduSpotsDisplay = obj.PostedProjectionNoAduSpotsDisplay;\n        this.postedProjectionNoAduValueDisplay = obj.PostedProjectionNoAduValueDisplay;\n        this.postedProjectionNoAduGrpDisplay = obj.PostedProjectionNoAduGrpDisplay;\n        this.postedProjectionNoAduImpressionDisplay = obj.PostedProjectionNoAduImpressionDisplay;\n\n        this.postedProjectionAduSpotsDisplay = obj.PostedProjectionAduSpotsDisplay;\n        this.postedProjectionAduValueDisplay = obj.PostedProjectionAduValueDisplay;\n        this.postedProjectionAduGrpDisplay = obj.PostedProjectionAduGrpDisplay;\n        this.postedProjectionAduImpressionDisplay = obj.PostedProjectionAduImpressionDisplay;\n\n        this.scheduledAduImpressionDisplay = obj.ScheduledAduImpressionDisplay;\n        this.scheduledAduGrpDisplay = obj.ScheduledAduGrpDisplay;\n        this.scheduledAduValueDisplay = obj.ScheduledAduValueDisplay;\n        this.scheduledAduSpotsDisplay = obj.ScheduledAduSpotsDisplay;\n\n        this.annaAduImpressionDisplay = obj.AnnaAduImpressionDisplay;\n        this.annaAduGrpDisplay = obj.AnnaAduGrpDisplay;\n        this.annaAduValueDisplay = obj.AnnaAduValueDisplay;\n        this.annaAduSpotsDisplay = obj.AnnaAduSpotsDisplay;\n\n        this.userAduImpressionDisplay = obj.UserAduImpressionDisplay;\n        this.userAduGrpDisplay = obj.UserAduGrpDisplay;\n        this.userAduValueDisplay = obj.UserAduValueDisplay;\n        this.userAduSpotsDisplay = obj.UserAduSpotsDisplay;\n\n        this.postedAduImpressionDisplay = obj.PostedAduImpressionDisplay;\n        this.postedAduGrpDisplay = obj.PostedAduGrpDisplay;\n        this.postedAduValueDisplay = obj.PostedAduValueDisplay;\n        this.postedAduSpotsDisplay = obj.PostedAduSpotsDisplay;\n\n        this.audienceBookedData = new AudienceImpressionsGraphData(obj.BookedAudienceData.Data);\n        this.audiencePostedNoAduData = obj.PostedWithoutAduAudienceData\n            ? new AudienceImpressionsGraphData(obj.PostedWithoutAduAudienceData.Data)\n            : null;\n        this.audienceAiredData = new AudienceImpressionsGraphData(obj.AiredAudienceData.Data);\n        this.audiencePostedwithAduData = obj.PostedWithAduAudienceData\n            ? new AudienceImpressionsGraphData(obj.PostedWithAduAudienceData.Data)\n            : null;\n        this.projectionWithAduData = obj.PostedProjectionWithAduData\n            ? new AudienceImpressionsGraphData(obj.PostedProjectionWithAduData.Data)\n            : null;\n        this.projectionWithoutAduData = obj.PostedProjectionWithoutAduData\n            ? new AudienceImpressionsGraphData(obj.PostedProjectionWithoutAduData.Data)\n            : null;\n\n        this.bizRulesAudienceDeliveryLimit = obj.DeliveryThresholdPercent;\n        // this.postedReportUpdatedTillDate = obj.posted_report_updated_till_date;\n        this.demographs = cloneDeep(obj.Demographs);\n        this.projectedUdImpacts = obj.ProjectionUdImpacts;\n\n        // this.deliveryThresholdPercent = obj.deliveryThresholdPercent || \"-\";\n        // this.projectedDeliveryThresholdPercent = obj.projected_delivery_threshold_percent || \"-\";\n\n        this.underDeliveryAtHundredPercent = obj.UnderDelivery\n            ? new ODUD(obj.UnderDelivery, AudiencePerformanceConstant.underDeliveryAtHundredPercent, null, isDashboard)\n            : null;\n        this.overDelivery = obj.OverDelivery\n            ? new ODUD(obj.OverDelivery, AudiencePerformanceConstant.unPaidOverDelivery, null, isDashboard)\n            : null;\n\n        this.underDeliveryAtThreshold = obj.UnderDeliveryAtThreshold\n            ? new ODUD(\n                  obj.UnderDeliveryAtThreshold,\n                  AudiencePerformanceConstant.underDeliveryAtThreshold,\n                  null,\n                  isDashboard,\n              )\n            : null;\n        this.projectedUnderDeliveryAtHundredPercent = obj.UnderDeliveryProjection\n            ? new ODUD(\n                  obj.UnderDeliveryProjection,\n                  AudiencePerformanceConstant.projectedUnderDeliveryAtHundredPercent,\n                  null,\n                  isDashboard,\n              )\n            : null;\n        this.overDeliveryProjection = obj.OverDeliveryProjection\n            ? new ODUD(\n                  obj.OverDeliveryProjection,\n                  AudiencePerformanceConstant.overDeliveryProjection,\n                  null,\n                  isDashboard,\n              )\n            : null;\n        this.projectedUnderDeliveryAtThreshold = obj.ProjectedUnderDeliveryAtThreshold\n            ? new ODUD(\n                  obj.ProjectedUnderDeliveryAtThreshold,\n                  AudiencePerformanceConstant.projectedUnderDeliveryAtThreshold,\n                  null,\n                  isDashboard,\n              )\n            : null;\n\n        this.carryForwardUnderDeliveryLiability = obj.CfUdLiability\n            ? new ODUD(\n                  obj.CfUdLiability,\n                  AudiencePerformanceConstant.carryForwardUnderDeliveryLiability,\n                  null,\n                  isDashboard,\n              )\n            : null;\n        this.podBillingReduction = obj.PodBillingReduction\n            ? new ODUD(obj.PodBillingReduction, AudiencePerformanceConstant.podBillingReduction, null, isDashboard)\n            : null;\n\n        this.projectedCFunderDeliveryLiability = obj.ProjectedCfUdLiability\n            ? new ODUD(\n                  obj.ProjectedCfUdLiability,\n                  AudiencePerformanceConstant.projectedCFunderDeliveryLiability,\n                  null,\n                  isDashboard,\n              )\n            : null;\n        this.projectedPodBillingReduction = obj.ProjectedPodBillingReduction\n            ? new ODUD(\n                  obj.ProjectedPodBillingReduction,\n                  AudiencePerformanceConstant.projectedPodBillingReduction,\n                  null,\n                  isDashboard,\n              )\n            : null;\n\n        // new keys for chart lines\n        this.bookedInTheSelectedPeriodDataForChart = new AudienceImpressionsGraphData(obj.BookedAudienceData.Data);\n\n        this.postedReportUpdatedTillDateFormatted =\n            this.postedToDate && this.postedToDate !== \"-\" ? dayjs(this.postedToDate).format(\"YYYY-MM-DD\") : \"-\";\n        this.dontPlotPostedReportUpdatedTillDateInGraph =\n            obj?.PostedWithAduAudienceData?.Data?.length === 0 ||\n            obj.BookedAudienceData.Data.findIndex((n: any) => n.Date === this.postedReportUpdatedTillDateFormatted) ===\n                -1;\n\n        const projectionWithAduDataForChart = obj.PostedProjectionWithAduData\n            ? cloneDeep(obj.PostedProjectionWithAduData.Data)\n            : null;\n        const projectionWithoutAduDataForChart = obj.PostedProjectionWithoutAduData\n            ? cloneDeep(obj.PostedProjectionWithoutAduData.Data)\n            : null;\n        this.PROJECTIONWITHADUDATAONLASTPOSTEDDATE = projectionWithAduDataForChart\n            ? projectionWithAduDataForChart.filter((n: any) => n.Date === this.postedReportUpdatedTillDateFormatted)[0]\n            : null;\n        this.PROJECTIONWITHOUTADUDATAONLASTPOSTEDDATE = projectionWithoutAduDataForChart\n            ? projectionWithoutAduDataForChart.filter(\n                  (n: any) => n.Date === this.postedReportUpdatedTillDateFormatted,\n              )[0]\n            : null;\n\n        if (this.dontPlotPostedReportUpdatedTillDateInGraph) {\n            this.projectionWithAduDataForChart = new AudienceImpressionsGraphData(\n                projectionWithAduDataForChart\n                    ? projectionWithAduDataForChart.filter(\n                          (n: any) => n.Date !== this.postedReportUpdatedTillDateFormatted,\n                      )\n                    : [],\n            );\n            this.projectionWithoutAduDataForChart = new AudienceImpressionsGraphData(\n                projectionWithoutAduDataForChart\n                    ? projectionWithoutAduDataForChart.filter(\n                          (n: any) => n.Date !== this.postedReportUpdatedTillDateFormatted,\n                      )\n                    : [],\n            );\n        } else {\n            this.projectionWithAduDataForChart = new AudienceImpressionsGraphData(projectionWithAduDataForChart || []);\n            this.projectionWithoutAduDataForChart = new AudienceImpressionsGraphData(\n                projectionWithoutAduDataForChart || [],\n            );\n        }\n    }\n}\nexport class OverOrUnderDeliveryClass {\n    value: string;\n    orders: number;\n    impression: string;\n    grp: number;\n    percentage: number;\n    constructor(obj: any, isDashboardAudPerformance: boolean = false) {\n        this.value = isDashboardAudPerformance\n            ? AnnaNumberFormatService.GetRoundedValueWithUnits(obj.Value)\n            : AnnaNumberFormatService.GetRoundedValuesWithoutUnits(obj.Value);\n        this.orders = obj.Orders == null || obj.Orders === \"-\" || obj.Orders === 0 ? \"-\" : obj.Orders;\n        if (obj.Impression == null || obj.Impression === \"-\" || obj.Impression === 0) {\n            this.impression = \"-\";\n        } else {\n            this.impression = isDashboardAudPerformance\n                ? AnnaNumberFormatService.GetRoundedValueWithUnits(obj.Impression)\n                : AnnaNumberFormatService.GetRoundedValuesWithoutUnits(obj.Impression);\n        }\n\n        this.grp = obj.Grp == null || obj.Grp === \"-\" || obj.Grp === 0 ? \"-\" : obj.Grp;\n        this.percentage = obj.Percent;\n    }\n}\n\nexport class ODUD {\n    public key: string;\n    tooltipBesideKey: string | null;\n    public value: OverOrUnderDeliveryClass;\n    constructor(\n        obj: any,\n        key: string,\n        tooltipBesideKey: string | null = null,\n        isDashboardAudPerformance: boolean = false,\n    ) {\n        this.key = key;\n        this.tooltipBesideKey = tooltipBesideKey;\n        this.value =\n            obj.Value !== 0 || obj.Impression !== 0\n                ? new OverOrUnderDeliveryClass(obj, isDashboardAudPerformance)\n                : undefined;\n    }\n}\n\nexport interface AnnotatedLine {\n    type: string;\n    borderColor: string;\n    borderWidth: number;\n    xMax?: number;\n    xMin?: number;\n    yMax?: number;\n    yMin?: number;\n    borderDash?: number[];\n    order: number;\n}\n\nexport type CalendarQuarterYear = { calendarType: string; quarter: IdText; year: IdText } | null;\nexport type QuarterFilterSubjectResponseType = {\n    filterData: ICalendarTypeResponse;\n    selectedFilter: CalendarQuarterYear;\n};\nexport type DateAndAllKeyType = {\n    isEntireFlightPeriod: boolean;\n    startDate: string;\n    endDate: string;\n    selectedCalendarType?: TypeOfCalendar;\n};\n","import { NgClass, NgFor, NgIf, NgStyle, NgTemplateOutlet, UpperCasePipe } from \"@angular/common\";\nimport {\n    ChangeDetectionStrategy,\n    Component,\n    EventEmitter,\n    Input,\n    input,\n    OnChanges,\n    OnInit,\n    Output,\n    SimpleChanges,\n    TemplateRef,\n    ViewChild,\n} from \"@angular/core\";\nimport { Router } from \"@angular/router\";\nimport {\n    AnnaFilterService,\n    AnnaGlobalConfigService,\n    ICustomMultiSelect,\n    ICustomSingleSelect,\n    INgSelectSettings,\n} from \"@annalib/anna-core\";\nimport {\n    AnnaDesignComponentsLibModule,\n    BreadcrumbsService,\n    GenericMessageBoxTheme,\n    IdText,\n    KeyValue,\n    MeasurementType,\n    MessageBoxData,\n    MissingPostedData,\n    MultiSelectIdText,\n    SingleSelectIdText,\n    ToggleComponent,\n} from \"@annalib/anna-design-components-lib\";\nimport { NgbModal, NgbModalOptions, NgbModalRef, NgbTooltip } from \"@ng-bootstrap/ng-bootstrap\";\nimport { Chart } from \"chart.js\";\nimport annotationPlugin from \"chartjs-plugin-annotation\";\nimport dayjs from \"dayjs\";\nimport { cloneDeep } from \"lodash-es\";\n\nimport { LiabilityModalComponent } from \"../liability-modal/liability-modal.component\";\nimport { OrderTypeConstants } from \"../order-listing/models/order-listing.constant\";\nimport { OrderType } from \"../order-listing/models/order-listing.model\";\nimport { MeasurementAgencyInOrderSummary } from \"../primary-order-panel/models/primary-order-panel.model\";\nimport { AudiencePerformanceConstant } from \"./constants/audiencePerformance.constant\";\nimport {\n    AnnotatedLine,\n    AudienceDeliveryCardInfo,\n    AudienceImpressionsGraphData,\n    Dataset,\n    LegendData,\n    MissingPostedDataRequestPayload,\n    NewChartJSType,\n    PostedBifurcationData,\n} from \"./models/audiencePerformance.model\";\n\nChart.register(annotationPlugin);\n\n@Component({\n    selector: \"anna-feature-audience-performance\",\n    templateUrl: \"./audience-performance.component.html\",\n    styleUrls: [\"./audience-performance.component.scss\"],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [\n        NgIf,\n        AnnaDesignComponentsLibModule,\n        NgClass,\n        NgbTooltip,\n        NgFor,\n        NgStyle,\n        LiabilityModalComponent,\n        UpperCasePipe,\n        NgTemplateOutlet,\n        ToggleComponent,\n    ],\n})\nexport class AudiencePerformanceComponent implements OnInit, OnChanges {\n    measurementAgency = input<string>(null);\n    @Input() data: AudienceDeliveryCardInfo;\n    @Input() loading: boolean;\n    @Input() isImpression: boolean;\n    @Input() errorMessage: string;\n    @Input() chartClassName: string;\n    @Input() showDemographicInfo: boolean;\n    @Input() isAllQuarterSelected: boolean;\n    @Input() showHeadingAndDropdown: boolean;\n    @Input() missingPostedData: MissingPostedData;\n    @Input() metricType: MeasurementType = \"GRP\";\n    @Input() showProjection: boolean = true;\n    @Input() missingPostedDataPayload: MissingPostedDataRequestPayload;\n    @Input() isSingleOrder: boolean = false;\n    @Input() isCommercialOrder: boolean = false;\n    @Input() isBi: boolean = false;\n    @Input() toolTipMessage: string = \"\";\n    @Input() selectedOrderTypeId: string = null;\n    // @Input() audienceDeliveredThroughDateText: string = \"\";\n    @Input() isDeletedOrder: boolean;\n    @Input() showLiabilitySection: boolean;\n    @Input() isEditLiabilityAllowed: boolean;\n    @Input() metricTypeForPopup: string = null;\n    @Input() orderFilterDropdownData: SingleSelectIdText[] = [];\n    @Input() revClassDropdownData: MultiSelectIdText[] = [];\n    @Input() disableViewLink: boolean = false;\n    @Input() isNeededForRadiant: boolean = false;\n\n    @Output() filterApplied = new EventEmitter<IdText>();\n    @Output() showProjectionsToggled = new EventEmitter<boolean>();\n    @Output() saveLiabilityEvent = new EventEmitter<any>();\n    @Output() orderFilterChanged = new EventEmitter<any>();\n    @Output() revClassChanged = new EventEmitter<MultiSelectIdText[]>();\n    @Output() revClassDropdownOpenedEvent = new EventEmitter<MultiSelectIdText[]>();\n    OrderType = OrderType;\n    lineChartLabels: string[];\n    lineChartData: NewChartJSType;\n    lineChartColors: { borderColor: string; backgroundColor: string }[];\n    sizeOfChart: { height: string; width: string };\n    lineChartOptions: any;\n    toDisplayGraph: boolean;\n\n    graphType: { id: number; text: string }[];\n    selectedGraphType: { id: number; text: string };\n    metricDropdownOpened: boolean = false;\n    ngSelectConfig: INgSelectSettings;\n    barOrStackChartBorderRadius: number = 4;\n    borderDash: number[] = [4, 3];\n    constants: typeof AudiencePerformanceConstant;\n    postedDataNotFoundPopupMessage: string;\n\n    legendData: LegendData[];\n    toShowAiredToDatePercent: boolean;\n    aduData: PostedBifurcationData[];\n    grapghTypeDropdownConfig: ICustomSingleSelect;\n    udLiabilityData: any;\n    orderTypeForPopup: string;\n\n    @ViewChild(\"liabilityModal\") private editOrderTypeModal: TemplateRef<any>;\n    editModalReference: NgbModalRef;\n    ngbModalOptions: NgbModalOptions;\n    liabilityForPopup: any = null;\n    @Output() viewAudiencePerformanceClicked = new EventEmitter();\n    deleteOrderMessageData: MessageBoxData;\n    liabilityInfoMsg: MessageBoxData;\n    selectedOrderTypeFilter: SingleSelectIdText;\n    orderFilterDropdownConfig: ICustomSingleSelect;\n    revClassDropdownConfig: ICustomMultiSelect;\n    annaUserAdusData: PostedBifurcationData[] = [];\n    showAnnaAduSection: boolean = true;\n\n    MeasurementAgencyInOrderSummary = MeasurementAgencyInOrderSummary;\n\n    constructor(\n        private annaGlobalConfig: AnnaGlobalConfigService,\n        public annaFilterService: AnnaFilterService,\n        private router: Router,\n        private modalService: NgbModal,\n        private breadcrumbService: BreadcrumbsService,\n    ) {\n        this.setDropdownConfig();\n        this.setOrderFilterTypeDropdownConfig();\n        this.setRevClassDropdownConfig();\n        this.popupModalConfig();\n        this.setMessageData();\n    }\n\n    ngOnInit() {\n        Chart.register(annotationPlugin);\n        this.constants = AudiencePerformanceConstant;\n        this.graphType = [\n            { id: 1, text: this.constants.grpUnit },\n            { id: 2, text: this.constants.impressionUnit },\n        ];\n        this.sizeOfChart = {\n            height: \"13.75rem\",\n            width: \"100%\",\n        };\n        this.isImpression = this.isImpression === undefined ? false : this.isImpression;\n        this.toDisplayGraph = false;\n    }\n\n    setOrderTypeForPopUp(orderType: OrderType) {\n        if (orderType === OrderType.UD) {\n            this.orderTypeForPopup = OrderTypeConstants.UD;\n        } else if (orderType === OrderType.UD_LIABILITY_NOT_SET) {\n            this.orderTypeForPopup = OrderTypeConstants.UD_LIABILITY_NOT_SET;\n        } else if (orderType === OrderType.UD_LIABILITY_SET) {\n            this.orderTypeForPopup = OrderTypeConstants.UD_LIABILITY_SET;\n        }\n    }\n\n    ngOnChanges(changes: SimpleChanges) {\n        // toDisplayGraph unnecessary variable\n        if (this.data && changes.data && changes.data.currentValue) {\n            this.setDropdownActiveItem();\n            this.setLineChartData();\n            this.setOrderTypeForPopUp(this.data.orderType);\n            this.toDisplayGraph = true;\n            if (this.data.udLiabilityMetricDisplay !== \"-\") {\n                if (this.data.udLiabilityMetricDisplay === \"IMPRESSIONS\") {\n                    this.metricTypeForPopup = \"Impressions\";\n                } else if (this.data.udLiabilityMetricDisplay === \"RATINGS\") {\n                    this.metricTypeForPopup = \"Ratings\";\n                }\n                this.liabilityForPopup = this.data.udLiabilityMetricValueDisplay;\n            }\n        } else if (!this.data) {\n            this.toDisplayGraph = false;\n        }\n\n        if (changes.isImpression) {\n            if (this.data && this.data.orderType === OrderType.UD_LIABILITY_SET) {\n                this.isImpression = this.data.udLiabilityMetricDisplay.toLowerCase() === \"impressions\";\n            }\n            this.setLineChartData();\n        }\n\n        if (this.data && changes.showProjection) {\n            this.showOrHideProjectionData(this.showProjection);\n        }\n\n        if (changes.orderFilterDropdownData) {\n            this.selectedOrderTypeFilter = this.orderFilterDropdownData.find((item) => item.isSelected === true);\n        }\n        if (changes.selectedOrderTypeId) {\n            this.selectedOrderTypeFilter = this.orderFilterDropdownData?.find(\n                (item) => item.id.toString() === this.selectedOrderTypeId,\n            );\n        }\n    }\n\n    orderFilterSelected(orderFilterSelected: SingleSelectIdText) {\n        this.selectedOrderTypeFilter = orderFilterSelected;\n        this.orderFilterDropdownData.forEach((filter: SingleSelectIdText) => {\n            filter.isSelected = false;\n            if (filter.id === orderFilterSelected.id) {\n                filter.isSelected = true;\n            }\n        });\n        this.orderFilterChanged.emit(orderFilterSelected.id);\n        // this emitted event will refetch audience performance data for the filter applied\n    }\n\n    revClassDropdownOpened(revClassDropdownData: MultiSelectIdText[]) {\n        this.revClassDropdownOpenedEvent.emit(revClassDropdownData);\n    }\n    revClassSelected(revClassDropdownData: MultiSelectIdText[]) {\n        this.revClassChanged.emit(revClassDropdownData);\n    }\n    setDropdownActiveItem() {\n        if (this.showHeadingAndDropdown && !this.isNeededForRadiant) {\n            this.selectedGraphType = this.graphType[this.graphType.findIndex((n) => n.text === this.metricType)];\n            this.isImpression = this.selectedGraphType.id === 2;\n        }\n    }\n\n    graphTypeSelected(value: IdText) {\n        this.isImpression = value.id === 2;\n        this.setLineChartData();\n        this.toDisplayGraph = true;\n        this.filterApplied.emit(value);\n    }\n\n    setLineChartDataWithProjectedData() {\n        let bookedInTheSelectedPeriodValues: number[];\n        let postedProjectionWithAduImpsOrGrpValuesBeforeLastPostedDate: number[];\n        let postedProjectionWithoutAduImpsOrGrpValuesBeforeLastPostedDate: number[];\n        let postedProjectionWithAduImpsOrGrpValuesAfterLastPostedDate: number[];\n        let postedProjectionWithoutAduImpsOrGrpValuesAfterLastPostedDate: number[];\n\n        let bookedInTheSelectedPeriodTooltipImpsOrGrp: string[];\n        let postedProjctionWithAduTooltipImpsOrGrpBeforeLastPostedDate: string[];\n        let postedProjectionWithoutAduTooltipImpsOrGrpBeforeLastPostedDate: string[];\n        let postedProjctionWithAduTooltipImpsOrGrpAfterLastPostedDate: string[];\n        let postedProjectionWithoutAduTooltipImpsOrGrpAfterLastPostedDate: string[];\n\n        let measurementName: string;\n        this.lineChartLabels = [];\n        this.lineChartColors = [];\n        const backgroundColor = \"transparent\";\n\n        this.setGraphLegendData();\n        this.setAduBifurcationData();\n        this.setLiabilityData();\n\n        const nullArrayLength: number = this.returnNullArrayLength();\n        let removeObjectsCount = 0;\n\n        if (this.data.projectionWithAduData && this.data.audiencePostedwithAduData) {\n            removeObjectsCount = this.data.dontPlotPostedReportUpdatedTillDateInGraph\n                ? this.data.projectionWithAduData.date.length - this.data.audiencePostedwithAduData.date.length\n                : this.data.projectionWithAduData.date.length - this.data.audiencePostedwithAduData.date.length - 1;\n            if (removeObjectsCount <= 0) {\n                removeObjectsCount = this.data.projectionWithAduDataForChart.date.length * -1;\n            }\n        }\n\n        const projectionWithoutAduDataForChart: AudienceImpressionsGraphData = cloneDeep(\n            this.data.projectionWithoutAduDataForChart,\n        );\n        const projectionWithAduDataForChart: AudienceImpressionsGraphData = cloneDeep(\n            this.data.projectionWithAduDataForChart,\n        );\n\n        if (this.isImpression) {\n            measurementName = this.constants.impressionUnit;\n            bookedInTheSelectedPeriodTooltipImpsOrGrp =\n                this.data.bookedInTheSelectedPeriodDataForChart.impressionDisplay;\n            postedProjectionWithoutAduTooltipImpsOrGrpBeforeLastPostedDate =\n                projectionWithoutAduDataForChart.impressionDisplay.slice(0, removeObjectsCount * -1);\n            postedProjctionWithAduTooltipImpsOrGrpBeforeLastPostedDate =\n                projectionWithAduDataForChart.impressionDisplay.slice(0, removeObjectsCount * -1);\n            postedProjectionWithoutAduTooltipImpsOrGrpAfterLastPostedDate =\n                projectionWithoutAduDataForChart.impressionDisplay.slice(nullArrayLength);\n            postedProjctionWithAduTooltipImpsOrGrpAfterLastPostedDate =\n                projectionWithAduDataForChart.impressionDisplay.slice(nullArrayLength);\n\n            bookedInTheSelectedPeriodValues = this.data.bookedInTheSelectedPeriodDataForChart.impression;\n            postedProjectionWithoutAduImpsOrGrpValuesBeforeLastPostedDate =\n                projectionWithoutAduDataForChart.impression.slice(0, removeObjectsCount * -1);\n            postedProjectionWithAduImpsOrGrpValuesBeforeLastPostedDate = projectionWithAduDataForChart.impression.slice(\n                0,\n                removeObjectsCount * -1,\n            );\n            postedProjectionWithoutAduImpsOrGrpValuesAfterLastPostedDate =\n                projectionWithoutAduDataForChart.impression.slice(nullArrayLength);\n            postedProjectionWithAduImpsOrGrpValuesAfterLastPostedDate =\n                projectionWithAduDataForChart.impression.slice(nullArrayLength);\n        } else {\n            measurementName = this.constants.grpUnit;\n            bookedInTheSelectedPeriodTooltipImpsOrGrp = this.data.bookedInTheSelectedPeriodDataForChart.grpDisplay;\n            postedProjectionWithoutAduTooltipImpsOrGrpBeforeLastPostedDate =\n                projectionWithoutAduDataForChart.grpDisplay.slice(0, removeObjectsCount * -1);\n            postedProjctionWithAduTooltipImpsOrGrpBeforeLastPostedDate = projectionWithAduDataForChart.grpDisplay.slice(\n                0,\n                removeObjectsCount * -1,\n            );\n            postedProjectionWithoutAduTooltipImpsOrGrpAfterLastPostedDate =\n                projectionWithoutAduDataForChart.grpDisplay.slice(nullArrayLength);\n            postedProjctionWithAduTooltipImpsOrGrpAfterLastPostedDate =\n                projectionWithAduDataForChart.grpDisplay.slice(nullArrayLength);\n\n            bookedInTheSelectedPeriodValues = this.data.bookedInTheSelectedPeriodDataForChart.grp;\n            postedProjectionWithoutAduImpsOrGrpValuesBeforeLastPostedDate = projectionWithoutAduDataForChart.grp.slice(\n                0,\n                removeObjectsCount * -1,\n            );\n            postedProjectionWithAduImpsOrGrpValuesBeforeLastPostedDate = projectionWithAduDataForChart.grp.slice(\n                0,\n                removeObjectsCount * -1,\n            );\n            postedProjectionWithoutAduImpsOrGrpValuesAfterLastPostedDate =\n                projectionWithoutAduDataForChart.grp.slice(nullArrayLength);\n            postedProjectionWithAduImpsOrGrpValuesAfterLastPostedDate =\n                projectionWithAduDataForChart.grp.slice(nullArrayLength);\n        }\n\n        const bookedInTheSelectedPeriodData = new Dataset(\n            measurementName,\n            bookedInTheSelectedPeriodValues,\n            this.data.bookedInTheSelectedPeriodDataForChart.valueDisplay,\n            bookedInTheSelectedPeriodTooltipImpsOrGrp,\n            this.isNeededForRadiant ? this.constants.radiantBookedInQuarterColor : this.constants.bookedInQuaterColor,\n            backgroundColor,\n            this.barOrStackChartBorderRadius,\n            1,\n        );\n\n        const postedProjectionWithAduValuesBeforeLastPostedDate = cloneDeep(\n            this.data.projectionWithAduData\n                ? this.data.projectionWithAduData.valueDisplay.slice(0, removeObjectsCount * -1)\n                : [],\n        );\n        const postedProjectionWithoutAduValuesBeforeLastPostedDate = cloneDeep(\n            this.data.projectionWithoutAduData ? this.data.projectionWithoutAduData.valueDisplay : [],\n        ).slice(0, removeObjectsCount * -1);\n        const postedProjectionWithAduValuesAfterLastPostedDate = cloneDeep(\n            this.data.projectionWithAduData ? this.data.projectionWithAduData.valueDisplay : [],\n        ).slice(nullArrayLength);\n        const postedProjectionWithoutAduValuesAfterLastPostedDate = cloneDeep(\n            this.data.projectionWithoutAduData ? this.data.projectionWithoutAduData.valueDisplay : [],\n        ).slice(nullArrayLength);\n\n        const postedThroughWithoutAdusData = new Dataset(\n            measurementName,\n            postedProjectionWithoutAduImpsOrGrpValuesBeforeLastPostedDate,\n            postedProjectionWithoutAduValuesBeforeLastPostedDate,\n            postedProjectionWithoutAduTooltipImpsOrGrpBeforeLastPostedDate,\n            this.isNeededForRadiant ? this.constants.radiantPostedToDateColor : this.constants.postedToDateColor,\n            backgroundColor,\n            this.barOrStackChartBorderRadius,\n            2,\n        );\n\n        const postedThroughWithAduData = new Dataset(\n            measurementName,\n            postedProjectionWithAduImpsOrGrpValuesBeforeLastPostedDate,\n            postedProjectionWithAduValuesBeforeLastPostedDate,\n            postedProjctionWithAduTooltipImpsOrGrpBeforeLastPostedDate,\n            this.isNeededForRadiant\n                ? this.constants.radiantPostedToDateWithAduColor\n                : this.constants.postedToDateWithAduColor,\n            backgroundColor,\n            this.barOrStackChartBorderRadius,\n            3,\n        );\n\n        const nullArray = Array(nullArrayLength).fill(null);\n        const projectionWithAduData = new Dataset(\n            measurementName,\n            [...nullArray, ...postedProjectionWithAduImpsOrGrpValuesAfterLastPostedDate],\n            [...nullArray, ...postedProjectionWithAduValuesAfterLastPostedDate],\n            [...nullArray, ...postedProjctionWithAduTooltipImpsOrGrpAfterLastPostedDate],\n            this.constants.postedToDateWithAduColor,\n            backgroundColor,\n            this.barOrStackChartBorderRadius,\n            4,\n            this.borderDash,\n        );\n\n        const ProjectionWithoutAduData = new Dataset(\n            measurementName,\n            [...nullArray, ...postedProjectionWithoutAduImpsOrGrpValuesAfterLastPostedDate],\n            [...nullArray, ...postedProjectionWithoutAduValuesAfterLastPostedDate],\n            [...nullArray, ...postedProjectionWithoutAduTooltipImpsOrGrpAfterLastPostedDate],\n            this.constants.postedToDateColor,\n            backgroundColor,\n            this.barOrStackChartBorderRadius,\n            5,\n            this.borderDash,\n        );\n\n        this.lineChartData = {\n            datasets: [],\n            labels: [],\n        };\n        this.lineChartData.datasets.push(bookedInTheSelectedPeriodData);\n        this.lineChartData.datasets.push(postedThroughWithoutAdusData);\n        this.lineChartData.datasets.push(postedThroughWithAduData);\n        this.lineChartData.datasets.push(ProjectionWithoutAduData);\n        this.lineChartData.datasets.push(projectionWithAduData);\n\n        const dateFormat = this.isAllQuarterSelected ? \"MM/DD/YY\" : \"MM/DD\";\n        this.data.bookedInTheSelectedPeriodDataForChart.date.forEach((date: string) => {\n            this.lineChartLabels.push(dayjs(date).format(dateFormat));\n            this.lineChartData.labels.push(dayjs(date).format(dateFormat));\n        });\n\n        this.lineChartColors.push({\n            borderColor: this.isNeededForRadiant\n                ? this.constants.radiantBookedInQuarterColor\n                : this.constants.bookedInQuaterColor,\n            backgroundColor,\n        });\n        this.lineChartColors.push({\n            borderColor: this.isNeededForRadiant\n                ? this.constants.radiantPostedToDateColor\n                : this.constants.postedToDateColor,\n            backgroundColor,\n        });\n        this.lineChartColors.push({\n            borderColor: this.isNeededForRadiant\n                ? this.constants.radiantPostedToDateWithAduColor\n                : this.constants.postedToDateWithAduColor,\n            backgroundColor,\n        });\n        this.lineChartColors.push({\n            borderColor: this.isNeededForRadiant\n                ? this.constants.radiantPostedToDateColor\n                : this.constants.postedToDateColor,\n            backgroundColor,\n        });\n        this.lineChartColors.push({\n            borderColor: this.isNeededForRadiant\n                ? this.constants.radiantPostedToDateWithAduColor\n                : this.constants.postedToDateWithAduColor,\n            backgroundColor,\n        });\n\n        this.lineChartOptions = this.getAudienceDeliveryLineChartOptions(measurementName);\n    }\n\n    getLastSoldLineDateIndex() {\n        if (this.data.audiencePostedwithAduData?.date?.length > 0) {\n            if (this.data.dontPlotPostedReportUpdatedTillDateInGraph) {\n                return this.data.audiencePostedwithAduData.date.length - 2;\n            }\n            return this.data.audiencePostedwithAduData.date.length - 1;\n        }\n        return 0;\n    }\n\n    addAnnotationsForWithProjectonChart() {\n        const xPlacementForVerticalDashedLine: number = this.findVerticalLinePlacement();\n        const skipSolidLineAnnotations: boolean = xPlacementForVerticalDashedLine % 1 === 0;\n        const lastSolidLineDateIndex: number = this.getLastSoldLineDateIndex();\n\n        const skipDottedLineAnnotations: boolean =\n            xPlacementForVerticalDashedLine === 0 &&\n            this.data.bookedInTheSelectedPeriodDataForChart.valueDisplay.length ===\n                this.data.projectionWithAduDataForChart.valueDisplay.length;\n\n        let a1VerticalDottedLine: AnnotatedLine;\n        let a2SolidLineForPostedThroughWithADU: AnnotatedLine;\n        let a3SolidLineForPostedThroughWithoutADU: AnnotatedLine;\n        let a4DottedLineForPostedThroughWithADU: AnnotatedLine;\n        let a5DottedLineForPostedThroughWithoutADU: AnnotatedLine;\n\n        const annotationsArrayToReturn = [];\n\n        const keyTouse: \"impression\" | \"grp\" = this.isImpression ? \"impression\" : \"grp\";\n        const keyTouseInOriginalObject: \"Grps\" | \"Impressions\" = this.isImpression ? \"Impressions\" : \"Grps\";\n\n        if (xPlacementForVerticalDashedLine > 0) {\n            a1VerticalDottedLine = {\n                type: \"line\",\n                borderColor: \"#d4d4d4\",\n                borderWidth: 2,\n                xMax: xPlacementForVerticalDashedLine,\n                xMin: xPlacementForVerticalDashedLine,\n                borderDash: [7, 6],\n                order: 1,\n            };\n        }\n\n        if (this.data.audiencePostedwithAduData && this.data.audiencePostedwithAduData.date.length > 0) {\n            if (!skipSolidLineAnnotations) {\n                a2SolidLineForPostedThroughWithADU = {\n                    type: \"line\",\n                    borderColor: this.constants.postedToDateWithAduColor,\n                    borderWidth: 2,\n                    yMax: this.data.PROJECTIONWITHADUDATAONLASTPOSTEDDATE[keyTouseInOriginalObject],\n                    yMin: this.data.projectionWithAduDataForChart[keyTouse][lastSolidLineDateIndex],\n                    xMax: xPlacementForVerticalDashedLine,\n                    xMin: lastSolidLineDateIndex,\n                    order: 1,\n                };\n                a3SolidLineForPostedThroughWithoutADU = {\n                    type: \"line\",\n                    borderColor: this.constants.postedToDateColor,\n                    borderWidth: 2,\n                    yMax: this.data.PROJECTIONWITHOUTADUDATAONLASTPOSTEDDATE[keyTouseInOriginalObject],\n                    yMin: this.data.projectionWithoutAduDataForChart[keyTouse][lastSolidLineDateIndex],\n                    xMax: xPlacementForVerticalDashedLine,\n                    xMin: lastSolidLineDateIndex,\n                    order: 2,\n                };\n            }\n\n            if (!skipDottedLineAnnotations) {\n                a4DottedLineForPostedThroughWithADU = {\n                    type: \"line\",\n                    borderColor: this.constants.postedToDateWithAduColor,\n                    borderWidth: 2,\n                    yMax: this.data.projectionWithAduDataForChart[keyTouse][lastSolidLineDateIndex + 1],\n                    yMin: this.data.PROJECTIONWITHADUDATAONLASTPOSTEDDATE[keyTouseInOriginalObject],\n                    xMax: lastSolidLineDateIndex + 1,\n                    xMin: xPlacementForVerticalDashedLine,\n                    borderDash: this.borderDash,\n                    order: 1,\n                };\n                a5DottedLineForPostedThroughWithoutADU = {\n                    type: \"line\",\n                    borderColor: this.constants.postedToDateColor,\n                    borderWidth: 2,\n                    yMax: this.data.projectionWithoutAduDataForChart[keyTouse][lastSolidLineDateIndex + 1],\n                    yMin: this.data.PROJECTIONWITHOUTADUDATAONLASTPOSTEDDATE[keyTouseInOriginalObject],\n                    xMax: lastSolidLineDateIndex + 1,\n                    xMin: xPlacementForVerticalDashedLine,\n                    borderDash: this.borderDash,\n                    order: 2,\n                };\n            }\n        }\n        if (a1VerticalDottedLine) {\n            annotationsArrayToReturn.push(a1VerticalDottedLine);\n        }\n        if (a3SolidLineForPostedThroughWithoutADU) {\n            annotationsArrayToReturn.push(a3SolidLineForPostedThroughWithoutADU);\n        }\n        if (a2SolidLineForPostedThroughWithADU) {\n            annotationsArrayToReturn.push(a2SolidLineForPostedThroughWithADU);\n        }\n        if (a5DottedLineForPostedThroughWithoutADU) {\n            annotationsArrayToReturn.push(a5DottedLineForPostedThroughWithoutADU);\n        }\n        if (a4DottedLineForPostedThroughWithADU) {\n            annotationsArrayToReturn.push(a4DottedLineForPostedThroughWithADU);\n        }\n\n        return annotationsArrayToReturn;\n    }\n\n    findVerticalLinePlacement(): number {\n        let postedThroughWithAduDataForChartLength: number = 0;\n        if (this.data.audiencePostedwithAduData?.date?.length > 0) {\n            postedThroughWithAduDataForChartLength = this.data.dontPlotPostedReportUpdatedTillDateInGraph\n                ? this.data.audiencePostedwithAduData.date.length - 1\n                : this.data.audiencePostedwithAduData.date?.length;\n        }\n        if (this.data.postedToDate && this.data.postedToDate !== \"-\" && postedThroughWithAduDataForChartLength > 0) {\n            const postedDataAvailableTillDate = dayjs(this.data.postedToDate);\n            const lastSolidLineIndex: number = postedThroughWithAduDataForChartLength - 1;\n\n            const dateOnXAxisSolidLineEndsAt = dayjs(\n                this.data.audiencePostedwithAduData.date[postedThroughWithAduDataForChartLength - 1],\n            );\n            const dateOnXAxisDottedLineStartsAt = dayjs(\n                this.data.projectionWithoutAduData.date[postedThroughWithAduDataForChartLength + 1],\n            );\n\n            const intervalUsedInAxisInDays: number = dateOnXAxisDottedLineStartsAt.diff(\n                dateOnXAxisSolidLineEndsAt,\n                \"day\",\n            );\n            const differenceInDays: number = postedDataAvailableTillDate.diff(dateOnXAxisSolidLineEndsAt, \"day\");\n            return differenceInDays === 0\n                ? lastSolidLineIndex\n                : lastSolidLineIndex + differenceInDays / intervalUsedInAxisInDays;\n        }\n        return 0;\n    }\n\n    setLineChartDataWithoutProjectionData() {\n        let postedThroughNoADUsValues: number[];\n        let postedThroughWithADUValues: number[];\n        let bookedThroughValues: number[];\n        let postedNoADUTooltipImpsOrGrp: string[];\n        let postedWithAduTooltipImpsOrGrp: string[];\n        let bookedThroughTooltipImpsOrGrp: string[];\n        let measurementName: string;\n        this.lineChartLabels = [];\n        this.lineChartColors = [];\n        const backgroundColor = \"transparent\";\n\n        this.setGraphLegendDataForWithoutPorjectionChart();\n        this.setAduBifurcationData();\n        this.setLiabilityData();\n\n        if (this.isImpression) {\n            measurementName = this.constants.impressionUnit;\n            postedNoADUTooltipImpsOrGrp = this.data.audiencePostedNoAduData\n                ? this.data.audiencePostedNoAduData.impressionDisplay\n                : null;\n            postedWithAduTooltipImpsOrGrp = this.data.audiencePostedwithAduData\n                ? this.data.audiencePostedwithAduData.impressionDisplay\n                : null;\n            postedThroughNoADUsValues = this.data.audiencePostedNoAduData\n                ? this.data.audiencePostedNoAduData.impression\n                : null;\n            postedThroughWithADUValues = this.data.audiencePostedwithAduData\n                ? this.data.audiencePostedwithAduData.impression\n                : null;\n            bookedThroughTooltipImpsOrGrp = this.data.audienceAiredData\n                ? this.data.audienceAiredData.impressionDisplay\n                : null;\n            bookedThroughValues = this.data.audienceAiredData ? this.data.audienceAiredData.impression : null;\n        } else {\n            measurementName = this.constants.grpUnit;\n            postedNoADUTooltipImpsOrGrp = this.data.audiencePostedNoAduData.grpDisplay;\n            postedWithAduTooltipImpsOrGrp = this.data.audiencePostedwithAduData.grpDisplay;\n            postedThroughNoADUsValues = this.data.audiencePostedNoAduData.grp;\n            postedThroughWithADUValues = this.data.audiencePostedwithAduData.grp;\n            bookedThroughTooltipImpsOrGrp = this.data.audienceAiredData.grpDisplay;\n            bookedThroughValues = this.data.audienceAiredData.grp;\n        }\n\n        const bookedThroughData = new Dataset(\n            measurementName,\n            bookedThroughValues,\n            this.data.audienceAiredData ? this.data.audienceAiredData.valueDisplay : null,\n            bookedThroughTooltipImpsOrGrp,\n            this.constants.airedToDateColor,\n            backgroundColor,\n            this.barOrStackChartBorderRadius,\n            2,\n        );\n\n        const postedThroughNoADUData = new Dataset(\n            measurementName,\n            postedThroughNoADUsValues,\n            this.data.audiencePostedNoAduData ? this.data.audiencePostedNoAduData.valueDisplay : null,\n            postedNoADUTooltipImpsOrGrp,\n            this.isNeededForRadiant ? this.constants.radiantPostedToDateColor : this.constants.postedToDateColor,\n            backgroundColor,\n            this.barOrStackChartBorderRadius,\n            3,\n        );\n\n        const postedThroughWithADUData = new Dataset(\n            measurementName,\n            postedThroughWithADUValues,\n            this.data.audiencePostedwithAduData ? this.data.audiencePostedwithAduData.valueDisplay : null,\n            postedWithAduTooltipImpsOrGrp,\n            this.isNeededForRadiant\n                ? this.constants.radiantPostedToDateWithAduColor\n                : this.constants.postedToDateWithAduColor,\n            backgroundColor,\n            this.barOrStackChartBorderRadius,\n            4,\n        );\n\n        this.lineChartData = {\n            datasets: [],\n            labels: [],\n        };\n        //  this.lineChartData.datasets.push(bookedInTheSelectedPeriodData);\n        this.lineChartData.datasets.push(bookedThroughData);\n        this.lineChartData.datasets.push(postedThroughNoADUData);\n        this.lineChartData.datasets.push(postedThroughWithADUData);\n\n        const dateFormat = this.isAllQuarterSelected ? \"MM/DD/YY\" : \"MM/DD\";\n\n        if (this.isNeededForRadiant) {\n            this.data.bookedInTheSelectedPeriodDataForChart.date.forEach((date) => {\n                this.lineChartLabels.push(dayjs(date).format(dateFormat));\n                this.lineChartData.labels.push(dayjs(date).format(dateFormat));\n            });\n        } else {\n            this.data.projectionWithAduData.date.forEach((date: string) => {\n                this.lineChartLabels.push(dayjs(date).format(dateFormat));\n                this.lineChartData.labels.push(dayjs(date).format(dateFormat));\n            });\n        }\n\n        this.lineChartColors.push({\n            borderColor: this.isNeededForRadiant\n                ? this.constants.radiantPostedToDateWithAduColor\n                : this.constants.postedToDateWithAduColor,\n            backgroundColor,\n        });\n        this.lineChartColors.push({\n            borderColor: this.isNeededForRadiant\n                ? this.constants.radiantPostedToDateColor\n                : this.constants.postedToDateColor,\n            backgroundColor,\n        });\n        this.lineChartColors.push({ borderColor: this.constants.airedToDateColor, backgroundColor });\n        this.lineChartColors.push({\n            borderColor: this.isNeededForRadiant\n                ? this.constants.radiantBookedInQuarterColor\n                : this.constants.bookedInQuaterColor,\n            backgroundColor,\n        });\n\n        this.lineChartOptions = this.getAudienceDeliveryLineChartOptions(measurementName);\n    }\n\n    setLineChartData() {\n        if (!this.data) return;\n        if (this.showProjection) {\n            this.setLineChartDataWithProjectedData();\n        } else {\n            this.setLineChartDataWithoutProjectionData();\n        }\n    }\n\n    returnNullArrayLength(): number {\n        const length: number =\n            // eslint-disable-next-line no-nested-ternary\n            this.data.postedToDate && this.data.postedToDate !== \"-\"\n                ? this.data.dontPlotPostedReportUpdatedTillDateInGraph\n                    ? this.data.audiencePostedwithAduData.date.length - 1\n                    : this.data.audiencePostedwithAduData.date.length\n                : 0;\n        return length;\n    }\n\n    setGraphLegendDataForWithoutPorjectionChart() {\n        this.constants = AudiencePerformanceConstant;\n        // let bookedImpsOrGrp: string;\n        let airedImpsOrGrp: string;\n        let postedImpsOrGrpNoAdu: string;\n        let postedImpsOrGrpWithAdu: string;\n\n        const parentClass = \"audience-delivery-parent\";\n        const valueClass = this.constants.InfoData;\n        let unit: \"IMP('000)\" | \"GRP\";\n\n        this.legendData = [];\n        if (this.isImpression) {\n            //   bookedImpsOrGrp = this.data.bookedImpressionDisplay;\n            airedImpsOrGrp = this.data.airedImpressionDisplay;\n            postedImpsOrGrpNoAdu = this.data.postedImpressionDisplay;\n            postedImpsOrGrpWithAdu = this.data.bookedAndAduImpressionDisplay;\n            unit = this.constants.impressionUnit;\n        } else {\n            // bookedImpsOrGrp = this.data.bookedGrpDisplay;\n            airedImpsOrGrp = this.data.airedGrpDisplay;\n            postedImpsOrGrpNoAdu = this.data.postedGrpDisplay;\n            postedImpsOrGrpWithAdu = this.data.bookedAndAduGrpDisplay;\n            unit = this.constants.grpUnit;\n        }\n\n        // const bookedLegend: LegendData = this.setBookedLegendData(valueClass, parentClass, unit, bookedImpsOrGrp);\n        const airedLegend: LegendData = this.setAiredLegendData(valueClass, parentClass, unit, airedImpsOrGrp);\n        const postedNoAduLegend: LegendData = this.setPostedNoAduLegendData(\n            valueClass,\n            parentClass,\n            unit,\n            postedImpsOrGrpNoAdu,\n        );\n        const postedWithAduLegend: LegendData = this.setPostedWithAduLegendData(\n            valueClass,\n            parentClass,\n            unit,\n            postedImpsOrGrpWithAdu,\n        );\n\n        // this.legendData.push(bookedLegend);\n        this.legendData.push(airedLegend);\n        this.legendData.push(postedNoAduLegend);\n        this.legendData.push(postedWithAduLegend);\n    }\n\n    setGraphLegendDataForWithPorjectionChart() {\n        this.constants = AudiencePerformanceConstant;\n        let bookedImpsOrGrp: string;\n        let postedProjectionImpsOrGrpNoAdu: string;\n        let postedProjectionImpsOrGrpWithAdu: string;\n\n        const parentClass = \"audience-delivery-parent\";\n        const valueClass = this.constants.InfoData;\n\n        let unit: \"IMP('000)\" | \"GRP\";\n\n        this.legendData = [];\n        if (this.isImpression) {\n            bookedImpsOrGrp = this.data.bookedImpressionDisplay;\n            postedProjectionImpsOrGrpNoAdu = this.data.postedProjectionNoAduImpressionDisplay;\n            postedProjectionImpsOrGrpWithAdu = this.data.postedProjectionAduImpressionDisplay;\n            unit = this.constants.impressionUnit;\n        } else {\n            bookedImpsOrGrp = this.data.bookedGrpDisplay;\n            postedProjectionImpsOrGrpNoAdu = this.data.postedProjectionNoAduGrpDisplay;\n            postedProjectionImpsOrGrpWithAdu = this.data.postedProjectionAduGrpDisplay;\n            unit = this.constants.grpUnit;\n        }\n\n        const bookedLegend: LegendData = this.setBookedLegendData(valueClass, parentClass, unit, bookedImpsOrGrp);\n        const postedProjectionNoAduLegend: LegendData = this.setPostedProjectionNoAduLegendData(\n            valueClass,\n            parentClass,\n            unit,\n            postedProjectionImpsOrGrpNoAdu,\n        );\n        const postedProjectionWithAduLegend: LegendData = this.setPostedProjectionWithAduLegendData(\n            valueClass,\n            parentClass,\n            unit,\n            postedProjectionImpsOrGrpWithAdu,\n        );\n\n        this.legendData.push(bookedLegend);\n        this.legendData.push(postedProjectionNoAduLegend);\n        this.legendData.push(postedProjectionWithAduLegend);\n    }\n\n    setGraphLegendData() {\n        if (this.showProjection) {\n            this.setGraphLegendDataForWithPorjectionChart();\n        } else {\n            this.setGraphLegendDataForWithoutPorjectionChart();\n        }\n    }\n\n    setBookedLegendData(valueClass: string, parentClass: string, unit: string, ImpsOrGrp: string) {\n        const bookedLegendMetaData: KeyValue[] = [];\n        const keyName = this.constants.inTheSelectedPeriod;\n        bookedLegendMetaData.push(new KeyValue(\"\", keyName, \"\", valueClass, parentClass));\n        bookedLegendMetaData.push(\n            new KeyValue(\"\", this.data.bookedValueDisplay || \"-\", \"\", \"legend-value\", \"display-value value\"),\n        );\n        bookedLegendMetaData.push(\n            new KeyValue(`${unit}: `, ImpsOrGrp || \"-\", \"ratings-imps-key\", \"\", \"rating-imps-container value\"),\n        );\n\n        if (!this.isNeededForRadiant) {\n            bookedLegendMetaData.push(\n                new KeyValue(\n                    `${this.constants.spotsUnit}:`,\n                    this.data.bookedSpotsDisplay,\n                    \"\",\n                    \"\",\n                    \" rating-imps-container\",\n                ),\n            );\n        }\n        return new LegendData(\n            this.constants.booked,\n            this.isNeededForRadiant ? this.constants.radiantBookedInQuarterColor : this.constants.bookedInQuaterColor,\n            bookedLegendMetaData,\n        );\n    }\n\n    setPostedProjectionNoAduLegendData(valueClass: string, parentClass: string, unit: string, ImpsOrGrp: string) {\n        const postedProjectionNoAduLegendMetaData: KeyValue[] = [];\n        const date = this.constants.NoAdus;\n\n        postedProjectionNoAduLegendMetaData.push(new KeyValue(\"\", date, \"\", valueClass, parentClass));\n        postedProjectionNoAduLegendMetaData.push(\n            new KeyValue(\n                \"\",\n                this.data.postedProjectionNoAduValueDisplay || \"-\",\n                \"\",\n                \"legend-value\",\n                \"display-value value\",\n            ),\n        );\n        postedProjectionNoAduLegendMetaData.push(\n            new KeyValue(`${unit}: `, ImpsOrGrp || \"-\", \"\", \"\", \"rating-imps-container value\"),\n        );\n\n        if (!this.isNeededForRadiant) {\n            postedProjectionNoAduLegendMetaData.push(\n                new KeyValue(\n                    `${this.constants.spotsUnit}:`,\n                    this.data.postedProjectionNoAduSpotsDisplay,\n                    \"\",\n                    \"\",\n                    \"rating-imps-container\",\n                ),\n            );\n        }\n\n        return new LegendData(\n            this.constants.postedProjection,\n            this.isNeededForRadiant ? this.constants.radiantPostedToDateColor : this.constants.postedToDateColor,\n            postedProjectionNoAduLegendMetaData,\n        );\n    }\n\n    setPostedProjectionWithAduLegendData(valueClass: string, parentClass: string, unit: string, ImpsOrGrp: string) {\n        const postedProjectionWithAduLegendMetaData: KeyValue[] = [];\n        const date = this.constants.withAdus;\n\n        postedProjectionWithAduLegendMetaData.push(new KeyValue(\"\", date, \"\", valueClass, parentClass));\n        postedProjectionWithAduLegendMetaData.push(\n            new KeyValue(\n                \"\",\n                this.data.postedProjectionAduValueDisplay || \"-\",\n                \"\",\n                \"legend-value\",\n                \"display-value value\",\n            ),\n        );\n        postedProjectionWithAduLegendMetaData.push(\n            new KeyValue(`${unit}: `, ImpsOrGrp || \"-\", \"\", \"\", \"rating-imps-container value\"),\n        );\n\n        if (!this.isNeededForRadiant) {\n            postedProjectionWithAduLegendMetaData.push(\n                new KeyValue(\n                    `${this.constants.spotsUnit}:`,\n                    this.data.postedProjectionAduSpotsDisplay,\n                    \"\",\n                    \"\",\n                    \"rating-imps-container\",\n                ),\n            );\n        }\n        return new LegendData(\n            this.constants.postedProjection,\n            this.isNeededForRadiant\n                ? this.constants.radiantPostedToDateWithAduColor\n                : this.constants.postedToDateWithAduColor,\n            postedProjectionWithAduLegendMetaData,\n        );\n    }\n\n    setLiabilityData() {\n        this.udLiabilityData = null;\n        const udLiabilityKeyValue: KeyValue[] = [];\n        let impsOrGrpKey: string;\n        const udLiabilityKey = this.constants.udLiability.toUpperCase();\n        const udLiabilityImpsOrGrp: string = this.data.udLiabilityMetricValueDisplay;\n        if (this.data.udLiabilityMetricDisplay === \"IMPRESSIONS\") {\n            impsOrGrpKey = this.constants.impressionUnitKey;\n        } else if (this.data.udLiabilityMetricDisplay === \"RATINGS\") {\n            impsOrGrpKey = this.constants.grpUnitKey;\n        }\n        udLiabilityKeyValue.push(new KeyValue(impsOrGrpKey, udLiabilityImpsOrGrp, \"\", \"\", \"value\"));\n        udLiabilityKeyValue.push(\n            new KeyValue(this.constants.udPercentageDelivered, this.data.udLiabilitypercentageDelivered, \"\", \"\", \"\"),\n        );\n        const udLiability: PostedBifurcationData = new PostedBifurcationData(udLiabilityKey, null, udLiabilityKeyValue);\n        this.udLiabilityData = udLiability;\n    }\n\n    setAiredLegendData(valueClass: string, parentClass: string, unit: string, ImpsOrGrp: string): LegendData {\n        const airedLegendMetaData: KeyValue[] = [];\n        const date = this.data.airedToDate === \"-\" || !this.data.airedToDate ? \"\" : `${this.data.airedToDate}* `;\n\n        airedLegendMetaData.push(new KeyValue(\"\", date, \"\", valueClass, parentClass));\n        airedLegendMetaData.push(\n            new KeyValue(\n                \"\",\n                date ? this.data.airedValueDisplay || \"-\" : \"-\",\n                \"\",\n                \"legend-value\",\n                \"display-value value\",\n            ),\n        );\n        airedLegendMetaData.push(\n            new KeyValue(`${unit}: `, date ? ImpsOrGrp || \"-\" : \"-\", \"ratings-imps-key\", \"\", \"rating-imps-container\"),\n        );\n\n        if (!this.isNeededForRadiant) {\n            airedLegendMetaData.push(\n                new KeyValue(\n                    `${this.constants.spotsUnit}:`,\n                    this.data.airedSpotsDisplay,\n                    \"\",\n                    \"\",\n                    \" rating-imps-container\",\n                ),\n            );\n        }\n        return new LegendData(this.constants.airedThrough, this.constants.airedToDateColor, airedLegendMetaData);\n    }\n\n    setPostedNoAduLegendData(valueClass: string, parentClass: string, unit: string, ImpsOrGrp: string): LegendData {\n        const postedNoAduLegendMetaData: KeyValue[] = [];\n        const date =\n            this.data.postedToDate === \"-\"\n                ? this.constants.NoAdus\n                : `${this.data.postedToDate}* ${this.constants.NoAdus}`;\n\n        postedNoAduLegendMetaData.push(new KeyValue(\"\", date, \"\", valueClass, parentClass));\n        postedNoAduLegendMetaData.push(\n            new KeyValue(\"\", this.data.postedValueDisplay || \"-\", \"\", \"legend-value\", \"display-value value\"),\n        );\n        postedNoAduLegendMetaData.push(new KeyValue(`${unit}: `, ImpsOrGrp || \"-\", \"\", \"\", \"rating-imps-container\"));\n\n        if (!this.isNeededForRadiant) {\n            postedNoAduLegendMetaData.push(\n                new KeyValue(\n                    `${this.constants.spotsUnit}:`,\n                    this.data.postedWithoutAduSpotsDisplay,\n                    \"\",\n                    \"\",\n                    \"rating-imps-container\",\n                ),\n            );\n        }\n\n        return new LegendData(\n            this.constants.postedThrough,\n            this.isNeededForRadiant ? this.constants.radiantPostedToDateColor : this.constants.postedToDateColor,\n            postedNoAduLegendMetaData,\n        );\n    }\n\n    setPostedWithAduLegendData(valueClass: string, parentClass: string, unit: string, ImpsOrGrp: string): LegendData {\n        const postedWithAduLegendMetaData: KeyValue[] = [];\n        const date =\n            this.data.postedToDate === \"-\"\n                ? this.constants.withAdus\n                : `${this.data.postedToDate}* ${this.constants.withAdus}`;\n        postedWithAduLegendMetaData.push(new KeyValue(\"\", date, \"\", valueClass, parentClass));\n\n        postedWithAduLegendMetaData.push(\n            new KeyValue(\"\", this.data.bookedAndAduValue || \"-\", \"\", \"legend-value\", \"display-value value\"),\n        );\n        postedWithAduLegendMetaData.push(new KeyValue(`${unit}: `, ImpsOrGrp || \"-\", \"\", \"\", \"rating-imps-container\"));\n\n        if (!this.isNeededForRadiant) {\n            postedWithAduLegendMetaData.push(\n                new KeyValue(\n                    `${this.constants.spotsUnit}:`,\n                    this.data.postedWithAduSpotsDisplay,\n                    \"\",\n                    \"\",\n                    \"rating-imps-container\",\n                ),\n            );\n        }\n\n        return new LegendData(\n            this.constants.postedThrough,\n            this.isNeededForRadiant\n                ? this.constants.radiantPostedToDateWithAduColor\n                : this.constants.postedToDateWithAduColor,\n            postedWithAduLegendMetaData,\n        );\n    }\n\n    setAduBifurcationData() {\n        this.aduData = [];\n        let annaAduImpsOrGrp: string;\n        let userAduImpsOrGrp: string;\n        let postedImpsOrGrp: string;\n        let scheduledImpsOrGrp: string;\n        let impsOrGrpKey: string;\n        const postedAduKeyValue: KeyValue[] = [];\n        const scheduledAduKeyValue: KeyValue[] = [];\n        const postedADUsKey = `${this.constants.posted.toUpperCase()} ${this.constants.adus}`;\n        const scheduledADUsKey = `${this.constants.scheduled.toUpperCase()} ${this.constants.adus}`;\n\n        if (this.isImpression) {\n            postedImpsOrGrp = this.data.postedAduImpressionDisplay || \"-\";\n            scheduledImpsOrGrp = this.data.scheduledAduImpressionDisplay || \"-\";\n            annaAduImpsOrGrp = this.data.annaAduImpressionDisplay || \"-\";\n            userAduImpsOrGrp = this.data.userAduImpressionDisplay || \"-\";\n            impsOrGrpKey = this.constants.impressionUnitKey;\n        } else {\n            postedImpsOrGrp = this.data.postedAduGrpDisplay || \"-\";\n            scheduledImpsOrGrp = this.data.scheduledAduGrpDisplay || \"-\";\n            annaAduImpsOrGrp = this.data.annaAduGrpDisplay || \"-\";\n            userAduImpsOrGrp = this.data.userAduGrpDisplay || \"-\";\n            impsOrGrpKey = this.constants.grpUnitKey;\n        }\n\n        postedAduKeyValue.push(new KeyValue(impsOrGrpKey, postedImpsOrGrp || \"-\", \"\", \"\", \"value\"));\n        postedAduKeyValue.push(\n            new KeyValue(`${this.constants.spotsUnit}:`, this.data.postedAduSpotsDisplay || \"-\", \"\", \"\", \"\"),\n        );\n        const postedAdu: PostedBifurcationData = new PostedBifurcationData(\n            postedADUsKey,\n            this.data.postedAduValueDisplay,\n            postedAduKeyValue,\n        );\n\n        scheduledAduKeyValue.push(new KeyValue(impsOrGrpKey, scheduledImpsOrGrp || \"-\", \"\", \"\", \"value\"));\n        scheduledAduKeyValue.push(\n            new KeyValue(`${this.constants.spotsUnit}:`, this.data.scheduledAduSpotsDisplay || \"-\", \"\", \"\", \"\"),\n        );\n        const scheduledAdu: PostedBifurcationData = new PostedBifurcationData(\n            scheduledADUsKey,\n            this.data.scheduledAduValueDisplay,\n            scheduledAduKeyValue,\n        );\n\n        this.aduData.push(postedAdu);\n        this.aduData.push(scheduledAdu);\n\n        const annaAduKeyValue: KeyValue[] = [];\n        annaAduKeyValue.push(new KeyValue(impsOrGrpKey, annaAduImpsOrGrp, \"\", \"\", \"value\"));\n        annaAduKeyValue.push(\n            new KeyValue(`${this.constants.spotsUnit}:`, this.data.annaAduSpotsDisplay || \"-\", \"\", \"\", \"\"),\n        );\n\n        this.annaUserAdusData = [\n            new PostedBifurcationData(`ANNA ${this.constants.adus}`, this.data.annaAduValueDisplay, annaAduKeyValue),\n        ];\n\n        const userAduKeyValue: KeyValue[] = [];\n        userAduKeyValue.push(new KeyValue(impsOrGrpKey, userAduImpsOrGrp, \"\", \"\", \"value\"));\n        userAduKeyValue.push(\n            new KeyValue(`${this.constants.spotsUnit}:`, this.data.userAduSpotsDisplay || \"-\", \"\", \"\", \"\"),\n        );\n        this.annaUserAdusData.push(\n            new PostedBifurcationData(`USER ${this.constants.adus}`, this.data.userAduValueDisplay, userAduKeyValue),\n        );\n    }\n    saveLiability(data: any) {\n        this.saveLiabilityEvent.emit(data);\n    }\n    getAudienceDeliveryLineChartOptions(measurementName: string) {\n        return {\n            responsive: true,\n            maintainAspectRatio: false,\n            animation: false,\n            animations: false,\n            transitions: {\n                show: {\n                    animations: false,\n                },\n                hide: {\n                    animations: false,\n                },\n            },\n            scales: {\n                x: {\n                    grid: {\n                        display: true,\n                        zeroLineColor: \"#000000\",\n                        color: \"transparent\",\n                    },\n                    ticks: {\n                        padding: 4, // audience delivery issue no 6\n                    },\n                },\n                y: {\n                    min: 0,\n                    display: true,\n                    scaleLabel: {\n                        display: true,\n                        labelString: measurementName,\n                        lineHeight: 0.7,\n                        fontColor: \"#747474\",\n                        fontFamily: \"Roboto\",\n                        fontSize: 13,\n                        padding: 5,\n                    },\n                    ticks: {\n                        beginAtZero: true,\n                        padding: 4, // audience delivery issue no 6\n                        min: 0,\n                        callback(value: any, index: any, values: any) {\n                            function thousandFormatting(numValue: any) {\n                                let returnValue;\n                                let updatedValue = numValue;\n                                if (updatedValue / 10 ** 6 >= 1) {\n                                    updatedValue /= 10 ** 6;\n                                    returnValue = `${parseFloat(updatedValue)} M`;\n                                } else if (updatedValue / 10 ** 4 >= 1) {\n                                    // 4 is required because we don't want it in decimal for that we are using truncate\n                                    // eslint-disable-next-line max-len\n                                    updatedValue /= 10 ** 3; // so 1200 will be 1200 itself not 1K (1100 to 1400) will truncate to became 1K\n                                    returnValue = `${Math.trunc(parseFloat(updatedValue))} K`;\n                                } else {\n                                    returnValue = parseInt(updatedValue, 10);\n                                }\n                                return returnValue;\n                            }\n                            return thousandFormatting(value);\n                        },\n                    },\n                },\n            },\n            interaction: {\n                mode: \"index\",\n                intersect: false,\n            },\n            elements: {\n                line: { tension: 0 },\n                point: { radius: 0 },\n            },\n            plugins: {\n                tooltip: {\n                    animation: false,\n                    enabled: false,\n                    // itemSort: function (a: any, b: any) {\n                    //   return b.datasetIndex - a.datasetIndex;\n                    // },\n                    callbacks: {\n                        label(context: any) {\n                            const index = context.dataIndex;\n                            const tooltipDatasetImpressionGrp = context.dataset.tooltipImpsOrGrpDisplay[index];\n                            const tooltipDatasetValue = context.dataset.tooltipDisplayValue[index];\n\n                            const tooltipData = {\n                                unit: context.dataset.measurementName,\n                                labelColor: context.dataset.borderColor,\n                                value: tooltipDatasetValue,\n                                impressionGrp: tooltipDatasetImpressionGrp,\n                            };\n                            return tooltipData;\n                        },\n                    },\n                    external(context: any) {\n                        let tooltipEl = document.getElementById(\"chartjs-tooltip\");\n\n                        if (!tooltipEl) {\n                            tooltipEl = document.createElement(\"div\");\n                            tooltipEl.id = \"chartjs-tooltip\";\n                            tooltipEl.innerHTML = '<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\"></table>';\n                            document.body.appendChild(tooltipEl);\n                        }\n\n                        // Hide if no tooltip\n                        const tooltipModel = context.tooltip;\n                        if (tooltipModel.opacity === 0) {\n                            tooltipEl.style.opacity = \"0\";\n                            return;\n                        }\n                        // Set caret Position\n                        tooltipEl.setAttribute(\"class\", \"\");\n                        tooltipEl.classList.add(\"bottom\", \"custom-tooltip-chartjs\");\n\n                        function getBody(bodyItem: any) {\n                            return bodyItem.lines;\n                        }\n\n                        // Set Text\n                        if (tooltipModel.body) {\n                            const titleLines = tooltipModel.title || [];\n                            const bodyLines = tooltipModel.body.map(getBody);\n\n                            let innerHtml = \"<thead>\";\n                            titleLines.forEach((title: any) => {\n                                innerHtml += \"<tr><th></th></tr>\";\n                            });\n                            innerHtml += \"</thead><tbody>\";\n\n                            bodyLines.forEach((body: any, i: any) => {\n                                const colors = tooltipModel.labelColors[i];\n                                // eslint-disable-next-line max-len\n                                const style = `background:${colors.backgroundColor}; border-width: 0.125rem; font-size: 0.75rem; color: #747474;`;\n                                // eslint-disable-next-line max-len\n                                const dotStyle = `height:0.625rem; width:0.625rem; border-radius:50%; display:inline-block; margin-top:0px; margin-left:5%; margin-right:0.313rem; background-color:${body[0].labelColor}`;\n                                // eslint-disable-next-line max-len\n                                const valueStyle = `color:#000; font-family:Roboto; font-size: 0.75rem; font-weight:bold; font-family: Roboto; line-height: 1; letter-spacing: normal;`;\n                                const span = `<span style=\"${style}\"></span>`;\n                                const colorSpan = `<span style=\"${dotStyle}\"></span>`;\n                                // let leftSpace = \"<span style='margin-left:14x;color:red'>a</span>\";\n                                const valueSpan = `<span style=\"${valueStyle}\">${body[0].value}</span>`;\n                                innerHtml += `<tr>\n                                    <td>\n                                        ${colorSpan}\n                                        ${span}\n                                        <span style=\"${valueStyle}\">\n                                            ${body[0].impressionGrp} ${body[0].unit}\n                                        </span>\n                                    </td>\n                                </tr>`;\n\n                                innerHtml += `<tr><td style=\"padding:0 0 4px 26px\">${valueSpan}</td></tr>`;\n                            });\n                            innerHtml += \"</tbody>\";\n\n                            const tableRoot = tooltipEl.querySelector(\"table\");\n                            tableRoot.innerHTML = innerHtml;\n                            tableRoot.style.width = \"100%\";\n                        }\n\n                        const position = context.chart.canvas.getBoundingClientRect();\n\n                        // For the Last tooltip if its position is greater than chart width then left shift it\n                        const LeftOffset = 0;\n\n                        let uppermostDataPoint = tooltipModel.dataPoints[0].element.y;\n                        tooltipModel.dataPoints.forEach((ele: any) => {\n                            uppermostDataPoint = Math.min(ele.element.y, uppermostDataPoint);\n                        });\n\n                        tooltipEl.style.opacity = \"1\";\n                        tooltipEl.style.backgroundColor = \"#fff\";\n                        tooltipEl.style.position = \"absolute\";\n                        tooltipEl.style.zIndex = \"10000\";\n                        // eslint-disable-next-line no-underscore-dangle\n                        tooltipEl.style.fontFamily = tooltipModel._bodyFontFamily;\n                        tooltipEl.style.fontSize = `${tooltipModel.bodyFontSize}px`;\n                        // eslint-disable-next-line no-underscore-dangle\n                        tooltipEl.style.fontStyle = tooltipModel._bodyFontStyle;\n                        tooltipEl.style.padding = `${tooltipModel.yPadding}px ${tooltipModel.xPadding}px`;\n                        tooltipEl.style.pointerEvents = \"none\";\n                        tooltipEl.style.borderRadius = \"4px\";\n                        tooltipEl.style.boxShadow = \"1px 1px 3px 1px rgba(156, 156, 156, 0.25)\";\n                        tooltipEl.style.width = \"140px\";\n                        tooltipEl.style.maxWidth = \"140px\";\n                        tooltipEl.style.borderWidth = \"8px 8px 0 8px\";\n                        tooltipEl.style.border = \"1px solid #CFCFCF\";\n\n                        // eslint-disable-next-line max-len\n                        tooltipEl.style.left = `${position.left + window.pageXOffset + tooltipModel.caretX - LeftOffset - 70}px`;\n                        // eslint-disable-next-line max-len\n                        tooltipEl.style.top = `${position.top + window.pageYOffset + uppermostDataPoint - tooltipEl.scrollHeight}px`;\n                    },\n                },\n                annotation: {\n                    annotations: this.showProjection ? this.addAnnotationsForWithProjectonChart() : null,\n                },\n            },\n        };\n    }\n\n    setDropdownConfig() {\n        this.grapghTypeDropdownConfig = { ...this.annaGlobalConfig.defaultSingleSelectConfig };\n        this.grapghTypeDropdownConfig.placeholder = \"Select Filter\";\n    }\n\n    setOrderFilterTypeDropdownConfig() {\n        this.orderFilterDropdownConfig = { ...this.annaGlobalConfig.defaultSingleSelectConfig };\n        this.orderFilterDropdownConfig.placeholder = \"Select Filter\";\n    }\n\n    setRevClassDropdownConfig() {\n        this.revClassDropdownConfig = { ...this.annaGlobalConfig.defaultMultiSelectConfig };\n        this.revClassDropdownConfig.placeholder = \"Select Rev Classes\";\n        this.revClassDropdownConfig.maxHeightOfList = 150;\n    }\n\n    setBreadcrumbs() {\n        if (!this.breadcrumbService.isBreadcrumbClicked) {\n            const name = \"Dashboard (Daily BoB)\";\n            const path = this.router.url;\n\n            this.breadcrumbService.updateBreadcrumbs(name, path, false);\n        } else {\n            this.breadcrumbService.isBreadcrumbClicked = false;\n        }\n    }\n\n    navigateToOrderPage() {\n        this.setBreadcrumbs();\n        this.viewAudiencePerformanceClicked.emit();\n    }\n\n    openModal() {\n        this.editModalReference = this.modalService.open(this.editOrderTypeModal, this.ngbModalOptions);\n    }\n    closeModal() {\n        this.editModalReference.close();\n    }\n\n    popupModalConfig() {\n        this.ngbModalOptions = {\n            windowClass: \"liability-enter-popup\",\n        };\n    }\n\n    setMessageData() {\n        const msgForDeletedOrder = `There is no audience performance data available for this order.`;\n        const iconClass = \"mdi mdi-information\";\n        const msgForLibility = `Please enter the UD liability for this order.`;\n        this.deleteOrderMessageData = new MessageBoxData(\n            null,\n            msgForDeletedOrder,\n            iconClass,\n            `${GenericMessageBoxTheme.informationBlue.messageBoxClass} sm mg-adu-rule`,\n        );\n        this.liabilityInfoMsg = new MessageBoxData(\n            null,\n            msgForLibility,\n            iconClass,\n            `${GenericMessageBoxTheme.informationBlue.messageBoxClass} sm liability-info-msg`,\n        );\n    }\n\n    showOrHideProjectionData(value?: boolean) {\n        this.showProjection = value !== undefined ? value : !this.showProjection;\n        this.setLineChartData();\n        this.showProjectionsToggled.emit(this.showProjection);\n    }\n}\n","<anna-design-message-box\n    *ngIf=\"isDeletedOrder\"\n    [messageBoxData]=\"deleteOrderMessageData\"\n></anna-design-message-box>\n\n<anna-design-message-box\n    *ngIf=\"isEditLiabilityAllowed && data?.orderType === OrderType.UD_LIABILITY_NOT_SET\"\n    [messageBoxData]=\"liabilityInfoMsg\"\n></anna-design-message-box>\n\n<ng-container\n    *ngIf=\"isSingleOrder && showProjection && !errorMessage && !loading\"\n    [ngTemplateOutlet]=\"projectionMessage\"\n>\n</ng-container>\n\n<div\n    class=\"user-card pull-right\"\n    *ngIf=\"!isDeletedOrder\"\n    [ngClass]=\"{ 'user-card-no-proj': !showProjection }\"\n>\n    <div\n        *ngIf=\"isNeededForRadiant\"\n        class=\"radiant-dashboard-heading\"\n    >\n        {{ constants.audiencePerformance | uppercase }}\n    </div>\n\n    <ng-container *ngIf=\"!loading\">\n        <div\n            class=\"header-div row nowrap\"\n            *ngIf=\"showHeadingAndDropdown || !isSingleOrder\"\n        >\n            <div\n                class=\"p-0 dashboard-header-container\"\n                *ngIf=\"showHeadingAndDropdown\"\n            >\n                <div\n                    *ngIf=\"!isNeededForRadiant\"\n                    class=\"dashboard-heading\"\n                >\n                    {{ constants.audiencePerformance | uppercase }}\n                </div>\n                <p\n                    class=\"dashboard-sub-heading\"\n                    *ngIf=\"data && !isNeededForRadiant\"\n                >\n                    {{ constants.paidOrderWithAudience }} -\n                    <a\n                        class=\"view-link\"\n                        [ngClass]=\"{ disabled: !data.isPaidOrdersPresent || disableViewLink }\"\n                        (click)=\"navigateToOrderPage()\"\n                        >View</a\n                    >\n                    <i\n                        class=\"mi mdi-info-outline info-icon\"\n                        #t=\"ngbTooltip\"\n                        [ngbTooltip]=\"commercialOrderWithRatingTooltip\"\n                        placement=\"top\"\n                        tooltipClass=\"custom-tooltip commercial-order-with-rating-tooltip\"\n                    >\n                    </i>\n                </p>\n            </div>\n            <div class=\"projections-filter-container\">\n                <div\n                    class=\"show-projections-toggle\"\n                    *ngIf=\"!isSingleOrder && !errorMessage\"\n                >\n                    Show Projections\n                    <anna-design-toggle\n                        [isDisabled]=\"!data\"\n                        [position]=\"'none'\"\n                        [isToggled]=\"showProjection\"\n                        (toggle)=\"showOrHideProjectionData()\"\n                    >\n                    </anna-design-toggle>\n                </div>\n                <div\n                    class=\"filter-dropdown\"\n                    *ngIf=\"data && showHeadingAndDropdown && !isNeededForRadiant\"\n                >\n                    <anna-design-single-select\n                        class=\"custom-dropdown-width\"\n                        *ngIf=\"!isSingleOrder\"\n                        [items]=\"orderFilterDropdownData\"\n                        [selectedItem]=\"selectedOrderTypeFilter\"\n                        [disabled]=\"!data\"\n                        [config]=\"orderFilterDropdownConfig\"\n                        (valueChanged)=\"orderFilterSelected($event)\"\n                    >\n                    </anna-design-single-select>\n                    <div\n                        class=\"grey-line\"\n                        *ngIf=\"!isSingleOrder && !errorMessage\"\n                    ></div>\n                    <anna-design-single-select\n                        class=\"custom-dropdown-width\"\n                        [items]=\"graphType\"\n                        [selectedItem]=\"selectedGraphType\"\n                        [disabled]=\"!data\"\n                        [config]=\"grapghTypeDropdownConfig\"\n                        (valueChanged)=\"graphTypeSelected($event)\"\n                    >\n                    </anna-design-single-select>\n                </div>\n            </div>\n        </div>\n\n        <div *ngIf=\"errorMessage\">\n            <p class=\"noData\">{{ errorMessage }}</p>\n        </div>\n\n        <ng-container *ngIf=\"data\">\n            <div class=\"row nowrap\">\n                <!-- <div class=\"legend-container\">\n                    <span class=\"text-container\">\n                        $ {{ showProjection ? \"Projected \" : \"\" }}Delivery % (&#64; Threshold):\n                    </span>\n                    <span class=\"percent-value\">\n                        {{\n                            showProjection\n                                ? data.projectedAudienceDeliveredToDateDisplay\n                                : data.audienceDeliveredToDateDisplay\n                        }}\n                        <span *ngIf=\"!isNeededForRadiant\">%</span>\n                        <i\n                            class=\"mi mdi-info-outline info-tooltip-icon\"\n                            #t=\"ngbTooltip\"\n                            [ngbTooltip]=\"unrealizableDollarValue\"\n                            placement=\"bottom\"\n                            tooltipClass=\"custom-tooltip unrealizableDollarValue-tooltip\"\n                        >\n                        </i>\n                    </span>\n                </div>\n                <div\n                    class=\"grey-line h-27\"\n                    *ngIf=\"!isNeededForRadiant\"\n                ></div>\n                <div\n                    class=\"legend-container\"\n                    *ngIf=\"!isNeededForRadiant\"\n                >\n                    <span class=\"text-container\"> UD Impacts: </span>\n                    <span class=\"percent-value\">\n                        {{ showProjection ? data.projectedUdImpacts : data.udImpactsToDisplay }}\n                        <i\n                            class=\"mi mdi-info-outline info-tooltip-icon\"\n                            #t=\"ngbTooltip\"\n                            [ngbTooltip]=\"udImpactsTooltip\"\n                            placement=\"bottom\"\n                            tooltipClass=\"custom-tooltip\"\n                        >\n                        </i>\n                    </span>\n                </div> -->\n                <div\n                    class=\"revclass\"\n                    *ngIf=\"!isSingleOrder && !isNeededForRadiant\"\n                >\n                    <anna-design-multi-select\n                        [items]=\"revClassDropdownData\"\n                        [config]=\"revClassDropdownConfig\"\n                        [disabled]=\"revClassDropdownData.length === 0\"\n                        (dropdownOpenedEvent)=\"revClassDropdownOpened($event)\"\n                        (dropdownClosedEvent)=\"revClassSelected($event)\"\n                    ></anna-design-multi-select>\n                </div>\n\n                <!-- <div\n                    class=\"revclass\"\n                    *ngIf=\"!isSingleOrder\"\n                >\n                    <anna-design-multi-select\n                        [items]=\"revClassDropdownData\"\n                        [config]=\"revClassDropdownConfig\"\n                        [disabled]=\"revClassDropdownData.length === 0\"\n                        (dropdownOpenedEvent)=\"revClassDropdownOpened($event)\"\n                        (dropdownClosedEvent)=\"revClassSelected($event)\"\n                    ></anna-design-multi-select>\n                </div> -->\n                <!-- <ng-container\n                    *ngIf=\"!isSingleOrder && showProjection && !errorMessage && !loading\"\n                    [ngTemplateOutlet]=\"projectionMessage\"\n                >\n                </ng-container>\n                <div\n                    *ngIf=\"isSingleOrder\"\n                    class=\"posted-report-text italic-text\"\n                >\n                    {{\n                        data.postedToDate === \"-\"\n                            ? \"*No posted data\"\n                            : (showProjection ? \"- - - - \" : \"*\") + \"Posted report is updated till \" + data.postedToDate\n                    }}\n                </div>\n                -->\n                <div\n                    *ngIf=\"missingPostedDataPayload\"\n                    class=\"right-aligned\"\n                >\n                    <anna-design-missing-posted-data\n                        [isHHData]=\"measurementAgency() === MeasurementAgencyInOrderSummary.NielsenSweeps\"\n                        [missingPostedData]=\"missingPostedData\"\n                        class=\"audience-perfromance-missing-posted-data\"\n                        [payload]=\"missingPostedDataPayload\"\n                        [showDemographicInfo]=\"showDemographicInfo\"\n                    ></anna-design-missing-posted-data>\n                </div>\n            </div>\n            <!-- <div\n                *ngIf=\"!isSingleOrder\"\n                class=\"posted-report-text mtb-8 italic-text\"\n            >\n                {{\n                    data.postedToDate === \"-\"\n                        ? \"*No posted data\"\n                        : (showProjection ? \"- - - - \" : \"*\") + \"Posted report is updated till \" + data.postedToDate\n                }}\n            </div> -->\n\n            <div class=\"chart-container\">\n                <div class=\"line-chart\">\n                    <section class=\"w-100 chart-section\">\n                        <div class=\"chart-with-posted-text\">\n                            <ng-container\n                                *ngIf=\"!isSingleOrder && showProjection && !errorMessage && !loading\"\n                                [ngTemplateOutlet]=\"projectionMessage\"\n                            >\n                            </ng-container>\n                            <div\n                                *ngIf=\"isSingleOrder\"\n                                class=\"posted-report-text mr-8 italic-text\"\n                            >\n                                {{\n                                    data.postedToDate === \"-\"\n                                        ? \"*No posted data\"\n                                        : (showProjection ? \"- - - - \" : \"*\") +\n                                          \"Posted data for this order is updated till \" +\n                                          data.postedToDate\n                                }}\n                            </div>\n                            <div\n                                *ngIf=\"!isSingleOrder\"\n                                class=\"posted-report-text mr-8 mtb-8 italic-text\"\n                            >\n                                {{\n                                    data.postedToDate === \"-\"\n                                        ? \"*No posted data\"\n                                        : (showProjection ? \"- - - - \" : \"*\") +\n                                          \"Posted report is updated till \" +\n                                          data.postedToDate\n                                }}\n                            </div>\n                        </div>\n\n                        <article class=\"d-flex\">\n                            <span class=\"graph-axis-titles\">{{\n                                isImpression ? constants.impressionUnit : constants.grpUnit\n                            }}</span>\n                            <anna-design-generic-line-chart\n                                class=\"smaller-graph\"\n                                [chartClassName]=\"chartClassName\"\n                                *ngIf=\"toDisplayGraph\"\n                                [sizeOfChart]=\"sizeOfChart\"\n                                [lineChartOptions]=\"lineChartOptions\"\n                                [lineChartData]=\"lineChartData\"\n                            >\n                            </anna-design-generic-line-chart>\n                        </article>\n                    </section>\n\n                    <section class=\"row legend-container-graph legened-inline-with-graph\">\n                        <ng-container\n                            [ngTemplateOutlet]=\"graphLegendTemplate\"\n                            [ngTemplateOutletContext]=\"{ legendData: legendData }\"\n                        ></ng-container>\n                    </section>\n                </div>\n                <div [ngClass]=\"{ 'ml-40': isSingleOrder }\">\n                    <div class=\"row legend-container-graph flex-start-align pb-16\">\n                        <ng-container *ngFor=\"let adu of aduData; let i = index\">\n                            <div>\n                                <p class=\"recovered-under-delivery-heading\">{{ adu.heading }}</p>\n                                <div class=\"recovered-under-delivery-total-data\">\n                                    <div class=\"recovered-under-delivery-value\">\n                                        {{ adu.value }}\n                                    </div>\n                                    <anna-design-key-value\n                                        class=\"audience-card-adu-parent\"\n                                        [data]=\"adu.keyValue\"\n                                    ></anna-design-key-value>\n                                </div>\n                            </div>\n                        </ng-container>\n\n                        <ng-container *ngIf=\"showAnnaAduSection\">\n                            <div class=\"divider\"></div>\n                            <ng-container *ngFor=\"let adu of annaUserAdusData; let i = index\">\n                                <div>\n                                    <p class=\"recovered-under-delivery-heading\">{{ adu?.heading }}</p>\n                                    <div class=\"recovered-under-delivery-total-data\">\n                                        <div class=\"recovered-under-delivery-value\">\n                                            {{ adu?.value }}\n                                        </div>\n                                        <anna-design-key-value\n                                            class=\"audience-card-adu-parent\"\n                                            [data]=\"adu.keyValue\"\n                                        ></anna-design-key-value>\n                                    </div>\n                                </div>\n                            </ng-container>\n                        </ng-container>\n\n                        <ng-container *ngIf=\"showLiabilitySection\">\n                            <div class=\"divider\"></div>\n                            <div>\n                                <p class=\"recovered-under-delivery-heading\">\n                                    {{ udLiabilityData.heading }}\n                                    <span\n                                        *ngIf=\"\n                                            isEditLiabilityAllowed &&\n                                            (data.orderType === OrderType.UD_LIABILITY_NOT_SET ||\n                                                data.orderType === OrderType.UD_LIABILITY_SET)\n                                        \"\n                                        class=\"mdi mdi-pencil\"\n                                        (click)=\"openModal()\"\n                                    ></span>\n                                </p>\n                                <div class=\"recovered-under-delivery-total-data\">\n                                    <div\n                                        *ngIf=\"data.orderType === OrderType.UD_LIABILITY_NOT_SET\"\n                                        class=\"recovered-under-delivery-value\"\n                                    >\n                                        -\n                                    </div>\n                                    <anna-design-key-value\n                                        *ngIf=\"data.orderType === OrderType.UD_LIABILITY_SET\"\n                                        class=\"ud-liability-section\"\n                                        [data]=\"udLiabilityData.keyValue\"\n                                    ></anna-design-key-value>\n                                </div>\n                            </div>\n                        </ng-container>\n                    </div>\n                    <div\n                        class=\"row legend-container-graph\"\n                        [ngClass]=\"{\n                            'order-container pt-12': isSingleOrder,\n                            'flex-start-align': !isSingleOrder\n                        }\"\n                    >\n                        <ng-container *ngIf=\"isSingleOrder\">\n                            <ng-container *ngIf=\"!showProjection\">\n                                <!-- <div\n                                    *ngIf=\"data.underDeliveryAtHundredPercent.value\"\n                                    class=\"divider\"\n                                ></div> -->\n                                <anna-design-over-or-under-delivery\n                                    class=\"od-ml-orders\"\n                                    *ngIf=\"data.underDeliveryAtHundredPercent.value\"\n                                    [data]=\"data.underDeliveryAtHundredPercent\"\n                                    [isImp]=\"isImpression\"\n                                    [isGRP]=\"!isImpression\"\n                                ></anna-design-over-or-under-delivery>\n                                <div\n                                    *ngIf=\"data.underDeliveryAtHundredPercent.value\"\n                                    class=\"divider\"\n                                ></div>\n                                <div *ngIf=\"data.bizRulesAudienceDeliveryLimit\">\n                                    <p class=\"recovered-under-delivery-heading\">\n                                        {{ constants.deliveryThresholdHeading }}\n                                    </p>\n                                    <div class=\"recovered-under-delivery-total-data\">\n                                        <div class=\"recovered-under-delivery-value\">\n                                            {{ data.bizRulesAudienceDeliveryLimit }}%\n                                        </div>\n                                    </div>\n                                </div>\n                                <anna-design-over-or-under-delivery\n                                    *ngIf=\"data.underDeliveryAtThreshold.value\"\n                                    [data]=\"data.underDeliveryAtThreshold\"\n                                    [isImp]=\"isImpression\"\n                                    [isGRP]=\"!isImpression\"\n                                ></anna-design-over-or-under-delivery>\n                                <div\n                                    class=\"divider\"\n                                    *ngIf=\"\n                                        data.carryForwardUnderDeliveryLiability.value || data.podBillingReduction.value\n                                    \"\n                                ></div>\n                                <anna-design-over-or-under-delivery\n                                    *ngIf=\"data.carryForwardUnderDeliveryLiability.value\"\n                                    [data]=\"data.carryForwardUnderDeliveryLiability\"\n                                    [isImp]=\"isImpression\"\n                                    [isGRP]=\"!isImpression\"\n                                ></anna-design-over-or-under-delivery>\n\n                                <anna-design-over-or-under-delivery\n                                    *ngIf=\"data.podBillingReduction.value\"\n                                    [data]=\"data.podBillingReduction\"\n                                    [isImp]=\"isImpression\"\n                                    [isGRP]=\"!isImpression\"\n                                ></anna-design-over-or-under-delivery>\n                                <div\n                                    *ngIf=\"data.overDelivery.value\"\n                                    class=\"divider\"\n                                ></div>\n                                <anna-design-over-or-under-delivery\n                                    class=\"od-ml\"\n                                    *ngIf=\"data.overDelivery.value\"\n                                    [data]=\"data.overDelivery\"\n                                    [isOverdelivered]=\"true\"\n                                    [isImp]=\"isImpression\"\n                                    [isGRP]=\"!isImpression\"\n                                    [tooltipMessage]=\"toolTipMessage\"\n                                ></anna-design-over-or-under-delivery>\n                            </ng-container>\n\n                            <ng-container *ngIf=\"showProjection\">\n                                <!-- <div\n                                    class=\"divider\"\n                                    *ngIf=\"data.projectedUnderDeliveryAtHundredPercent.value\"\n                                ></div> -->\n                                <anna-design-over-or-under-delivery\n                                    *ngIf=\"data.projectedUnderDeliveryAtHundredPercent.value\"\n                                    [data]=\"data.projectedUnderDeliveryAtHundredPercent\"\n                                    [isImp]=\"isImpression\"\n                                    [isGRP]=\"!isImpression\"\n                                ></anna-design-over-or-under-delivery>\n                                <div\n                                    *ngIf=\"data.projectedUnderDeliveryAtHundredPercent.value\"\n                                    class=\"divider\"\n                                ></div>\n                                <div *ngIf=\"data.bizRulesAudienceDeliveryLimit\">\n                                    <p class=\"recovered-under-delivery-heading\">\n                                        {{ constants.deliveryThresholdHeading }}\n                                    </p>\n                                    <div class=\"recovered-under-delivery-total-data\">\n                                        <div class=\"recovered-under-delivery-value\">\n                                            {{ data.bizRulesAudienceDeliveryLimit }}%\n                                        </div>\n                                    </div>\n                                </div>\n\n                                <anna-design-over-or-under-delivery\n                                    *ngIf=\"data.projectedUnderDeliveryAtThreshold.value\"\n                                    [data]=\"data.projectedUnderDeliveryAtThreshold\"\n                                    [isImp]=\"isImpression\"\n                                    [isGRP]=\"!isImpression\"\n                                ></anna-design-over-or-under-delivery>\n                                <div\n                                    *ngIf=\"\n                                        data.projectedCFunderDeliveryLiability.value ||\n                                        data.projectedPodBillingReduction.value\n                                    \"\n                                    class=\"divider\"\n                                ></div>\n                                <anna-design-over-or-under-delivery\n                                    *ngIf=\"data.projectedCFunderDeliveryLiability.value\"\n                                    [data]=\"data.projectedCFunderDeliveryLiability\"\n                                    [isImp]=\"isImpression\"\n                                    [isGRP]=\"!isImpression\"\n                                ></anna-design-over-or-under-delivery>\n                                <anna-design-over-or-under-delivery\n                                    *ngIf=\"data.projectedPodBillingReduction.value\"\n                                    [data]=\"data.projectedPodBillingReduction\"\n                                    [isImp]=\"isImpression\"\n                                    [isGRP]=\"!isImpression\"\n                                ></anna-design-over-or-under-delivery>\n                                <div\n                                    class=\"divider\"\n                                    *ngIf=\"data.overDeliveryProjection.value\"\n                                ></div>\n                                <anna-design-over-or-under-delivery\n                                    class=\"od-ml\"\n                                    *ngIf=\"data.overDeliveryProjection.value\"\n                                    [data]=\"data.overDeliveryProjection\"\n                                    [isOverdelivered]=\"true\"\n                                    [isImp]=\"isImpression\"\n                                    [isGRP]=\"!isImpression\"\n                                    [tooltipMessage]=\"toolTipMessage\"\n                                ></anna-design-over-or-under-delivery>\n                            </ng-container>\n                        </ng-container>\n                    </div>\n\n                    <div\n                        class=\"additional-data row\"\n                        [ngClass]=\"{ 'custom-border-top': !isSingleOrder }\"\n                    >\n                        <div\n                            class=\"od-ud-container ud-ml\"\n                            *ngIf=\"!isSingleOrder\"\n                        >\n                            <ng-container *ngIf=\"showProjection\">\n                                <anna-design-over-or-under-delivery\n                                    class=\"proj-UD-100 border-right mr-15\"\n                                    *ngIf=\"data.projectedUnderDeliveryAtHundredPercent\"\n                                    [data]=\"data.projectedUnderDeliveryAtHundredPercent\"\n                                    [isImp]=\"isImpression\"\n                                    [isGRP]=\"!isImpression\"\n                                    [showOrderCount]=\"true\"\n                                ></anna-design-over-or-under-delivery>\n\n                                <div\n                                    class=\"od-ml-orders\"\n                                    [ngClass]=\"{ 'first-item': !data.projectedUnderDeliveryAtHundredPercent }\"\n                                >\n                                    <p class=\"proj-delivery-threshold recovered-under-delivery-heading\">\n                                        {{ constants.deliveryThresholdHeading }}\n                                    </p>\n                                    <div class=\"recovered-under-delivery-total-data\">\n                                        <div class=\"recovered-under-delivery-value\">\n                                            {{\n                                                data.bizRulesAudienceDeliveryLimit !== null\n                                                    ? data.bizRulesAudienceDeliveryLimit + \"%\"\n                                                    : \"-\"\n                                            }}\n                                        </div>\n                                    </div>\n                                </div>\n                                <anna-design-over-or-under-delivery\n                                    class=\"od-ml-orders proj-ud border-right mr-15\"\n                                    *ngIf=\"data.projectedUnderDeliveryAtThreshold\"\n                                    [data]=\"data.projectedUnderDeliveryAtThreshold\"\n                                    [isImp]=\"isImpression\"\n                                    [isGRP]=\"!isImpression\"\n                                    [showOrderCount]=\"true\"\n                                ></anna-design-over-or-under-delivery>\n                                <anna-design-over-or-under-delivery\n                                    class=\"od-ml-orders proj-cf-ud\"\n                                    *ngIf=\"data.projectedCFunderDeliveryLiability\"\n                                    [data]=\"data.projectedCFunderDeliveryLiability\"\n                                    [showOrderCount]=\"true\"\n                                    [isImp]=\"isImpression\"\n                                    [isGRP]=\"!isImpression\"\n                                ></anna-design-over-or-under-delivery>\n                                <anna-design-over-or-under-delivery\n                                    class=\"od-ml-orders proj-pod mr-15 ml-15\"\n                                    *ngIf=\"data.projectedPodBillingReduction\"\n                                    [data]=\"data.projectedPodBillingReduction\"\n                                    [showOrderCount]=\"true\"\n                                    [isImp]=\"isImpression\"\n                                    [isGRP]=\"!isImpression\"\n                                ></anna-design-over-or-under-delivery>\n                                <anna-design-over-or-under-delivery\n                                    class=\"proj-od border-left\"\n                                    [ngClass]=\"{ 'od-ml-orders': data.projectedPodBillingReduction.value }\"\n                                    *ngIf=\"data.overDeliveryProjection\"\n                                    [data]=\"data.overDeliveryProjection\"\n                                    [isOverdelivered]=\"true\"\n                                    [isImp]=\"isImpression\"\n                                    [isGRP]=\"!isImpression\"\n                                    [showOrderCount]=\"true\"\n                                    [tooltipMessage]=\"toolTipMessage\"\n                                ></anna-design-over-or-under-delivery>\n                            </ng-container>\n\n                            <ng-container *ngIf=\"!showProjection\">\n                                <anna-design-over-or-under-delivery\n                                    *ngIf=\"data.underDeliveryAtHundredPercent\"\n                                    class=\"od-ud-titles-without-projection border-right mr-15\"\n                                    [data]=\"data.underDeliveryAtHundredPercent\"\n                                    [isImp]=\"isImpression\"\n                                    [isGRP]=\"!isImpression\"\n                                    [showOrderCount]=\"true\"\n                                ></anna-design-over-or-under-delivery>\n                                <div class=\"od-ml-orders\">\n                                    <p class=\"recovered-under-delivery-heading delivery-threshold-heading\">\n                                        {{ constants.deliveryThresholdHeading }}\n                                    </p>\n                                    <div class=\"recovered-under-delivery-total-data\">\n                                        <div class=\"recovered-under-delivery-value\">\n                                            {{\n                                                data.bizRulesAudienceDeliveryLimit !== null\n                                                    ? data.bizRulesAudienceDeliveryLimit + \"%\"\n                                                    : \"-\"\n                                            }}\n                                        </div>\n                                    </div>\n                                </div>\n                                <anna-design-over-or-under-delivery\n                                    class=\"od-ml-orders od-ud-titles-without-projection border-right mr-15\"\n                                    *ngIf=\"data.underDeliveryAtThreshold\"\n                                    [data]=\"data.underDeliveryAtThreshold\"\n                                    [isImp]=\"isImpression\"\n                                    [isGRP]=\"!isImpression\"\n                                    [showOrderCount]=\"true\"\n                                ></anna-design-over-or-under-delivery>\n                                <anna-design-over-or-under-delivery\n                                    class=\"od-ml-orders\"\n                                    *ngIf=\"data.carryForwardUnderDeliveryLiability\"\n                                    [data]=\"data.carryForwardUnderDeliveryLiability\"\n                                    [isImp]=\"isImpression\"\n                                    [isGRP]=\"!isImpression\"\n                                    [showOrderCount]=\"true\"\n                                    [showOrderCount]=\"true\"\n                                ></anna-design-over-or-under-delivery>\n                                <anna-design-over-or-under-delivery\n                                    class=\"od-ml-orders pod-order\"\n                                    *ngIf=\"data.podBillingReduction\"\n                                    [data]=\"data.podBillingReduction\"\n                                    [showOrderCount]=\"true\"\n                                    [isImp]=\"isImpression\"\n                                    [isGRP]=\"!isImpression\"\n                                ></anna-design-over-or-under-delivery>\n                                <anna-design-over-or-under-delivery\n                                    class=\"od-ud-titles-without-projection border-left\"\n                                    *ngIf=\"data.overDelivery\"\n                                    [data]=\"data.overDelivery\"\n                                    [isOverdelivered]=\"true\"\n                                    [isImp]=\"isImpression\"\n                                    [isGRP]=\"!isImpression\"\n                                    [showOrderCount]=\"true\"\n                                    [tooltipMessage]=\"toolTipMessage\"\n                                ></anna-design-over-or-under-delivery>\n                            </ng-container>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        </ng-container>\n    </ng-container>\n\n    <div *ngIf=\"loading\">\n        <anna-design-skt-loader\n            [theme]=\"{ height: '1.5625rem', width: '30%', 'margin-bottom': '1.5rem' }\"\n        ></anna-design-skt-loader>\n\n        <div class=\"row justify-content-between\">\n            <div class=\"w-85\">\n                <anna-design-skt-loader\n                    [theme]=\"{ height: '17.5rem', 'margin-bottom': '1.5rem' }\"\n                ></anna-design-skt-loader>\n            </div>\n            <div class=\"w-15\">\n                <div class=\"flex flex-column gap-16\">\n                    <ng-container *ngFor=\"let repeat of [1, 2, 3]\">\n                        <anna-design-skt-loader\n                            [count]=\"1\"\n                            [theme]=\"{ height: '1rem' }\"\n                        ></anna-design-skt-loader>\n                        <anna-design-skt-loader\n                            [count]=\"3\"\n                            [theme]=\"{ height: '0.5rem' }\"\n                        ></anna-design-skt-loader>\n                        <anna-design-skt-loader\n                            [count]=\"1\"\n                            [theme]=\"{ height: '0.5rem', 'margin-bottom': '32px' }\"\n                        ></anna-design-skt-loader>\n                    </ng-container>\n                </div>\n            </div>\n        </div>\n\n        <anna-design-skt-loader\n            [theme]=\"{ height: '1.5625rem', 'margin-bottom': '1.125rem', 'margin-top': '1.5625rem' }\"\n        ></anna-design-skt-loader>\n        <div class=\"row\">\n            <div\n                class=\"col-3\"\n                *ngFor=\"let repeat of [1, 2, 3, 4]\"\n            >\n                <anna-design-skt-loader\n                    [count]=\"4\"\n                    [theme]=\"{ height: '0.5rem' }\"\n                ></anna-design-skt-loader>\n            </div>\n        </div>\n        <ng-container *ngIf=\"!isSingleOrder && !isNeededForRadiant\">\n            <anna-design-skt-loader\n                [theme]=\"{ height: '1.5625rem', 'margin-bottom': '1.125rem', 'margin-top': '1.5625rem' }\"\n            ></anna-design-skt-loader>\n            <div class=\"row\">\n                <div\n                    [ngClass]=\"{ 'ud-loader': showProjection }\"\n                    class=\"col-3\"\n                    *ngFor=\"let repeat of [1, 2, 3, 4]\"\n                >\n                    <anna-design-skt-loader\n                        [count]=\"4\"\n                        [theme]=\"{ height: '0.5rem' }\"\n                    ></anna-design-skt-loader>\n                </div>\n            </div>\n        </ng-container>\n    </div>\n</div>\n\n<ng-template #projectionMessage>\n    <div\n        class=\"italic-text projections-message\"\n        [ngClass]=\"{ 'mtb-8': isSingleOrder }\"\n    >\n        <ng-container [ngTemplateOutlet]=\"measurementAgencyMessage\"></ng-container>\n\n        <ng-container *ngIf=\"data?.postedToDate !== '-'\">\n            <!-- All projections are derived from the sum of actual posted information until {{ data?.postedToDate }}\n            and estimates for the remaining selected period. -->\n            <ul>\n                <li>\n                    All projections are derived from the sum of actual posted information until\n                    <b>{{ data?.postedToDate }}</b>\n                    and estimates for the remaining selected period.\n                </li>\n            </ul>\n        </ng-container>\n        <ng-container *ngIf=\"data?.postedToDate === '-'\">\n            <ul>\n                <li>\n                    All projections are derived from the sum of actual posted information until the last posted date and\n                    estimates for the remaining selected period.\n                </li>\n            </ul>\n            <!-- All projections are derived from the sum of actual posted information until the last posted date and\n            estimates for the remaining selected period. -->\n        </ng-container>\n    </div>\n</ng-template>\n\n<ng-template #tooltipContent>Under-delivery recovered using the spots of this quarter.</ng-template>\n\n<ng-template #bookedThroughTooltip> The booked data is for posted spots only. </ng-template>\n\n<ng-template #commercialOrderWithRatingTooltip>\n    <!-- Includes orders which have:\n    <ul>\n        <li>Original Order spots with ratings</li>\n        <li>Buyer Added spots with ratings</li>\n    </ul> -->\n    Includes Orders where audience posting is required as per the business rules.\n</ng-template>\n\n<ng-template #udLiabilityIsSetTooltip> This is the UD liability entered for the order </ng-template>\n\n<ng-template #udImpactsTooltip>\n    <b>UD Impact break-up:</b>\n    <ol>\n        <li>ADUs provided at no-charge: ${{ data.providedAdusValueForTooltipDisplay }}</li>\n        <li\n            *ngIf=\"\n                showProjection && ((isSingleOrder && data?.projectedCFunderDeliveryLiability?.value) || !isSingleOrder)\n            \"\n        >\n            C/F UD Liability for Pay for Spots(P4S) Orders:\n            {{\n                data?.projectedCFunderDeliveryLiability?.value\n                    ? \"$\" + data.projectedCFunderDeliveryLiability.value.value\n                    : \"-\"\n            }}\n        </li>\n        <li\n            *ngIf=\"\n                !showProjection &&\n                ((isSingleOrder && data?.carryForwardUnderDeliveryLiability?.value) || !isSingleOrder)\n            \"\n        >\n            C/F UD Liability for Pay for Spots(P4S) Orders:\n            {{\n                data?.carryForwardUnderDeliveryLiability?.value\n                    ? \"$\" + data.carryForwardUnderDeliveryLiability.value.value\n                    : \"-\"\n            }}\n        </li>\n        <li *ngIf=\"showProjection && ((isSingleOrder && data?.projectedPodBillingReduction?.value) || !isSingleOrder)\">\n            Billing reduction for PoD orders:\n            {{ data?.projectedPodBillingReduction?.value ? \"$\" + data.projectedPodBillingReduction.value.value : \"-\" }}\n        </li>\n        <li *ngIf=\"!showProjection && ((isSingleOrder && data?.podBillingReduction?.value) || !isSingleOrder)\">\n            Billing reduction for PoD orders:\n            {{ data?.podBillingReduction?.value ? \"$\" + data.podBillingReduction.value.value : \"-\" }}\n        </li>\n    </ol>\n</ng-template>\n<ng-template #unrealizableDollarValue>\n    <b>Unrealizable $ value:</b>\n    <ol>\n        <li>C/F Liability for Pay for Spots(P4S) Orders.</li>\n        <li>Billing Reduction due to UD for PoD orders.</li>\n    </ol>\n</ng-template>\n\n<ng-template\n    #liabilityModal\n    let-modal\n>\n    <anna-feature-liability-modal\n        [orderMetric]=\"metricTypeForPopup\"\n        [liabilityValue]=\"liabilityForPopup\"\n        [orderType]=\"orderTypeForPopup\"\n        (cancel)=\"closeModal()\"\n        (save)=\"saveLiability($event)\"\n    >\n    </anna-feature-liability-modal>\n</ng-template>\n\n<ng-template\n    #graphLegendTemplate\n    let-legendData=\"legendData\"\n>\n    <ng-container *ngFor=\"let legend of legendData\">\n        <div class=\"p-0\">\n            <span\n                class=\"dot\"\n                [ngStyle]=\"{ 'background-color': legend.legendDotColor }\"\n            ></span>\n            {{ legend.legendName }}\n            <i\n                class=\"mi mdi-info-outline info-icon\"\n                *ngIf=\"legend.legendName === constants.airedThrough\"\n                #t=\"ngbTooltip\"\n                [ngbTooltip]=\"bookedThroughTooltip\"\n                placement=\"bottom\"\n                tooltipClass=\"custom-tooltip booked-tooltip\"\n            >\n            </i>\n            <anna-design-key-value [data]=\"legend.legendMetaData\">\n                <i\n                    class=\"mi mdi-info-outline ud-liability-info-icon\"\n                    *ngIf=\"\n                        showLiabilitySection &&\n                        data.orderType === OrderType.UD_LIABILITY_SET &&\n                        (legend.legendName === 'Booked' || legend.legendName === 'Booked through ')\n                    \"\n                    #t=\"ngbTooltip\"\n                    [ngbTooltip]=\"udLiabilityIsSetTooltip\"\n                    placement=\"bottom\"\n                    tooltipClass=\"custom-tooltip\"\n                >\n                </i>\n            </anna-design-key-value>\n        </div>\n    </ng-container>\n</ng-template>\n\n<ng-template #measurementAgencyMessage>\n    @if (measurementAgency() === MeasurementAgencyInOrderSummary.NielsenSweeps ||\n         measurementAgency() === MeasurementAgencyInOrderSummary.Comscore) {\n        <ul>\n            <li>\n                @if (measurementAgency() === MeasurementAgencyInOrderSummary.NielsenSweeps) {\n                    ANNA is using Sweeps and Skewed HH overnights data wherever applicable.\n                } @else if (measurementAgency() === MeasurementAgencyInOrderSummary.Comscore) {\n                    ANNA is using Pulse data and actual Persons data wherever applicable.\n                }\n            </li>\n        </ul>\n    }\n</ng-template>\n","import { Injectable } from \"@angular/core\";\n\n@Injectable({\n    providedIn: \"root\",\n})\nexport class BillingReportService {\n    static measurementName: \"GRP\" | \"IMP\";\n    public static getDataAsPerBillingPeriod(totalBillingPeriodData: any) {\n        const billingList: any[] = [];\n        const data = totalBillingPeriodData.find((x: any) => x.isCurrentBillingPeriod);\n        if (data) {\n            billingList.push(data);\n        }\n        // eslint-disable-next-line max-len\n        // safeguard condtion i.e. if by any chance backend is not giving isCurrentBillingPeriod true for any period, we will show the first billing period\n        else {\n            billingList.push(totalBillingPeriodData[0]);\n        }\n        return billingList;\n    }\n}\n","import dayjs from \"dayjs\";\n\nimport { BillingReportService } from \"../services/billing-report-table.service\";\n\nexport type OrderInfoType = { stationId: string; order: string; isEquivalisedData: boolean };\n\nexport class SpotValuGrpImp {\n    spot: string;\n    value: string;\n    grp: string;\n    imps: string;\n    constructor(obj: any) {\n        this.spot = obj.Spots;\n        this.value = obj.Value;\n        this.grp = obj.GRP;\n        this.imps = obj.IMP;\n    }\n}\n\nexport class SpotValuGrpImpCppCpm extends SpotValuGrpImp {\n    cpm: string;\n    cpp: string;\n    constructor(obj: any) {\n        super(obj);\n        this.cpp = obj.CPP;\n        this.cpm = obj.CPM;\n    }\n}\n\nexport class ActualSpotValueGrpImp {\n    actualSpot: number;\n    actualValue: number;\n    actualGrp: number;\n    actualImps: number;\n}\n\nexport interface ActualSpotValueGrpImpCppCpm extends ActualSpotValueGrpImp {\n    actualCpm: number;\n    actualCpp: number;\n}\n\nexport class ActualAndDisplaySpotValueGrpImp extends SpotValuGrpImp {\n    actualSpot: number;\n    actualValue: number;\n    actualGrp: number;\n    actualImps: number;\n    constructor(obj: any) {\n        super(obj);\n        this.actualSpot = obj.ActualSpots;\n        this.actualValue = obj.ActualValue;\n        this.actualGrp = obj.ActualGRP;\n        this.actualImps = obj.ActualIMP;\n    }\n}\n\nexport class ActualAndDisplaySpotValueGrpImpCppCpm extends ActualAndDisplaySpotValueGrpImp {\n    cpm: string;\n    cpp: string;\n    actualCpm: number;\n    actualCpp: number;\n    constructor(obj: any) {\n        super(obj);\n        this.cpp = obj.CPP;\n        this.cpm = obj.CPM;\n        this.actualCpp = obj.ActualCPP;\n        this.actualCpm = obj.ActualCPM;\n    }\n}\n\nexport class Liability {\n    value: string;\n    UDGRP: string;\n    UDIMPS: string;\n    UDLiabilityGrp: string;\n    UDLiabilityImps: string;\n    ODGRP: string;\n    ODIMPS: string;\n\n    constructor(obj: any) {\n        this.value = obj.Value;\n        this.UDGRP = obj.UDGRP;\n        this.UDIMPS = obj.UDIMPS;\n        this.UDLiabilityGrp = obj.UDLiabilityGrp;\n        this.UDLiabilityImps = obj.UDLiabilityImps;\n        this.ODGRP = obj.ODGRP;\n        this.ODIMPS = obj.ODIMPS;\n    }\n}\n\nexport interface BillingReportTableMissingPostedDataRequestPayload {\n    StationId: number;\n    Demographs: string[];\n    StartDate: string;\n    EndDate: string;\n}\n\nexport class WeeklySpotResponse {\n    latestRevisionNo: number;\n    // measurementName: \"GRP\" | \"IMP('000)\";\n    isPayForPerformanceOrder: boolean;\n    isCompletedOrder: boolean;\n    totalOriginal: SpotValuGrpImpCppCpm;\n    totalRevised: SpotValuGrpImpCppCpm;\n    totalProjectedDeliveryWithoutADUSpots: SpotValuGrpImp;\n    totalProjectedDeliveryWithADUSpots: SpotValuGrpImp;\n    totalLiabilityData: Liability;\n    totalBillableToDate: SpotValuGrpImp;\n    totalNetAmount: string;\n    totalAgencyCommissionOnBillableAmount: string;\n    totalBillingPeriodWiseSummaryData: TotalBillingData[] = [];\n    dropdownSelectedBillingWiseData: TotalBillingData[] = [];\n    selectedBillingPeriod: { id: number; text: string };\n    demographs: string[];\n    postedToDate: string;\n\n    constructor(data: any) {\n        this.latestRevisionNo = data.LatestRevisionNumber;\n        this.isPayForPerformanceOrder = data.IsPayPerPerformanceOrder === 1;\n        // BillingReportService.measurementName = data.MeasurementName;\n        // this.measurementName = data.MeasurementName==\"Impressions\"?\"IMP('000)\":\"GRP\";\n        this.totalOriginal = new SpotValuGrpImpCppCpm(data.TotalOriginal);\n        this.totalRevised = new SpotValuGrpImpCppCpm(data.TotalRevised);\n        this.totalBillableToDate = new SpotValuGrpImp(data.TotalBillableToDate);\n        this.totalProjectedDeliveryWithoutADUSpots = new SpotValuGrpImp(data.TotalProjectedDeliveryWithoutADUSpots);\n        this.totalProjectedDeliveryWithADUSpots = new SpotValuGrpImp(data.TotalProjectedDeliveryWithADUSpots);\n        this.totalLiabilityData = new Liability(data.TotalLiabilityData);\n        this.totalNetAmount = data.TotalNetAmount;\n        this.isCompletedOrder = data.IsCompletedOrder;\n        this.totalAgencyCommissionOnBillableAmount = data.TotalAgencyCommissionOnBillableAmount;\n        // this.postingType = data.PostingType ? data.PostingType : '-';\n        data.BillingPlanSummary.forEach((item: any, index: any) => {\n            this.totalBillingPeriodWiseSummaryData.push(new TotalBillingData(item, index));\n        });\n\n        this.dropdownSelectedBillingWiseData = BillingReportService.getDataAsPerBillingPeriod(\n            this.totalBillingPeriodWiseSummaryData,\n        );\n        this.selectedBillingPeriod = {\n            id: this.dropdownSelectedBillingWiseData[0]?.id,\n            text: this.dropdownSelectedBillingWiseData[0]?.billingPeriod,\n        };\n\n        this.demographs = data.Demographs;\n        this.postedToDate = data.postedToDate;\n    }\n}\n\nexport class TotalBillingData {\n    id: number;\n    billingPeriod: string;\n    startDate: string;\n    endDate: string;\n    isCurrentBillingPeriod: boolean;\n    totalAgencyCommissionOnBillableAmount: string;\n    netAmount: string;\n    totalOriginal: SpotValuGrpImpCppCpm;\n    totalRevised: SpotValuGrpImpCppCpm;\n    totalBillable: SpotValuGrpImp;\n    projectedDeliveryWithoutAdu: SpotValuGrpImp;\n    projectedDeliveryAdu: SpotValuGrpImp;\n    liability: Liability;\n    postedInfoAvailableForAllAiredSpots: boolean;\n\n    constructor(data: any, index: number) {\n        this.id = index;\n        this.startDate = data.StartDate;\n        this.endDate = data.EndDate;\n        // eslint-disable-next-line max-len\n        this.billingPeriod = `${dayjs(this.startDate, \"YYYY/MM/DD\").format(\"DD MMM YYYY\")} - ${dayjs(this.endDate, \"YYYY/MM/DD\").format(\"DD MMM YYYY\")}`;\n        this.isCurrentBillingPeriod = data.IsCurrentBillingPeriod;\n        this.postedInfoAvailableForAllAiredSpots = data.PostedInfoAvailableForAllAiredSpots;\n        this.totalAgencyCommissionOnBillableAmount = data.TotalAgencyCommissionOnBillableAmount;\n        this.netAmount = data.NetAmount;\n\n        this.totalOriginal = new SpotValuGrpImpCppCpm(data.Original);\n        this.totalRevised = new SpotValuGrpImpCppCpm(data.Revised);\n        this.totalBillable = new SpotValuGrpImp(data.BillableToDate);\n        this.projectedDeliveryWithoutAdu = new SpotValuGrpImp(data.ProjectedDeliveryWithoutADUSpots);\n        this.projectedDeliveryAdu = new SpotValuGrpImp(data.ProjectedDeliveryWithADUSpots);\n        this.liability = new Liability(data.Liability);\n    }\n}\n\n// export class LineDetails {\n//   lineNumber: number;\n//   hidden: boolean;\n//   lineDetail: LineDetail[] = [];\n\n//   constructor(object) {\n//     this.lineNumber = object.LineNumber;\n//     this.hidden = true;\n//     object.LineData.forEach((item) => {\n//       this.lineDetail.push(new LineDetail(item));\n//     });\n//   }\n// }\n\nexport class TotalBillingPeriodWiseData {\n    id: number;\n    billingPeriod: string;\n    startDate: string;\n    endDate: string;\n    isCurrentBillingPeriod: boolean;\n    original: ActualAndDisplaySpotValueGrpImpCppCpm;\n    revised: ActualAndDisplaySpotValueGrpImpCppCpm;\n    projectedDeliveryWithoutAdu: ActualAndDisplaySpotValueGrpImp;\n    projectedDeliveryAdu: ActualAndDisplaySpotValueGrpImp;\n    billableToDateValue: string;\n\n    constructor(data: any, index: number) {\n        this.id = index;\n        this.startDate = data.StartDate;\n        this.endDate = data.EndDate;\n        this.isCurrentBillingPeriod = data.IsCurrentBillingPeriod;\n        // eslint-disable-next-line max-len\n        this.billingPeriod = `${dayjs(this.startDate, \"YYYY/MM/DD\").format(\"DD MMM YYYY\")} - ${dayjs(this.endDate, \"YYYY/MM/DD\").format(\"DD MMM YYYY\")}`;\n\n        this.original = new ActualAndDisplaySpotValueGrpImpCppCpm(data.Original);\n        this.revised = new ActualAndDisplaySpotValueGrpImpCppCpm(data.Revised);\n        this.projectedDeliveryWithoutAdu = new ActualAndDisplaySpotValueGrpImp(data.ProjectedDeliveryWithoutADUSpots);\n        this.projectedDeliveryAdu = new ActualAndDisplaySpotValueGrpImp(data.ProjectedDeliveryWithADUSpots);\n\n        this.billableToDateValue = data.BillableToDateValue[0] === \"-\" ? \"-\" : data.BillableToDateValue[1];\n    }\n}\n\nexport class BillingViewDetails {\n    latestRevisionNo: number;\n    postingType: string;\n    isPayForPerformanceOrder: boolean;\n    billingPeriod: BillingPeriodLineInfo[] = [];\n    constructor(data: any) {\n        this.latestRevisionNo = data?.LatestRevisionNumber;\n        this.postingType = data?.PostingType;\n        this.isPayForPerformanceOrder = data?.IsPayPerPerformanceOrder;\n        data?.BillingPeriods.forEach((billingPeriod: any, index: number) => {\n            this.billingPeriod.push(new BillingPeriodLineInfo(billingPeriod, index));\n        });\n    }\n}\nexport class BillingPeriodLineInfo {\n    id: number;\n    startDate: string;\n    endDate: string;\n    isCurrentBillingPeriod: boolean;\n    totalOriginal: SpotValuGrpImpCppCpm;\n    totalRevised: SpotValuGrpImpCppCpm;\n    totalProjectedDeliveryWithoutADUSpots: SpotValuGrpImp;\n    totalProjectedDeliveryWithADUSpots: SpotValuGrpImp;\n    totalBillableToDateValue: string;\n    billingPeriod: string;\n    lines: LineInfo[] = [];\n    constructor(data: any, index: number) {\n        this.startDate = data.StartDate;\n        this.endDate = data.EndDate;\n        this.id = index;\n        this.startDate = data.StartDate;\n        this.endDate = data.EndDate;\n        this.isCurrentBillingPeriod = data.IsCurrentBillingPeriod;\n        this.billingPeriod = `${dayjs(this.startDate, \"YYYY/MM/DD\").format(\"DD MMM YYYY\")} - ${dayjs(this.endDate, \"YYYY/MM/DD\").format(\"DD MMM YYYY\")}`;\n        this.totalOriginal = new SpotValuGrpImpCppCpm(data.TotalOriginal);\n        this.totalRevised = new SpotValuGrpImpCppCpm(data.TotalRevised);\n        this.totalProjectedDeliveryWithADUSpots = new SpotValuGrpImp(data.TotalProjectedDeliveryWithADUSpots);\n        this.totalProjectedDeliveryWithoutADUSpots = new SpotValuGrpImp(data.TotalProjectedDeliveryWithoutADUSpots);\n        this.totalBillableToDateValue = data.TotalBillableToDateValue ? data.TotalBillableToDateValue : \"-\";\n        data?.Lines.forEach((lines: any) => {\n            this.lines.push(new LineInfo(lines));\n        });\n    }\n}\n\nexport class GenericLineInfo {\n    lineNumber: number;\n    original: ActualAndDisplaySpotValueGrpImpCppCpm;\n    revisedToDate: ActualAndDisplaySpotValueGrpImpCppCpm;\n    projectedDeliveryWithoutAdu: ActualAndDisplaySpotValueGrpImp;\n    projectedDeliveryAdu: ActualAndDisplaySpotValueGrpImp;\n    billableToDateValue: string;\n    inventoryCode: string;\n    programName: string;\n    programList: string[];\n    days: string;\n    len: string;\n    rate: number;\n    time: string;\n    cpp: number;\n    cpm: number;\n    postedInfoAvailableForAllAiredSpots: boolean;\n    constructor(data: any) {\n        this.lineNumber = data.LineNumber;\n        this.days = data.Days;\n        this.len = data.Length;\n        this.inventoryCode = data.InventoryCodeSellerProgramMap?.length\n            ? data.InventoryCodeSellerProgramMap[0].InventoryCode[0] ?? \"-\"\n            : \"-\";\n        this.programName = data.InventoryCodeSellerProgramMap?.length\n            ? data.InventoryCodeSellerProgramMap[0].SellerProgramName[0] ?? \"-\"\n            : \"-\";\n\n        this.programList = data.InventoryCodeSellerProgramMap?.length\n            ? data.InventoryCodeSellerProgramMap[0].SellerProgramName.slice(1)\n            : [];\n\n        this.rate = data.Rate;\n\n        this.original = new ActualAndDisplaySpotValueGrpImpCppCpm(data.Original);\n        this.revisedToDate = new ActualAndDisplaySpotValueGrpImpCppCpm(data.Revised);\n        // this.cpp = this.revisedToDate.cpp;\n        // this.cpm = this.revisedToDate.cpp;\n        this.projectedDeliveryWithoutAdu = new ActualAndDisplaySpotValueGrpImp(data.ProjectedDeliveryWithoutADUSpots);\n        this.projectedDeliveryAdu = new ActualAndDisplaySpotValueGrpImp(data.ProjectedDeliveryWithADUSpots);\n\n        this.billableToDateValue = data.BillableToDateValue[0] === \"-\" ? \"-\" : data.BillableToDateValue[1];\n        this.postedInfoAvailableForAllAiredSpots = data.PostedInfoAvailableForAllAiredSpots;\n\n        this.cpp = data.CPP;\n        this.cpm = data.CPM;\n    }\n}\nexport class LineInfo extends GenericLineInfo {\n    hidden: boolean;\n    subLines: GenericLineInfo[] = [];\n    constructor(data: any) {\n        super(data);\n        this.hidden = true;\n        data?.SubLineData?.forEach((subLine: any) => {\n            this.subLines.push(new GenericLineInfo(subLine));\n        });\n    }\n}\nexport class SalesUnit {\n    line_number: number;\n    inventory_code: string;\n    selling_title: string;\n    start_end_date: string;\n    length: string;\n    rate: string;\n    order_amount: string;\n    spot_played_till_date: string;\n    amount_till_date: string;\n    date_wise_data: SpotSummary[] = [];\n    constructor(object: any) {\n        this.line_number = object.line_number;\n        this.inventory_code = object.inventory_code;\n        this.selling_title = object.selling_title;\n        this.start_end_date = object.start_end_date;\n        this.length = object.length;\n        this.rate = object.rate;\n        this.order_amount = object.order_amount;\n        this.spot_played_till_date = object.spot_played_till_date;\n        this.amount_till_date = object.amount_till_date;\n        object.spot_summary.forEach((item: any) => {\n            const spotSummary = new SpotSummary(item);\n            this.date_wise_data.push(spotSummary);\n        });\n    }\n}\n// export class SalesUnit {\n//     line_number: number;\n//     selling_title: string;\n//     start_end_date: string;\n//     days: string;\n//     isci: string;\n//     inventory_code: string;\n//     length: string;\n//     rate: string;\n//     order_amount: string;\n//     spot_played_till_date: string;\n//     amount_till_date: string;\n//     spot_summary: SpotSummary[] = [];\n//     constructor(object) {\n//         this.line_number = object.line_number;\n//         this.selling_title = object.selling_title;\n//         this.start_end_date = object.start_end_date;\n//         this.days = object.days;\n//         this.isci = object.isci;\n//         this.inventory_code = object.inventory_code;\n//         this.length = object.length;\n//         this.rate = object.rate;\n//         this.order_amount = object.order_amount;\n//         this.spot_played_till_date = object.spot_played_till_date;\n//         this.amount_till_date = object.amount_till_date;\n//         object.spot_summary.forEach(item => {\n//             let spotSummary = new SpotSummary(item);\n//             this.spot_summary.push(spotSummary);\n//         });\n//     }\n// }\n\nexport class SpotSummary {\n    date: string;\n    original: number;\n    revision: number;\n    played: number;\n    constructor(object: any) {\n        this.date = object.date;\n        this.original = object.original;\n        this.revision = object.revision;\n        this.played = object.played;\n    }\n}\n","/* eslint-disable max-len */\nimport { CurrencyPipe, DecimalPipe, NgClass, NgFor, NgIf, NgStyle, NgTemplateOutlet } from \"@angular/common\";\nimport { ChangeDetectionStrategy, Component, Input, OnChanges, OnInit, SimpleChanges } from \"@angular/core\";\nimport { FormsModule } from \"@angular/forms\";\nimport {\n    AnnaCoreModule,\n    AnnaGlobalConfigService,\n    ICustomSingleSelect,\n    ShowEllipsisTextOnHoverDirective,\n} from \"@annalib/anna-core\";\nimport { AnnaDesignComponentsLibModule, IdText } from \"@annalib/anna-design-components-lib\";\nimport { OrderMetrics, PrimaryOrderPanelService } from \"@annalib/anna-feature-shared-lib\";\nimport { NgbTooltip } from \"@ng-bootstrap/ng-bootstrap\";\n\nimport {\n    BillingPeriodLineInfo,\n    SpotValuGrpImp,\n    SpotValuGrpImpCppCpm,\n} from \"../billing-report-table/models/billing-report-table.model\";\n\n@Component({\n    selector: \"anna-feature-billing-details-table\",\n    templateUrl: \"./billing-details-table.component.html\",\n    styleUrls: [\"./billing-details-table.component.scss\"],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [\n        NgClass,\n        NgIf,\n        AnnaDesignComponentsLibModule,\n        FormsModule,\n        NgTemplateOutlet,\n        NgFor,\n        NgbTooltip,\n        NgStyle,\n        DecimalPipe,\n        CurrencyPipe,\n        AnnaCoreModule,\n        NgTemplateOutlet,\n        ShowEllipsisTextOnHoverDirective,\n    ]\n})\nexport class BillingDetailsTableComponent implements OnChanges, OnInit {\n    // @Input() data: WeeklySpotResponse;\n    @Input() loading: boolean;\n    @Input() stationName: string;\n    @Input() logoImageUrl: string;\n    @Input() latestRevisionNo: number;\n    @Input() postingType: string;\n    @Input() isPayForPerformance: boolean;\n    @Input() allBillingPeriodList: BillingPeriodLineInfo[];\n    @Input() selectedBillingPeriod: BillingPeriodLineInfo;\n    @Input() isEquivalized: boolean;\n    @Input() orderId: string;\n    @Input() metric: string = \"GRP\";\n    cppOrCpm: \"CPP($)\" | \"CPM($)\";\n    currencyUnit = \"USD\";\n    numberOfSkeletonRows = Array(15).fill(0);\n    numberOfSkeletonCols = Array(10).fill(0);\n    borderClass: string = null;\n\n    totalRow: {\n        totalOriginal: {\n            actualSpot: string;\n            actualValue: string;\n            actualGrp: string;\n            actualImps: string;\n            actualCpp: string;\n            actualCpm: string;\n        };\n        totalRevised: {\n            actualSpot: string;\n            actualValue: string;\n            actualGrp: string;\n            actualImps: string;\n            actualCpp: string;\n            actualCpm: string;\n        };\n        totalProjectedDeliveryWithoutAdu: {\n            actualSpot: string;\n            actualValue: string;\n            actualGrp: string;\n            actualImps: string;\n        };\n        totalProjectedDeliveryAdu: { actualSpot: string; actualValue: string; actualGrp: string; actualImps: string };\n        totalBillableValue: number | string;\n    };\n    // totalRow: {\n    //   totalOriginal: ActualSpotValueGrpImpCppCpm,\n    //   totalRevised: ActualSpotValueGrpImpCppCpm,\n    //   totalProjectedDeliveryWithoutAdu: ActualSpotValueGrpImp,\n    //   totalProjectedDeliveryAdu: ActualSpotValueGrpImp,\n    //   totalBillableValue: number | string\n    // };\n    orderMetrics: IdText[];\n    metricDropdownConfig: ICustomSingleSelect;\n    selectedMetric: IdText;\n    selectedKeys: {\n        grporImps: \"grp\" | \"imps\";\n        cpporCpm: \"cpp\" | \"cpm\";\n        actualGrporImps: \"actualGrp\" | \"actualImps\";\n        actualCpporCpm: \"actualCpp\" | \"actualCpm\";\n    };\n    disableDropDown: boolean;\n    showTotalRow: boolean = true;\n    showOrHideToggleForTotalRow: boolean = true;\n    isExpandRowsChecked: boolean = false;\n    disableExpandCheckbox: boolean = true;\n\n    constructor(\n        private primaryOrderPanelService: PrimaryOrderPanelService,\n        private annaGlobalConfig: AnnaGlobalConfigService,\n    ) {\n        this.setDropDownData();\n    }\n    ngOnInit() {\n        this.calculateTopPositionOfScrollBar();\n    }\n\n    ngOnChanges(changes: SimpleChanges) {\n        if (changes?.selectedBillingPeriod && changes.selectedBillingPeriod?.currentValue) {\n            this.setBorderBottomForTable(changes.selectedBillingPeriod.currentValue);\n            this.enableDisableExpandRowCheckbox();\n            this.createTotalRow();\n            this.disableDropDown = !this.selectedBillingPeriod && this.selectedBillingPeriod.lines.length === 0;\n        }\n        if (changes.metric && changes.metric.currentValue) {\n            this.metricChanged(this.orderMetrics.find((m) => m.text === this.metric));\n        }\n    }\n\n    setBorderBottomForTable(data: BillingPeriodLineInfo) {\n        const viewportHeight = window.innerHeight;\n        const dataOnTopHeight = 218;\n        const marginFromBottom = 45;\n        const maxHeightOfRow = 45;\n        const headerHeight = 45;\n\n        const heightLeftForTable = viewportHeight - dataOnTopHeight - marginFromBottom;\n        const maximumRowsThatCanBeRenderedWithoutScrollBar =\n            Math.ceil((heightLeftForTable - headerHeight - maxHeightOfRow) / maxHeightOfRow) + 1;\n        if (data?.lines?.length && maximumRowsThatCanBeRenderedWithoutScrollBar <= data?.lines?.length) {\n            this.borderClass = \"bottom-border\";\n        } else {\n            this.borderClass = null;\n        }\n    }\n\n    createTotalRow() {\n        this.totalRow = {\n            totalOriginal: {\n                actualSpot: null,\n                actualValue: null,\n                actualGrp: null,\n                actualImps: null,\n                actualCpp: null,\n                actualCpm: null,\n            },\n            totalRevised: {\n                actualSpot: null,\n                actualValue: null,\n                actualGrp: null,\n                actualImps: null,\n                actualCpp: null,\n                actualCpm: null,\n            },\n            totalProjectedDeliveryWithoutAdu: {\n                actualSpot: null,\n                actualValue: null,\n                actualGrp: null,\n                actualImps: null,\n            },\n            totalProjectedDeliveryAdu: { actualSpot: null, actualValue: null, actualGrp: null, actualImps: null },\n            totalBillableValue: null,\n        };\n        // this.data.totalBillingPeriodWiseSummaryData.forEach((summaryData: TotalBillingData) => {\n        //     if (summaryData.billingPeriod == this.selectedBillingPeriod?.text) {\n        //         this.totalRow.totalOriginal = this.sumValueWithCppCpm(summaryData.totalOriginal);\n        //         this.totalRow.totalRevised = this.sumValueWithCppCpm(summaryData.totalRevised);\n        //         this.totalRow.totalBillableValue = summaryData.totalBillable.value;\n        //         this.totalRow.totalProjectedDeliveryWithoutAdu = this.sumValue(summaryData.projectedDeliveryWithoutAdu);\n        //         this.totalRow.totalProjectedDeliveryAdu = this.sumValue(summaryData.projectedDeliveryAdu);\n        //     }\n        // });\n        this.totalRow.totalOriginal = this.sumValueWithCppCpm(this.selectedBillingPeriod.totalOriginal);\n        this.totalRow.totalRevised = this.sumValueWithCppCpm(this.selectedBillingPeriod.totalRevised);\n        this.totalRow.totalBillableValue = this.selectedBillingPeriod.totalBillableToDateValue;\n        this.totalRow.totalProjectedDeliveryWithoutAdu = this.sumValue(\n            this.selectedBillingPeriod.totalProjectedDeliveryWithoutADUSpots,\n        );\n        this.totalRow.totalProjectedDeliveryAdu = this.sumValue(\n            this.selectedBillingPeriod.totalProjectedDeliveryWithADUSpots,\n        );\n        this.calculateTopPositionOfScrollBar();\n    }\n\n    sumValue(eachLine: SpotValuGrpImp): {\n        actualSpot: string;\n        actualValue: string;\n        actualGrp: string;\n        actualImps: string;\n    } {\n        return {\n            actualValue: eachLine.value,\n            actualSpot: eachLine.spot,\n            actualGrp: eachLine.grp,\n            actualImps: eachLine.imps,\n        };\n    }\n\n    sumValueWithCppCpm(eachLine: SpotValuGrpImpCppCpm): {\n        actualSpot: string;\n        actualValue: string;\n        actualGrp: string;\n        actualImps: string;\n        actualCpp: string;\n        actualCpm: string;\n    } {\n        return {\n            actualValue: eachLine.value,\n            actualSpot: eachLine.spot,\n            actualGrp: eachLine.grp,\n            actualImps: eachLine.imps,\n            actualCpp: eachLine.cpp,\n            actualCpm: eachLine.cpm,\n        };\n    }\n\n    hideorShowTd(index: number) {\n        this.selectedBillingPeriod.lines[index].hidden = !this.selectedBillingPeriod.lines[index].hidden;\n        // this.data.line[index].hidden = !this.data.line[index].hidden;\n    }\n    expandRowsClicked() {\n        this.isExpandRowsChecked = !this.isExpandRowsChecked;\n        this.expandAllRows();\n    }\n\n    expandAllRows() {\n        this.selectedBillingPeriod.lines.forEach((row) => {\n            if (row.subLines.length > 0) {\n                row.hidden = !this.isExpandRowsChecked;\n            }\n        });\n    }\n\n    enableDisableExpandRowCheckbox(): void {\n        this.disableExpandCheckbox = !this.selectedBillingPeriod.lines.some((row) => row.subLines.length > 0);\n        if (this.disableExpandCheckbox) this.isExpandRowsChecked = false;\n    }\n\n    selectNextOrPreviousPeriod(isNextPeriod: boolean) {\n        /** if disable condition - then click not allowed */\n        if (\n            (this.selectedBillingPeriod.id === 0 && !isNextPeriod) ||\n            (this.selectedBillingPeriod.id === this.allBillingPeriodList.length - 1 && isNextPeriod)\n        ) {\n            return;\n        }\n        const index = this.allBillingPeriodList.findIndex((x) => x.id === this.selectedBillingPeriod.id);\n        if (isNextPeriod) {\n            //  this.setEachWeekData(isNextOrder);\n            this.selectedBillingPeriod = this.allBillingPeriodList[index + 1];\n            this.createTotalRow();\n            this.enableDisableExpandRowCheckbox();\n            this.expandAllRows();\n        } else {\n            //   this.setEachWeekData(isNextOrder);\n            this.selectedBillingPeriod = this.allBillingPeriodList[index - 1];\n            this.createTotalRow();\n            this.enableDisableExpandRowCheckbox();\n            this.expandAllRows();\n        }\n    }\n\n    setDropDownData() {\n        this.orderMetrics = this.primaryOrderPanelService.getOrderMetricsDropdownValues();\n        this.setMetricDropdownConfig();\n    }\n\n    setMetricDropdownConfig() {\n        this.metricDropdownConfig = { ...this.annaGlobalConfig.defaultSingleSelectConfig };\n        this.metricDropdownConfig.placeholder = \"Select metric\";\n    }\n\n    metricChanged(event: IdText) {\n        this.selectedMetric = event;\n        this.metric = this.selectedMetric.text;\n        this.cppOrCpm = this.metric === \"GRP\" ? \"CPP($)\" : \"CPM($)\";\n        this.selectedKeys = {\n            grporImps: event.text === OrderMetrics.rating ? \"grp\" : \"imps\",\n            cpporCpm: event.text === OrderMetrics.rating ? \"cpp\" : \"cpm\",\n            actualGrporImps: event.text === OrderMetrics.rating ? \"actualGrp\" : \"actualImps\",\n            actualCpporCpm: event.text === OrderMetrics.rating ? \"actualCpp\" : \"actualCpm\",\n        };\n    }\n\n    showHideTotalRow() {\n        this.showTotalRow = !this.showTotalRow;\n        this.calculateTopPositionOfScrollBar();\n    }\n\n    calculateTopPositionOfScrollBar() {\n        const isSmallerScreenSize = window.innerWidth < 1635;\n        const isSpotMissingTextPresent = this.totalRow?.totalBillableValue === \"-\";\n\n        if (!this.showTotalRow) {\n            const topScrollBarHeight = isSmallerScreenSize && isSpotMissingTextPresent ? \"28px\" : \"20px\";\n            document.documentElement.style.setProperty(`--hide-total-row-scrollbar-offset`, topScrollBarHeight);\n        } else {\n            const topScrollBarHeight = isSmallerScreenSize && isSpotMissingTextPresent ? \"-32px\" : \"-25px\";\n            document.documentElement.style.setProperty(`--hide-total-row-scrollbar-offset`, topScrollBarHeight);\n        }\n    }\n}\n","<div class=\"main-seperate-tab-background\">\n    <nav>\n        <img\n            class=\"anna-logo\"\n            src=\"{{ logoImageUrl }}\"\n            alt=\"Anna Logo\"\n        />\n        <img\n            class=\"circuit-img\"\n            src=\"assets/images/CircuitGrid-BG-PNG.png\"\n            alt=\"Skynet Logo\"\n        />\n    </nav>\n    <section class=\"main-container\">\n        <div class=\"heading\">BILLING DETAILS FOR ORDER #{{ orderId }}</div>\n        <div class=\"info\"></div>\n\n        <div\n            id=\"billingtable\"\n            class=\"col-12 p-0 table-scroll-styling {{ borderClass }}\"\n            [ngClass]=\"{\n                'loading-table': loading,\n                'increased-total-row-height': !loading && totalRow?.totalBillableValue === '-'\n            }\"\n        >\n            <button\n                *ngIf=\"showOrHideToggleForTotalRow && !loading && selectedBillingPeriod.lines.length > 0\"\n                [ngClass]=\"{\n                    'shift-toggle-top-on-total-row-click': !showTotalRow\n                }\"\n                class=\"show-or-hide-toggle-btn\"\n                (click)=\"showHideTotalRow()\"\n            >\n                <i\n                    class=\"mdi mdi-menu-swap\"\n                    tooltipClass=\"show-or-hide-toggle-tooltip\"\n                    placement=\"auto\"\n                    container=\"body\"\n                    [ngbTooltip]=\"showOrHideToggleForTotalRowTooltip\"\n                ></i>\n            </button>\n            <table>\n                <colgroup>\n                    <col />\n                    <col />\n                    <col />\n                    <col />\n                    <col />\n                    <col />\n                    <col />\n                    <col />\n                    <col />\n                    <col />\n                </colgroup>\n                <thead>\n                    <!-- DROPDOWN -->\n                    <tr class=\"dropdown-row\">\n                        <td\n                            class=\"posting-type-container\"\n                            colspan=\"3\"\n                            [style.visibility]=\"loading ? 'hidden' : 'visible'\"\n                        >\n                            <div class=\"display-flex-container\">\n                                <div\n                                    annaCoreShowEllipsisTextOnHover\n                                    class=\"posting-type-header station-name overflow-text\"\n                                >\n                                    Station: <b>{{ stationName }}</b>\n                                </div>\n                                <div\n                                    annaCoreShowEllipsisTextOnHover\n                                    class=\"posting-type-header posting-type overflow-text\"\n                                >\n                                    Posting Type: <b>{{ postingType }}</b>\n                                </div>\n\n                                <div class=\"mtn-4\">\n                                    <anna-design-equivalisation-of-data-toggle-btn\n                                        *ngIf=\"!loading\"\n                                        [toShow]=\"true\"\n                                        class=\"billing-view-toggle\"\n                                        [defaultEquivalisedValue]=\"isEquivalized\"\n                                        [equivalisationTooltipClass]=\"'billingdetails-equivalization-tooltip'\"\n                                    ></anna-design-equivalisation-of-data-toggle-btn>\n                                </div>\n                            </div>\n                        </td>\n                        <td colspan=\"2\">\n                            <anna-design-single-select\n                                *ngIf=\"!loading\"\n                                [items]=\"orderMetrics\"\n                                class=\"order-metrics-dropdown billing-details-dropdown\"\n                                [selectedItem]=\"selectedMetric\"\n                                [config]=\"metricDropdownConfig\"\n                                [disabled]=\"disableDropDown\"\n                                (valueChanged)=\"metricChanged($event)\"\n                            >\n                            </anna-design-single-select>\n                            <anna-design-skt-loader\n                                *ngIf=\"loading\"\n                                [count]=\"1\"\n                                [theme]=\"{ width: '100%', height: '30px' }\"\n                            ></anna-design-skt-loader>\n                        </td>\n                        <td\n                            colspan=\"5\"\n                            *ngIf=\"!loading\"\n                        >\n                            <div class=\"billing-flex-container\">\n                                <div\n                                    class=\"icon-container\"\n                                    [ngClass]=\"{ disabled: selectedBillingPeriod.id === 0 }\"\n                                    (click)=\"selectNextOrPreviousPeriod(false)\"\n                                >\n                                    <i class=\"mdi mdi-chevron-down expand-icon left-icon\"></i>\n                                </div>\n                                <div class=\"input-div\">\n                                    <span> Billing Period</span>\n                                    <input\n                                        class=\"form-control\"\n                                        [(ngModel)]=\"selectedBillingPeriod.billingPeriod\"\n                                        type=\"text\"\n                                    />\n                                </div>\n\n                                <div\n                                    class=\"icon-container\"\n                                    [ngClass]=\"{\n                                        disabled: selectedBillingPeriod.id === allBillingPeriodList.length - 1\n                                    }\"\n                                    (click)=\"selectNextOrPreviousPeriod(true)\"\n                                >\n                                    <i class=\"mdi mdi-chevron-down expand-icon right-icon\"></i>\n                                </div>\n                            </div>\n                        </td>\n                    </tr>\n                    <tr class=\"expand-all-row\">\n                        <td colspan=\"10\">\n                            <div\n                                class=\"expand-all-container\"\n                                *ngIf=\"!loading\"\n                            >\n                                <span class=\"expand-all-label\">Expand All</span>\n                                <i\n                                    class=\"mi mdi-check-box check-box\"\n                                    [ngClass]=\"{\n                                        disabled: disableExpandCheckbox,\n                                        'mdi-check-box': isExpandRowsChecked,\n                                        'mdi-check-box-outline-blank unchecked': !isExpandRowsChecked\n                                    }\"\n                                    (click)=\"expandRowsClicked()\"\n                                ></i>\n                            </div>\n                        </td>\n                    </tr>\n                    <!-- DROPDOWN -->\n                    <tr class=\"header-row\">\n                        <th rowspan=\"2\">LINE</th>\n                        <th\n                            id=\"inventory_th\"\n                            rowspan=\"2\"\n                        >\n                            SELLER PROGRAM <br />\n                            <span>INVENTORY CODE</span>\n                        </th>\n                        <th rowspan=\"2\">DAYS</th>\n                        <th rowspan=\"2\">LEN</th>\n                        <th\n                            class=\"white-space-nowrap\"\n                            rowspan=\"2\"\n                        >\n                            {{ isEquivalized ? \"EUR($)\" : \"RATE($)\" }}\n                            <br />\n                            <span> {{ cppOrCpm }} </span>\n                        </th>\n                    </tr>\n                    <tr class=\"header-row\">\n                        <th>\n                            ORIGINAL BOOKING ($) <br />\n                            <ng-container\n                                [ngTemplateOutlet]=\"secondaryTableHeader\"\n                                [ngTemplateOutletContext]=\"{ showCppOrCpm: true }\"\n                            ></ng-container>\n                        </th>\n                        <th>\n                            <label\n                                >REVISED BOOKING <br />\n                                IN REV-{{ latestRevisionNo }} ($)</label\n                            >\n                            <br />\n                            <ng-container\n                                [ngTemplateOutlet]=\"secondaryTableHeader\"\n                                [ngTemplateOutletContext]=\"{ showCppOrCpm: true }\"\n                            ></ng-container>\n                        </th>\n                        <th>\n                            <label>\n                                PROJECTED DELIVERY <br />\n                                WITHOUT ADUs ($)\n                            </label>\n                            <br />\n                            <ng-container\n                                [ngTemplateOutlet]=\"secondaryTableHeader\"\n                                [ngTemplateOutletContext]=\"{ showCppOrCpm: false }\"\n                            ></ng-container>\n                        </th>\n                        <th>\n                            <label\n                                >PROJECTED DELIVERY <br />\n                                WITH ADUs ($)</label\n                            >\n                            <br />\n                            <ng-container\n                                [ngTemplateOutlet]=\"secondaryTableHeader\"\n                                [ngTemplateOutletContext]=\"{ showCppOrCpm: false }\"\n                            ></ng-container>\n                        </th>\n                        <th class=\"border-rt\">\n                            <label>\n                                BILLABLE <br *ngIf=\"isPayForPerformance\" />\n                                {{ isPayForPerformance === true ? \"WITH ADUs ($)\" : \"($)\" }} <br\n                            /></label>\n                        </th>\n                    </tr>\n                </thead>\n                <tbody>\n                    <ng-container *ngIf=\"loading\">\n                        <tr *ngFor=\"let numrow of numberOfSkeletonRows\">\n                            <td *ngFor=\"let numcol of numberOfSkeletonCols\">\n                                <anna-design-skt-loader\n                                    [count]=\"1\"\n                                    [theme]=\"{ height: '8px' }\"\n                                ></anna-design-skt-loader>\n                            </td>\n                        </tr>\n                    </ng-container>\n                    <ng-container *ngIf=\"!loading\">\n                        <!-- TOTAL ROW -->\n                        <tr\n                            *ngIf=\"showTotalRow\"\n                            class=\"total-row\"\n                        >\n                            <!-- <td></td> -->\n                            <td colspan=\"5\">\n                                <b class=\"pl-8\"\n                                    >Total for {{ selectedBillingPeriod.lines.length }} Lines in the selected period</b\n                                >\n                            </td>\n                            <!-- RHS TABLE TOTAL ROW WEEK WISE DATA -->\n                            <ng-container>\n                                <td class=\"total-row-custom-shadow\">\n                                    <ng-container\n                                        [ngTemplateOutlet]=\"totalData\"\n                                        [ngTemplateOutletContext]=\"{\n                                            value: totalRow.totalOriginal,\n                                            bold: true,\n                                            showCppOrCpm: true\n                                        }\"\n                                    >\n                                    </ng-container>\n                                </td>\n                                <td>\n                                    <ng-container\n                                        [ngTemplateOutlet]=\"totalData\"\n                                        [ngTemplateOutletContext]=\"{\n                                            value: totalRow.totalRevised,\n                                            bold: true,\n                                            showCppOrCpm: true\n                                        }\"\n                                    >\n                                    </ng-container>\n                                </td>\n                                <td>\n                                    <ng-container\n                                        [ngTemplateOutlet]=\"totalData\"\n                                        [ngTemplateOutletContext]=\"{\n                                            value: totalRow.totalProjectedDeliveryWithoutAdu,\n                                            bold: true,\n                                            showCppOrCpm: false\n                                        }\"\n                                    >\n                                    </ng-container>\n                                </td>\n                                <td>\n                                    <ng-container\n                                        [ngTemplateOutlet]=\"totalData\"\n                                        [ngTemplateOutletContext]=\"{\n                                            value: totalRow.totalProjectedDeliveryAdu,\n                                            bold: true,\n                                            showCppOrCpm: false\n                                        }\"\n                                    >\n                                    </ng-container>\n                                </td>\n                                <td class=\"border-rt\">\n                                    <b *ngIf=\"totalRow.totalBillableValue !== '-'\">\n                                        {{ totalRow.totalBillableValue }}\n                                    </b>\n                                    <b *ngIf=\"totalRow.totalBillableValue === '-'\">\n                                        <span>\n                                            - <br />\n                                            <i>(Data missing for a few spots)</i></span\n                                        >\n                                    </b>\n                                    <br />\n                                </td>\n                            </ng-container>\n                        </tr>\n                        <!-- REMAINNING ROWS -->\n                        <ng-container *ngFor=\"let eachLine of selectedBillingPeriod.lines; let index = index\">\n                            <!-- PARENT LINE TR -->\n                            <tr\n                                class=\"table-body-row\"\n                                (click)=\"hideorShowTd(index)\"\n                                [ngClass]=\"{\n                                    'pointer-cursor': eachLine.subLines.length,\n                                    'parent-with-subline-bg-color': eachLine.subLines.length && !eachLine.hidden\n                                }\"\n                            >\n                                <td>\n                                    <span class=\"line-number\">{{ eachLine.lineNumber }} </span>\n                                    <ng-container *ngIf=\"eachLine.subLines.length\">\n                                        <i\n                                            *ngIf=\"eachLine.hidden\"\n                                            class=\"mdi mdi-menu-down\"\n                                            container=\"body\"\n                                            ngbTooltip=\"This line contains multiple sub-lines.\"\n                                            tooltipClass=\"custom-tooltip\"\n                                            placement=\"right\"\n                                        >\n                                        </i>\n                                        <i\n                                            *ngIf=\"!eachLine.hidden\"\n                                            class=\"mdi mdi-menu-up\"\n                                            container=\"body\"\n                                            ngbTooltip=\"This line contains multiple sub-lines.\"\n                                            tooltipClass=\"custom-tooltip\"\n                                            placement=\"right\"\n                                        >\n                                        </i>\n                                    </ng-container>\n                                </td>\n                                <td>\n                                    <div class=\"row inv-program-column\">\n                                        <p\n                                            annaCoreShowEllipsisTextOnHover\n                                            [ngClass]=\"{ 'reduced-width': eachLine.programList.length > 0 }\"\n                                        >\n                                            {{ eachLine.programName }}\n                                        </p>\n                                        <i\n                                            *ngIf=\"eachLine.programList.length > 0\"\n                                            class=\"tooltip-text\"\n                                            #arrowTooltip=\"ngbTooltip\"\n                                            container=\"body\"\n                                            [ngbTooltip]=\"eachLine.programList.join(', ')\"\n                                        >\n                                            +{{ eachLine.programList.length }}\n                                        </i>\n                                    </div>\n                                    <div class=\"row inv-program-column\">\n                                        <span annaCoreShowEllipsisTextOnHover>{{ eachLine.inventoryCode }}</span>\n                                    </div>\n                                </td>\n                                <td>\n                                    {{ eachLine.days !== \"0\" ? eachLine.days : \"-\" }}\n                                </td>\n                                <td>\n                                    {{ eachLine.len }}\n                                </td>\n                                <td>\n                                    {{ eachLine.rate | currency: currencyUnit : \"symbol\" : \"1.0-2\" }} <br />\n                                    <span>{{\n                                        eachLine[selectedKeys.cpporCpm] | currency: currencyUnit : \"symbol\" : \"1.0-2\"\n                                    }}</span>\n                                </td>\n                                <!-- RHS TABLE WEEK WISE DATA -->\n                                <ng-container>\n                                    <td>\n                                        <ng-container\n                                            [ngTemplateOutlet]=\"tableData\"\n                                            [ngTemplateOutletContext]=\"{\n                                                value: eachLine.original,\n                                                showCppOrCpm: true\n                                            }\"\n                                        >\n                                        </ng-container>\n                                    </td>\n                                    <td>\n                                        <ng-container\n                                            [ngTemplateOutlet]=\"tableData\"\n                                            [ngTemplateOutletContext]=\"{\n                                                value: eachLine.revisedToDate,\n                                                showCppOrCpm: true\n                                            }\"\n                                        >\n                                        </ng-container>\n                                    </td>\n\n                                    <td>\n                                        <ng-container\n                                            [ngTemplateOutlet]=\"tableData\"\n                                            [ngTemplateOutletContext]=\"{\n                                                value: eachLine.projectedDeliveryWithoutAdu,\n                                                showCppOrCpm: false\n                                            }\"\n                                        >\n                                        </ng-container>\n                                    </td>\n                                    <td>\n                                        <ng-container\n                                            [ngTemplateOutlet]=\"tableData\"\n                                            [ngTemplateOutletContext]=\"{\n                                                value: eachLine.projectedDeliveryAdu,\n                                                showCppOrCpm: false\n                                            }\"\n                                        >\n                                        </ng-container>\n                                    </td>\n                                    <td>\n                                        {{\n                                            eachLine.billableToDateValue === \"-\"\n                                                ? \"-\"\n                                                : (eachLine.billableToDateValue\n                                                  | currency: currencyUnit : \"symbol\" : \"1.0-0\")\n                                        }}\n                                    </td>\n                                </ng-container>\n                            </tr>\n                            <!-- SUB LINE TR -->\n                            <ng-container *ngFor=\"let subLine of eachLine.subLines; let i = index\">\n                                <tr\n                                    *ngIf=\"!eachLine.hidden\"\n                                    class=\"sub-line-color\"\n                                >\n                                    <td>\n                                        {{ null }}\n                                    </td>\n                                    <td class=\"custom-padding\">\n                                        <div class=\"row inv-program-column\">\n                                            <p\n                                                annaCoreShowEllipsisTextOnHover\n                                                [ngClass]=\"{ 'reduced-width': eachLine.programList.length > 0 }\"\n                                            >\n                                                {{ subLine.programName }}\n                                            </p>\n                                            <i\n                                                *ngIf=\"subLine.programList.length > 0\"\n                                                class=\"tooltip-text\"\n                                                #arrowTooltip=\"ngbTooltip\"\n                                                container=\"body\"\n                                                [ngbTooltip]=\"subLine.programList.join(', ')\"\n                                            >\n                                                +{{ subLine.programList.length }}\n                                            </i>\n                                        </div>\n                                        <div class=\"row inv-program-column\">\n                                            <span annaCoreShowEllipsisTextOnHover>{{ subLine.inventoryCode }}</span>\n                                        </div>\n                                    </td>\n                                    <td>\n                                        {{ subLine.days !== \"0\" ? subLine.days : \"-\" }}\n                                    </td>\n                                    <td>\n                                        {{ subLine.len }}\n                                    </td>\n                                    <td>\n                                        {{ subLine.rate | currency: currencyUnit : \"symbol\" : \"1.0-2\" }} <br />\n                                        <span> {{ subLine[selectedKeys.cpporCpm] }} </span>\n                                    </td>\n                                    <!-- <td>\n                        <ng-container [ngTemplateOutlet]=\"tableData\"\n                            [ngTemplateOutletContext]=\"{value: subLine.original}\">\n                        </ng-container>\n                        </td>\n                        <td>\n                        <ng-container [ngTemplateOutlet]=\"tableData\"\n                            [ngTemplateOutletContext]=\"{value: subLine.revisedToDate}\">\n                        </ng-container>\n                        </td>\n                        <td style=\"border-end-width: medium; border-end-color: lightgray\">\n                        <ng-container [ngTemplateOutlet]=\"tableData\"\n                            [ngTemplateOutletContext]=\"{value: subLine.billableToDate}\">\n                        </ng-container>\n                        </td> -->\n                                    <!-- RHS TABLE -->\n                                    <ng-container>\n                                        <td>\n                                            <ng-container\n                                                [ngTemplateOutlet]=\"tableData\"\n                                                [ngTemplateOutletContext]=\"{\n                                                    value: subLine.original,\n                                                    showCppOrCpm: true\n                                                }\"\n                                            >\n                                            </ng-container>\n                                        </td>\n                                        <td>\n                                            <ng-container\n                                                [ngTemplateOutlet]=\"tableData\"\n                                                [ngTemplateOutletContext]=\"{\n                                                    value: subLine.revisedToDate,\n                                                    showCppOrCpm: true\n                                                }\"\n                                            >\n                                            </ng-container>\n                                        </td>\n                                        <td>\n                                            <ng-container\n                                                [ngTemplateOutlet]=\"tableData\"\n                                                [ngTemplateOutletContext]=\"{\n                                                    value: subLine.projectedDeliveryWithoutAdu,\n                                                    showCppOrCpm: false\n                                                }\"\n                                            >\n                                            </ng-container>\n                                        </td>\n                                        <td>\n                                            <ng-container\n                                                [ngTemplateOutlet]=\"tableData\"\n                                                [ngTemplateOutletContext]=\"{\n                                                    value: subLine.projectedDeliveryAdu,\n                                                    showCppOrCpm: false\n                                                }\"\n                                            >\n                                            </ng-container>\n                                        </td>\n                                        <td>\n                                            {{\n                                                subLine.billableToDateValue === \"-\"\n                                                    ? \"-\"\n                                                    : (subLine.billableToDateValue\n                                                      | currency: currencyUnit : \"symbol\" : \"1.0-0\")\n                                            }}\n                                        </td>\n                                    </ng-container>\n                                </tr>\n                            </ng-container>\n                        </ng-container>\n                    </ng-container>\n                </tbody>\n            </table>\n        </div>\n\n        <ng-template\n            #tableData\n            let-key=\"value\"\n            let-isBold=\"bold\"\n            let-showCppOrCpm=\"showCppOrCpm\"\n        >\n            <div\n                class=\"lht\"\n                [ngStyle]=\"{ 'font-weight': isBold ? 'bold' : 'normal' }\"\n            >\n                <span class=\"color-black\">\n                    {{ key.value }}\n                </span>\n            </div>\n            <div\n                class=\"lht\"\n                [ngStyle]=\"{ 'font-weight': isBold ? 'bold' : 'normal' }\"\n            >\n                <span>\n                    {{ key.spot }} |\n                    {{ key[selectedKeys.grporImps] }}\n                    <ng-container *ngIf=\"showCppOrCpm\"> | {{ key[selectedKeys.cpporCpm] }} </ng-container>\n                </span>\n            </div>\n        </ng-template>\n\n        <ng-template\n            #totalData\n            let-key=\"value\"\n            let-isBold=\"bold\"\n            let-showCppOrCpm=\"showCppOrCpm\"\n        >\n            <div\n                class=\"lht\"\n                [ngStyle]=\"{ 'font-weight': isBold ? 'bold' : 'normal' }\"\n            >\n                <span class=\"color-black\">\n                    {{ key.actualValue }}\n                </span>\n            </div>\n            <div\n                class=\"lht\"\n                [ngStyle]=\"{ 'font-weight': isBold ? 'bold' : 'normal' }\"\n            >\n                <span>\n                    {{ key.actualSpot }} |\n                    {{ key[selectedKeys.actualGrporImps] }}\n                    <ng-container *ngIf=\"showCppOrCpm\"> | {{ key[selectedKeys.actualCpporCpm] }} </ng-container>\n                </span>\n            </div>\n        </ng-template>\n        <!-- <ng-template #totalData let-key=\"value\" let-isBold=\"bold\" let-showCppOrCpm=\"showCppOrCpm\">\n            <div class=\"lht\" [ngStyle]=\"{'font-weight': isBold ? 'bold': 'normal'}\">\n                <span class=\"color-black\">\n                    {{ key.actualValue | currency: currencyUnit:\"symbol\":\"1.0-0\"}}\n                </span>\n            </div>\n            <div class=\"lht\" [ngStyle]=\"{'font-weight': isBold ? 'bold': 'normal'}\">\n                <span>\n                    {{ key.actualSpot| AnnaConvertZeroOrNullOrUndefined : \"-\" }} |\n                    {{ key[selectedKeys.actualGrporImps] | number: \"1.0-1\"}}\n                    <ng-container *ngIf=\"showCppOrCpm\"> | {{ key[selectedKeys.actualCpporCpm] | currency:\n                        currencyUnit:\"symbol\":\"1.0-0\" }} </ng-container>\n                </span>\n            </div>\n        </ng-template> -->\n\n        <ng-template\n            #secondaryTableHeader\n            let-showCppOrCpm=\"showCppOrCpm\"\n        >\n            <ng-container *ngIf=\"metric\">\n                <span class=\"total-row-data\"\n                    >SPOTS | {{ metric }}<ng-container *ngIf=\"showCppOrCpm\"> | {{ cppOrCpm }} </ng-container></span\n                >\n            </ng-container>\n        </ng-template>\n        <ng-template> </ng-template>\n\n        <ng-template #totalEquivalizationRowTooltip>\n            <p class=\"equivalization-row\">\n                Only the total row have their 30-second Impressions / GRPs / CPP /CPM weighted up/down in proportion to\n                their length. The values for each line as per the order remains unequivalised.\n            </p>\n        </ng-template>\n    </section>\n</div>\n\n<ng-template #showOrHideToggleForTotalRowTooltip>\n    <div>\n        {{ showOrHideToggleForTotalRow && !showTotalRow ? \"Show Total Row\" : \"Hide Total Row\" }}\n    </div>\n</ng-template>\n","import { DatePipe, NgClass, NgFor, NgIf, NgStyle, NgTemplateOutlet } from \"@angular/common\";\nimport {\n    ChangeDetectionStrategy,\n    Component,\n    EventEmitter,\n    Input,\n    input,\n    OnChanges,\n    OnInit,\n    Output,\n    SimpleChanges,\n} from \"@angular/core\";\nimport { RouterLink } from \"@angular/router\";\nimport { AnnaCoreModule, AnnaGlobalConfigService, ICustomSingleSelect } from \"@annalib/anna-core\";\nimport {\n    AnnaDesignComponentsLibModule,\n    GenericMessageBoxTheme,\n    IdText,\n    MessageBoxData,\n    MissingPostedData,\n} from \"@annalib/anna-design-components-lib\";\nimport { OrderMetrics, PrimaryOrderPanelService } from \"@annalib/anna-feature-shared-lib\";\nimport { NgbTooltip } from \"@ng-bootstrap/ng-bootstrap\";\n\nimport { MeasurementAgencyInOrderSummary } from \"../primary-order-panel/models/primary-order-panel.model\";\nimport {\n    BillingReportTableMissingPostedDataRequestPayload,\n    TotalBillingData,\n    WeeklySpotResponse,\n} from \"./models/billing-report-table.model\";\n\n@Component({\n    selector: \"anna-feature-billing-report-table\",\n    templateUrl: \"./billing-report-table.component.html\",\n    styleUrls: [\"./billing-report-table.component.scss\"],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [\n        NgIf,\n        NgClass,\n        AnnaDesignComponentsLibModule,\n        NgbTooltip,\n        RouterLink,\n        NgTemplateOutlet,\n        NgFor,\n        AnnaCoreModule,\n        NgStyle,\n        DatePipe,\n    ],\n})\nexport class BillingReportTableComponent implements OnInit, OnChanges {\n    measurementAgency = input<string>(null);\n    @Input() missingPostedDataPayload: BillingReportTableMissingPostedDataRequestPayload;\n    @Input() missingPostedData: MissingPostedData;\n    @Input() billingReportData: WeeklySpotResponse;\n    @Input() queryParamForDetailsPage: any;\n    @Input() parentTab: \"TV Revenue\" | \"Other Revenue\";\n    @Input() billingWiseData: TotalBillingData[];\n    @Input() isEquivalisedData: boolean;\n    @Input() loading: boolean;\n    @Input() measurementName: string;\n    @Input() billingDetailsUrl: string;\n    @Input() isDeletedOrder: boolean;\n    @Input() isPoDOrder: boolean;\n    @Output() viewDetails = new EventEmitter();\n    MeasurementAgencyInOrderSummary = MeasurementAgencyInOrderSummary;\n\n    tableBottomBorder: string = \"\";\n    noDataWidth: string = \"55%\";\n    numberOfSkeletonRows = Array(12).fill(0);\n    numberOfSkeletonCols = Array(8).fill(0);\n    currencyUnit = \"USD\";\n    cppOrCpm: \"CPP($)\" | \"CPM($)\";\n    selectedKeys: { grporImps: string; cpporCpm: string };\n    orderMetrics: IdText[] = [];\n    selectedMetric: IdText;\n    disableDropDown: boolean = false;\n    metricDropdownConfig: ICustomSingleSelect;\n    orderMetricsEnum = OrderMetrics;\n    deleteOrderMessageData: MessageBoxData;\n    showTotalRow: boolean = true;\n    showOrHideToggleForTotalRow: boolean = true;\n\n    constructor(\n        private primaryOrderPanelService: PrimaryOrderPanelService,\n        private annaGlobalConfig: AnnaGlobalConfigService,\n    ) {\n        this.setDropDownData();\n        this.setMessageData();\n    }\n\n    ngOnInit(): void {\n        document.documentElement.style.setProperty(`--hide-total-row-scrollbar-offset`, \"0px\");\n        this.numberOfSkeletonCols = Array(9).fill(0);\n    }\n\n    ngOnChanges(changes: SimpleChanges) {\n        if (changes.billingWiseData && changes.billingWiseData.currentValue) {\n            this.disableDropDown = !this.billingWiseData && this.billingWiseData.length === 0;\n        }\n        if (changes.measurementName && changes.measurementName.currentValue) {\n            this.metricChanged(this.orderMetrics.find((m) => m.text === this.measurementName));\n        }\n        // eslint-disable-next-line max-len\n        // if ((changes['isEquivalisedData'] && changes['isEquivalisedData'].currentValue != undefined && this.queryParamForDetailsPage) || (changes['queryParamForDetailsPage'] && changes['queryParamForDetailsPage'].currentValue)) {\n        //   this.updateViewDetailsUrl();\n        // }\n    }\n\n    viewDetailsClick() {\n        this.viewDetails.emit();\n    }\n\n    setDropDownData() {\n        this.orderMetrics = this.primaryOrderPanelService.getOrderMetricsDropdownValues();\n        this.setMetricDropdownConfig();\n    }\n\n    setMetricDropdownConfig() {\n        this.metricDropdownConfig = { ...this.annaGlobalConfig.defaultSingleSelectConfig };\n        this.metricDropdownConfig.placeholder = \"Select metric\";\n    }\n\n    metricChanged(event: IdText) {\n        this.selectedMetric = event;\n        this.measurementName = event.text;\n        this.cppOrCpm = this.measurementName === \"GRP\" ? \"CPP($)\" : \"CPM($)\";\n        this.selectedKeys = {\n            grporImps: event.text === OrderMetrics.rating ? \"grp\" : \"imps\",\n            cpporCpm: event.text === OrderMetrics.rating ? \"cpp\" : \"cpm\",\n        };\n        // this.updateViewDetailsUrl();\n    }\n\n    setMessageData() {\n        const msg = `There is no billing data available for this order.`;\n        const iconClass = \"mdi mdi-information\";\n        this.deleteOrderMessageData = new MessageBoxData(\n            null,\n            msg,\n            iconClass,\n            `${GenericMessageBoxTheme.informationBlue.messageBoxClass} sm mg-adu-rule`,\n        );\n    }\n\n    showHideTotalRow() {\n        this.showTotalRow = !this.showTotalRow;\n        if (!this.showTotalRow) {\n            document.documentElement.style.setProperty(`--hide-total-row-scrollbar-offset`, \"40px\");\n        } else {\n            document.documentElement.style.setProperty(`--hide-total-row-scrollbar-offset`, \"0px\");\n        }\n    }\n}\n","<anna-design-message-box\n    *ngIf=\"isDeletedOrder\"\n    [messageBoxData]=\"deleteOrderMessageData\"\n></anna-design-message-box>\n\n<div *ngIf=\"!isDeletedOrder\">\n    <div class=\"heading\">\n        <p>\n            Summary\n            <ng-container *ngIf=\"!isPoDOrder\">(Pay for Spots(P4S) Order)</ng-container>\n            <ng-container *ngIf=\"isPoDOrder\">(PoD Order)</ng-container>\n        </p>\n        <i\n            class=\"mi mdi-info-outline info-label\"\n            container=\"body\"\n            tooltipClass=\"summary-custom-tooltip\"\n            [ngbTooltip]=\"pfpCalculation\"\n        ></i>\n        <div\n            *ngIf=\"missingPostedDataPayload\"\n            class=\"right-aligned\"\n        >\n            <anna-design-missing-posted-data\n                [isHHData]=\"measurementAgency() === MeasurementAgencyInOrderSummary.NielsenSweeps\"\n                [payload]=\"missingPostedDataPayload\"\n                [showDemographicInfo]=\"false\"\n                [missingPostedData]=\"missingPostedData\"\n            ></anna-design-missing-posted-data>\n        </div>\n    </div>\n\n    <div class=\"table-height {{ tableBottomBorder }}\">\n        <article class=\"flex\">\n            <!-- <div class=\"posting-type-container\">\n                <span>\n                    Posting Type\n                </span>\n                <span class=\"bold\">{{billingReportData?.postingType}}</span>\n            </div> -->\n            <p\n                class=\"italic-msg\"\n                [style.visibility]=\"isEquivalisedData ? 'visible' : 'hidden'\"\n            >\n                All data in the below table except for spots count of Paid Programs, Non-spots TV and Non-spots Digital\n                is equivalized\n            </p>\n            <div class=\"dropdown-view-btn-container\">\n                <!-- Drop-down for metric selection -->\n                <anna-design-single-select\n                    *ngIf=\"!loading\"\n                    [items]=\"orderMetrics\"\n                    class=\"order-metrics-dropdown\"\n                    [selectedItem]=\"selectedMetric\"\n                    [config]=\"metricDropdownConfig\"\n                    [disabled]=\"disableDropDown || (!loading && (!billingWiseData || billingWiseData?.length === 0))\"\n                    (valueChanged)=\"metricChanged($event)\"\n                >\n                </anna-design-single-select>\n\n                <anna-design-skt-loader\n                    *ngIf=\"loading\"\n                    [count]=\"1\"\n                    [theme]=\"{ width: '8rem', height: '24px', 'margin-bottom': '0px' }\"\n                ></anna-design-skt-loader>\n                <anna-design-skt-loader\n                    *ngIf=\"loading\"\n                    [count]=\"1\"\n                    [theme]=\"{ width: '7.3rem', height: '24px', 'margin-bottom': '0px' }\"\n                ></anna-design-skt-loader>\n\n                <a\n                    href=\"\"\n                    target=\"_blank\"\n                    type=\"submit\"\n                    *ngIf=\"!loading\"\n                    class=\"view-details-link\"\n                    [ngClass]=\"{\n                        'disabled-view-details': !loading && (!billingWiseData || billingWiseData?.length === 0)\n                    }\"\n                    (click)=\"viewDetailsClick()\"\n                    [routerLink]=\"[billingDetailsUrl]\"\n                    [queryParams]=\"{\n                        stationId: queryParamForDetailsPage?.stationId,\n                        order: queryParamForDetailsPage?.order,\n                        isEquivalized: queryParamForDetailsPage?.isEquivalized,\n                        metric: measurementName,\n                        parentTab: parentTab\n                    }\"\n                >\n                    View Details\n                </a>\n            </div>\n        </article>\n\n        <div class=\"billing-table-container\">\n            <button\n                *ngIf=\"showOrHideToggleForTotalRow && !loading && billingWiseData?.length > 0\"\n                [ngClass]=\"{\n                    'shift-toggle-top-on-total-row-click': !showTotalRow\n                }\"\n                class=\"show-or-hide-toggle-btn\"\n                (click)=\"showHideTotalRow()\"\n            >\n                <i\n                    class=\"mdi mdi-menu-swap\"\n                    tooltipClass=\"show-or-hide-toggle-tooltip\"\n                    placement=\"auto\"\n                    container=\"body\"\n                    [ngbTooltip]=\"showOrHideToggleForTotalRowTooltip\"\n                ></i>\n            </button>\n            <table\n                class=\"billing-summary-table\"\n                [ngClass]=\"{ 'billing-no-data-table': !loading && (!billingWiseData || billingWiseData?.length === 0) }\"\n            >\n                <thead>\n                    <tr>\n                        <th>BILLING PERIOD</th>\n                        <th>\n                            <label>ORIGINAL BOOKING ($) </label> <br />\n                            <ng-container\n                                [ngTemplateOutlet]=\"secondaryTableHeader\"\n                                [ngTemplateOutletContext]=\"{ showCppOrCpm: true }\"\n                            ></ng-container>\n                        </th>\n                        <th>\n                            <label>\n                                REVISED BOOKING <br />\n                                IN REV-{{ billingReportData?.latestRevisionNo }} ($)</label\n                            >\n                            <br />\n                            <ng-container\n                                [ngTemplateOutlet]=\"secondaryTableHeader\"\n                                [ngTemplateOutletContext]=\"{ showCppOrCpm: true }\"\n                            ></ng-container>\n                        </th>\n                        <th>\n                            <label>\n                                PROJECTED DELIVERY <br />\n                                WITHOUT ADUs ($)\n                            </label>\n                            <br />\n                            <ng-container\n                                [ngTemplateOutlet]=\"secondaryTableHeader\"\n                                [ngTemplateOutletContext]=\"{ showCppOrCpm: false }\"\n                            ></ng-container>\n                        </th>\n                        <th>\n                            <label>\n                                PROJECTED DELIVERY <br />\n                                WITH ADUs ($)\n                            </label>\n                            <br />\n                            <ng-container\n                                [ngTemplateOutlet]=\"secondaryTableHeader\"\n                                [ngTemplateOutletContext]=\"{ showCppOrCpm: false }\"\n                            ></ng-container>\n                        </th>\n\n                        <th>\n                            <label\n                                >BILLABLE<br *ngIf=\"billingReportData?.isPayForPerformanceOrder\" />\n                                {{\n                                    billingReportData?.isPayForPerformanceOrder === true ? \"WITH ADUs ($)\" : \"($)\"\n                                }}</label\n                            >\n                            <br />\n                            <span *ngIf=\"measurementName\">SPOTS | POSTED {{ measurementName }}</span>\n                        </th>\n                        <th>\n                            AGENCY <br />\n                            COMMISSION ($)\n                        </th>\n                        <th>\n                            NET <br />\n                            AMOUNT($)\n                        </th>\n\n                        <th>\n                            <label *ngIf=\"!isPoDOrder\"> LIABILITY ($)</label>\n                            <label *ngIf=\"isPoDOrder\"> BILLING REDUCTION ($)</label>\n                            <br />\n                            <span class=\"liability-header\"\n                                >UD | UD (&#64; Threshold) | OD ({{\n                                    selectedMetric.text === orderMetricsEnum.rating ? \"GRP\" : \"IMPS\"\n                                }})</span\n                            >\n                        </th>\n                    </tr>\n                </thead>\n                <tbody>\n                    <ng-container *ngIf=\"loading\">\n                        <tr\n                            class=\"table-row loading-row\"\n                            *ngFor=\"let numrow of numberOfSkeletonRows\"\n                        >\n                            <td *ngFor=\"let numcol of numberOfSkeletonCols\">\n                                <anna-design-skt-loader\n                                    [count]=\"1\"\n                                    [theme]=\"{ height: '1em' }\"\n                                ></anna-design-skt-loader>\n                            </td>\n                        </tr>\n                    </ng-container>\n                    <ng-container *ngIf=\"!loading && billingWiseData && billingWiseData?.length > 0\">\n                        <tr\n                            *ngIf=\"showTotalRow\"\n                            class=\"total-row\"\n                        >\n                            <td>\n                                <b class=\"pl-8 inline-block\"\n                                    >Total<ng-container *ngIf=\"isEquivalisedData\"> (Equivalized)</ng-container></b\n                                >\n                            </td>\n                            <td>\n                                <ng-container\n                                    [ngTemplateOutlet]=\"tableData\"\n                                    [ngTemplateOutletContext]=\"{\n                                        value: billingReportData.totalOriginal,\n                                        bold: true,\n                                        showCppOrCpm: true\n                                    }\"\n                                >\n                                </ng-container>\n                            </td>\n                            <td>\n                                <ng-container\n                                    [ngTemplateOutlet]=\"tableData\"\n                                    [ngTemplateOutletContext]=\"{\n                                        value: billingReportData.totalRevised,\n                                        bold: true,\n                                        showCppOrCpm: true\n                                    }\"\n                                >\n                                </ng-container>\n                            </td>\n                            <td>\n                                <ng-container\n                                    [ngTemplateOutlet]=\"tableData\"\n                                    [ngTemplateOutletContext]=\"{\n                                        value: billingReportData.totalProjectedDeliveryWithoutADUSpots,\n                                        bold: true,\n                                        showCppOrCpm: false\n                                    }\"\n                                ></ng-container>\n                            </td>\n                            <td>\n                                <ng-container\n                                    [ngTemplateOutlet]=\"tableData\"\n                                    [ngTemplateOutletContext]=\"{\n                                        value: billingReportData.totalProjectedDeliveryWithADUSpots,\n                                        bold: true,\n                                        showCppOrCpm: false\n                                    }\"\n                                >\n                                </ng-container>\n                            </td>\n                            <td>\n                                <ng-container\n                                    [ngTemplateOutlet]=\"tableData\"\n                                    [ngTemplateOutletContext]=\"{\n                                        value: billingReportData.totalBillableToDate,\n                                        bold: true,\n                                        showCppOrCpm: false\n                                    }\"\n                                >\n                                </ng-container>\n                            </td>\n                            <td>\n                                <b>\n                                    {{ billingReportData.totalAgencyCommissionOnBillableAmount }}\n                                </b>\n                            </td>\n                            <td>\n                                <b> {{ billingReportData.totalNetAmount }} </b>\n                            </td>\n\n                            <td>\n                                <div class=\"liability-data\">\n                                    {{ billingReportData.totalLiabilityData.value }}\n                                </div>\n                                <span>\n                                    {{\n                                        selectedMetric.text === orderMetricsEnum.rating\n                                            ? billingReportData.totalLiabilityData.UDGRP\n                                            : billingReportData.totalLiabilityData.UDIMPS\n                                    }}\n                                    |\n                                    {{\n                                        selectedMetric.text === orderMetricsEnum.rating\n                                            ? billingReportData.totalLiabilityData.UDLiabilityGrp\n                                            : billingReportData.totalLiabilityData.UDLiabilityImps\n                                    }}\n                                    |\n                                    {{\n                                        selectedMetric.text === orderMetricsEnum.rating\n                                            ? billingReportData.totalLiabilityData.ODGRP\n                                            : billingReportData.totalLiabilityData.ODIMPS\n                                    }}\n                                </span>\n                            </td>\n                        </tr>\n                        <tr\n                            class=\"table-row\"\n                            *ngFor=\"let data of billingWiseData\"\n                        >\n                            <td>{{ data.startDate | date: \"MM/dd/yy\" }} - {{ data.endDate | date: \"MM/dd/yy\" }}</td>\n                            <td>\n                                <ng-container\n                                    [ngTemplateOutlet]=\"tableData\"\n                                    [ngTemplateOutletContext]=\"{ value: data.totalOriginal, showCppOrCpm: true }\"\n                                >\n                                </ng-container>\n                            </td>\n                            <td>\n                                <ng-container\n                                    [ngTemplateOutlet]=\"tableData\"\n                                    [ngTemplateOutletContext]=\"{ value: data.totalRevised, showCppOrCpm: true }\"\n                                >\n                                </ng-container>\n                            </td>\n                            <td>\n                                <ng-container\n                                    [ngTemplateOutlet]=\"tableData\"\n                                    [ngTemplateOutletContext]=\"{\n                                        value: data.projectedDeliveryWithoutAdu,\n                                        showCppOrCpm: false\n                                    }\"\n                                ></ng-container>\n                            </td>\n                            <td>\n                                <ng-container\n                                    [ngTemplateOutlet]=\"tableData\"\n                                    [ngTemplateOutletContext]=\"{\n                                        value: data.projectedDeliveryAdu,\n                                        showCppOrCpm: false\n                                    }\"\n                                >\n                                </ng-container>\n                            </td>\n                            <td>\n                                <ng-container\n                                    *ngIf=\"\n                                        !data.postedInfoAvailableForAllAiredSpots;\n                                        else postedInfoAvailableForAllAiredSpots\n                                    \"\n                                    [ngTemplateOutlet]=\"DataMissing\"\n                                ></ng-container>\n                                <ng-template #postedInfoAvailableForAllAiredSpots>\n                                    <ng-container\n                                        [ngTemplateOutlet]=\"tableData\"\n                                        [ngTemplateOutletContext]=\"{ value: data.totalBillable, showCppOrCpm: false }\"\n                                    >\n                                    </ng-container>\n                                </ng-template>\n                            </td>\n                            <td>\n                                {{ data.totalAgencyCommissionOnBillableAmount }}\n                            </td>\n                            <td>\n                                {{ data.netAmount }}\n                            </td>\n\n                            <td>\n                                <div>\n                                    {{ data.liability.value }}\n                                </div>\n                                <span>\n                                    <ng-container\n                                        *ngIf=\"\n                                            selectedMetric.text === orderMetricsEnum.rating;\n                                            else liabilityImpsTemplate\n                                        \"\n                                    >\n                                        {{ data.liability.UDGRP }} | {{ data.liability.UDLiabilityGrp }} |\n                                        {{ data.liability.ODGRP }}\n                                    </ng-container>\n                                    <ng-template #liabilityImpsTemplate>\n                                        {{ data.liability.UDIMPS }} | {{ data.liability.UDLiabilityImps }} |\n                                        {{ data.liability.ODIMPS }}\n                                    </ng-template>\n                                </span>\n                            </td>\n                        </tr>\n                    </ng-container>\n                    <div\n                        *ngIf=\"!loading && (!billingWiseData || billingWiseData?.length === 0)\"\n                        class=\"billing-no-data\"\n                    >\n                        <anna-core-no-data-lib [width]=\"noDataWidth\"> </anna-core-no-data-lib>\n                    </div>\n                </tbody>\n            </table>\n        </div>\n    </div>\n\n    <ng-template\n        #tableData\n        let-data=\"value\"\n        let-isBold=\"bold\"\n        let-showCppOrCpm=\"showCppOrCpm\"\n    >\n        <div [ngStyle]=\"{ 'font-weight': isBold ? 'bold' : 'normal' }\">\n            {{ data.value }}\n        </div>\n        <span>\n            {{ data.spot }} | {{ data[selectedKeys.grporImps] }}\n            <ng-container *ngIf=\"showCppOrCpm\"> | {{ data[selectedKeys.cpporCpm] }}</ng-container>\n        </span>\n    </ng-template>\n\n    <ng-template\n        #DataMissing\n        let-data=\"value\"\n    >\n        <div>-</div>\n        <span> <i>(Data missing for a few spots) </i></span>\n    </ng-template>\n\n    <ng-template\n        #secondaryTableHeader\n        let-showCppOrCpm=\"showCppOrCpm\"\n    >\n        <ng-container *ngIf=\"measurementName\">\n            <span\n                >SPOTS | {{ measurementName }}<ng-container *ngIf=\"showCppOrCpm\"> | {{ cppOrCpm }}</ng-container>\n            </span>\n        </ng-container>\n    </ng-template>\n</div>\n\n<ng-template #pfpCalculation>\n    <ul>\n        <li>For Pay for Spots(P4S) Orders, billable amount = Sigma (Booked Rate)</li>\n        <li>\n            For Payment on Delivery Orders,\n            <ul>\n                <li>\n                    Billable amount = Sigma (Booked Rate); if UD% is equal to or above the liability % specified in\n                    Business Rules\n                </li>\n                <li>\n                    Billable amount = Posted GRP/IMPS * Booked CPP/CPM; if UD % is less than the liability % specified\n                    in Business Rules\n                </li>\n            </ul>\n        </li>\n    </ul>\n</ng-template>\n\n<ng-template #showOrHideToggleForTotalRowTooltip>\n    <div>\n        {{ showOrHideToggleForTotalRow && !showTotalRow ? \"Show Total Row\" : \"Hide Total Row\" }}\n    </div>\n</ng-template>\n","import { NgClass, NgIf } from \"@angular/common\";\nimport {\n    ChangeDetectionStrategy,\n    Component,\n    EventEmitter,\n    Input,\n    NgZone,\n    OnInit,\n    Output,\n    Renderer2,\n    ViewChild,\n} from \"@angular/core\";\nimport { FormControl, FormsModule, ReactiveFormsModule } from \"@angular/forms\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { MatMenuModule } from \"@angular/material/menu\";\nimport { MatTableModule } from \"@angular/material/table\";\nimport { SpinnerButtonDirective } from \"@annalib/anna-cognito-lib\";\nimport { distinctUntilChanged } from \"rxjs/operators\";\n\nimport { IOrder, IOrderArray } from \"./models/global-order-search-header.model\";\n\n@Component({\n    selector: \"anna-feature-global-order-search-header\",\n    templateUrl: \"./global-order-search-header.component.html\",\n    styleUrls: [\"./global-order-search-header.component.scss\"],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [\n        NgIf,\n        NgClass,\n        MatIconModule,\n        FormsModule,\n        ReactiveFormsModule,\n        MatMenuModule,\n        MatTableModule,\n        SpinnerButtonDirective,\n    ]\n})\nexport class GlobalOrderSearchHeaderComponent implements OnInit {\n    @Input() allOrders: IOrderArray;\n    @Output() orderClicked = new EventEmitter<IOrder>();\n\n    searchInput: string = \"\";\n    showInputBox: boolean = false;\n    showLoading: boolean = true;\n    showError: boolean = false;\n    searchControl: FormControl = new FormControl();\n\n    foundOrders: IOrder[] = [];\n    renderedData: IOrder[] = [];\n\n    start: number = 0;\n    limit: number = 30;\n    end: number = this.limit + this.start;\n\n    tableHeight: number = 203;\n    displayedColumns: string[] = [\"orderId\", \"flightPeriod\", \"station\"];\n    selectedRowIndex: any = 0;\n\n    @ViewChild(\"scrollView\") viewPort: any;\n\n    constructor(\n        private ngZone: NgZone,\n        private renderer: Renderer2,\n    ) {}\n\n    ngOnInit() {\n        this.initializeSearch();\n    }\n\n    initializeSearch() {\n        this.showLoading = true;\n        this.showError = false;\n\n        this.searchControl.valueChanges.pipe(distinctUntilChanged()).subscribe(\n            (orderId: string) => {\n                this.foundOrders = this.getOrders(orderId);\n                this.showLoading = false;\n                this.showError = this.foundOrders.length === 0;\n                this.setTableHeight(this.foundOrders.length);\n                this.setInitialRowsForTable();\n            },\n            (error) => {\n                this.showError = true;\n            },\n        );\n    }\n\n    onKeyDown(event: KeyboardEvent) {\n        if (event.key === \"ArrowDown\") {\n            event.preventDefault(); // Prevent the default behavior of the down arrow key\n\n            const firstRow = document.querySelector(\n                \".search-table-container tr.mat-mdc-row:nth-child(1)\",\n            ) as HTMLElement;\n            if (firstRow) {\n                firstRow.click();\n                firstRow.focus();\n            }\n        }\n\n        if (event.key === \"Enter\") {\n            this.enterKeyEvent(0);\n        }\n    }\n\n    setTableHeight(rowCount: number) {\n        this.selectedRowIndex = 0;\n        const rowHeight = 24;\n        const headerHeight = 34;\n        if (this.foundOrders.length && this.foundOrders.length <= 5) {\n            this.tableHeight = headerHeight + rowHeight * rowCount;\n        } else if (this.tableHeight !== 203) {\n            this.tableHeight = 203;\n        }\n    }\n\n    getOrders(value: string): IOrder[] {\n        const filteredOrders: IOrder[] = this.allOrders.Orders.filter((order) =>\n            order.DisplayOrderId.toString().toLowerCase().includes(value.toLowerCase()),\n        );\n\n        filteredOrders.sort((a, b) => {\n            if (a.BuyerOrderId === b.BuyerOrderId) {\n                if (a.AltOrderId === b.AltOrderId) {\n                    return (b.StationName as any) - (a.StationName as any);\n                }\n                return (b.AltOrderId as any) - (a.AltOrderId as any);\n            }\n            return a.BuyerOrderId > b.BuyerOrderId ? 1 : -1;\n        });\n        return filteredOrders;\n    }\n\n    searchClicked() {\n        this.showInputBox = !this.showInputBox;\n        this.setFocus(\"#searchInputBox\");\n    }\n\n    setFocus(selector: string): void {\n        this.ngZone.runOutsideAngular(() => {\n            setTimeout(() => {\n                this.renderer.selectRootElement(selector).focus();\n            }, 0);\n        });\n    }\n\n    closeClick() {\n        this.showInputBox = !this.showInputBox;\n        this.searchInput = \"\";\n        this.foundOrders = null;\n        this.showLoading = false;\n        this.showError = false;\n        this.showInputBox = false;\n    }\n\n    onOrderClicked(order: IOrder) {\n        this.orderClicked.emit(order);\n        this.closeClick();\n    }\n\n    isBusinessRuleSet(status: string): boolean {\n        if (status.toLowerCase() === \"notify\" || status.toLowerCase() === \"rejected\") {\n            return false;\n        }\n        return true;\n    }\n\n    trackByFn(index: number) {\n        return index;\n    }\n\n    highlight(row: any, index: any) {\n        if (index >= 0 && this.foundOrders?.length && index <= this.foundOrders.length - 1) {\n            this.selectedRowIndex = index;\n            this.viewPort.nativeElement.scrollTop = 24 * this.selectedRowIndex - 24 * 6;\n        }\n    }\n\n    arrowUpEvent(row: object, index: number) {\n        if (index === 0) {\n            this.setFocus(\"#searchInputBox\");\n            return;\n        }\n        const nextrow = this.foundOrders[index - 1];\n        this.highlight(nextrow, index - 1);\n    }\n\n    arrowDownEvent(row: object, index: number) {\n        const nextrow = this.foundOrders[index + 1];\n        this.highlight(nextrow, index + 1);\n    }\n\n    enterKeyEvent(index: number) {\n        if (this.foundOrders && this.foundOrders.length > 0) {\n            this.onOrderClicked(this.foundOrders[index]);\n        } else {\n            this.closeClick();\n        }\n    }\n\n    onTableContainerScroll(e: any) {\n        const tableViewHeight = e.target.offsetHeight; // viewport\n        const tableScrollHeight = e.target.scrollHeight; // length of all table\n        const scrollLocation = e.target.scrollTop; // how far user scrolled\n\n        // If the user has scrolled within 150px of the bottom, add more data\n        const buffer = 150;\n        const limit = tableScrollHeight - tableViewHeight - buffer;\n        if (scrollLocation > limit) {\n            const data = this.getTableData(this.start, this.end);\n            this.renderedData = this.renderedData.concat(data);\n            this.updateIndex();\n        }\n    }\n\n    setInitialRowsForTable() {\n        this.resetIndex();\n        this.renderedData = this.getTableData(this.start, this.end);\n        this.updateIndex();\n    }\n\n    getTableData(start: number, end: number) {\n        return this.foundOrders.filter((value, index) => index >= start && index < end);\n    }\n\n    updateIndex() {\n        this.start = this.end;\n        this.end = this.limit + this.start;\n    }\n    resetIndex() {\n        this.start = 0;\n        this.end = this.limit + this.start;\n    }\n}\n","<div class=\"main-div\">\n    <button\n        class=\"search-btn\"\n        *ngIf=\"!showInputBox\"\n        (click)=\"searchClicked()\"\n        [disabled]=\"!allOrders?.Orders?.length\"\n        [ngClass]=\"{ 'search-icon-disable': !allOrders?.Orders?.length }\"\n    >\n        <i class=\"white-theme mdi mdi-magnify mat-icon\"></i>\n    </button>\n\n    <div\n        *ngIf=\"showInputBox\"\n        class=\"input-div\"\n    >\n        <input\n            id=\"searchInputBox\"\n            type=\"text\"\n            class=\"form-control search-box\"\n            (keyup)=\"searchInput.length && menuTrigger.openMenu()\"\n            placeholder=\"Search for a Station Order# or Alt Order#\"\n            [formControl]=\"searchControl\"\n            [(ngModel)]=\"searchInput\"\n            autocomplete=\"off\"\n            (keydown)=\"onKeyDown($event)\"\n        />\n        <i\n            (click)=\"closeClick()\"\n            class=\"close-button mat-icon mdi mdi-close\"\n        ></i>\n    </div>\n</div>\n\n<div\n    #menuTrigger=\"matMenuTrigger\"\n    [matMenuTriggerFor]=\"contextMenu\"\n>\n    <mat-menu\n        backdropClass=\"global-search\"\n        class=\"global-search\"\n        #contextMenu=\"matMenu\"\n    >\n        <div (click)=\"$event.stopPropagation()\">\n            <ng-container *ngIf=\"searchInput.length && showLoading && !showError; then loading\"></ng-container>\n            <ng-container *ngIf=\"foundOrders && searchInput.length && !showLoading && !showError; then results\">\n            </ng-container>\n            <ng-container *ngIf=\"showError; then errorHandler\"></ng-container>\n            <ng-container *ngIf=\"!searchInput.length && menuTrigger.closeMenu()\"></ng-container>\n        </div>\n    </mat-menu>\n</div>\n<ng-template #results>\n    <div class=\"results-box\">\n        <div\n            class=\"search-table-container\"\n            #scrollView\n            [style.maxHeight.px]=\"tableHeight\"\n            (scroll)=\"onTableContainerScroll($event)\"\n        >\n            <table\n                mat-table\n                [dataSource]=\"renderedData\"\n            >\n                <ng-container matColumnDef=\"orderId\">\n                    <th\n                        mat-header-cell\n                        *matHeaderCellDef\n                    >\n                        STN ORDER# (ALT ORDER#)\n                    </th>\n                    <td\n                        mat-cell\n                        *matCellDef=\"let order\"\n                    >\n                        <button\n                            (click)=\"onOrderClicked(order)\"\n                            class=\"order-button\"\n                        >\n                            {{ order?.DisplayOrderId }}\n                        </button>\n                    </td>\n                </ng-container>\n                <ng-container matColumnDef=\"flightPeriod\">\n                    <th\n                        mat-header-cell\n                        *matHeaderCellDef\n                    >\n                        FLIGHT PERIOD\n                    </th>\n                    <td\n                        mat-cell\n                        *matCellDef=\"let order\"\n                    >\n                        {{ order.FlightStartDate }} - {{ order.FlightEndDate }}\n                    </td>\n                </ng-container>\n                <ng-container matColumnDef=\"station\">\n                    <th\n                        mat-header-cell\n                        *matHeaderCellDef\n                    >\n                        STATION\n                    </th>\n                    <td\n                        mat-cell\n                        *matCellDef=\"let order\"\n                    >\n                        {{ order.StationName }}\n                    </td>\n                </ng-container>\n\n                <tr\n                    mat-header-row\n                    *matHeaderRowDef=\"displayedColumns; sticky: true\"\n                ></tr>\n                <tr\n                    mat-row\n                    *matRowDef=\"let row; columns: displayedColumns; let i = index\"\n                    (click)=\"highlight(row, i)\"\n                    [ngClass]=\"{ highlight: selectedRowIndex === i }\"\n                    tabindex=\"999\"\n                    (keydown.arrowdown)=\"arrowDownEvent(row, selectedRowIndex)\"\n                    (keydown.arrowup)=\"arrowUpEvent(row, selectedRowIndex)\"\n                    (keydown.enter)=\"enterKeyEvent(selectedRowIndex)\"\n                ></tr>\n            </table>\n        </div>\n    </div>\n</ng-template>\n\n<ng-template #loading>\n    <div class=\"results-box loading-box\">\n        <div\n            annaCognitoSpinnerBtn\n            [spinnerButtonLoading]=\"true\"\n            class=\"spinner\"\n        ></div>\n        <div>Searching for {{ searchInput }}</div>\n    </div>\n</ng-template>\n\n<ng-template #errorHandler>\n    <div class=\"error-box\">Sorry, we couldn't find any results. Try searching again.</div>\n</ng-template>\n","import { ClickableItem } from \"@annalib/anna-core\";\n\nimport { StartEndDate } from \"../../primary-order-panel/models/primary-order-panel.model\";\n\nexport class HiatusTableDataForPopup {\n    dateToDisplay: string;\n    gtClass: string;\n    action: ClickableItem[] = [];\n\n    constructor(date: any, enableEdit: boolean) {\n        this.dateToDisplay = date;\n        this.gtClass = enableEdit ? \"remove-action-tr\" : \"remove-action-tr disable\";\n\n        const text = \"Remove\";\n        const typeOfAction = HiatusTableActionTypeForGt.REMOVE_ACTION;\n        this.action.push(new ClickableItem(typeOfAction, text, this.gtClass, false, null));\n    }\n}\nexport enum HiatusTableActionTypeForGt {\n    REMOVE_ACTION = \"REMOVE\",\n}\n\nexport interface SaveHiatusDatesForEntryPayload {\n    StationId: number;\n    OrderId: string;\n    Comment: string;\n    SellerId?: number | string;\n    CentralBuyerId?: number | string;\n    HiatusDatesToSave: StartEndDate[];\n}\n\nexport interface HiatusSaveEmitObject {\n    hiatusDates: StartEndDate[];\n    sellerComments?: string;\n}\n","import { Injectable } from \"@angular/core\";\nimport { IGtTableHeader } from \"@annalib/anna-core\";\n\n@Injectable({\n    providedIn: \"root\",\n})\nexport class HiatusWindowPopupService {\n    getHiatusDateTableHeaders(): IGtTableHeader[] {\n        return [\n            {\n                headerInfo: [\n                    {\n                        name: \"DATES\",\n                        objectKey: \"dateToDisplay\",\n                        typeOfHeaderData: \"STRING\",\n                        showTooltipIcon: false,\n                        typeOfBodyData: \"STRING\",\n                    },\n                ],\n                visible: true,\n                width: \"300px\",\n            },\n            {\n                headerInfo: [\n                    {\n                        name: \"ACTION\",\n                        objectKey: \"action\",\n                        actionKey: \"action\",\n                        typeOfHeaderData: \"STRING\",\n                        showTooltipIcon: false,\n                        typeOfBodyData: \"CLICKABLE_DATA\",\n                    },\n                ],\n                visible: true,\n                width: \"17%\",\n            },\n        ];\n    }\n}\n","import { NgClass, NgIf } from \"@angular/common\";\nimport {\n    ChangeDetectionStrategy,\n    Component,\n    EventEmitter,\n    Input,\n    OnChanges,\n    OnInit,\n    Output,\n    SimpleChanges,\n} from \"@angular/core\";\nimport { FormsModule } from \"@angular/forms\";\nimport {\n    AnnaCalendarFilterComponent,\n    AnnaDateTimeFormatService,\n    AnnaGlobalConfigService,\n    AnnaNonEditableGenericTableComponent,\n    IConfirmationPopupConfig,\n    IGtGeneralConfig,\n    IGtTableHeader,\n    NgbDateType,\n} from \"@annalib/anna-core\";\nimport { MessageBoxComponent, MessageBoxData } from \"@annalib/anna-design-components-lib\";\nimport { NgbDate, NgbDateStruct } from \"@ng-bootstrap/ng-bootstrap\";\nimport dayjs from \"dayjs\";\nimport { cloneDeep, isEqual } from \"lodash-es\";\n\nimport { HiatusDetailsForPopup, StartEndDate } from \"../primary-order-panel/models/primary-order-panel.model\";\nimport { HiatusSaveEmitObject, HiatusTableDataForPopup } from \"./model/hiatus-window-popup.model\";\nimport { HiatusWindowPopupService } from \"./service/hiatus-window-popup.service.ts.service\";\n\n@Component({\n    selector: \"anna-feature-hiatus-window-popup\",\n    templateUrl: \"./hiatus-window-popup.component.html\",\n    styleUrls: [\"./hiatus-window-popup.component.scss\"],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [\n        MessageBoxComponent,\n        NgClass,\n        NgIf,\n        AnnaCalendarFilterComponent,\n        AnnaNonEditableGenericTableComponent,\n        FormsModule,\n    ]\n})\nexport class HiatusWindowPopupComponent implements OnInit, OnChanges {\n    @Input() hiatusInfoForPopup: HiatusDetailsForPopup = null;\n    @Input() hiatusDatesArr: StartEndDate[] = []; // mandatory\n    @Input() topInfoMessage: MessageBoxData = null;\n    @Input() popupHeaderMessage: string; // mandatory\n    @Input() editMode: boolean = false;\n    @Input() calendarMinEnabledDate: NgbDateType; // mandatory\n    @Input() calendarMaxEnabledDate: NgbDateType; // mandatory\n    @Input() showSellerComments: boolean = false;\n    @Input() saveButtonText: string = \"Save\";\n    @Output() closePopup = new EventEmitter<void>();\n    @Output() hiatusDatesSaved = new EventEmitter<HiatusSaveEmitObject>();\n    @Output() hiatusMergedDisplayText = new EventEmitter<string>(); // used only for Pending EC\n\n    // @ViewChild(\"hiatusWindowPopup\") private hiatusWindowPopupTemplate:TemplateRef<any>;\n    // hiatusPopupRefernce:NgbModalRef\n    selectedFromDate: any;\n    selectedToDate: any;\n    hiatusDatesToSave: StartEndDate[] = [];\n    maxRowsRenderedWithoutScroll = 3;\n    gtGeneralConfig: IGtGeneralConfig;\n    haitusTableHeaders: IGtTableHeader[];\n    hiatusDateInputText: string;\n    hiatusTableGtDimension = { rowHeight: 24, headerHeight: 34, dataOnTopHeight: 340, marginFromBottom: 20 };\n    sellerCommentsInvalid: boolean = false;\n    disableDatesForCalenderFunction = (date: NgbDateStruct) => false;\n    disableSaveForEntryButton: boolean = true;\n    haitusDatesTableData: HiatusTableDataForPopup[] = [];\n    hiatusDatesTableDataClonned: HiatusTableDataForPopup[] = [];\n    config: IConfirmationPopupConfig;\n\n    constructor(\n        private annaDateTimeFormatService: AnnaDateTimeFormatService,\n        private hiatusWindowService: HiatusWindowPopupService,\n        private annaGlobalConfig: AnnaGlobalConfigService,\n        // private modalService: NgbModal,\n    ) {}\n\n    ngOnChanges(changes: SimpleChanges) {\n        if (changes.hiatusDatesArr && changes.hiatusDatesArr.currentValue) {\n            this.setHiatusTableData();\n            this.updateDisableDatesForCalenderFunction();\n            this.disableSaveForEntryButtonFunc();\n        }\n    }\n\n    ngOnInit() {\n        this.config = { ...this.annaGlobalConfig.defaultConfirmationPopupConfig };\n        this.haitusTableHeaders = this.hiatusWindowService.getHiatusDateTableHeaders();\n        this.gtGeneralConfig = { ...this.annaGlobalConfig.defaultGtGeneralConfig };\n    }\n\n    resetSelectedDateRange() {\n        this.selectedFromDate = null;\n        this.selectedToDate = null;\n    }\n\n    setHiatusTableData() {\n        this.haitusDatesTableData = [];\n\n        this.hiatusDatesArr.forEach((item: StartEndDate) => {\n            const displayDate =\n                item.StartDate === item.EndDate ? item.StartDate : `${item.StartDate} - ${item.EndDate}`;\n            this.haitusDatesTableData.push(new HiatusTableDataForPopup(displayDate, this.editMode));\n        });\n        this.haitusDatesTableData = this.mergeDateRange();\n        this.hiatusDatesTableDataClonned = cloneDeep(this.haitusDatesTableData);\n        this.updateHiatusDateInputText();\n    }\n    // this.enableDisableHiatusDateSaveBtn();\n\n    updateDisableDatesForCalenderFunction() {\n        const datesToDisabled: any = [];\n        this.haitusDatesTableData.forEach((item) => {\n            const startDate = item.dateToDisplay.includes(\"-\")\n                ? item.dateToDisplay.split(\"-\")[0].trim()\n                : item.dateToDisplay;\n            const endDate = item.dateToDisplay.includes(\"-\")\n                ? item.dateToDisplay.split(\"-\")[1].trim()\n                : item.dateToDisplay;\n\n            let dayjsStartDate = dayjs(startDate, \"MM/DD/YY\");\n            const dayjsEndDate = dayjs(endDate, \"MM/DD/YY\");\n\n            while (!dayjsStartDate.isSame(dayjsEndDate)) {\n                datesToDisabled.push(dayjsStartDate.format(\"MM/DD/YY\"));\n                dayjsStartDate = dayjsStartDate.add(1, \"day\");\n            }\n            datesToDisabled.push(dayjsStartDate.format(\"MM/DD/YY\"));\n        });\n\n        this.disableDatesForCalenderFunction = (date: NgbDateStruct) => {\n            const dateInStringFormat = this.annaDateTimeFormatService.convertNgbDateToMomentInSpecificFormat(\n                date,\n                \"MM/DD/YY\",\n            );\n            return datesToDisabled.includes(dateInStringFormat);\n        };\n        this.haitusDatesTableData = this.mergeDateRange();\n    }\n\n    cancelSelectedDate() {\n        this.resetSelectedDateRange();\n    }\n\n    updateHiatusDate(dateRange: { fromDate: NgbDate; toDate: NgbDate }) {\n        const formattedStartDate = this.annaDateTimeFormatService.convertNgbDateToMomentInSpecificFormat(\n            dateRange.fromDate,\n            \"MM/DD/YY\",\n        );\n        const formattedEndDate = this.annaDateTimeFormatService.convertNgbDateToMomentInSpecificFormat(\n            dateRange.toDate,\n            \"MM/DD/YY\",\n        );\n\n        const displayDate =\n            formattedStartDate === formattedEndDate\n                ? formattedStartDate\n                : `${formattedStartDate} - ${formattedEndDate}`;\n        // let displayDate= dateRange.fromDate == dateRange.toDate ? dateRange.fromDate : `${dateRange.fromDate} - ${dateRange.toDate}`;\n        this.haitusDatesTableData.push(new HiatusTableDataForPopup(displayDate, this.editMode));\n        this.haitusDatesTableData = [...this.haitusDatesTableData];\n        this.resetSelectedDateRange();\n        this.updateDisableDatesForCalenderFunction();\n        this.disableSaveForEntryButtonFunc();\n    }\n\n    updateHiatusDateInputText() {\n        this.hiatusDateInputText = this.haitusDatesTableData.map((item) => item.dateToDisplay).join(\", \");\n        this.hiatusMergedDisplayText.emit(this.hiatusDateInputText);\n    }\n\n    saveHiatusDates() {\n        this.haitusDatesTableData = this.mergeDateRange();\n        this.haitusDatesTableData.forEach((item: HiatusTableDataForPopup) => {\n            const startDate = item.dateToDisplay.includes(\"-\")\n                ? item.dateToDisplay.split(\"-\")[0].trim()\n                : item.dateToDisplay;\n            const endDate = item.dateToDisplay.includes(\"-\")\n                ? item.dateToDisplay.split(\"-\")[1].trim()\n                : item.dateToDisplay;\n            const date = {\n                StartDate: startDate,\n                EndDate: endDate,\n            };\n            this.hiatusDatesToSave.push(date);\n        });\n\n        const objToEmit = {\n            hiatusDates: this.hiatusDatesToSave,\n            sellerComments: this.showSellerComments ? this.hiatusInfoForPopup?.sellerComments : null,\n        };\n\n        this.hiatusDatesSaved.emit(objToEmit);\n        this.updateHiatusDateInputText();\n    }\n\n    mergeDateRange() {\n        const mergedRanges: any = [];\n\n        if (this.haitusDatesTableData.length === 0) {\n            return mergedRanges;\n        }\n\n        this.haitusDatesTableData.sort((a, b) => {\n            const aStartDate = a.dateToDisplay.includes(\"-\") ? a.dateToDisplay.split(\"-\")[0].trim() : a.dateToDisplay;\n            const bStartDate = b.dateToDisplay.includes(\"-\") ? b.dateToDisplay.split(\"-\")[0].trim() : b.dateToDisplay;\n            return dayjs(aStartDate, \"MM/DD/YY\").diff(dayjs(bStartDate, \"MM/DD/YY\"));\n        });\n\n        let currentRange: HiatusTableDataForPopup = cloneDeep(this.haitusDatesTableData[0]);\n\n        for (let i = 1; i < this.haitusDatesTableData.length; i++) {\n            const nextRange = this.haitusDatesTableData[i];\n            const currentRangeStartDate = currentRange.dateToDisplay.includes(\"-\")\n                ? currentRange.dateToDisplay.split(\"-\")[0].trim()\n                : currentRange.dateToDisplay;\n            const currentRangeEndDate = currentRange.dateToDisplay.includes(\"-\")\n                ? currentRange.dateToDisplay.split(\"-\")[1].trim()\n                : currentRange.dateToDisplay;\n\n            const currentDayjsRangeEndDate = dayjs(currentRangeEndDate, \"MM/DD/YY\");\n\n            const [nextDayjsRangeStartDate, nextDayjsRangeEndDate] = this.getDateFromHiatusDateTableData(i);\n\n            if (currentDayjsRangeEndDate.add(1, \"d\").isSame(nextDayjsRangeStartDate)) {\n                currentRange.dateToDisplay = `${currentRangeStartDate} - ${nextDayjsRangeEndDate.format(\"MM/DD/YY\")}`;\n            } else {\n                mergedRanges.push(currentRange);\n                currentRange = nextRange;\n            }\n        }\n\n        mergedRanges.push(currentRange);\n\n        return mergedRanges;\n    }\n    // rowData: { data: ActiveStationUsers, id: TypeOfActionLinkForGtEnum,\n    hiatusTableActionClicked(rowData: { data: HiatusTableDataForPopup }) {\n        this.haitusDatesTableData = this.haitusDatesTableData.filter(\n            (item) => item.dateToDisplay !== rowData.data.dateToDisplay,\n        );\n        this.haitusDatesTableData = [...this.haitusDatesTableData];\n        this.updateDisableDatesForCalenderFunction();\n        this.disableSaveForEntryButtonFunc();\n        // this.disableHiatusDatesSaveBtn = isEqual(this.haitusDatesTableData, this.clonedHiatusTableData) || isEqual (this.hiatusData.sellerComments,this.hiatusDatesClonned.sellerComments);\n    }\n\n    getDateFromHiatusDateTableData(index: number) {\n        const dateRange = this.haitusDatesTableData[index].dateToDisplay;\n        const startDate = dateRange.includes(\"-\") ? dateRange.split(\"-\")[0].trim() : dateRange;\n        const endDate = dateRange.includes(\"-\") ? dateRange.split(\"-\")[1].trim() : dateRange;\n\n        return [dayjs(startDate, \"MM/DD/YY\"), dayjs(endDate, \"MM/DD/YY\")];\n    }\n\n    closeHiatusDatePopup() {\n        this.closePopup.emit();\n    }\n\n    sellerCommentChanged(event: any) {\n        this.sellerCommentsInvalid = /[`!@#$%^&*()_+\\-=[\\]{};':\"\\\\|<>/?~]/.test(event);\n        this.disableSaveForEntryButtonFunc();\n    }\n\n    changesMadeInCommentBox(e: any) {\n        if (!/[a-zA-Z0-9 .,]/.test(e.key)) {\n            e.preventDefault();\n        }\n    }\n\n    disableSaveForEntryButtonFunc() {\n        this.disableSaveForEntryButton = isEqual(this.hiatusDatesTableDataClonned, this.haitusDatesTableData);\n    }\n}\n","<div class=\"modal-header\">\n    <h3 class=\"modal-title\">\n        {{ popupHeaderMessage }}\n    </h3>\n</div>\n<div class=\"modal-body\">\n    <span\n        class=\"last-edit-text\"\n        *ngIf=\"hiatusInfoForPopup?.lastEditAndEnteredOnTrafficMessage !== ''\"\n        [innerHTML]=\"hiatusInfoForPopup?.lastEditAndEnteredOnTrafficMessage\"\n    ></span>\n\n    <anna-design-message-box\n        *ngIf=\"topInfoMessage\"\n        class=\"info-msg-top\"\n        [messageBoxData]=\"topInfoMessage\"\n    ></anna-design-message-box>\n\n    <div\n        class=\"status-container\"\n        *ngIf=\"hiatusInfoForPopup?.hiatusStatusTextToDisplay\"\n    >\n        <div\n            class=\"status-tag\"\n            [ngClass]=\"hiatusInfoForPopup?.statusClass\"\n        >\n            <span [ngClass]=\"hiatusInfoForPopup?.hiatusStatusIconClasss\"></span>\n            <span class=\"status-text\">{{ hiatusInfoForPopup?.hiatusStatusTextToDisplay }}</span>\n        </div>\n    </div>\n\n    <section\n        class=\"hiatus-date-picker-section\"\n        *ngIf=\"editMode\"\n    >\n        <span>Please select the dates to be marked as hiatus.</span>\n\n        <anna-core-calendar-filter-lib\n            class=\"hiatus-calendar\"\n            [placeholder]=\"'Select hiatus dates'\"\n            [showFooterTemplate]=\"true\"\n            [autoClose]=\"false\"\n            [dateFormat]=\"'MM/DD/YY'\"\n            [selectedFromDate]=\"selectedFromDate\"\n            [selectedToDate]=\"selectedToDate\"\n            [disableFunction]=\"disableDatesForCalenderFunction\"\n            [maxDate]=\"calendarMaxEnabledDate\"\n            [minDate]=\"calendarMinEnabledDate\"\n            (apply)=\"updateHiatusDate($event)\"\n            (cancel)=\"cancelSelectedDate()\"\n            [placement]=\"['bottom-start']\"\n        >\n        </anna-core-calendar-filter-lib>\n    </section>\n\n    <i class=\"count-text\"\n        >Selected Hiatus period: <b>{{ haitusDatesTableData.length }}</b></i\n    >\n\n    <anna-core-non-editable-generic-table-lib\n        class=\"hiatus-generic-table\"\n        [showSkeletonLoading]=\"false\"\n        [tableHeaders]=\"haitusTableHeaders\"\n        [tableData]=\"haitusDatesTableData\"\n        [fixNumberOfRowsForPopup]=\"true\"\n        [maximumRowsWhichCanBeRenderedWithoutScroll]=\"maxRowsRenderedWithoutScroll\"\n        [clonedTableData]=\"hiatusDatesTableDataClonned\"\n        [gtGeneralConfig]=\"gtGeneralConfig\"\n        [gtDimension]=\"hiatusTableGtDimension\"\n        (clickableDataClicked)=\"hiatusTableActionClicked($event)\"\n    >\n    </anna-core-non-editable-generic-table-lib>\n\n    <section\n        class=\"seller-comments-section\"\n        *ngIf=\"showSellerComments\"\n    >\n        <span>Seller Comments</span>\n\n        <textarea\n            [(ngModel)]=\"hiatusInfoForPopup.sellerComments\"\n            spellcheck=\"false\"\n            id=\"sellerCommentInput\"\n            [disabled]=\"hiatusInfoForPopup?.disableSellerComments\"\n            (keydown)=\"changesMadeInCommentBox($event)\"\n            (ngModelChange)=\"sellerCommentChanged($event)\"\n            (keyup)=\"disableSaveForEntryButtonFunc()\"\n        ></textarea>\n    </section>\n    <div class=\"button-container\">\n        <button\n            class=\"anna cancel-button\"\n            (click)=\"closeHiatusDatePopup()\"\n        >\n            Cancel\n        </button>\n        <button\n            class=\"anna apply-button\"\n            [disabled]=\"disableSaveForEntryButton\"\n            (click)=\"saveHiatusDates()\"\n        >\n            {{ saveButtonText }}\n        </button>\n    </div>\n</div>\n","import { InjectionToken } from \"@angular/core\";\nimport { Observable } from \"rxjs\";\n\nimport { LineDetailsPayload } from \"../models/line-details.model\";\n\n/** Token to inject the acl service */\nexport const LINE_DETAILS_PAGE_SERVICE_TOKEN: InjectionToken<any> = new InjectionToken<ILineDetailsBackendService>(\n    \"SpotsApprovalBackendService token\",\n);\n\nexport interface ILineDetailsBackendService {\n    getLineDetails(selectedLine: \"SellerLine\" | \"BuyerLine\", payload: LineDetailsPayload): Observable<any>;\n}\n","import { OrderMetrics } from \"@annalib/anna-feature-shared-lib\";\n\nexport interface LineDetailsTableHeader {\n    columnName: string;\n    lowerData: string;\n    filterRequired?: boolean;\n    upperColumnFilter: IFilterOBJ;\n    lowerColumnFilter?: IFilterOBJ;\n    isToolTipRequired?: boolean[];\n    toolTipMsg?: string[];\n    width: string;\n}\n\nexport type IFilterTypes = \"CHECKBOX\" | \"DATE\" | \"TIME\" | \"SLIDER\";\n\nexport interface IFilterOBJ {\n    columnKeys: string[];\n    filterType?: IFilterTypes;\n    isSortRequired: boolean[];\n    isFilterRequired: boolean[];\n}\nexport interface LineDetailsPayload {\n    StationId: number;\n    OrderId: string;\n    StartDate: string;\n    EndDate: string;\n    IsEquivalised: boolean;\n}\n\nexport interface IEasyFilters {\n    isEnabled: boolean;\n    isActive: boolean;\n    filterName: string;\n    onlyEnabled?: boolean;\n}\n\nexport interface IPersistingFiltersLineDetails {\n    easyFilters?: IEasyFilters[];\n    columnLevelFilters?: any;\n    selectedLine?: \"SellerLine\" | \"BuyerLine\";\n    metricType?: OrderMetrics | string;\n    showSublines?: boolean;\n}\n\nexport class LineDetailsTableData {\n    isADULine: boolean;\n    lineNumber: string;\n    buyerProgram: string;\n    sellerProgram: string;\n    sellerProgramList: string[];\n    inventoryCodeSellerProgramMap: IInvCodeSellerPgmMap[];\n    inventoryCode: string;\n    sellerProgInvCode: string;\n    inventoryDays: string;\n    inventoryTime: string;\n    startDate: string;\n    endDate: string;\n    daypart: string;\n    length: string;\n    rate: number;\n    rating: number;\n    IMPS: number;\n    bookedGRP: number;\n    bookedGI: number;\n    projectedGI: number;\n    projectedGRP: number;\n    projectedGIToDisplay: number | string;\n    projectedGRPToDisplay: number | string;\n    spots: number;\n    amount: number;\n    weekSpots: number[];\n    parentExpandlableLineID: number;\n    isParentRowWithSublines: boolean;\n    isExpaded: boolean | null = null;\n    isSubline: boolean;\n    subLines: LineDetailsTableData[];\n    spotType: string;\n    rowClass: string = \"\";\n    TimeBand: string[] = [];\n    startTime: string;\n    endTime: string;\n    constructor(data: any, isADULine: boolean, subLine: boolean = false, expandID: number = -1) {\n        this.isADULine = subLine ? isADULine : data.IsAduLine;\n        this.lineNumber = data.LineNumber?.toString();\n        this.buyerProgram = data.BuyerProgramName ?? \"-\";\n        this.inventoryCode = data.InventoryCodeSellerProgramMap?.length\n            ? data.InventoryCodeSellerProgramMap[0].InventoryCode[0] ?? \"-\"\n            : \"-\";\n        this.sellerProgram = data.InventoryCodeSellerProgramMap?.length\n            ? data.InventoryCodeSellerProgramMap[0].SellerProgramName[0] ?? \"-\"\n            : \"-\";\n\n        this.sellerProgramList = data.InventoryCodeSellerProgramMap?.length\n            ? Array.from(\n                new Set<string>(data.InventoryCodeSellerProgramMap.flatMap((item: any) => item.SellerProgramName))\n            ).slice(1)\n            : [];\n        \n        this.inventoryCodeSellerProgramMap = data.InventoryCodeSellerProgramMap;\n\n        this.sellerProgInvCode =\n            this.inventoryCode && this.inventoryCode !== \"-\" ? `${this.sellerProgram} (${this.inventoryCode})` : \"-\";\n\n        this.inventoryDays = data.Days;\n        this.inventoryTime = data.Time;\n        this.TimeBand = data.TimeBand;\n        this.startTime = data.TimeBand?.length ? data.TimeBand[1] : \"\";\n        this.endTime = data.TimeBand?.length ? data.TimeBand[2] : \"\";\n        this.startDate = data.StartDate ? data.StartDate : \"-\";\n        this.endDate = data.EndDate ? data.EndDate : \"-\";\n        this.daypart = data.Daypart;\n        this.length = data.Length;\n        this.rate = data.Rate;\n        this.rating = parseFloat(data?.Ratings.toFixed(2));\n        this.IMPS = parseFloat(data?.Impressions.toFixed(1));\n        this.bookedGI = parseFloat(data?.BookedGI.toFixed(2));\n        this.bookedGRP = parseFloat(data?.BookedGRP.toFixed(2));\n        this.projectedGI = data?.ProjectedGI ? parseFloat(data?.ProjectedGI.toFixed(1)) : null;\n        this.projectedGRP = data?.ProjectedGRP ? parseFloat(data?.ProjectedGRP.toFixed(2)) : null;\n        this.spots = data.Spots;\n        this.amount = data.Amount;\n        this.weekSpots = data.WeekWiseSpotsCount.map((week: any) => week.SpotCount);\n        this.parentExpandlableLineID = expandID;\n        this.isSubline = subLine;\n        this.isParentRowWithSublines = expandID > -1 && !subLine;\n        this.isExpaded = this.isParentRowWithSublines ? false : null;\n        this.spotType = data.SpotType;\n        this.subLines = [];\n        if (data.Sublines && data.Sublines.length > 0) {\n            const sublines: LineDetailsTableData[] = [];\n            data.Sublines.forEach((subline: any) => {\n                sublines.push(new LineDetailsTableData(subline, data.IsAduLine, true, expandID));\n            });\n            this.subLines = sublines;\n        }\n    }\n}\n\nexport interface ItotalRow {\n    totalLines: number;\n    totalSpots: number;\n    totalGI: number;\n    totalGRP: number;\n    totalAmount: number;\n    totalProjectedGI: number | string;\n    totalProjectedGRP: number | string;\n    totalWeekSpots?: number[];\n}\n\nexport interface IInvCodeSellerPgmMap{\n    InventoryCode: string[];\n    SellerProgramName: string[];\n}\n","import { Injectable } from \"@angular/core\";\nimport { EasyFilters } from \"@annalib/anna-design-components-lib\";\nimport { GenericFeatureRelatedConstants, OrderMetrics } from \"@annalib/anna-feature-shared-lib\";\n\nimport { ILineDetailsResponse } from \"../models/line-details.interface\";\nimport { LineDetailsTableHeader } from \"../models/line-details.model\";\n\n@Injectable({\n    providedIn: \"root\",\n})\nexport class LineDetailsService {\n    tooltipRadioTextMap: Map<string, string>;\n\n    constructor() {\n        this.tooltipRadioTextMap = new Map();\n        this.insertValuesIntoMap();\n    }\n\n    getTableHeaders(\n        metricType: { id: number; text: OrderMetrics },\n        selectedLine: \"SellerLine\" | \"BuyerLine\",\n        userType: \"SELLER\" | \"BUYER\",\n        equivalisedData: boolean = false,\n        showSublines: boolean = false,\n    ): LineDetailsTableHeader[] {\n        const loading: boolean = !metricType;\n        const equivalisedText = equivalisedData ? \"EQ. \" : \"\";\n        let impOrRtgColumnName = null;\n        if (!loading) {\n            impOrRtgColumnName = metricType?.text === OrderMetrics.imps ? \"IMP('000)\" : \"RTG\";\n        }\n\n        const programkey = selectedLine === \"SellerLine\" ? \"sellerProgram\" : \"buyerProgram\";\n        const inventorykey =\n            selectedLine === \"SellerLine\"\n                ? \"inventoryCode\"\n                : `${userType === \"SELLER\" ? \"sellerProgInvCode\" : \"sellerProgram\"}`;\n\n        const programHeader = selectedLine === \"SellerLine\" ? \"SELLER PROGRAM\" : \"BUYER PROGRAM\";\n        const inventoryHeader = selectedLine === \"SellerLine\"\n        ? \"INVENTORY CODE\"\n        : `SELLER PROGRAM${userType === \"SELLER\" ? \" (INVENTORY CODE)\" : \"\"}`\n\n        const tableHeader: LineDetailsTableHeader[] = [\n            {\n                columnName: \"LINE\",\n                lowerData: \"\",\n                upperColumnFilter: {\n                    columnKeys: [\"lineNumber\"],\n                    filterType: \"CHECKBOX\",\n                    isSortRequired: [true],\n                    isFilterRequired: [true],\n                },\n                width: '80px',\n                filterRequired: true,\n            },\n            {\n                columnName: programHeader,\n                lowerData: inventoryHeader,\n                upperColumnFilter: {\n                    columnKeys: [programkey, inventorykey],\n                    filterType: \"CHECKBOX\",\n                    isSortRequired: [true, true],\n                    isFilterRequired: [true, true],\n                },\n                width: selectedLine === \"SellerLine\" ? '160px' : '250px',\n                filterRequired: true,\n            },\n            {\n                columnName: \"START DATE\",\n                lowerData: \"END DATE\",\n                filterRequired: showSublines,\n                upperColumnFilter: {\n                    columnKeys: [\"startDate\", \"endDate\"],\n                    filterType: \"DATE\",\n                    isSortRequired: [true, true],\n                    isFilterRequired: [true, true],\n                },\n                width: '95px',\n            },\n            {\n                columnName: \"DAYS\",\n                lowerData: \"TIME\",\n                upperColumnFilter: {\n                    columnKeys: [\"inventoryDays\"],\n                    filterType: \"CHECKBOX\",\n                    isSortRequired: [true],\n                    isFilterRequired: [true],\n                },\n                lowerColumnFilter: {\n                    columnKeys: [\"TimeBand\"],\n                    filterType: \"TIME\",\n                    isSortRequired: [true],\n                    isFilterRequired: [true],\n                },\n                filterRequired: showSublines,\n                width: '90px',\n            },\n            {\n                columnName: \"TYPE\",\n                upperColumnFilter: {\n                    columnKeys: [\"spotType\"],\n                    filterType: \"CHECKBOX\",\n                    isSortRequired: [true],\n                    isFilterRequired: [true],\n                },\n                filterRequired: showSublines,\n                width: '55px',\n                lowerData: \"\",\n            },\n            {\n                columnName: \"DP\",\n                lowerData: \"LEN\",\n                upperColumnFilter: {\n                    columnKeys: [\"daypart\", \"length\"],\n                    filterType: \"CHECKBOX\",\n                    isSortRequired: [true, true],\n                    isFilterRequired: [true, true],\n                },\n                width: '60px',\n                filterRequired: showSublines,\n            },\n            {\n                columnName: impOrRtgColumnName,\n                lowerData: \"\",\n                upperColumnFilter:{\n                    columnKeys: metricType?.text === OrderMetrics.imps ? [\"IMPS\"] : [\"rating\"],\n                    filterType: \"SLIDER\",\n                    isSortRequired: [true],\n                    isFilterRequired: [true],\n                },\n                width: '78px',\n                filterRequired: showSublines,\n                isToolTipRequired: equivalisedData ? [true] : [false],\n                toolTipMsg: [\n                    `The ${metricType?.text === OrderMetrics.imps ? \"impressions\" : \"ratings\"} are as per the quarterly hour average`,\n                ],\n            },\n            {\n                columnName: equivalisedData ? \"EUR\" : \"RATE\",\n                lowerData: \"\",\n                upperColumnFilter: {\n                    columnKeys: [\"rate\"],\n                    filterType: \"SLIDER\",\n                    isSortRequired: [true],\n                    isFilterRequired: [true],\n                },\n                filterRequired: showSublines,\n                width: '60px',\n            },\n            {\n                columnName: `${equivalisedText}SPOTS`,\n                lowerData: \"\",\n                upperColumnFilter: {\n                    columnKeys: [\"spots\"],\n                    filterType: \"SLIDER\",\n                    isSortRequired: [true],\n                    isFilterRequired: [true],\n                },\n                filterRequired: showSublines,\n                width: '78px',\n            },\n            selectedLine === \"SellerLine\" && userType === \"SELLER\"\n                ? this.getGIOrGRPColumnHeaderObjectForSellerLine(loading, metricType, equivalisedText, showSublines)\n                : this.getGIOrGRPColumnHeaderObjectForBuyerLine(loading, metricType, equivalisedText, showSublines),\n            {\n                columnName: \"AMOUNT\",\n                lowerData: \"\",\n                upperColumnFilter: {\n                    columnKeys: [\"amount\"],\n                    filterType: \"SLIDER\",\n                    isSortRequired: [true],\n                    isFilterRequired: [true],\n                },\n                filterRequired: showSublines,\n                width: '71px',\n            },\n        ];\n        return tableHeader;\n    }\n\n    getGIOrGRPColumnHeaderObjectForSellerLine(\n        loading: boolean,\n        metricType: { id: number; text: OrderMetrics },\n        equivalisedText: string,\n        showSublines: boolean\n    ): LineDetailsTableHeader {\n        let columnName = null;\n        if (!loading) {\n            columnName = `${equivalisedText}${metricType?.text === OrderMetrics.imps ? \"GI\" : \"GRP\"}`;\n        }\n        return {\n            columnName,\n            lowerData: equivalisedText + (metricType?.text === OrderMetrics.imps ? \"PROJ. GI\" : \"PROJ. GRP\"),\n            upperColumnFilter: {\n                columnKeys: metricType?.text === OrderMetrics.imps ? [\"bookedGI\", \"projectedGI\"] : [\"bookedGRP\", \"projectedGRP\"],\n                filterType: \"SLIDER\",\n                isSortRequired: [true, true],\n                isFilterRequired: [true, true],\n            },\n            width: '100px',\n            filterRequired: showSublines,\n            isToolTipRequired: metricType?.text === OrderMetrics.imps ? [true, true] : [false, true],\n            toolTipMsg:\n                metricType?.text === OrderMetrics.imps\n                    ? [\n                          \"IMPS and GI figures are in terms of thousands.\",\n                          GenericFeatureRelatedConstants.ProjectedGrpOrImpsMessage,\n                      ]\n                    : [null, GenericFeatureRelatedConstants.ProjectedGrpOrImpsMessage],\n        };\n    }\n\n    getGIOrGRPColumnHeaderObjectForBuyerLine(\n        loading: boolean,\n        metricType: { id: number; text: OrderMetrics },\n        equivalisedText: string,\n        showSublines: boolean\n    ): LineDetailsTableHeader {\n        let columnName = null;\n        if (!loading) {\n            columnName = equivalisedText + (metricType?.text === OrderMetrics.imps ? \"GI\" : \"GRP\");\n        }\n        return {\n            columnName,\n            lowerData: \"\",\n            upperColumnFilter: {\n                columnKeys: metricType?.text === OrderMetrics.imps ? [\"bookedGI\"] : [\"bookedGRP\"],\n                filterType: \"SLIDER\",\n                isSortRequired: [true, true],\n                isFilterRequired: [true, true],\n            },\n            width: '65px',\n            filterRequired: showSublines,\n            isToolTipRequired: metricType?.text === OrderMetrics.imps ? [true] : [false],\n            toolTipMsg:\n                metricType?.text === OrderMetrics.imps ? [\"IMPS and GI figures are in terms of thousands.\"] : [null],\n        };\n    }\n\n    /**\n     * Function to get the week wise table headers\n     * @param tableAPIData - Line details API response\n     * @returns - Line details table week headers \n     * */ \n    getWeekTableHeaders(tableAPIData: ILineDetailsResponse): LineDetailsTableHeader[] {\n        if(tableAPIData?.Lines?.length > 0)\n            return tableAPIData?.Lines[0].WeekWiseSpotsCount.map(\n                (ele: any): LineDetailsTableHeader => ({\n                    columnName: ele.DisplayWeek.split(\",\")[0],\n                    lowerData: ele.DisplayWeek.split(\",\")[1],\n                    width: '55px',\n                    upperColumnFilter: {\n                        columnKeys: [],\n                        isFilterRequired: [],\n                        isSortRequired: [],\n                    }\n                }),\n            );\n\n        return [];\n    }\n\n    getEasyFiltersForLineDetails(): EasyFilters[] {\n        const easyFilters: EasyFilters[] = [\n            {\n                label: \"\",\n                groupId: \"lines\",\n                filters: [\n                    {\n                        text: \"ORDERED LINES\",\n                        isActive: false,\n                        isDisabled: false,\n                        filterKeyValue: { key: \"isADULine\", valueToCheck: false },\n                    },\n                    {\n                        text: \"ADU LINES\",\n                        isActive: false,\n                        isDisabled: false,\n                        filterKeyValue: { key: \"isADULine\", valueToCheck: true },\n                    },\n                ],\n            },\n        ];\n\n        return easyFilters;\n    }\n\n    insertValuesIntoMap() {\n        this.tooltipRadioTextMap.set(\"lineNumber\", \"Line\");\n        this.tooltipRadioTextMap.set(\"inventoryCode\", \"Inventory Code\");\n        this.tooltipRadioTextMap.set(\"buyerProgram\", \"Buyer Prog Name\");\n        this.tooltipRadioTextMap.set(\"daypart\", \"DP\");\n    }\n}\n","import { Injectable } from \"@angular/core\";\nimport { AnnaFilterService, AnnaGtHelperService, AnnaSortService, RadioButtonModel } from \"@annalib/anna-core\";\nimport { cloneDeep, uniq } from \"lodash-es\";\n\n@Injectable({\n    providedIn: \"root\",\n})\nexport class LineDetailsFilterService {\n    tableData: any = [];\n    tableDataClonned: any = [];\n    tooltipRadioTextMap: Map<string, string>;\n\n    tooltip: any;\n    showFilterTabs: boolean;\n    radioButtons: RadioButtonModel[];\n    enabledHeaders: string[];\n\n    showClearAllBtn: boolean;\n    columnSortFiltersStates: any;\n\n    constructor(\n        public annaSortService: AnnaSortService,\n        public annaFilterService: AnnaFilterService,\n        private annaGenericTableService: AnnaGtHelperService,\n    ) {\n        this.initFilters();\n        this.annaSortService.columnSortState = new Map();\n        this.annaFilterService.initialValueMap = new Map();\n        this.tooltipRadioTextMap = new Map();\n        this.insertValuesIntoMap();\n    }\n\n    bindTheValueToToolTip(\n        tooltip: any,\n        header: string[],\n        isSortRequired: boolean[],\n        isFilterRequired: boolean[]\n    ): void {\n        if (tooltip === this.tooltip) {\n            this.closeTooltip();\n        } else {\n            this.enabledHeaders = header;\n            this.showFilterTabs = header.length > 1;\n            const enabledHeaders: any = [];\n            header.forEach((item) => {\n                if (uniq(this.tableDataClonned.map((u: any) => u[item])).length > 1 || this.isTooltipActive([item])) {\n                    enabledHeaders.push(item);\n                }\n            });\n            this.openTooltip(tooltip, enabledHeaders, isSortRequired, isFilterRequired);\n        }\n    }\n\n    isTooltipActive(header: string[]): boolean {\n        if (this.annaSortService.columnSortState) {\n            return (\n                this.annaFilterService.isTooltipActive(header, this.annaSortService.columnSortState) &&\n                this.areDiffrentvaluesInTable(header)\n            );\n        }\n        return false;\n    }\n\n    areDiffrentvaluesInTable(header: any): boolean {\n        let present = false;\n        header.forEach((key: any) => {\n            let checkboxData: any[] = [];\n            this.tableDataClonned.forEach((element: any) => {\n                checkboxData.push(element[key]);\n            });\n            checkboxData = [...new Set(checkboxData)];\n            if (checkboxData.length > 1) {\n                present = true;\n            }\n        });\n        return present;\n    }\n\n    openTooltip(tooltip: any, header: string[], isSortRequired: boolean[], isFilterRequired: boolean[]): void {\n        this.closeTooltip();\n        this.tooltip = tooltip;\n        this.tooltip.open();\n        this.radioButtons = header.map((key, index) => {\n            const value = this.tooltipRadioTextMap.get(key) ?? key;\n            return new RadioButtonModel(key, value, isSortRequired[index], isFilterRequired[index]);\n        });\n    }\n\n    applyFilters(): any {\n        this.enableDisableClearAllBtn();\n        this.disableEnableTooltipIcon();\n        this.closeTooltip();\n    }\n\n    enableDisableClearAllBtn() {\n        let isSortApplied = false;\n        this.annaSortService.columnSortState.forEach((val, key) => {\n            if (val === \"ASC\" || val === \"DESC\") {\n                isSortApplied = true;\n            }\n        });\n        this.showClearAllBtn = this.annaFilterService.appliedFiltersArray.length > 0 || isSortApplied;\n    }\n\n    closeTooltip(): void {\n        if (this.tooltip && this.tooltip.isOpen()) {\n            this.tooltip.close();\n        }\n        this.tooltip = null;\n    }\n\n    initFilters(): void {\n        this.annaGenericTableService.initColumnFilterAndSorting();\n        this.showClearAllBtn = false;\n    }\n\n    clearAllFiltersAndSorting() {\n        this.initFilters();\n        this.tableData = cloneDeep(this.tableDataClonned);\n        this.annaSortService.noSortingAppliedData = cloneDeep(this.tableData);\n        this.disableEnableTooltipIcon();\n    }\n\n    disableEnableTooltipIcon() {\n        this.columnSortFiltersStates = {\n            lineNumber: this.disableEnableEachColumnTooltipIcon(\"lineNumber\", \"CHECKBOX\"),\n            inventoryCode: this.disableEnableEachColumnTooltipIcon(\"inventoryCode\", \"CHECKBOX\"),\n            daypart: this.disableEnableEachColumnTooltipIcon(\"daypart\", \"CHECKBOX\"),\n            buyerProgram: this.disableEnableEachColumnTooltipIcon(\"buyerProgram\", \"CHECKBOX\"),\n            sellerProgram: this.disableEnableEachColumnTooltipIcon(\"sellerProgram\", \"CHECKBOX\"),\n            sellerProgInvCode: this.disableEnableEachColumnTooltipIcon(\"sellerProgInvCode\", \"CHECKBOX\"),\n            spotType: this.disableEnableEachColumnTooltipIcon(\"spotType\", \"CHECKBOX\"),\n            inventoryDays: this.disableEnableEachColumnTooltipIcon(\"inventoryDays\", \"CHECKBOX\"),\n            length: this.disableEnableEachColumnTooltipIcon(\"length\", \"CHECKBOX\"),\n            rating: this.disableEnableEachColumnTooltipIcon(\"rating\", \"CHECKBOX\"),\n            IMPS: this.disableEnableEachColumnTooltipIcon(\"IMPS\", \"CHECKBOX\"),\n            rate: this.disableEnableEachColumnTooltipIcon(\"rate\", \"CHECKBOX\"),\n            spots: this.disableEnableEachColumnTooltipIcon(\"spots\", \"CHECKBOX\"),\n            amount: this.disableEnableEachColumnTooltipIcon(\"amount\", \"CHECKBOX\"),\n            bookedGRP: this.disableEnableEachColumnTooltipIcon(\"bookedGRP\", \"CHECKBOX\"),\n            bookedGI: this.disableEnableEachColumnTooltipIcon(\"bookedGI\", \"CHECKBOX\"),\n            projectedGRP: this.disableEnableEachColumnTooltipIcon(\"projectedGRP\", \"CHECKBOX\"),\n            projectedGI: this.disableEnableEachColumnTooltipIcon(\"projectedGI\", \"CHECKBOX\"),\n            endDate: this.disableEnableEachColumnTooltipIcon(\"endDate\", \"CHECKBOX\"),\n            startDate: this.disableEnableEachColumnTooltipIcon(\"startDate\", \"CHECKBOX\"),\n            TimeBand: this.disableEnableEachColumnTooltipIcon(\"TimeBand\", \"TIME\"),\n        };\n    }\n\n    disableEnableEachColumnTooltipIcon(key: string, filterType?: \"CHECKBOX\" | \"TIME\") {\n        let values = [];\n        let disableTooltipIcon: boolean = true;\n\n        const latestFilters = this.annaFilterService.appliedFiltersArray;\n        if (latestFilters.length > 0 && latestFilters[latestFilters.length - 1] === key) {\n            disableTooltipIcon = false;\n        }\n\n        if (disableTooltipIcon) {\n            values = this.tableData.map((u: { [x: string]: any }) => u[key]);\n            if (\n                (filterType === \"CHECKBOX\" && uniq(values).filter((n) => n != null).length > 1) ||\n                (filterType !== \"CHECKBOX\" && uniq(values).filter((n) => n != null && n !== \"-\").length > 1)\n            ) {\n                disableTooltipIcon = false;\n            }\n        }\n        return disableTooltipIcon;\n    }\n\n    insertValuesIntoMap() {\n        this.tooltipRadioTextMap.set(\"lineNumber\", \"Line\");\n        this.tooltipRadioTextMap.set(\"inventoryCode\", \"Inventory Code\");\n        this.tooltipRadioTextMap.set(\"sellerProgram\", \"Seller Program\");\n        this.tooltipRadioTextMap.set(\"buyerProgram\", \"Buyer Program\");\n        this.tooltipRadioTextMap.set(\"sellerProgInvCode\", \"Seller Pgm (Inv Code)\");\n        this.tooltipRadioTextMap.set(\"daypart\", \"DP\");\n        this.tooltipRadioTextMap.set(\"spotType\",\"Type\");\n        this.tooltipRadioTextMap.set(\"inventoryDays\",\"Days\");\n        this.tooltipRadioTextMap.set(\"length\",\"Length\");\n        this.tooltipRadioTextMap.set(\"rating\",\"Rating\");\n        this.tooltipRadioTextMap.set(\"IMPS\",\"IMP('000)\");\n        this.tooltipRadioTextMap.set(\"rate\",\"Rate\");\n        this.tooltipRadioTextMap.set(\"spots\",\"Spots\");\n        this.tooltipRadioTextMap.set(\"amount\",\"Amount\");\n        this.tooltipRadioTextMap.set(\"bookedGRP\",\"Booked GRP\");\n        this.tooltipRadioTextMap.set(\"bookedGI\",\"Booked GI\");\n        this.tooltipRadioTextMap.set(\"projectedGRP\",\"Proj. GRP\");\n        this.tooltipRadioTextMap.set(\"projectedGI\",\"Proj. GI\");\n        this.tooltipRadioTextMap.set(\"endDate\",\"End Date\");\n        this.tooltipRadioTextMap.set(\"startDate\",\"Start Date\");\n        this.tooltipRadioTextMap.set(\"TimeBand\",\"Time\");\n    }\n}\n","import { CurrencyPipe, DecimalPipe, NgClass, NgFor, NgIf, NgStyle, NgTemplateOutlet } from \"@angular/common\";\nimport {\n    AfterViewChecked,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    ElementRef,\n    EventEmitter,\n    Inject,\n    Input,\n    OnChanges,\n    OnInit,\n    Output,\n    QueryList,\n    SimpleChanges,\n    ViewChild,\n    ViewChildren,\n} from \"@angular/core\";\nimport { Params } from \"@angular/router\";\nimport {\n    AnnaCoreModule,\n    AnnaDateTimeFormatService,\n    AnnaFilterService,\n    AnnaGlobalConfigService,\n    AnnaGtHelperService,\n    AnnaNoDataComponent,\n    AnnaSortService,\n    ButtonToggleComponent,\n    ButtonToggleOptions,\n    ICustomSingleSelect,\n} from \"@annalib/anna-core\";\nimport {\n    AnnaDesignComponentsLibModule,\n    CalendarQuarterYearFilterService,\n    DatepickerService,\n    EasyFilters,\n    EquivalisationOfDataService,\n    IdText,\n    PeriodSelectionPopUp,\n    StartDateConsideringFactor,\n    ToggleComponent,\n} from \"@annalib/anna-design-components-lib\";\nimport { OrderMetrics, PrimaryOrderPanelService } from \"@annalib/anna-feature-shared-lib\";\nimport { NgbDate, NgbTooltip } from \"@ng-bootstrap/ng-bootstrap\";\nimport dayjs from \"dayjs\";\nimport { cloneDeep, isEqual } from \"lodash-es\";\nimport { NgxSkeletonLoaderModule } from \"ngx-skeleton-loader\";\nimport { ToastrService } from \"ngx-toastr\";\n\n// eslint-disable-next-line import/no-cycle\nimport { DateAndAllKeyType, PrimaryDetails } from \"../../public-api\";\nimport { ILineDetailsBackendService, LINE_DETAILS_PAGE_SERVICE_TOKEN } from \"./config/line-details-service.token\";\nimport { ILineDetailsResponse, LineType, UserType } from \"./models/line-details.interface\";\nimport {\n    IInvCodeSellerPgmMap,\n    IPersistingFiltersLineDetails,\n    ItotalRow,\n    LineDetailsPayload,\n    LineDetailsTableData,\n    LineDetailsTableHeader,\n} from \"./models/line-details.model\";\nimport { LineDetailsService } from \"./services/line-details.service\";\nimport { LineDetailsFilterService } from \"./services/line-details-filter.service\";\n\n@Component({\n    selector: \"anna-feature-lib-line-details\",\n    templateUrl: \"./line-details.component.html\",\n    styleUrls: [\"./line-details.component.scss\"],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [\n        NgIf,\n        NgFor,\n        NgClass,\n        NgStyle,\n        NgbTooltip,\n        CurrencyPipe,\n        DecimalPipe,\n        AnnaCoreModule,\n        ToggleComponent,\n        NgTemplateOutlet,\n        AnnaNoDataComponent,\n        NgxSkeletonLoaderModule,\n        AnnaDesignComponentsLibModule,\n        ButtonToggleComponent,\n    ],\n    standalone: true,\n})\nexport class LineDetailsComponent implements OnInit, OnChanges, AfterViewChecked {\n    @Input() queryParams: Params;\n    @Input() applyPersistedFilters: boolean; // If any filter found on URL\n    @Input() persistedFilters: IPersistingFiltersLineDetails; // Applied Filters from URL\n    @Input() persistingFilterPeriodData: PeriodSelectionPopUp; // Period selected\n    @Input() primaryOrderData: PrimaryDetails;\n    @Input() showSkeletonLoading: boolean = true;\n    @Input() showSellLineToggle: boolean;\n    @Input() showBuyLineToggle: boolean;\n    @Input() showEasyFilters: boolean;\n    @Input() orderDefaultMetricType: OrderMetrics = null;\n    @Input() equivalisedData: boolean = null;\n    @Input() userType: UserType = \"SELLER\";\n\n    @Output() filterApplied = new EventEmitter();\n    @Output() metricTypeDropdownChanged = new EventEmitter<string>();\n    @Output() navigateToDiscrepancyDetail = new EventEmitter();\n\n    // Table Data Variables\n    tableData: LineDetailsTableData[] = [];\n    tableDataClonned: LineDetailsTableData[] = [];\n    originalTableData: LineDetailsTableData[] = [];\n\n    tableHeaders: LineDetailsTableHeader[] = [];\n    totalRow: ItotalRow;\n    weekWiseHeaderData: LineDetailsTableHeader[] = [];\n\n    numberOfSkeletonRow: any = new Array(7);\n    numberOfSkeletonColumns: any[] = new Array(20);\n    skeletonWeekColumns: any[] = new Array(9);\n\n    intelliFilters: EasyFilters[];\n\n    // Quater or month selection veriables\n    periodModalTitle: string = \"Edit Period\";\n    periodModalMessage: string = \"Select period for which you want to view the line details for.\";\n\n    PeriodOptions: string[] = [\"Quarter\", \"Month\"]; // In order to remove custom from dropdown in quater filter\n\n    disablePeriodSelection: boolean = false;\n\n    isEntireFlightPeriodSelected: boolean;\n    selectedFilterStartDate: string;\n    selectedFilterEndDate: string;\n\n    flightPeriodData: { statDate: string; endDate: string };\n\n    startDateConsideringFactor: StartDateConsideringFactor;\n    isFlightPeriodFallsinSameMonth: boolean;\n\n    // Toggle Values\n    selectedLine: LineType = \"SellerLine\";\n\n    isScrolledLeft: boolean;\n    filterAlignment: string = \"auto\";\n    tableHeight: string;\n    currencyUnit = \"USD\";\n\n    selectedMetric: { id: number; text: OrderMetrics } = null;\n    orderMetricsListForDropdown: { id: number; text: OrderMetrics }[];\n\n    metricDropdownConfig: ICustomSingleSelect;\n\n    tableDataApiCalledForFirstTym: boolean = true;\n\n    showViewLineComparisons: boolean = false;\n    showTotalRow: boolean = true;\n    showOrHideToggleForTotalRow: boolean = true;\n\n    @ViewChildren(\"arrowTooltip\") arrowTooltip: QueryList<NgbTooltip>;\n    @ViewChild(\"tableElementRef\", { static: true }) tableElementRef: ElementRef;\n    @ViewChildren(\"thElement\") thElements: QueryList<ElementRef>;\n\n    invCodeSellerPgmTooltip: any;\n    invCodeSellerPgmTableData: IInvCodeSellerPgmMap[];\n    numberOfEasyFilterLoader: number = 2;\n\n    disableShowSublineToggle: boolean = true;\n    isShowSublineToggled: boolean = false;\n\n    buttonToggleOptions: ButtonToggleOptions[] = [];\n    /**\n     * Flag Variable to reset filter on period selection change\n     * On first load we don't need to reset but after that on each period selection change we need to reset column level filters\n     */\n    resetFilterOnPeriodSelectionChange: boolean = false;\n\n    constructor(\n        private toastr: ToastrService,\n        private cdr: ChangeDetectorRef,\n        private dpService: DatepickerService,\n        private annaGtService: AnnaGtHelperService,\n        public annaSortService: AnnaSortService,\n        public annaFilterService: AnnaFilterService,\n        public lineDetailsService: LineDetailsService,\n        private annaGlobalConfig: AnnaGlobalConfigService,\n        public lineDetailsFilterService: LineDetailsFilterService,\n        private primaryOrderPanelService: PrimaryOrderPanelService,\n        private annaDateTimeFormatService: AnnaDateTimeFormatService,\n        private filterModalService: CalendarQuarterYearFilterService,\n        private equivalisationOfDataService: EquivalisationOfDataService,\n        @Inject(LINE_DETAILS_PAGE_SERVICE_TOKEN) public lineDetailsBackendService: ILineDetailsBackendService,\n    ) {\n        this.setMetricDropdownConfig();\n    }\n\n    ngOnInit(): void {\n        document.documentElement.style.setProperty(`--hide-total-row-scrollbar-offset`, \"0px\");\n        this.setFilterAlignmentBasedOnScreenResolution();\n        this.checkAndApplyPersistingFilters();\n        this.setTableHeaders();\n        this.lineDetailsFilterService.initFilters();\n\n        if (this.showEasyFilters && this.selectedLine === \"SellerLine\") {\n            this.intelliFilters = this.lineDetailsService.getEasyFiltersForLineDetails();\n        }\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        if (changes.primaryOrderData && changes.primaryOrderData.currentValue) {\n            this.intialiseData();\n\n            const metricTypeToApply = this.persistedFilters?.metricType\n                ? JSON.parse(this.persistedFilters?.metricType)\n                : this.orderDefaultMetricType;\n\n            if (metricTypeToApply) {\n                this.selectedMetric =\n                    metricTypeToApply === OrderMetrics.imps\n                        ? this.orderMetricsListForDropdown[1]\n                        : this.orderMetricsListForDropdown[0];\n\n                this.metricTypeDropdownChanged.emit(this.selectedMetric?.text);\n            }\n            this.setTableHeaders();\n            this.disablePeriodSelection = this.primaryOrderData?.orderInfo.orderType === \"UD (Liability set)\";\n        }\n\n        if (changes.persistingFilterPeriodData && this.primaryOrderData) {\n            this.isFlightPeriodOfSameMonth();\n        }\n\n        if (changes.equivalisedData?.currentValue != null && !this.tableDataApiCalledForFirstTym) {\n            this.setTableHeaders();\n            this.fetchTableData(this.selectedLine);\n        }\n\n        if (changes?.showBuyLineToggle || changes?.showSellLineToggle) {\n            this.addButtonToggleOptions();\n        }\n    }\n\n    ngAfterViewChecked() {\n        this.annaFilterService.setMarginLeftForFilterIcon(this.thElements);\n    }\n\n    addButtonToggleOptions() {\n        const isSellerLineTogglePresent = this.buttonToggleOptions.find((x) => x.value === \"SellerLine\");\n        const isBuyerLineTogglePresent = this.buttonToggleOptions.find((x) => x.value === \"BuyerLine\");\n        if (this.showSellLineToggle && !isSellerLineTogglePresent) {\n            this.buttonToggleOptions.push({\n                label: \"Sell Line Details\",\n                value: \"SellerLine\",\n                disabled: false,\n            });\n        }\n\n        if (this.showBuyLineToggle && !isBuyerLineTogglePresent) {\n            this.buttonToggleOptions.push({ label: \"Buy Line Details\", value: \"BuyerLine\", disabled: false });\n        }\n    }\n\n    setTableHeaders() {\n        this.tableHeaders = this.lineDetailsService.getTableHeaders(\n            this.selectedMetric,\n            this.selectedLine,\n            this.userType,\n            this.equivalisedData,\n            this.selectedLine === \"SellerLine\" && !this.isShowSublineToggled,\n        );\n    }\n\n    setScrollToInitialPosition() {\n        this.tableElementRef.nativeElement.scrollTop = 0;\n        this.tableElementRef.nativeElement.scrollLeft = 0;\n    }\n\n    // Initalizer function\n    intialiseData() {\n        this.flightPeriodData = {\n            statDate: this.primaryOrderData.campaignStartDate,\n            endDate: this.primaryOrderData.campaignEndDate,\n        };\n        this.selectedFilterStartDate = this.flightPeriodData.statDate;\n        this.selectedFilterEndDate = this.flightPeriodData.endDate;\n        this.setSelectedLine();\n        this.isFlightPeriodOfSameMonth();\n    }\n\n    isFlightPeriodOfSameMonth() {\n        const ngbFlightStartDate = this.annaDateTimeFormatService.convertToNgbDate(\n            this.primaryOrderData.campaignStartDate,\n            \"MM/DD/YYYY\",\n        );\n        const ngbFlightEndDate = this.annaDateTimeFormatService.convertToNgbDate(\n            this.primaryOrderData.campaignEndDate,\n            \"MM/DD/YYYY\",\n        );\n        const startDateData = this.dpService.findBroadcastYearAndMonthForDate(NgbDate.from(ngbFlightStartDate));\n        const endDateData = this.dpService.findBroadcastYearAndMonthForDate(NgbDate.from(ngbFlightEndDate));\n        this.isFlightPeriodFallsinSameMonth = isEqual(startDateData, endDateData);\n        const isFlightPeriodOfSameQuarter = this.areMonthsofSameQuarter(startDateData, endDateData);\n        const startDate = this.selectedFilterStartDate\n            ? dayjs(this.selectedFilterStartDate).format(\"MM/DD/YYYY\")\n            : null;\n        const endDate = this.selectedFilterEndDate ? dayjs(this.selectedFilterEndDate).format(\"MM/DD/YYYY\") : null;\n        if (\n            this.isFlightPeriodFallsinSameMonth ||\n            (this.persistingFilterPeriodData?.startDate &&\n                this.filterModalService.isFlightPeriodWithinSelectedDates(\n                    this.primaryOrderData.campaignStartDate,\n                    this.primaryOrderData.campaignEndDate,\n                    this.persistingFilterPeriodData.startDate,\n                    this.persistingFilterPeriodData.endDate,\n                ))\n        ) {\n            this.persistingFilterPeriodData = {\n                isEntireFlightPeriod: true,\n                startDate,\n                endDate,\n                calendarType: \"broadcast\",\n                month: \"\",\n                year: \"\",\n                periodMode: \"\",\n                quarter: \"\",\n            };\n            if (isFlightPeriodOfSameQuarter) {\n                this.PeriodOptions = [\"Month\"];\n                this.persistingFilterPeriodData.periodMode = \"Month\";\n            }\n        } else if (\n            isFlightPeriodOfSameQuarter &&\n            (!this.persistingFilterPeriodData ||\n                (this.persistingFilterPeriodData && !this.persistingFilterPeriodData.startDate))\n        ) {\n            this.persistingFilterPeriodData = {\n                isEntireFlightPeriod: true,\n                startDate,\n                endDate,\n                calendarType: \"broadcast\",\n                month: \"\",\n                year: \"\",\n                periodMode: \"Month\",\n                quarter: \"\",\n            };\n            this.PeriodOptions = [\"Month\"];\n        }\n    }\n\n    areMonthsofSameQuarter(\n        startDate: { monthId: number; yearId: number },\n        endDate: { monthId: number; yearId: number },\n    ): boolean {\n        const startQuarter = Math.ceil(startDate.monthId / 3);\n        const endQuarter = Math.ceil(endDate.monthId / 3);\n\n        return startQuarter === endQuarter && startDate.yearId === endDate.yearId;\n    }\n\n    initialisePeriodFilter(startEndDateObj: { startDate: string; endDate: string }) {\n        // check what this flow is for\n        const selectedPeriod = this.filterModalService.getSelectedPeriodIfFlightPeriodWithinQuarter(\n            startEndDateObj,\n            this.primaryOrderData,\n        );\n        this.persistingFilterPeriodData = selectedPeriod || this.persistingFilterPeriodData;\n    }\n    // Check if any Line is Selected then set selected line\n    checkAndApplyPersistingFilters() {\n        if (this.applyPersistedFilters) {\n            this.selectedLine = this.persistedFilters?.selectedLine ? this.persistedFilters.selectedLine : \"SellerLine\";\n            this.isShowSublineToggled = this.persistedFilters?.showSublines ?? false;\n        }\n    }\n\n    setSelectedLine() {\n        if (!this.showSellLineToggle && !this.showBuyLineToggle) {\n            this.selectedLine = this.primaryOrderData.orderInfo.isRepOrder ? \"BuyerLine\" : \"SellerLine\";\n        }\n    }\n\n    // Set selected range variables and fetch Table Data\n    applyPeriodSelection(value: DateAndAllKeyType) {\n        this.setSelectedFilterValue(value);\n\n        if (this.resetFilterOnPeriodSelectionChange) {\n            this.resetFilters();\n            this.anyTypeOfFilterApplied();\n        } else {\n            this.resetFilterOnPeriodSelectionChange = true;\n        }\n\n        if (this.showBuyLineToggle || this.showSellLineToggle || this.primaryOrderData?.orderInfo?.isRepOrder != null) {\n            this.fetchTableData(this.selectedLine);\n        }\n    }\n\n    // Set Date range Variable\n    setSelectedFilterValue(value: DateAndAllKeyType) {\n        this.isEntireFlightPeriodSelected = value.isEntireFlightPeriod;\n        this.selectedFilterStartDate = value.startDate;\n        this.selectedFilterEndDate = value.endDate;\n    }\n\n    // Initailize TableHeader and loding varables --> Get PayLoad --> Call API -->\n    // ==Success== Merge week Table Headers --> Set table data in proper format --> Initalize easyFilters --> Apply Persisting Filters and calculate total row data\n    // __Error__   Show Error Toastr --> stop loading\n    fetchTableData(selectedLine: \"SellerLine\" | \"BuyerLine\") {\n        this.showSkeletonLoading = true;\n        this.weekWiseHeaderData = [];\n        this.tableData = [];\n\n        this.equivalisationOfDataService.publishIsNoDataStatusData(true);\n\n        const payload = this.getPayloadForGetLineDetails();\n        if (payload.StartDate && payload.EndDate) {\n            this.lineDetailsBackendService.getLineDetails(selectedLine, payload).subscribe(\n                (response: ILineDetailsResponse) => {\n                    this.weekWiseHeaderData = this.lineDetailsService.getWeekTableHeaders(response);\n\n                    this.showViewLineComparisons = response.ShowLineComparisonViewLink;\n                    response.Lines.forEach((line: any, index: number) => {\n                        this.tableData.push(\n                            new LineDetailsTableData(line, true, false, line.Sublines.length > 0 ? index : -1),\n                        );\n                    });\n\n                    this.originalTableData = cloneDeep(this.tableData);\n\n                    this.setTableDataBasedOnShowSubLinesToggle();\n\n                    if (this.showEasyFilters && this.selectedLine === \"SellerLine\") {\n                        this.intelliFilters = this.lineDetailsService.getEasyFiltersForLineDetails();\n                    }\n\n                    this.equivalisationOfDataService.publishIsNoDataStatusData(this.tableDataClonned.length === 0);\n                    this.applyPersistingFilters();\n                    this.createTotalRow();\n                    this.lineDetailsFilterService.disableEnableTooltipIcon();\n                    this.lineDetailsFilterService.enableDisableClearAllBtn();\n                    this.showSkeletonLoading = false;\n                    this.tableDataApiCalledForFirstTym = false;\n                    this.cdr.detectChanges();\n                },\n                (error: any) => {\n                    this.showSkeletonLoading = false;\n\n                    this.tableData = [];\n                    this.tableDataClonned = [];\n                    this.lineDetailsFilterService.tableData = [];\n                    this.lineDetailsFilterService.tableDataClonned = [];\n\n                    this.showViewLineComparisons = false;\n\n                    this.toastr.error(\"Something went wrong! Please try again.\");\n                    this.equivalisationOfDataService.publishIsNoDataStatusData(true);\n                    this.tableDataApiCalledForFirstTym = false;\n                    this.cdr.detectChanges();\n                },\n            );\n        }\n    }\n\n    getPayloadForGetLineDetails(): LineDetailsPayload {\n        const payload = {\n            StationId: this.primaryOrderData.stationId,\n            OrderId: this.primaryOrderData.orderId,\n            StartDate: this.isEntireFlightPeriodSelected\n                ? this.primaryOrderData.campaignStartDate\n                : this.selectedFilterStartDate,\n            EndDate: this.isEntireFlightPeriodSelected\n                ? this.primaryOrderData.campaignEndDate\n                : this.selectedFilterEndDate,\n            IsEquivalised: this.equivalisedData,\n        };\n        return payload;\n    }\n\n    // Apply persisting filters if any.\n    applyPersistingFilters() {\n        this.annaSortService.noSortingAppliedData = cloneDeep(this.tableDataClonned);\n        if (this.applyPersistedFilters) {\n            this.initPeristedFilters();\n        }\n    }\n\n    // apply column level filters\n    initPeristedFilters() {\n        this.annaFilterService.initialValueMap = new Map();\n        this.annaFilterService.appliedFiltersArray = cloneDeep(\n            this.persistedFilters?.columnLevelFilters?.appliedFilters ?? [],\n        );\n        this.annaFilterService.tooltipSelectedMap = new Map(\n            this.persistedFilters?.columnLevelFilters?.selectedFilterData\n                ? JSON.parse(this.persistedFilters.columnLevelFilters.selectedFilterData)\n                : \"\",\n        );\n\n        this.annaSortService.columnSortState = this.persistedFilters?.columnLevelFilters?.sortState\n            ? new Map(JSON.parse(this.persistedFilters.columnLevelFilters.sortState))\n            : new Map();\n\n        this.annaFilterService.updateDateFilterTooltipSelectedMap([\"startDate\", \"endDate\"]);\n\n        this.tableData = this.annaFilterService.filterData(this.tableData, \"\");\n        this.lineDetailsFilterService.showClearAllBtn = true;\n    }\n\n    lineSelectionChanged(selectedLine: any) {\n        this.showSkeletonLoading = true;\n        this.selectedLine = selectedLine as \"SellerLine\" | \"BuyerLine\";\n        this.showEasyFilters = selectedLine === \"SellerLine\";\n        this.setTableHeaders();\n        this.weekWiseHeaderData = [];\n        this.resetFilters();\n        this.anyTypeOfFilterApplied();\n    }\n\n    onShowSublineToggled(selectedValue: boolean) {\n        this.isShowSublineToggled = selectedValue;\n        this.setTableHeaders();\n        this.resetFilters();\n        this.anyTypeOfFilterApplied();\n        this.setTableDataBasedOnShowSubLinesToggle();\n        this.createTotalRow();\n    }\n\n    setTableDataBasedOnShowSubLinesToggle() {\n        let rows: LineDetailsTableData[] = [];\n\n        if (!this.isShowSublineToggled) {\n            let addDarkColorClass: boolean = true;\n            this.originalTableData.forEach((row) => {\n                if (row.subLines.length > 0) {\n                    row.subLines.forEach((subRow) => {\n                        subRow.rowClass = addDarkColorClass ? \"dark-bg-row\" : \"light-bg-row\";\n                        rows.push(subRow);\n                    });\n                    addDarkColorClass = !addDarkColorClass;\n                } else {\n                    row.rowClass = \"\";\n                    rows.push(row);\n                }\n            });\n        } else {\n            rows = this.originalTableData;\n        }\n\n        this.tableData = cloneDeep(rows);\n        this.tableDataClonned = cloneDeep(rows);\n        this.lineDetailsFilterService.tableData = cloneDeep(rows);\n        this.lineDetailsFilterService.tableDataClonned = cloneDeep(rows);\n        this.enableDisableShowSublinesToggle();\n    }\n\n    enableDisableShowSublinesToggle() {\n        this.disableShowSublineToggle = !this.originalTableData.some((row) => row.subLines.length > 0);\n    }\n\n    resetFilters() {\n        this.annaFilterService.appliedFiltersArray = [];\n        this.annaFilterService.tooltipSelectedMap = new Map();\n        this.annaSortService.columnSortState = new Map();\n        this.applyPersistedFilters = false;\n        this.lineDetailsFilterService.showClearAllBtn = false;\n    }\n\n    intelliFilterClicked(emittedObj: any) {\n        this.tableData = emittedObj.filteredData;\n        this.createTotalRow();\n        this.lineDetailsFilterService.enableDisableClearAllBtn();\n        this.anyTypeOfFilterApplied();\n    }\n\n    filterAppliedToTable(tableData: LineDetailsTableData[]) {\n        this.setScrollToInitialPosition();\n        this.tableData = tableData;\n        this.lineDetailsFilterService.tableData = tableData;\n        this.lineDetailsFilterService.applyFilters();\n        this.anyTypeOfFilterApplied();\n        this.createTotalRow();\n    }\n\n    expandRow(index: number) {\n        if (index > -1 && this.isShowSublineToggled) {\n            const indexOfParentRow = this.tableData.findIndex(\n                (line) => line.isParentRowWithSublines && line.parentExpandlableLineID === index,\n            );\n            this.tableData[indexOfParentRow].isExpaded = !this.tableData[indexOfParentRow].isExpaded;\n        }\n    }\n\n    createTotalRow() {\n        if (this.tableData.length > 0) {\n            const totalLines = new Set(this.tableData.map((line) => line.lineNumber)).size;\n            let totalSpots = 0;\n            let totalGI = 0;\n            let totalProjectedGI = 0;\n            let totalProjectedGRP = 0;\n            let totalGRP = 0;\n            let totalAmount = 0;\n            const totalWeekSpots = this.tableDataClonned[0].weekSpots.map(() => 0);\n            this.tableData.forEach((line) => {\n                if (!line.isSubline || !this.isShowSublineToggled) {\n                    totalSpots += line.spots ? line.spots : 0;\n                    totalGI += line.bookedGI ? line.bookedGI : 0;\n                    totalGRP += line.bookedGRP ? line.bookedGRP : 0;\n                    totalProjectedGI += line.projectedGI ? line.projectedGI : 0;\n                    totalProjectedGRP += line.projectedGRP ? line.projectedGRP : 0;\n                    totalAmount += line.amount ? line.amount : 0;\n                    line.weekSpots.forEach((element, index) => {\n                        totalWeekSpots[index] += element || 0;\n                    });\n                }\n            });\n            const totalRow = {\n                totalLines,\n                totalSpots,\n                totalGI: parseFloat(totalGI.toFixed(2)),\n                totalGRP: parseFloat(totalGRP.toFixed(2)),\n                totalProjectedGI: parseFloat(totalProjectedGI.toFixed(2)),\n                totalProjectedGRP: parseFloat(totalProjectedGRP.toFixed(2)),\n                totalAmount,\n                totalWeekSpots,\n            };\n            this.totalRow = totalRow;\n        }\n    }\n\n    clearAllFiltersAndSorting() {\n        this.setScrollToInitialPosition();\n        this.tableData = this.tableDataClonned;\n        this.lineDetailsFilterService.clearAllFiltersAndSorting();\n        this.createTotalRow();\n        this.anyTypeOfFilterApplied();\n        this.cdr.markForCheck();\n    }\n\n    anyTypeOfFilterApplied() {\n        const filters = this.createPersistingFilterData();\n        this.filterApplied.emit(filters);\n    }\n\n    createPersistingFilterData(): IPersistingFiltersLineDetails {\n        const filters: IPersistingFiltersLineDetails = {};\n        if (this.annaFilterService.appliedFiltersArray.length) {\n            filters.columnLevelFilters = {};\n            filters.columnLevelFilters.appliedFilters = this.annaFilterService.appliedFiltersArray;\n            filters.columnLevelFilters.selectedFilterData = this.annaFilterService.tooltipSelectedMap\n                ? JSON.stringify(Array.from(this.annaFilterService.tooltipSelectedMap))\n                : JSON.stringify([]);\n        }\n\n        if (this.annaGtService.isSortingAppliedToTable()) {\n            if (!filters?.columnLevelFilters) {\n                filters.columnLevelFilters = {};\n            }\n            filters.columnLevelFilters.sortState = JSON.stringify(Array.from(this.annaSortService.columnSortState));\n        }\n\n        if (this.selectedLine === \"BuyerLine\") {\n            filters.selectedLine = this.selectedLine;\n        }\n        if (this.changeInMetricDropdown()) {\n            filters.metricType = JSON.stringify(this.selectedMetric?.text);\n        }\n\n        if (this.isShowSublineToggled) {\n            filters.showSublines = true;\n        }\n\n        return filters;\n    }\n\n    changeInMetricDropdown(): boolean {\n        return this.selectedMetric?.text !== this.orderDefaultMetricType;\n    }\n\n    onTableContainerScroll(event: any) {\n        this.isScrolledLeft = event.target.scrollLeft > 0;\n        this.lineDetailsFilterService.closeTooltip();\n        this.arrowTooltip.forEach((tooltip) => {\n            if (tooltip.isOpen()) {\n                tooltip.close();\n            }\n        });\n        this.closeTooltip();\n    }\n\n    addTitlesOnTextOverflow() {\n        const elements = document.querySelectorAll(\"td .lower-label, td .upper-label, .filter-tab, .total-row span\");\n        elements.forEach((elem) => {\n            if (elem.clientWidth < elem.scrollWidth) {\n                elem.setAttribute(\"title\", elem.textContent);\n                elem.classList.add(\"ellipsify\");\n            }\n        });\n    }\n\n    setFilterAlignmentBasedOnScreenResolution() {\n        const viewportHeight = window.innerHeight;\n        if (viewportHeight < 740) {\n            this.filterAlignment = \"left right\";\n        } else {\n            this.filterAlignment = \"bottom\";\n        }\n    }\n\n    trackByFn(item: any) {\n        return item.id;\n    }\n\n    onOrderMetricChanged(metric: IdText) {\n        this.selectedMetric = metric as { id: number; text: OrderMetrics };\n        this.metricTypeDropdownChanged.emit(this.selectedMetric?.text);\n        this.setTableHeaders();\n        this.resetFilters();\n        this.anyTypeOfFilterApplied();\n        this.cdr.markForCheck();\n    }\n\n    setMetricDropdownConfig() {\n        this.orderMetricsListForDropdown = this.primaryOrderPanelService.getOrderMetricsDropdownValues();\n        this.metricDropdownConfig = { ...this.annaGlobalConfig.defaultSingleSelectConfig };\n        this.metricDropdownConfig.placeholder = \"No data found\";\n    }\n\n    viewLinkClicked() {\n        this.navigateToDiscrepancyDetail.emit();\n    }\n\n    showHideTotalRow() {\n        this.showTotalRow = !this.showTotalRow;\n        if (!this.showTotalRow) {\n            document.documentElement.style.setProperty(`--hide-total-row-scrollbar-offset`, \"40px\");\n        } else {\n            document.documentElement.style.setProperty(`--hide-total-row-scrollbar-offset`, \"0px\");\n        }\n    }\n\n    bindTheValueToSellerGroupTooltip(invCodeSellerPgm: any[], tooltip: any, closeOnScroll = false): void {\n        if (!closeOnScroll) {\n            if (this.invCodeSellerPgmTooltip && this.invCodeSellerPgmTooltip.open) {\n                this.invCodeSellerPgmTooltip.close();\n            }\n            this.invCodeSellerPgmTableData = invCodeSellerPgm;\n            this.invCodeSellerPgmTooltip = tooltip;\n            this.invCodeSellerPgmTooltip.open();\n        } else {\n            this.invCodeSellerPgmTooltip.close();\n        }\n    }\n\n    closeTooltip() {\n        if (this.invCodeSellerPgmTooltip && this.invCodeSellerPgmTooltip.isOpen()) {\n            this.invCodeSellerPgmTooltip.close();\n        }\n        this.invCodeSellerPgmTooltip = null;\n    }\n}\n","<div class=\"filter-container period-filter-container\">\n    <anna-design-order-container-filter-modal\n        *ngIf=\"flightPeriodData\"\n        [title]=\"periodModalTitle\"\n        [selectedData]=\"persistingFilterPeriodData\"\n        [flightPeriod]=\"flightPeriodData\"\n        [message]=\"periodModalMessage\"\n        [PeriodOptions]=\"PeriodOptions\"\n        [startDateConsideringFactor]=\"startDateConsideringFactor\"\n        [parentQueryParams]=\"queryParams\"\n        [disablePeriodSelection]=\"disablePeriodSelection || isFlightPeriodFallsinSameMonth\"\n        (apply)=\"applyPeriodSelection($event)\"\n        [disableFiscal]=\"!showEasyFilters || selectedLine === 'BuyerLine'\"\n        (initialQuarterStartEndDateEmitter)=\"initialisePeriodFilter($event)\"\n        [removeQuarterSelectionsIfOnlyOneQuarter]=\"true\"\n    >\n    </anna-design-order-container-filter-modal>\n    <anna-design-skt-loader\n        [count]=\"1\"\n        *ngIf=\"!primaryOrderData?.orderInfo.orderFlightStatus\"\n        [theme]=\"{ height: '24px', width: '280px', 'margin-top': '8px' }\"\n    >\n    </anna-design-skt-loader>\n\n    <!-- Line Compairison View Link -->\n    <p\n        class=\"view-link\"\n        *ngIf=\"showViewLineComparisons && !showSkeletonLoading\"\n        (click)=\"viewLinkClicked()\"\n    >\n        View Line Comparison\n    </p>\n\n    <div class=\"metric-dropdown-container\">\n        <anna-design-skt-loader\n            *ngIf=\"showSkeletonLoading\"\n            [count]=\"1\"\n            [theme]=\"{\n                height: '24px',\n                width: '8rem',\n                display: 'inline-block',\n                margin: '0',\n                'border-radius': '4px'\n            }\"\n        ></anna-design-skt-loader>\n\n        <div\n            class=\"show-subline-toggle-container\"\n            *ngIf=\"!showSkeletonLoading && selectedLine === 'SellerLine'\"\n        >\n            <span>Merge sub-lines</span>\n            <anna-design-toggle\n                [isDisabled]=\"disableShowSublineToggle\"\n                [position]=\"'none'\"\n                [isToggled]=\"isShowSublineToggled\"\n                (toggle)=\"onShowSublineToggled($event)\"\n            >\n            </anna-design-toggle>\n        </div>\n\n        <anna-design-single-select\n            *ngIf=\"!showSkeletonLoading\"\n            [items]=\"orderMetricsListForDropdown\"\n            class=\"order-metrics-dropdown\"\n            [selectedItem]=\"selectedMetric\"\n            [config]=\"metricDropdownConfig\"\n            (valueChanged)=\"onOrderMetricChanged($event)\"\n            [disabled]=\"tableData?.length === 0\"\n        >\n        </anna-design-single-select>\n    </div>\n</div>\n\n<div\n    class=\"filter-container\"\n    [ngClass]=\"{ 'filters-container-wo-filters': !(showEasyFilters && selectedLine === 'SellerLine') }\"\n>\n    <div\n        class=\"d-flex align-items-end\"\n        *ngIf=\"showSellLineToggle || showBuyLineToggle\"\n    >\n        <ng-container *ngIf=\"showSkeletonLoading\">\n            <anna-design-skt-loader\n                [count]=\"1\"\n                *ngIf=\"showSellLineToggle\"\n                [theme]=\"{\n                    height: '24px',\n                    width: '110px',\n                    float: 'left',\n                    'margin-left': '0px',\n                    'margin-bottom': '0px'\n                }\"\n            >\n            </anna-design-skt-loader>\n            <anna-design-skt-loader\n                [count]=\"1\"\n                *ngIf=\"showBuyLineToggle\"\n                [theme]=\"{ height: '24px', width: '110px', float: 'left', 'margin-bottom': '0px' }\"\n            >\n            </anna-design-skt-loader>\n        </ng-container>\n        <anna-core-button-toggle\n            *ngIf=\"!showSkeletonLoading\"\n            [isPageViewToggle]=\"true\"\n            [options]=\"buttonToggleOptions\"\n            [selectedValue]=\"selectedLine\"\n            (valueChange)=\"lineSelectionChanged($any($event))\"\n        >\n        </anna-core-button-toggle>\n    </div>\n    <div class=\"easy-filters\">\n        <anna-design-easy-filters\n            *ngIf=\"showEasyFilters && selectedLine === 'SellerLine'\"\n            [showLoader]=\"showSkeletonLoading\"\n            [numberOfItemsForLoader]=\"numberOfEasyFilterLoader\"\n            [easyFilters]=\"intelliFilters\"\n            [tableData]=\"tableData\"\n            [autoSelectionOfOnlyEnabledFilter]=\"true\"\n            [clonedTableData]=\"tableDataClonned\"\n            (easyFilterClickEvent)=\"intelliFilterClicked($event)\"\n        >\n        </anna-design-easy-filters>\n\n        <div class=\"metric-reset-container\">\n            <!-- <button\n                *ngIf=\"!showSkeletonLoading\"\n                class=\"clear-all-btn\"\n                (click)=\"clearAllFiltersAndSorting()\"\n                [disabled]=\"!lineDetailsFilterService.showClearAllBtn && !easyFiltersApplied\"\n            >\n                Reset all filters\n            </button> -->\n            <ng-container *ngIf=\"!showSkeletonLoading\">\n                <!-- <span class=\"expand-all-label\">Expand All</span>\n                <i\n                    class=\"mi mdi-check-box check-box\"\n                    [ngClass]=\"{\n                        disabled: disableExpandCheckbox,\n                        'mdi-check-box': isExpandRowsChecked,\n                        'mdi-check-box-outline-blank unchecked': !isExpandRowsChecked\n                    }\"\n                    (click)=\"expandRowsClicked()\"\n                ></i>\n                <div class=\"pipe\"></div> -->\n                <button\n                    class=\"clear-all-btn\"\n                    (click)=\"clearAllFiltersAndSorting()\"\n                    [disabled]=\"!lineDetailsFilterService.showClearAllBtn\"\n                >\n                    Reset all filters\n                </button>\n            </ng-container>\n        </div>\n    </div>\n</div>\n\n<div\n    class=\"table-container\"\n    #tableElementRef\n    [ngClass]=\"{ 'buyline-line-details-table-container': selectedLine !== 'SellerLine' }\"\n    (scroll)=\"onTableContainerScroll($event)\"\n    [ngStyle]=\"{ 'max-height': tableHeight }\"\n>\n    <div\n        class=\"wrapper-table-container\"\n        [ngClass]=\"{\n            'hidden-total-row-table-container': showOrHideToggleForTotalRow && !showTotalRow\n        }\"\n    >\n        <button\n            *ngIf=\"showOrHideToggleForTotalRow && !showSkeletonLoading && tableData.length > 0\"\n            [ngClass]=\"{\n                'shift-toggle-top-on-total-row-click': !showTotalRow\n            }\"\n            class=\"show-or-hide-toggle-btn\"\n            (click)=\"showHideTotalRow()\"\n        >\n            <i\n                class=\"mdi mdi-menu-swap\"\n                tooltipClass=\"show-or-hide-toggle-tooltip\"\n                placement=\"auto\"\n                container=\"body\"\n                [ngbTooltip]=\"showOrHideToggleForTotalRowTooltip\"\n            ></i>\n        </button>\n        <table class=\"line-details-table\">\n            <thead>\n                <tr class=\"header-row\">\n                    <ng-container *ngFor=\"let header of tableHeaders\">\n                        <th\n                            #thElement\n                            class=\"sticky-col first-col header\"\n                            [ngClass]=\"{\n                                'scroll-left-shadow-effect': isScrolledLeft && header.columnName === 'AMOUNT'\n                            }\"\n                            width=\"{{ header.width }}\"\n                        >\n                            <div *ngIf=\"!header?.columnName\">\n                                <ngx-skeleton-loader\n                                    count=\"1\"\n                                    [theme]=\"{ width: '90%', height: '1em', display: 'block', margin: '4px 0' }\"\n                                >\n                                </ngx-skeleton-loader>\n                            </div>\n                            <div\n                                *ngIf=\"header?.columnName\"\n                                class=\"row mx-0 equal-padding\"\n                                [ngClass]=\"{ 'with-tooltip-header': header.isToolTipRequired }\"\n                            >\n                                <p class=\"upper-label\">\n                                    {{ header.columnName }}\n                                </p>\n                                <i\n                                    *ngIf=\"header.isToolTipRequired && header.isToolTipRequired[0]\"\n                                    class=\"mi mdi-info-outline info-label\"\n                                    container=\"body\"\n                                    [ngbTooltip]=\"header.toolTipMsg[0]\"\n                                    tooltipClass=\"info-tooltip custom-tooltip\"\n                                    placement=\"bottom auto\"\n                                ></i>\n                                <div class=\"sort-filter-container\">\n                                    <span\n                                        class=\"mdi mdi-filter-variant\"\n                                        *ngIf=\"header.filterRequired\"\n                                        [tooltipClass]=\"\n                                            'filter-tooltip ' +\n                                            (header.upperColumnFilter.filterType === 'CHECKBOX'\n                                                ? 'non-edit-checkbox-tooltip'\n                                                : '')\n                                        \"\n                                        [ngClass]=\"{\n                                            active:\n                                                lineDetailsFilterService.isTooltipActive([\n                                                    header.upperColumnFilter.columnKeys[0]\n                                                ]) ||\n                                                lineDetailsFilterService.isTooltipActive([\n                                                    header.upperColumnFilter.columnKeys[1]\n                                                ]),\n                                            disabled:\n                                                (lineDetailsFilterService.columnSortFiltersStates?.[\n                                                    header.upperColumnFilter.columnKeys[0]\n                                                ] &&\n                                                    (header.upperColumnFilter.columnKeys[1]\n                                                        ? lineDetailsFilterService.columnSortFiltersStates?.[\n                                                              header.upperColumnFilter.columnKeys[1]\n                                                          ]\n                                                        : true)) ||\n                                                showSkeletonLoading\n                                        }\"\n                                        [ngbTooltip]=\"\n                                            header.upperColumnFilter.filterType === 'SLIDER'\n                                                ? SLIDER\n                                                : header.upperColumnFilter.filterType === 'TIME'\n                                                  ? TIME\n                                                  : header.upperColumnFilter.filterType === 'DATE'\n                                                    ? DATE\n                                                    : CHECKBOX\n                                        \"\n                                        placement=\"{{ filterAlignment }}\"\n                                        container=\"body\"\n                                        [autoClose]=\"'outside'\"\n                                        triggers=\"manual\"\n                                        #t1=\"ngbTooltip\"\n                                        (click)=\"\n                                            lineDetailsFilterService.bindTheValueToToolTip(\n                                                t1,\n                                                header.upperColumnFilter.columnKeys,\n                                                header.upperColumnFilter.isSortRequired,\n                                                header.upperColumnFilter.isFilterRequired\n                                            )\n                                        \"\n                                        (hidden)=\"lineDetailsFilterService.closeTooltip()\"\n                                    >\n                                    </span>\n                                </div>\n                            </div>\n                            <div\n                                class=\"row\"\n                                *ngIf=\"header?.lowerData\"\n                                annaCoreShowEllipsisTextOnHover\n                            >\n                                <p class=\"lower-label\">{{ header.lowerData }}</p>\n                                <i\n                                    *ngIf=\"header.isToolTipRequired && header.isToolTipRequired[1]\"\n                                    class=\"mi mdi-info-outline info-label\"\n                                    container=\"body\"\n                                    [ngbTooltip]=\"header.toolTipMsg[1]\"\n                                    tooltipClass=\"info-tooltip custom-tooltip max-width-400\"\n                                    placement=\"bottom auto\"\n                                ></i>\n                                <div class=\"sort-filter-container\">\n                                    <span\n                                        class=\"mdi mdi-filter-variant\"\n                                        *ngIf=\"header.filterRequired && header.lowerColumnFilter\"\n                                        tooltipClass=\"filter-tooltip\"\n                                        [ngClass]=\"{\n                                            active: lineDetailsFilterService.isTooltipActive([\n                                                header.lowerColumnFilter.columnKeys[0]\n                                            ]),\n                                            disabled:\n                                                lineDetailsFilterService.columnSortFiltersStates?.[\n                                                    header.lowerColumnFilter.columnKeys[0]\n                                                ] || showSkeletonLoading\n                                        }\"\n                                        [ngbTooltip]=\"\n                                            header.lowerColumnFilter.filterType === 'SLIDER'\n                                                ? SLIDER\n                                                : header.lowerColumnFilter.filterType === 'TIME'\n                                                  ? TIME\n                                                  : header.lowerColumnFilter.filterType === 'DATE'\n                                                    ? DATE\n                                                    : CHECKBOX\n                                        \"\n                                        placement=\"{{ filterAlignment }}\"\n                                        container=\"body\"\n                                        [autoClose]=\"'outside'\"\n                                        triggers=\"manual\"\n                                        #t1=\"ngbTooltip\"\n                                        (click)=\"\n                                            lineDetailsFilterService.bindTheValueToToolTip(\n                                                t1,\n                                                header.lowerColumnFilter.columnKeys,\n                                                header.lowerColumnFilter.isSortRequired,\n                                                header.lowerColumnFilter.isFilterRequired\n                                            )\n                                        \"\n                                        (hidden)=\"lineDetailsFilterService.closeTooltip()\"\n                                    >\n                                    </span>\n                                </div>\n                            </div>\n                        </th>\n                    </ng-container>\n                    <ng-container *ngIf=\"!showSkeletonLoading && tableHeaders.length > 0\">\n                        <th\n                            *ngFor=\"let week of weekWiseHeaderData\"\n                            width=\"55px\"\n                        >\n                            <div\n                                class=\"row\"\n                                annaCoreannaCoreShowEllipsisTextOnHover\n                            >\n                                <p class=\"upper-label\">{{ week.columnName }}</p>\n                            </div>\n                            <div\n                                class=\"row\"\n                                annaCoreannaCoreShowEllipsisTextOnHover\n                            >\n                                <p class=\"lower-label\">{{ week.lowerData }}</p>\n                            </div>\n                        </th>\n                    </ng-container>\n                    <ng-container *ngIf=\"showSkeletonLoading && tableHeaders.length > 0\">\n                        <th\n                            *ngFor=\"let column of skeletonWeekColumns\"\n                            width=\"55px\"\n                        >\n                            <ngx-skeleton-loader\n                                count=\"1\"\n                                [theme]=\"{ width: '90%', height: '1em', display: 'block', 'margin-top': '10px' }\"\n                            >\n                            </ngx-skeleton-loader>\n                        </th>\n                    </ng-container>\n                </tr>\n                <tr\n                    *ngIf=\"showTotalRow && !showSkeletonLoading && tableData.length > 0\"\n                    class=\"total-row\"\n                >\n                    <td\n                        class=\"sticky-col\"\n                        colspan=\"8\"\n                    >\n                        <strong\n                            class=\"upper-label pl-8\"\n                            annaCoreShowEllipsisTextOnHover\n                        >\n                            Total for {{ totalRow.totalLines }} Lines in the selected period\n                        </strong>\n                    </td>\n                    <td class=\"sticky-col\">\n                        <strong\n                            class=\"upper-label\"\n                            annaCoreShowEllipsisTextOnHover\n                            >{{ totalRow.totalSpots | currency: \" \" : \"symbol\" : \"1.0-1\" }}</strong\n                        >\n                    </td>\n                    <td class=\"sticky-col\">\n                        <strong\n                            class=\"upper-label\"\n                            annaCoreShowEllipsisTextOnHover\n                        >\n                            <ng-container *ngIf=\"selectedMetric?.text === 'GRP'; else impsTemplateForGIHeader\">\n                                {{ totalRow.totalGRP | currency: \" \" : \"symbol\" : \"1.0-2\" }}\n                            </ng-container>\n                            <ng-template #impsTemplateForGIHeader>\n                                {{ totalRow.totalGI | currency: \" \" : \"symbol\" : \"1.0-2\" }}\n                            </ng-template>\n                        </strong>\n                        <p\n                            annaCoreShowEllipsisTextOnHover\n                            class=\"lower-label\"\n                            *ngIf=\"selectedLine === 'SellerLine' && userType === 'SELLER'\"\n                        >\n                            <ng-container *ngIf=\"selectedMetric?.text === 'GRP'; else impsTemplateForGIHeader\">\n                                {{ totalRow.totalProjectedGRP | currency: \" \" : \"symbol\" : \"1.0-2\" }}\n                            </ng-container>\n                            <ng-template #impsTemplateForGIHeader>\n                                {{ totalRow.totalProjectedGI | currency: \" \" : \"symbol\" : \"1.0-2\" }}\n                            </ng-template>\n                        </p>\n                    </td>\n                    <td\n                        class=\"sticky-col\"\n                        [ngClass]=\"{ 'scroll-left-shadow-effect': isScrolledLeft }\"\n                    >\n                        <strong\n                            class=\"upper-label\"\n                            annaCoreShowEllipsisTextOnHover\n                            >{{ totalRow.totalAmount | currency: currencyUnit : \"symbol\" : \"1.0-2\" }}</strong\n                        >\n                    </td>\n                    <td *ngFor=\"let spots of totalRow.totalWeekSpots\">\n                        <strong\n                            class=\"upper-label\"\n                            annaCoreShowEllipsisTextOnHover\n                            >{{ spots | number: \"1.0-1\" }}</strong\n                        >\n                    </td>\n                </tr>\n            </thead>\n            <tbody>\n                <ng-container *ngIf=\"!showSkeletonLoading && tableData.length > 0\">\n                    <ng-container *ngFor=\"let line of tableData\">\n                        <tr\n                            [ngClass]=\"{\n                                'expanded-row': line.isExpaded,\n                                'expandable-row': line.isParentRowWithSublines\n                            }\"\n                            [class]=\"line.rowClass\"\n                            [ngStyle]=\"{ cursor: line.isParentRowWithSublines ? 'pointer' : 'default' }\"\n                            (click)=\"expandRow(line.parentExpandlableLineID)\"\n                        >\n                            <td class=\"sticky-col\">\n                                <div>\n                                    <span class=\"upper-label label-with-arrow\"\n                                        >{{ line.lineNumber }}\n                                        <i\n                                            *ngIf=\"line.isParentRowWithSublines\"\n                                            class=\"arrow mdi info-label\"\n                                            [ngClass]=\"{\n                                                'mdi-menu-down': line.isExpaded === false,\n                                                'mdi-menu-up': line.isExpaded\n                                            }\"\n                                            container=\"body\"\n                                            ngbTooltip=\"This line contains multiple sub-lines.\"\n                                            #arrowTooltip=\"ngbTooltip\"\n                                            tooltipClass=\"arrow-tooltip\"\n                                            placement=\"top auto\"\n                                        ></i>\n                                    </span>\n                                </div>\n                            </td>\n                            <td class=\"sticky-col\">\n                                <div annaCoreShowEllipsisTextOnHover>\n                                    <span\n                                        annaCoreShowEllipsisTextOnHover\n                                        class=\"upper-label\"\n                                        [ngClass]=\"{\n                                            'reduced-text-width':\n                                                line.sellerProgramList?.length > 0 && selectedLine === 'SellerLine'\n                                        }\"\n                                        >{{ line[selectedLine === \"SellerLine\" ? \"sellerProgram\" : \"buyerProgram\"] }}\n                                    </span>\n                                    <ng-container\n                                        *ngTemplateOutlet=\"\n                                            line.sellerProgramList?.length > 0 && selectedLine === 'SellerLine'\n                                                ? additionalData\n                                                : null;\n                                            context: { data: line.sellerProgramList }\n                                        \"\n                                    >\n                                    </ng-container>\n                                </div>\n                                <div annaCoreShowEllipsisTextOnHover>\n                                    <span\n                                        annaCoreShowEllipsisTextOnHover\n                                        class=\"lower-label\"\n                                        [ngClass]=\"{\n                                            'reduced-text-width':\n                                                line.sellerProgramList?.length > 0 && selectedLine === 'BuyerLine'\n                                        }\"\n                                    >\n                                        {{\n                                            line[\n                                                selectedLine === \"SellerLine\"\n                                                    ? \"inventoryCode\"\n                                                    : userType === \"SELLER\"\n                                                      ? \"sellerProgInvCode\"\n                                                      : \"sellerProgram\"\n                                            ]\n                                        }}\n                                    </span>\n                                    <ng-container\n                                        *ngTemplateOutlet=\"\n                                            line.sellerProgramList?.length > 0 &&\n                                            selectedLine === 'BuyerLine' &&\n                                            userType === 'BUYER'\n                                                ? additionalData\n                                                : null;\n                                            context: { data: line.sellerProgramList }\n                                        \"\n                                    >\n                                    </ng-container>\n                                    <ng-container\n                                        *ngTemplateOutlet=\"\n                                            line.inventoryCodeSellerProgramMap?.length > 0 &&\n                                            selectedLine === 'BuyerLine' &&\n                                            userType === 'SELLER'\n                                                ? invCodeSellerPgmTableIcon\n                                                : null;\n                                            context: { data: line.inventoryCodeSellerProgramMap }\n                                        \"\n                                    >\n                                    </ng-container>\n                                </div>\n                            </td>\n                            <td class=\"sticky-col\">\n                                <div annaCoreShowEllipsisTextOnHover>\n                                    <span\n                                        annaCoreShowEllipsisTextOnHover\n                                        class=\"upper-label\"\n                                        >{{ line.startDate ? line.startDate : \"-\" }}</span\n                                    >\n                                </div>\n                                <div annaCoreShowEllipsisTextOnHover>\n                                    <span\n                                        annaCoreShowEllipsisTextOnHover\n                                        class=\"lower-label\"\n                                        >{{ line.endDate ? line.endDate : \"-\" }}</span\n                                    >\n                                </div>\n                            </td>\n                            <td class=\"sticky-col\">\n                                <div annaCoreShowEllipsisTextOnHover>\n                                    <span\n                                        annaCoreShowEllipsisTextOnHover\n                                        class=\"upper-label\"\n                                        >{{\n                                            line.inventoryDays && line.inventoryDays !== \"0\" ? line.inventoryDays : \"-\"\n                                        }}</span\n                                    >\n                                </div>\n                                <div annaCoreShowEllipsisTextOnHover>\n                                    <span\n                                        annaCoreShowEllipsisTextOnHover\n                                        class=\"lower-label\"\n                                        >{{\n                                            line.inventoryTime && line.inventoryTime !== \"0\" ? line.inventoryTime : \"-\"\n                                        }}</span\n                                    >\n                                </div>\n                            </td>\n                            <td class=\"sticky-col\">\n                                <div annaCoreShowEllipsisTextOnHover>\n                                    <span\n                                        annaCoreShowEllipsisTextOnHover\n                                        class=\"upper-label\"\n                                    >\n                                        {{ line.spotType }}\n                                    </span>\n                                </div>\n                            </td>\n                            <td class=\"sticky-col\">\n                                <div annaCoreShowEllipsisTextOnHover>\n                                    <span\n                                        annaCoreShowEllipsisTextOnHover\n                                        class=\"upper-label\"\n                                        >{{ line.daypart ? line.daypart : \"-\" }}</span\n                                    >\n                                </div>\n                                <div annaCoreShowEllipsisTextOnHover>\n                                    <span\n                                        annaCoreShowEllipsisTextOnHover\n                                        class=\"lower-label\"\n                                        >{{ line.length ? line.length : \"-\" }}</span\n                                    >\n                                </div>\n                            </td>\n                            <td class=\"sticky-col\">\n                                <div annaCoreShowEllipsisTextOnHover>\n                                    <span\n                                        annaCoreShowEllipsisTextOnHover\n                                        class=\"upper-label\"\n                                    >\n                                        <ng-container *ngIf=\"selectedMetric?.text === 'GRP'; else impsTemplateForImps\">\n                                            {{\n                                                line.rating || line.rating === 0\n                                                    ? (line.rating | currency: \" \" : \"symbol\" : \"1.0\")\n                                                    : \"0\"\n                                            }}\n                                        </ng-container>\n                                        <ng-template #impsTemplateForImps>\n                                            {{\n                                                line.IMPS || line.IMPS === 0\n                                                    ? (line.IMPS | currency: \" \" : \"symbol\" : \"1.0\")\n                                                    : \"0\"\n                                            }}\n                                        </ng-template>\n                                    </span>\n                                </div>\n                            </td>\n                            <td class=\"sticky-col\">\n                                <div annaCoreShowEllipsisTextOnHover>\n                                    <span\n                                        annaCoreShowEllipsisTextOnHover\n                                        class=\"upper-label\"\n                                        >{{\n                                            line.rate ? (line.rate | currency: currencyUnit : \"symbol\" : \"1.0\") : \"$0\"\n                                        }}</span\n                                    >\n                                </div>\n                            </td>\n                            <td class=\"sticky-col\">\n                                <div annaCoreShowEllipsisTextOnHover>\n                                    <span\n                                        annaCoreShowEllipsisTextOnHover\n                                        class=\"upper-label\"\n                                        >{{ line.spots ? (line.spots | currency: \" \" : \"symbol\" : \"1.0\") : \"0\" }}</span\n                                    >\n                                </div>\n                            </td>\n                            <td class=\"sticky-col\">\n                                <div annaCoreShowEllipsisTextOnHover>\n                                    <span\n                                        annaCoreShowEllipsisTextOnHover\n                                        class=\"upper-label\"\n                                    >\n                                        <ng-container *ngIf=\"selectedMetric?.text === 'GRP'; else impsTemplateForGI\">\n                                            {{\n                                                line.bookedGRP\n                                                    ? (line.bookedGRP | currency: \" \" : \"symbol\" : \"1.0\")\n                                                    : \"0\"\n                                            }}\n                                        </ng-container>\n                                        <ng-template #impsTemplateForGI>\n                                            {{\n                                                line.bookedGI ? (line.bookedGI | currency: \" \" : \"symbol\" : \"1.0\") : \"0\"\n                                            }}\n                                        </ng-template>\n                                    </span>\n                                </div>\n                                <div\n                                    annaCoreShowEllipsisTextOnHover\n                                    *ngIf=\"selectedLine === 'SellerLine' && userType === 'SELLER'\"\n                                >\n                                    <span\n                                        annaCoreShowEllipsisTextOnHover\n                                        class=\"lower-label\"\n                                    >\n                                        <ng-container *ngIf=\"selectedMetric?.text === 'GRP'; else impsTemplateForGI\">\n                                            {{\n                                                line.projectedGRP\n                                                    ? (line.projectedGRP | currency: \" \" : \"symbol\" : \"1.0\")\n                                                    : \"0\"\n                                            }}\n                                        </ng-container>\n                                        <ng-template #impsTemplateForGI>\n                                            {{\n                                                line.projectedGI\n                                                    ? (line.projectedGI | currency: \" \" : \"symbol\" : \"1.0\")\n                                                    : \"0\"\n                                            }}\n                                        </ng-template>\n                                    </span>\n                                </div>\n                            </td>\n                            <td\n                                class=\"sticky-col\"\n                                [ngClass]=\"{ 'scroll-left-shadow-effect': isScrolledLeft }\"\n                            >\n                                <div annaCoreShowEllipsisTextOnHover>\n                                    <span\n                                        annaCoreShowEllipsisTextOnHover\n                                        class=\"upper-label\"\n                                        >{{\n                                            line.amount != null\n                                                ? (line.amount | currency: currencyUnit : \"symbol\" : \"1.0\")\n                                                : \"$0\"\n                                        }}</span\n                                    >\n                                </div>\n                            </td>\n                            <td *ngFor=\"let weekSpot of line.weekSpots\">\n                                <div annaCoreShowEllipsisTextOnHover>\n                                    <span\n                                        annaCoreShowEllipsisTextOnHover\n                                        class=\"upper-label\"\n                                        >{{ weekSpot ? weekSpot : \"0\" }}</span\n                                    >\n                                </div>\n                            </td>\n                        </tr>\n                        <ng-container *ngIf=\"line.subLines.length > 0\">\n                            <ng-container *ngFor=\"let subline of line.subLines\">\n                                <tr\n                                    class=\"sub-line\"\n                                    [ngStyle]=\"line.isExpaded ? { display: 'table-row' } : { display: 'none' }\"\n                                >\n                                    <td class=\"sticky-col\">\n                                        <div annaCoreShowEllipsisTextOnHover>\n                                            <span\n                                                annaCoreShowEllipsisTextOnHover\n                                                class=\"upper-label\"\n                                            ></span>\n                                        </div>\n                                    </td>\n                                    <td class=\"sticky-col\">\n                                        <div annaCoreShowEllipsisTextOnHover>\n                                            <span\n                                                annaCoreShowEllipsisTextOnHover\n                                                class=\"upper-label\"\n                                                [ngClass]=\"{\n                                                    'reduced-text-width':\n                                                        subline.sellerProgramList?.length > 0 &&\n                                                        selectedLine === 'SellerLine'\n                                                }\"\n                                            >\n                                                {{\n                                                    subline[\n                                                        selectedLine === \"SellerLine\" ? \"sellerProgram\" : \"buyerProgram\"\n                                                    ]\n                                                }}\n                                            </span>\n                                            <ng-container\n                                                *ngTemplateOutlet=\"\n                                                    subline.sellerProgramList?.length > 0 &&\n                                                    selectedLine === 'SellerLine'\n                                                        ? additionalData\n                                                        : null;\n                                                    context: { data: subline.sellerProgramList }\n                                                \"\n                                            >\n                                            </ng-container>\n                                        </div>\n                                        <div annaCoreShowEllipsisTextOnHover>\n                                            <span\n                                                annaCoreShowEllipsisTextOnHover\n                                                class=\"lower-label\"\n                                                [ngClass]=\"{\n                                                    'reduced-text-width':\n                                                        subline.sellerProgramList?.length > 0 &&\n                                                        selectedLine === 'BuyerLine'\n                                                }\"\n                                                >{{\n                                                    subline[\n                                                        selectedLine === \"SellerLine\"\n                                                            ? \"inventoryCode\"\n                                                            : userType === \"SELLER\"\n                                                              ? \"sellerProgInvCode\"\n                                                              : \"sellerProgram\"\n                                                    ]\n                                                }}</span\n                                            >\n                                            <ng-container\n                                                *ngTemplateOutlet=\"\n                                                    subline.sellerProgramList?.length > 0 &&\n                                                    selectedLine === 'BuyerLine' &&\n                                                    userType === 'BUYER'\n                                                        ? additionalData\n                                                        : null;\n                                                    context: { data: subline.sellerProgramList }\n                                                \"\n                                            >\n                                            </ng-container>\n                                            <ng-container\n                                                *ngTemplateOutlet=\"\n                                                    line.inventoryCodeSellerProgramMap?.length > 0 &&\n                                                    selectedLine === 'BuyerLine' &&\n                                                    userType === 'SELLER'\n                                                        ? invCodeSellerPgmTableIcon\n                                                        : null;\n                                                    context: { data: line.inventoryCodeSellerProgramMap }\n                                                \"\n                                            >\n                                            </ng-container>\n                                        </div>\n                                    </td>\n                                    <td class=\"sticky-col\">\n                                        <div annaCoreShowEllipsisTextOnHover>\n                                            <span\n                                                annaCoreShowEllipsisTextOnHover\n                                                class=\"upper-label\"\n                                                >{{ subline.startDate ? subline.startDate : \"-\" }}</span\n                                            >\n                                        </div>\n                                        <div annaCoreShowEllipsisTextOnHover>\n                                            <span\n                                                annaCoreShowEllipsisTextOnHover\n                                                class=\"lower-label\"\n                                                >{{ subline.endDate ? subline.endDate : \"-\" }}</span\n                                            >\n                                        </div>\n                                    </td>\n                                    <td class=\"sticky-col\">\n                                        <div annaCoreShowEllipsisTextOnHover>\n                                            <span\n                                                annaCoreShowEllipsisTextOnHover\n                                                class=\"upper-label\"\n                                                >{{\n                                                    subline.inventoryDays && subline.inventoryDays !== \"0\"\n                                                        ? subline.inventoryDays\n                                                        : \"-\"\n                                                }}</span\n                                            >\n                                        </div>\n                                        <div annaCoreShowEllipsisTextOnHover>\n                                            <span\n                                                annaCoreShowEllipsisTextOnHover\n                                                class=\"lower-label\"\n                                                >{{\n                                                    subline.inventoryTime && subline.inventoryTime !== \"0\"\n                                                        ? subline.inventoryTime\n                                                        : \"-\"\n                                                }}</span\n                                            >\n                                        </div>\n                                    </td>\n                                    <td class=\"sticky-col\">\n                                        <div annaCoreShowEllipsisTextOnHover>\n                                            <span\n                                                annaCoreShowEllipsisTextOnHover\n                                                class=\"upper-label\"\n                                                >{{ subline.spotType }}</span\n                                            >\n                                        </div>\n                                    </td>\n                                    <td class=\"sticky-col\">\n                                        <div annaCoreShowEllipsisTextOnHover>\n                                            <span\n                                                annaCoreShowEllipsisTextOnHover\n                                                class=\"upper-label\"\n                                                >{{ subline.daypart ? subline.daypart : \"-\" }}</span\n                                            >\n                                        </div>\n                                        <div annaCoreShowEllipsisTextOnHover>\n                                            <span\n                                                annaCoreShowEllipsisTextOnHover\n                                                class=\"lower-label\"\n                                                >{{ subline.length ? subline.length : \"-\" }}</span\n                                            >\n                                        </div>\n                                    </td>\n                                    <td class=\"sticky-col\">\n                                        <div annaCoreShowEllipsisTextOnHover>\n                                            <span\n                                                annaCoreShowEllipsisTextOnHover\n                                                class=\"upper-label\"\n                                            >\n                                                <ng-container\n                                                    *ngIf=\"selectedMetric?.text === 'GRP'; else impsTemplateForImps\"\n                                                >\n                                                    {{\n                                                        subline.rating || subline.rating === 0\n                                                            ? (subline.rating | currency: \" \" : \"symbol\" : \"1.0\")\n                                                            : \"0\"\n                                                    }}\n                                                </ng-container>\n                                                <ng-template #impsTemplateForImps>\n                                                    {{\n                                                        subline.IMPS || subline.IMPS === 0\n                                                            ? (subline.IMPS | currency: \" \" : \"symbol\" : \"1.0\")\n                                                            : \"0\"\n                                                    }}\n                                                </ng-template>\n                                            </span>\n                                        </div>\n                                    </td>\n                                    <td class=\"sticky-col\">\n                                        <div annaCoreShowEllipsisTextOnHover>\n                                            <span\n                                                annaCoreShowEllipsisTextOnHover\n                                                class=\"upper-label\"\n                                                >{{\n                                                    subline.rate\n                                                        ? (subline.rate | currency: currencyUnit : \"symbol\" : \"1.0\")\n                                                        : \"$0\"\n                                                }}</span\n                                            >\n                                        </div>\n                                    </td>\n                                    <td class=\"sticky-col\">\n                                        <div annaCoreShowEllipsisTextOnHover>\n                                            <span\n                                                annaCoreShowEllipsisTextOnHover\n                                                class=\"upper-label\"\n                                                >{{\n                                                    subline.spots\n                                                        ? (subline.spots\n                                                          | currency\n                                                              : \"\n                          \"\n                                                              : \"symbol\"\n                                                              : \"1.0-1\")\n                                                        : \"0\"\n                                                }}</span\n                                            >\n                                        </div>\n                                    </td>\n                                    <td class=\"sticky-col\">\n                                        <div annaCoreShowEllipsisTextOnHover>\n                                            <span\n                                                annaCoreShowEllipsisTextOnHover\n                                                class=\"upper-label\"\n                                            >\n                                                <ng-container\n                                                    *ngIf=\"\n                                                        selectedMetric?.text === 'GRP';\n                                                        else impsTemplateForGISubline\n                                                    \"\n                                                >\n                                                    {{\n                                                        subline.bookedGRP\n                                                            ? (subline.bookedGRP | currency: \" \" : \"symbol\" : \"1.0\")\n                                                            : \"0\"\n                                                    }}\n                                                </ng-container>\n                                                <ng-template #impsTemplateForGISubline>\n                                                    {{\n                                                        subline.bookedGI\n                                                            ? (subline.bookedGI | currency: \" \" : \"symbol\" : \"1.0\")\n                                                            : \"0\"\n                                                    }}\n                                                </ng-template>\n                                            </span>\n                                        </div>\n\n                                        <div\n                                            annaCoreShowEllipsisTextOnHover\n                                            *ngIf=\"selectedLine === 'SellerLine' && userType === 'SELLER'\"\n                                        >\n                                            <span\n                                                annaCoreShowEllipsisTextOnHover\n                                                class=\"lower-label\"\n                                            >\n                                                <ng-container\n                                                    *ngIf=\"selectedMetric?.text === 'GRP'; else impsTemplateForGI\"\n                                                >\n                                                    {{\n                                                        subline.projectedGRP\n                                                            ? (subline.projectedGRP | currency: \" \" : \"symbol\" : \"1.0\")\n                                                            : \"0\"\n                                                    }}\n                                                </ng-container>\n                                                <ng-template #impsTemplateForGI>\n                                                    {{\n                                                        subline.projectedGI\n                                                            ? (subline.projectedGI | currency: \" \" : \"symbol\" : \"1.0\")\n                                                            : \"0\"\n                                                    }}\n                                                </ng-template>\n                                            </span>\n                                        </div>\n                                    </td>\n                                    <td\n                                        class=\"sticky-col\"\n                                        [ngClass]=\"{ 'scroll-left-shadow-effect': isScrolledLeft }\"\n                                    >\n                                        <div annaCoreShowEllipsisTextOnHover>\n                                            <span\n                                                annaCoreShowEllipsisTextOnHover\n                                                class=\"upper-label\"\n                                                >{{\n                                                    subline.amount != null\n                                                        ? (subline.amount | currency: currencyUnit : \"symbol\" : \"1.0\")\n                                                        : \"$0\"\n                                                }}</span\n                                            >\n                                        </div>\n                                    </td>\n                                    <td *ngFor=\"let weekSpot of subline.weekSpots\">\n                                        <div annaCoreShowEllipsisTextOnHover>\n                                            <span\n                                                annaCoreShowEllipsisTextOnHover\n                                                class=\"upper-label\"\n                                                >{{ weekSpot ? weekSpot : \"0\" }}</span\n                                            >\n                                        </div>\n                                    </td>\n                                </tr>\n                            </ng-container>\n                        </ng-container>\n                    </ng-container>\n                </ng-container>\n                <ng-container *ngIf=\"!showSkeletonLoading && tableData.length === 0\">\n                    <tr>\n                        <td\n                            [colSpan]=\"tableHeaders.length\"\n                            [height]=\"'100px'\"\n                            class=\"no-data-td\"\n                        >\n                            <div class=\"no-data-to-display\">\n                                <anna-core-no-data-lib class=\"line-details-nodata\"></anna-core-no-data-lib>\n                            </div>\n                        </td>\n                        <td\n                            *ngIf=\"weekWiseHeaderData.length > 0\"\n                            [colSpan]=\"weekWiseHeaderData.length\"\n                            [height]=\"'100px'\"\n                            class=\"no-data-td\"\n                        ></td>\n                    </tr>\n                </ng-container>\n                <ng-container\n                    [ngTemplateOutlet]=\"skeletonLoading\"\n                    *ngIf=\"showSkeletonLoading\"\n                ></ng-container>\n            </tbody>\n        </table>\n    </div>\n</div>\n\n<!-- table skeleton loader -->\n<ng-template #skeletonLoading>\n    <tr *ngFor=\"let row of numberOfSkeletonRow; let rowIndex = index\">\n        <td\n            class=\"skeleton-loader-td\"\n            *ngFor=\"let column of numberOfSkeletonColumns; let colIndex = index\"\n            [ngClass]=\"{\n                'scroll-left-shadow-effect': isScrolledLeft && colIndex === 10,\n                'sticky-col': colIndex === 10,\n                'skeleton-td': colIndex < 11\n            }\"\n        >\n            <ngx-skeleton-loader\n                count=\"1\"\n                [theme]=\"{ width: '90%', height: '1em', display: 'block', 'margin-top': '10px' }\"\n            >\n            </ngx-skeleton-loader>\n        </td>\n    </tr>\n</ng-template>\n\n<!-- Checkbox filter template -->\n<ng-template #CHECKBOX>\n    <anna-core-anna-column-checkbox-filter\n        [tableData]=\"tableData\"\n        [showFilterHeaderTabs]=\"lineDetailsFilterService.showFilterTabs\"\n        [isLurAndCsrComponent]=\"false\"\n        [clonedTableData]=\"tableDataClonned\"\n        [filterTabObjects]=\"lineDetailsFilterService.radioButtons\"\n        (filterAppliedToTable)=\"filterAppliedToTable($event)\"\n        (sortingAppliedToTable)=\"filterAppliedToTable($event)\"\n        (closeTooltip)=\"lineDetailsFilterService.closeTooltip()\"\n    >\n    </anna-core-anna-column-checkbox-filter>\n</ng-template>\n\n<ng-template #SLIDER>\n    <anna-core-anna-column-slider-filter\n        [tableData]=\"tableData\"\n        [showFilterHeaderTabs]=\"lineDetailsFilterService.showFilterTabs\"\n        [isLurAndCsrComponent]=\"false\"\n        [clonedTableData]=\"tableDataClonned\"\n        [filterTabObjects]=\"lineDetailsFilterService.radioButtons\"\n        (filterAppliedToTable)=\"filterAppliedToTable($event)\"\n        (sortingAppliedToTable)=\"filterAppliedToTable($event)\"\n        (closeTooltip)=\"lineDetailsFilterService.closeTooltip()\"\n    >\n    </anna-core-anna-column-slider-filter>\n</ng-template>\n\n<!-- date Filter Template -->\n<ng-template #DATE>\n    <anna-core-anna-column-date-range-filter\n        [tableData]=\"tableData\"\n        [clonedTableData]=\"tableDataClonned\"\n        [showFilterHeaderTabs]=\"lineDetailsFilterService.showFilterTabs\"\n        [filterTabObjects]=\"lineDetailsFilterService.radioButtons\"\n        (filterAppliedToTable)=\"filterAppliedToTable($event)\"\n        (sortingAppliedToTable)=\"filterAppliedToTable($event)\"\n        (closeTooltip)=\"lineDetailsFilterService.closeTooltip()\"\n    >\n    </anna-core-anna-column-date-range-filter>\n</ng-template>\n\n<!-- Time Filter Template -->\n<ng-template #TIME>\n    <anna-core-anna-column-time-filter\n        [tableData]=\"tableData\"\n        [showFilterHeaderTabs]=\"lineDetailsFilterService.showFilterTabs\"\n        [isLurAndCsrComponent]=\"false\"\n        [showAllTimeRangeCheckboxes]=\"true\"\n        [clonedTableData]=\"tableDataClonned\"\n        [filterTabObjects]=\"lineDetailsFilterService.radioButtons\"\n        (filterAppliedToTable)=\"filterAppliedToTable($event)\"\n        (sortingAppliedToTable)=\"filterAppliedToTable($event)\"\n        (closeTooltip)=\"lineDetailsFilterService.closeTooltip()\"\n    >\n    </anna-core-anna-column-time-filter>\n</ng-template>\n\n<ng-template #showOrHideToggleForTotalRowTooltip>\n    <div>\n        {{ showOrHideToggleForTotalRow && !showTotalRow ? \"Show Total Row\" : \"Hide Total Row\" }}\n    </div>\n</ng-template>\n\n<ng-template\n    let-data=\"data\"\n    #additionalData\n>\n    <i\n        *ngIf=\"data?.length > 0\"\n        class=\"tooltip-text\"\n        #arrowTooltip=\"ngbTooltip\"\n        container=\"body\"\n        [ngbTooltip]=\"tooltipTemplate\"\n    >\n        +{{ data.length }}\n\n        <ng-template #tooltipTemplate>\n            <div class=\"tooltip-div-container\">\n                {{ data.join(\", \") }}\n            </div>\n        </ng-template>\n    </i>\n</ng-template>\n\n<ng-template\n    #invCodeSellerPgmTableIcon\n    let-data=\"data\"\n>\n    <i\n        *ngIf=\"data?.length && (data?.length > 1 || (data?.length === 1 && data[0].InventoryCode?.length > 1))\"\n        class=\"tooltip-text\"\n        [ngbTooltip]=\"inventorySellerProgramTable\"\n        placement=\"bottom auto\"\n        container=\"body\"\n        [autoClose]=\"true\"\n        triggers=\"manual\"\n        (hidden)=\"closeTooltip()\"\n        #info=\"ngbTooltip\"\n        tooltipClass=\"seller-program-tooltip\"\n        (mouseenter)=\"bindTheValueToSellerGroupTooltip(data, info)\"\n        >+{{ data.length }}</i\n    >\n</ng-template>\n\n<ng-template #inventorySellerProgramTable>\n    <ng-container *ngIf=\"invCodeSellerPgmTableData.length > 0\">\n        <section class=\"inventory-table-container\">\n            <table class=\"inv-seller-table\">\n                <thead>\n                    <tr>\n                        <th>Seller Program</th>\n                        <th>Inventory Code</th>\n                    </tr>\n                </thead>\n                <tbody>\n                    <tr *ngFor=\"let row of invCodeSellerPgmTableData\">\n                        <td>\n                            <span annaCoreShowEllipsisTextOnHover>{{ row.SellerProgramName.join(\", \") }}</span>\n                        </td>\n                        <td>\n                            <span annaCoreShowEllipsisTextOnHover>{{ row.InventoryCode.join(\", \") }}</span>\n                        </td>\n                    </tr>\n                </tbody>\n            </table>\n        </section>\n    </ng-container>\n</ng-template>\n","import { ClickableItem } from \"@annalib/anna-core\";\n\nexport class MassCopyStatusInfo {\n    copiedFromSource: string;\n    copyStatusTableData: CopyStatusTableInfo[] = [];\n    constructor(data: any) {\n        this.copiedFromSource = data.SourceName;\n        data.DestinationEntitiesInfo?.forEach((statusInfo: any) => {\n            const statusData = new CopyStatusTableInfo(statusInfo);\n            this.copyStatusTableData.push(statusData);\n        });\n    }\n}\nexport class CopyStatusTableInfo {\n    stationOrAdvertiserDisplayText: string;\n    copyStatusActionKey: ClickableItem[] = [];\n    copyStatus: string;\n    statusDisplayText: string;\n    constructor(data: any) {\n        if (data.DestinationEntityType === \"ORDER\") {\n            this.stationOrAdvertiserDisplayText = data.AlternateOrderId\n                ? `${data.OrderId}(${data.AlternateOrderId})`\n                : data.OrderId;\n        }\n        if (data.DestinationEntityType === \"ADVERTISER\") {\n            this.stationOrAdvertiserDisplayText = data.AdvertiserName;\n        }\n        let statusClassName;\n        // eslint-disable-next-line default-case\n        switch (data.Status) {\n            case \"SUCCESS\":\n                this.statusDisplayText = \"Copied\";\n                statusClassName = \"status-btn success-tag\";\n                break;\n            case \"ERROR\":\n                this.statusDisplayText = \"Error copying\";\n                statusClassName = \"status-btn failed-tag\";\n                break;\n        }\n        const statusColumnText = new ClickableItem(\"NONE\", this.statusDisplayText, statusClassName, false, null);\n        this.copyStatusActionKey.push(statusColumnText);\n    }\n}\n","import { InjectionToken } from \"@angular/core\";\nimport { Observable } from \"rxjs\";\n\n\nexport const MASS_COPY_STATUS_SERVICE: InjectionToken<IMassCopyStatusService> = new InjectionToken<IMassCopyStatusService>(\n    \"IMassCopyStatusService token\",\n);\n\nexport interface IMassCopyStatusService {\n \n    fetchMassCopyStatus(transactionId: string): Observable<any>;\n}\n","import { CommonModule } from \"@angular/common\";\nimport {\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    Inject,\n    Input,\n    OnChanges,\n    SimpleChanges,\n    TemplateRef,\n    ViewChild,\n} from \"@angular/core\";\nimport {\n    AnnaFilterService,\n    AnnaGlobalConfigService,\n    AnnaNonEditableGenericTableComponent,\n    AnnaSortService,\n    IConfirmationPopupConfig,\n    IGtGeneralConfig,\n    IGtTableHeader,\n} from \"@annalib/anna-core\";\nimport { NgbModal, NgbModalOptions, NgbModalRef } from \"@ng-bootstrap/ng-bootstrap\";\nimport { cloneDeep } from \"lodash-es\";\n\nimport { CopyStatusTableInfo, MassCopyStatusInfo } from \"./models/mass-copy-status.model\";\nimport { IMassCopyStatusService, MASS_COPY_STATUS_SERVICE } from \"./services/mass-copy-status-backend.service\";\n\n@Component({\n    selector: \"anna-feature-mass-copy-status-popup\",\n    imports: [CommonModule, AnnaNonEditableGenericTableComponent],\n    templateUrl: \"./mass-copy-status-popup.component.html\",\n    styleUrls: [\"./mass-copy-status-popup.component.scss\"],\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MassCopyStatusPopupComponent implements OnChanges {\n    @Input() transactionId: string;\n    @Input() stationName: string;\n    tableData: CopyStatusTableInfo[] = [];\n    clonnedTableData: CopyStatusTableInfo[] = [];\n    copiedFromSource: string;\n    @ViewChild(\"massCopyStatusModal\") private statusCopyTemplate: TemplateRef<any>;\n    copyRulesModalReference: NgbModalRef;\n\n    config: IConfirmationPopupConfig;\n    tableHeaders: IGtTableHeader[] = [];\n    gtGeneralConfig: IGtGeneralConfig;\n    loading: boolean;\n    gtDimension = { rowHeight: 22, headerHeight: 40, dataOnTopHeight: 350, marginFromBottom: 0 };\n\n    private readonly filterSortActiveKey = \"stationOrAdvertiserDisplayText\";\n\n    constructor(\n        private modalService: NgbModal,\n        private annaSortService: AnnaSortService,\n        private annaFilterService: AnnaFilterService,\n        private globalConfig: AnnaGlobalConfigService,\n        private readonly cdr: ChangeDetectorRef,\n        @Inject(MASS_COPY_STATUS_SERVICE)\n        public consumingProjectBusinessRuleService: IMassCopyStatusService,\n    ) {\n        this.tableHeaders = this.getTableHeaders();\n        this.config = { ...this.globalConfig.defaultConfirmationPopupConfig };\n        this.setTableConfig();\n    }\n\n    ngOnChanges(changes: SimpleChanges) {\n        if (changes.transactionId.currentValue) {\n            this.fetchMassCopyStatusData();\n        }\n    }\n    fetchMassCopyStatusData() {\n        this.annaSortService.columnSortState = new Map();\n        this.annaFilterService.initialValueMap = new Map();\n        this.annaFilterService.appliedFiltersArray = [];\n        this.loading = true;\n        this.consumingProjectBusinessRuleService.fetchMassCopyStatus(this.transactionId).subscribe(\n            (response) => {\n                const massCopyData = new MassCopyStatusInfo(response.body);\n                this.tableData = massCopyData.copyStatusTableData;\n                this.copiedFromSource = massCopyData.copiedFromSource;\n                this.clonnedTableData = cloneDeep(this.tableData);\n                this.loading = false;\n                this.annaSortService.noSortingAppliedData = cloneDeep(this.clonnedTableData);\n                this.registerFilterSortActiveKeys();\n                this.cdr.markForCheck();\n            },\n            (error) => {\n                this.loading = false;\n                this.cdr.markForCheck();\n            },\n        );\n    }\n    openModal() {\n        const ngbModalOptions: NgbModalOptions = {\n            backdrop: this.config.backdrop,\n            keyboard: this.config.keyboard,\n            windowClass: \"mass-copy-status-modal \",\n            centered: true,\n            size: \"sm\",\n        };\n        this.copyRulesModalReference = this.modalService.open(this.statusCopyTemplate, ngbModalOptions);\n        this.registerFilterSortActiveKeys();\n    }\n\n    private registerFilterSortActiveKeys(): void {\n        if (this.annaFilterService.isFilterSortActive[this.filterSortActiveKey] === undefined) {\n            this.annaFilterService.isFilterSortActive[this.filterSortActiveKey] = false;\n        }\n    }\n    setTableConfig() {\n        this.gtGeneralConfig = { ...this.globalConfig.defaultGtGeneralConfig };\n        this.gtGeneralConfig.component = \"EXCLUDEINVENTORYPOPUP\";\n        this.gtGeneralConfig.totalRow = false;\n        this.gtGeneralConfig.tableContainerName = \"\";\n    }\n\n    getTableHeaders(): IGtTableHeader[] {\n        const gtTableHeaders: IGtTableHeader[] = [\n            {\n                headerInfo: [\n                    {\n                        name: \"STN ORDER# (ALT ORDER#) / ADVERTISER\",\n                        objectKey: \"stationOrAdvertiserDisplayText\",\n                        typeOfHeaderData: \"STRING\",\n                        typeOfBodyData: \"STRING\",\n                        showTooltipIcon: true,\n                        isSortRequired: [true],\n                        isFilterRequired: [true],\n                        filter: \"CHECKBOX\",\n                        filterSortObjectKeys: [\"stationOrAdvertiserDisplayText\"],\n                    },\n                ],\n                visible: true,\n                width: \"60%\",\n            },\n            {\n                headerInfo: [\n                    {\n                        name: \"COPY STATUS\",\n                        objectKey: \"statusDisplayText\",\n                        actionKey: \"copyStatusActionKey\",\n                        typeOfHeaderData: \"STRING\",\n                        typeOfBodyData: \"TEXT_ACTIONS\",\n                        showTooltipIcon: false,\n                        isSortRequired: [false],\n                        isFilterRequired: [false],\n                    },\n                ],\n                visible: true,\n                width: \"30%\",\n            },\n        ];\n\n        return gtTableHeaders;\n    }\n    filterAppliedToTable(data: CopyStatusTableInfo[]) {\n        this.tableData = cloneDeep(data);\n        this.registerFilterSortActiveKeys();\n        this.annaFilterService.updateStateOfAllTheKeys(this.annaSortService.columnSortState);\n        this.cdr.markForCheck();\n    }\n    sortingAppliedToTable(data: CopyStatusTableInfo[]) {\n        this.tableData = cloneDeep(data);\n        this.registerFilterSortActiveKeys();\n        this.annaFilterService.updateStateOfAllTheKeys(this.annaSortService.columnSortState);\n        this.cdr.markForCheck();\n    }\n    closeModal() {\n        if (this.copyRulesModalReference) {\n            this.tableData = cloneDeep(this.clonnedTableData);\n            this.annaSortService.noSortingAppliedData = cloneDeep(this.clonnedTableData);\n            this.annaSortService.columnSortState = new Map();\n            this.annaFilterService.initialValueMap = new Map();\n            this.annaFilterService.tooltipSelectedMap = new Map();\n            this.annaFilterService.appliedFiltersArray = [];\n            this.copyRulesModalReference.close();\n        }\n    }\n}\n","<ng-template\n    #massCopyStatusModal\n    let-modal\n>\n    <section class=\"main-modal\">\n        <div class=\"modal-header\">\n            <h3 class=\"modal-title\">Copy status</h3>\n            <i\n                class=\"mi mdi-close-icon mdi-font-md close pull-right\"\n                (click)=\"closeModal()\"\n            ></i>\n        </div>\n\n        <div class=\"modal-body\">\n            <div class=\"meta-data\">\n                <span\n                    >Station: <b>{{ stationName }}</b></span\n                >\n                <span>\n                    Copied from: <b>{{ copiedFromSource }}</b>\n                </span>\n            </div>\n\n            <anna-core-non-editable-generic-table-lib\n                class=\"mass-status-copy-table\"\n                [tableBorderBottomClassRequired]=\"false\"\n                [fixNumberOfRowsForPopup]=\"true\"\n                [showSkeletonLoading]=\"loading\"\n                [tableHeaders]=\"tableHeaders\"\n                [tableData]=\"tableData\"\n                [clonedTableData]=\"clonnedTableData\"\n                [gtGeneralConfig]=\"gtGeneralConfig\"\n                [gtDimension]=\"gtDimension\"\n                (filterAppliedToTable)=\"filterAppliedToTable($event)\"\n                (sortingAppliedToTable)=\"sortingAppliedToTable($event)\"\n            >\n            </anna-core-non-editable-generic-table-lib>\n        </div>\n    </section>\n</ng-template>\n","import { Injectable } from \"@angular/core\";\nimport { IGtTableHeader } from \"@annalib/anna-core\";\nimport { BehaviorSubject, Subject } from \"rxjs\";\n\nimport { INotificationTab, Notification } from \"../models/notifications.model\";\n\n@Injectable({\n    providedIn: \"root\",\n})\nexport class NotificationsService {\n    notificationResponseSubject = new BehaviorSubject<Notification[]>(undefined);\n    notificationMarkedreadResponseSubject = new BehaviorSubject<string[]>(undefined);\n    filtersAppliedRouteChange: any;\n    startLoaderSubject = new BehaviorSubject<boolean>(false);\n    progressSubject = new BehaviorSubject<number>(0);\n    samePageNotificationClickedSubject = new Subject<boolean>();\n    triggerLoaderFromStart() {\n        this.progressSubject.next(0);\n        this.startLoaderSubject.next(true);\n    }\n    stopLoader() {\n        this.startLoaderSubject.next(false);\n    }\n    updateProgress(value: number) {\n        this.progressSubject.next(value);\n    }\n\n    getTabsForNotifications(): INotificationTab[] {\n        return [\n            { id: 0, name: \"Daily Updates\", notificationCount: 5, key: \"DAILY_UPDATES\" },\n            { id: 1, name: \"Others\", notificationCount: 3, key: \"OTHERS\" },\n        ];\n    }\n\n    getTableHeaders(): IGtTableHeader[] {\n        const gtTableHeaders: IGtTableHeader[] = [\n            {\n                headerInfo: [\n                    {\n                        name: \"STATION\",\n                        objectKey: \"station\",\n                        typeOfHeaderData: \"STRING\",\n                        typeOfBodyData: \"STRING\",\n                        showTooltipIcon: true,\n                        isSortRequired: [true],\n                        isFilterRequired: [true],\n                        filter: \"CHECKBOX\",\n                        filterSortObjectKeys: [\"station\"],\n                    },\n                ],\n                visible: true,\n                width: \"50px\",\n            },\n            {\n                headerInfo: [\n                    {\n                        name: \"DATE\",\n                        objectKey: \"date\",\n                        tooltipKey: \"statusTooltipKey\",\n                        typeOfHeaderData: \"STRING\",\n                        typeOfBodyData: \"STRING\",\n                        showTooltipIcon: true,\n                        isSortRequired: [true],\n                        isFilterRequired: [true],\n                        filter: \"DATE\",\n                        filterSortObjectKeys: [\"date\"],\n                    },\n                ],\n                visible: true,\n                width: \"40px\",\n            },\n            {\n                headerInfo: [\n                    {\n                        name: \"TIME\",\n                        objectKey: \"displayTime\",\n                        typeOfHeaderData: \"STRING\",\n                        typeOfBodyData: \"STRING\",\n                        showTooltipIcon: true,\n                        isSortRequired: [true],\n                        isFilterRequired: [true],\n                        filter: \"TIME\",\n                        filterSortObjectKeys: [\"time\"],\n                    },\n                ],\n                visible: true,\n                width: \"40px\",\n            },\n            {\n                headerInfo: [\n                    {\n                        name: \"TYPE\",\n                        objectKey: \"displayType\",\n                        typeOfHeaderData: \"STRING\",\n                        typeOfBodyData: \"STRING\",\n                        showTooltipIcon: true,\n                        isSortRequired: [true],\n                        isFilterRequired: [true],\n                        filter: \"CHECKBOX\",\n                        filterSortObjectKeys: [\"displayType\"],\n                    },\n                ],\n                visible: true,\n                width: \"50px\",\n            },\n            {\n                headerInfo: [\n                    {\n                        name: \"NOTIFICATIONS\",\n                        objectKey: \"tableMessages\",\n                        typeOfHeaderData: \"STRING\",\n                        typeOfBodyData: \"HTML_STRING\",\n                        showTooltipIcon: false,\n                        isSortRequired: [false],\n                        isFilterRequired: [false],\n                        filter: \"CHECKBOX\",\n                        filterSortObjectKeys: [\"tableMessages\"],\n                    },\n                ],\n                visible: true,\n                width: \"220px\",\n            },\n            {\n                headerInfo: [\n                    {\n                        name: \"\",\n                        objectKey: \"icon\",\n                        actionKey: \"readActionKey\",\n                        typeOfHeaderData: \"STRING\",\n                        tooltipKey: \"tooltipData\",\n                        typeOfBodyData: \"STRING___ICON_OR_TEXT_ACTION\",\n                        showTooltipIcon: false,\n                        isSortRequired: [false],\n                        isFilterRequired: [false],\n                        filter: \"CHECKBOX\",\n                        filterSortObjectKeys: [\"notification\"],\n                    },\n                ],\n                visible: true,\n                width: \"5px\",\n            },\n        ];\n        return gtTableHeaders;\n    }\n}\n","import { AdditionalDataForLink } from '../models/notifications.model';\n\nexport function isNotificationViewLink(label: string | null | undefined): boolean {\n    return (label ?? '').trim().toLowerCase() === 'view';\n}\n\nexport type GuidanceRatesNotificationNavigationParams = {\n    userPageUrl: string;\n    stationName: string;\n    periodInformation?: string;\n    periodType?: string;\n    startDate?: string;\n    endDate?: string;\n    disableStationDropdown: string;\n    openPlanGuidancePopup?: string;\n};\n\nexport function buildGuidanceRatesNotificationNavigationParams(\n    targetUrl: string,\n    stationName: string,\n    additional: AdditionalDataForLink | undefined,\n    linkLabel: string,\n): GuidanceRatesNotificationNavigationParams {\n    const params: GuidanceRatesNotificationNavigationParams = {\n        userPageUrl: targetUrl,\n        stationName,\n        periodInformation: additional?.periodInformation,\n        periodType: additional?.periodType,\n        startDate: additional?.startDate,\n        endDate: additional?.endDate,\n        disableStationDropdown: 'true',\n    };\n\n    if (!isNotificationViewLink(linkLabel)) {\n        params.openPlanGuidancePopup = 'true';\n    }\n\n    return params;\n}\n","import { animate, keyframes, state, style, transition, trigger } from \"@angular/animations\";\nimport { NgClass, NgFor, NgIf, NgTemplateOutlet, SlicePipe } from \"@angular/common\";\nimport {\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    EventEmitter,\n    Input,\n    OnInit,\n    Output,\n    ViewChild,\n} from \"@angular/core\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { MatMenuModule, MatMenuTrigger } from \"@angular/material/menu\";\nimport { Router } from \"@angular/router\";\nimport { AnnaCircularProgressComponent, AnnaFilterService, AnnaPersistingFilterService } from \"@annalib/anna-core\";\nimport { BreadcrumbsService } from \"@annalib/anna-design-components-lib\";\nimport { NgbTooltip } from \"@ng-bootstrap/ng-bootstrap\";\nimport dayjs from \"dayjs\";\nimport { Subject } from \"rxjs\";\n\nimport { MassCopyStatusPopupComponent } from \"../mass-copy-status-popup/mass-copy-status-popup.component\";\nimport { ClickableLink, INotificationTab, Notification } from \"../models/notifications.model\";\nimport { NotificationsService } from \"../services/notifications.service\";\nimport { buildGuidanceRatesNotificationNavigationParams } from \"../utils/notification-navigation.util\";\n\n@Component({\n    selector: \"anna-feature-notification-header\",\n    templateUrl: \"./app-notification-header.component.html\",\n    styleUrls: [\"./app-notification-header.component.scss\"],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    animations: [\n        trigger(\"fade\", [\n            state(\"false\", style({ opacity: 1 })),\n            state(\"true\", style({ opacity: 1 })),\n            transition(\":increment\", [\n                animate(\n                    \"2s\",\n                    keyframes([\n                        style({ transform: \"rotate(0)\" }),\n                        style({ transform: \"rotate(30deg)\" }),\n                        style({ transform: \"rotate(-28deg)\" }),\n                        style({ transform: \"rotate(34deg)\" }),\n                        style({ transform: \"rotate(-32deg)\" }),\n                        style({ transform: \"rotate(30deg)\" }),\n                        style({ transform: \"rotate(-28deg)\" }),\n                        style({ transform: \"rotate(26deg)\" }),\n                        style({ transform: \"rotate(-24deg)\" }),\n                        style({ transform: \"rotate(22deg)\" }),\n                        style({ transform: \"rotate(-20deg)\" }),\n                        style({ transform: \"rotate(18deg)\" }),\n                        style({ transform: \"rotate(-16deg)\" }),\n                        style({ transform: \"rotate(14deg)\" }),\n                        style({ transform: \"rotate(-12deg)\" }),\n                        style({ transform: \"rotate(10deg)\" }),\n                        style({ transform: \"rotate(-8deg)\" }),\n                        style({ transform: \"rotate(6deg)\" }),\n                        style({ transform: \"rotate(-4deg)\" }),\n                        style({ transform: \"rotate(2deg)\" }),\n                        style({ transform: \"rotate(-1deg)\" }),\n                        style({ transform: \"rotate(1deg)\" }),\n                        style({ transform: \"rotate(0)\" }),\n                        style({ transform: \"rotate(0)\" }),\n                    ]),\n                ),\n            ]),\n        ]),\n    ],\n    imports: [\n        MatMenuModule,\n        NgIf,\n        MatIconModule,\n        NgFor,\n        SlicePipe,\n        NgClass,\n        NgbTooltip,\n        NgTemplateOutlet,\n        AnnaCircularProgressComponent,\n        MassCopyStatusPopupComponent,\n    ],\n})\nexport class NotificationHeaderComponent implements OnInit {\n    @Input() loading: boolean = true;\n    @Input() notificationBellIconRing: boolean = false;\n    @Input() orderContainerTabName: \"TV Revenue\" | \"TV\" = \"TV Revenue\";\n    @ViewChild(\"massCopyStatusModal\") private massCopyStatusModal: MassCopyStatusPopupComponent;\n    @Output() markNotificationAsRead = new EventEmitter();\n    @Output() viewAllClicked = new EventEmitter();\n    @Output() handleUserNavigation = new EventEmitter();\n    @Output() handleNotificationHeaderNavigation = new EventEmitter();\n\n    notificationCount: number = 0;\n    transactionId: string = null;\n    notificationsForPanel: Notification[] = [];\n    protected ngUnsubscribe: Subject<void> = new Subject<void>();\n    activeTab: INotificationTab;\n    tabs: INotificationTab[];\n    selectedTabNotifications: Notification[] = [];\n    progressInterval: any;\n\n    @ViewChild(MatMenuTrigger) notificationTriggerBell: MatMenuTrigger;\n    showLoader: boolean = false;\n    progress: number = 0;\n    selectedStation: string;\n    isLoaderActive: boolean = false;\n\n    constructor(\n        private notificationService: NotificationsService,\n        private breadcrumbService: BreadcrumbsService,\n        private router: Router,\n        private cdr: ChangeDetectorRef,\n        private persistingFilterService: AnnaPersistingFilterService,\n        private annaFilterService: AnnaFilterService,\n    ) {}\n\n    ngOnInit(): void {\n        this.tabs = this.notificationService.getTabsForNotifications();\n        this.activeTab = this.tabs[0];\n        this.notificationService.notificationResponseSubject.subscribe((response) => {\n            this.notificationsForPanel = response || [];\n            if (\n                this.notificationsForPanel?.some(\n                    (notif) =>\n                        notif.message === \"Copying business rules in progress\" ||\n                        notif.message === \"Copying incremental changes to business rules in progress\",\n                )\n            ) {\n                if (!this.showLoader) {\n                    this.notificationService.triggerLoaderFromStart();\n                }\n            }\n            this.selectedTabDataToDisplay();\n            this.updateCount();\n            this.loading = false;\n            this.cdr.markForCheck();\n        });\n        this.notificationService.startLoaderSubject.subscribe((startLoader) => {\n            this.isLoaderActive = startLoader;\n\n            if (startLoader) {\n                this.showLoader = true;\n\n                this.startProgress();\n            } else {\n                this.stopProgress(); // Stop progress immediately\n                this.completeProgress(); // Complete the loader\n            }\n        });\n        this.notificationService.progressSubject.subscribe((progress) => {\n            this.progress = progress;\n            this.cdr.detectChanges();\n        });\n    }\n\n    startProgress() {\n        let currentProgress = 0;\n\n        this.clearProgressInterval();\n\n        this.progressInterval = setInterval(() => {\n            if (!this.isLoaderActive) {\n                this.clearProgressInterval();\n                return;\n            }\n            if (currentProgress < 90) {\n                currentProgress += 10;\n                this.notificationService.updateProgress(currentProgress);\n            } else {\n                this.clearProgressInterval();\n            }\n        }, 10);\n    }\n\n    stopProgress() {\n        this.clearProgressInterval();\n    }\n\n    completeProgress() {\n        this.notificationService.updateProgress(100);\n        this.showLoader = false;\n    }\n\n    clearProgressInterval() {\n        if (this.progressInterval) {\n            clearInterval(this.progressInterval); // Clear the interval\n            this.progressInterval = null; // Reset the reference\n        }\n    }\n\n    markAllAsRead() {\n        const notificationIds: string[] = this.selectedTabNotifications\n            .filter((notification) => !notification.isRead)\n            .map((notification) => notification.id);\n        this.markNotificationAsRead.emit(notificationIds);\n    }\n\n    markAsRead(notificationId: string) {\n        if (\n            !this.selectedTabNotifications[\n                this.selectedTabNotifications.findIndex((notif) => notif.id === notificationId)\n            ].isRead\n        )\n            this.markNotificationAsRead.emit([notificationId]);\n    }\n\n    updateCount() {\n        this.tabs.forEach((tab) => {\n            tab.notificationCount = this.notificationsForPanel.filter(\n                (n) => n.isRead === false && this.isNotificationForPanel(n, tab),\n            ).length;\n        });\n        this.notificationCount = this.tabs.reduce((acc, n) => acc + n.notificationCount, 0);\n        this.cdr.detectChanges();\n    }\n\n    linkClicked(rowData: Notification, url: string, queryParams: any) {\n        this.notificationTriggerBell.closeMenu();\n        // this.router.navigate([url], {queryParams: {filters: queryParams}});\n        if (rowData.clickableItems[0].pageUrl === \"BULK_COPY_STATUS_POPUP\") {\n            this.transactionId = rowData.clickableItems[0].additionalDataForLink.transactionId;\n            this.selectedStation = rowData.station;\n            this.massCopyStatusModal.openModal();\n            return;\n        }\n        // Do not clear breadcrumbs for Section Rate Card / Guidance Rates / Dynamic Rates so the page header stays visible\n        const isYmcOrSectionRate =\n            url.includes(\"section-rate-card\") ||\n            url.includes(\"yield-management-center/guidance-rates\") ||\n            url.includes(\"yield-management-center/dynamic-rates\");\n        if (!isYmcOrSectionRate) {\n            this.breadcrumbService.popBreadcrumbs(this.breadcrumbService.getBreadcrumbList()?.length);\n        }\n        this.navigateToRespectivePage(url, rowData);\n    }\n\n    buttonClicked() {\n        this.notificationTriggerBell.closeMenu();\n    }\n\n    redirectToNotifications() {\n        this.viewAllClicked.emit();\n    }\n\n    tabChanged(tab: INotificationTab): void {\n        this.activeTab = tab;\n        this.selectedTabDataToDisplay();\n    }\n\n    selectedTabDataToDisplay() {\n        this.selectedTabNotifications = this.notificationsForPanel.filter((n) =>\n            this.isNotificationForPanel(n, this.activeTab),\n        );\n    }\n\n    isNotificationForPanel(notification: Notification, tab: INotificationTab): boolean {\n        return (\n            notification.type === tab.key &&\n            ((tab.key === \"DAILY_UPDATES\" && notification.isCurrentDailyRevision) || tab.key === \"OTHERS\")\n        );\n    }\n\n    navigateToRespectivePage(urlClicked: string, rowData: Notification) {\n        const clickedItem = rowData.clickableItems.filter((x: ClickableLink) => urlClicked.includes(x.pageUrl))[0];\n        if (!clickedItem) return;\n        const url = clickedItem.pageUrl;\n\n        let filters: any = {};\n\n        if (url.includes(\"business-rules/advertiser\")) {\n            this.breadcrumbService.updateBreadcrumbs(clickedItem.additionalDataForLink.advertiserName, null, true);\n            filters.advertiserId = clickedItem.additionalDataForLink.advertiserId;\n            filters.stationId = clickedItem.additionalDataForLink.stationId;\n            filters.breadcrumbs = this.persistingFilterService.storeKeyValueInLocalStorage(\n                this.breadcrumbService.getBreadcrumbList(),\n                false,\n            );\n            this.resetRouteReuseStrategy();\n            this.router.navigate([url], { queryParams: filters });\n        } else if (url.includes(\"order-business-rules\")) {\n            filters = {\n                navigateTo: \"order-business-rules\",\n                searchRedirected: false,\n                currentTab: \"Business Rules\",\n                orderId: clickedItem.additionalDataForLink.orderId,\n                displayOrderId: clickedItem.additionalDataForLink.orderId,\n                channelId: clickedItem.additionalDataForLink.stationId,\n                campaignId: clickedItem.additionalDataForLink.campaignId,\n                campaignStartDate: dayjs(clickedItem.additionalDataForLink.flightStartDate, \"MM/DD/YY\").format(\n                    \"MM/DD/YYYY\",\n                ),\n                campaignEndDate: dayjs(clickedItem.additionalDataForLink.flightEndDate, \"MM/DD/YY\").format(\n                    \"MM/DD/YYYY\",\n                ),\n                advertiserId: clickedItem.additionalDataForLink.advertiserId,\n            };\n\n            this.resetRouteReuseStrategy();\n            this.router.navigate(\n                [\n                    \"orders/order-container\",\n                    clickedItem.additionalDataForLink.orderId,\n                    clickedItem.additionalDataForLink.stationId,\n                    filters.navigateTo,\n                ],\n                {\n                    queryParams: {\n                        orderInfo: this.persistingFilterService.storeKeyValueInLocalStorage(filters),\n                        parentTab: this.orderContainerTabName,\n                    },\n                },\n            );\n        } else if (url.includes(\"users/users-awaiting-action\")) {\n            const email = clickedItem.additionalDataForLink.emailId;\n            this.annaFilterService.appliedFiltersArray.push(\"email\");\n            this.annaFilterService.tooltipSelectedMap.set(\"email\", [email]);\n            filters.appliedFilters = this.annaFilterService.appliedFiltersArray;\n            filters.selectedFilterData = JSON.stringify(Array.from(this.annaFilterService.tooltipSelectedMap));\n            const hashedQueryParams = this.persistingFilterService.storeKeyValueInLocalStorage(filters);\n            const hashedBreadcrumbsQueryParams = this.persistingFilterService.storeKeyValueInLocalStorage(\n                this.breadcrumbService.getBreadcrumbList(),\n                false,\n            );\n            let hashedStationIdFilter;\n            if (clickedItem.additionalDataForLink.stationId) {\n                hashedStationIdFilter = this.persistingFilterService.storeKeyValueInLocalStorage(\n                    clickedItem.additionalDataForLink.stationId,\n                );\n            }\n            this.handleUserNavigation.emit({\n                filters: hashedQueryParams,\n                breadcrumbs: hashedBreadcrumbsQueryParams,\n                stationId: hashedStationIdFilter,\n                userPageUrl: url,\n            });\n        } else if (url.includes(\"line-details\")) {\n            const hashedBreadcrumbsQueryParams = this.persistingFilterService.storeKeyValueInLocalStorage(\n                this.breadcrumbService.getBreadcrumbList(),\n                false,\n            );\n\n            this.resetRouteReuseStrategy();\n            this.router.navigate(\n                [\n                    \"orders/order-container\",\n                    clickedItem.additionalDataForLink.orderId,\n                    clickedItem.additionalDataForLink.stationId,\n                    \"line-details\",\n                ],\n                {\n                    queryParams: {\n                        parentTab: this.orderContainerTabName,\n                        breadcrumbs: hashedBreadcrumbsQueryParams,\n                    },\n                },\n            );\n        } else if (url.includes(\"orders/ec-orders\")) {\n            if (this.router.url.includes(\"orders/ec-orders\")) {\n                this.breadcrumbService.updateBreadcrumbs(\"Orders (EC Orders)\", this.router.url, true);\n            }\n\n            this.annaFilterService.appliedFiltersArray.push(\"displayStatus\");\n            this.annaFilterService.tooltipSelectedMap.set(\"displayStatus\", [\"Buyer Revised\", \"New\"]);\n            filters.stationId = +clickedItem.additionalDataForLink.stationId;\n            filters.appliedFilters = this.annaFilterService.appliedFiltersArray;\n            filters.selectedFilterData = JSON.stringify(Array.from(this.annaFilterService.tooltipSelectedMap));\n            const hashedBreadcrumbsQueryParams = this.persistingFilterService.storeKeyValueInLocalStorage(\n                this.breadcrumbService.getBreadcrumbList(),\n                false,\n            );\n            const hashedFilterQueryParams = this.persistingFilterService.storeKeyValueInLocalStorage(filters);\n            this.handleNotificationHeaderNavigation.emit();\n\n            this.router.navigate([url], {\n                queryParams: {\n                    filters: hashedFilterQueryParams,\n                    breadcrumbs: hashedBreadcrumbsQueryParams,\n                },\n            });\n            if (this.router.url.includes(\"orders/ec-orders\")) {\n                setTimeout(() => {\n                    this.notificationService.samePageNotificationClickedSubject.next(true);\n                }, 0);\n            }\n        } else if (url.includes(\"orders/todays-anna-offers\")) {\n            if (this.router.url.includes(\"orders/todays-anna-offers\")) {\n                this.breadcrumbService.updateBreadcrumbs(\"Orders (Today’s ANNA Offers)\", this.router.url, true);\n            }\n            this.router.navigate([url], { queryParams: { filters: clickedItem.queryParams } });\n            if (this.router.url.includes(\"orders/todays-anna-offers\")) {\n                setTimeout(() => {\n                    this.notificationService.samePageNotificationClickedSubject.next(true);\n                }, 0);\n            }\n        } else if (url === \"DYNAMIC_RATES_PUBLISH_POPUP\") {\n            const targetUrl = \"yield-management-center/dynamic-rates\";\n            const additional = clickedItem.additionalDataForLink;\n            this.breadcrumbService.updateBreadcrumbs(\"Yield Management Center (YMC) (Dynamic Rates)\", targetUrl);\n            const hasAdditionalData = additional?.startDate && additional?.endDate;\n            this.handleUserNavigation.emit({\n                userPageUrl: targetUrl,\n                openReviewApprove: \"true\",\n                fromNotification: hasAdditionalData ? \"true\" : \"false\",\n                shouldRecomputeDynamicRates: \"true\",\n                stationName: rowData.station,\n                periodInformation: additional?.periodInformation,\n                periodType: additional?.periodType,\n                startDate: additional?.startDate,\n                endDate: additional?.endDate,\n                disableStationDropdown: \"true\",\n            });\n        } else if (url.includes(\"section-rate-card\")) {\n            const additional = clickedItem.additionalDataForLink;\n            this.breadcrumbService.updateBreadcrumbs(\n                \"Yield Management Center (YMC) (Section Rates)\",\n                \"yield-management-center/section-rate-card\",\n            );\n            this.handleUserNavigation.emit({\n                userPageUrl: url,\n                openSectionRatesPopup: \"true\",\n                stationName: rowData.station,\n                periodInformation: additional?.periodInformation,\n                periodType: additional?.periodType,\n                startDate: additional?.startDate,\n                endDate: additional?.endDate,\n            });\n        } else if (url.includes(\"yield-management-center/guidance-rates\")) {\n            this.breadcrumbService.updateBreadcrumbs(\n                \"Yield Management Center (YMC) (Guidance Rates)\",\n                \"yield-management-center/guidance-rates\",\n            );\n            this.handleUserNavigation.emit(\n                buildGuidanceRatesNotificationNavigationParams(\n                    url,\n                    rowData.station,\n                    clickedItem.additionalDataForLink,\n                    clickedItem.label,\n                ),\n            );\n        } else if (url.includes(\"yield-management-center/dynamic-rates\")) {\n            const additional = clickedItem.additionalDataForLink;\n            this.breadcrumbService.updateBreadcrumbs(\n                \"Yield Management Center (YMC) (Dynamic Rates)\",\n                \"yield-management-center/dynamic-rates\",\n            );\n            const hasAdditionalData = additional?.startDate && additional?.endDate;\n            this.handleUserNavigation.emit({\n                userPageUrl: url,\n                openReviewApprove: \"true\",\n                fromNotification: hasAdditionalData ? \"true\" : \"false\",\n                stationName: rowData.station,\n                shouldRecomputeDynamicRates: \"true\",\n                periodInformation: additional?.periodInformation,\n                periodType: additional?.periodType,\n                startDate: additional?.startDate,\n                endDate: additional?.endDate,\n                disableStationDropdown: \"true\",\n            });\n        } else {\n            this.router.navigate([url], { queryParams: { filters: clickedItem.queryParams } });\n        }\n    }\n\n    resetRouteReuseStrategy() {\n        const prev = this.router.routeReuseStrategy.shouldReuseRoute;\n        const prevOSN = this.router.onSameUrlNavigation;\n        // eslint-disable-next-line func-names\n        this.router.routeReuseStrategy.shouldReuseRoute = function () {\n            return false;\n        };\n        setTimeout(() => {\n            this.router.routeReuseStrategy.shouldReuseRoute = prev;\n            this.router.onSameUrlNavigation = prevOSN;\n        }, 0);\n    }\n}\n","<div class=\"main-div\">\n    <anna-core-circular-progress\n        *ngIf=\"showLoader\"\n        [percent]=\"progress\"\n        [radius]=\"20\"\n        [outerStrokeWidth]=\"5\"\n        [innerStrokeWidth]=\"5\"\n        [outerStrokeColor]=\"'#43A047'\"\n        [innerStrokeColor]=\"'#d5d5d5'\"\n        [animationDuration]=\"200\"\n    ></anna-core-circular-progress>\n    <button\n        #notificationTriggerBell\n        class=\"notification-btn\"\n        (click)=\"tabChanged(tabs[0])\"\n        [matMenuTriggerFor]=\"notificationMenu\"\n    >\n        <div\n            [ngClass]=\"{ 'notification-bubble-inprogress': showLoader }\"\n            class=\"notification-bubble\"\n            *ngIf=\"notificationCount > 0 && notificationCount < 20\"\n        >\n            {{ showLoader ? \"\" : notificationCount }}\n        </div>\n        <div\n            [ngClass]=\"{ 'notification-bubble-inprogress': showLoader }\"\n            class=\"notification-bubble\"\n            *ngIf=\"notificationCount >= 20\"\n        >\n            {{ showLoader ? \"\" : \"20+\" }}\n        </div>\n\n        <i\n            class=\"notification-bell mat-icon mdi mdi-bell\"\n            [@fade]=\"notificationCount\"\n        ></i>\n    </button>\n\n    <mat-menu\n        #notificationMenu=\"matMenu\"\n        xPosition=\"before\"\n        backdropClass=\"notification-panel-backdrop\"\n        class=\"notification-panel\"\n    >\n        <div class=\"notifications-container\">\n            <div\n                class=\"notification-panel-header\"\n                (click)=\"$event.stopPropagation()\"\n            >\n                <div class=\"title\">\n                    <h3>Notifications</h3>\n                </div>\n                <div class=\"tabs-container\">\n                    <div class=\"tabs\">\n                        <ng-container *ngFor=\"let tab of tabs\">\n                            <div\n                                class=\"list-tab\"\n                                [ngClass]=\"{ 'mr-20': tab.notificationCount > 0 }\"\n                            >\n                                <span\n                                    class=\"tab-element\"\n                                    (click)=\"$event.stopPropagation(); tabChanged(tab)\"\n                                    [ngClass]=\"{ 'tab-active': tab.id === activeTab.id }\"\n                                >\n                                    <span>\n                                        {{ tab.name }}\n                                    </span>\n                                    <div\n                                        class=\"notification-bubble-tab\"\n                                        *ngIf=\"tab.notificationCount > 0 && tab.notificationCount < 20\"\n                                    >\n                                        {{ tab.notificationCount }}\n                                    </div>\n                                    <div\n                                        class=\"notification-bubble-tab\"\n                                        *ngIf=\"tab.notificationCount >= 20\"\n                                    >\n                                        20+\n                                    </div>\n                                </span>\n                            </div>\n                        </ng-container>\n                    </div>\n                    <span\n                        class=\"mark-all\"\n                        [ngClass]=\"{ 'disable-link': activeTab.notificationCount === 0 }\"\n                        *ngIf=\"selectedTabNotifications.length > 0\"\n                        (click)=\"$event.stopPropagation(); markAllAsRead()\"\n                    >\n                        <i class=\"mdi mdi-check-all\"></i><u>Mark all as read</u>\n                    </span>\n                </div>\n            </div>\n\n            <div\n                class=\"notification-items-container\"\n                *ngIf=\"selectedTabNotifications.length > 0\"\n            >\n                <div\n                    mat-menu-item\n                    class=\"menu-item\"\n                    *ngFor=\"let notif of selectedTabNotifications | slice: 0 : 20; let index = index\"\n                    [ngClass]=\"{ 'unread-message': !notif.isRead }\"\n                    (click)=\"$event.stopPropagation(); markAsRead(notif.id)\"\n                >\n                    <div class=\"notification-body\">\n                        <span [innerHTML]=\"notif.message\"></span>\n                        <ng-container *ngIf=\"notif.clickableItems?.length\">\n                            <span\n                                class=\"view-link\"\n                                (click)=\"\n                                    linkClicked(\n                                        notif,\n                                        notif.clickableItems[0].pageUrl,\n                                        notif.clickableItems[0].queryParams\n                                    )\n                                \"\n                                >{{ notif.clickableItems[0].label }}</span\n                            >\n                        </ng-container>\n                        <span\n                            *ngIf=\"notif.station !== '-'\"\n                            [class]=\"'station-display ' + notif.stationColorClass\"\n                            >{{ notif.station }}</span\n                        >\n                    </div>\n                    <div\n                        class=\"action-button\"\n                        *ngIf=\"!notif.isRead\"\n                    >\n                        <span class=\"unread-icon-container\">\n                            <i class=\"unread-icon mat-icon mdi mdi-circle-small\"></i>\n                        </span>\n                        <span class=\"check-read-marker\">\n                            <i\n                                class=\"mdi mdi-check mat-icon\"\n                                placement=\"bottom auto\"\n                                [ngbTooltip]=\"markAsReadTip\"\n                                [autoClose]=\"true\"\n                                tooltipClass=\"team-user-tooltip \"\n                            ></i>\n                        </span>\n                    </div>\n\n                    <div class=\"display-time-zone\">{{ notif.displayDate }} | {{ notif.displayTime }}</div>\n\n                    <div\n                        class=\"secondary-links\"\n                        *ngIf=\"notif.clickableItems?.length > 1\"\n                    >\n                        <ng-container *ngFor=\"let link of notif.clickableItems; let i = index\">\n                            <span\n                                *ngIf=\"i > 0\"\n                                class=\"view-link\"\n                                (click)=\"linkClicked(notif, link.pageUrl, link.queryParams)\"\n                                >{{ link.label }}</span\n                            >\n                        </ng-container>\n                    </div>\n\n                    <div\n                        class=\"lower-data\"\n                        *ngIf=\"notif.collapseableData || notif.buttons.length\"\n                    >\n                        <ng-container\n                            [ngTemplateOutlet]=\"notif.buttons.length > 0 ? buttonsTemplate : collapseTemplate\"\n                            [ngTemplateOutletContext]=\"{ data: notif }\"\n                        >\n                        </ng-container>\n                    </div>\n                </div>\n            </div>\n            <div\n                class=\"notification-items-container-no-notifs\"\n                *ngIf=\"selectedTabNotifications.length === 0\"\n            >\n                <div>\n                    <i class=\"mdi mdi-bell-off mat-icon\"></i>\n                    <div class=\"title\">No new notifications for today!</div>\n                    <div class=\"lower-text\">\n                        You are all up-to-date. New notifications will appear when there is any activity on ANNA.\n                    </div>\n                </div>\n            </div>\n\n            <div\n                class=\"notification-panel-footer\"\n                (click)=\"redirectToNotifications()\"\n                *ngIf=\"notificationsForPanel.length > 0\"\n            >\n                <span>View all notifications</span>\n                <i class=\"mdi mdi-chevron-right\"></i>\n            </div>\n        </div>\n    </mat-menu>\n</div>\n\n<ng-template #markAsReadTip>\n    <div class=\"tooltip-div-container\">Mark as Read</div>\n</ng-template>\n\n<ng-template\n    #collapseTemplate\n    let-data=\"data\"\n>\n    <div class=\"expandable-data mdi\">\n        <span (click)=\"$event.stopPropagation(); data.collapseableData.expandClicked()\">\n            {{ data.collapseableData.label }}\n            <i\n                *ngIf=\"data.collapseableData.isExpanded\"\n                class=\"expantion-icon mdi mdi-menu-up\"\n            ></i>\n            <i\n                *ngIf=\"!data.collapseableData.isExpanded\"\n                class=\"expantion-icon mdi mdi-menu-down\"\n            ></i>\n        </span>\n        <span\n            class=\"expanded-data\"\n            [title]=\"data.collapseableData.title\"\n            *ngIf=\"data.collapseableData.isExpanded\"\n        >\n            {{ data.collapseableData.text }}\n        </span>\n    </div>\n</ng-template>\n\n<ng-template\n    #buttonsTemplate\n    let-data=\"data\"\n>\n    <div class=\"notification-button\">\n        <span *ngFor=\"let btn of data.buttons\">\n            <a\n                [href]=\"btn.action\"\n                (click)=\"buttonClicked()\"\n                target=\"_blank\"\n                >{{ btn.text }}</a\n            >\n        </span>\n    </div>\n</ng-template>\n<anna-feature-mass-copy-status-popup\n    #massCopyStatusModal\n    [transactionId]=\"transactionId\"\n    [stationName]=\"selectedStation\"\n>\n</anna-feature-mass-copy-status-popup>\n","export class Constants {\n    static readonly apiFailErrorMessage = \"Unable to mark it as read. Please try after some time.\";\n    static readonly SERVER_ERROR_MSG = \"Something went wrong! Please try again.\";\n}\n","import { NgClass, NgIf } from \"@angular/common\";\nimport {\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    EventEmitter,\n    Input,\n    OnChanges,\n    OnInit,\n    Output,\n    SimpleChanges,\n    ViewChild,\n} from \"@angular/core\";\nimport { FormsModule } from \"@angular/forms\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\nimport {\n    AnnaCoreModule,\n    AnnaFilterSearchedTextPipe,\n    AnnaFilterService,\n    AnnaGlobalConfigService,\n    AnnaGtHelperService,\n    AnnaNonEditableGenericTableComponent,\n    AnnaPersistingFilterService,\n    AnnaSortService,\n    IGtGeneralConfig,\n    IGtTableHeader,\n} from \"@annalib/anna-core\";\nimport {\n    AnnaDesignComponentsLibModule,\n    BreadcrumbsService,\n    PeriodSelectionPopUp,\n} from \"@annalib/anna-design-components-lib\";\nimport { NgbTooltip } from \"@ng-bootstrap/ng-bootstrap\";\nimport dayjs from \"dayjs\";\nimport { cloneDeep } from \"lodash-es\";\nimport { NgxSkeletonLoaderModule } from \"ngx-skeleton-loader\";\nimport { ToastrService } from \"ngx-toastr\";\nimport { Subject } from \"rxjs\";\nimport { debounceTime } from \"rxjs/operators\";\n\nimport { Constants } from \"../Constants\";\nimport { MassCopyStatusPopupComponent } from \"../mass-copy-status-popup/mass-copy-status-popup.component\";\nimport { ClickableLink, Notification } from \"../models/notifications.model\";\nimport { NotificationsService } from \"../services/notifications.service\";\nimport { buildGuidanceRatesNotificationNavigationParams } from \"../utils/notification-navigation.util\";\n\n@Component({\n    selector: \"anna-feature-notification-page\",\n    templateUrl: \"./notification-page.component.html\",\n    styleUrls: [\"./notification-page.component.scss\"],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [\n        NgIf,\n        AnnaDesignComponentsLibModule,\n        NgxSkeletonLoaderModule,\n        FormsModule,\n        NgClass,\n        AnnaCoreModule,\n        MassCopyStatusPopupComponent,\n        NgbTooltip,\n    ],\n})\nexport class NotificationPageComponent implements OnInit, OnChanges {\n    @Input() persistingFilters: any;\n    @Input() orderContainerTabName: \"TV Revenue\" | \"TV\" = \"TV Revenue\";\n    @Input() loading: boolean = true;\n    @Input() notificationDataCloned: Notification[] = [];\n\n    @Input() selectedPeriodData: PeriodSelectionPopUp;\n    @Input() disablePeriodSelection: boolean;\n    @Input() enabledPeriod: { statDate: string; endDate: string };\n    @Input() startDateToFetchNotifications: string;\n    @Input() endDateToFetchNotifications: string;\n    @Input() adcContainerQueryParams: any;\n    @Input() allowPushNotifications: boolean = false;\n    @Input() permissionStatus: NotificationPermission;\n\n    @Output() markNotificationAsRead = new EventEmitter();\n    @Output() periodSelectionChanged = new EventEmitter();\n    @ViewChild(\"massCopyStatusModal\") private massCopyStatusModal: MassCopyStatusPopupComponent;\n    @Output() requestNotification = new EventEmitter();\n    @Output() handleRatesNavigation = new EventEmitter();\n\n    notificationDataForTable: Notification[] = [];\n    gtGeneralConfig: IGtGeneralConfig;\n    gtDimension = {\n        rowHeight: 60,\n        headerHeight: 40,\n        dataOnTopHeight: 264,\n        marginFromBottom: 21,\n    };\n    transactionId: string = null;\n    selectedStation: string;\n\n    tableHeaders: IGtTableHeader[] = [];\n    notificationCount: number = 0;\n    searchItem: string;\n    searchSubject = new Subject<string>();\n    showNoData: boolean = true;\n    resetFilterDisabled = true;\n    disableClearAllBtn: boolean = true;\n    showMarkAll: boolean = true;\n    isToggleDisabled: boolean = true;\n    showUnreadBoolean: boolean = false;\n    today = dayjs().format(\"MM/DD/YYYY\");\n    genericTableClass: string = \"notification-table\";\n\n    periodModalTitle: string = \"Edit Period\";\n    periodModalMessage: string = \"Select period for which you want to view the notifications for.\";\n    maximumRowsWhichCanBeRenderedWithoutScroll = 0;\n    @ViewChild(AnnaNonEditableGenericTableComponent) nonEditableGTComponent: AnnaNonEditableGenericTableComponent;\n\n    constructor(\n        private gtHelperService: AnnaGtHelperService,\n        private annaFilterSearchedPipe: AnnaFilterSearchedTextPipe,\n        private annaFilterService: AnnaFilterService,\n        public annaSortService: AnnaSortService,\n        private route: ActivatedRoute,\n        private router: Router,\n        private persistingFilterService: AnnaPersistingFilterService,\n        private notificationService: NotificationsService,\n        private toastr: ToastrService,\n        private cdr: ChangeDetectorRef,\n        private breadcrumbService: BreadcrumbsService,\n        private annaGlobalConfig: AnnaGlobalConfigService,\n    ) {\n        this.searchSubject.pipe(debounceTime(100)).subscribe((val: string) => {\n            this.searchForValues(val);\n            this.cdr.markForCheck();\n        });\n    }\n\n    ngOnInit(): void {\n        this.loading = true;\n        // this.detectQueryParamChanges();\n        this.setTableConfigData();\n        this.setSelectedFilters();\n        this.notificationService.notificationMarkedreadResponseSubject.subscribe((response) => {\n            if (Array.isArray(response)) {\n                this.notificationDataCloned.forEach((item) => {\n                    if (response.includes(item.id)) {\n                        item.isRead = true;\n                        item.gtClass = \"read\";\n                        item.readActionKey[0].iconClass = null;\n                    }\n                });\n                this.notificationDataForTable.forEach((item) => {\n                    if (response.includes(item.id)) {\n                        item.isRead = true;\n                        item.gtClass = \"read\";\n                        item.readActionKey[0].iconClass = null;\n                    }\n                });\n                this.setFilters();\n                this.updateCount();\n                this.notificationDataForTable = cloneDeep(\n                    this.annaFilterService.filterData(this.notificationDataCloned, \"\"),\n                );\n                if (this.showUnreadBoolean) {\n                    this.notificationDataForTable = this.notificationDataForTable.filter(\n                        (n: Notification) => !n.isRead,\n                    );\n                }\n            }\n            this.cdr.markForCheck();\n        });\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        if (changes.persistingFilters) {\n            this.setSelectedFilters();\n        }\n        if (changes.notificationDataCloned) {\n            const notificationDataForTable = cloneDeep(this.notificationDataCloned);\n            if (\n                this.persistingFilters &&\n                (this.persistingFilters.appliedFilters?.length > 0 || this.persistingFilters.sortState)\n            ) {\n                this.notificationDataForTable = this.annaFilterService.filterData(notificationDataForTable, \"\");\n                this.annaFilterService.updateStateOfAllTheKeys(this.annaSortService.columnSortState);\n                this.disableClearAllBtn = this.gtHelperService.enableOrDisableClearAllBtn();\n            } else {\n                this.notificationDataForTable = cloneDeep(notificationDataForTable);\n            }\n            this.showNoData = this.notificationDataForTable.length === 0;\n            this.updateCount();\n        }\n    }\n\n    setSelectedFilters() {\n        if (this.isPersistingFilterPresent()) {\n            this.initPersistedFilters();\n        } else {\n            this.gtHelperService.initFilters();\n        }\n    }\n\n    setTableConfigData() {\n        this.tableHeaders = this.notificationService.getTableHeaders();\n        this.gtGeneralConfig = { ...this.annaGlobalConfig.defaultGtGeneralConfig };\n        this.gtGeneralConfig.tableContainerName = \"notification-table-container\";\n        this.gtGeneralConfig.component = \"NOTIFICATIONS\";\n    }\n\n    isPersistingFilterPresent() {\n        return this.persistingFilters && this.persistingFilters.appliedFilters?.length > 0;\n    }\n\n    setFilters() {\n        const filteredNotification = this.gtHelperService.setDataAsPerPersistingFilter(\n            this.isPersistingFilterPresent(),\n            this.notificationDataForTable,\n            this.persistingFilters,\n        );\n        this.notificationDataForTable = cloneDeep(filteredNotification);\n        this.disableClearAllBtn = this.gtHelperService.enableOrDisableClearAllBtn();\n    }\n\n    initPersistedFilters() {\n        this.annaFilterService.appliedFiltersArray = cloneDeep(this.persistingFilters.appliedFilters);\n        const tooltipSelectedMap = new Map(JSON.parse(this.persistingFilters.selectedFilterData));\n        if (tooltipSelectedMap.has(\"date\")) {\n            const dateObj: { fromDate: string; toDate: string } | any = tooltipSelectedMap.get(\"date\");\n            const dateObjectWithMomentValues = {\n                fromDate: dayjs(dateObj.fromDate),\n                toDate: dayjs(dateObj.toDate),\n            };\n            tooltipSelectedMap.delete(\"date\");\n            tooltipSelectedMap.set(\"date\", dateObjectWithMomentValues);\n        }\n        this.annaFilterService.tooltipSelectedMap = cloneDeep(tooltipSelectedMap);\n        this.annaSortService.columnSortState = this.persistingFilters?.sortState\n            ? new Map(JSON.parse(this.persistingFilters.sortState))\n            : new Map();\n    }\n\n    showUnread() {\n        this.showUnreadBoolean = !this.showUnreadBoolean;\n        this.notificationDataForTable = cloneDeep(this.notificationDataCloned);\n        if (this.showUnreadBoolean) {\n            this.notificationDataForTable = this.notificationDataForTable.filter((n: Notification) => !n.isRead);\n        } else {\n            this.notificationDataForTable = cloneDeep(this.notificationDataCloned);\n            // this.notificationService.notificationResponseSubject.next(\n            //   this.notificationDataCloned\n            // );\n            if (this.isPersistingFilterPresent()) this.setFilters();\n        }\n    }\n\n    updateCount() {\n        this.notificationCount = this.notificationDataForTable.filter((n) => n.isRead === false).length;\n        if (this.notificationCount === 0) {\n            this.showUnreadBoolean = false;\n        }\n    }\n\n    filterAppliedToTable(filteredData: Notification[]) {\n        this.notificationDataForTable = cloneDeep(filteredData);\n        this.disableClearAllBtn = this.gtHelperService.enableOrDisableClearAllBtn();\n        this.updateFiltersInURL();\n        if (this.showUnreadBoolean) {\n            this.notificationDataForTable = this.notificationDataForTable.filter((notif) => !notif.isRead);\n        }\n    }\n\n    sortingAppliedToTable(sortedData: Notification[]) {\n        this.notificationDataForTable = cloneDeep(sortedData);\n        this.disableClearAllBtn = this.gtHelperService.enableOrDisableClearAllBtn();\n        this.updateFiltersInURL();\n    }\n\n    markAllAsRead() {\n        const notificationIds: string[] = this.notificationDataForTable\n            .filter((notification) => !notification.isRead)\n            .map((notification) => notification.id);\n        this.markNotificationAsRead.emit(notificationIds);\n        this.notificationDataForTable = cloneDeep(this.annaFilterService.filterData(this.notificationDataCloned, \"\"));\n    }\n\n    markAsRead(rowData: any) {\n        if (\n            !this.notificationDataForTable[\n                this.notificationDataForTable.findIndex((notif) => notif.id === rowData.data.id)\n            ].isRead\n        )\n            this.markNotificationAsRead.emit([rowData.data.id]);\n    }\n\n    changeClassOnHover(rowData: any) {\n        this.notificationDataForTable.forEach((ele) => {\n            if (ele.id === rowData.rowData.id) {\n                ele.readActionKey[0].iconClass = \"mdi mdi-check\";\n            }\n        });\n    }\n\n    changeClassOnHover2(rowData: any) {\n        this.notificationDataForTable.forEach((ele) => {\n            if (ele.id === rowData.rowData.id) {\n                ele.readActionKey[0].iconClass = \"mdi mdi-checkbox-blank-circle\";\n            }\n        });\n    }\n\n    clearAllFilter() {\n        this.nonEditableGTComponent?.setScrollToInitialPosition();\n        this.notificationDataForTable = cloneDeep(this.notificationDataCloned);\n        this.gtHelperService.initTableFilters(this.notificationDataCloned);\n        this.disableClearAllBtn = this.gtHelperService.enableOrDisableClearAllBtn();\n        this.updateFiltersInURL();\n        if (this.showUnreadBoolean) {\n            this.notificationDataForTable = this.notificationDataForTable.filter((notif) => !notif.isRead);\n        }\n    }\n\n    filterNotifications(typedString: string) {\n        this.searchSubject.next(typedString);\n    }\n\n    searchForValues(typedString: string) {\n        if (typedString) {\n            const keysToSearch = [\"message\"];\n            this.notificationDataForTable = this.annaFilterSearchedPipe.transform(\n                this.annaFilterService.filterData(this.notificationDataCloned, \"\"),\n                typedString,\n                keysToSearch,\n            );\n        } else {\n            this.notificationDataForTable =\n                this.annaFilterService.appliedFiltersArray.length > 0\n                    ? this.annaFilterService.filterData(this.notificationDataCloned, \"\")\n                    : cloneDeep(this.notificationDataCloned);\n        }\n        this.updateCount();\n        this.markForChangeDetection(this.notificationDataForTable);\n    }\n\n    markForChangeDetection(tableData: Notification[]) {\n        this.notificationDataForTable = cloneDeep(tableData);\n        this.showNoData = tableData.length === 0;\n        this.resetFilterDisabled = this.annaFilterService.appliedFiltersArray.length === 0;\n    }\n\n    errorHandler() {\n        this.loading = false;\n        this.notificationDataForTable = [];\n        this.notificationDataCloned = [];\n        this.toastr.error(Constants.apiFailErrorMessage);\n    }\n\n    updateFiltersInURL() {\n        const latestQueryParams = this.prepareQueryParamsOnFilter();\n        this.notificationService.filtersAppliedRouteChange = true;\n\n        if (Object.keys(latestQueryParams).length > 0) {\n            const hashedQueryParams = this.persistingFilterService.storeKeyValueInLocalStorage(latestQueryParams);\n            this.router.navigate([], {\n                queryParams: { filters: hashedQueryParams },\n                relativeTo: this.route.parent,\n                queryParamsHandling: \"merge\",\n            });\n        } else {\n            this.router.navigate([], {\n                relativeTo: this.route.parent,\n            });\n        }\n    }\n\n    prepareQueryParamsOnFilter() {\n        const query: any = {};\n\n        if (this.annaFilterService.appliedFiltersArray.length > 0) {\n            query.appliedFilters = this.annaFilterService.appliedFiltersArray;\n            query.selectedFilterData = JSON.stringify(Array.from(this.annaFilterService.tooltipSelectedMap));\n        }\n        if (this.gtHelperService.isSortingAppliedToTable()) {\n            query.sortState = JSON.stringify(Array.from(this.annaSortService.columnSortState));\n        }\n\n        return query;\n    }\n\n    buttonOrViewLinkClicked(event: { event: any; rowData: Notification } | any) {\n        const { classList } = event.event.target;\n        if (classList.contains(\"view-link\")) {\n            this.navigateToRespectivePage(classList, event.rowData);\n        }\n        if (!event.rowData.isRead && (classList.contains(\"download-button\") || classList.contains(\"view-link\")))\n            this.markNotificationAsRead.emit([event.rowData.id]);\n    }\n\n    navigateToRespectivePage(classList: DOMTokenList, rowData: Notification) {\n        const clickedItem = rowData.clickableItems.filter((x: ClickableLink) => classList.value.includes(x.pageUrl))[0];\n        if (!clickedItem) return;\n\n        const url = clickedItem.pageUrl;\n        const filters: any = {};\n        if (clickedItem.label === \"View status\") {\n            this.transactionId = clickedItem.additionalDataForLink.transactionId;\n            this.selectedStation = rowData.station;\n            this.massCopyStatusModal.openModal();\n            return;\n        }\n        if (url.includes(\"business-rules/advertiser\")) {\n            this.breadcrumbService.updateBreadcrumbs(clickedItem.additionalDataForLink.advertiserName, null, true);\n            filters.advertiserId = clickedItem.additionalDataForLink.advertiserId;\n            filters.stationId = clickedItem.additionalDataForLink.stationId;\n            filters.breadcrumbs = this.persistingFilterService.storeKeyValueInLocalStorage(\n                this.breadcrumbService.getBreadcrumbList(),\n                false,\n            );\n            this.resetRouteReuseStrategy();\n            this.router.navigate([url], { queryParams: filters });\n        } else if (url.includes(\"order-business-rules\")) {\n            this.resetRouteReuseStrategy();\n            this.router.navigate(\n                [\n                    \"orders/order-container\",\n                    clickedItem.additionalDataForLink.orderId,\n                    clickedItem.additionalDataForLink.stationId,\n                    \"order-business-rules\",\n                ],\n                {\n                    queryParams: {\n                        parentTab: this.orderContainerTabName,\n                    },\n                },\n            );\n        } else if (url.includes(\"users-awaiting-action\")) {\n            const email = clickedItem.additionalDataForLink.emailId;\n            this.annaFilterService.appliedFiltersArray.push(\"email\");\n            this.annaFilterService.tooltipSelectedMap.set(\"email\", [email]);\n            filters.appliedFilters = this.annaFilterService.appliedFiltersArray;\n            filters.selectedFilterData = JSON.stringify(Array.from(this.annaFilterService.tooltipSelectedMap));\n            const hashedBreadcrumbsQueryParams = this.persistingFilterService.storeKeyValueInLocalStorage(\n                this.breadcrumbService.getBreadcrumbList(),\n                false,\n            );\n            const hashedFilterQueryParams = this.persistingFilterService.storeKeyValueInLocalStorage(filters);\n            let hashedStationIdFilter;\n            if (clickedItem.additionalDataForLink.stationId) {\n                hashedStationIdFilter = this.persistingFilterService.storeKeyValueInLocalStorage(\n                    clickedItem.additionalDataForLink.stationId,\n                );\n            }\n            this.router.navigate([url], {\n                queryParams: {\n                    filters: hashedFilterQueryParams,\n                    breadcrumbs: hashedBreadcrumbsQueryParams,\n                    stationId: hashedStationIdFilter,\n                },\n            });\n        } else if (url.includes(\"line-details\")) {\n            const hashedBreadcrumbsQueryParams = this.persistingFilterService.storeKeyValueInLocalStorage(\n                this.breadcrumbService.getBreadcrumbList(),\n                false,\n            );\n\n            this.resetRouteReuseStrategy();\n            this.router.navigate(\n                [\n                    \"orders/order-container\",\n                    clickedItem.additionalDataForLink.orderId,\n                    clickedItem.additionalDataForLink.stationId,\n                    \"line-details\",\n                ],\n                {\n                    queryParams: {\n                        parentTab: this.orderContainerTabName,\n                        breadcrumbs: hashedBreadcrumbsQueryParams,\n                    },\n                },\n            );\n        } else if (url.includes(\"orders/ec-orders\")) {\n            this.annaFilterService.appliedFiltersArray.push(\"displayStatus\");\n            this.annaFilterService.tooltipSelectedMap.set(\"displayStatus\", [\"Buyer Revised\", \"New\"]);\n            filters.stationId = +clickedItem.additionalDataForLink.stationId;\n            filters.appliedFilters = this.annaFilterService.appliedFiltersArray;\n            filters.selectedFilterData = JSON.stringify(Array.from(this.annaFilterService.tooltipSelectedMap));\n            const hashedBreadcrumbsQueryParams = this.persistingFilterService.storeKeyValueInLocalStorage(\n                this.breadcrumbService.getBreadcrumbList(),\n                false,\n            );\n            const hashedFilterQueryParams = this.persistingFilterService.storeKeyValueInLocalStorage(filters);\n            this.router.navigate([url], {\n                queryParams: {\n                    filters: hashedFilterQueryParams,\n                    breadcrumbs: hashedBreadcrumbsQueryParams,\n                },\n            });\n        } else if (url === \"DYNAMIC_RATES_PUBLISH_POPUP\") {\n            const targetUrl = \"yield-management-center/dynamic-rates\";\n            const additional = clickedItem.additionalDataForLink;\n            this.breadcrumbService.updateBreadcrumbs(\"Yield Management Center (YMC) (Dynamic Rates)\", targetUrl);\n            const hasAdditionalData = additional?.startDate && additional?.endDate;\n            this.handleRatesNavigation.emit({\n                userPageUrl: targetUrl,\n                openReviewApprove: \"true\",\n                fromNotification: hasAdditionalData ? \"true\" : \"false\",\n                stationName: rowData.station,\n                periodInformation: additional?.periodInformation,\n                periodType: additional?.periodType,\n                startDate: additional?.startDate,\n                shouldRecomputeDynamicRates: \"true\",\n                endDate: additional?.endDate,\n                disableStationDropdown: \"true\",\n            });\n        } else if (url.includes(\"section-rate-card\")) {\n            const additional = clickedItem.additionalDataForLink;\n            this.breadcrumbService.updateBreadcrumbs(\n                \"Yield Management Center (YMC) (Section Rates)\",\n                \"yield-management-center/section-rate-card\",\n            );\n            this.handleRatesNavigation.emit({\n                userPageUrl: url,\n                openSectionRatesPopup: \"true\",\n                stationName: rowData.station,\n                periodInformation: additional?.periodInformation,\n                periodType: additional?.periodType,\n                startDate: additional?.startDate,\n                endDate: additional?.endDate,\n            });\n        } else if (url.includes(\"yield-management-center/guidance-rates\")) {\n            this.breadcrumbService.updateBreadcrumbs(\n                \"Yield Management Center (YMC) (Guidance Rates)\",\n                \"yield-management-center/guidance-rates\",\n            );\n            this.handleRatesNavigation.emit(\n                buildGuidanceRatesNotificationNavigationParams(\n                    url,\n                    rowData.station,\n                    clickedItem.additionalDataForLink,\n                    clickedItem.label,\n                ),\n            );\n        } else if (url.includes(\"yield-management-center/dynamic-rates\")) {\n            const additional = clickedItem.additionalDataForLink;\n            this.breadcrumbService.updateBreadcrumbs(\n                \"Yield Management Center (YMC) (Dynamic Rates)\",\n                \"yield-management-center/dynamic-rates\",\n            );\n            const hasAdditionalData = additional?.startDate && additional?.endDate;\n            this.handleRatesNavigation.emit({\n                userPageUrl: url,\n                openReviewApprove: \"true\",\n                fromNotification: hasAdditionalData ? \"true\" : \"false\",\n                stationName: rowData.station,\n                shouldRecomputeDynamicRates: \"true\",\n                periodInformation: additional?.periodInformation,\n                periodType: additional?.periodType,\n                startDate: additional?.startDate,\n                endDate: additional?.endDate,\n\n                disableStationDropdown: \"true\",\n            });\n        } else {\n            this.router.navigate([url], { queryParams: { filters: clickedItem.queryParams } });\n        }\n    }\n\n    resetRouteReuseStrategy() {\n        const prev = this.router.routeReuseStrategy.shouldReuseRoute;\n        const prevOSN = this.router.onSameUrlNavigation;\n        // eslint-disable-next-line func-names\n        this.router.routeReuseStrategy.shouldReuseRoute = function () {\n            return false;\n        };\n        setTimeout(() => {\n            this.router.routeReuseStrategy.shouldReuseRoute = prev;\n            this.router.onSameUrlNavigation = prevOSN;\n        }, 0);\n    }\n\n    applyPeriodSelection(event: { isEntireFlightPeriod: boolean; startDate: string; endDate: string }) {\n        this.searchItem = \"\";\n        const startDateToFetchNotifications = dayjs(event.startDate).format(\"YYYY-MM-DD\");\n        const endDateToFetchNotifications = dayjs(event.endDate).format(\"YYYY-MM-DD\");\n        if (\n            startDateToFetchNotifications !== this.startDateToFetchNotifications &&\n            endDateToFetchNotifications !== this.endDateToFetchNotifications\n        ) {\n            this.startDateToFetchNotifications = startDateToFetchNotifications;\n            this.endDateToFetchNotifications = endDateToFetchNotifications;\n            this.clearAllFilter();\n            this.loading = true;\n            this.periodSelectionChanged.emit(event);\n        }\n    }\n\n    openRequestPermissionPopup() {\n        this.requestNotification.emit();\n    }\n}\n","<div class=\"main-content\">\n    <div class=\"searchbar-and-toggle\">\n        <section class=\"period-section\">\n            <anna-design-order-container-filter-modal\n                *ngIf=\"enabledPeriod\"\n                [title]=\"periodModalTitle\"\n                [showEntireFilghtPeriodSelection]=\"false\"\n                [selectedData]=\"selectedPeriodData\"\n                [disablePeriodSelection]=\"loading || disablePeriodSelection\"\n                [parentQueryParams]=\"adcContainerQueryParams\"\n                [flightPeriod]=\"enabledPeriod\"\n                [message]=\"periodModalMessage\"\n                (apply)=\"applyPeriodSelection($event)\"\n            >\n            </anna-design-order-container-filter-modal>\n            <ngx-skeleton-loader\n                *ngIf=\"!enabledPeriod\"\n                count=\"1\"\n                [theme]=\"{ width: '280px', height: '30px', 'margin-bottom': '0px', position: 'relative', top: '6px' }\"\n            >\n            </ngx-skeleton-loader>\n        </section>\n\n        <section>\n            <input\n                type=\"text\"\n                [(ngModel)]=\"searchItem\"\n                (ngModelChange)=\"filterNotifications($event)\"\n                placeholder=\"Search all notifications\"\n                [disabled]=\"loading\"\n            />\n\n            <i class=\"mi mdi-search searchIcon\"></i>\n        </section>\n\n        <section class=\"toggle-class\">\n            <section *ngIf=\"allowPushNotifications\">\n                <a\n                    class=\"enable-notification-permission\"\n                    (click)=\"openRequestPermissionPopup()\"\n                    *ngIf=\"permissionStatus === 'default'\"\n                    >Click here to enable push notifications for ANNA\n                </a>\n                <i\n                    *ngIf=\"permissionStatus === 'default'\"\n                    class=\"mi mdi-info-outline\"\n                    ngbTooltip=\"The page needs to be refreshed to reflect the updated settings\"\n                ></i>\n                <p\n                    class=\"notification-permission\"\n                    *ngIf=\"permissionStatus !== 'default'\"\n                >\n                    <span *ngIf=\"permissionStatus === 'denied'\">Push notifications have been disabled for ANNA</span>\n                    <span *ngIf=\"permissionStatus === 'granted'\">Push notifications enabled for ANNA</span>\n                    <i\n                        class=\"mi mdi-info-outline\"\n                        tooltipClass=\"push-notification-info-tooltip\"\n                        ngbTooltip=\"Push notifications cannot be enabled/disabled directly on ANNA. To manage your preferences, please adjust the notification settings in your browser.\"\n                    ></i>\n                </p>\n            </section>\n\n            <div class=\"pipe\"></div>\n\n            <header>Show all unread</header>\n            <anna-design-toggle\n                [isDisabled]=\"notificationCount === 0 && showUnreadBoolean === false\"\n                [isToggled]=\"showUnreadBoolean\"\n                (toggle)=\"showUnread()\"\n            >\n            </anna-design-toggle>\n        </section>\n    </div>\n\n    <div class=\"clear-all-read-all\">\n        <a\n            (click)=\"markAllAsRead()\"\n            [ngClass]=\"notificationCount === 0 ? 'disable-link' : 'enable-link'\"\n        >\n            <i class=\"mdi mdi-check-all\"></i><u>Mark all as read</u></a\n        >\n\n        <button\n            class=\"clear-all-btn\"\n            *ngIf=\"!loading\"\n            (click)=\"clearAllFilter()\"\n            [disabled]=\"disableClearAllBtn\"\n        >\n            Reset all filters\n        </button>\n    </div>\n\n    <div>\n        <anna-core-non-editable-generic-table-lib\n            class=\"notification-table\"\n            [ngClass]=\"{ 'notification-data-no-data no-data-div': showNoData }\"\n            [showSkeletonLoading]=\"loading\"\n            [tableHeaders]=\"tableHeaders\"\n            [tableClass]=\"genericTableClass\"\n            [tableData]=\"notificationDataForTable\"\n            [clonedTableData]=\"notificationDataCloned\"\n            [gtGeneralConfig]=\"gtGeneralConfig\"\n            [gtDimension]=\"gtDimension\"\n            [setTableHeightWhenRowSizeIsFixed]=\"false\"\n            [maximumRowsWhichCanBeRenderedWithoutScroll]=\"maximumRowsWhichCanBeRenderedWithoutScroll\"\n            (filterAppliedToTable)=\"filterAppliedToTable($event)\"\n            (sortingAppliedToTable)=\"sortingAppliedToTable($event)\"\n            (gtTextActionClicked)=\"markAsRead($event)\"\n            (notificationIconHover)=\"changeClassOnHover($event)\"\n            (notificationIconHoverLeave)=\"changeClassOnHover2($event)\"\n            (gtInnerHTMLClicked)=\"buttonOrViewLinkClicked($event)\"\n        >\n        </anna-core-non-editable-generic-table-lib>\n    </div>\n\n    <p class=\"footer-message\">You are all caught up till {{ today }}</p>\n</div>\n<anna-feature-mass-copy-status-popup\n    #massCopyStatusModal\n    [transactionId]=\"transactionId\"\n    [stationName]=\"selectedStation\"\n>\n</anna-feature-mass-copy-status-popup>\n","import { InjectionToken } from \"@angular/core\";\nimport { Observable } from \"rxjs\";\n\nimport { SchedulePostingReportPayload } from \"../../schedule-posting-report-popup/Model/schedulePostingReportPopup.model\";\nimport { IMarkForCreditOrMgRequest } from \"../models/spot-details.model\";\n\n/** Token to inject the acl service */\nexport const SPOT_DETAILS_PAGE_SERVICE_TOKEN: InjectionToken<ISpotDetailsBackendService> =\n    new InjectionToken<ISpotDetailsBackendService>(\"SpotDetailsBackendService token\");\n\nexport interface ISpotDetailsBackendService {\n    markForCredit(requestPayload: IMarkForCreditOrMgRequest): Observable<any>;\n    markForMakegood(requestPayload: IMarkForCreditOrMgRequest): Observable<any>;\n    undoCreditedSpots(requestPayload: IMarkForCreditOrMgRequest): Observable<any>;\n    undoMakegoodSpots(requestPayload: IMarkForCreditOrMgRequest): Observable<any>;\n    getPostingReportEmailSchedule(stationId: number, orderId: string): Observable<any>;\n    setOrUpdatePostingReportEmailSchedule(payload: SchedulePostingReportPayload): Observable<any>;\n    deletePostingReportEmailSchedule(\n        stationId: number,\n        orderId: string,\n        postingReportScheduleId: string,\n        userId: number,\n    ): Observable<any>;\n}\n","export class EasyFilterConstants {\n    static readonly Booked = \"BOOKED\";\n    static readonly UnSelectedBooked = \"UnSelectedBooked\";\n    //  static readonly BookedToDate = 'BOOKED TO DATE';\n    static readonly Removed = \"REMOVED\";\n    static readonly Dropped = \"DROPPED\";\n    static readonly LateRuns = \"LATE RUNS\";\n    static readonly ToBeScheduled = \"TO BE SCHEDULED\";\n    static readonly Late = \"LATE\";\n    static readonly Scheduled = \"SCHEDULED\";\n    static readonly Aired = \"AIRED\";\n    static readonly Posted = \"POSTED\";\n    static readonly LURViolations = \"POLITICAL RATE VIOLATIONS\";\n    static readonly CandViolation = \"CANDIDATE TO CANDIDATE VIOLATIONS\";\n    static readonly GroupedPEAndMG = \"GROUPED PEs & MGs\";\n    static readonly ViolatingSpot = \"VIOLATOR SPOTS\";\n    static readonly ViolatedSpot = \"VIOLATED SPOTS\";\n}\n\nexport class StatusConstants {\n    static readonly Placed = \"Placed\";\n    static readonly Displaced = \"Displaced\";\n    static readonly Late = \"Late\";\n    static readonly Preempted = \"Preempted\";\n    static readonly PreemptedBonus = \"Preempted - Bonus\";\n    static readonly PreemptedDR = \"Preempted - DR\";\n    static readonly PreemptedPaidProgram = \"Preempted - Paid program\";\n    static readonly PreemptedStationUtilized = \"Preempted - Station utilized\";\n    static readonly PreemptedNoCharge = \"Preempted - No-charge\";\n    static readonly NonSpot = \"Non-spot\";\n    static readonly Aired = \"Aired\";\n    static readonly Removed = \"Removed\";\n    static readonly PreemptedAndMadeGood = \"Preempted & made good(PE)\";\n    static readonly Credited = \"Credited\";\n    static readonly Unresolved = \"Unresolved\";\n    static readonly MarkedForCredit = \"Marked For Credit\";\n    static readonly MarkedForMG = \"Marked For MG\";\n    static readonly BuyerCreditRequested = \"Buyer credit requested\";\n}\n\nexport class TableColumnNameConstants {\n    static readonly SellerLine = \"SELLER LINE #\";\n    static readonly BuyerLine = \"BUY LINE #\";\n    static readonly Spot = \"SPOT#\";\n    static readonly Origin = \"ORIGIN\";\n    static readonly SpotStatus = \"SPOT STATUS\";\n    static readonly InventoryCode = \"INVENTORY CODE\";\n    static readonly BuyerProgramName = \"BUYER PROGRAM\";\n    static readonly SellerProgramName = \"SELLER PROGRAM\";\n    static readonly SellerProgInvCodeName = \"SELLER PROGRAM (INVENTORY CODE)\";\n    static readonly Length = \"LEN\";\n    static readonly RevenueClass = \"REVENUE CLASS\";\n    static readonly BookedRate = \"BOOKED RATE\";\n    static readonly AUR = \"BOOKED AVG. RATE\";\n    static readonly BookedRating = \"BOOKED RTG\";\n    static readonly AURating = \"Avg. RTG\";\n    static readonly PostedRating = \"POSTED RTG\";\n    static readonly NormalizedBookedRating = \"NORMALIZED BOOKED RTG\";\n    static readonly NormalizedPostedRating = \"NORMALIZED POSTED RTG\";\n    static readonly NormalizedBookedIMPS = \"NORMALIZED BOOKED IMP('000)\";\n    static readonly NormalizedPostedIMPS = \"NORMALIZED POSTED IMP('000)\";\n    static readonly Daypart = \"DP\";\n    static readonly StartAndEndTime = \"START & END TIME\";\n    static readonly ScheduledWeek = \"Sch. WEEK\";\n    static readonly ScheduledDay = \"Sch. DAY\";\n    static readonly AirStatus = \"AIR STATUS\";\n    static readonly AiredDateAndTime = \"AIR DATE & TIME\";\n    static readonly AiredProgram = \"AIRED PROGRAM\";\n    static readonly SeeMG = \"SEE MG\";\n    static readonly MGFor = \"MG FOR\";\n    static readonly AdId = \"AD-ID\";\n    static readonly BookedIMPS = \"BOOKED IMP('000)\";\n    static readonly PostedIMPS = \"POSTED IMP('000)\";\n    static readonly AUImpression = \"Avg. IMP('000)\";\n    static readonly ProjectedRating = \"PROJECTED RTG\";\n    static readonly ProjectedImps = \"PROJECTED IMP('000)\";\n}\n\nexport class CustomizableColumnNameConstants {\n    static readonly Line = \"Seller Line\";\n    static readonly Spot = \"Spot\";\n    static readonly Origin = \"Origin\";\n    static readonly Status = \"Status\";\n    static readonly AirStatus = \"Aired Status\";\n    static readonly SeeMG = \"See MG\";\n    static readonly MGFor = \"MG For\";\n    static readonly Length = \"Len\";\n    static readonly ISCICode = \"ISCI Code\";\n    static readonly Daypart = \"Daypart\";\n    static readonly InventoryCode = \"Inventory Code\";\n    static readonly Program = \"Program\";\n    static readonly ScheduledWeek = \"Scheduled Week\";\n    static readonly ScheduledDateAndTime = \"Scheduled Date & Time\";\n    static readonly AiredDateAndTime = \"Air Date & Time\";\n    static readonly RevenueClass = \"Revenue Class\";\n    static readonly StartAndEndTime = \"Start & End Time\";\n    static readonly ScheduledDay = \"Scheduled Day\";\n    static readonly Rate = \"Rate\";\n    static readonly RatingOrdered = \"RTG Ordered\";\n    static readonly RatingPosted = \"RTG Posted\";\n    static readonly ImpressionsOrdered = \"IMP('000) Ordered\";\n    static readonly ImpressionsPosted = \"IMP('000) Posted\";\n    static readonly AdId = \"AD-ID\";\n    static readonly BuyerLine = \"Buy Line\";\n    static readonly BuyerProgramName = \"Buyer Program Name\";\n    static readonly AUR = \" Avg Rate\";\n    static readonly AURating = \"Avg RTG\";\n    static readonly AUImpression = \"Avg IMP'000)'\";\n}\n","export enum ESTIMATEPRIORITIES {\n    AverageRTG = \"AverageRTG\",\n    BookedRTG = \"BookedRTG\",\n    RollingEstimate = \"RollingEstimate\",\n    StationEstimate = \"StationEstimate\",\n}\n","import { Injectable } from \"@angular/core\";\nimport { OrderMetrics } from \"@annalib/anna-feature-shared-lib\";\nimport dayjs from \"dayjs\";\n\nimport { StatusConstants } from \"../constants/spot-details.constants\";\nimport { ESTIMATEPRIORITIES } from \"../models/generic-spot-details.model\";\n\n@Injectable({\n    providedIn: \"root\",\n})\nexport class GenericSpotDetailsService {\n    static backDate: string;\n\n    static isBooked(status: string): boolean {\n        return [\n            StatusConstants.Placed,\n            StatusConstants.Displaced,\n            StatusConstants.Late,\n            StatusConstants.Preempted,\n            StatusConstants.PreemptedBonus,\n            StatusConstants.PreemptedDR,\n            StatusConstants.PreemptedPaidProgram,\n            StatusConstants.PreemptedStationUtilized,\n            StatusConstants.PreemptedNoCharge,\n            StatusConstants.NonSpot,\n            StatusConstants.Aired,\n        ].includes(status);\n    }\n\n    static isScheduled(airDate: string, status: string): boolean {\n        const today = dayjs(GenericSpotDetailsService.backDate, \"YYYY-MM-DD\").format(\"MM/DD/YYYY\");\n        return [StatusConstants.Placed].includes(status) && dayjs(airDate, \"MM/DD/YYYY\").isSameOrAfter(today);\n    }\n\n    static isAired(isAired: boolean): boolean {\n        return isAired;\n    }\n    static isLateRunSpot(isLateRunSpot: boolean): boolean {\n        return isLateRunSpot;\n    }\n\n    static isPosted(isPosted: boolean): boolean {\n        return isPosted;\n    }\n\n    static isDropped(status: string): boolean {\n        return [StatusConstants.Credited, StatusConstants.Unresolved, StatusConstants.Removed].includes(status);\n    }\n\n    static isToBeScheduled(status: string): boolean {\n        return [\n            StatusConstants.Preempted,\n            StatusConstants.PreemptedBonus,\n            StatusConstants.PreemptedDR,\n            StatusConstants.PreemptedPaidProgram,\n            StatusConstants.PreemptedStationUtilized,\n            StatusConstants.PreemptedNoCharge,\n            StatusConstants.Displaced,\n        ].includes(status);\n    }\n\n    public static returnEstimateValueBasedOnKey(data: any, key: string, metric: OrderMetrics): string {\n        switch (key) {\n            case ESTIMATEPRIORITIES.AverageRTG:\n                return metric === OrderMetrics.rating ? data.WeeklyAURatings : data.WeeklyAUImpressions;\n\n            case ESTIMATEPRIORITIES.BookedRTG:\n                return metric === OrderMetrics.rating ? data.BookedRating : data.BookedImpression;\n\n            case ESTIMATEPRIORITIES.RollingEstimate:\n                return metric === OrderMetrics.rating ? data.RollingEstimateRating : data.RollingEstimateImpression;\n\n            case ESTIMATEPRIORITIES.StationEstimate:\n                return metric === OrderMetrics.rating ? data.StationEstimateRating : data.StationEstimateImpression;\n\n            default:\n                return null;\n        }\n    }\n\n    public static returnEstimatePrioritiesColumnVal(\n        estimatePriority: string[],\n        data: any,\n        metric: OrderMetrics,\n    ): string[] {\n        const firstAndSecondEstimatePriorities = `${this.returnEstimateValueBasedOnKey(data, estimatePriority[0], metric)} | ${this.returnEstimateValueBasedOnKey(data, estimatePriority[1], metric)}`;\n        let thirdAndFourthEstimatePriorities = `${this.returnEstimateValueBasedOnKey(data, estimatePriority[2], metric)}`;\n        if (estimatePriority?.length === 4) {\n            thirdAndFourthEstimatePriorities += ` | ${this.returnEstimateValueBasedOnKey(data, estimatePriority[3], metric)}`;\n        }\n        return [firstAndSecondEstimatePriorities, thirdAndFourthEstimatePriorities];\n    }\n\n\n}","import { Injectable } from \"@angular/core\";\nimport { IGtTableHeader } from \"@annalib/anna-core\";\nimport { OrderMetrics } from \"@annalib/anna-feature-shared-lib\";\nimport dayjs from \"dayjs\";\nimport isSameOrAfter from \"dayjs/plugin/isSameOrAfter\";\nimport isSameOrBefore from \"dayjs/plugin/isSameOrBefore\";\nimport { BehaviorSubject, Subject } from \"rxjs\";\n\nimport {\n    CustomizableColumnNameConstants,\n    EasyFilterConstants,\n    TableColumnNameConstants,\n} from \"../constants/spot-details.constants\";\n// eslint-disable-next-line import/no-cycle\nimport {\n    ICustomizableColumnsForSpotDetails,\n    SPOTDETAILVIEWS,\n    SpotTableData,\n} from \"../models/spot-details.model\";\nimport { GenericSpotDetailsService } from \"./generic-spot-details.service\";\n\n@Injectable({\n    providedIn: \"root\",\n})\nexport class SpotDetailsService {\n    filtersAppliedRouteChange: boolean;\n    easyFiltersInSpotDetails: Set<string>;\n    public disableEnableSpotReportDownloadBtnSubject = new BehaviorSubject<boolean>(true);\n    public SpotReportDownloadBtnClickedSubject = new Subject<\n        \"EMAILSPOTSREPORT\" | \"EMAILPOSTINGREPORT\" | \"SCHEDULEPOSTINGREPORT\"\n    >();\n    postedSpotPresentInSelectedPeriod: boolean;\n    isPostingReportEmailScheduled: boolean;\n\n    easyFilterNamesAndKeyNamesToUseMap: any = {\n        BOOKED: \"showIfBookedFilterSelected\",\n        //  'BOOKED TO DATE': 'showIfBookedToDateFilterSelected',\n        SCHEDULED: \"showIfScheduledFilterSelected\",\n        AIRED: \"showIfAiredFilterSelected\",\n        POSTED: \"showIfPostedFilterSelected\",\n        \"TO BE SCHEDULED\": \"showIfToBeScheduledFilterSelected\",\n        DROPPED: \"showIfDroppedFilterSelected\",\n        \"LATE RUNS\": \"showIfLateRunsSelected\",\n        \"VIOLATED SPOTS\": \"showIfViolatedFilterSelected\",\n        // 'GROUPED PEs & MGs': 'showIfBookedFilterSelected',\n        \"VIOLATOR SPOTS\": \"showIfViolatingFilterSelected\",\n    };\n    keyNamesToUseAndEasyFilterNamesMap: any = {\n        showIfBookedFilterSelected: \"BOOKED\",\n        //  showIfBookedToDateFilterSelected: 'BOOKED TO DATE',\n        showIfScheduledFilterSelected: \"SCHEDULED\",\n        showIfAiredFilterSelected: \"AIRED\",\n        showIfPostedFilterSelected: \"POSTED\",\n        showIfToBeScheduledFilterSelected: \"TO BE SCHEDULED\",\n        showIfDroppedFilterSelected: \"DROPPED\",\n        showIfLateRunsSelected: \"LATE RUNS\",\n        showIfViolatedFilterSelected: \"VIOLATED SPOTS\",\n        showIfViolatingFilterSelected: \"VIOLATOR SPOTS\",\n    };\n    easyFiltersKeysInSpotDetails: Set<string>;\n\n    constructor() {\n        dayjs.extend(isSameOrAfter);\n        dayjs.extend(isSameOrBefore);\n\n        const easyFiltersInSpotDetailsArr = [\n            EasyFilterConstants.Booked,\n            // EasyFilterConstants.BookedToDate,\n            // EasyFilterConstants.Removed,\n            // EasyFilterConstants.Late,\n            EasyFilterConstants.Scheduled,\n            EasyFilterConstants.Aired,\n            EasyFilterConstants.Posted,\n            EasyFilterConstants.Dropped,\n            EasyFilterConstants.LateRuns,\n            EasyFilterConstants.ToBeScheduled,\n            EasyFilterConstants.ViolatedSpot,\n            EasyFilterConstants.ViolatingSpot,\n            EasyFilterConstants.GroupedPEAndMG,\n        ];\n        const easyFiltersKeyNamesInSpotDetailsArr = [\n            \"showIfBookedFilterSelected\",\n            //   'showIfBookedToDateFilterSelected',\n            \"showIfScheduledFilterSelected\",\n            \"showIfAiredFilterSelected\",\n            \"showIfPostedFilterSelected\",\n            \"showIfToBeScheduledFilterSelected\",\n            \"showIfDroppedFilterSelected\",\n            \"showIfLateRunsSelected\",\n            \"showIfViolatedFilterSelected\",\n            \"showIfViolatingFilterSelected\",\n        ];\n        this.easyFiltersInSpotDetails = new Set(easyFiltersInSpotDetailsArr);\n        this.easyFiltersKeysInSpotDetails = new Set(easyFiltersKeyNamesInSpotDetailsArr);\n    }\n\n    getCustomizableColumnsListForSpotDetails(showAUR: boolean): ICustomizableColumnsForSpotDetails[] {\n        const AURColumns = showAUR\n            ? [\n                {\n                    name: CustomizableColumnNameConstants.AUR,\n                    objectKey: \"DisplayWeeklyAUR\",\n                    isFixed: false,\n                    isChecked: false,\n                },\n                {\n                    name: CustomizableColumnNameConstants.AURating,\n                    objectKey: \"WeeklyAURatingOrImpressions\",\n                    isFixed: false,\n                    isChecked: false,\n                },\n            ]\n            : [];\n\n        const columnsList: ICustomizableColumnsForSpotDetails[] = [\n            { name: CustomizableColumnNameConstants.Line, objectKey: \"LineNumber\", isFixed: true, isChecked: true },\n            { name: CustomizableColumnNameConstants.Spot, objectKey: \"SpotNumber\", isFixed: true, isChecked: true },\n            { name: CustomizableColumnNameConstants.Origin, objectKey: \"Origin\", isFixed: true, isChecked: true },\n            { name: CustomizableColumnNameConstants.Status, objectKey: \"Status\", isFixed: true, isChecked: true },\n            { name: CustomizableColumnNameConstants.AirStatus, objectKey: \"AirStatus\", isFixed: true, isChecked: true },\n            { name: CustomizableColumnNameConstants.Length, objectKey: \"Length\", isFixed: true, isChecked: true },\n            {\n                name: CustomizableColumnNameConstants.InventoryCode,\n                objectKey: \"InventoryCode\",\n                isFixed: true,\n                isChecked: true,\n            },\n            { name: CustomizableColumnNameConstants.Rate, objectKey: \"DisplayRate\", isFixed: true, isChecked: true },\n            {\n                name: CustomizableColumnNameConstants.RatingOrdered,\n                objectKey: \"OrderedRatingsOrImpressions\",\n                isFixed: true,\n                isChecked: true,\n            },\n            {\n                name: CustomizableColumnNameConstants.RatingPosted,\n                objectKey: \"PostedRatingsOrImpressions\",\n                isFixed: true,\n                isChecked: true,\n            },\n            {\n                name: CustomizableColumnNameConstants.AiredDateAndTime,\n                objectKey: \"AirDateAndTime\",\n                isFixed: true,\n                isChecked: true,\n            },\n            { name: CustomizableColumnNameConstants.SeeMG, objectKey: \"SeeMG\", isFixed: true, isChecked: true },\n            { name: CustomizableColumnNameConstants.MGFor, objectKey: \"MGFor\", isFixed: true, isChecked: true },\n            { name: CustomizableColumnNameConstants.AdId, objectKey: \"AdId\", isFixed: true, isChecked: true },\n            { name: CustomizableColumnNameConstants.Daypart, objectKey: \"Daypart\", isFixed: false, isChecked: false },\n            // {name: CustomizableColumnNameConstants.ISCICode, objectKey: \"IsciCode\", isFixed: false, isChecked: false},\n            { name: CustomizableColumnNameConstants.Program, objectKey: \"Program\", isFixed: false, isChecked: false },\n            {\n                name: CustomizableColumnNameConstants.ScheduledWeek,\n                objectKey: \"ScheduleFlightWeek\",\n                isFixed: false,\n                isChecked: false,\n            },\n            {\n                name: CustomizableColumnNameConstants.RevenueClass,\n                objectKey: \"RevenueClass\",\n                isFixed: false,\n                isChecked: false,\n            },\n            {\n                name: CustomizableColumnNameConstants.StartAndEndTime,\n                objectKey: \"StartTime\",\n                isFixed: false,\n                isChecked: false,\n            },\n            {\n                name: CustomizableColumnNameConstants.ScheduledDay,\n                objectKey: \"ScheduledDay\",\n                isFixed: false,\n                isChecked: false,\n            },\n            {\n                name: CustomizableColumnNameConstants.BuyerLine,\n                objectKey: \"BuyerLine\",\n                isFixed: false,\n                isChecked: false,\n            },\n            {\n                name: CustomizableColumnNameConstants.BuyerProgramName,\n                objectKey: \"BuyerProgramName\",\n                isFixed: false,\n                isChecked: false,\n            },\n            ...AURColumns,\n        ];\n        return columnsList;\n    }\n\n    getEasyFilterNames(\n        showLURVoilatedEasyFilter: boolean,\n        isCandidateViolation: boolean,\n        selectedView: SPOTDETAILVIEWS,\n        isBuyerApplication: boolean,\n    ): string[] {\n        const easyFilters = [\n            EasyFilterConstants.Booked,\n            //   EasyFilterConstants.BookedToDate,\n            EasyFilterConstants.Aired,\n            EasyFilterConstants.Posted,\n            // EasyFilterConstants.Removed,\n            // EasyFilterConstants.Late,\n            EasyFilterConstants.Scheduled,\n            EasyFilterConstants.ToBeScheduled,\n\n            EasyFilterConstants.Dropped,\n            // EasyFilterConstants.LURViolations,\n            // EasyFilterConstants.GroupedPEAndMG,\n        ];\n        if (!isBuyerApplication) {\n            easyFilters.push(EasyFilterConstants.LateRuns);\n        }\n        if (selectedView === \"SellerView\" && !isBuyerApplication) {\n            easyFilters.push(EasyFilterConstants.GroupedPEAndMG);\n        }\n        if (showLURVoilatedEasyFilter && isCandidateViolation) {\n            easyFilters.push(EasyFilterConstants.ViolatedSpot);\n        }\n        easyFilters.push(EasyFilterConstants.ViolatingSpot);\n        return easyFilters;\n    }\n\n    // static isBookedToDate(spotDate: string, status: string): boolean {\n    //     let today = dayjs(SpotDetailsService.backDate, 'YYYY-MM-DD').format('MM/DD/YYYY');\n    //     return (\n    //         dayjs(spotDate).isSameOrBefore(today) &&\n    //         [\n    //             StatusConstants.Placed,\n    //             StatusConstants.Displaced,\n    //             StatusConstants.Late,\n    //             StatusConstants.Preempted,\n    //             StatusConstants.PreemptedBonus,\n    //             StatusConstants.PreemptedDR,\n    //             StatusConstants.PreemptedPaidProgram,\n    //             StatusConstants.PreemptedStationUtilized,\n    //             StatusConstants.PreemptedNoCharge,\n    //             StatusConstants.NonSpot,\n    //             StatusConstants.Aired,\n    //         ].includes(status)\n    //     );\n    // }\n\n    filterOnEasyFiltersInSpotDetails(data: SpotTableData[], filterName: string) {\n        let updatedData: SpotTableData[] = data;\n        switch (filterName) {\n            case EasyFilterConstants.Booked:\n                updatedData = updatedData.filter((obj) => GenericSpotDetailsService.isBooked(obj.SpotStatus));\n                break;\n\n            // case EasyFilterConstants.BookedToDate:\n            //     data = data.filter((obj) => SpotDetailsService.isBookedToDate(obj.SpotDate, obj.SpotStatus));\n            //     break;\n\n            // change late run api key here\n            case EasyFilterConstants.LateRuns:\n                updatedData = updatedData.filter((obj) => GenericSpotDetailsService.isLateRunSpot(obj.showIfLateRunsSelected));\n                break;\n            case EasyFilterConstants.Scheduled:\n                updatedData = updatedData.filter((obj) => GenericSpotDetailsService.isScheduled(obj.AirDate, obj.SpotStatus));\n                break;\n\n            case EasyFilterConstants.Aired:\n                updatedData = updatedData.filter((obj) => GenericSpotDetailsService.isAired(obj.IsAired));\n                break;\n\n            case EasyFilterConstants.Posted:\n                updatedData = updatedData.filter((obj) => GenericSpotDetailsService.isAired(obj.IsPosted));\n                break;\n\n            case EasyFilterConstants.ToBeScheduled:\n                updatedData = updatedData.filter((obj) => GenericSpotDetailsService.isToBeScheduled(obj.SpotStatus));\n                break;\n\n            case EasyFilterConstants.Dropped:\n                updatedData = updatedData.filter((obj) => GenericSpotDetailsService.isDropped(obj.SpotStatus));\n                break;\n\n            case EasyFilterConstants.LURViolations:\n                updatedData = updatedData.filter((obj) => obj.IsLURViolated);\n                break;\n\n            case EasyFilterConstants.CandViolation:\n                updatedData = updatedData.filter((obj) => obj.IsLURViolated);\n                break;\n\n            case EasyFilterConstants.ViolatedSpot:\n                updatedData = updatedData.filter((obj) => obj.IsViolated);\n                break;\n\n            case EasyFilterConstants.ViolatingSpot:\n                updatedData = updatedData.filter((obj) => obj.IsViolating);\n                break;\n            // no default\n        }\n        return updatedData;\n    }\n\n    returnNormalizationHeader(loading: boolean, metricType: OrderMetrics): IGtTableHeader {\n        let normalizedBookedImpsOrRatingName = null;\n        let normalizedPostedImpsOrRatingName = null;\n\n        if (!loading) {\n            normalizedBookedImpsOrRatingName =\n                metricType === OrderMetrics.imps\n                    ? TableColumnNameConstants.NormalizedBookedIMPS\n                    : TableColumnNameConstants.NormalizedBookedRating;\n            normalizedPostedImpsOrRatingName =\n                metricType === OrderMetrics.imps\n                    ? TableColumnNameConstants.NormalizedPostedIMPS\n                    : TableColumnNameConstants.NormalizedPostedRating;\n        }\n\n        return {\n            headerInfo: [\n                {\n                    name: normalizedBookedImpsOrRatingName,\n                    objectKey:\n                        metricType === OrderMetrics.imps ? \"NormalizedOrderedImpressions\" : \"NormalizedOrderedRating\",\n                    typeOfHeaderData: \"STRING\",\n                    typeOfBodyData: \"STRING\",\n                    showTooltipIcon: true,\n                    isSortRequired: [true, true],\n                    isFilterRequired: [true, true],\n                    filter: \"SLIDER\",\n                    filterSortObjectKeys:\n                        metricType === OrderMetrics.imps\n                            ? [\"NormalizedOrderedImpressions\", \"NormalizedPostedImpressions\"]\n                            : [\"NormalizedOrderedRating\", \"NormalizedPostedRating\"],\n                },\n                {\n                    name: normalizedPostedImpsOrRatingName,\n                    objectKey:\n                        metricType === OrderMetrics.imps ? \"NormalizedPostedImpressions\" : \"NormalizedPostedRating\",\n                    typeOfHeaderData: \"STRING\",\n                    typeOfBodyData: \"STRING\",\n                    showTooltipIcon: false,\n                },\n            ],\n            visible: true,\n            width: \"204px\",\n        };\n    }\n}\n","export enum Frequencies {\n    weekly = \"Weekly\",\n    monthly = \"Monthly\",\n    quarterly = \"Quarterly\",\n    endOfFlightPeriod = \"End of flight period\",\n}\n\nexport enum PopupTypes {\n    View = \"VIEW\",\n    Update = \"UPDATE\",\n    Schedule = \"SCHEDULE\",\n}\n\nexport enum RolesToSendReportTo {\n    AE = \"Account Executive\",\n    SA = \"Sales Assistant \",\n    TL = \"Team Lead\",\n    SM = \"Sales Manager\",\n    OGA = \"Ownership Group Admin\",\n    SV = \"Station Viewer\",\n    OGV = \"Ownership Group Viewer\",\n}\n\nexport type PeriodReport =\n    | \"Ongoing week\"\n    | \"Ongoing broadcast month\"\n    | \"Ongoing fiscal month\"\n    | \"Ongoing broadcast quarter\"\n    | \"Ongoing fiscal quarter\"\n    | \"Entire flight period\";\n\nexport type FileTypes = \"PDF (.pdf)\" | \"Excel (.xlsx)\";\n\nexport interface AllowedOptions {\n    allowedFrequencies: Frequencies[];\n    allowedPeriodForReport: PeriodReport[];\n    allowedReportType: FileTypes[];\n    allowedRecepients: RolesToSendReportTo[];\n    allowedRevenueClasses: string[];\n    allowedDayparts: string[];\n}\n\nexport interface SchedulePostingReportPayload {\n    StationId: number;\n    OrderId: string;\n    ScheduledByUserId: number;\n    Frequency: Frequencies;\n    PeriodForReport: PeriodReport;\n    RevenueClassIds: string[];\n    UsersForReport: string[];\n    ReportType: FileTypes;\n    PostingReportScheduleId?: string;\n    Day: WeekDays | null;\n    DaypartIds: string[];\n    RecipientsEmailIds: string[];\n}\n\nexport class SchedulePostingReportResponse {\n    AllowedPeriodForReport: PeriodReport[];\n    AllowedRecepients: RolesToSendReportTo[];\n    AllowedFrequencies: Frequencies[];\n    AllowedReportType: FileTypes[];\n    AllowedRevenueClasses: string[];\n    AllowedDayparts: string[];\n    PostingReportScheduleDetails: PostingReportScheduleDetails[];\n    AdvertiserName: string;\n}\n\nexport interface PostingReportScheduleDetails {\n    PostingReportScheduleId: string;\n    StationId: number;\n    OrderId: number;\n    ScheduledByUserId: number;\n    Frequency: Frequencies;\n    PeriodForReport: PeriodReport;\n    RevenueClasses: string[];\n    UsersForReport: RolesToSendReportTo[];\n    ReportType: FileTypes;\n    IsAllRevenueClassessSelected: boolean;\n    SendOn: WeekDays | null;\n    Dayparts: string[];\n    RecipientsEmailIds: string[];\n}\n\nexport enum WeekDays {\n    monday = \"Monday\",\n    tuesday = \"Tuesday\",\n    wednesday = \"Wednesday\",\n    thursday = \"Thursday\",\n    friday = \"Friday\",\n    saturday = \"Saturday\",\n    sunday = \"Sunday\",\n}","import { CommonModule } from \"@angular/common\";\nimport { HttpErrorResponse, HttpResponse } from \"@angular/common/http\";\nimport {\n    ChangeDetectionStrategy,\n    Component,\n    EventEmitter,\n    inject,\n    Input,\n    OnInit,\n    Output,\n    signal,\n    TemplateRef,\n    ViewChild,\n} from \"@angular/core\";\nimport {\n    AnnaGlobalConfigService,\n    Constants,\n    IConfirmationPopupConfig,\n    ICustomMultiSelect,\n    ICustomSingleSelect,\n    ShowEllipsisTextOnHoverDirective,\n} from \"@annalib/anna-core\";\nimport {\n    ConfirmationPopupComponent,\n    MultiSelectComponent,\n    MultiSelectIdText,\n    SingleSelectComponent,\n} from \"@annalib/anna-design-components-lib\";\nimport { NgbModal, NgbModalOptions, NgbModalRef } from \"@ng-bootstrap/ng-bootstrap\";\nimport { cloneDeep, isEqual } from \"lodash-es\";\nimport { ToastrService } from \"ngx-toastr\";\nimport { NgxUiLoaderService } from \"ngx-ui-loader\";\n\nimport {\n    ISpotDetailsBackendService,\n    SPOT_DETAILS_PAGE_SERVICE_TOKEN,\n} from \"../spot-details/config/spot-details-backend-service.token\";\nimport { SpotDetailsService } from \"../spot-details/services/spot-details.service\";\nimport {\n    AllowedOptions,\n    FileTypes,\n    Frequencies,\n    PeriodReport,\n    PopupTypes,\n    PostingReportScheduleDetails,\n    RolesToSendReportTo,\n    SchedulePostingReportPayload,\n    SchedulePostingReportResponse,\n    WeekDays,\n} from \"./Model/schedulePostingReportPopup.model\";\n\n@Component({\n    selector: \"anna-feature-schedule-posting-report-popup\",\n    imports: [\n        CommonModule,\n        SingleSelectComponent,\n        MultiSelectComponent,\n        ConfirmationPopupComponent,\n        ShowEllipsisTextOnHoverDirective,\n    ],\n    templateUrl: \"./schedule-posting-report-popup.component.html\",\n    styleUrls: [\"./schedule-posting-report-popup.component.scss\"],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SchedulePostingReportPopupComponent implements OnInit {\n    @Input() orderId: string;\n    @Input() stationId: number;\n    @Input() popupType: \"VIEW\" | \"SCHEDULE\" | \"UPDATE\";\n    @Input() existingSchedules: PostingReportScheduleDetails[] = [];\n    @Input() scheduleToEdit: PostingReportScheduleDetails | null = null;\n    @Input() allowedOptions: AllowedOptions | null = null;\n\n    @Output() closePopup = new EventEmitter<boolean>();\n\n    // eslint-disable-next-line no-unsafe-optional-chaining\n    private loggedInUserId: number = +JSON.parse(localStorage.getItem(\"userProfileData\"))?.userId;\n\n    frequencyOptions: Frequencies[] = [];\n    sendDataForOptions: PeriodReport[] = [];\n    recipients: MultiSelectIdText[] = [];\n    formatOptions: FileTypes[];\n    revenueClasses: MultiSelectIdText[] = [];\n    dayparts: MultiSelectIdText[] = [];\n    \n    emailTags = signal<string[]>([]);\n    duplicateEmailTag = signal<number | null>(null);\n    invalidEmailError = signal<string | null>(null);\n    duplicateEmailError = signal<string | null>(null);\n    duplicateScheduleMessage = signal<string | null>(null);\n    disableScheduleOrUpdatePostingReportMailButton = signal<boolean>(false);\n    \n    private emailTagColumns = 2;\n    private readonly frequencyMessageText =\n        \"The report will be emailed on the selected day for the respective frequency or the end date of the flight period, whichever is earlier.\";\n\n    sendOnOptions: WeekDays[] = [\n        WeekDays.monday,\n        WeekDays.tuesday,\n        WeekDays.wednesday,\n        WeekDays.thursday,\n        WeekDays.friday,\n        WeekDays.saturday,\n        WeekDays.sunday,\n    ];\n\n    selectedFrequency: Frequencies;\n    selectedSendDataFor: PeriodReport;\n    selectedSendOn: WeekDays | null;\n    selectedFormat: FileTypes;\n    scheduledPostingReportEmailDetails: PostingReportScheduleDetails;\n    private scheduledPostingReportEmailDetailsList: PostingReportScheduleDetails[] = [];\n\n    singleSelectDropdownConfig: ICustomSingleSelect;\n    multiSelectDropdownConfig: ICustomMultiSelect;\n    recipientsMultiSelectDropdownConfig: ICustomMultiSelect;\n    \n    frequencyMessage: string;\n    loading: boolean = true;\n\n    @ViewChild(\"ScheduleOrUpdatePostingReportModal\", { static: true })\n    private scheduleOrUpdatePostingReportModal: TemplateRef<any>;\n    private scheduleOrUpdatePostingReportModalReference: NgbModalRef;\n\n    @ViewChild(\"ViewPostingReportScheduleModal\", { static: true })\n    private viewPostingReportScheduleModal: TemplateRef<any>;\n    private viewPostingReportScheduleModalReference: NgbModalRef;\n\n    @ViewChild(\"deleteScheduleConfirmationModal\")\n    private deleteScheduleConfirmationModal: ConfirmationPopupComponent;\n\n\n    deleteConfirmationPopupConfig: IConfirmationPopupConfig;\n\n    PopupTypes = PopupTypes;\n    WeekDays = WeekDays;\n    Frequencies = Frequencies;\n\n    consumingProjectSpotDetailsBackendService = inject<ISpotDetailsBackendService>(SPOT_DETAILS_PAGE_SERVICE_TOKEN);\n    private annaSpotDetailsService = inject(SpotDetailsService);\n    private annaGlobalConfig = inject(AnnaGlobalConfigService);\n    private toastr = inject(ToastrService);\n    private ngxService = inject(NgxUiLoaderService);\n    private modalService = inject(NgbModal);\n\n    ngOnInit() {\n        this.singleSelectDropdownConfig = { ...this.annaGlobalConfig.defaultSingleSelectConfig };\n        this.multiSelectDropdownConfig = { ...this.annaGlobalConfig.defaultMultiSelectConfig };\n        this.recipientsMultiSelectDropdownConfig = { ...this.annaGlobalConfig.defaultMultiSelectConfig };\n        this.updateRecipientsConfigBasedOnEmailTags();\n        this.openPopup();\n        this.setDeleteConfirmationPopupConfig();\n        this.fetchData();\n    }\n\n    fetchData() {\n        if (\n            this.allowedOptions?.allowedFrequencies?.length &&\n            this.allowedOptions?.allowedPeriodForReport?.length &&\n            this.allowedOptions?.allowedReportType?.length &&\n            this.allowedOptions?.allowedRecepients?.length &&\n            this.allowedOptions?.allowedRevenueClasses?.length &&\n            this.allowedOptions?.allowedDayparts?.length\n        ) {\n            this.initializeDropdowns(\n                this.allowedOptions.allowedFrequencies,\n                this.allowedOptions.allowedPeriodForReport,\n                this.allowedOptions.allowedReportType,\n                this.allowedOptions.allowedRecepients,\n                this.allowedOptions.allowedRevenueClasses,\n                this.allowedOptions.allowedDayparts,\n            );\n            return;\n        }\n\n        this.consumingProjectSpotDetailsBackendService\n            .getPostingReportEmailSchedule(this.stationId, this.orderId)\n            .subscribe({\n                next: (response: HttpResponse<SchedulePostingReportResponse>) => {\n                    this.scheduledPostingReportEmailDetailsList = cloneDeep(\n                        response.body.PostingReportScheduleDetails || [],\n                    );\n                    if (!this.existingSchedules?.length) {\n                        this.existingSchedules = cloneDeep(this.scheduledPostingReportEmailDetailsList);\n                    }\n                    this.initializeDropdowns(\n                        response.body.AllowedFrequencies,\n                        response.body.AllowedPeriodForReport,\n                        response.body.AllowedReportType,\n                        response.body.AllowedRecepients,\n                        response.body.AllowedRevenueClasses,\n                        response.body.AllowedDayparts,\n                    );\n                },\n                error: (error: HttpErrorResponse) => {\n                    this.toastr.error(Constants.SERVER_ERROR_MSG);\n                    this.closePopupBasedOnPopupType();\n                },\n            });\n    }\n\n    private initializeDropdowns(\n        frequencies: Frequencies[],\n        periods: PeriodReport[],\n        reportTypes: FileTypes[],\n        recepients: RolesToSendReportTo[],\n        revenueClasses: string[],\n        dayparts: string[],\n    ) {\n        if (this.popupType === \"VIEW\") return;\n\n        this.frequencyOptions = cloneDeep(frequencies);\n        this.sendDataForOptions = cloneDeep(periods);\n        this.formatOptions = cloneDeep(reportTypes);\n        this.recipients = recepients.map((item) => new MultiSelectIdText(item, item, false, false, false));\n        this.revenueClasses = revenueClasses.map((item) => new MultiSelectIdText(item, item, true, false, false));\n        this.dayparts = dayparts.map((item) => new MultiSelectIdText(item, item, true, false, false));\n\n        if (this.popupType === \"SCHEDULE\") {\n            this.setDefaultOptions();\n        } else if (this.popupType === \"UPDATE\") {\n            this.setSelectedData();\n        }\n        this.frequencyMessage = this.selectedFrequency === Frequencies.endOfFlightPeriod\n            ? null\n            : this.frequencyMessageText;\n        this.disableEnableApplyButton();\n        this.loading = false;\n    }\n\n    setDefaultOptions() {\n        this.selectedFrequency = this.frequencyOptions[0];\n        this.selectedSendOn = this.sendOnOptions[0];\n        const entireFlightPeriod = this.sendDataForOptions.find((n) => n === \"Entire flight period\");\n        this.selectedSendDataFor = entireFlightPeriod || this.sendDataForOptions[0];\n        this.selectedFormat = this.formatOptions[0];\n        const AE = this.recipients.filter((n) => n.text === RolesToSendReportTo.AE)[0];\n        AE.isSelected = true;\n\n        this.emailTags.set([]);\n        this.duplicateEmailTag.set(null);\n        this.invalidEmailError.set(null);\n        this.duplicateEmailError.set(null);\n    }\n\n    setSelectedData() {\n        this.disableScheduleOrUpdatePostingReportMailButton.set(true);\n        if (!this.scheduleToEdit) return;\n        const scheduleData = this.scheduleToEdit;\n\n        this.scheduledPostingReportEmailDetails = cloneDeep(scheduleData);\n\n        const selectedRecipients = scheduleData.UsersForReport || [];\n        const recipients = cloneDeep(this.recipients);\n        recipients.forEach((n) => {\n            n.isSelected = selectedRecipients.includes(n.text as RolesToSendReportTo);\n        });\n\n        const selectedRevenueClasses = scheduleData.RevenueClasses || [];\n        const revenueClasses = cloneDeep(this.revenueClasses);\n        revenueClasses.forEach((n) => {\n            n.isSelected = selectedRevenueClasses.includes(n.text);\n        });\n\n        const selectedDayparts = scheduleData.Dayparts || [];\n        const dayparts = cloneDeep(this.dayparts);\n        dayparts.forEach((n) => {\n            n.isSelected = selectedDayparts.includes(n.text);\n        });\n\n        this.recipients = recipients;\n        this.revenueClasses = revenueClasses;\n        this.dayparts = dayparts;\n        this.selectedFrequency = scheduleData.Frequency;\n        this.selectedSendDataFor = scheduleData.PeriodForReport;\n        this.selectedFormat = scheduleData.ReportType;\n        this.selectedSendOn = scheduleData.SendOn;\n\n        this.duplicateEmailTag.set(null);\n        this.invalidEmailError.set(null);\n        this.duplicateEmailError.set(null);\n        this.emailTags.set(scheduleData.RecipientsEmailIds || []);\n    }\n\n    openPopup() {\n        if (this.popupType === \"VIEW\") {\n            this.openViewPostingReportScheduleModal();\n        } else {\n            this.openScheduleOrUpdatePostingReportModal();\n        }\n    }\n\n    closePopupBasedOnPopupType() {\n        if (this.popupType === \"VIEW\") {\n            this.closeViewPostingReportScheduleModal();\n        } else {\n            this.closeScheduleOrUpdatePostingReportModal();\n        }\n    }\n\n    openScheduleOrUpdatePostingReportModal() {\n        const ngbModalOptions: NgbModalOptions = {\n            windowClass: \"schedule-posting-report-email-modal\",\n        };\n        this.scheduleOrUpdatePostingReportModalReference = this.modalService.open(\n            this.scheduleOrUpdatePostingReportModal,\n            ngbModalOptions,\n        );\n    }\n\n    openViewPostingReportScheduleModal() {\n        const ngbModalOptions: NgbModalOptions = {\n            windowClass: \"schedule-posting-report-email-modal\",\n        };\n        this.viewPostingReportScheduleModalReference = this.modalService.open(\n            this.viewPostingReportScheduleModal,\n            ngbModalOptions,\n        );\n    }\n\n    frequencySelected(event: any) {\n        this.selectedFrequency = event;\n        this.duplicateScheduleMessage.set(null);\n\n        if (this.selectedFrequency === Frequencies.endOfFlightPeriod) {\n            this.selectedSendOn = null;\n        } else if (!this.selectedSendOn) {\n            this.selectedSendOn = this.sendOnOptions[0];\n        }\n        this.frequencyMessage = this.selectedFrequency === Frequencies.endOfFlightPeriod\n            ? null\n            : this.frequencyMessageText;\n        this.disableEnableApplyButton();\n    }\n\n    sendDataForSelected(event: any) {\n        this.selectedSendDataFor = event;\n        this.duplicateScheduleMessage.set(null);\n        this.disableEnableApplyButton();\n    }\n\n    recipientsSelectionChanged(event: MultiSelectIdText[]) {\n        this.recipients = cloneDeep(event);\n        this.duplicateScheduleMessage.set(null);\n        this.disableEnableApplyButton();\n    }\n\n    daypartsSelectionChanged(event: MultiSelectIdText[]) {\n        this.dayparts = cloneDeep(event);\n        this.duplicateScheduleMessage.set(null);\n        this.disableEnableApplyButton();\n    }\n\n    formatSelected(event: any) {\n        this.selectedFormat = event;\n        this.duplicateScheduleMessage.set(null);\n        this.disableEnableApplyButton();\n    }\n\n    revenueClassesSelectionChanged(event: MultiSelectIdText[]) {\n        this.revenueClasses = cloneDeep(event);\n        this.duplicateScheduleMessage.set(null);\n        this.disableEnableApplyButton();\n    }\n\n    sendOnSelected(event: any) {\n        this.selectedSendOn = event;\n        this.duplicateScheduleMessage.set(null);\n        this.disableEnableApplyButton();\n    }\n\n    disableEnableApplyButton() {\n        this.disableScheduleOrUpdatePostingReportMailButton.set(\n            this.popupType === PopupTypes.Update\n                ? this.disableEnableApplyButtonForUpdate()\n                : this.isFormInvalid(),\n        );\n    }\n\n    disableEnableApplyButtonForUpdate() {\n        if (this.isFormInvalid()) {\n            return true;\n        }\n\n        const originalEmails = (this.scheduledPostingReportEmailDetails.RecipientsEmailIds || [])\n            .map((e) => e.toLowerCase())\n            .sort();\n        const currentEmails = this.emailTags()\n            .map((e) => e.toLowerCase())\n            .sort();\n\n        const isFrequencyUnchanged =\n            this.selectedFrequency === this.scheduledPostingReportEmailDetails.Frequency;\n        const isSendOnUnchanged = this.selectedSendOn === this.scheduledPostingReportEmailDetails.SendOn;\n        const isPeriodForReportUnchanged =\n            this.selectedSendDataFor === this.scheduledPostingReportEmailDetails.PeriodForReport;\n        const isReportTypeUnchanged = this.selectedFormat === this.scheduledPostingReportEmailDetails.ReportType;\n\n        const selectedRecipients = this.recipients.filter((n) => n.isSelected).map((n) => n.id);\n        const isRecipientsUnchanged = isEqual(selectedRecipients, this.scheduledPostingReportEmailDetails.UsersForReport);\n\n        const selectedRevenueClasses = this.revenueClasses.filter((n) => n.isSelected).map((n) => n.id);\n        const isRevenueClassesUnchanged = isEqual(\n            selectedRevenueClasses,\n            this.scheduledPostingReportEmailDetails.RevenueClasses,\n        );\n\n        const selectedDayparts = this.dayparts.filter((n) => n.isSelected).map((n) => n.id);\n        const isDaypartsUnchanged = isEqual(selectedDayparts, this.scheduledPostingReportEmailDetails.Dayparts);\n\n        const isEmailsUnchanged = isEqual(originalEmails, currentEmails);\n\n        const hasNoChanges =\n            isFrequencyUnchanged &&\n            isSendOnUnchanged &&\n            isPeriodForReportUnchanged &&\n            isReportTypeUnchanged &&\n            isRecipientsUnchanged &&\n            isRevenueClassesUnchanged &&\n            isDaypartsUnchanged &&\n            isEmailsUnchanged;\n\n        return hasNoChanges;\n    }\n\n    isFormInvalid(): boolean {\n        const hasRevenue = this.revenueClasses.filter((n) => n.isSelected).length > 0;\n        const hasRecipients = this.recipients.filter((n) => n.isSelected).length > 0;\n        const hasDayparts = this.dayparts.filter((n) => n.isSelected).length > 0;\n        return (\n            !hasRevenue ||\n            !hasDayparts ||\n            (!hasRecipients && !this.hasValidEmailTags()) ||\n            !!this.duplicateEmailTag() ||\n            !!this.invalidEmailError() ||\n            !!this.duplicateEmailError()\n        );\n    }\n\n    hasValidEmailTags(): boolean {\n        return this.emailTags().length && !this.duplicateEmailTag();\n    }\n\n    private updateRecipientsConfigBasedOnEmailTags(): void {\n        const hasEmails = (this.emailTags()?.length ?? 0) > 0;\n        this.recipientsMultiSelectDropdownConfig = {\n            ...this.recipientsMultiSelectDropdownConfig,\n            showErrorWhenNoOptionSelected: !hasEmails,\n        };\n    }\n\n    onEmailKeydown(event: KeyboardEvent) {\n        if (event.key === \"Enter\") {\n            event.preventDefault();\n            const target = event.target as HTMLInputElement;\n            if (target?.value) {\n                const wasAdded = this.addEmailTag(target.value);\n                if (wasAdded) {\n                    target.value = \"\";\n                }\n            }\n        }\n    }\n\n    onEmailInput() {\n        this.invalidEmailError.set(null);\n        this.duplicateEmailError.set(null);\n\n        this.duplicateEmailTag.set(null);\n    }\n\n    addEmailTag(value: string): boolean {\n        const email = value.trim().toLowerCase();\n        if (!email) {\n            return false;\n        }\n\n        this.invalidEmailError.set(null);\n        this.duplicateEmailError.set(null);\n        this.duplicateScheduleMessage.set(null);\n\n        const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n        const isValid = emailRegex.test(email);\n\n        if (!isValid) {\n            this.invalidEmailError.set(\"Invalid email format\");\n            this.disableEnableApplyButton();\n            return false;\n        }\n\n        const emailTags = this.emailTags();\n        const existingIndex = emailTags.indexOf(email);\n        const isDuplicate = existingIndex !== -1;\n\n        if (isDuplicate) {\n            this.duplicateEmailError.set(\"This email already exists\");\n            this.duplicateEmailTag.set(existingIndex);\n            this.disableEnableApplyButton();\n            return false;\n        }\n\n        this.emailTags.set([...emailTags, email]);\n        this.updateRecipientsConfigBasedOnEmailTags();\n        this.disableEnableApplyButton();\n        return true;\n    }\n\n    removeEmailTag(index: number) {\n        const emailTags = this.emailTags();\n        if (index < 0 || index >= emailTags.length) {\n            return;\n        }\n\n        this.invalidEmailError.set(null);\n        this.duplicateScheduleMessage.set(null);\n\n        const updatedEmailTags = [...emailTags];\n        updatedEmailTags.splice(index, 1);\n        this.emailTags.set(updatedEmailTags);\n        this.updateRecipientsConfigBasedOnEmailTags();\n\n        this.duplicateEmailTag.update(currentIndex => {\n            if (currentIndex === null || currentIndex < index) {\n                return currentIndex;\n            }\n            if (currentIndex === index) {\n                return null;\n            }\n            return currentIndex - 1;\n        });\n\n        if (this.duplicateEmailTag() < 0 || this.duplicateEmailTag() === null) {\n            this.duplicateEmailError.set(null);\n        }\n\n        this.disableEnableApplyButton();\n    }\n\n\n    isDuplicateSchedule(): boolean {\n        if (!this.existingSchedules?.length) return false;\n        const currentPayload = this.createPayloadForSetOrUpdateSchedule();\n        return this.existingSchedules.some((item) => {\n            if (\n                currentPayload.PostingReportScheduleId &&\n                item.PostingReportScheduleId === currentPayload.PostingReportScheduleId\n            ) {\n                return false;\n            }\n            return (\n                item.Frequency === currentPayload.Frequency &&\n                item.SendOn === currentPayload.Day &&\n                item.PeriodForReport === currentPayload.PeriodForReport &&\n                isEqual(item.RevenueClasses, currentPayload.RevenueClassIds) &&\n                isEqual(item.Dayparts, currentPayload.DaypartIds) &&\n                isEqual(item.UsersForReport || [], currentPayload.UsersForReport || []) &&\n                isEqual(\n                    (item.RecipientsEmailIds || []).map((m) => m.toLowerCase()),\n                    (currentPayload.RecipientsEmailIds || []).map((m) => m.toLowerCase()),\n                ) &&\n                item.ReportType === currentPayload.ReportType\n            );\n        });\n    }\n\n    schedulePostingReport() {\n        if (this.isDuplicateSchedule()) {\n            this.duplicateScheduleMessage.set(\"This schedule already exists.\");\n            return;\n        }\n\n        this.duplicateScheduleMessage.set(null);\n\n        this.ngxService.start();\n        this.consumingProjectSpotDetailsBackendService\n            .setOrUpdatePostingReportEmailSchedule(this.createPayloadForSetOrUpdateSchedule())\n            .subscribe({\n                next: (response) => {\n                    this.ngxService.stop();\n                    this.annaSpotDetailsService.isPostingReportEmailScheduled = true;\n                    this.toastr.success(\"Posted report email scheduled successfully\");\n                    this.closeScheduleOrUpdatePostingReportModal(true);\n                },\n                error: (error: HttpErrorResponse) => {\n                    this.ngxService.stop();\n                    this.toastr.error(Constants.SERVER_ERROR_MSG);\n                },\n            });\n    }\n\n    deleteClicked() {\n        this.scheduleOrUpdatePostingReportModalReference.close();\n        this.deleteScheduleConfirmationModal.openModal();\n    }\n\n    deletePostingReportSchedule() {\n        this.ngxService.start();\n        this.consumingProjectSpotDetailsBackendService\n            .deletePostingReportEmailSchedule(\n                this.stationId,\n                this.orderId,\n                this.scheduledPostingReportEmailDetails?.PostingReportScheduleId,\n                this.loggedInUserId,\n            )\n            .subscribe({\n                next: (response) => {\n                    this.ngxService.stop();\n                    this.annaSpotDetailsService.isPostingReportEmailScheduled = false;\n                    this.toastr.success(\"Posted report email schedule deleted successfully\");\n                    this.closeScheduleOrUpdatePostingReportModal(true);\n                },\n                error: (error: HttpErrorResponse) => {\n                    this.ngxService.stop();\n                    this.toastr.error(Constants.SERVER_ERROR_MSG);\n                },\n            });\n    }\n\n    updatePostingReportSchedule() {\n        if (this.isDuplicateSchedule()) {\n            this.duplicateScheduleMessage.set(\"This schedule already exists.\");\n            return;\n        }\n\n        this.duplicateScheduleMessage.set(null);\n\n        this.ngxService.start();\n        this.consumingProjectSpotDetailsBackendService\n            .setOrUpdatePostingReportEmailSchedule(this.createPayloadForSetOrUpdateSchedule())\n            .subscribe({\n                next: (response) => {\n                    this.ngxService.stop();\n                    this.toastr.success(\"Posted report email schedule updated successfully\");\n                    this.closeScheduleOrUpdatePostingReportModal(true);\n                },\n                error: (error: HttpErrorResponse) => {\n                    this.ngxService.stop();\n                    this.toastr.error(Constants.SERVER_ERROR_MSG);\n                },\n            });\n    }\n\n    createPayloadForSetOrUpdateSchedule(): SchedulePostingReportPayload {\n        return {\n            StationId: this.stationId,\n            OrderId: this.orderId,\n            ScheduledByUserId: this.loggedInUserId,\n            Frequency: this.selectedFrequency,\n            Day: this.selectedSendOn,\n            PeriodForReport: this.selectedSendDataFor,\n            RevenueClassIds: this.revenueClasses.filter((n) => n.isSelected).map((n) => n.id),\n            DaypartIds: this.dayparts.filter((n) => n.isSelected).map((n) => n.id),\n            UsersForReport: this.recipients.filter((n) => n.isSelected).map((n) => n.id),\n            RecipientsEmailIds: [...this.emailTags()],\n            ReportType: this.selectedFormat,\n            PostingReportScheduleId: this.scheduledPostingReportEmailDetails?.PostingReportScheduleId,\n        };\n    }\n\n    setDeleteConfirmationPopupConfig() {\n        this.deleteConfirmationPopupConfig = {\n            ...this.annaGlobalConfig.defaultConfirmationPopupConfig,\n        };\n        this.deleteConfirmationPopupConfig.title =\n            \"Are you sure you want to delete the scheduled posting report email? Please note that this will stop the emails from being sent.\";\n        this.deleteConfirmationPopupConfig.windowClass = \"generic-confirm-modal\";\n        this.deleteConfirmationPopupConfig.showCloseIcon = false;\n        this.deleteConfirmationPopupConfig.cancelButtonLabel = \"Cancel\";\n        this.deleteConfirmationPopupConfig.confirmButtonLabel = \"Delete\";\n    }\n\n    closeViewPostingReportScheduleModal() {\n        this.viewPostingReportScheduleModalReference.close();\n        this.closePopup.emit(false);\n    }\n\n    closeScheduleOrUpdatePostingReportModal(shouldReload: boolean = false) {\n        this.scheduleOrUpdatePostingReportModalReference.close();\n        this.closePopup.emit(shouldReload);\n    }\n\n    closeDeleteConfirmModal() {\n        this.closePopup.emit(false);\n    }\n}\n","<ng-template\n    #ScheduleOrUpdatePostingReportModal\n    let-modal\n>\n    <div class=\"modal-header\">\n        <h3 class=\"modal-title\">\n            {{\n                popupType === PopupTypes.Schedule\n                    ? \"Schedule Order Posting Report Email\"\n                    : \"Update Posting Report Email Schedule\"\n            }}\n        </h3>\n    </div>\n    <div class=\"modal-body\">\n        Order#: <b>{{ orderId }}</b> <br />\n        <p>Configure the delivery preferences for the posting report email.</p>\n\n        <div class=\"d-flex dropdowns-container\">\n            <div class=\"dropdown-div\">\n            <p class=\"drop-down-label\">Frequency</p>\n            <anna-design-single-select\n                [loading]=\"loading\"\n                [items]=\"frequencyOptions\"\n                [selectedItem]=\"selectedFrequency\"\n                [config]=\"singleSelectDropdownConfig\"\n                (valueChanged)=\"frequencySelected($event)\"\n            >\n            </anna-design-single-select>\n        </div>\n            @if (selectedFrequency !== Frequencies.endOfFlightPeriod) {\n            <div class=\"dropdown-div\">\n                <p class=\"drop-down-label\">\n                    {{\n                        selectedFrequency === Frequencies.monthly\n                            ? \"Send On (Last selected day of the month)\"\n                            : selectedFrequency === Frequencies.quarterly\n                              ? \"Send On (Last selected day of the quarter)\"\n                              : \"Send On\"\n                    }}\n                </p>\n                <anna-design-single-select\n                    [loading]=\"loading\"\n                    [items]=\"sendOnOptions\"\n                    [selectedItem]=\"selectedSendOn\"\n                    [config]=\"singleSelectDropdownConfig\"\n                    (valueChanged)=\"sendOnSelected($event)\"\n                >\n                </anna-design-single-select>\n            </div>\n            }\n        </div>\n        @if (frequencyMessage) {\n        <p class=\"frequency-message\">\n            {{ frequencyMessage }}\n        </p>\n        }\n        <div class=\"d-flex dropdowns-container\">\n            <div class=\"dropdown-div\">\n                <p class=\"drop-down-label\">Send data for</p>\n                <anna-design-single-select\n                    [loading]=\"loading\"\n                    [items]=\"sendDataForOptions\"\n                    [selectedItem]=\"selectedSendDataFor\"\n                    [config]=\"singleSelectDropdownConfig\"\n                    (valueChanged)=\"sendDataForSelected($event)\"\n                >\n                </anna-design-single-select>\n            </div>\n            <div class=\"dropdown-div\">\n                <p class=\"drop-down-label\">Recipient</p>\n                <anna-design-multi-select\n                    [loading]=\"loading\"\n                    [config]=\"recipientsMultiSelectDropdownConfig\"\n                    [items]=\"recipients\"\n                    (selectionChangedEmitAllItems)=\"recipientsSelectionChanged($event)\"\n                >\n                </anna-design-multi-select>\n            </div>\n        </div>\n        <div class=\"email-container\">\n            <div class=\"email-label-row\">\n                <p class=\"drop-down-label\">Recipient Email (Type and hit enter)</p>\n                @if (invalidEmailError() || duplicateEmailError()) {\n                <span class=\"email-error-message\">\n                    {{ invalidEmailError() || duplicateEmailError() }}\n                </span>\n                }\n            </div>\n            <div class=\"email-input-wrapper\">\n                <input\n                    type=\"text\"\n                    class=\"email-input\"\n                    placeholder=\"Enter email address and hit enter\"\n                    (keydown)=\"onEmailKeydown($event)\"\n                    (input)=\"onEmailInput()\"\n                    [class.error]=\"invalidEmailError() || duplicateEmailError()\"\n                />\n            </div>\n            <div class=\"email-tag-input\">\n                @for (email of emailTags(); track email; let i = $index) {\n                <span\n                    class=\"email-tag\"\n                    [class.tag-error]=\"duplicateEmailTag() === i\"\n                >\n                    <span\n                        class=\"email-tag__text\"\n                        annaCoreShowEllipsisTextOnHover\n                    >\n                        {{ email }}\n                    </span>\n                    <i\n                        class=\"mdi mdi-close\"\n                        (click)=\"removeEmailTag(i)\"\n                    ></i>\n                </span>\n                }\n            </div>\n        </div>\n        <div class=\"d-flex dropdowns-container\">\n            <div class=\"dropdown-div\">\n                <p class=\"drop-down-label\">Daypart</p>\n                <anna-design-multi-select\n                    [loading]=\"loading\"\n                    [items]=\"dayparts\"\n                    [disabled]=\"dayparts.length === 0\"\n                    [config]=\"multiSelectDropdownConfig\"\n                    (selectionChangedEmitAllItems)=\"daypartsSelectionChanged($event)\"\n                >\n                </anna-design-multi-select>\n            </div>\n            <div class=\"dropdown-div\">\n                <p class=\"drop-down-label\">Revenue Class</p>\n                <anna-design-multi-select\n                    [loading]=\"loading\"\n                    [config]=\"multiSelectDropdownConfig\"\n                    [items]=\"revenueClasses\"\n                    [disabled]=\"revenueClasses.length === 0\"\n                    (selectionChangedEmitAllItems)=\"revenueClassesSelectionChanged($event)\"\n                >\n                </anna-design-multi-select>\n            </div>\n        </div>\n        <div class=\"d-flex dropdowns-container\">\n            <div class=\"dropdown-div\">\n                <p class=\"drop-down-label\">Format</p>\n                <anna-design-single-select\n                    [loading]=\"loading\"\n                    [items]=\"formatOptions\"\n                    [selectedItem]=\"selectedFormat\"\n                    [config]=\"singleSelectDropdownConfig\"\n                    (valueChanged)=\"formatSelected($event)\"\n                >\n                </anna-design-single-select>\n            </div>\n        </div>\n\n        <p class=\"confirmation-message\"><b>Please note that the posting report for this order will be emailed as scheduled. Are you sure?</b></p>\n        @if (duplicateScheduleMessage()) {\n        <p class=\"frequency-message duplicate-message\">\n            {{ duplicateScheduleMessage() }}\n        </p>\n        }\n\n        @if (popupType === PopupTypes.Schedule) {\n        <div class=\"btn-container\">\n            <button\n                class=\"anna cancel-button\"\n                (click)=\"closeScheduleOrUpdatePostingReportModal()\"\n            >\n                Cancel\n            </button>\n            <button\n                class=\"anna apply-button\"\n                [disabled]=\"loading || disableScheduleOrUpdatePostingReportMailButton()\"\n                (click)=\"schedulePostingReport()\"\n            >\n                Schedule Report\n            </button>\n        </div>\n        }\n\n        @if (popupType === PopupTypes.Update) {\n        <div class=\"btn-container\">\n            <button\n                class=\"anna cancel-button\"\n                (click)=\"closeScheduleOrUpdatePostingReportModal()\"\n            >\n                Cancel\n            </button>\n            <button\n                class=\"anna apply-button\"\n                [disabled]=\"loading || disableScheduleOrUpdatePostingReportMailButton()\"\n                (click)=\"updatePostingReportSchedule()\"\n            >\n                Schedule\n            </button>\n        </div>\n        }\n    </div>\n</ng-template>\n\n<ng-template\n    #ViewPostingReportScheduleModal\n    let-modal\n>\n    <div class=\"modal-header\">\n        <h3 class=\"modal-title\">Posting Report Schedule Email Details</h3>\n    </div>\n    <div class=\"modal-body\">\n        <p>\n            Order#: <b>{{ orderId }}</b>\n        </p>\n        <div class=\"view-popup-details\">\n            <span\n                >Frequency: <b>{{ scheduledPostingReportEmailDetails?.Frequency }}</b></span\n            >\n            <span\n                >Recipient:\n                <ng-container\n                    [ngTemplateOutlet]=\"commaSeperatedValues\"\n                    [ngTemplateOutletContext]=\"{\n                        array: scheduledPostingReportEmailDetails?.UsersForReport\n                    }\"\n                >\n                </ng-container>\n            </span>\n            <span\n                >Revenue Class:\n                @if (scheduledPostingReportEmailDetails?.IsAllRevenueClassessSelected) {\n                    <b>All ({{ scheduledPostingReportEmailDetails?.RevenueClasses?.length }})</b>\n                } @else {\n                    <ng-container\n                        [ngTemplateOutlet]=\"commaSeperatedValues\"\n                        [ngTemplateOutletContext]=\"{\n                            array: scheduledPostingReportEmailDetails?.RevenueClasses\n                        }\"\n                    >\n                    </ng-container>\n                }\n            </span>\n            <span\n                >Send data for: <b>{{ scheduledPostingReportEmailDetails?.PeriodForReport }}</b></span\n            >\n            <span\n                >Format: <b>{{ scheduledPostingReportEmailDetails?.ReportType }}</b></span\n            >\n        </div>\n    </div>\n</ng-template>\n\n<anna-design-confirmation-popup\n    #deleteScheduleConfirmationModal\n    [config]=\"deleteConfirmationPopupConfig\"\n    (confirmClicked)=\"deletePostingReportSchedule()\"\n    (cancelClicked)=\"closeDeleteConfirmModal()\"\n>\n</anna-design-confirmation-popup>\n\n<ng-template\n    #commaSeperatedValues\n    let-array=\"array\"\n>\n    @for (item of array; track item; let last = $last) {\n        <b>{{ item }}@if (!last) {, }</b>\n    }\n</ng-template>\n","export class TableHeaderNames {\n    static readonly DATE = \"DATE\";\n    static readonly TIME = \"TIME\";\n    static readonly REVISION_NUMBER = \"REVISION #\";\n    static readonly USER = \"USER\";\n    static readonly ACTIIVTY = \"ACTIVITY\";\n    static readonly DETAILS = \"DETAILS\";\n}\n\nexport class TableColumnKeyConstants {\n    static readonly DATE = \"date\";\n    static readonly TIME = \"displayTime\";\n    static readonly REVISION_NUMBER = \"revisionNumberAndState\";\n    static readonly USER = \"userDetails\";\n    static readonly ACTIIVTY = \"activityName\";\n    static readonly DETAILS = \"description\";\n}\nexport class OrderTypeConstants {\n    static readonly UD_LIABILITY_SET = \"UD (Liability set)\";\n}\n","import { AnnaDateTimeFormatService } from \"@annalib/anna-core\";\n\nexport interface OrderHistory {\n    Name: string;\n    UserType: string;\n    Date: string;\n    Time: string;\n    ActivityName: string;\n    Description: string;\n    NavigateTo:\n        | \"REVISION\"\n        | \"ORDER-BUSINESS\"\n        | \"SPOT-APPROVAL\"\n        | \"LINE-DETAILS\"\n        | \"ORDER-HISTORY-BUSINESS\"\n        | \"STATION-BUSINESS-RULES-HISTORY\";\n    RevisionNumberForDisplay: string;\n    RevisionNumber: number;\n    RoId: number | null;\n    ShowViewDetails: boolean;\n    RevisionState: \"confirmed\" | \"cancelled\" | \"proposed\";\n    RevisionNumberAndState?: string;\n    OrderDetailsPopUpData: OrderDetailsUpdate[];\n}\n\nexport interface OrderDetailsUpdate {\n    Description: string;\n    PreviousData: string;\n    UpdatedData: string;\n}\n\nexport interface OrderHistoryResponse {\n    HistoryApplicableDate: string;\n    OrderHistoryList: OrderHistory[];\n}\nexport class OrderHistoryForTable {\n    name: string;\n    userType: string;\n    date: string;\n    time: string;\n    activityName: string;\n    description: string;\n    navigateTo:\n        | \"REVISION\"\n        | \"ORDER-BUSINESS\"\n        | \"SPOT-APPROVAL\"\n        | \"LINE-DETAILS\"\n        | \"ORDER-HISTORY-BUSINESS\"\n        | \"STATION-BUSINESS-RULES-HISTORY\";\n    revisionNumberForDisplay: string;\n    revisionNumber: number;\n    roId: number | null;\n    showViewDetails: boolean;\n    displayTime: string;\n    showExpandOrCollapseIcon: boolean;\n    isRowExpanded: boolean | null;\n    revisionState: \"confirmed\" | \"cancelled\" | \"proposed\";\n    backgroundColor: string;\n    hideRow: boolean;\n    rowType: \"MAIN_ROW\" | \"SUB_ROW\" | \"COMMON_ROW\";\n    revisionNumberAndState: string;\n    userDetails: string;\n    orderDetailsPopUpData: OrderDetailsUpdate[];\n    constructor(\n        data: OrderHistory,\n        lightBluebackground: boolean,\n        mainRow: boolean,\n        showExpandOrCollapseIcon: boolean,\n        orderType: string,\n    ) {\n        this.name = data.Name;\n        this.time = data.Time;\n        this.date = data.Date.split(\" \")[0];\n        this.userType = data.UserType;\n        this.revisionNumber = data.RevisionNumber;\n        this.roId = data.RoId ?? null;\n        this.revisionNumberForDisplay = data.RevisionNumberForDisplay;\n        this.revisionState = data.RevisionState;\n        this.showViewDetails = data.ShowViewDetails;\n        this.navigateTo = data.NavigateTo;\n        this.activityName = data.ActivityName;\n        this.description =\n            (data.Description === \"\" || !data.Description) && !this.showViewDetails ? \"-\" : data.Description;\n        this.userDetails = this.name + (data.UserType ? ` (${data.UserType})` : \"\");\n        this.isRowExpanded = false;\n        this.displayTime = AnnaDateTimeFormatService.formatTwentyFourHourTimeToHHMMAFormat(data.Time);\n        this.revisionNumberAndState = data.RevisionNumberAndState;\n        this.orderDetailsPopUpData = data.OrderDetailsPopUpData;\n\n        if (\n            !data.RevisionNumber ||\n            data.RevisionState === \"proposed\" ||\n            [\"Order onboarded on ANNA from WO Traffic\", \"Setup revision generated\"].includes(data.ActivityName)\n        ) {\n            this.hideRow = false;\n            this.backgroundColor = data.RevisionState === \"proposed\" ? \"#F5F5F5\" : \"#fff\";\n            this.showExpandOrCollapseIcon = false;\n            this.rowType = \"COMMON_ROW\";\n        } else if (\n            (data.RevisionNumber % 1 === 0 && data.ActivityName !== \"Sales Manager Review complete\") ||\n            (data.RevisionNumber % 1 !== 0 && data.RevisionState === \"cancelled\" && mainRow)\n        ) {\n            this.hideRow = false;\n            this.backgroundColor = lightBluebackground\n                ? ColorCodesForHistotyTable.lightBlue\n                : ColorCodesForHistotyTable.darkBlue;\n            // this.showExpandOrCollapseIcon = (data.activityName.toLowerCase() == \"new seller user revision generated\" ||\n            //     ([\"Non-rep\", \"Rep\", \"WOP\", \"WO Traffic\"].includes(orderType) && data.activityName.toLowerCase() == \"new buyer revision generated\"))\n            // ? false : true;\n            this.showExpandOrCollapseIcon = showExpandOrCollapseIcon;\n            this.revisionNumberAndState =\n                this.revisionNumberForDisplay + (this.revisionState ? ` (${this.revisionState})` : \"\");\n            this.rowType = \"MAIN_ROW\";\n        } else {\n            this.hideRow = true;\n            this.backgroundColor = \"#F5F5F5\";\n            this.showExpandOrCollapseIcon = false;\n            this.rowType = \"SUB_ROW\";\n        }\n        this.isRowExpanded = false;\n        this.displayTime = AnnaDateTimeFormatService.formatTwentyFourHourTimeToHHMMAFormat(data.Time);\n    }\n}\n\nexport enum ColorCodesForHistotyTable {\n    lightBlue = \"#EFF6FF\",\n    darkBlue = \"#D8EAFF\",\n}\n\nexport interface TableHeader {\n    name: string;\n    objectKey: string;\n    width: string;\n    isSortRequired: boolean;\n    isFilterRequired: boolean;\n    filter?: \"DATE\" | \"TIME\" | \"CHECKBOX\";\n    filterSortObjectKeys?: string;\n    disableTooltipIcon: boolean;\n}\n","import { InjectionToken } from \"@angular/core\";\nimport { Observable } from \"rxjs\";\n\nexport const ORDER_HISTORY_PAGE_SERVICE_TOKEN: InjectionToken<IOrderHistoryBackendService> =\n    new InjectionToken<IOrderHistoryBackendService>(\"OrderHistoryBackendService token\");\n\nexport interface IOrderHistoryBackendService {\n    getOrderHistory(payload: any): Observable<any>;\n    getOrderHistoryPeriodFilterData(payload: any): Observable<any>;\n}\n","import { Injectable } from \"@angular/core\";\n\nimport { TableColumnKeyConstants, TableHeaderNames } from \"../constants/order-hitory.contsant\";\nimport { TableHeader } from \"../models/orderHistory.model\";\n\n@Injectable({\n    providedIn: \"root\",\n})\nexport class OrderHistoryService {\n    filtersAppliedRouteChange: boolean = false;\n    lastestHistoryTabFilters: string;\n\n    returnOrderDetailsUpdatePopupTableHeaders(): string[] {\n        return [\"DESCRIPTION\", \"PREVIOUS\", \"UPDATED\"];\n    }\n\n    returnHiatusDetailsPopupTableHeaders(): string[] {\n        return [\"PREVIOUS\", \"UPDATED\"];\n    }\n    returnHiatusDetailsPopupTableObjectKeys(): string[] {\n        return [\"PreviousData\", \"UpdatedData\"];\n    }\n\n    returnOrderDetailsUpdatePopupTableObjectKeys(): string[] {\n        return [\"Description\", \"PreviousData\", \"UpdatedData\"];\n    }\n\n    returnOrderHistoryTableHedaers(): TableHeader[] {\n        return [\n            {\n                name: TableHeaderNames.DATE,\n                objectKey: TableColumnKeyConstants.DATE,\n                isSortRequired: true,\n                isFilterRequired: true,\n                disableTooltipIcon: false,\n                filter: \"DATE\",\n                filterSortObjectKeys: \"date\",\n                width: \"8ch\",\n            },\n            {\n                name: TableHeaderNames.TIME,\n                objectKey: TableColumnKeyConstants.TIME,\n                isSortRequired: true,\n                isFilterRequired: true,\n                disableTooltipIcon: false,\n                filter: \"TIME\",\n                filterSortObjectKeys: \"time\",\n                width: \"5.3ch\",\n            },\n            {\n                name: TableHeaderNames.REVISION_NUMBER,\n                objectKey: TableColumnKeyConstants.REVISION_NUMBER,\n                isSortRequired: true,\n                isFilterRequired: true,\n                disableTooltipIcon: false,\n                filter: \"CHECKBOX\",\n                filterSortObjectKeys: \"revisionNumberForDisplay\",\n                width: \"10ch\",\n            },\n            {\n                name: TableHeaderNames.USER,\n                objectKey: TableColumnKeyConstants.USER,\n                isSortRequired: true,\n                isFilterRequired: true,\n                disableTooltipIcon: false,\n                filter: \"CHECKBOX\",\n                filterSortObjectKeys: \"userDetails\",\n                width: \"12ch\",\n            },\n            {\n                name: TableHeaderNames.ACTIIVTY,\n                objectKey: TableColumnKeyConstants.ACTIIVTY,\n                isSortRequired: true,\n                isFilterRequired: true,\n                disableTooltipIcon: false,\n                filter: \"CHECKBOX\",\n                filterSortObjectKeys: \"activityName\",\n                width: \"20ch\",\n            },\n            {\n                name: TableHeaderNames.DETAILS,\n                objectKey: TableColumnKeyConstants.DETAILS,\n                isSortRequired: false,\n                isFilterRequired: false,\n                disableTooltipIcon: false,\n                width: \"40ch\",\n            },\n        ];\n    }\n}\n","import { NgClass, NgFor, NgIf, NgStyle, NgTemplateOutlet } from \"@angular/common\";\nimport { HttpResponse } from \"@angular/common/http\";\nimport {\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    EventEmitter,\n    Inject,\n    Input,\n    OnChanges,\n    OnInit,\n    Output,\n    SimpleChanges,\n    TemplateRef,\n    ViewChild,\n} from \"@angular/core\";\nimport { Router } from \"@angular/router\";\nimport {\n    AnnaCoreModule,\n    AnnaDateTimeFormatService,\n    AnnaFilterService,\n    AnnaGtHelperService,\n    AnnaPersistingFilterService,\n    AnnaSortService,\n    ErrorCodes,\n    RadioButtonModel,\n} from \"@annalib/anna-core\";\nimport {\n    AnnaDesignComponentsLibModule,\n    DatepickerService,\n    PeriodSelectionPopUp,\n    StartDateConsideringFactor,\n} from \"@annalib/anna-design-components-lib\";\nimport { NgbDate, NgbModal, NgbTooltip } from \"@ng-bootstrap/ng-bootstrap\";\nimport dayjs from \"dayjs\";\nimport { cloneDeep, groupBy, isEqual, uniq, uniqWith } from \"lodash-es\";\nimport { NgxSkeletonLoaderModule } from \"ngx-skeleton-loader\";\nimport { ToastrService } from \"ngx-toastr\";\n\n// eslint-disable-next-line import/no-cycle\nimport { PrimaryDetails } from \"../../public-api\";\nimport { SchedulePostingReportPopupComponent } from \"../schedule-posting-report-popup/schedule-posting-report-popup.component\";\nimport { OrderTypeConstants } from \"./constants/order-hitory.contsant\";\nimport { OrderHistory, OrderHistoryForTable, OrderHistoryResponse, TableHeader } from \"./models/orderHistory.model\";\nimport { IOrderHistoryBackendService, ORDER_HISTORY_PAGE_SERVICE_TOKEN } from \"./order-history-backend-service.token\";\nimport { OrderHistoryService } from \"./services/order-history.service\";\n\n@Component({\n    selector: \"anna-feature-order-history\",\n    templateUrl: \"./order-history.component.html\",\n    styleUrls: [\"./order-history.component.scss\"],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [\n        NgIf,\n        AnnaDesignComponentsLibModule,\n        NgxSkeletonLoaderModule,\n        NgFor,\n        NgClass,\n        NgbTooltip,\n        AnnaCoreModule,\n        NgStyle,\n        NgTemplateOutlet,\n        SchedulePostingReportPopupComponent,\n    ]\n})\nexport class OrderHistoryComponent implements OnInit, OnChanges {\n    @Input() userType: \"SELLER\" | \"BUYER\";\n    @Input() primaryOrderData: PrimaryDetails;\n    @Input() firstHistorydate: string;\n    @Input() lastHistorydate: string;\n    @Input() filtersFromRoute: any;\n    @Input() queryParams: any;\n    @Input() timezone: string;\n    @Input() persistingFilterPeriodData: PeriodSelectionPopUp;\n\n    @Output() goToPage = new EventEmitter<{\n        page:\n        | \"REVISION\"\n        | \"ORDER-BUSINESS\"\n        | \"SPOT-APPROVAL\"\n        | \"LINE-DETAILS\"\n        | \"ORDER-HISTORY-BUSINESS\"\n        | \"BUYER-CONTACT-HISTORY\"\n        | \"REP-CONTACT-HISTORY\"\n        | \"STATION-BUSINESS-RULES-HISTORY\";\n        revisionNumber?: number;\n        roId?: number | null;\n    }>();\n\n    orderHistoryResponse: OrderHistory[];\n    historyApplicableDate: string;\n    tableHeaders: TableHeader[];\n    historyDataReorderedAndGroupedForTable: OrderHistoryForTable[] | any = [];\n    historyDataReorderedAndGrouped: OrderHistoryForTable[] = [];\n    numberOfSkeletonRow: number[] = Array(10).fill(0);\n    historyGroupedBasedOnRevisionNumber: any;\n    loading: boolean = true;\n    noData: boolean = false;\n    disableClearButton: boolean = true;\n\n    popupTableHeaders: string[];\n    popupTableObjectKeys: string[];\n    popupTableData: any[];\n    popupDate: string;\n    popupTime: string;\n    popupUserName: string;\n    popupTitle: string = \"Order Details Updated\";\n    filterAlignment: string = \"auto\";\n    popupHeader: string;\n    tooltip: any;\n    filterTabObjects: any[];\n    tooltipRadioTextMap: Map<any, any>;\n\n    periodModalTitle: string;\n    periodModalMessage: string;\n    startDateConsideringFactor: StartDateConsideringFactor = StartDateConsideringFactor.FLIGHT_START_DATE;\n    flightPeriodData: { statDate: string; endDate: string };\n    selectedFilterStartDate: string;\n    selectedFilterEndDate: string;\n    isFlightPeriodOfSameMonth: boolean;\n    EntireRangeSelectionMessage: string;\n    disablePeriodSelection: boolean = false;\n    orderDetailsUpdateModalReference: any;\n    ngbModalOptions: any;\n    openschedulePostingReportPopup: boolean;\n\n    @ViewChild(\"orderDetailsUpdateModal\") orderDetailsUpdateModal: TemplateRef<any>;\n\n    constructor(\n        private cdRef: ChangeDetectorRef,\n        private router: Router,\n        private toastr: ToastrService,\n        public annaFilterService: AnnaFilterService,\n        private annaSortService: AnnaSortService,\n        private annaGtService: AnnaGtHelperService,\n        private orderHistoryService: OrderHistoryService,\n        private persistingFilterService: AnnaPersistingFilterService,\n        private annaDateTimeFormatService: AnnaDateTimeFormatService,\n        private dpService: DatepickerService,\n        private modalService: NgbModal,\n        @Inject(ORDER_HISTORY_PAGE_SERVICE_TOKEN)\n        public consumingProjectOrderHistoryService: IOrderHistoryBackendService,\n    ) {\n        this.ngbModalOptions = {\n            size: \"md\",\n            windowClass: \"order-details-modal\",\n        };\n    }\n\n    ngOnChanges(changes: SimpleChanges) {\n        if (changes.primaryOrderData && changes.primaryOrderData.currentValue) {\n            this.disablePeriodSelection =\n                this.primaryOrderData.orderInfo.orderType === OrderTypeConstants.UD_LIABILITY_SET;\n        }\n        if (changes.filtersFromRoute && changes.filtersFromRoute.currentValue) {\n            this.initFiltersFromRoute();\n            if (this.flightPeriodData) {\n                this.initPeriodSelectionVariables();\n                this.fetchOrderHistoryData();\n            }\n        }\n        if (changes.firstHistorydate && changes.firstHistorydate.currentValue) {\n            this.initPeriodSelectionVariables();\n        }\n    }\n\n    ngOnInit(): void {\n        this.setFilterAlignmentBasedOnScreenResolution();\n        this.setTableHeaders();\n    }\n\n    setFilterAlignmentBasedOnScreenResolution() {\n        const viewportHeight = window.innerHeight;\n        if (viewportHeight < 740) {\n            this.filterAlignment = \"left right\";\n        } else {\n            this.filterAlignment = \"bottom\";\n        }\n    }\n\n    setTableHeaders() {\n        this.tableHeaders = this.orderHistoryService.returnOrderHistoryTableHedaers();\n        this.setActiveStateObject();\n    }\n\n    applyPeriodSelection(value: any) {\n        this.orderHistoryService.filtersAppliedRouteChange = true;\n        this.orderHistoryResponse = null;\n        this.setSelectedPeriodData(value);\n        this.fetchOrderHistoryData();\n    }\n\n    createPayload() {\n        return {\n            orderId: this.primaryOrderData.orderId,\n            stationId: this.primaryOrderData.stationId,\n            startDate: dayjs(this.selectedFilterStartDate).format(\"YYYY-MM-DD\"),\n            endDate: dayjs(this.selectedFilterEndDate).format(\"YYYY-MM-DD\"),\n        };\n    }\n\n    fetchOrderHistoryData() {\n        this.loading = true;\n        this.consumingProjectOrderHistoryService.getOrderHistory(this.createPayload()).subscribe(\n            (response: HttpResponse<OrderHistoryResponse>) => {\n                this.historyApplicableDate = response.body.HistoryApplicableDate;\n                this.loading = false;\n                if (response.status === ErrorCodes.NO_CONTENT) {\n                    this.getAllOrdersErrorHandler();\n                } else {\n                    this.orderHistoryResponse = response.body.OrderHistoryList;\n                    this.onSuccessfullyReceivingData();\n                }\n            },\n            (error: any) => {\n                this.getAllOrdersErrorHandler();\n                this.toastr.error(\"Something went wrong! Please try again.\");\n            },\n        );\n    }\n\n    getAllOrdersErrorHandler() {\n        this.loading = false;\n        this.noData = true;\n        this.orderHistoryResponse = [];\n    }\n\n    setSelectedPeriodData(value: any) {\n        this.selectedFilterStartDate = value.startDate;\n        this.selectedFilterEndDate = value.endDate;\n    }\n\n    onSuccessfullyReceivingData(): void {\n        let mainOrCommonRowsSortedBasedOnDateAndTime: OrderHistory[] = [];\n        this.historyDataReorderedAndGroupedForTable = [];\n        const propsedRevisionNumber: number =\n            this.orderHistoryResponse.filter((n: OrderHistory) => n.RevisionState === \"proposed\").length > 0\n                ? this.orderHistoryResponse.filter((n: OrderHistory) => n.RevisionState === \"proposed\")[0]\n                    .RevisionNumber\n                : null;\n\n        this.orderHistoryResponse.forEach((item: OrderHistory) => {\n            item.RevisionNumberAndState = cloneDeep(item.RevisionNumberForDisplay);\n        });\n        mainOrCommonRowsSortedBasedOnDateAndTime = this.orderHistoryResponse.filter(\n            (n: OrderHistory) =>\n                !n.RevisionNumber ||\n                (n.RevisionNumber % 1 === 0 && n.ActivityName !== \"Sales Manager Review complete\") ||\n                (propsedRevisionNumber && n.RevisionNumber === propsedRevisionNumber) ||\n                (n.RevisionNumber % 1 !== 0 && n.RevisionState === \"cancelled\"),\n        );\n\n        // to filter out same rev group, multiple cancelled items\n        mainOrCommonRowsSortedBasedOnDateAndTime = uniqWith(\n            mainOrCommonRowsSortedBasedOnDateAndTime,\n            (a, b) =>\n                a.RevisionNumber === b.RevisionNumber &&\n                a.RevisionState === \"cancelled\" &&\n                b.RevisionState === \"cancelled\",\n        );\n\n        this.historyGroupedBasedOnRevisionNumber = groupBy(this.orderHistoryResponse, \"RevisionNumber\");\n\n        const formattedData = this.formatResponseForTable(mainOrCommonRowsSortedBasedOnDateAndTime) as OrderHistory[];\n\n        let lightBluebackground: boolean = true;\n        formattedData.forEach((item) => {\n            const obj: OrderHistoryForTable = new OrderHistoryForTable(\n                item,\n                lightBluebackground,\n                mainOrCommonRowsSortedBasedOnDateAndTime.includes(item),\n                this.historyGroupedBasedOnRevisionNumber[item.RevisionNumber].length > 1,\n                this.primaryOrderData.orderInfo.orderType,\n            );\n            this.historyDataReorderedAndGroupedForTable.push(obj);\n            lightBluebackground =\n                item.RevisionNumber && obj.rowType === \"MAIN_ROW\" ? !lightBluebackground : lightBluebackground;\n        });\n\n        this.historyDataReorderedAndGrouped = cloneDeep(this.historyDataReorderedAndGroupedForTable);\n        this.annaSortService.noSortingAppliedData = cloneDeep(this.historyDataReorderedAndGrouped);\n        this.historyGroupedBasedOnRevisionNumber = groupBy(this.historyDataReorderedAndGrouped, \"revisionNumber\");\n\n        if (this.annaFilterService.appliedFiltersArray.length > 0) {\n            this.historyDataReorderedAndGroupedForTable = this.annaFilterService.filterData(\n                this.historyDataReorderedAndGroupedForTable,\n                \"\",\n            );\n            this.filterAppliedToTable(this.historyDataReorderedAndGroupedForTable, false);\n        } else if (this.annaGtService.isSortingAppliedToTable()) {\n            this.historyDataReorderedAndGroupedForTable = this.applySorting(\n                this.historyDataReorderedAndGroupedForTable,\n                false,\n            );\n            this.annaFilterService.updateStateOfAllTheKeys(this.annaSortService.columnSortState);\n        }\n        this.disableEnableEachColumnTooltipIcon();\n        this.disableEnableClearAll();\n        this.setNoData();\n        this.cdRef.detectChanges();\n    }\n\n    formatResponseForTable(\n        mainOrCommonRows: OrderHistory[] | OrderHistoryForTable[],\n    ): OrderHistoryForTable[] | OrderHistory[] {\n        let i: number = 0;\n        const orderHistoryForTable: any[] = [];\n        while (i < mainOrCommonRows.length) {\n            const obj: any = cloneDeep(mainOrCommonRows[i]);\n            if (!obj.RevisionNumber || obj.RevisionState === \"proposed\") {\n                if (\n                    obj.RevisionNumber === 0 ||\n                    (obj.RevisionState === \"proposed\" &&\n                        orderHistoryForTable.filter((n: any) => n.RevisionState === \"proposed\").length === 0)\n                ) {\n                    obj.RevisionNumberAndState =\n                        obj.RevisionNumberForDisplay + (obj.RevisionState ? ` (${obj.RevisionState})` : \"\");\n                }\n                orderHistoryForTable.push(obj);\n            } else if (obj.RevisionNumber % 1 !== 0) {\n                const itemsToPush = this.historyGroupedBasedOnRevisionNumber[obj.RevisionNumber];\n                itemsToPush[0].RevisionNumberAndState =\n                    itemsToPush[0].RevisionNumberForDisplay +\n                    (itemsToPush[0].RevisionState ? ` (${itemsToPush[0].RevisionState})` : \"\");\n                orderHistoryForTable.push(...itemsToPush);\n            } else {\n                const itemsToPush = this.historyGroupedBasedOnRevisionNumber[obj.RevisionNumber];\n                itemsToPush[0].RevisionNumberAndState =\n                    itemsToPush[0].RevisionNumberForDisplay +\n                    (itemsToPush[0].RevisionState ? ` (${itemsToPush[0].RevisionState})` : \"\");\n                orderHistoryForTable.push(...itemsToPush);\n                const revisions = this.orderHistoryResponse.filter(\n                    (item) =>\n                        item.RevisionNumber &&\n                        item.RevisionNumber < obj.RevisionNumber &&\n                        item.RevisionNumber % 1 !== 0 &&\n                        this.historyGroupedBasedOnRevisionNumber[obj.RevisionNumber].length > 1,\n                );\n                if (revisions.length > 0) {\n                    orderHistoryForTable.push(...this.historyGroupedBasedOnRevisionNumber[revisions[0].RevisionNumber]);\n                }\n            }\n            i += 1;\n        }\n        return orderHistoryForTable;\n    }\n\n    setNoData() {\n        this.noData =\n            this.historyDataReorderedAndGroupedForTable.length === 0 ||\n            this.historyDataReorderedAndGroupedForTable.filter((n: OrderHistoryForTable) => !n.hideRow).length === 0;\n    }\n\n    expandOrCollapseRow(row: OrderHistoryForTable, expand: boolean) {\n        if (expand) {\n            this.collapseIfAnyRowExpanded();\n        }\n        row.isRowExpanded = !row.isRowExpanded;\n        const i: number =\n            this.historyDataReorderedAndGroupedForTable.findIndex((n: any) => n.revisionNumber === row.revisionNumber) +\n            1;\n        this.setHideRow(i, !expand);\n    }\n\n    collapseIfAnyRowExpanded() {\n        const anyOpenRowIndex: number = this.historyDataReorderedAndGroupedForTable.findIndex(\n            (n: any) => n.isRowExpanded,\n        );\n        if (anyOpenRowIndex !== -1) {\n            this.historyDataReorderedAndGroupedForTable[anyOpenRowIndex].isRowExpanded = false;\n            this.setHideRow(anyOpenRowIndex + 1, true);\n        }\n    }\n\n    setHideRow(startIndex: number, setTo: boolean) {\n        let start = startIndex;\n        while (\n            this.historyDataReorderedAndGroupedForTable[start] &&\n            this.historyDataReorderedAndGroupedForTable[start].rowType === \"SUB_ROW\"\n        ) {\n            this.historyDataReorderedAndGroupedForTable[start].hideRow = setTo;\n            start += 1;\n        }\n    }\n\n    initFiltersFromRoute() {\n        this.annaFilterService.appliedFiltersArray = this.filtersFromRoute.appliedFilters\n            ? this.filtersFromRoute.appliedFilters\n            : [];\n        this.annaFilterService.tooltipSelectedMap = this.filtersFromRoute.selectedFilterData\n            ? new Map(JSON.parse(this.filtersFromRoute.selectedFilterData))\n            : new Map();\n        this.annaSortService.columnSortState = this.filtersFromRoute.sortState\n            ? new Map(JSON.parse(this.filtersFromRoute.sortState))\n            : new Map();\n        this.annaFilterService.initialValueMap = new Map();\n        if (this.annaFilterService.tooltipSelectedMap.has(\"date\")) {\n            const dates = this.annaFilterService.tooltipSelectedMap.get(\"date\");\n            dates.fromDate = dayjs(dates.fromDate);\n            dates.toDate = dayjs(dates.toDate);\n            this.annaFilterService.tooltipSelectedMap.set(\"date\", dates);\n        }\n    }\n\n    filterAppliedToTable(tableData: OrderHistoryForTable[], updateNavigationHistory: boolean) {\n        this.historyDataReorderedAndGroupedForTable = cloneDeep(tableData);\n        if (this.annaFilterService.appliedFiltersArray.length > 0) {\n            this.historyDataReorderedAndGroupedForTable.forEach((n: OrderHistoryForTable) => {\n                n.hideRow = false;\n                n.isRowExpanded = false;\n                n.showExpandOrCollapseIcon = false;\n            });\n        } else {\n            this.historyDataReorderedAndGroupedForTable.forEach((n: OrderHistoryForTable) => {\n                n.isRowExpanded = false;\n                if (n.rowType === \"MAIN_ROW\") {\n                    n.showExpandOrCollapseIcon = true;\n                } else if (n.rowType === \"SUB_ROW\") {\n                    n.hideRow = true;\n                }\n            });\n        }\n        this.disableEnableEachColumnTooltipIcon();\n        this.annaFilterService.updateStateOfAllTheKeys(this.annaSortService.columnSortState);\n        this.disableEnableClearAll();\n        if (this.annaGtService.isSortingAppliedToTable()) {\n            this.historyDataReorderedAndGroupedForTable = this.applySorting(\n                this.historyDataReorderedAndGroupedForTable,\n                false,\n            );\n        }\n        this.annaSortService.noSortingAppliedData = cloneDeep(this.historyDataReorderedAndGroupedForTable);\n        this.closeTooltip();\n        this.setNoData();\n        if (updateNavigationHistory) {\n            this.updateNavigationHistory();\n        }\n    }\n\n    sortingAppliedToTable(sortBy: \"DEFAULT\" | \"ASC\" | \"DESC\", updateNavigationHistory: boolean) {\n        this.collapseIfAnyRowExpanded();\n\n        if (this.annaFilterService.appliedFiltersArray.length === 0) {\n            const tableData = this.applySorting(\n                this.historyDataReorderedAndGroupedForTable.filter(\n                    (n: OrderHistoryForTable) => n.rowType !== \"SUB_ROW\",\n                ),\n                sortBy === \"DEFAULT\",\n            );\n            this.historyDataReorderedAndGroupedForTable =\n                sortBy === \"DEFAULT\" ? cloneDeep(tableData) : cloneDeep(this.formatResponseForTable(tableData));\n        } else {\n            this.historyDataReorderedAndGroupedForTable = this.applySorting(\n                this.historyDataReorderedAndGroupedForTable,\n                sortBy === \"DEFAULT\",\n            );\n        }\n        this.annaFilterService.updateStateOfAllTheKeys(this.annaSortService.columnSortState);\n        this.disableEnableClearAll();\n        if (updateNavigationHistory) {\n            this.updateNavigationHistory();\n        }\n    }\n\n    applySorting(data: OrderHistoryForTable[], sortByDefault: boolean): OrderHistoryForTable[] {\n        this.closeTooltip();\n        let tableData = [];\n        if (sortByDefault) {\n            tableData = cloneDeep(this.annaSortService.noSortingAppliedData);\n        } else if (!this.annaGtService.isSortingAppliedToTable()) {\n            tableData = cloneDeep(data);\n        } else {\n            tableData = this.annaGtService.callSort(data);\n        }\n        return tableData;\n    }\n\n    viewDetailsClicked(row: OrderHistoryForTable) {\n        const activityNamesToCheckForHiatusDates = [\n            \"Hiatus dates updated by Seller\",\n            \"Hiatus dates updated by Buyer\",\n            \"Hiatus dates entered on WO Traffic\",\n            \"Hiatus dates approved by Sales Manager\",\n            \"Hiatus dates rejected by Sales Manager\",\n        ];\n        const activityNamesToOpenPostedReportEmailSchedule = [\n            \"Order posting report email scheduled\",\n            \"Order posting report email schedule updated\",\n        ];\n        if (row.activityName === \"Order details updated\") {\n            // open popup\n            this.openOrderDetailsUpdateModal(row);\n        } else if (activityNamesToOpenPostedReportEmailSchedule.some((name) => row.activityName?.includes(name))) {\n            this.openScheduledPostingReportEmailPopup();\n        } else if (activityNamesToCheckForHiatusDates.some((name) => row.activityName?.includes(name))) {\n            this.openHiatusDetailsUpdateModal(row);\n        } else {\n            this.goToPage.emit({\n                page: row.navigateTo,\n                revisionNumber: row.revisionNumber,\n                roId: row.roId,\n            });\n        }\n    }\n\n    bindTheValueToToolTip(tooltip: any, header: TableHeader) {\n        if (tooltip === this.tooltip) {\n            this.closeTooltip();\n        } else {\n            this.openTooltip(tooltip, header.filterSortObjectKeys, header);\n        }\n    }\n\n    isTooltipActive(header: any[]) {\n        return this.annaFilterService.isTooltipActive(header, this.annaSortService.columnSortState);\n    }\n\n    openTooltip(tooltip: any, header: string, columnHeader: TableHeader) {\n        this.closeTooltip();\n        this.tooltip = tooltip;\n        this.tooltip.open();\n        this.filterTabObjects = [\n            new RadioButtonModel(header, header, columnHeader.isSortRequired, columnHeader.isFilterRequired),\n        ];\n    }\n\n    closeTooltip() {\n        if (this.tooltip && this.tooltip.isOpen()) {\n            this.tooltip.close();\n        }\n        this.tooltip = null;\n    }\n\n    disableEnableEachColumnTooltipIcon() {\n        this.tableHeaders.forEach((item: TableHeader) => {\n            if (item.isSortRequired || item.isFilterRequired) {\n                let values = [];\n                item.disableTooltipIcon = true;\n\n                const latestFilters: string[] = this.annaFilterService.appliedFiltersArray;\n\n                if (\n                    latestFilters.length > 0 &&\n                    item.disableTooltipIcon &&\n                    latestFilters[latestFilters.length - 1] === item.filterSortObjectKeys\n                ) {\n                    item.disableTooltipIcon = false;\n                }\n\n                if (item.disableTooltipIcon) {\n                    if (item.filterSortObjectKeys === \"date\") {\n                        item.disableTooltipIcon = !(\n                            uniq(this.historyDataReorderedAndGroupedForTable.map((u: { [x: string]: any }) => u.date))\n                                .length > 1\n                        );\n                    } else {\n                        values = this.historyDataReorderedAndGroupedForTable.map(\n                            (u: { [x: string]: any }) => u[item.filterSortObjectKeys],\n                        );\n                        if (\n                            (item.filter === \"CHECKBOX\" && uniq(values).filter((n) => n != null).length > 1) ||\n                            (item.filter !== \"CHECKBOX\" &&\n                                uniq(values).filter((n) => n != null && n !== \"-\").length > 1)\n                        ) {\n                            item.disableTooltipIcon = false;\n                        }\n                    }\n                }\n            }\n        });\n        this.cdRef.detectChanges();\n    }\n\n    initPeriodSelectionVariables() {\n        this.periodModalTitle = \"Edit Period\";\n        this.periodModalMessage = \"Select period for which you want to view the order history.\";\n        this.EntireRangeSelectionMessage = \"Show order's entire history\";\n\n        this.flightPeriodData = {\n            statDate: this.firstHistorydate,\n            endDate: this.lastHistorydate,\n        };\n        const ngbFlightStartDate = this.annaDateTimeFormatService.convertToNgbDate(this.firstHistorydate, \"MM-DD-YYYY\");\n        const ngbFlightEndDate = this.annaDateTimeFormatService.convertToNgbDate(this.lastHistorydate, \"MM-DD-YYYY\");\n\n        if (this.primaryOrderData.orderInfo.orderFlightStatus === \"COMPLETED\")\n            this.startDateConsideringFactor = StartDateConsideringFactor.FLIGHT_END_DATE;\n\n        const startDateData = this.dpService.findBroadcastYearAndMonthForDate(NgbDate.from(ngbFlightStartDate));\n        const endDateData = this.dpService.findBroadcastYearAndMonthForDate(NgbDate.from(ngbFlightEndDate));\n        this.isFlightPeriodOfSameMonth = isEqual(startDateData, endDateData);\n\n        if (this.isFlightPeriodOfSameMonth) {\n            this.persistingFilterPeriodData = {\n                isEntireFlightPeriod: true,\n                startDate: this.selectedFilterStartDate ? dayjs(this.selectedFilterStartDate).format(\"MM/DD/YYYY\") : dayjs(this.firstHistorydate).format(\"MM/DD/YYYY\"),\n                endDate: this.selectedFilterEndDate ? dayjs(this.selectedFilterEndDate).format(\"MM/DD/YYYY\") : dayjs(this.lastHistorydate).format(\"MM/DD/YYYY\"),\n                calendarType: \"broadcast\",\n                month: \"\",\n                year: \"\",\n                periodMode: \"\",\n                quarter: \"\",\n            };\n        }\n        if (this.primaryOrderData.orderInfo.orderType === OrderTypeConstants.UD_LIABILITY_SET) {\n            this.persistingFilterPeriodData = {\n                isEntireFlightPeriod: true,\n                startDate: dayjs(this.firstHistorydate).format(\"MM/DD/YYYY\"),\n                endDate: dayjs(this.lastHistorydate).format(\"MM/DD/YYYY\"),\n                calendarType: \"broadcast\",\n                month: \"\",\n                year: \"\",\n                periodMode: \"\",\n                quarter: \"\",\n            };\n            this.selectedFilterStartDate = this.firstHistorydate;\n            this.selectedFilterEndDate = this.lastHistorydate;\n            this.fetchOrderHistoryData();\n        }\n    }\n\n    clearAllFilters() {\n        this.annaFilterService.tooltipSelectedMap = new Map();\n        this.annaFilterService.selectedRadio = null;\n        this.annaFilterService.appliedFiltersArray = [];\n        this.annaSortService.columnSortState = new Map();\n        this.annaSortService.noSortingAppliedData = cloneDeep(this.historyDataReorderedAndGrouped);\n        this.historyDataReorderedAndGroupedForTable = cloneDeep(this.historyDataReorderedAndGrouped);\n        this.annaFilterService.updateStateOfAllTheKeys(this.annaSortService.columnSortState);\n        this.disableEnableEachColumnTooltipIcon();\n        this.disableClearButton = true;\n        this.noData = false;\n        this.updateNavigationHistory();\n    }\n\n    disableEnableClearAll() {\n        this.disableClearButton = this.annaGtService.enableOrDisableClearAllBtn();\n    }\n\n    updateNavigationHistory() {\n        this.orderHistoryService.filtersAppliedRouteChange = true;\n        const queryParams = this.prepareQueryParamOnFilterApplication();\n\n        const updatedParentQueryParams = this.queryParams ? cloneDeep(this.queryParams) : {};\n\n        if (Object.keys(queryParams).length > 0) {\n            const hashedQueryParams = this.persistingFilterService.storeKeyValueInLocalStorage(queryParams);\n            this.annaGtService.updateQueryParamsFilter(\"filters\", hashedQueryParams, \"ADD\", updatedParentQueryParams);\n        } else {\n            this.annaGtService.updateQueryParamsFilter(\"filters\", {}, \"DELETE\", updatedParentQueryParams);\n        }\n\n        if (Object.keys(updatedParentQueryParams).length > 0) {\n            this.router.navigate([], {\n                queryParams: updatedParentQueryParams,\n            });\n        } else {\n            this.orderHistoryService.filtersAppliedRouteChange = true;\n            this.router.navigate([]);\n        }\n    }\n\n    prepareQueryParamOnFilterApplication() {\n        const query: any = {};\n\n        if (this.annaFilterService.appliedFiltersArray.length > 0) {\n            query.appliedFilters = this.annaFilterService.appliedFiltersArray;\n            query.selectedFilterData = JSON.stringify(Array.from(this.annaFilterService.tooltipSelectedMap));\n        }\n\n        if (this.annaGtService.isSortingAppliedToTable()) {\n            query.sortState = JSON.stringify(Array.from(this.annaSortService.columnSortState));\n        }\n        this.setLatestFilters(query);\n\n        return query;\n    }\n\n    setLatestFilters(queryParams: any) {\n        this.orderHistoryService.lastestHistoryTabFilters = JSON.stringify(queryParams);\n    }\n\n    setActiveStateObject() {\n        this.tableHeaders.forEach((item) => {\n            if (item.isSortRequired || item.isFilterRequired) {\n                this.annaFilterService.isFilterSortActive[item.filterSortObjectKeys] = false;\n            }\n        });\n        this.annaFilterService.resetFilterSortActiveStatus = true;\n    }\n\n    openOrderDetailsUpdateModal(row: OrderHistoryForTable) {\n        this.popupTableHeaders = this.orderHistoryService.returnOrderDetailsUpdatePopupTableHeaders();\n        this.popupTableObjectKeys = this.orderHistoryService.returnOrderDetailsUpdatePopupTableObjectKeys();\n        this.popupHeader = \"Order Details Updated\";\n        this.popupTableData = row.orderDetailsPopUpData;\n        this.popupDate = row.date;\n        this.popupTime = row.displayTime;\n        this.popupUserName = row.userDetails;\n\n        this.orderDetailsUpdateModalReference = this.modalService.open(\n            this.orderDetailsUpdateModal,\n            this.ngbModalOptions,\n        );\n    }\n    openHiatusDetailsUpdateModal(row: OrderHistoryForTable) {\n        this.popupTableHeaders = this.orderHistoryService.returnHiatusDetailsPopupTableHeaders();\n        this.popupTableObjectKeys = this.orderHistoryService.returnHiatusDetailsPopupTableObjectKeys();\n        this.popupHeader = \"Hiatus Dates Updated\";\n        this.popupTableData = row.orderDetailsPopUpData;\n        this.popupDate = row.date;\n        this.popupTime = row.displayTime;\n        this.popupUserName = row.userDetails;\n\n        this.orderDetailsUpdateModalReference = this.modalService.open(\n            this.orderDetailsUpdateModal,\n            this.ngbModalOptions,\n        );\n    }\n\n    openScheduledPostingReportEmailPopup() {\n        this.openschedulePostingReportPopup = true;\n    }\n\n    closeOrderDetailsUpdateModal() {\n        this.orderDetailsUpdateModalReference.close();\n    }\n}\n","<!-- <div *ngIf=\"timezone && userType == 'BUYER'\" class=\"timezone\">\n    Timezone: {{timezone}}\n</div> -->\n<div\n    class=\"period-selection-container\"\n    *ngIf=\"primaryOrderData && flightPeriodData\"\n>\n    <anna-design-order-container-filter-modal\n        [title]=\"periodModalTitle\"\n        [selectedData]=\"persistingFilterPeriodData\"\n        [parentQueryParams]=\"queryParams\"\n        [disablePeriodSelection]=\"loading || disablePeriodSelection || isFlightPeriodOfSameMonth\"\n        [flightPeriod]=\"flightPeriodData\"\n        [message]=\"periodModalMessage\"\n        [EntireRangeSelectionMessage]=\"EntireRangeSelectionMessage\"\n        [startDateConsideringFactor]=\"startDateConsideringFactor\"\n        (apply)=\"applyPeriodSelection($event)\"\n    >\n    </anna-design-order-container-filter-modal>\n    <button\n        class=\"clear-all-btn\"\n        *ngIf=\"!loading\"\n        (click)=\"clearAllFilters()\"\n        [disabled]=\"disableClearButton\"\n    >\n        Reset all filters\n    </button>\n</div>\n<div *ngIf=\"!primaryOrderData || !flightPeriodData\">\n    <ngx-skeleton-loader\n        count=\"1\"\n        [theme]=\"{ width: '280px', height: '24px', display: 'block', 'margin-top': '14px' }\"\n    >\n    </ngx-skeleton-loader>\n</div>\n\n<div class=\"order-history-table-container\">\n    <table class=\"order-history-table\">\n        <thead>\n            <th\n                *ngFor=\"let header of tableHeaders\"\n                [style.width]=\"header.width\"\n            >\n                <div>\n                    {{ header.name }}\n\n                    <ng-container *ngIf=\"header.filter === 'CHECKBOX'\">\n                        <span\n                            class=\"mdi mdi-filter-variant\"\n                            tooltipClass=\"non-edit-checkbox-tooltip\"\n                            [ngClass]=\"{\n                                active:\n                                    annaFilterService.isFilterSortActive &&\n                                    annaFilterService.isFilterSortActive[header.filterSortObjectKeys],\n                                disabled: header.disableTooltipIcon || loading\n                            }\"\n                            [ngbTooltip]=\"checkboxFilterTooltip\"\n                            placement=\"{{ filterAlignment }}\"\n                            container=\"body\"\n                            [autoClose]=\"'outside'\"\n                            triggers=\"manual\"\n                            #t1=\"ngbTooltip\"\n                            (click)=\"bindTheValueToToolTip(t1, header)\"\n                        >\n                        </span>\n                    </ng-container>\n\n                    <ng-container *ngIf=\"header.filter === 'DATE'\">\n                        <span\n                            class=\"mdi mdi-filter-variant\"\n                            tooltipClass=\"non-edit-datepicker-tooltip\"\n                            [ngClass]=\"{\n                                active:\n                                    annaFilterService.isFilterSortActive &&\n                                    annaFilterService.isFilterSortActive[header.filterSortObjectKeys],\n                                disabled: header.disableTooltipIcon || loading\n                            }\"\n                            [ngbTooltip]=\"dateFilterTooltip\"\n                            placement=\"bottom auto\"\n                            container=\"body\"\n                            [autoClose]=\"'outside'\"\n                            triggers=\"manual\"\n                            #t2=\"ngbTooltip\"\n                            (click)=\"bindTheValueToToolTip(t2, header)\"\n                        >\n                        </span>\n                    </ng-container>\n\n                    <ng-container *ngIf=\"header.filter === 'TIME'\">\n                        <span\n                            class=\"mdi mdi-filter-variant\"\n                            tooltipClass=\"non-edit-time-tooltip\"\n                            [ngClass]=\"{\n                                active:\n                                    annaFilterService.isFilterSortActive &&\n                                    annaFilterService.isFilterSortActive[header.filterSortObjectKeys],\n                                disabled: header.disableTooltipIcon || loading\n                            }\"\n                            [ngbTooltip]=\"timeFilterTooltip\"\n                            placement=\"bottom auto\"\n                            container=\"body\"\n                            [autoClose]=\"'outside'\"\n                            triggers=\"manual\"\n                            #t3=\"ngbTooltip\"\n                            (click)=\"bindTheValueToToolTip(t3, header)\"\n                        >\n                        </span>\n                    </ng-container>\n                </div>\n            </th>\n        </thead>\n        <tbody *ngIf=\"(!loading && orderHistoryResponse?.length > 0) || loading\">\n            <ng-container *ngIf=\"orderHistoryResponse?.length > 0\">\n                <ng-container *ngFor=\"let row of historyDataReorderedAndGroupedForTable\">\n                    <tr\n                        *ngIf=\"!row.hideRow\"\n                        [style.background]=\"row.backgroundColor\"\n                    >\n                        <ng-container *ngFor=\"let column of tableHeaders\">\n                            <td class=\"{{ column.name }}-td\">\n                                <span>\n                                    <span\n                                        annaCoreShowEllipsisTextOnHover\n                                        [innerHTML]=\"row[column.objectKey]\"\n                                        [ngStyle]=\"{\n                                            'padding-right':\n                                                !row[column.objectKey] || row[column.objectKey] === '' ? 0 : '8px'\n                                        }\"\n                                    ></span>\n                                    <ng-container *ngIf=\"column.name === 'REVISION #' && row.showExpandOrCollapseIcon\">\n                                        <i\n                                            class=\"mi mdi-arrow-drop-up\"\n                                            *ngIf=\"row.isRowExpanded\"\n                                            (click)=\"expandOrCollapseRow(row, false)\"\n                                            >s</i\n                                        >\n                                        <i\n                                            class=\"mi mdi-arrow-drop-down\"\n                                            *ngIf=\"!row.isRowExpanded\"\n                                            (click)=\"expandOrCollapseRow(row, true)\"\n                                        ></i>\n                                    </ng-container>\n                                    <button\n                                        *ngIf=\"column.name === 'DETAILS' && row.showViewDetails\"\n                                        class=\"view-link\"\n                                        (click)=\"viewDetailsClicked(row)\"\n                                    >\n                                        View Details\n                                    </button>\n                                </span>\n                            </td>\n                        </ng-container>\n                    </tr>\n                </ng-container>\n            </ng-container>\n            <ng-container\n                [ngTemplateOutlet]=\"skeletonLoading\"\n                *ngIf=\"loading\"\n            ></ng-container>\n        </tbody>\n    </table>\n</div>\n\n<ng-container\n    [ngTemplateOutlet]=\"noDataTemplate\"\n    *ngIf=\"!loading\"\n></ng-container>\n\n<ng-template #skeletonLoading>\n    <tr></tr>\n    <tr\n        class=\"loading-rows\"\n        *ngFor=\"let row of numberOfSkeletonRow\"\n    >\n        <td *ngFor=\"let column of tableHeaders\">\n            <ngx-skeleton-loader\n                count=\"1\"\n                [theme]=\"{ width: '90%', height: '1em', display: 'block', 'margin-top': '10px' }\"\n            >\n            </ngx-skeleton-loader>\n        </td>\n    </tr>\n</ng-template>\n\n<ng-template #noDataTemplate>\n    <div\n        class=\"no-data-container\"\n        *ngIf=\"noData\"\n    >\n        <anna-core-no-data-lib> </anna-core-no-data-lib>\n    </div>\n</ng-template>\n\n<ng-template #checkboxFilterTooltip>\n    <anna-core-anna-column-checkbox-filter\n        [tableData]=\"historyDataReorderedAndGroupedForTable\"\n        [clonedTableData]=\"historyDataReorderedAndGrouped\"\n        [filterTabObjects]=\"filterTabObjects\"\n        (filterAppliedToTable)=\"filterAppliedToTable($event, true)\"\n        (getSortType)=\"sortingAppliedToTable($event, true)\"\n        (closeTooltip)=\"closeTooltip()\"\n    >\n    </anna-core-anna-column-checkbox-filter>\n</ng-template>\n\n<ng-template #dateFilterTooltip>\n    <anna-core-anna-column-date-range-filter\n        [tableData]=\"historyDataReorderedAndGroupedForTable\"\n        [clonedTableData]=\"historyDataReorderedAndGrouped\"\n        [filterTabObjects]=\"filterTabObjects\"\n        (filterAppliedToTable)=\"filterAppliedToTable($event, true)\"\n        (getSortType)=\"sortingAppliedToTable($event, true)\"\n        (closeTooltip)=\"closeTooltip()\"\n    >\n    </anna-core-anna-column-date-range-filter>\n</ng-template>\n\n<ng-template #timeFilterTooltip>\n    <anna-core-anna-column-time-filter\n        [tableData]=\"historyDataReorderedAndGroupedForTable\"\n        [clonedTableData]=\"historyDataReorderedAndGrouped\"\n        [filterTabObjects]=\"filterTabObjects\"\n        (filterAppliedToTable)=\"filterAppliedToTable($event, true)\"\n        (getSortType)=\"sortingAppliedToTable($event, true)\"\n        (closeTooltip)=\"closeTooltip()\"\n    >\n    </anna-core-anna-column-time-filter>\n</ng-template>\n\n<ng-template\n    #orderDetailsUpdateModal\n    let-modal\n>\n    <div class=\"modal-header\">\n        <i\n            class=\"mi mdi-close-icon mdi-font-md close pull-right\"\n            (click)=\"closeOrderDetailsUpdateModal()\"\n        ></i>\n        <h3 class=\"modal-title\">{{ popupHeader }}</h3>\n    </div>\n    <div class=\"modal-body\">\n        <section class=\"d-flex\">\n            <div class=\"popup-date\">Date: {{ popupDate }}</div>\n            <div class=\"popup-time\">Time: {{ popupTime }}</div>\n            <div>User: {{ popupUserName }}</div>\n        </section>\n\n        <div class=\"pop-up-table-container\">\n            <table class=\"order-history-table popup-table\">\n                <thead>\n                    <th *ngFor=\"let header of popupTableHeaders\">\n                        {{ header }}\n                    </th>\n                </thead>\n\n                <tbody>\n                    <ng-container *ngFor=\"let row of popupTableData\">\n                        <tr>\n                            <ng-container *ngFor=\"let column of popupTableObjectKeys\">\n                                <td>\n                                    <div>\n                                        <span\n                                            annaCoreShowEllipsisTextOnHover\n                                            [innerHTML]=\"row[column]\"\n                                        ></span>\n                                    </div>\n                                </td>\n                            </ng-container>\n                        </tr>\n                    </ng-container>\n                </tbody>\n            </table>\n        </div>\n    </div>\n</ng-template>\n\n<anna-feature-schedule-posting-report-popup\n    *ngIf=\"openschedulePostingReportPopup\"\n    [orderId]=\"primaryOrderData?.orderId\"\n    [stationId]=\"primaryOrderData?.stationId\"\n    [popupType]=\"'VIEW'\"\n    (closePopup)=\"openschedulePostingReportPopup = false\"\n></anna-feature-schedule-posting-report-popup>\n","import { InjectionToken } from \"@angular/core\";\n\nexport const LOGIN_SERVICE_TOKEN: InjectionToken<ILoginService> = new InjectionToken<ILoginService>(\n    \"ILoginService token\",\n);\n\nexport interface ILoginService {\n    isStationInSandboxMode(value: any, logic: any): boolean;\n}\n","import { InjectionToken } from \"@angular/core\";\nimport { IGtTableHeader } from \"@annalib/anna-core\";\nimport { IdTextForDropdown } from \"@annalib/anna-design-components-lib\";\nimport { Observable } from \"rxjs\";\n\nimport { OrderListingEasyFilter, OrderListingTabsName } from \"./order-listing.model\";\n\n/** Token to inject the acl service */\nexport const ORDER_LISTING_SERVICE_TOKEN: InjectionToken<IOrderListingBackendService> =\n    new InjectionToken<IOrderListingBackendService>(\"IOrderListingBackendService token\");\n\ninterface IstarUnstarOrderPayload {\n    marked_as_starred: boolean;\n    order_id: string;\n    station_id: number;\n    user_id: number;\n    campaign_id: number;\n}\n\nexport interface IOrderListingBackendService {\n    loggedInUserId: number | string;\n    orderListingCurrentTabName: OrderListingTabsName;\n    isSandboxModeFeaturePresent: boolean;\n    showOwnershipGroup: boolean;\n    selectedOg: IdTextForDropdown;\n    showStation: boolean;\n    showMultiSelectionForStation: boolean;\n    totalRowEmptyColspan: number;\n    totalBlankAndDeletedMessageColspan: number;\n    totalRowTVRevenueMessageColspan: number;\n    // PFPViewOnlyPurpose: boolean;\n    isEOSApplication: boolean;\n\n    getNormalizedDemoForStation(): Observable<{ Id: number; Name: string }[]>;\n    getPrimaryFiltersForDashboard(userId: number): Observable<any>;\n    getBlankOrders(param: any): Observable<any>;\n    getTvRevenueOrders(param: any): Observable<any>;\n    getOtherRevenueOrders(param: any): Observable<any>;\n\n    getOrderListingHeaders(isEquivalizedToggleOn: boolean): IGtTableHeader[];\n    getTvRevenueTabEasyFilters(): any;\n    getBlankAndDeletedEasyFilters(): any;\n    getLatestFilters(): any;\n    setLatestFilters(queryParams: any): any;\n    getBlankAndDeletedEasyFilters(): OrderListingEasyFilter[];\n    getDeletedOrderTextAndIconHeader(): IGtTableHeader;\n    starUnstarOrder(payload: IstarUnstarOrderPayload): any;\n}\n","import { Injectable } from \"@angular/core\";\nimport { DashboardIntelliFilter } from \"@annalib/anna-design-components-lib\";\n\n@Injectable({\n    providedIn: \"root\",\n})\nexport class DashboardAndOrderListingService {\n    orderCardViewClicked: boolean = false;\n    audPerformanceCardViewClicked: boolean = false;\n    dashboardSelectedRegions: string[];\n    dashboardSelectedUsersName: string[];\n    orderListingIntelliFilterToBeSelected: DashboardIntelliFilter;\n    dashboardSelectedProductCategories: string[];\n}\n","import { Injectable } from \"@angular/core\";\n\nimport { OrderListingEasyFilterConstants } from \"../models/order-listing.constant\";\n\n@Injectable({\n    providedIn: \"root\",\n})\nexport class OrderListingHelperService {\n    selectedOrderListingTabName: string;\n    isEqivalizedToggleOn: boolean = false;\n    orderListingFiltersAlreadyApplied: boolean;\n    orderClicked: boolean;\n    orderCardViewClicked: boolean;\n\n    // getOrderListingHeaders(isEquivalizedToggleOn: boolean): IGtTableHeader[] {\n    //   let gtTableHeaders: IGtTableHeader[] = [\n    //     {\n    //       headerInfo: [\n    //         {\n    //           name: \"\",\n    //           objectKey: \"isOrderStarred\",\n    //           typeOfHeaderData: \"\",\n    //           typeOfBodyData: \"ICON\",\n    //           showTooltipIcon: false,\n    //         },\n    //       ],\n    //       visible: true,\n    //       width: \"30px\",\n    //     },\n    //     {\n    //       headerInfo: [\n    //         {\n    //           name: \"\",\n    //           objectKey: \"payForPerformance\",\n    //           typeOfHeaderData: \"\",\n    //           typeOfBodyData: \"SVG_ICON\",\n    //           showTooltipIcon: false,\n    //         },\n    //       ],\n    //       visible: true,\n    //       width: \"30px\",\n    //     },\n    //     {\n    //       headerInfo: [\n    //         {\n    //           name: \"\",\n    //           objectKey: \"bizRuleStatus\",\n    //           typeOfHeaderData: \"\",\n    //           typeOfBodyData: \"SVG_ICON\",\n    //           showTooltipIcon: false,\n    //         },\n    //       ],\n    //       visible: true,\n    //       width: \"30px\",\n    //     },\n    //     {\n    //       headerInfo: [\n    //         {\n    //           name: OrderListingTableHeaderConstants.STATION,\n    //           objectKey: \"station\",\n    //           typeOfHeaderData: \"STRING\",\n    //           typeOfBodyData: \"STRING\",\n    //           showTooltipIcon: true,\n    //           isSortRequired: [true],\n    //           isFilterRequired: [true],\n    //           filter: \"CHECKBOX\",\n    //           filterSortObjectKeys: [\"station\"],\n    //         }\n    //       ],\n    //       visible: true,\n    //       width: \"110px\",\n    //     },\n    //     {\n    //       headerInfo: [\n    //         {\n    //           name: \"PRIMARY BUYER\",\n    //           objectKey: \"primaryBuyer\",\n    //           typeOfHeaderData: \"STRING\",\n    //           typeOfBodyData: \"STRING\",\n    //           showTooltipIcon: true,\n    //           isSortRequired: [true, true],\n    //           isFilterRequired: [true, true],\n    //           filter: \"CHECKBOX\",\n    //           filterSortObjectKeys: [\"primaryBuyer\", \"secondaryBuyer\"],\n    //         },\n    //         {\n    //           name: \"SECONDARY BUYER\",\n    //           objectKey: \"secondaryBuyer\",\n    //           typeOfHeaderData: \"STRING\",\n    //           typeOfBodyData: \"STRING\",\n    //           showTooltipIcon: false,\n    //           filter: \"CHECKBOX\",\n    //         },\n    //       ],\n    //       visible: true,\n    //       width: \"136.4096px\",\n    //     },\n    //     {\n    //       headerInfo: [\n    //         {\n    //           name: OrderListingTableHeaderConstants.STN_ORDERNO_REV_NO,\n    //           objectKey: \"orderNoRevNo\",\n    //           typeOfHeaderData: \"STRING\",\n    //           typeOfBodyData: \"STRING\",\n    //           showTooltipIcon: true,\n    //           isSortRequired: [true, true],\n    //           isFilterRequired: [true, true],\n    //           filter: \"CHECKBOX\",\n    //           filterSortObjectKeys: [\"orderNoRevNo\", \"buyerOrderId\"],\n    //         },\n    //         {\n    //           name: OrderListingTableHeaderConstants.ALT_ORDER,\n    //           objectKey: \"buyerOrderId\",\n    //           typeOfHeaderData: \"STRING\",\n    //           typeOfBodyData: \"STRING\",\n    //           showTooltipIcon: false,\n    //           filter: \"CHECKBOX\",\n    //         },\n    //       ],\n    //       visible: true,\n    //       width: this.selectedOrderListingTabName != OrdersConstant.TvRevenue ? \"150.0496px\" : \"136.4096px\",\n    //     },\n    //     {\n    //       headerInfo: [\n    //         {\n    //           name: OrderListingTableHeaderConstants.PrimaryAE,\n    //           objectKey: \"primaryAe\",\n    //           typeOfHeaderData: \"STRING\",\n    //           typeOfBodyData: \"STRING\",\n    //           showTooltipIcon: true,\n    //           isSortRequired: [true, true],\n    //           isFilterRequired: [true, true],\n    //           filter: \"CHECKBOX\",\n    //           filterSortObjectKeys: [\"primaryAe\", \"region\"],\n    //         },\n    //         {\n    //           name: OrderListingTableHeaderConstants.Region,\n    //           objectKey: \"region\",\n    //           typeOfHeaderData: \"STRING\",\n    //           typeOfBodyData: \"STRING\",\n    //           showTooltipIcon: false,\n    //           filter: \"CHECKBOX\",\n    //         },\n    //       ],\n    //       visible: true,\n    //       width: \"136.4096px\",\n    //     },\n    //     {\n    //       headerInfo: [\n    //         {\n    //           name: OrderListingTableHeaderConstants.Agency,\n    //           objectKey: \"agency\",\n    //           typeOfHeaderData: \"STRING\",\n    //           typeOfBodyData: \"STRING\",\n    //           showTooltipIcon: true,\n    //           isSortRequired: [true, true],\n    //           isFilterRequired: [true, true],\n    //           filter: \"CHECKBOX\",\n    //           filterSortObjectKeys: [\"agency\", \"location\"],\n    //         },\n    //         {\n    //           name: OrderListingTableHeaderConstants.Location,\n    //           objectKey: \"location\",\n    //           typeOfHeaderData: \"STRING\",\n    //           typeOfBodyData: \"STRING\",\n    //           showTooltipIcon: false,\n    //           filter: \"CHECKBOX\",\n    //         },\n    //       ],\n    //       visible: true,\n    //       width: \"136.4096px\",\n    //     },\n    //     {\n    //       headerInfo: [\n    //         {\n    //           name: OrderListingTableHeaderConstants.Advertiser,\n    //           objectKey: \"advertiser\",\n    //           typeOfHeaderData: \"STRING\",\n    //           typeOfBodyData: \"STRING\",\n    //           showTooltipIcon: true,\n    //           isSortRequired: [true, true],\n    //           isFilterRequired: [true, true],\n    //           filter: \"CHECKBOX\",\n    //           filterSortObjectKeys: [\"advertiser\", \"productCode\"],\n    //         },\n    //       ],\n    //       visible: true,\n    //       width: \"143.2192px\",\n    //     },\n    //     {\n    //       headerInfo: [\n    //         {\n    //           name: OrderListingTableHeaderConstants.StartDate,\n    //           objectKey: \"startDate\",\n    //           typeOfHeaderData: \"STRING\",\n    //           typeOfBodyData: \"STRING\",\n    //           showTooltipIcon: true,\n    //           isSortRequired: [true, true],\n    //           isFilterRequired: [true, true],\n    //           filter: \"DATE\",\n    //           filterSortObjectKeys: [\"startDate\", \"endDate\"],\n    //         },\n    //         {\n    //           name: OrderListingTableHeaderConstants.EndDate,\n    //           objectKey: \"endDate\",\n    //           typeOfHeaderData: \"STRING\",\n    //           typeOfBodyData: \"STRING\",\n    //           showTooltipIcon: false,\n    //           filter: \"CHECKBOX\",\n    //         },\n    //       ],\n    //       visible: true,\n    //       width: \"129.5808px\",\n    //     },\n    //     {\n    //       headerInfo: [\n    //         {\n    //           name: OrderListingTableHeaderConstants.CASH_TRADE,\n    //           objectKey: \"cashOrTrade\",\n    //           typeOfHeaderData: \"STRING\",\n    //           typeOfBodyData: \"STRING\",\n    //           showTooltipIcon: true,\n    //           isSortRequired: [true, true],\n    //           isFilterRequired: [true, true],\n    //           filter: \"CHECKBOX\",\n    //           filterSortObjectKeys: [\"cashOrTrade\", \"orderSource\"],\n    //         },\n    //         {\n    //           name: OrderListingTableHeaderConstants.ORDER_SOURCE,\n    //           objectKey: \"orderSource\",\n    //           typeOfHeaderData: \"STRING\",\n    //           typeOfBodyData: \"STRING\",\n    //           showTooltipIcon: false,\n    //           filter: \"CHECKBOX\",\n    //         },\n    //       ],\n    //       visible: true,\n    //       width: \"122.7696px\",\n    //     },\n    //     {\n    //       headerInfo: [\n    //         {\n    //           name: OrderListingTableHeaderConstants.ESTIMATE,\n    //           objectKey: \"estimateNo\",\n    //           typeOfHeaderData: \"STRING\",\n    //           typeOfBodyData: \"STRING\",\n    //           showTooltipIcon: true,\n    //           isSortRequired: [true, true],\n    //           isFilterRequired: [true, true],\n    //           filter: \"CHECKBOX\",\n    //           filterSortObjectKeys: [\"estimateNo\"],\n    //         }\n    //       ],\n    //       visible: true,\n    //       width: \"110\",\n    //     },\n    //     {\n    //       headerInfo: [\n    //         {\n    //           name: OrderListingTableHeaderConstants.DEMO,\n    //           objectKey: \"demo\",\n    //           typeOfHeaderData: \"STRING\",\n    //           typeOfBodyData: \"STRING\",\n    //           showTooltipIcon: true,\n    //           isSortRequired: [true, true],\n    //           isFilterRequired: [true, true],\n    //           filter: \"CHECKBOX\",\n    //           filterSortObjectKeys: [\"demo\"],\n    //         }\n    //       ],\n    //       visible: true,\n    //       width: \"122.7696px\",\n    //     },\n    //     {\n    //       headerInfo: [\n    //         {\n    //           name: OrderListingTableHeaderConstants.BOOKED,\n    //           objectKey: \"displayBooked\",\n    //           typeOfHeaderData: \"STRING\",\n    //           typeOfBodyData: \"STRING\",\n    //           showTooltipIcon: true,\n    //           isSortRequired: [true, true],\n    //           isFilterRequired: [true, true],\n    //           filter: \"SLIDER\",\n    //           filterSortObjectKeys: [\"booked\", \"spots\"],\n    //         },\n    //         {\n    //           name: OrderListingTableHeaderConstants.BookedSpots,\n    //           objectKey: \"displaySpots\",\n    //           typeOfHeaderData: \"STRING\",\n    //           typeOfBodyData: \"STRING\",\n    //           tooltip: isEquivalizedToggleOn\n    //             ? {\n    //               iconPosition: \"left\",\n    //               iconClass: \"mi mdi-info-outline spots-info-icon-ol\",\n    //               name: \"spotsColumnEquivalizationMessageTooltip\",\n    //               tooltipPosition: \"bottom\",\n    //               tooltipClass: \"spot-info-tooltip-for-orderlisting-table\",\n    //             }\n    //             : null,\n    //           showTooltipIcon: false,\n    //           filter: \"SLIDER\",\n    //         },\n    //       ],\n    //       visible: true,\n    //       width: \"102.2992px\",\n    //     },\n    //     {\n    //       headerInfo: [\n    //         {\n    //           name: OrderListingTableHeaderConstants.GRP,\n    //           objectKey: \"displayGrp\",\n    //           typeOfHeaderData: \"STRING\",\n    //           typeOfBodyData: \"STRING\",\n    //           showTooltipIcon: true,\n    //           isSortRequired: [true, true],\n    //           isFilterRequired: [true, true],\n    //           filter: \"SLIDER\",\n    //           filterSortObjectKeys: [\"grp\", \"cpp\"],\n    //         },\n    //         {\n    //           name: OrderListingTableHeaderConstants.CPP,\n    //           objectKey: \"displaycpp\",\n    //           typeOfHeaderData: \"STRING\",\n    //           typeOfBodyData: \"STRING\",\n    //           showTooltipIcon: false,\n    //           filter: \"SLIDER\",\n    //         },\n    //       ],\n    //       visible: true,\n    //       width: \"75.0192px\",\n    //     },\n    //     {\n    //       headerInfo: [\n    //         {\n    //           name: OrderListingTableHeaderConstants.IMPS,\n    //           objectKey: \"displayimps\",\n    //           typeOfHeaderData: \"STRING\",\n    //           typeOfBodyData: \"STRING\",\n    //           showTooltipIcon: true,\n    //           isSortRequired: [true, true],\n    //           isFilterRequired: [true, true],\n    //           filter: \"SLIDER\",\n    //           filterSortObjectKeys: [\"imps\", \"cpm\"],\n    //         },\n    //         {\n    //           name: OrderListingTableHeaderConstants.CPM,\n    //           objectKey: \"displaycpm\",\n    //           typeOfHeaderData: \"STRING\",\n    //           typeOfBodyData: \"STRING\",\n    //           showTooltipIcon: false,\n    //           filter: \"SLIDER\",\n    //         },\n    //       ],\n    //       visible: true,\n    //       width: \"81.84px\",\n    //     },\n    //     {\n    //       headerInfo: [\n    //         {\n    //           name: OrderListingTableHeaderConstants.MADEGOOD_PE,\n    //           objectKey: \"displayMadegoodPe\",\n    //           typeOfHeaderData: \"STRING\",\n    //           typeOfBodyData: \"STRING\",\n    //           showTooltipIcon: true,\n    //           isSortRequired: [true, true],\n    //           isFilterRequired: [true, true],\n    //           filter: \"SLIDER\",\n    //           filterSortObjectKeys: [\"rcvPreempt\", \"osPreempt\"],\n    //         },\n    //         {\n    //           name: OrderListingTableHeaderConstants.OUTSTANDING_PE,\n    //           objectKey: \"displayOsPe\",\n    //           typeOfHeaderData: \"STRING\",\n    //           typeOfBodyData: \"STRING\",\n    //           filter: \"SLIDER\",\n    //           showTooltipIcon: false,\n    //         },\n    //       ],\n    //       visible: true,\n    //       width: \"136.4096px\",\n    //     },\n    //     {\n    //       headerInfo: [\n    //         {\n    //           name: OrderListingTableHeaderConstants.POSTED_ADUs,\n    //           objectKey: \"displayPostedADUs\",\n    //           typeOfHeaderData: \"STRING\",\n    //           showTooltipIcon: true,\n    //           isSortRequired: [true, true],\n    //           isFilterRequired: [true, true],\n    //           typeOfBodyData: \"STRING\",\n    //           filter: \"SLIDER\",\n    //           filterSortObjectKeys: [\"postedAdu\", \"scheduledAdu\"],\n    //         },\n    //         {\n    //           name: OrderListingTableHeaderConstants.SCHEDULED_ADUs,\n    //           objectKey: \"displayScheduledADUs\",\n    //           typeOfHeaderData: \"STRING\",\n    //           typeOfBodyData: \"STRING\",\n    //           showTooltipIcon: false,\n    //           filter: \"SLIDER\",\n    //         },\n    //       ],\n    //       visible: true,\n    //       width: \"136.4096px\",\n    //     },\n    //     {\n    //       headerInfo: [\n    //         {\n    //           name: OrderListingTableHeaderConstants.UD_IMPS,\n    //           objectKey: \"underDeliveryImpsDisplay\",\n    //           typeOfHeaderData: \"STRING\",\n    //           typeOfBodyData: \"STRING\",\n    //           showTooltipIcon: true,\n    //           isSortRequired: [true, true],\n    //           isFilterRequired: [true, true],\n    //           filter: \"SLIDER\",\n    //           filterSortObjectKeys: [\"UDImps\", \"udImpsPercent\"],\n    //         },\n    //         {\n    //           name: OrderListingTableHeaderConstants.UD_IMPS_PERCENT,\n    //           objectKey: \"underDeliveryPercentDisplay\",\n    //           typeOfHeaderData: \"STRING\",\n    //           typeOfBodyData: \"STRING\",\n    //           showTooltipIcon: false,\n    //           filter: \"SLIDER\",\n    //         },\n    //       ],\n    //       visible: true,\n    //       width: \"81.84px\",\n    //     },\n    //     {\n    //       headerInfo: [\n    //         {\n    //           name: OrderListingTableHeaderConstants.OD_IMPS,\n    //           objectKey: \"overDeliveryImpsDisplay\",\n    //           typeOfHeaderData: \"STRING\",\n    //           showTooltipIcon: true,\n    //           isSortRequired: [true, true],\n    //           isFilterRequired: [true, true],\n    //           typeOfBodyData: \"STRING\",\n    //           filter: \"SLIDER\",\n    //           filterSortObjectKeys: [\"ODImps\", \"odImpsPercent\"],\n    //         },\n    //         {\n    //           name: OrderListingTableHeaderConstants.OD_IMPS_PERCENT,\n    //           objectKey: \"overDeliveryPercentDisplay\",\n    //           typeOfHeaderData: \"STRING\",\n    //           typeOfBodyData: \"STRING\",\n    //           showTooltipIcon: false,\n    //           filter: \"SLIDER\",\n    //         },\n    //       ],\n    //       visible: true,\n    //       width: \"81.84px\",\n    //     },\n    //     {\n    //       headerInfo: [\n    //         {\n    //           name: OrderListingTableHeaderConstants.UD_GRP,\n    //           objectKey: \"underDeliveryGrpDisplay\",\n    //           typeOfHeaderData: \"STRING\",\n    //           showTooltipIcon: true,\n    //           isSortRequired: [true, true],\n    //           isFilterRequired: [true, true],\n    //           typeOfBodyData: \"STRING\",\n    //           filter: \"SLIDER\",\n    //           filterSortObjectKeys: [\"UDGrp\", \"udGrpPercent\"],\n    //         },\n    //         {\n    //           name: OrderListingTableHeaderConstants.UD_GRP_PERCENT,\n    //           objectKey: \"underDeliveryPercentDisplay\",\n    //           typeOfHeaderData: \"STRING\",\n    //           typeOfBodyData: \"STRING\",\n    //           showTooltipIcon: false,\n    //           filter: \"SLIDER\",\n    //         },\n    //       ],\n    //       visible: true,\n    //       width: \"81.84px\",\n    //     },\n    //     {\n    //       headerInfo: [\n    //         {\n    //           name: OrderListingTableHeaderConstants.OD_GRP,\n    //           objectKey: \"overDeliveryGrpDisplay\",\n    //           typeOfHeaderData: \"STRING\",\n    //           showTooltipIcon: true,\n    //           isSortRequired: [true, true],\n    //           isFilterRequired: [true, true],\n    //           typeOfBodyData: \"STRING\",\n    //           filter: \"SLIDER\",\n    //           filterSortObjectKeys: [\"ODGrp\", \"odGrpPercent\"],\n    //         },\n    //         {\n    //           name: OrderListingTableHeaderConstants.OD_GRP_PERCENT,\n    //           objectKey: \"overDeliveryPercentDisplay\",\n    //           typeOfHeaderData: \"STRING\",\n    //           typeOfBodyData: \"STRING\",\n    //           showTooltipIcon: false,\n    //           filter: \"SLIDER\",\n    //         },\n    //       ],\n    //       visible: true,\n    //       width: \"81.84px\",\n    //     }\n    //   ];\n    //   return gtTableHeaders;\n    // }\n\n    getTvRevenueTabEasyFilters() {\n        return [\n            {\n                label: OrderListingEasyFilterConstants.ORDER_FLIGHT_STATUS,\n                filters: [\n                    {\n                        text: OrderListingEasyFilterConstants.IN_FLIGHT,\n                        isActive: false,\n                        isDisabled: false,\n                        iconRequired: false,\n                    },\n                    {\n                        text: OrderListingEasyFilterConstants.UPCOMING,\n                        isActive: false,\n                        isDisabled: false,\n                        iconRequired: false,\n                    },\n                    {\n                        text: OrderListingEasyFilterConstants.COMPLETED,\n                        isActive: false,\n                        isDisabled: false,\n                        iconRequired: false,\n                    },\n                ],\n            },\n            {\n                label: OrderListingEasyFilterConstants.BUSINESS_RULES_STATUS,\n                filters: [\n                    {\n                        text: OrderListingEasyFilterConstants.NOTIFY,\n                        isActive: false,\n                        isDisabled: false,\n                        iconRequired: true,\n                        isSvgIcon: true,\n                    },\n                    {\n                        text: OrderListingEasyFilterConstants.AWAITING_BUYER_APPROVAL,\n                        isActive: false,\n                        isDisabled: false,\n                        iconRequired: true,\n                        isSvgIcon: true,\n                    },\n                    {\n                        text: OrderListingEasyFilterConstants.AWAITING_SELLER_CONFIRMATION,\n                        isActive: false,\n                        isDisabled: false,\n                        iconRequired: true,\n                        isSvgIcon: true,\n                    },\n                ],\n            },\n            // {\n            //   label: \"\",\n            //   class: \"add-padding-top\",\n            //   filters: [\n            //     {\n            //       text: OrderListingEasyFilterConstants.STARRED,\n            //       isActive: false,\n            //       isDisabled: false,\n            //       iconRequired: true,\n            //       isSvgIcon: false,\n            //       iconClass: \"mdi mdi-star\",\n            //     },\n            //   ],\n            // },\n            {\n                label: \"\",\n                class: \"add-padding-top\",\n                filters: [\n                    {\n                        text: OrderListingEasyFilterConstants.POD,\n                        isActive: false,\n                        isDisabled: false,\n                        iconRequired: true,\n                        isSvgIcon: true,\n                    },\n                    {\n                        text: OrderListingEasyFilterConstants.P4S,\n                        isActive: false,\n                        isDisabled: false,\n                        iconRequired: false,\n                    },\n                ],\n            },\n            {\n                label: \" \",\n                class: \"add-padding-top\",\n                filters: [\n                    {\n                        text: OrderListingEasyFilterConstants.WRITE_ENABLED,\n                        isActive: false,\n                        isDisabled: false,\n                        iconRequired: false,\n                    },\n                ],\n            },\n        ];\n    }\n}\n","import { CurrencyPipe, DecimalPipe, NgClass, NgIf } from \"@angular/common\";\nimport {\n    ChangeDetectorRef,\n    Component,\n    EventEmitter,\n    Inject,\n    Input,\n    OnDestroy,\n    OnInit,\n    Output,\n    ViewChild,\n} from \"@angular/core\";\nimport { ActivatedRoute, Params, Router } from \"@angular/router\";\nimport {\n    AnnaCoreModule,\n    AnnaFilterService,\n    AnnaGlobalConfigService,\n    AnnaGtHelperService,\n    AnnaNonEditableGenericTableComponent,\n    AnnaPersistingFilterService,\n    AnnaSortService,\n    IconData,\n    IGtGeneralConfig,\n    IGtTableHeader,\n    ITotalRowInfo,\n} from \"@annalib/anna-core\";\nimport {\n    AnnaDesignComponentsLibModule,\n    BreadcrumbsService,\n    DashboardFilterSelectionPopUp,\n    EasyFilters,\n    EasyFiltersComponent,\n    EquivalisationOfDataService,\n    GenericMessageBoxTheme,\n    IBreadcrumb,\n    MessageBoxData,\n    PersistedDashboardPrimaryFilters,\n    PrimaryFiltersData,\n    SidebarItemEmittedObj,\n    SidebarMenuService,\n} from \"@annalib/anna-design-components-lib\";\nimport { OrderListingConstants } from \"@annalib/anna-feature-shared-lib\";\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\nimport dayjs from \"dayjs\";\nimport { cloneDeep, isEqual, sortBy, uniq } from \"lodash-es\";\nimport { NgxSkeletonLoaderModule } from \"ngx-skeleton-loader\";\nimport { ToastrService } from \"ngx-toastr\";\nimport { Subject } from \"rxjs\";\nimport { filter, takeUntil } from \"rxjs/operators\";\n\nimport { ILoginService, LOGIN_SERVICE_TOKEN } from \"../login/login-token.service\";\nimport {\n    OrderListingEasyFilterConstants,\n    OrderListingTableHeaderConstants,\n    OrdersConstant,\n} from \"./models/order-listing.constant\";\nimport {\n    Filter,\n    OrderDetails,\n    OrderDetailsGroupedByRevisionStatus,\n    OrderListingTotalRow,\n} from \"./models/order-listing.model\";\nimport { IOrderListingBackendService, ORDER_LISTING_SERVICE_TOKEN } from \"./models/order-listing-backend-token.service\";\nimport { DashboardAndOrderListingService } from \"./services/dashboard-and-order-listing.service\";\nimport { OrderListingHelperService } from \"./services/order-listing-helper.service\";\n\n@Component({\n    selector: \"anna-feature-lib-order-listing\",\n    templateUrl: \"./order-listing.component.html\",\n    styleUrls: [\"./order-listing.component.scss\"],\n    imports: [NgIf, AnnaDesignComponentsLibModule, NgClass, AnnaCoreModule, NgxSkeletonLoaderModule],\n    providers: [DecimalPipe],\n})\nexport class OrderListingComponent implements OnInit, OnDestroy {\n    @Input() showNoDataToDisplayInsideTable: boolean = true;\n    @Input() stationIdsWithValidLicense: number[] = [];\n    @Output() onorderRowClicked = new EventEmitter<{\n        order: OrderDetails;\n        selectedFilter: DashboardFilterSelectionPopUp;\n        breadcrumbsToPersist: IBreadcrumb[];\n    }>();\n\n    showTableSkeletonLoader: boolean = true;\n    orders: OrderDetails[] = [];\n    totalRowInfo: ITotalRowInfo[];\n\n    disableToggleButton: boolean = false;\n    defaultEquivalisedData = false;\n    isEquivalized: boolean = false;\n    showNoDataToDisplay: boolean = false;\n\n    // allAEValuesExist: boolean = true;\n    // allProductCategoryValuesExist: boolean = true;\n    initializeComponent: boolean = true;\n    isEquivilizationChanged: boolean = false;\n\n    constants = OrdersConstant;\n    orderListingConstants = OrderListingConstants;\n\n    tableHeaders: IGtTableHeader[];\n    gtDimension = {\n        rowHeight: 40,\n        headerHeight: 40,\n        dataOnTopHeight: 234,\n        marginFromBottom: 26,\n        tableHeight: \"calc(100vh - 260px)\",\n    };\n    gtGeneralConfig: IGtGeneralConfig;\n\n    easyFilters: EasyFilters[];\n    selectedEasyFilter: Filter;\n    orderListingEasyFilterConstants = OrderListingEasyFilterConstants;\n\n    filterData: PrimaryFiltersData;\n    filterApiError: boolean = false;\n    persistingFilterForPopup: PersistedDashboardPrimaryFilters = null;\n    selectedFilters: DashboardFilterSelectionPopUp = null;\n    breadcrumbsToPersist: IBreadcrumb[];\n\n    disableClearAllBtn: boolean = true;\n\n    initialStationAndPeriodFilter: PersistedDashboardPrimaryFilters;\n\n    protected ngUnsubscribe: Subject<void> = new Subject<void>();\n    applyFiltersFromTheUrl: boolean;\n    filtersFromRoute: any;\n    clonedOrders: OrderDetails[];\n    performActionOnQueryParamChange: boolean = true;\n    subscriptionForSidebarClick: any;\n    messageBoxData: MessageBoxData;\n    numberOfEasyFilterLoader: number = 4;\n    PeriodOptions: string[] = [\"Quarter\", \"Month\"];\n    starredOrderLoading: boolean = false;\n    filterToBeUpdatedManually: string = null;\n\n    @ViewChild(AnnaNonEditableGenericTableComponent) nonEditableGTComponent: AnnaNonEditableGenericTableComponent;\n    @ViewChild(\"easyFilterComponent\") easyFilterComponent: EasyFiltersComponent;\n\n    constructor(\n        private router: Router,\n        private route: ActivatedRoute,\n        private currencyPipe: CurrencyPipe,\n        private decimalPipe: DecimalPipe,\n        private cdRef: ChangeDetectorRef,\n        private toastr: ToastrService,\n        public modalService: NgbModal,\n        private annaSortService: AnnaSortService,\n        private annaGtService: AnnaGtHelperService,\n        private annaFilterService: AnnaFilterService,\n        private annaGlobalConfig: AnnaGlobalConfigService,\n        private breadcrumbService: BreadcrumbsService,\n        private persistingFilterService: AnnaPersistingFilterService,\n        private equivalisationOfDataService: EquivalisationOfDataService,\n        private sidebarMenuService: SidebarMenuService,\n        private dashboardAndOrderListingService: DashboardAndOrderListingService,\n        private orderListingHelperService: OrderListingHelperService,\n        @Inject(ORDER_LISTING_SERVICE_TOKEN) public consumingProjectOrderService: IOrderListingBackendService,\n        @Inject(LOGIN_SERVICE_TOKEN) public consumingProjectLoginService: ILoginService,\n    ) {}\n\n    ngOnInit() {\n        this.initVariables();\n        this.setCurrentTabBasedOnUrl();\n        this.setMessageForNoOrders();\n        this.setTableHeight();\n        this.tableHeaders = this.getTableHeadersForCurrentTab();\n        this.easyFilters = this.getEasyFiltersForCurrentTab();\n        this.detectUrlChanges();\n        this.fetchFiltersAndOrdersData();\n        this.setGtGeneralConfig();\n        this.sidebarMenuClicked();\n        this.initializeComponent = false;\n    }\n\n    setMessageForNoOrders() {\n        const msg =\n            this.consumingProjectOrderService.orderListingCurrentTabName === OrderListingConstants.Deleted\n                ? \"Your orders will appear here if they were deleted on traffic and you had access to them earlier.\"\n                : \"Your orders will appear here once the station Account Executive sends you the advertiser business rules for approval.\";\n        this.messageBoxData = new MessageBoxData(\n            \"\",\n            msg,\n            \"mdi mdi-information\",\n            `${GenericMessageBoxTheme.informationBlue.messageBoxClass} sm`,\n        );\n    }\n\n    initVariables() {\n        this.applyFiltersFromTheUrl = false;\n        this.breadcrumbService.isOrderListingPageOpened = true;\n    }\n\n    sidebarMenuClicked() {\n        // When user clicks on the Orders from sidebar\n        this.subscriptionForSidebarClick = this.sidebarMenuService.appSidebarClicked$\n            .pipe(filter((item: SidebarItemEmittedObj) => item.isClicked && item.itemClicked.name === \"Orders\"))\n            .subscribe((val: any) => {\n                this.resetFiltersAndSetBreadcrumbs();\n            });\n    }\n\n    getTableHeadersForCurrentTab() {\n        const allHeaders = this.consumingProjectOrderService.getOrderListingHeaders(this.isEquivalized);\n\n        if (\n            this.consumingProjectOrderService.orderListingCurrentTabName === OrderListingConstants.TvRevenue ||\n            this.consumingProjectOrderService.orderListingCurrentTabName === OrderListingConstants.TV\n        ) {\n            if (this.consumingProjectOrderService.orderListingCurrentTabName === OrderListingConstants.TV) {\n                return allHeaders.filter(\n                    (header: IGtTableHeader) =>\n                        header.headerInfo[0].name !== OrderListingTableHeaderConstants.AUDIENCE_POSTING,\n                );\n            }\n            return allHeaders;\n        } else if (\n            this.consumingProjectOrderService.orderListingCurrentTabName === OrderListingConstants.OtherRevenue\n        ) {\n            return allHeaders.filter(\n                (header: IGtTableHeader) =>\n                    header.headerInfo[0].name !== OrderListingTableHeaderConstants.REVISION_TYPE &&\n                    header.headerInfo[0].name !== OrderListingTableHeaderConstants.MADEGOOD_PE &&\n                    header.headerInfo[0].name !== OrderListingTableHeaderConstants.POSTED_ADUs &&\n                    header.headerInfo[0].name !== OrderListingTableHeaderConstants.UD_IMPS &&\n                    header.headerInfo[0].name !== OrderListingTableHeaderConstants.UD_GRP &&\n                    header.headerInfo[0].name !== OrderListingTableHeaderConstants.UD_PERCENT &&\n                    header.headerInfo[0].name !== OrderListingTableHeaderConstants.UD_VALUE &&\n                    header.headerInfo[0].name !== OrderListingTableHeaderConstants.ORDER_TYPE &&\n                    header.headerInfo[0].name !== OrderListingTableHeaderConstants.AUDIENCE_POSTING,\n            );\n        } else if (\n            this.consumingProjectOrderService.orderListingCurrentTabName === OrderListingConstants.BlankAndDeleted ||\n            this.consumingProjectOrderService.orderListingCurrentTabName === OrderListingConstants.Deleted\n        ) {\n            const headers = allHeaders.filter(\n                (header) =>\n                    header.headerInfo[0].name !== OrderListingTableHeaderConstants.REVISION_TYPE &&\n                    header.headerInfo[0].name !== OrderListingTableHeaderConstants.MADEGOOD_PE &&\n                    header.headerInfo[0].name !== OrderListingTableHeaderConstants.POSTED_ADUs &&\n                    header.headerInfo[0].name !== OrderListingTableHeaderConstants.UD_IMPS &&\n                    header.headerInfo[0].name !== OrderListingTableHeaderConstants.ORDER_TYPE &&\n                    header.headerInfo[0].name !== OrderListingTableHeaderConstants.UD_GRP &&\n                    header.headerInfo[0].name !== OrderListingTableHeaderConstants.UD_PERCENT &&\n                    header.headerInfo[0].name !== OrderListingTableHeaderConstants.UD_VALUE &&\n                    header.headerInfo[0].name !== OrderListingTableHeaderConstants.AUDIENCE_POSTING,\n            );\n            const deletedOrderText = this.consumingProjectOrderService.getDeletedOrderTextAndIconHeader();\n            if (deletedOrderText) {\n                const stationOrderColIndex = headers.findIndex(\n                    (header) => header.headerInfo[0].name === OrderListingTableHeaderConstants.STN_ORDERNO_REV_NO,\n                );\n\n                if (stationOrderColIndex > -1)\n                    headers.splice(\n                        stationOrderColIndex,\n                        1,\n                        this.consumingProjectOrderService.getDeletedOrderTextAndIconHeader(),\n                    );\n            }\n            return headers;\n        }\n        return null;\n    }\n\n    getEasyFiltersForCurrentTab() {\n        const allEasyFilters = this.consumingProjectOrderService.getTvRevenueTabEasyFilters();\n        const orderFlightStatusIndex = 0;\n        const starredOrderIndex = 1;\n        const annOrderEntryIndex = 4;\n\n        if (\n            this.consumingProjectOrderService.orderListingCurrentTabName === OrderListingConstants.TvRevenue ||\n            this.consumingProjectOrderService.orderListingCurrentTabName === OrderListingConstants.TV\n        ) {\n            return allEasyFilters;\n        } else if (\n            this.consumingProjectOrderService.orderListingCurrentTabName === OrderListingConstants.OtherRevenue\n        ) {\n            return [\n                allEasyFilters[orderFlightStatusIndex],\n                allEasyFilters[starredOrderIndex],\n                allEasyFilters[annOrderEntryIndex],\n            ];\n        } else if (\n            this.consumingProjectOrderService.orderListingCurrentTabName === OrderListingConstants.BlankAndDeleted ||\n            this.consumingProjectOrderService.orderListingCurrentTabName === OrderListingConstants.Deleted\n        ) {\n            return this.consumingProjectOrderService.getBlankAndDeletedEasyFilters();\n        }\n        return [];\n    }\n\n    setGtGeneralConfig() {\n        this.gtGeneralConfig = { ...this.annaGlobalConfig.defaultGtGeneralConfig };\n        this.gtGeneralConfig.totalRow = true;\n        this.gtGeneralConfig.component = \"ORDER_LISTING_INFLIGHT\";\n        this.gtGeneralConfig.verticalScrollOffsetForFilterTooltip = 200;\n    }\n\n    setCurrentTabBasedOnUrl() {\n        this.consumingProjectOrderService.orderListingCurrentTabName = this.getCurrentSelectedTab();\n        // this.orderListingHelperService.selectedOrderListingTabName = this.consumingProjectOrderService.orderListingCurrentTabName;\n        if (this.consumingProjectOrderService.orderListingCurrentTabName === this.orderListingConstants.OtherRevenue) {\n            this.numberOfEasyFilterLoader = 5;\n        } else if (\n            this.consumingProjectOrderService.orderListingCurrentTabName === this.orderListingConstants.TvRevenue\n        ) {\n            this.numberOfEasyFilterLoader = 10;\n        } else if (this.consumingProjectOrderService.orderListingCurrentTabName === this.orderListingConstants.TV) {\n            this.numberOfEasyFilterLoader = 6;\n        } else {\n            this.numberOfEasyFilterLoader = 3;\n        }\n    }\n\n    getCurrentSelectedTab() {\n        const url = this.router.url.includes(\"?\") ? this.router.url.split(\"?\")[0] : this.router.url;\n        if (url.includes(\"tv-revenue\")) {\n            return OrderListingConstants.TvRevenue;\n        } else if (url.includes(\"tv\")) {\n            return OrderListingConstants.TV;\n        } else if (url.includes(\"other-revenue\")) {\n            return OrderListingConstants.OtherRevenue;\n        } else if (url.includes(\"blank-and-deleted\")) {\n            return OrderListingConstants.BlankAndDeleted;\n        } else if (url.includes(\"deleted\")) {\n            return OrderListingConstants.Deleted;\n        }\n        return null;\n    }\n\n    detectUrlChanges() {\n        this.route.queryParams.subscribe((params: Params) => {\n            this.updateLatestFilters(params);\n            const newEquivalisedData = this.equivalisationOfDataService.getEquivalisedData(\n                params,\n                this.defaultEquivalisedData,\n            );\n            this.orderListingHelperService.isEqivalizedToggleOn = newEquivalisedData;\n\n            if (this.performActionOnQueryParamChange) {\n                if (params.stationId) {\n                    this.setPersistingFilterForPrimaryPopupOnMailRedirection(+params.stationId);\n                } else {\n                    const hadPrimaryPopup = !!this.persistingFilterForPopup;\n                    this.setPersistingFilterForPopup(params.popupFilter);\n                    if (hadPrimaryPopup && !this.persistingFilterForPopup) {\n                        this.resetFiltersAndSetBreadcrumbs();\n                    }\n                }\n                this.setPersistingVariableForColumnAndEasyFilter(params.filters);\n                // this.setPersistingVariableForColumnAndEasyFilterOnMailRedirection(params[\"filterFor\"]);\n                this.setPersistedBreadcrumbsVariable(params.breadcrumbs);\n                this.setEquivilizationVariableAndFetchOrders(newEquivalisedData);\n            }\n            this.performActionOnQueryParamChange = true;\n        });\n    }\n\n    setPersistingFilterForPrimaryPopupOnMailRedirection(stationId: number) {\n        this.persistingFilterForPopup = { stationId };\n        this.persistingFilterForPopup.stationIds = [stationId];\n    }\n\n    isEquivalisationToggleChanged(newEquivalisedData: boolean): boolean {\n        return this.isEquivalized != null && this.isEquivalized !== newEquivalisedData;\n    }\n\n    setPersistingFilterForPopup(popupFilter: string) {\n        this.persistingFilterForPopup =\n            popupFilter && this.persistingFilterService.getActualQueryParams(popupFilter)\n                ? JSON.parse(this.persistingFilterService.getActualQueryParams(popupFilter))\n                : null;\n    }\n\n    setPersistingVariableForColumnAndEasyFilter(columnAndEasyFilter: string) {\n        this.filtersFromRoute =\n            columnAndEasyFilter && this.persistingFilterService.getActualQueryParams(columnAndEasyFilter)\n                ? JSON.parse(this.persistingFilterService.getActualQueryParams(columnAndEasyFilter))\n                : null;\n        this.applyFiltersFromTheUrl = !!this.filtersFromRoute;\n    }\n\n    setPersistingVariableForColumnAndEasyFilterOnMailRedirection(filterOnMailRedirection: string) {\n        this.filtersFromRoute = {\n            easyFilter: filterOnMailRedirection,\n        };\n        this.applyFiltersFromTheUrl = true;\n    }\n\n    setPersistedBreadcrumbsVariable(filters: string) {\n        this.breadcrumbsToPersist =\n            filters && this.persistingFilterService.getActualQueryParams(filters)\n                ? JSON.parse(this.persistingFilterService.getActualQueryParams(filters))\n                : null;\n    }\n\n    setEquivilizationVariableAndFetchOrders(equiToggleValue: boolean) {\n        if (this.isEquivalisationToggleChanged(equiToggleValue)) {\n            this.isEquivalized = equiToggleValue;\n            this.isEquivilizationChanged = true;\n            this.orderListingHelperService.isEqivalizedToggleOn = this.isEquivalized;\n            this.modifyQueryParam(\"equivalisedData\", \"ADD\", this.isEquivalized);\n            if (!this.initializeComponent) {\n                this.createPayloadAndFetchOrders();\n            }\n        } else {\n            this.isEquivalized = equiToggleValue;\n        }\n    }\n\n    fetchFiltersAndOrdersData() {\n        this.showTableSkeletonLoader = true;\n        // this.orderInfo = new orderDetailsInfo();\n        // this.consumingProjectOrderService.loggedInUserId = JSON.parse(localStorage.getItem(\"userProfileData\")).userId;\n\n        this.setBreadcrumbs();\n        this.callDashboardFiltersApi();\n        if (this.applyFiltersFromTheUrl) {\n            this.initPersistedFilters();\n        } else {\n            this.initFilters();\n        }\n    }\n\n    callDashboardFiltersApi() {\n        this.consumingProjectOrderService\n            .getPrimaryFiltersForDashboard(+this.consumingProjectOrderService.loggedInUserId)\n            .subscribe({\n                next: (responseData: any) => {\n                    if (responseData.data?.length > 0) {\n                        this.filterData = new PrimaryFiltersData(\n                            responseData.data,\n                            this.consumingProjectOrderService.isSandboxModeFeaturePresent,\n                            this.consumingProjectOrderService.showStation,\n                            this.consumingProjectOrderService.showOwnershipGroup,\n                        );\n                    } else {\n                        this.showNoDataToDisplay = true;\n                    }\n                },\n                error: () => {\n                    this.filterApiError = true;\n                    this.showNoDataToDisplay = true;\n                    this.toastr.error(\"Something went wrong. Please try again\");\n                },\n            });\n    }\n\n    initPersistedFilters() {\n        this.annaFilterService.tooltipSelectedMap = this.filtersFromRoute?.selectedFilterData\n            ? new Map(JSON.parse(this.filtersFromRoute.selectedFilterData))\n            : new Map();\n        this.annaSortService.columnSortState = this.filtersFromRoute?.sortState\n            ? new Map(JSON.parse(this.filtersFromRoute.sortState))\n            : new Map();\n        this.annaFilterService.selectedRadio = null;\n        this.annaFilterService.appliedFiltersArray = this.filtersFromRoute?.appliedFilters\n            ? cloneDeep(this.filtersFromRoute.appliedFilters)\n            : [];\n\n        if (this.annaFilterService.tooltipSelectedMap.has(\"startDate\")) {\n            const selectedDateObj: any = {};\n            const startDate = this.annaFilterService.tooltipSelectedMap.get(\"startDate\");\n            selectedDateObj.fromDate = dayjs(startDate.fromDate);\n            selectedDateObj.toDate = dayjs(startDate.toDate);\n            this.annaFilterService.tooltipSelectedMap.set(\"startDate\", selectedDateObj);\n        }\n\n        if (this.annaFilterService.tooltipSelectedMap.has(\"endDate\")) {\n            const selectedDateObj: any = {};\n            const endDate = this.annaFilterService.tooltipSelectedMap.get(\"endDate\");\n            selectedDateObj.fromDate = dayjs(endDate.fromDate);\n            selectedDateObj.toDate = dayjs(endDate.toDate);\n            this.annaFilterService.tooltipSelectedMap.set(\"endDate\", selectedDateObj);\n        }\n    }\n\n    initFilters() {\n        this.annaFilterService.tooltipSelectedMap = new Map();\n        this.annaFilterService.selectedRadio = null;\n        this.annaFilterService.appliedFiltersArray = [];\n        this.annaSortService.noSortingAppliedData = [];\n    }\n\n    setBreadcrumbs() {\n        // set breadcrumbs only when user does not navigate to this page via breadcrumb click\n\n        if (!this.breadcrumbService.isBreadcrumbClicked) {\n            const name = `Orders (${this.consumingProjectOrderService.orderListingCurrentTabName})`;\n            const path = this.router.url;\n\n            const breadcrumbArr = this.breadcrumbService.getBreadcrumbList();\n\n            if (\n                this.breadcrumbsToPersist &&\n                this.breadcrumbsToPersist.length > 0 &&\n                !isEqual(this.breadcrumbsToPersist, breadcrumbArr)\n            ) {\n                if (breadcrumbArr && breadcrumbArr.length > 0) {\n                    this.breadcrumbService.popBreadcrumbs(breadcrumbArr.length);\n                }\n                this.breadcrumbsToPersist.forEach((item) => {\n                    this.breadcrumbService.updateBreadcrumbs(item.name, item.path, true);\n                });\n            }\n\n            this.breadcrumbService.checkIfAnyRemovableBreadcrumbsExist(false);\n            this.breadcrumbService.updateBreadcrumbs(name, path, true);\n        } else {\n            this.breadcrumbService.isBreadcrumbClicked = false;\n        }\n    }\n\n    fetchBlankOrders() {\n        this.showTableSkeletonLoader = true;\n\n        if (this.selectedFilters?.periodData) {\n            const params = this.createPayloadToFetchOrders();\n\n            this.consumingProjectOrderService\n                .getBlankOrders(params)\n                .pipe(takeUntil(this.ngUnsubscribe))\n                .subscribe(\n                    (response: any) => {\n                        this.orders = [];\n                        this.orders = new OrderDetailsGroupedByRevisionStatus(\n                            response,\n                            this.currencyPipe,\n                            this.decimalPipe,\n                            this.consumingProjectOrderService.orderListingCurrentTabName,\n                        ).orders;\n                        this.clonedOrders = cloneDeep(this.orders);\n                        this.annaSortService.noSortingAppliedData = cloneDeep(this.clonedOrders);\n                        this.disableToggleButton = this.orders.length === 0;\n                        this.equivalisationOfDataService.publishIsNoDataStatusData(this.disableToggleButton);\n                        this.showTableSkeletonLoader = false;\n                        this.handleResponse();\n                        this.isEquivilizationChanged = false;\n                    },\n                    (error: any) => {\n                        this.toastr.error(\"Something went wrong! Please try again\", \"\", {\n                            toastClass: \"Inventory-custom-width ngx-toastr custom-anna-error\",\n                        });\n                        this.getOrdersApiErrorHandler();\n                    },\n                );\n        } else {\n            this.getOrdersApiErrorHandlerWithSetTimeout();\n        }\n    }\n\n    fetchTvRevenueOrders() {\n        this.showTableSkeletonLoader = true;\n\n        if (this.selectedFilters?.periodData) {\n            const params = this.createPayloadToFetchOrders();\n\n            this.consumingProjectOrderService\n                .getTvRevenueOrders(params)\n                .pipe(takeUntil(this.ngUnsubscribe))\n                .subscribe(\n                    (response: any) => {\n                        this.orders = [];\n                        this.orders = new OrderDetailsGroupedByRevisionStatus(\n                            response,\n                            this.currencyPipe,\n                            this.decimalPipe,\n                            this.consumingProjectOrderService.orderListingCurrentTabName,\n                        ).orders;\n                        this.disableToggleButton = this.orders.length === 0;\n                        this.clonedOrders = cloneDeep(this.orders);\n                        this.annaSortService.noSortingAppliedData = cloneDeep(this.orders);\n                        this.showTableSkeletonLoader = false;\n                        this.equivalisationOfDataService.publishIsNoDataStatusData(this.disableToggleButton);\n                        this.handleResponse();\n                    },\n                    (error: any) => {\n                        this.toastr.error(\"Something went wrong! Please try again\", \"\", {\n                            toastClass: \"Inventory-custom-width ngx-toastr custom-anna-error\",\n                        });\n                        this.getOrdersApiErrorHandler();\n                    },\n                );\n        } else {\n            this.getOrdersApiErrorHandlerWithSetTimeout();\n        }\n    }\n\n    fetchOtherRevenueOrders() {\n        this.showTableSkeletonLoader = true;\n\n        if (this.selectedFilters?.periodData) {\n            const params = this.persistingFilterService.convertObjToQueryString(this.createPayloadToFetchOrders());\n\n            this.consumingProjectOrderService\n                .getOtherRevenueOrders(params)\n                .pipe(takeUntil(this.ngUnsubscribe))\n                .subscribe(\n                    (response: any) => {\n                        this.orders = [];\n                        this.orders = new OrderDetailsGroupedByRevisionStatus(\n                            response,\n                            this.currencyPipe,\n                            this.decimalPipe,\n                            this.consumingProjectOrderService.orderListingCurrentTabName,\n                        ).orders;\n                        this.disableToggleButton = this.orders.length === 0;\n                        this.clonedOrders = cloneDeep(this.orders);\n                        this.annaSortService.noSortingAppliedData = cloneDeep(this.orders);\n                        this.showTableSkeletonLoader = false;\n                        this.equivalisationOfDataService.publishIsNoDataStatusData(this.disableToggleButton);\n                        this.handleResponse();\n                    },\n                    (error: any) => {\n                        this.toastr.error(\"Something went wrong! Please try again\", \"\", {\n                            toastClass: \"Inventory-custom-width ngx-toastr custom-anna-error\",\n                        });\n                        this.getOrdersApiErrorHandler();\n                    },\n                );\n        } else {\n            this.getOrdersApiErrorHandlerWithSetTimeout();\n        }\n    }\n\n    getOrdersApiErrorHandler() {\n        this.disableToggleButton = true;\n        this.orders = [];\n        this.clonedOrders = [];\n        this.showTableSkeletonLoader = false;\n        this.equivalisationOfDataService.publishIsNoDataStatusData(this.disableToggleButton);\n    }\n\n    getOrdersApiErrorHandlerWithSetTimeout() {\n        setTimeout(() => {\n            this.getOrdersApiErrorHandler();\n        }, 0);\n    }\n\n    createPayloadToFetchOrders() {\n        const payload = this.getLatestPayload();\n\n        return payload;\n    }\n\n    getLatestPayload() {\n        let payload: any = {\n            LoggedInUserId: this.consumingProjectOrderService.loggedInUserId,\n            ogId: this.selectedFilters.og?.id,\n            QuarterStartDate: dayjs(this.selectedFilters.periodData.startDate, \"MM/DD/YYYY\").format(\"YYYY-MM-DD\"),\n            QuarterEndDate: dayjs(this.selectedFilters.periodData.endDate, \"MM/DD/YYYY\").format(\"YYYY-MM-DD\"),\n            CalendarType: this.selectedFilters.periodData.calendarType.toUpperCase(),\n        };\n\n        if (this.consumingProjectOrderService.showMultiSelectionForStation) {\n            payload = Object.assign(payload, {\n                StationIds: this.selectedFilters.stationIds,\n            });\n        } else {\n            payload = Object.assign(payload, {\n                StationId: this.selectedFilters.stationId,\n            });\n        }\n\n        if (\n            this.consumingProjectOrderService.orderListingCurrentTabName !==\n                this.orderListingConstants.BlankAndDeleted &&\n            this.consumingProjectOrderService.orderListingCurrentTabName !== this.orderListingConstants.Deleted\n        ) {\n            const payloadToAdd = {\n                IsEquivalized: this.selectedFilters.isEquivalised,\n                isNormalized: this.selectedFilters.normalizedData.toggle,\n            };\n\n            if (this.selectedFilters.normalizedData.toggle) {\n                payload.demoId = this.selectedFilters.normalizedData.demoId;\n            }\n\n            payload = Object.assign(payload, payloadToAdd);\n        }\n\n        return payload;\n    }\n\n    ngOnDestroy() {\n        this.orderListingHelperService.orderListingFiltersAlreadyApplied = false;\n        this.subscriptionForSidebarClick.unsubscribe();\n        // This aborts all HTTP requests with takeUntil pipe when navigated to some other page.\n        this.ngUnsubscribe.next();\n        this.ngUnsubscribe.complete();\n    }\n\n    setTableHeight() {\n        let dataOnTopHeight = 234;\n        if (this.showTableSkeletonLoader) {\n            dataOnTopHeight =\n                this.consumingProjectOrderService.orderListingCurrentTabName ===\n                    OrderListingConstants.BlankAndDeleted ||\n                this.consumingProjectOrderService.orderListingCurrentTabName === OrderListingConstants.Deleted\n                    ? 223\n                    : 243;\n        } else {\n            dataOnTopHeight =\n                this.consumingProjectOrderService.orderListingCurrentTabName ===\n                    OrderListingConstants.BlankAndDeleted ||\n                this.consumingProjectOrderService.orderListingCurrentTabName === OrderListingConstants.Deleted\n                    ? 223\n                    : 236;\n        }\n        this.gtDimension = { ...this.gtDimension, dataOnTopHeight };\n    }\n\n    getTotalRowEmptyColumSpan(currentTab: string) {\n        let colspan;\n        switch (currentTab) {\n            case OrderListingConstants.TvRevenue:\n                colspan = 9;\n                break;\n            case OrderListingConstants.BlankAndDeleted:\n                colspan = 6;\n                break;\n            case OrderListingConstants.Deleted:\n                colspan = 3;\n                break;\n            case OrderListingConstants.TV:\n                colspan = 3;\n                break;\n            default:\n                colspan = this.consumingProjectOrderService.totalRowEmptyColspan;\n                break;\n        }\n\n        return colspan;\n    }\n\n    createTotalRowData() {\n        this.totalRowInfo = [];\n        this.orders = this.orders ? this.orders : [];\n        const totalRowData = new OrderListingTotalRow(this.orders);\n\n        const tvTab = this.consumingProjectOrderService.orderListingCurrentTabName === OrderListingConstants.TV;\n        const tvRevenueTab =\n            this.consumingProjectOrderService.orderListingCurrentTabName === OrderListingConstants.TvRevenue;\n\n        // if (\n        //     this.consumingProjectOrderService.orderListingCurrentTabName !== OrdersConstant.BlankAndDeleted &&\n        //     this.consumingProjectOrderService.orderListingCurrentTabName !== OrdersConstant.Deleted\n        // ) {\n        //     this.totalRowInfo.push({\n        //         colspan: 1,\n        //         data: ``,\n        //         colName: \"total-empty\",\n        //     });\n        // }\n\n        this.totalRowInfo.push({\n            colspan: 1,\n            data: ``,\n            colName: \"total-empty\",\n        });\n\n        let colSpan;\n        if (tvRevenueTab || tvTab) {\n            colSpan = this.consumingProjectOrderService.totalRowTVRevenueMessageColspan;\n        } else {\n            colSpan =\n                this.consumingProjectOrderService.orderListingCurrentTabName === OrderListingConstants.OtherRevenue\n                    ? 5\n                    : this.consumingProjectOrderService.totalBlankAndDeletedMessageColspan;\n        }\n        this.totalRowInfo.push({\n            colspan: colSpan,\n            data: `Total for ${this.orders.length} order(s) listed below`,\n            colName: \"total\",\n        });\n\n        this.totalRowInfo.push({\n            colspan: this.getTotalRowEmptyColumSpan(this.consumingProjectOrderService.orderListingCurrentTabName),\n            data: ``,\n            colName: \"total-empty-col\",\n        });\n\n        this.totalRowInfo.push({\n            colspan: 1,\n            data: totalRowData.displayBookedValue,\n            lowerData: `${this.decimalPipe.transform(totalRowData.bookedSpots, \"1.0-2\")}`,\n            colName: \"total-bookedAndspots\",\n        });\n\n        const cpp =\n            totalRowData.cpp == null\n                ? \"-\"\n                : `${this.currencyPipe.transform(totalRowData.cpp, \"USD\", \"symbol\", \"1.0-0\")}`;\n        this.totalRowInfo.push({\n            colspan: 1,\n            data: `${this.decimalPipe.transform(totalRowData.bookedGrpWithoutRoundoff, \"1.0-0\")}`,\n            lowerData: cpp,\n            colName: \"total-grpAndCpp\",\n        });\n\n        const cpm =\n            totalRowData.cpm == null\n                ? \"-\"\n                : `${this.currencyPipe.transform(totalRowData.cpm, \"USD\", \"symbol\", \"1.0-1\")}`;\n        this.totalRowInfo.push({\n            colspan: 1,\n            data: totalRowData.displayImps,\n            lowerData: cpm,\n            colName: \"total-impAndCpm\",\n        });\n\n        if (\n            this.consumingProjectOrderService.orderListingCurrentTabName !== OrderListingConstants.OtherRevenue &&\n            this.consumingProjectOrderService.orderListingCurrentTabName !== OrderListingConstants.BlankAndDeleted &&\n            this.consumingProjectOrderService.orderListingCurrentTabName !== OrderListingConstants.Deleted\n        ) {\n            this.totalRowInfo.push({\n                colspan: 1,\n                data: totalRowData.displayRcvPreempt,\n                lowerData: totalRowData.displayOsPreempt,\n                colName: \"total-madegoodPEAndOsPE\",\n            });\n\n            this.totalRowInfo.push({\n                colspan: 1,\n                data: totalRowData.displayPostedAdu,\n                lowerData: totalRowData.displayScheduledAdu,\n                colName: \"total-postedAduAndScheduledAdu\",\n            });\n\n            this.totalRowInfo.push({\n                colspan: 1,\n                data: totalRowData.displayUdImps,\n                lowerData: totalRowData.displayOdImps,\n                colName: \"total-under-delivery-imps\",\n            });\n\n            this.totalRowInfo.push({\n                colspan: 1,\n                data: totalRowData.displayUdGrp,\n                lowerData: totalRowData.displayOdGrp,\n                colName: \"total-over-delivery-imps\",\n            });\n\n            this.totalRowInfo.push({\n                colspan: 1,\n                data: \"-\",\n                // totalRowData.underDeliveryPercent === 0\n                //     ? \"-\"\n                //     : `${this.decimalPipe.transform(totalRowData.underDeliveryPercent, \"1.2-2\")}%`,\n                lowerData: \"-\",\n                // totalRowData.overDeliveryPercent === 0\n                //     ? \"-\"\n                //     : `${this.decimalPipe.transform(totalRowData.overDeliveryPercent, \"1.2-2\")}%`,\n                colName: \"total-under-delivery-grp\",\n            });\n\n            this.totalRowInfo.push({\n                colspan: 1,\n                data: totalRowData.displayUdValue,\n                lowerData: totalRowData.displayOdValue,\n                colName: \"total-over-delivery-grp\",\n            });\n        }\n    }\n\n    filterAppliedToTable(data: OrderDetails[]) {\n        this.orders = cloneDeep(data);\n        this.createTotalRowData();\n        this.enableDisableClearAllBtn();\n        this.updateNavigationHistory();\n        this.setTableHeight();\n    }\n\n    sortingAppliedToTable(data: OrderDetails[]) {\n        this.orders = cloneDeep(data);\n        this.enableDisableClearAllBtn();\n        this.updateNavigationHistory();\n    }\n\n    starUnstarOrder(emittedData: IconData) {\n        if (this.starredOrderLoading) {\n            window.event.stopPropagation();\n            return;\n        }\n\n        const order = emittedData.data;\n        // as star is part of table row and if we click on the star it will also call the tr method .\n        // To stop that.\n        window.event.stopPropagation();\n        const value = order.orderStarred;\n        const payload = {\n            marked_as_starred: !value,\n            order_id: order.orderId.toString(),\n            station_id: order.stationId,\n            user_id: +JSON.parse(localStorage.getItem(\"userProfileData\")).userId,\n            campaign_id: order.campaignId,\n        };\n        this.starredOrderLoading = true;\n        this.consumingProjectOrderService.starUnstarOrder(payload).subscribe((response: any) => {\n            order.orderStarred = !order.orderStarred;\n            const tableDataOrder = this.orders.filter((item) => item.orderId === order.orderId)[0];\n            tableDataOrder.orderStarred = order.orderStarred;\n            const returnedArr = this.clonedOrders.filter((obj) => obj.orderId === order.orderId);\n            returnedArr[0].orderStarred = order.orderStarred;\n            returnedArr[0].iconClass = order.orderStarred ? \"mdi mdi-star highlight-star\" : \"mdi mdi-star-outline\";\n            // const starredOrderIndex: number = this.orders.findIndex((obj) => obj.orderStarred);\n            tableDataOrder.iconClass = order.orderStarred ? \"mdi mdi-star highlight-star\" : \"mdi mdi-star-outline\";\n            order.iconClass = order.orderStarred ? \"mdi mdi-star highlight-star\" : \"mdi mdi-star-outline\";\n            this.clonedOrders = [...this.clonedOrders];\n            this.orders = cloneDeep(this.orders);\n            this.checkStarOrderStatus();\n            this.enableDisableClearAllBtn();\n            this.starredOrderLoading = false;\n            this.cdRef.detectChanges();\n        });\n    }\n\n    updateDataForEasyFilters(tableData: OrderDetails[]) {\n        this.orders = [...tableData];\n        this.filterToBeUpdatedManually = null;\n    }\n\n    checkStarOrderStatus() {\n        this.filterToBeUpdatedManually = OrderListingEasyFilterConstants.STARRED;\n    }\n\n    orderRowClicked(order: OrderDetails) {\n        this.onorderRowClicked.emit({\n            order,\n            selectedFilter: this.selectedFilters,\n            breadcrumbsToPersist: this.breadcrumbsToPersist,\n        });\n    }\n\n    handleResponse() {\n        // !! CHANGE 1\n        this.annaSortService.columnSortState = this.filtersFromRoute?.sortState\n            ? new Map(JSON.parse(this.filtersFromRoute.sortState))\n            : new Map();\n\n        this.annaFilterService.updateStateOfAllTheKeys(this.annaSortService.columnSortState);\n\n        if (this.applyFiltersFromTheUrl && !this.dashboardAndOrderListingService.orderCardViewClicked) {\n            if (this.dashboardAndOrderListingService.audPerformanceCardViewClicked) {\n                this.filterTableRowsIfDashboardAudPerformaceClicked();\n            }\n            this.orders = this.annaFilterService.filterData(this.clonedOrders, \"\");\n            this.annaSortService.noSortingAppliedData = cloneDeep(this.orders);\n            this.callSort();\n            this.orderListingHelperService.orderListingFiltersAlreadyApplied = false;\n        } else if (this.dashboardAndOrderListingService.orderCardViewClicked) {\n            this.filterTableRowsIfDashboardViewOrdersClicked();\n        }\n\n        this.setTableHeight();\n        this.enableDisableClearAllBtn();\n        this.createTotalRowData();\n        this.resetDashboardVariables();\n        this.isEquivilizationChanged = false;\n    }\n\n    resetDashboardVariables() {\n        this.dashboardAndOrderListingService.dashboardSelectedUsersName = null;\n        this.dashboardAndOrderListingService.orderCardViewClicked = false;\n        this.dashboardAndOrderListingService.audPerformanceCardViewClicked = false;\n        this.dashboardAndOrderListingService.orderListingIntelliFilterToBeSelected = null;\n    }\n\n    callSort() {\n        this.annaSortService.columnSortState.forEach((value, key) => {\n            if (value === \"ASC\") {\n                this.orders = this.annaSortService.sortDataForComponentOtherThanLurAndCsrPage(true, this.orders, key);\n            } else if (value === \"DESC\") {\n                this.orders = this.annaSortService.sortDataForComponentOtherThanLurAndCsrPage(false, this.orders, key);\n            }\n        });\n    }\n\n    intelliFilterClicked(emittedObj: any) {\n        this.nonEditableGTComponent.setScrollToInitialPosition();\n        this.orders = emittedObj.filteredData;\n        this.createTotalRowData();\n\n        this.enableDisableClearAllBtn();\n        this.updateNavigationHistory();\n    }\n\n    enableDisableClearAllBtn() {\n        let isSortApplied = false;\n        this.annaSortService.columnSortState.forEach((val, key) => {\n            if (val === \"ASC\" || val === \"DESC\") {\n                isSortApplied = true;\n            }\n        });\n\n        this.disableClearAllBtn = this.annaFilterService.appliedFiltersArray.length === 0 && !isSortApplied;\n    }\n\n    filterTableRowsIfDashboardAudPerformaceClicked() {\n        this.setDashboardRegionFilter();\n        this.setDashboardAeFilter();\n        this.setDashboardProductCategoryFilter();\n        this.setDashboardOrderTypeAsPaidAudienceFilter();\n        // If there is only easy filters then above function will not call\n        // applyFilters func\n        if (\n            this.annaFilterService.appliedFiltersArray.length >= 1 &&\n            this.annaFilterService.appliedFiltersArray[0].includes(\"easy_\")\n        ) {\n            this.applyFilters();\n        }\n    }\n\n    filterTableRowsIfDashboardViewOrdersClicked() {\n        this.setDashboardRegionFilter();\n        this.setDashboardAeFilter();\n        this.setDashboardProductCategoryFilter();\n\n        // If there is only easy filters then above function will not call\n        // applyFilters func\n        if (\n            this.annaFilterService.appliedFiltersArray.length >= 1 &&\n            this.annaFilterService.appliedFiltersArray[0].includes(\"easy_\")\n        ) {\n            this.applyFilters();\n        }\n    }\n\n    setDashboardOrderTypeAsPaidAudienceFilter() {\n        const orderTypeOptionOtherThanAudiencePostingRequired = this.orders.find((x) => x.isAudiencePostingRequired);\n\n        if (orderTypeOptionOtherThanAudiencePostingRequired) {\n            this.annaFilterService.selectedRadio = \"isAudiencePostingRequiredText\";\n            this.annaFilterService.appliedFiltersArray.push(\"isAudiencePostingRequiredText\");\n            this.annaFilterService.tooltipSelectedMap.set(\"isAudiencePostingRequiredText\", [\"Yes\"]);\n            this.applyFilters();\n        }\n    }\n\n    setDashboardRegionFilter() {\n        this.annaFilterService.selectedRadio = \"region\";\n        const regionSetForPersistingFilter = sortBy(this.dashboardAndOrderListingService.dashboardSelectedRegions);\n        if (regionSetForPersistingFilter.length > 0) {\n            const allRegions = sortBy(uniq(this.orders.map((item) => item.region)));\n            const anyChangeInFilter =\n                regionSetForPersistingFilter.length !== allRegions.length &&\n                !this.isSubset(allRegions, regionSetForPersistingFilter);\n\n            if (anyChangeInFilter) {\n                this.annaFilterService.appliedFiltersArray.push(\"region\");\n                this.annaFilterService.tooltipSelectedMap.set(\"region\", regionSetForPersistingFilter);\n                this.applyFilters();\n            }\n        }\n    }\n\n    setDashboardAeFilter() {\n        this.annaFilterService.selectedRadio = \"primaryAe\";\n        const primaryAePersistingFilter = sortBy(this.dashboardAndOrderListingService.dashboardSelectedUsersName);\n        if (primaryAePersistingFilter.length > 0) {\n            const allPrimaryAeOption = sortBy(uniq(this.orders.map((item) => item.primaryAe)));\n            const anyChangeInFilter =\n                primaryAePersistingFilter.length !== allPrimaryAeOption.length &&\n                !this.isSubset(allPrimaryAeOption, primaryAePersistingFilter);\n\n            if (anyChangeInFilter) {\n                this.annaFilterService.appliedFiltersArray.push(\"primaryAe\");\n                this.annaFilterService.tooltipSelectedMap.set(\"primaryAe\", primaryAePersistingFilter);\n                this.applyFilters();\n            }\n        }\n    }\n\n    setDashboardProductCategoryFilter() {\n        this.annaFilterService.selectedRadio = \"productCode\";\n        const productCategorySetForPersistingFilter = sortBy(\n            this.dashboardAndOrderListingService.dashboardSelectedProductCategories,\n        );\n        if (productCategorySetForPersistingFilter.length > 0) {\n            const allProductCategories = sortBy(uniq(this.orders.map((item) => item.productCode)));\n            const anyChangeInFilter =\n                productCategorySetForPersistingFilter.length !== allProductCategories.length &&\n                !this.isSubset(allProductCategories, productCategorySetForPersistingFilter);\n\n            if (anyChangeInFilter) {\n                this.annaFilterService.appliedFiltersArray.push(\"productCode\");\n                this.annaFilterService.tooltipSelectedMap.set(\"productCode\", productCategorySetForPersistingFilter);\n                this.applyFilters();\n            }\n        }\n    }\n\n    isSubset(filteredItems: string[], allItems: string[]): boolean {\n        return filteredItems.every((item) => allItems.includes(item));\n    }\n\n    applyFilters() {\n        this.orders = this.annaFilterService.filterData(this.clonedOrders, \"\");\n        this.annaFilterService.updateStateOfTheCurrentFilterTab(new Map());\n        this.createTotalRowData();\n        this.enableDisableClearAllBtn();\n        this.updateNavigationHistory();\n        this.setTableHeight();\n    }\n\n    clearAllFilter() {\n        this.nonEditableGTComponent?.setScrollToInitialPosition();\n        this.annaFilterService.tooltipSelectedMap = new Map();\n        this.annaFilterService.selectedRadio = null;\n        this.annaFilterService.appliedFiltersArray = [];\n        this.selectedEasyFilter = null;\n        this.annaSortService.columnSortState = new Map();\n        this.enableDisableClearAllBtn();\n\n        this.orders = cloneDeep(this.clonedOrders);\n        this.setTableHeight();\n        this.createTotalRowData();\n\n        this.performActionOnQueryParamChange = false;\n        const urlToNavigate = this.getUrlOfCurrentTab();\n\n        this.modifyQueryParam(\"filters\", \"DELETE\");\n        this.modifyQueryParam(\"breadcrumbs\", \"DELETE\");\n\n        const latestFilter = this.consumingProjectOrderService.getLatestFilters();\n\n        if (latestFilter) {\n            this.router.navigate([`orders/${urlToNavigate}`], {\n                queryParams: latestFilter,\n            });\n        } else {\n            this.router.navigate([`orders/${urlToNavigate}`]);\n        }\n\n        this.annaSortService.noSortingAppliedData = cloneDeep(this.clonedOrders);\n        this.annaFilterService.updateStateOfAllTheKeys(this.annaSortService.columnSortState);\n    }\n\n    updateNavigationHistory() {\n        this.performActionOnQueryParamChange = this.isEquivilizationChanged;\n        const queryParams = this.prepareQueryParamOnFilterApplication();\n\n        const path = this.getUrlOfCurrentTab();\n\n        if (Object.keys(queryParams).length > 0) {\n            this.router.navigate([`orders/${path}`], {\n                queryParams,\n            });\n        } else {\n            this.router.navigate([`orders/${path}`]);\n        }\n    }\n\n    getUrlOfCurrentTab() {\n        if (this.consumingProjectOrderService.orderListingCurrentTabName === OrderListingConstants.OtherRevenue) {\n            return \"other-revenue\";\n        } else if (this.consumingProjectOrderService.orderListingCurrentTabName === OrderListingConstants.TV) {\n            return \"tv\";\n        } else if (this.consumingProjectOrderService.orderListingCurrentTabName === OrderListingConstants.TvRevenue) {\n            return \"tv-revenue\";\n        } else if (\n            this.consumingProjectOrderService.orderListingCurrentTabName === OrderListingConstants.BlankAndDeleted\n        ) {\n            return \"blank-and-deleted\";\n        } else if (this.consumingProjectOrderService.orderListingCurrentTabName === OrderListingConstants.Deleted) {\n            return \"deleted\";\n        }\n        return null;\n    }\n\n    prepareQueryParamOnFilterApplication() {\n        const filters: any = {};\n\n        // Column level and easy filter\n        if (this.annaFilterService.appliedFiltersArray.length > 0) {\n            filters.appliedFilters = this.annaFilterService.appliedFiltersArray;\n            filters.selectedFilterData = JSON.stringify(Array.from(this.annaFilterService.tooltipSelectedMap));\n        }\n\n        // Column level sorting\n        if (this.annaGtService.isSortingAppliedToTable()) {\n            filters.sortState = JSON.stringify(Array.from(this.annaSortService.columnSortState));\n        }\n\n        let latestFilters = this.consumingProjectOrderService.getLatestFilters();\n        latestFilters = latestFilters || {};\n\n        if (latestFilters.stationId) {\n            delete latestFilters.stationId;\n        }\n        if (latestFilters.filterFor) {\n            delete latestFilters.filterFor;\n        }\n        if (Object.keys(filters).length > 0) {\n            const hashedQueryParams = this.persistingFilterService.storeKeyValueInLocalStorage(filters);\n            latestFilters.filters = hashedQueryParams;\n        } else {\n            delete latestFilters.filters;\n        }\n\n        this.consumingProjectOrderService.setLatestFilters(latestFilters);\n\n        return latestFilters;\n    }\n\n    resetSorting() {\n        this.annaSortService.columnSortState = new Map();\n    }\n\n    applyOrderListingPopupFilter(filters: DashboardFilterSelectionPopUp) {\n        // On clicking apply filters.updateNavigation: true\n        if (filters.updateNavigation) {\n            const popupFilters: any = {};\n            this.modifyQueryParam(\"filters\", \"DELETE\");\n\n            if (\n                !this.consumingProjectOrderService.showMultiSelectionForStation &&\n                this.initialStationAndPeriodFilter.stationId !== filters.stationId\n            ) {\n                popupFilters.stationId = filters.stationId;\n            }\n\n            if (\n                this.consumingProjectOrderService.showMultiSelectionForStation &&\n                !isEqual(this.initialStationAndPeriodFilter.stationId, filters.stationId)\n            ) {\n                popupFilters.stationIds = filters.stationIds;\n            }\n\n            if (this.initialStationAndPeriodFilter.og?.id !== filters.og?.id) {\n                popupFilters.og = {};\n                popupFilters.og.id = filters.og?.id;\n            }\n\n            if (!isEqual(this.initialStationAndPeriodFilter.periodData, filters.periodData)) {\n                popupFilters.periodData = filters.periodData;\n            }\n\n            if (this.initialStationAndPeriodFilter.isEquivalised !== filters.isEquivalised) {\n                popupFilters.isEquivalised = filters.isEquivalised;\n            }\n\n            if (!isEqual(this.initialStationAndPeriodFilter.normalizedData, filters.normalizedData)) {\n                popupFilters.normalizedData = filters.normalizedData;\n            }\n\n            if (Object.keys(popupFilters).length > 0) {\n                const hashedQueryParams = this.persistingFilterService.storeKeyValueInLocalStorage(popupFilters);\n                this.modifyQueryParam(\"popupFilter\", \"ADD\", hashedQueryParams);\n            } else {\n                this.persistingFilterForPopup = null;\n                this.modifyQueryParam(\"popupFilter\", \"DELETE\", JSON.stringify(popupFilters));\n            }\n\n            const latestFilters = this.consumingProjectOrderService.getLatestFilters();\n            this.initFilters();\n            this.resetSorting();\n            this.annaFilterService.updateStateOfAllTheKeys(new Map());\n            this.applyFiltersFromTheUrl = false;\n\n            if (latestFilters) {\n                this.router.navigate([], {\n                    relativeTo: this.route,\n                    queryParams: latestFilters,\n                });\n            } else {\n                this.router.navigate([], {\n                    relativeTo: this.route,\n                });\n            }\n        }\n\n        this.selectedFilters = filters;\n        this.consumingProjectOrderService.selectedOg = cloneDeep(filters.og);\n        this.easyFilters = this.getEasyFiltersForCurrentTab();\n        // if (this.consumingProjectOrderService.isSandboxModeFeaturePresent) {\n        //   // uncomment for SI\n        //   let isStationInSandboxMode = this.consumingProjectLoginService.isStationInSandboxMode(this.selectedFilters.stationId, (station: any, value: any) => station.StationId == value);\n        //   // let isStationInSandboxMode = isS(this.selectedFilters)\n        //   // this.loginService.isStationInSandoxMode(\n        //   //   this.selectedFilters.stationId,\n        //   //   (station, value) => station.StationId == value\n        //   // );\n        //   this.removeWriteEnabledEasyFilter(isStationInSandboxMode);\n        // }\n        // else {\n        //   this.removeWriteEnabledEasyFilter(false);\n        // }\n\n        this.createPayloadAndFetchOrders();\n    }\n\n    createPayloadAndFetchOrders() {\n        if (\n            this.consumingProjectOrderService.orderListingCurrentTabName === OrderListingConstants.TvRevenue ||\n            this.consumingProjectOrderService.orderListingCurrentTabName === OrderListingConstants.TV\n        ) {\n            this.fetchTvRevenueOrders();\n        } else if (\n            this.consumingProjectOrderService.orderListingCurrentTabName === OrderListingConstants.OtherRevenue\n        ) {\n            this.fetchOtherRevenueOrders();\n        } else if (\n            this.consumingProjectOrderService.orderListingCurrentTabName === OrderListingConstants.BlankAndDeleted ||\n            this.consumingProjectOrderService.orderListingCurrentTabName === OrderListingConstants.Deleted\n        ) {\n            this.fetchBlankOrders();\n        }\n    }\n\n    // getLatestFilters() {\n    //   if (this.consumingProjectOrderService.orderListingCurrentTabName == OrdersConstant.TvRevenue) {\n    //     return this.orderDRRListingContainerService.latestTvRevenueTabFilters;\n    //   } else if (this.consumingProjectOrderService.orderListingCurrentTabName == OrdersConstant.OtherRevenue) {\n    //     return this.orderDRRListingContainerService.latestOtherRevenueTabFilters;\n    //   } else if (this.consumingProjectOrderService.orderListingCurrentTabName == OrdersConstant.Blank) {\n    //     return this.orderDRRListingContainerService.latestBlankTabFilters;\n    //   }\n    // }\n\n    // setLatestFilters(queryParams: any) {\n    //   if (this.consumingProjectOrderService.orderListingCurrentTabName == OrdersConstant.Blank) {\n    //     this.orderDRRListingContainerService.latestBlankTabFilters = queryParams;\n    //   } else if (this.consumingProjectOrderService.orderListingCurrentTabName == OrdersConstant.TvRevenue) {\n    //     this.orderDRRListingContainerService.latestTvRevenueTabFilters = queryParams;\n    //   } else if (this.consumingProjectOrderService.orderListingCurrentTabName == OrdersConstant.OtherRevenue) {\n    //     this.orderDRRListingContainerService.latestOtherRevenueTabFilters = queryParams;\n    //   }\n    // }\n\n    resetFiltersAndSetBreadcrumbs() {\n        if (\n            this.consumingProjectOrderService.orderListingCurrentTabName === OrderListingConstants.TvRevenue ||\n            this.consumingProjectOrderService.orderListingCurrentTabName === OrderListingConstants.TV\n        ) {\n            this.applyFiltersFromTheUrl = false;\n            this.setBreadcrumbs();\n            this.clearAllFilter();\n            this.persistingFilterForPopup = null;\n            this.callDashboardFiltersApi();\n            if (this.isEquivalized) {\n                this.isEquivalized = false;\n                this.orderListingHelperService.isEqivalizedToggleOn = false;\n                this.createPayloadAndFetchOrders();\n            }\n        }\n    }\n\n    removeWriteEnabledEasyFilter(isStationInSandboxMode: boolean) {\n        if (\n            !isStationInSandboxMode &&\n            this.easyFilters.length > 0 &&\n            (this.consumingProjectOrderService.orderListingCurrentTabName === OrderListingConstants.TvRevenue ||\n                this.consumingProjectOrderService.orderListingCurrentTabName === OrderListingConstants.TV)\n        ) {\n            this.easyFilters.splice(-1);\n        }\n    }\n\n    modifyQueryParam(key: string, operation: string, value?: any) {\n        // Fetching latest filters\n        let latestFilter = this.consumingProjectOrderService.getLatestFilters();\n        latestFilter = latestFilter || {};\n\n        // Perform Operation on the latestFilter\n        if (operation === \"ADD\") {\n            latestFilter[key] = value;\n        } else if (operation === \"DELETE\") {\n            delete latestFilter[key];\n        }\n\n        this.consumingProjectOrderService.setLatestFilters(Object.keys(latestFilter).length > 0 ? latestFilter : null);\n    }\n\n    updateLatestFilters(queryParams: any) {\n        const latestFilters = this.consumingProjectOrderService.getLatestFilters();\n        const updatedQueryParams = Object.keys(queryParams).length === 0 ? null : queryParams;\n\n        if (!isEqual(updatedQueryParams, latestFilters)) {\n            this.consumingProjectOrderService.setLatestFilters(cloneDeep(updatedQueryParams));\n        }\n    }\n\n    updateInitialStationAndPeriodFilter(filters: PersistedDashboardPrimaryFilters) {\n        this.initialStationAndPeriodFilter = filters;\n    }\n}\n","<div\n    class=\"main-container\"\n    [ngClass]=\"{\n        'deleted-tab':\n            consumingProjectOrderService.orderListingCurrentTabName === orderListingConstants.BlankAndDeleted ||\n            consumingProjectOrderService.orderListingCurrentTabName === orderListingConstants.Deleted\n    }\"\n>\n    <!-- Container without No data to display -->\n    <ng-container *ngIf=\"!showNoDataToDisplay\">\n        <div class=\"station-period-row\">\n            <anna-design-dashboard-filter-modal\n                [filterData]=\"filterData\"\n                [headerText]=\"'Edit Filter'\"\n                [showOwnershipGroup]=\"consumingProjectOrderService.showOwnershipGroup\"\n                [showStation]=\"consumingProjectOrderService.showStation\"\n                [showMultiSelectionForStation]=\"consumingProjectOrderService.showMultiSelectionForStation\"\n                [showEquivilization]=\"\n                    !(\n                        consumingProjectOrderService.orderListingCurrentTabName ===\n                            orderListingConstants.BlankAndDeleted ||\n                        consumingProjectOrderService.orderListingCurrentTabName === orderListingConstants.Deleted\n                    )\n                \"\n                [showNormalization]=\"\n                    !(\n                        consumingProjectOrderService.orderListingCurrentTabName ===\n                            orderListingConstants.BlankAndDeleted ||\n                        consumingProjectOrderService.orderListingCurrentTabName === orderListingConstants.Deleted\n                    )\n                \"\n                [error]=\"filterApiError\"\n                [handleNavigation]=\"false\"\n                [message]=\"'Select data for which you want to view the orders for.'\"\n                [toDisable]=\"showTableSkeletonLoader\"\n                [persistingFilter]=\"persistingFilterForPopup\"\n                [toShowAllPeriodModeSetting]=\"true\"\n                [PeriodOptions]=\"PeriodOptions\"\n                [stationIdsWithValidLicense]=\"stationIdsWithValidLicense\"\n                (getInitialFilter)=\"updateInitialStationAndPeriodFilter($event)\"\n                (applyFilter)=\"applyOrderListingPopupFilter($event)\"\n            >\n            </anna-design-dashboard-filter-modal>\n        </div>\n\n        <div\n            class=\"easy-reset-container\"\n            *ngIf=\"!showNoDataToDisplayInsideTable && !showTableSkeletonLoader && clonedOrders.length === 0\"\n        >\n            <anna-design-message-box\n                class=\"no-data-info-msg\"\n                [messageBoxData]=\"messageBoxData\"\n                [hide]=\"false\"\n                [headerAsBlockElement]=\"false\"\n                [showHyphen]=\"false\"\n            >\n            </anna-design-message-box>\n        </div>\n\n        <ng-container\n            *ngIf=\"\n                showTableSkeletonLoader ||\n                (!showTableSkeletonLoader && (showNoDataToDisplayInsideTable || clonedOrders.length > 0))\n            \"\n        >\n            <div\n                class=\"d-flex easy-reset-container\"\n                [ngClass]=\"{\n                    'justify-content-between':\n                        consumingProjectOrderService.orderListingCurrentTabName !== orderListingConstants.Deleted,\n                    'justify-content-end':\n                        consumingProjectOrderService.orderListingCurrentTabName === orderListingConstants.Deleted\n                }\"\n            >\n                <anna-design-easy-filters\n                    #easyFilterComponent\n                    *ngIf=\"consumingProjectOrderService.orderListingCurrentTabName !== orderListingConstants.Deleted\"\n                    [showLoader]=\"showTableSkeletonLoader\"\n                    [numberOfItemsForLoader]=\"numberOfEasyFilterLoader\"\n                    [easyFilters]=\"easyFilters\"\n                    [tableData]=\"orders\"\n                    [clonedTableData]=\"clonedOrders\"\n                    [filterToBeUpdatedManually]=\"filterToBeUpdatedManually\"\n                    (getUpdatedDataAfterUserAction)=\"updateDataForEasyFilters($event)\"\n                    (easyFilterClickEvent)=\"intelliFilterClicked($event)\"\n                >\n                </anna-design-easy-filters>\n\n                <section\n                    class=\"reset-container\"\n                    *ngIf=\"!showTableSkeletonLoader\"\n                >\n                    <button\n                        class=\"clear-all-btn\"\n                        (click)=\"clearAllFilter()\"\n                        [disabled]=\"disableClearAllBtn\"\n                    >\n                        Reset all filters\n                    </button>\n                </section>\n\n                <!-- <ngx-skeleton-loader count=\"1\" \n            *ngIf=\"showTableSkeletonLoader\" [theme]=\"{ width: '92px', height: '20px', 'margin-right': '0px', 'margin-bottom': '-20px' }\">\n            </ngx-skeleton-loader> -->\n            </div>\n\n            <section class=\"order-table-container\">\n                <anna-core-non-editable-generic-table-lib\n                    class=\"order-listing-generic-table\"\n                    [ngClass]=\"{\n                        'table-loading': showTableSkeletonLoader,\n                        'tv-revenue-table':\n                            consumingProjectOrderService.orderListingCurrentTabName ===\n                                orderListingConstants.TvRevenue ||\n                            consumingProjectOrderService.orderListingCurrentTabName === orderListingConstants.TV,\n                        'blank-and-deleted-table':\n                            consumingProjectOrderService.orderListingCurrentTabName ===\n                                orderListingConstants.BlankAndDeleted ||\n                            consumingProjectOrderService.orderListingCurrentTabName === orderListingConstants.Deleted,\n                        'other-revenue-table':\n                            consumingProjectOrderService.orderListingCurrentTabName ===\n                            orderListingConstants.OtherRevenue,\n                        'no-data-table': !showTableSkeletonLoader && orders && orders.length === 0\n                    }\"\n                    [showSkeletonLoading]=\"showTableSkeletonLoader\"\n                    [tableHeaders]=\"tableHeaders\"\n                    [tableData]=\"orders\"\n                    [clonedTableData]=\"clonedOrders\"\n                    [gtGeneralConfig]=\"gtGeneralConfig\"\n                    [totalRowInfo]=\"totalRowInfo\"\n                    [includeBorderInTableHeight]=\"false\"\n                    [gtDimension]=\"gtDimension\"\n                    [clickableRow]=\"true\"\n                    [showOrHideToggleForTotalRow]=\"true\"\n                    (filterAppliedToTable)=\"filterAppliedToTable($event)\"\n                    (sortingAppliedToTable)=\"sortingAppliedToTable($event)\"\n                    (gtIconClicked)=\"starUnstarOrder($event)\"\n                    (rowClicked)=\"orderRowClicked($event)\"\n                    [tableBorderBottomClassRequired]=\"false\"\n                    [starredInProgress]=\"starredOrderLoading\"\n                >\n                </anna-core-non-editable-generic-table-lib>\n            </section>\n        </ng-container>\n    </ng-container>\n    <!-- No data to display Container -->\n    <ng-container *ngIf=\"showNoDataToDisplay\">\n        <anna-core-no-data-lib width=\"50%\"> </anna-core-no-data-lib>\n    </ng-container>\n</div>\n\n<ng-template #rejectedIcon>\n    <svg\n        width=\"15px\"\n        height=\"15px\"\n        viewBox=\"0 0 20 20\"\n    >\n        <g\n            id=\"Buyer-rejected-icon\"\n            stroke=\"none\"\n            stroke-width=\"1\"\n            fill=\"none\"\n            fill-rule=\"evenodd\"\n        >\n            <path\n                d=\"M15.7822266,4.21777344 C14.3671875,2.80276367 12.4951465,2 10.5,2 C6.37918945,2 3,5.37253906 3,9.5 C3,13.6296289 6.37133789,17 10.5,17 C14.6105273,17 18,13.6429004 18,9.5 C18,7.50485352 17.1972656,5.6327832 15.7822266,4.21777344 Z M10.5,15.2128906 C7.34220703,15.2128906 4.78710938,12.664502 4.78710938,9.5 C4.78710938,8.26950195 5.17382812,7.10055664 5.88574219,6.13375977 L13.8662402,14.1054395 C12.8993848,14.8261719 11.730498,15.2128906 10.5,15.2128906 Z M15.1054688,12.8661816 L7.13375977,4.88574219 C8.10061523,4.17382813 9.26950195,3.78710938 10.5,3.78710938 C13.6578809,3.78710938 16.2128906,6.33549805 16.2128906,9.5 C16.2128906,10.7304395 15.8261719,11.8993848 15.1054688,12.8661816 Z\"\n                id=\"Shape\"\n                fill=\"#4A4A4A\"\n                fill-rule=\"nonzero\"\n            ></path>\n        </g>\n    </svg>\n</ng-template>\n\n<ng-template #buyerApprovalIcon>\n    <svg\n        width=\"15px\"\n        height=\"15px\"\n        viewBox=\"0 0 20 20\"\n    >\n        <g\n            id=\"Awaiting-Buyer-Approval-icon\"\n            stroke=\"none\"\n            stroke-width=\"1\"\n            fill=\"none\"\n            fill-rule=\"evenodd\"\n        >\n            <g\n                id=\"time-left\"\n                transform=\"translate(3.000000, 2.000000)\"\n                fill=\"#4A4A4A\"\n                fill-rule=\"nonzero\"\n            >\n                <path\n                    d=\"M6.23157622,14.1696467 C5.70535057,14.0721422 5.2005579,13.9061054 4.72188769,13.6745242 C4.71622258,13.6714711 4.71115545,13.6679958 4.70520709,13.6652025 C4.59240848,13.6104091 4.47979871,13.551718 4.37065094,13.4903961 C4.37027327,13.4899414 4.36958087,13.4896491 4.36898288,13.4893893 C4.16872129,13.37558 3.97327504,13.2496557 3.78339947,13.1117139 C1.01467199,11.0989392 0.348958764,7.13679055 2.29945571,4.27950803 C2.72358352,3.65842885 3.23684237,3.14027823 3.80904983,2.72960334 C3.81609974,2.72453649 3.82314965,2.71950212 3.83013662,2.71440279 C5.84650619,1.28061347 8.58442178,1.183986 10.7254867,2.65733574 L10.2656372,3.34301728 C10.1377946,3.53386873 10.2164452,3.67294733 10.4402485,3.65216024 L12.4377343,3.46760989 C12.6618209,3.4468228 12.7958322,3.24677957 12.7355617,3.0234483 L12.1991703,1.02899228 C12.1391202,0.805401178 11.9853754,0.778637804 11.8574069,0.969456765 L11.3964873,1.6567623 C9.82523796,0.568265989 7.94067659,0.153206329 6.0701521,0.487943386 C5.88175576,0.521592483 5.69600314,0.562776899 5.51279981,0.610717118 C5.51138354,0.610976957 5.51025052,0.611139356 5.50911749,0.611399194 C5.50203611,0.613185585 5.4948603,0.615556612 5.48796775,0.617537881 C3.8749854,1.04500483 2.46767797,2.01585923 1.46347449,3.40105873 C1.4550083,3.41141979 1.44629033,3.4215535 1.43829623,3.432824 C1.40490356,3.47923766 1.37176268,3.52672316 1.33931419,3.57420867 C1.28625101,3.65203032 1.23394317,3.73180077 1.18390138,3.81157121 C1.17763828,3.82118524 1.17285441,3.83096167 1.16737814,3.84067314 C0.338698623,5.1658824 -0.0610062726,6.69795566 0.00754154337,8.25770173 C0.00769890751,8.26283354 0.00741565207,8.26799784 0.00754154337,8.27325957 C0.0141823097,8.42562242 0.0258902012,8.58009646 0.0417839785,8.73216699 C0.0426337448,8.7419759 0.0447424242,8.75126512 0.0463475384,8.76107403 C0.0627763537,8.91398904 0.0833910551,9.06726132 0.109230246,9.22050113 C0.371839509,10.7840149 1.08652445,12.1909434 2.15745032,13.2856758 C2.15993667,13.2882417 2.16251744,13.291035 2.16503527,13.2936983 C2.16591651,13.2947052 2.16689216,13.2952249 2.16774193,13.2961668 C2.45546651,13.5890373 2.7684323,13.8599191 3.10541185,14.1048494 C3.98728044,14.7461311 4.9692641,15.1700252 6.02385557,15.3653264 C6.3438398,15.424667 6.64950389,15.2048436 6.70691032,14.8747836 C6.76428528,14.5444963 6.55146603,14.2287924 6.23157622,14.1696467 Z\"\n                    id=\"Path\"\n                ></path>\n                <path\n                    d=\"M9.22237925,14.6588011 C9.29073073,14.9263505 9.1292489,15.198652 8.86169949,15.2670034 C8.51639563,15.355219 8.1641424,15.4188128 7.8069689,15.4570516 C7.53239558,15.4864472 7.28598003,15.2876915 7.25658436,15.0131182 C7.22718869,14.7385449 7.42594445,14.4921293 7.70051776,14.4627336 C8.01004537,14.4295958 8.31515603,14.3745129 8.61417689,14.2981213 C8.8817263,14.2297698 9.15402777,14.3912517 9.22237925,14.6588011 Z M12.5552524,12.2886551 C12.7611952,12.4726175 12.7790139,12.7886982 12.5950515,12.994641 C12.3569806,13.2611574 12.1001968,13.5104915 11.8267859,13.7406023 C11.6155121,13.9184167 11.3000937,13.8912925 11.1222793,13.6800187 C10.9444648,13.4687448 10.9715891,13.1533264 11.1828629,12.975512 C11.4200152,12.7759175 11.6427598,12.5596351 11.8492666,12.3284542 C12.033229,12.1225114 12.3493096,12.1046927 12.5552524,12.2886551 Z M13.9945063,8.57622811 C14.2674538,8.61811209 14.4547678,8.87333344 14.4128838,9.14628095 C14.3584322,9.50112883 14.2787427,9.85020038 14.1746496,10.1914009 C14.0940709,10.4555252 13.8146338,10.6043183 13.5505094,10.5237395 C13.2863851,10.4431608 13.137592,10.1637237 13.2181708,9.89959931 C13.3082912,9.6041989 13.3772907,9.30195366 13.4244534,8.99460564 C13.4663374,8.72165813 13.7215588,8.53434413 13.9945063,8.57622811 Z M13.8741743,4.99628976 C14.0173723,5.32357494 14.1370467,5.66111195 14.2320931,6.00667963 C14.305325,6.27293459 14.1488489,6.54814305 13.8825939,6.62137492 C13.6163389,6.6946068 13.3411305,6.53813067 13.2678986,6.27187571 C13.1856167,5.97271686 13.0820133,5.68050756 12.958028,5.39713383 C12.847338,5.14414702 12.9626923,4.84932868 13.2156791,4.73863865 C13.4686659,4.62794862 13.7634843,4.74330295 13.8741743,4.99628976 Z\"\n                    id=\"Combined-Shape\"\n                ></path>\n                <path\n                    d=\"M6.49684035,4 C6.22234237,4 6,4.21290493 6,4.47514225 L6,9.20888548 L10.5252942,11.4469308 C10.5981282,11.4830116 10.6761155,11.5 10.7528554,11.5 C10.9325937,11.5 11.106194,11.4063595 11.1944548,11.2429754 C11.3203307,11.0097848 11.2250786,10.7233052 10.9813357,10.6028789 L6.9931227,8.63027395 L6.9931227,4.47514225 C6.99308988,4.21290493 6.77101009,4 6.49684035,4 Z\"\n                    id=\"Path\"\n                ></path>\n            </g>\n        </g>\n    </svg>\n</ng-template>\n\n<!-- MODALS -->\n\n<!-- <ng-template #easyFilterSkeletonLoader>\n  <ngx-skeleton-loader\n      [count]=\"consumingProjectOrderService.orderListingCurrentTabName == constants.OtherRevenue ? 4 : consumingProjectOrderService.orderListingCurrentTabName == constants.TvRevenue ? 8 : 2\"\n      [theme]=\"{\n          width: '90px',\n          height: '20px',\n          display: 'inline-block',\n          'margin-right': '10px',\n          'margin-left': '0px',\n          'margin-top': '27px',\n          'margin-bottom': '5px'\n      }\"\n  >\n  </ngx-skeleton-loader>\n</ng-template> -->\n\n<ng-template #dropdownSkeletonLoader>\n    <ngx-skeleton-loader\n        count=\"1\"\n        [theme]=\"{\n            width: '108px',\n            height: '30px',\n            display: 'inline-block',\n            'margin-right': '0px',\n            'margin-top': '12px',\n            'margin-bottom': '5px'\n        }\"\n    >\n    </ngx-skeleton-loader>\n</ng-template>\n","export class TableHeaderNames {\n    static readonly REVISION_NUMBER_HEADER = \"REVISION #\";\n    static readonly REVISION_TYPE_HEADER = \"REVISION TYPE\";\n    static readonly GENERATED_ON_HEADER = \"GENERATED ON\";\n    static readonly VALUE_BOOKED_HEADER = \"$ BOOKED\";\n    static readonly SPOTS_HEADER = \"SPOTS\";\n    static readonly GRP_HEADER = \"GRP\";\n    static readonly RATING_HEADER = \"RATING\";\n    static readonly CPP_HEADER = \"CPP\";\n    static readonly IMPS_HEADER = \"IMP('000)\";\n    static readonly CPM_HEADER = \"CPM\";\n    static readonly MG_VALUE_HEADER = \"$ MGs\";\n    static readonly ADU_VALUE_HEADER = \"$ ADUs\";\n    static readonly CREDITED_VALUE_HEADER = \"$ CREDITED\";\n    static readonly USER_UNRESOLVED_VALUE_HEADER = \"$ USER UNRESOLVED\";\n    static readonly BUYER_ADDED_VALUE_HEADER = \"$ BUYER ADDED\";\n    static readonly BUYER_DELETED_VALUE_HEADER = \"$ BUYER DELETED\";\n    static readonly BUYER_CHANGES_HEADER = \"$ BUYER CHANGE\";\n    static readonly SELLER_USER_VALUE_CHANGES_HEADER = \"$ SELLER USER CHANGE\";\n}\n","import { Injectable } from \"@angular/core\";\nimport { IGtTableHeader } from \"@annalib/anna-core\";\n\nimport { TableHeaderNames } from \"../constants/order-revisions.constants\";\n\n@Injectable({\n    providedIn: \"root\",\n})\nexport class OrderRevisionsService {\n    filterAppliedRouteChange: boolean;\n    filterAppliedRouteChangeInRevisionInfo: boolean;\n\n    getTableHeaders(): IGtTableHeader[] {\n        return [\n            {\n                headerInfo: [\n                    {\n                        name: TableHeaderNames.REVISION_NUMBER_HEADER,\n                        objectKey: \"RevisionNumber\",\n                        actionKey: \"readActionKey\",\n                        tooltipKey: \"tooltipData\",\n                        typeOfHeaderData: \"STRING\",\n                        typeOfBodyData: \"STRING___ICON_OR_TEXT_ACTION\",\n                        showTooltipIcon: true,\n                        isSortRequired: [true],\n                        isFilterRequired: [true],\n                        filter: \"CHECKBOX\",\n                        filterSortObjectKeys: [\"RevisionNumber\"],\n                    },\n                ],\n                visible: true,\n                width: \"11ch\",\n            },\n            {\n                headerInfo: [\n                    {\n                        name: TableHeaderNames.REVISION_TYPE_HEADER,\n                        objectKey: \"RevisionType\",\n                        typeOfHeaderData: \"STRING\",\n                        typeOfBodyData: \"STRING\",\n                        showTooltipIcon: true,\n                        isSortRequired: [true],\n                        isFilterRequired: [true],\n                        filter: \"CHECKBOX\",\n                        filterSortObjectKeys: [\"RevisionType\"],\n                    },\n                ],\n                visible: true,\n                width: \"13ch\",\n            },\n            {\n                headerInfo: [\n                    {\n                        name: TableHeaderNames.GENERATED_ON_HEADER,\n                        objectKey: \"GeneratedOn\",\n                        typeOfHeaderData: \"STRING\",\n                        typeOfBodyData: \"STRING\",\n                        showTooltipIcon: true,\n                        isSortRequired: [true],\n                        isFilterRequired: [true],\n                        filter: \"DATE\",\n                        filterSortObjectKeys: [\"GeneratedOn\"],\n                    },\n                ],\n                visible: true,\n                width: \"13ch\",\n            },\n            {\n                headerInfo: [\n                    {\n                        name: TableHeaderNames.VALUE_BOOKED_HEADER,\n                        objectKey: \"BookedValueForDisplay\",\n                        typeOfHeaderData: \"STRING\",\n                        typeOfBodyData: \"STRING\",\n                        showTooltipIcon: true,\n                        isSortRequired: [true, true],\n                        isFilterRequired: [true, true],\n                        filter: \"SLIDER\",\n                        filterSortObjectKeys: [\"BookedValue\", \"BookedSpots\"],\n                    },\n                    {\n                        name: TableHeaderNames.SPOTS_HEADER,\n                        objectKey: \"DisplayBookedSpots\",\n                        typeOfHeaderData: \"STRING\",\n                        typeOfBodyData: \"STRING\",\n                        showTooltipIcon: false,\n                    },\n                ],\n                visible: true,\n                width: \"11ch\",\n            },\n            {\n                headerInfo: [\n                    {\n                        name: TableHeaderNames.GRP_HEADER,\n                        objectKey: \"DisplayBookedGRP\",\n                        typeOfHeaderData: \"STRING\",\n                        typeOfBodyData: \"STRING\",\n                        showTooltipIcon: true,\n                        isSortRequired: [true, true],\n                        isFilterRequired: [true, true],\n                        filter: \"SLIDER\",\n                        filterSortObjectKeys: [\"BookedGRP\", \"BookedCPP\"],\n                    },\n                    {\n                        name: TableHeaderNames.CPP_HEADER,\n                        objectKey: \"DisplayBookedCPP\",\n                        typeOfHeaderData: \"STRING\",\n                        typeOfBodyData: \"STRING\",\n                        showTooltipIcon: false,\n                    },\n                ],\n                visible: true,\n                width: \"11ch\",\n            },\n            {\n                headerInfo: [\n                    {\n                        name: TableHeaderNames.IMPS_HEADER,\n                        objectKey: \"DisplayBookedIMPS\",\n                        typeOfHeaderData: \"STRING\",\n                        typeOfBodyData: \"STRING\",\n                        showTooltipIcon: true,\n                        isSortRequired: [true, true],\n                        isFilterRequired: [true, true],\n                        filter: \"SLIDER\",\n                        filterSortObjectKeys: [\"IMPS\", \"BookedCPM\"],\n                    },\n                    {\n                        name: TableHeaderNames.CPM_HEADER,\n                        objectKey: \"DisplayBookedCPM\",\n                        typeOfHeaderData: \"STRING\",\n                        typeOfBodyData: \"STRING\",\n                        showTooltipIcon: false,\n                    },\n                ],\n                visible: true,\n                width: \"11ch\",\n            },\n            {\n                headerInfo: [\n                    {\n                        name: TableHeaderNames.MG_VALUE_HEADER,\n                        objectKey: \"MGsValueForDisplay\",\n                        typeOfHeaderData: \"STRING\",\n                        typeOfBodyData: \"STRING\",\n                        showTooltipIcon: true,\n                        isSortRequired: [true, true],\n                        isFilterRequired: [true, true],\n                        filter: \"SLIDER\",\n                        filterSortObjectKeys: [\"MGsValue\", \"ADUsValue\"],\n                    },\n                    {\n                        name: TableHeaderNames.ADU_VALUE_HEADER,\n                        objectKey: \"ADUsValueForDisplay\",\n                        typeOfHeaderData: \"STRING\",\n                        typeOfBodyData: \"STRING\",\n                        showTooltipIcon: false,\n                    },\n                ],\n                visible: true,\n                width: \"11ch\",\n            },\n            {\n                headerInfo: [\n                    {\n                        name: TableHeaderNames.CREDITED_VALUE_HEADER,\n                        objectKey: \"CreditedValueForDisplay\",\n                        typeOfHeaderData: \"STRING\",\n                        typeOfBodyData: \"STRING\",\n                        showTooltipIcon: true,\n                        isSortRequired: [true, true],\n                        isFilterRequired: [true, true],\n                        filter: \"SLIDER\",\n                        filterSortObjectKeys: [\"CreditedValue\", \"UserUnresolvedValue\"],\n                    },\n                    {\n                        name: TableHeaderNames.USER_UNRESOLVED_VALUE_HEADER,\n                        objectKey: \"UserUnresolvedValueForDisplay\",\n                        typeOfHeaderData: \"STRING\",\n                        typeOfBodyData: \"STRING\",\n                        showTooltipIcon: false,\n                    },\n                ],\n                visible: true,\n                width: \"17ch\",\n            },\n            {\n                headerInfo: [\n                    {\n                        name: TableHeaderNames.BUYER_ADDED_VALUE_HEADER,\n                        objectKey: \"BuyerAddedValueForDisplay\",\n                        typeOfHeaderData: \"STRING\",\n                        typeOfBodyData: \"STRING\",\n                        showTooltipIcon: true,\n                        isSortRequired: [true, true],\n                        isFilterRequired: [true, true],\n                        filter: \"SLIDER\",\n                        filterSortObjectKeys: [\"BuyerAddedValue\", \"BuyerDeletedValue\"],\n                    },\n                    {\n                        name: TableHeaderNames.BUYER_DELETED_VALUE_HEADER,\n                        objectKey: \"BuyerDeletedValueForDisplay\",\n                        typeOfHeaderData: \"STRING\",\n                        typeOfBodyData: \"STRING\",\n                        showTooltipIcon: false,\n                    },\n                ],\n                visible: true,\n                width: \"15ch\",\n            },\n            {\n                headerInfo: [\n                    {\n                        name: \"BUYER $ CHANGES\",\n                        objectKey: \"BuyerChangesValueForDisplay\",\n                        typeOfHeaderData: \"STRING\",\n                        typeOfBodyData: \"STRING\",\n                        showTooltipIcon: true,\n                        isSortRequired: [true, true],\n                        isFilterRequired: [true, true],\n                        filter: \"SLIDER\",\n                        filterSortObjectKeys: [\"BuyerChangesValue\", \"UserChangesValue\"],\n                    },\n                    {\n                        name: \"SELLER $ CHANGES\",\n                        objectKey: \"UserChangesValueForDisplay\",\n                        typeOfHeaderData: \"STRING\",\n                        typeOfBodyData: \"STRING\",\n                        showTooltipIcon: false,\n                    },\n                ],\n                visible: true,\n                width: \"17ch\",\n            },\n            {\n                headerInfo: [\n                    {\n                        name: \"BUYER GRP CHANGES\",\n                        objectKey: \"buyerGrpChangesValueDisplay\",\n                        typeOfHeaderData: \"STRING\",\n                        typeOfBodyData: \"STRING\",\n                        showTooltipIcon: true,\n                        isSortRequired: [true, true],\n                        isFilterRequired: [true, true],\n                        filter: \"SLIDER\",\n                        filterSortObjectKeys: [\"buyerGrpChangesValue\", \"buyerImpChangesValue\"],\n                    },\n                    {\n                        name: \"BUYER IMPS CHANGES\",\n                        objectKey: \"buyerImpChangesValueDisplay\",\n                        typeOfHeaderData: \"STRING\",\n                        typeOfBodyData: \"STRING\",\n                        showTooltipIcon: false,\n                    },\n                ],\n                visible: true,\n                width: \"138px\",\n            },\n            {\n                headerInfo: [\n                    {\n                        name: \"BUYER ADDED\",\n                        objectKey: \"buyerAddedValueDisplay\",\n                        typeOfHeaderData: \"STRING\",\n                        typeOfBodyData: \"STRING\",\n                        showTooltipIcon: true,\n                        isSortRequired: [true, true],\n                        isFilterRequired: [true, true],\n                        filter: \"SLIDER\",\n                        filterSortObjectKeys: [\"buyerAddedValue\", \"buyerDeletedValue\"],\n                    },\n                    {\n                        name: \"BUYER DELETED\",\n                        objectKey: \"buyerDeletedValueDisplay\",\n                        typeOfHeaderData: \"STRING\",\n                        typeOfBodyData: \"STRING\",\n                        showTooltipIcon: false,\n                    },\n                ],\n                visible: true,\n                width: \"143px\",\n            },\n        ];\n    }\n}\n","import { AsyncPipe, NgClass, NgIf, NgStyle } from \"@angular/common\";\nimport { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges, ViewChild } from \"@angular/core\";\nimport { Router } from \"@angular/router\";\nimport {\n    AnnaCoreModule,\n    AnnaFilterService,\n    AnnaGlobalConfigService,\n    AnnaNonEditableGenericTableComponent,\n    AnnaSortService,\n    IGtGeneralConfig,\n    IGtTableHeader,\n} from \"@annalib/anna-core\";\nimport { PrimaryOrderPanelService } from \"@annalib/anna-feature-shared-lib\";\nimport dayjs from \"dayjs\";\nimport { cloneDeep } from \"lodash-es\";\n\n// eslint-disable-next-line import/no-cycle\nimport { PrimaryDetails } from \"../../public-api\";\nimport { OrderRevisions } from \"./models/orderRevisionsModel\";\nimport { OrderRevisionsService } from \"./services/orderRevisions.service\";\n\n@Component({\n    selector: \"anna-feature-order-revisions\",\n    templateUrl: \"./order-revisions.component.html\",\n    styleUrls: [\"./order-revisions.component.scss\"],\n    imports: [NgIf, AnnaCoreModule, NgClass, NgStyle, AsyncPipe],\n})\nexport class OrderRevisionsComponent implements OnInit, OnChanges {\n    @Input() primaryOrderData: PrimaryDetails;\n    @Input() orderRevisionsData: OrderRevisions[];\n    @Input() revenueCategory: string;\n    @Input() hasOngoingRevision: boolean;\n    @Input() ongoingRevisionNumber: number;\n    @Input() filtersFromRoute: any;\n    @Input() loading: boolean;\n    @Input() noData: boolean;\n    @Input() userName: string;\n    @Input() parentOrderListingTabName: \"TV Revenue\" | \"Other Revenue\";\n    @Input() userType: \"BUYER\" | \"SELLER\";\n    @Output() filtersApplied = new EventEmitter();\n\n    orderRevisionsDataForDisplay: OrderRevisions[];\n    parentEquivalisedData: any;\n    gtDimension = { rowHeight: 40, headerHeight: 40, dataOnTopHeight: 217, marginFromBottom: 20 };\n    gtGeneralConfig: IGtGeneralConfig;\n    tableHeaders: IGtTableHeader[];\n    disableRestAllButton: boolean = true;\n    genericTableClass: string = \"order-revision-listing-table\";\n    tableHeight: string;\n    @ViewChild(AnnaNonEditableGenericTableComponent) nonEditableGTComponent: AnnaNonEditableGenericTableComponent;\n\n    constructor(\n        public router: Router,\n        public orderRevisionListingService: OrderRevisionsService,\n        private annaGlobalConfig: AnnaGlobalConfigService,\n        private annaSortService: AnnaSortService,\n        private annaFilterService: AnnaFilterService,\n        protected primaryOrderPanelService: PrimaryOrderPanelService,\n    ) {}\n\n    ngOnChanges(changes: SimpleChanges) {\n        if (changes.filtersFromRoute) {\n            if (this.filtersFromRoute) {\n                this.initFiltersFromRoute();\n            } else {\n                this.initFilters();\n            }\n        }\n\n        if (changes.orderRevisionsData && changes.orderRevisionsData.currentValue) {\n            this.orderRevisionsDataForDisplay = cloneDeep(this.orderRevisionsData);\n            this.annaSortService.noSortingAppliedData = cloneDeep(this.orderRevisionsDataForDisplay);\n            if (this.filtersFromRoute) {\n                this.annaSortService.columnSortState = this.filtersFromRoute.sortState\n                    ? new Map(JSON.parse(this.filtersFromRoute.sortState))\n                    : new Map();\n                this.orderRevisionsDataForDisplay = this.annaFilterService.filterData(this.orderRevisionsData, \"\");\n                this.annaSortService.noSortingAppliedData = cloneDeep(this.orderRevisionsDataForDisplay);\n                this.annaFilterService.updateStateOfAllTheKeys(this.annaSortService.columnSortState);\n                if (this.filtersFromRoute?.sortState) {\n                    this.callSort();\n                }\n            }\n            this.disableEnableClearAll();\n        }\n        this.setTableHeight();\n    }\n\n    callSort() {\n        this.annaSortService.columnSortState.forEach((value, key) => {\n            if (value === \"ASC\") {\n                this.orderRevisionsDataForDisplay = this.annaSortService.sortDataForComponentOtherThanLurAndCsrPage(\n                    true,\n                    this.orderRevisionsDataForDisplay,\n                    key,\n                );\n            } else if (value === \"DESC\") {\n                this.orderRevisionsDataForDisplay = this.annaSortService.sortDataForComponentOtherThanLurAndCsrPage(\n                    false,\n                    this.orderRevisionsDataForDisplay,\n                    key,\n                );\n            }\n        });\n    }\n\n    ngOnInit(): void {\n        this.gtGeneralConfig = { ...this.annaGlobalConfig.defaultGtGeneralConfig };\n        this.setTableHeight();\n        this.tableHeaders = this.orderRevisionListingService.getTableHeaders();\n    }\n\n    setTableHeight() {\n        // this.tableHeight = \"calc(100vh - 281px)\";\n        // if (this.loading) {\n        //     this.tableHeight = \"calc(100vh - 289px)\";\n        // } else if (this.hasOngoingRevision) {\n        //     this.tableHeight = \"calc(100vh - 350px)\";\n        // }\n    }\n\n    revisionRowClicked(row: OrderRevisions) {\n        if (row && row.AllowClick && row.RevisionNumber) {\n            const url: string = this.router\n                .createUrlTree([`/orders/${this.primaryOrderData.orderId}/revision-report`], {\n                    queryParams: this.createQueryparamsForRevisionInfoPage(\n                        row.RevisionNumber,\n                        row.RoId,\n                        this.primaryOrderData.stationId,\n                        row.RevisionType,\n                    ),\n                })\n                .toString();\n            // this.router.createUrlTree([`/${this.orderInfo.orderId}/${this.orderInfo.stationId}/revision-report`], { queryParams: this.createQueryparamsForRevisionInfoPage(row.RevisionNumber, this.orderInfo.stationId) }).toString()\n            const link = document.createElement(\"a\");\n            link.target = \"_blank\";\n            link.href = `#${url}`;\n            link.setAttribute(\"visibility\", \"hidden\");\n            link.click();\n        }\n    }\n\n    createQueryparamsForRevisionInfoPage(\n        revisionNumber: number,\n        roId: number | null,\n        stationId: number,\n        revisionType: \"ANNA\" | \"Seller User\" | \"Buyer\",\n    ): {\n        loggedInUserName: string;\n        stationId: number;\n        orderData: string;\n        revenueCategory: string;\n        revisionType: \"ANNA\" | \"Seller User\" | \"Buyer\";\n        parentTab: \"TV Revenue\" | \"Other Revenue\";\n    } {\n        return {\n            loggedInUserName: this.userName,\n            stationId: +stationId,\n            orderData: JSON.stringify({\n                campaignId: this.primaryOrderData.campaignId,\n                orderId: this.primaryOrderData.orderId,\n                revisionNo: revisionNumber,\n                roId,\n                revisionType,\n            }),\n            revisionType,\n            revenueCategory: this.revenueCategory,\n            parentTab: this.parentOrderListingTabName,\n        };\n    }\n\n    filterAppliedToTable(data: OrderRevisions[]) {\n        this.orderRevisionsDataForDisplay = cloneDeep(data);\n        this.disableEnableClearAll();\n        this.updateNavigationHistory();\n    }\n\n    sortingAppliedToTable(data: OrderRevisions[]) {\n        this.orderRevisionsDataForDisplay = cloneDeep(data);\n        this.disableEnableClearAll();\n        this.updateNavigationHistory();\n    }\n\n    disableEnableClearAll() {\n        let isSortApplied = false;\n        if (this.annaSortService.columnSortState) {\n            this.annaSortService.columnSortState.forEach((value, key) => {\n                if (value === \"ASC\" || value === \"DESC\") {\n                    isSortApplied = true;\n                }\n            });\n        }\n        this.disableRestAllButton = !!(this.annaFilterService.appliedFiltersArray.length === 0 && !isSortApplied);\n    }\n\n    updateNavigationHistory() {\n        this.filtersApplied.emit();\n    }\n\n    resetAllFilters() {\n        this.nonEditableGTComponent?.setScrollToInitialPosition();\n        this.initFilters();\n        this.annaSortService.noSortingAppliedData = cloneDeep(this.orderRevisionsData);\n        this.orderRevisionsDataForDisplay = cloneDeep(this.orderRevisionsData);\n        this.disableRestAllButton = true;\n        this.annaFilterService.updateStateOfAllTheKeys(this.annaSortService.columnSortState);\n        this.updateNavigationHistory();\n    }\n\n    initFiltersFromRoute() {\n        this.annaFilterService.appliedFiltersArray = this.filtersFromRoute.appliedFilters\n            ? this.filtersFromRoute.appliedFilters\n            : [];\n        this.annaFilterService.tooltipSelectedMap = this.filtersFromRoute.selectedFilterData\n            ? new Map(JSON.parse(this.filtersFromRoute.selectedFilterData))\n            : new Map();\n        if (this.annaFilterService.tooltipSelectedMap.has(\"GeneratedOn\")) {\n            const selectedDateObj: any = {};\n            const startDate = this.annaFilterService.tooltipSelectedMap.get(\"GeneratedOn\");\n            selectedDateObj.fromDate = dayjs(startDate.fromDate);\n            selectedDateObj.toDate = dayjs(startDate.toDate);\n            this.annaFilterService.tooltipSelectedMap.set(\"GeneratedOn\", selectedDateObj);\n        }\n        this.annaFilterService.initialValueMap = new Map();\n    }\n\n    initFilters() {\n        this.annaFilterService.tooltipSelectedMap = new Map();\n        this.annaFilterService.initialValueMap = new Map();\n        this.annaFilterService.selectedRadio = null;\n        this.annaFilterService.appliedFiltersArray = [];\n        this.annaSortService.columnSortState = new Map();\n    }\n}\n","<div\n    *ngIf=\"noData\"\n    class=\"no-rev-info\"\n>\n    <i class=\"mi mdi-info\"></i>\n    This order has not undergone any revisions. You will see the revision details here once this order undergoes a\n    revision.\n</div>\n\n<div class=\"reset-all\">\n    <button\n        class=\"clear-all-btn\"\n        [disabled]=\"disableRestAllButton\"\n        (click)=\"resetAllFilters()\"\n    >\n        Reset all filters\n    </button>\n</div>\n<anna-core-non-editable-generic-table-lib\n    #revisionListingGenericTable\n    class=\"order-revsiions-table\"\n    *ngIf=\"loading || !noData\"\n    [showSkeletonLoading]=\"loading\"\n    [tableClass]=\"genericTableClass\"\n    [ngClass]=\"{\n        'order-revisions-no-data-table':\n            !loading && orderRevisionsDataForDisplay && orderRevisionsDataForDisplay.length === 0,\n        'loading-state': loading\n    }\"\n    [gtGeneralConfig]=\"gtGeneralConfig\"\n    [gtDimension]=\"gtDimension\"\n    [tableBorderBottomClassRequired]=\"false\"\n    [tableHeaders]=\"tableHeaders\"\n    [tableData]=\"orderRevisionsDataForDisplay\"\n    [clonedTableData]=\"orderRevisionsData\"\n    [clickableRow]=\"true\"\n    [fixNumberOfRowsForPopup]=\"primaryOrderPanelService.isPrimaryOrderPanelOpen$ | async\"\n    (filterAppliedToTable)=\"filterAppliedToTable($event)\"\n    (sortingAppliedToTable)=\"sortingAppliedToTable($event)\"\n    (rowClicked)=\"revisionRowClicked($event)\"\n>\n</anna-core-non-editable-generic-table-lib>\n","import { InjectionToken } from \"@angular/core\";\nimport { Observable } from \"rxjs\";\n\nimport { SaveHiatusDatesForEntryPayload } from \"../model/hiatus-window-popup.model\";\n\nexport const HIATUS_WINDOW_SERVICE_TOKEN: InjectionToken<IHiatusWindowBackendService> =\n    new InjectionToken<IHiatusWindowBackendService>(\"IHiatusWindowBackendService token\");\n\nexport interface IHiatusWindowBackendService {\n    isEOSApplication: boolean;\n    loggedInUserId: number | string;\n    sendHiatusDatesForEntry(payload: SaveHiatusDatesForEntryPayload): Observable<any>;\n    getHiatusDatesForPopup(stationId: number, orderId: string): Observable<any>;\n}\n","import { animate, state, style, transition, trigger } from \"@angular/animations\";\nimport { NgClass, NgFor, NgIf, NgTemplateOutlet } from \"@angular/common\";\nimport { HttpErrorResponse, HttpResponse } from \"@angular/common/http\";\nimport {\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    EventEmitter,\n    Inject,\n    Input,\n    OnChanges,\n    OnInit,\n    Output,\n    SimpleChanges,\n    TemplateRef,\n    ViewChild,\n} from \"@angular/core\";\nimport { MatExpansionModule } from \"@angular/material/expansion\";\nimport { AnnaCoreModule, AnnaDateTimeFormatService, ANNAIconNames, ErrorCodes, NgbDateType } from \"@annalib/anna-core\";\nimport {\n    AnnaDesignComponentsLibModule,\n    GenericMessageBoxTheme,\n    MessageBoxData,\n} from \"@annalib/anna-design-components-lib\";\nimport { PrimaryOrderPanelService } from \"@annalib/anna-feature-shared-lib\";\nimport { NgbModal, NgbModalOptions, NgbModalRef, NgbTooltip } from \"@ng-bootstrap/ng-bootstrap\";\nimport dayjs from \"dayjs\";\nimport { ToastrService } from \"ngx-toastr\";\nimport { NgxUiLoaderService } from \"ngx-ui-loader\";\n\nimport { HiatusWindowPopupComponent } from \"../hiatus-window-popup/hiatus-window-popup.component\";\nimport { SaveHiatusDatesForEntryPayload } from \"../hiatus-window-popup/model/hiatus-window-popup.model\";\nimport {\n    HIATUS_WINDOW_SERVICE_TOKEN,\n    IHiatusWindowBackendService,\n} from \"../hiatus-window-popup/service/hiatus-window-popup-token.service\";\nimport { Constants } from \"../notifications/Constants\";\nimport {\n    CollapseKeyValueInfo,\n    Group,\n    HiatusDetailsForPopup,\n    OrderFlightStatusEnum,\n    PrimaryDetails,\n    StartEndDate,\n} from \"./models/primary-order-panel.model\";\n\n@Component({\n    selector: \"anna-feature-primary-order-panel\",\n    templateUrl: \"./primary-order-panel.component.html\",\n    styleUrls: [\"./primary-order-panel.component.scss\"],\n    animations: [\n        trigger(\"openClose\", [\n            state(\"true\", style({ transform: \"rotate(180deg)\" })),\n            state(\"false\", style({ transform: \"rotate(0deg)\" })),\n            transition(\"false <=> true\", [animate(200)]),\n        ]),\n    ],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [\n        MatExpansionModule,\n        NgClass,\n        NgIf,\n        NgFor,\n        NgbTooltip,\n        AnnaDesignComponentsLibModule,\n        NgTemplateOutlet,\n        AnnaCoreModule,\n        HiatusWindowPopupComponent,\n    ],\n})\nexport class PrimaryOrderPanelComponent implements OnInit, OnChanges {\n    @Input() isOrderStarted: boolean;\n    @Input() showSkeletonLoading: boolean;\n    @Input() headings: { name: string; class: string }[];\n    @Input() orderTabChanged: boolean;\n    @Input() disableHiatusPopupLink: boolean = false;\n    @Input() aclWritePermission: boolean = true;\n    @Input() data: PrimaryDetails;\n    @Input() orderInformation: Group[];\n    @Input() clientInformation: Group[];\n    @Input() revenueInformation: Group[];\n    @Input() collapsedOrderInfo: CollapseKeyValueInfo[];\n    @Input() grpOrImpsKey: \"grp\" | \"imps\";\n    @Input() parentTab: \"Other Revenue\" | \"TV Revenue\" | \"Order\" = \"TV Revenue\";\n\n    @Output() reloadOrderSummaryApi = new EventEmitter<any>();\n    @Output() panelOpenedOrClosed = new EventEmitter<any>();\n\n    @ViewChild(\"hiatusWindowModal\") private hiatusWindowPopup: TemplateRef<any>;\n    hiatusWindowPopupReference: NgbModalRef;\n    hiatusPopupOptions: NgbModalOptions;\n    length: number;\n    accordianDisabled: boolean;\n    isOpened: boolean = false;\n    showTooltipForCollapsedValue: boolean;\n\n    ANNAIconNames = ANNAIconNames;\n\n    currencyUnit = \"USD\";\n    hiatusWindowPopupTopInfoMessage: MessageBoxData;\n    hiatusWindowPopupHeaderMessage: string;\n    calenderStartDateForHiatusPopup: NgbDateType;\n    calenderEndDateForHiatusPopup: NgbDateType;\n    hiatusWindowDetailsForPopup: HiatusDetailsForPopup;\n    constructor(\n        private primaryOrderPanelService: PrimaryOrderPanelService,\n        private cdr: ChangeDetectorRef,\n        private annaDateTimeFormatService: AnnaDateTimeFormatService,\n        private modalService: NgbModal,\n        private ngxService: NgxUiLoaderService,\n        private toastr: ToastrService,\n        @Inject(HIATUS_WINDOW_SERVICE_TOKEN) public consumingProjectHiatusWindowService: IHiatusWindowBackendService,\n    ) {\n        this.hiatusPopupModalConfig();\n        this.setDataForHiatusModal();\n    }\n    ngOnChanges(changes: SimpleChanges) {\n        if (changes.data && changes.data.currentValue) {\n            if (this.data?.orderInfo) {\n                this.setCalenderMinMaxDatesForPopup();\n                this.hiatusWindowPopupHeaderMessage = `Hiatus Dates for Order# ${this.data.orderInfo.stationOrderId}`;\n            }\n        }\n    }\n    ngOnInit() {\n        this.primaryOrderPanelService.parentContainerScrolled.subscribe(() => {\n            this.showTooltipForCollapsedValue = false;\n            this.cdr.markForCheck();\n        });\n    }\n    onLinkClicked(event: any) {\n        // if(!this.isOpened){\n        //  this.openClose(true)\n        // }\n        this.consumingProjectHiatusWindowService\n            .getHiatusDatesForPopup(this.data.stationId, this.data.orderInfo.stationOrderId)\n            .subscribe(\n                (response) => {\n                    const disableEdit =\n                        this.parentTab === \"Other Revenue\" ||\n                        this.data.orderInfo.isDeletedOrder ||\n                        this.data.orderInfo.orderFlightStatus === OrderFlightStatusEnum.completed ||\n                        !this.aclWritePermission;\n                    this.hiatusWindowDetailsForPopup = new HiatusDetailsForPopup(\n                        response,\n                        disableEdit,\n                        this.consumingProjectHiatusWindowService.isEOSApplication,\n                    );\n                    this.openModalForHiatusWindow();\n                },\n                (error: any) => {\n                    this.toastr.error(Constants.SERVER_ERROR_MSG);\n                },\n            );\n    }\n    hiatusPopupModalConfig() {\n        this.hiatusPopupOptions = {\n            windowClass: \"hiatus-window-popup\",\n            centered: true,\n        };\n    }\n    openModalForHiatusWindow() {\n        this.hiatusWindowPopupReference = this.modalService.open(this.hiatusWindowPopup, this.hiatusPopupOptions);\n    }\n    closeModalForHiatusWindow() {\n        this.hiatusWindowPopupReference.close();\n    }\n\n    openClose(param: boolean) {\n        const elements = document.getElementsByClassName(\"tooltip\");\n        while (elements.length > 0) {\n            elements[0].remove();\n        }\n        this.length = this.collapsedOrderInfo.length;\n        this.isOpened = param;\n        this.panelOpenedOrClosed.emit(this.isOpened);\n        this.primaryOrderPanelService.isPrimaryOrderPanelOpen$.next(this.isOpened);\n    }\n\n    disableAccordian(param: boolean) {\n        this.accordianDisabled = param;\n    }\n\n    mouseEnteredOnCollapsedValue(id: string, type: \"name\" | \"value\") {\n        const element = document.getElementById(`${id}-info-${type}`);\n\n        if (element?.offsetWidth < element?.scrollWidth) {\n            this.showTooltipForCollapsedValue = true;\n        } else {\n            this.showTooltipForCollapsedValue = false;\n        }\n    }\n    setDataForHiatusModal() {\n        const msg =\n            \"Please note that the hiatus dates will be entered directly on WO Traffic only after closure of any ongoing revisions.\";\n        const iconClass = \"mdi mdi-alert-octagon\";\n\n        this.hiatusWindowPopupTopInfoMessage = new MessageBoxData(\n            null,\n            msg,\n            iconClass,\n            `${GenericMessageBoxTheme.informationBlue.messageBoxClass} sm hiatus-info`,\n        );\n    }\n\n    setCalenderMinMaxDatesForPopup() {\n        this.calenderStartDateForHiatusPopup = this.annaDateTimeFormatService.convertToNgbDate(\n            dayjs(this.data?.orderInfo.flightStartDate, \"MM/DD/YY\").format(\"MM/DD/YYYY\"),\n            \"MM/DD/YYYY\",\n        );\n        this.calenderEndDateForHiatusPopup = this.annaDateTimeFormatService.convertToNgbDate(\n            dayjs(this.data?.orderInfo.flightEndDate, \"MM/DD/YY\").format(\"MM/DD/YYYY\"),\n            \"MM/DD/YYYY\",\n        );\n    }\n\n    sendHiatusDatesForEntry(hiatusDatePopupObj: { hiatusDates: StartEndDate[]; sellerComments?: string }) {\n        const buyerId = this.consumingProjectHiatusWindowService.isEOSApplication\n            ? this.consumingProjectHiatusWindowService.loggedInUserId\n            : null;\n        const sellerId = !this.consumingProjectHiatusWindowService.isEOSApplication\n            ? this.consumingProjectHiatusWindowService.loggedInUserId\n            : null;\n        const payload: SaveHiatusDatesForEntryPayload = {\n            StationId: this.data.stationId,\n            OrderId: this.data.orderInfo.stationOrderId.toString(),\n            Comment: hiatusDatePopupObj.sellerComments,\n            SellerId: sellerId,\n            CentralBuyerId: buyerId,\n            HiatusDatesToSave: hiatusDatePopupObj.hiatusDates,\n        };\n        this.ngxService.start();\n        this.consumingProjectHiatusWindowService.sendHiatusDatesForEntry(payload).subscribe(\n            (response: HttpResponse<any>) => {\n                if (response.status === ErrorCodes.SUCCESS_CODE_POST) {\n                    this.ngxService.stop();\n                    this.toastr.success(\"The hiatus dates have been successfully marked for entry\", \"\", {\n                        toastClass: \"Inventory-custom-width ngx-toastr custom-anna-success\",\n                    });\n                }\n                this.closeModalForHiatusWindow();\n                this.reloadOrderSummaryApi.emit(true);\n            },\n            (err: HttpErrorResponse) => {\n                this.ngxService.stop();\n                if (err.status === ErrorCodes.under_review) {\n                    this.toastr.error(`${err.error}`);\n                } else {\n                    this.toastr.error(Constants.SERVER_ERROR_MSG);\n                }\n\n                this.closeModalForHiatusWindow();\n                this.reloadOrderSummaryApi.emit(true);\n            },\n        );\n    }\n}\n","<mat-accordion>\n    <mat-expansion-panel\n        [expanded]=\"isOpened\"\n        (afterCollapse)=\"openClose(false)\"\n        (afterExpand)=\"openClose(true)\"\n        [disabled]=\"accordianDisabled\"\n        [hideToggle]=\"true\"\n    >\n        <mat-expansion-panel-header\n            [ngClass]=\"{ 'disabled-accordion': accordianDisabled }\"\n            collapsedHeight=\"*\"\n            expandedHeight=\"*\"\n        >\n            <mat-panel-title>\n                <div class=\"w-100\">\n                    <div\n                        class=\"row\"\n                        *ngIf=\"isOpened\"\n                    >\n                        <div\n                            *ngFor=\"let heading of headings\"\n                            class=\"col-4\"\n                            [ngClass]=\"heading.class\"\n                        >\n                            <span> {{ heading.name }} </span>\n                        </div>\n                    </div>\n                    <div\n                        class=\"row collapsed-info-row\"\n                        *ngIf=\"!isOpened\"\n                    >\n                        <ng-container *ngIf=\"!showSkeletonLoading\">\n                            <ng-container *ngFor=\"let item of collapsedOrderInfo; let position = index\">\n                                <div class=\"item-container\">\n                                    <ng-content\n                                        *ngIf=\"item.className === 'station-ordernumber-class'\"\n                                        select=\".collapsed-pfp-and-aa-icon\"\n                                    ></ng-content>\n\n                                    <ng-content\n                                        *ngIf=\"item.className === 'station-ordernumber-class'\"\n                                        select=\".deleted-order-icon\"\n                                    ></ng-content>\n\n                                    <div\n                                        class=\"text-truncate collapsed-heading\"\n                                        ngClass=\"{{ item.className }}\"\n                                    >\n                                        <span\n                                            class=\"font-12 normal-font-weight info-name\"\n                                            id=\"{{ item.name }}-info-name\"\n                                            ngbTooltip=\"{{ showTooltipForCollapsedValue ? item.name : null }}\"\n                                            placement=\"bottom\"\n                                            container=\"body\"\n                                            (mouseenter)=\"mouseEnteredOnCollapsedValue(item.name, 'name')\"\n                                        >\n                                            {{ item.name }} </span\n                                        ><br />\n                                        <span\n                                            *ngIf=\"!item.showLink && !item.firstValue\"\n                                            class=\"info-value\"\n                                            id=\"{{ item.name }}-info-value\"\n                                            ngbTooltip=\"{{ showTooltipForCollapsedValue ? item.value : null }}\"\n                                            placement=\"bottom\"\n                                            container=\"body\"\n                                            (mouseenter)=\"mouseEnteredOnCollapsedValue(item.name, 'value')\"\n                                        >\n                                            {{ item.value ? item.value : \"-\" }}\n                                        </span>\n                                        <span\n                                            *ngIf=\"item.firstValue && item.secondValue && !item.showLink\"\n                                            class=\"info-value d-flex\"\n                                            id=\"{{ item.name }}-info-value\"\n                                            (mouseenter)=\"mouseEnteredOnCollapsedValue(item.name, 'value')\"\n                                        >\n                                            <span\n                                                annaCoreShowEllipsisTextOnHover\n                                                class=\"values\"\n                                                >{{ item.firstValue }}</span\n                                            >\n                                            <span class=\"divider\"> | </span>\n                                            <span\n                                                annaCoreShowEllipsisTextOnHover\n                                                class=\"values\"\n                                                >{{ item.secondValue }}</span\n                                            >\n                                        </span>\n                                        <span\n                                            *ngIf=\"item.showLink && !item.firstValue\"\n                                            id=\"{{ item.name }}-info-value\"\n                                            [ngClass]=\"{\n                                                'disable-hiatus-link': disableHiatusPopupLink,\n                                                'enable-hiatus-link': !disableHiatusPopupLink\n                                            }\"\n                                            class=\"link-value text-link\"\n                                            (click)=\"onLinkClicked(item.name)\"\n                                        >\n                                            {{ item.value }}\n                                        </span>\n                                    </div>\n                                </div>\n                            </ng-container>\n                        </ng-container>\n\n                        <anna-design-skt-loader\n                            *ngIf=\"showSkeletonLoading\"\n                            [count]=\"8\"\n                            [theme]=\"{\n                                height: '2.5rem',\n                                width: '8vw',\n                                display: 'inline-block',\n                                'margin-right': '1.5rem',\n                                'margin-top': '.625rem',\n                                'min-width': '110px',\n                                'max-width': '200px'\n                            }\"\n                        ></anna-design-skt-loader>\n                    </div>\n                </div>\n\n                <div\n                    [@openClose]=\"isOpened ? true : false\"\n                    class=\"open-close-container expantion-icon\"\n                >\n                    <span class=\"mdi mdi-menu-down\"></span>\n                    <!-- <span class=\"mat-expansion-indicator\">\n          </span> -->\n                </div>\n            </mat-panel-title>\n        </mat-expansion-panel-header>\n        <div>\n            <div\n                class=\"row primary-order-container\"\n                *ngIf=\"data && isOpened\"\n            >\n                <div class=\"col-4 p-0 border-end\">\n                    <div class=\"card\">\n                        <ng-container\n                            [ngTemplateOutlet]=\"tableTemplate\"\n                            [ngTemplateOutletContext]=\"{ tableData: orderInformation, section: 'order' }\"\n                        >\n                        </ng-container>\n                    </div>\n                </div>\n\n                <div class=\"col-4 p-0 border-end\">\n                    <div class=\"card\">\n                        <ng-container\n                            [ngTemplateOutlet]=\"tableTemplate\"\n                            [ngTemplateOutletContext]=\"{ tableData: clientInformation, section: 'client' }\"\n                        >\n                        </ng-container>\n                    </div>\n                </div>\n\n                <div class=\"col-4 p-0\">\n                    <div class=\"card\">\n                        <ng-container\n                            [ngTemplateOutlet]=\"tableTemplate\"\n                            [ngTemplateOutletContext]=\"{ tableData: revenueInformation, section: 'revenue' }\"\n                        >\n                        </ng-container>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </mat-expansion-panel>\n</mat-accordion>\n\n<ng-template\n    #spotsValueGrpOrImps\n    let-name=\"name\"\n>\n    <span> Spots | Value </span>\n    <span *ngIf=\"!data.orderInfo.isDrOrder\">\n        |\n        {{\n            data.orderInfo.orderType === \"UD (Liability set)\"\n                ? data.revenueInfo.udLiabilityMetric === \"IMPRESSIONS\"\n                    ? \"IMP('000)\"\n                    : \"GRP\"\n                : data.orderMeasurementType === \"Impressions\"\n                  ? \"IMP('000)\"\n                  : \"GRP\"\n        }}\n    </span>\n    <ng-container *ngIf=\"name === 'Booked'\">\n        <ng-content select=\".ud-liability-tooltip-booked\"></ng-content>\n    </ng-container>\n    <ng-container *ngIf=\"name === 'Booked to date'\">\n        <ng-content select=\".ud-liability-tooltip-booked-to-date\"></ng-content>\n    </ng-container>\n</ng-template>\n\n<ng-template\n    #revenueInfoData\n    let-value=\"value\"\n>\n    <div class =\"mb-15\"></div>\n    <span>{{ value?.spots }} | </span>\n    <span>{{ value?.value }} </span>\n    <span *ngIf=\"!data.orderInfo.isDrOrder\"> | {{ value[grpOrImpsKey] }}</span>\n</ng-template>\n\n<ng-template\n    #tableTemplate\n    let-tableData=\"tableData\"\n    let-section=\"section\"\n>\n    <div class=\"card-body\">\n        <table>\n            <tbody>\n                <ng-container *ngFor=\"let rowData of tableData\">\n                    <tr\n                        *ngFor=\"let item of rowData.group; let last = last; let first = first\"\n                        [ngClass]=\"{\n                            'first-row': first,\n                            'last-row': last,\n                            'multiple-values': rowData.group.length > 1,\n                            'no-border-btm': item.noBorderBottom\n                        }\"\n                    >\n                        <ng-container *ngIf=\"!item.isSpotGrpValue\">\n                            <td\n                                annaCoreShowEllipsisTextOnHover\n                                class=\"text-start\"\n                                *ngIf=\"item.nameColspan\"\n                                [colSpan]=\"item.nameColspan\"\n                                [ngClass]=\"item.nameClass\"\n                            >\n                                {{ item.name }}\n                            </td>\n\n                            <!-- VALUE -->\n                            <!-- ARRAY handling -->\n                            <ng-container\n                                *ngIf=\"item.value && (item.value | AnnatypeofData) === 'object'; else valTemplate\"\n                            >\n                                <div\n                                    *ngFor=\"let eachValue of item.value; let first = first\"\n                                    [ngClass]=\"{ 'first-div': first }\"\n                                >\n                                    <td\n                                        annaCoreShowEllipsisTextOnHover\n                                        class=\"text-end\"\n                                        [ngClass]=\"item.valueClass\"\n                                    >\n                                        {{ eachValue | AnnaConvertZeroOrNullOrUndefined: \"-\" }}\n                                    </td>\n                                </div>\n                            </ng-container>\n\n                            <!-- STRING handling -->\n                            <ng-template #valTemplate>\n                                <td\n                                    annaCoreShowEllipsisTextOnHover\n                                    class=\"text-end\"\n                                    *ngIf=\"item.valueColspan && !item.showLink\"\n                                    [colSpan]=\"item.valueColspan\"\n                                    [ngClass]=\"item.valueClass\"\n                                >\n                                    <span>{{ item.value | AnnaConvertZeroOrNullOrUndefined: \"-\" }}</span>\n\n                                    <!-- ICON handling -->\n                                    <ng-content select=\".td-icon\"></ng-content>\n\n                                    <ng-container *ngIf=\"item.name === 'Station Order#'\">\n                                        <ng-content select=\".td-pfp-icon\"></ng-content>\n                                        <!-- <i\n                                            *ngIf=\"data?.orderInfo?.isWriteEnabledOrder && (parentTab === 'TV Revenue' || parentTab === 'Order')\"\n                                            class=\"{{ ANNAIconNames.AutomationActivatedIconName }}\"\n                                            ngbTooltip=\"Automated\"\n                                            placement=\"bottom\"\n                                            container=\"body\"\n                                        ></i> -->\n                                    </ng-container>\n                                </td>\n                                <td\n                                    *ngIf=\"item.showLink\"\n                                    [ngClass]=\"item.valueClass\"\n                                    class=\"text-end\"\n                                    [colSpan]=\"item.valueColspan\"\n                                >\n                                    <span\n                                        class=\"text-link\"\n                                        [ngClass]=\"{\n                                            'disable-hiatus-link': disableHiatusPopupLink,\n                                            'enable-hiatus-link': !disableHiatusPopupLink\n                                        }\"\n                                        (click)=\"onLinkClicked(item.name)\"\n                                    >\n                                        {{ item.value }}\n                                    </span>\n                                </td>\n                            </ng-template>\n                        </ng-container>\n\n                        <ng-container *ngIf=\"item.isSpotGrpValue\">\n                            <td\n                                annaCoreShowEllipsisTextOnHover\n                                class=\"text-start\"\n                                [ngClass]=\"item.nameClass\"\n                            >\n                                <span class=\"font-weight-bold\"> {{ item.name }}</span>\n                                <i\n                                    *ngIf=\"item.tooltipMessageBesideName\"\n                                    container=\"body\"\n                                    [ngbTooltip]=\"item.tooltipMessageBesideName\"\n                                    class=\"mi mdi-info-outline info-tooltip\"\n                                    placement=\"bottom\"\n                                ></i\n                                ><br />\n                                <ng-container\n                                    [ngTemplateOutlet]=\"spotsValueGrpOrImps\"\n                                    [ngTemplateOutletContext]=\"{ name: item.name }\"\n                                ></ng-container>\n                            </td>\n                            <td\n                                annaCoreShowEllipsisTextOnHover\n                                class=\"text-end\"\n                                [ngClass]=\"item.valueClass\"\n                            >\n                                <ng-container\n                                    [ngTemplateOutlet]=\"revenueInfoData\"\n                                    [ngTemplateOutletContext]=\"{ value: item.value, name: item.name }\"\n                                >\n                                </ng-container>\n                            </td>\n                        </ng-container>\n                    </tr>\n                </ng-container>\n\n                <ng-container *ngIf=\"section === 'order'\">\n                    <ng-content select=\".extra-order-block-component\"></ng-content>\n                </ng-container>\n\n                <!-- <ng-container *ngIf=\"section === 'client'\">\n                    <ng-content select=\".extra-client-block-component\"></ng-content>\n                </ng-container> -->\n\n                <ng-container *ngIf=\"section === 'revenue'\">\n                    <ng-content select=\".extra-revenue-block-component\"></ng-content>\n                </ng-container>\n            </tbody>\n        </table>\n    </div>\n</ng-template>\n\n<ng-template\n    #hiatusWindowModal\n    let-modal\n>\n    <anna-feature-hiatus-window-popup\n        [hiatusInfoForPopup]=\"hiatusWindowDetailsForPopup\"\n        [hiatusDatesArr]=\"hiatusWindowDetailsForPopup?.hiatusDateRange\"\n        [saveButtonText]=\"'Send for Entry'\"\n        [editMode]=\"hiatusWindowDetailsForPopup?.enableEdit\"\n        [topInfoMessage]=\"hiatusWindowPopupTopInfoMessage\"\n        [popupHeaderMessage]=\"hiatusWindowPopupHeaderMessage\"\n        [calendarMinEnabledDate]=\"calenderStartDateForHiatusPopup\"\n        [calendarMaxEnabledDate]=\"calenderEndDateForHiatusPopup\"\n        [showSellerComments]=\"true\"\n        (closePopup)=\"closeModalForHiatusWindow()\"\n        (hiatusDatesSaved)=\"sendHiatusDatesForEntry($event)\"\n    >\n    </anna-feature-hiatus-window-popup>\n</ng-template>\n","import { CurrencyPipe } from \"@angular/common\";\nimport { ISvgOrIconTypeInGTTable, SvgOrIconNames, TableClassNameConstant } from \"@annalib/anna-core\";\nimport { TypeOfCalendar } from \"@annalib/anna-design-components-lib\";\nimport { OrderMetrics } from \"@annalib/anna-feature-shared-lib\";\nimport dayjs from \"dayjs\";\n\n// eslint-disable-next-line import/no-cycle\nimport { MeasurementAgencyInOrderSummary } from \"../../primary-order-panel/models/primary-order-panel.model\";\nimport { StatusConstants } from \"../constants/spot-details.constants\";\nimport { GenericSpotDetailsService } from \"../services/generic-spot-details.service\";\n\nexport type SPOTDETAILVIEWS = \"SellerView\" | \"BuyerView\";\n\nexport enum UserTypeEnum {\n    BUYER = \"BUYER\",\n    SELLER = \"SELLER\",\n}\nexport class IdText {\n    id: number;\n    text: string;\n    constructor(id: number, text: string) {\n        this.id = id;\n        this.text = text;\n    }\n}\n\nexport class YearQuarterFilterData {\n    year: number;\n    displayQuarters: IdText[];\n    constructor(obj: any) {\n        this.year = obj.Year;\n        this.displayQuarters = [];\n        this.displayQuarters.push(new IdText(1, \"All\"));\n        let i = 2;\n        obj.Quarters.forEach((element: any) => {\n            this.displayQuarters.push(new IdText(i, element.DisplayDate));\n            i += 1;\n        });\n    }\n}\n\nexport interface ISpotDataPerQuarter {\n    StartDate: string;\n    EndDate: string;\n    IsCurrentQuarter: boolean;\n    IsAllSpots: boolean;\n    Spots: ISpotData[];\n    IsPostedSpotsPresent: boolean;\n    IsNormalized?: boolean;\n    DemoId?: number;\n    SelectedView: \"SellerView\" | \"BuyerView\";\n}\n\nexport interface IGroupDataPerQuarter {\n    StartDate: string;\n    EndDate: string;\n    IsCurrentQuarter: boolean;\n    IsAllSpots: boolean;\n    Groups: IGroupData[];\n    IsNormalized?: boolean;\n    DemoId?: number;\n}\n\nexport interface IGroupData {\n    GroupId: string | null;\n    Spots: ISpotData[];\n}\n\nexport interface ICustomizableColumnsForSpotDetails {\n    name: string;\n    objectKey: string;\n    isFixed: boolean;\n    isChecked: boolean;\n}\n\nexport class IconActionForBookedRatingColumn {\n    id: any = 0;\n    data: string;\n\n    iconClass: string = \"mdi mdi-information-outline\";\n    showIcon: boolean = false;\n    disabledIcon: boolean = false;\n\n    linkClass: string;\n    showLink: boolean = false;\n    disabledLink: boolean = false;\n\n    showTooltip: boolean = false;\n\n    typeOfData: \"STRING\" | \"ICON_TEXT_ACTION\";\n    additionalTextBeforeLink: string;\n    disableTooltip: boolean = false;\n    tooltipData: any = {};\n    tooltipClass: string;\n    constructor(data: any, showRatingTooltip: boolean) {\n        this.tooltipClass = \"spot-details-info-tooltip\";\n        this.additionalTextBeforeLink = data.OrderedRatings == null ? \"-\" : data.OrderedRatings;\n        const tooltipMsgs: string[] = [];\n        const bookedRatingsTooltip =\n            showRatingTooltip && data.HighlightRatingsOrImpressions\n                ? `<span class=\"rate-msg\">Booked RTG is greater than ${data.UpperLimitForBookedRatingOrImpressions}% of the Projected RTG</span>`\n                : \"\";\n        if (bookedRatingsTooltip) {\n            tooltipMsgs.push(bookedRatingsTooltip);\n        }\n        this.tooltipData.innerHtml = \"\";\n        if (tooltipMsgs?.length > 1) {\n            tooltipMsgs.forEach((msg) => {\n                this.tooltipData.innerHtml += `<li>${msg}</li>`;\n            });\n        } else {\n            this.tooltipData.innerHtml = tooltipMsgs[0];\n        }\n\n        if (showRatingTooltip && data.HighlightRatingsOrImpressions) {\n            this.showIcon = true;\n            this.showTooltip = true;\n            this.tooltipData.tooltipTableBody = true;\n        }\n    }\n}\nexport class IconActionForBookedImpsColumn {\n    id: any = 0;\n    data: string;\n\n    iconClass: string = \"mdi mdi-information-outline\";\n    showIcon: boolean = false;\n    disabledIcon: boolean = false;\n\n    linkClass: string;\n    showLink: boolean = false;\n    disabledLink: boolean = false;\n\n    showTooltip: boolean = false;\n\n    typeOfData: \"STRING\" | \"ICON_TEXT_ACTION\";\n    additionalTextBeforeLink: string;\n    disableTooltip: boolean = false;\n    tooltipData: any = {};\n    tooltipClass: string;\n    constructor(data: any, showImpsTooltip: boolean) {\n        this.tooltipClass = \"spot-details-info-tooltip\";\n        this.additionalTextBeforeLink = data.OrderedImpressions == null ? \"-\" : data.OrderedImpressions;\n        const tooltipMsgs: string[] = [];\n\n        const bookedImpsTooltip =\n            showImpsTooltip && data.HighlightRatingsOrImpressions\n                ? `<span class=\"rate-msg\">Booked IMPS is greater than ${data.UpperLimitForBookedRatingOrImpressions}% of the Projected IMPS</span>`\n                : \"\";\n\n        if (bookedImpsTooltip) {\n            tooltipMsgs.push(bookedImpsTooltip);\n        }\n        this.tooltipData.innerHtml = \"\";\n        if (tooltipMsgs?.length > 1) {\n            tooltipMsgs.forEach((msg) => {\n                this.tooltipData.innerHtml += `<li>${msg}</li>`;\n            });\n        } else {\n            this.tooltipData.innerHtml = tooltipMsgs[0];\n        }\n\n        if (showImpsTooltip && data.HighlightRatingsOrImpressions) {\n            this.showIcon = true;\n            this.showTooltip = true;\n            this.tooltipData.tooltipTableBody = true;\n        }\n    }\n}\n\nexport class IconActionForBookedRateColumn {\n    id: any = 0;\n    data: string;\n\n    iconClass: string = \"mdi mdi-information-outline\";\n    showIcon: boolean = false;\n    disabledIcon: boolean = false;\n\n    linkClass: string;\n    showLink: boolean = false;\n    disabledLink: boolean = false;\n\n    showTooltip: boolean = false;\n\n    typeOfData: \"STRING\" | \"ICON_TEXT_ACTION\";\n    additionalTextBeforeLink: string;\n    disableTooltip: boolean = false;\n    tooltipData: any = {};\n    tooltipClass: string;\n\n    // tooltipData: { key: string, value: string}[] | { tooltipTableHeader: string[], tooltipTableBody: string[][], tableHeaderMsg: string[], tableFooterMsg: string[] }\n    constructor(data: any, showLURVoilation: boolean, showRateRtgOrImpsTooltip: boolean, metricType: OrderMetrics) {\n        this.tooltipClass = \"spot-details-info-tooltip\";\n        this.additionalTextBeforeLink = data.DisplayRate;\n        const tooltipMsgs: string[] = [];\n        let violatedTooltip = \"\";\n        let violatingTooltip = \"\";\n        if (data.IsViolating || data.IsViolated) {\n            if (data.IsViolated) {\n                violatedTooltip = data.IsViolated\n                    ? `<strong>Violated spot:</strong> LUR Violations with Rebate.<br/><span class=\"rebate-row\">Rebate: <span class='rebate-text'>${data.RebateImpact}</span> | LUR: ${data.Lur}</span>`\n                    : \"\";\n                if (violatedTooltip) tooltipMsgs.push(violatedTooltip);\n            }\n            if (data.IsViolating) {\n                violatingTooltip += data.IsViolating\n                    ? `<strong>Violator spot: </strong> ${data.IsViolatingWithRebate ? \"LUR Violations with Rebate\" : \"Other Violations\"}`\n                    : \"\";\n                if (violatingTooltip) tooltipMsgs.push(violatingTooltip);\n            }\n        }\n        const bookedRatetooltip =\n            showRateRtgOrImpsTooltip && data.HighlightRate\n                ? `<span class=\"rate-msg\">Booked Rate is less than ${data.LowerLimitForBookedRate}% of the Booked Average Rate</span>`\n                : \"\";\n        if (bookedRatetooltip) tooltipMsgs.push(bookedRatetooltip);\n\n        this.tooltipData.innerHtml = \"<ul class='pl-16'> \";\n        if (tooltipMsgs?.length > 1) {\n            tooltipMsgs.forEach((msg) => {\n                this.tooltipData.innerHtml += `<li>${msg}</li>`;\n            });\n        } else {\n            this.tooltipData.innerHtml = tooltipMsgs[0];\n        }\n\n        this.tooltipData.innerHtml += \" </ul>\";\n\n        if (\n            (showLURVoilation && (data.IsViolating || data.IsViolated)) ||\n            (showRateRtgOrImpsTooltip && data.HighlightRate)\n        ) {\n            this.showIcon = true;\n            this.showTooltip = true;\n            this.tooltipData.tooltipTableBody = true;\n        }\n    }\n}\n\nexport enum MeasurementAgencyInSpotDetails {\n    NielsenMonthlies = \"Nielsen (Sweeps)\",\n    NielsenOvernights = \"Nielsen (Overnights)\",\n    ComscorePulse = \"Comscore (Pulse)\",\n    ComscorePerson = \"Comscore (Persons)\",\n}\n\nexport class SpotTableData {\n    SellerLine: number;\n    SpotNumber: number;\n    Origin: string;\n    SpotStatus: string;\n    DisplaytSpotStatusBI: string;\n    AirStatus: string;\n    AiredProgram: string;\n    SeeMG: string;\n    MGFor: string;\n    Length: string;\n    DP: string;\n    InventoryCode: string;\n    SellerProgInvCode: string;\n    Program: string;\n    WeekNumber: number;\n    Week: string;\n    ScheduleFlightWeek: string;\n    AirDateAndTime: string;\n    AirDate: string;\n    RevenueClass: string;\n    StartTime: string;\n    EndTime: string;\n    StartTimeForFilter: string;\n    EndTimeForFilter: string;\n    ScheduledDay: string;\n    BookedRate: number | string;\n    DisplayRate: string;\n    BookedRatingOrImpressions: number | string;\n    PostedRatingsOrImpressions: number | string;\n    DemoNormalizedOrderedRtgOrImp: string;\n    DemoNormalizedPostedRtgOrImp: string;\n    SpotId: string;\n    Metric: string;\n    StatusBeforeMarkingSpot: string;\n    IsAired: boolean;\n    IsPosted: boolean;\n    IsLateRun: boolean;\n    IsLURViolated: boolean;\n    IsMarkForMakeGood: boolean;\n    IsMarkForCredit: boolean;\n    IsBuyerRequestedForCredit: boolean;\n    IsSellerRequestedForCredit: boolean;\n    AllowUserToMarkForMakeGood: boolean;\n    AllowUserToMarkForCredit: boolean;\n    AllowUserToMarkForMakeGoodBeforeMarkingSpot: boolean;\n    AllowUserToMarkForCreditBeforeMarkingSpot: boolean;\n    AllowUserToUndoMarkForMakeGood: boolean;\n    AllowUserToUndoMarkForCredit: boolean;\n    IsPreempted: boolean;\n    IsDisabled: boolean;\n    iconClass: string;\n    IsSelected: boolean;\n    GroupId: string | null;\n    LastRowOfGroup: boolean;\n    gtClass: string;\n    AdId: string;\n    SpotDate: string;\n    buyerProgramName: string;\n    SellerProgramName: string;\n    BuyerLine: number;\n    WeeklyAUR: number | string;\n    DisplayWeeklyAUR: string;\n    AURTG: number | string;\n    AUIMPS: number | string;\n    BookedIMPS: any;\n    PostedImpressions: any;\n    PostedRating: any;\n    ActualPostedImpressions: number;\n    ActualPostedRatings: number;\n    ActualProjectedImpressions: number;\n    ActualProjectedRatings: number;\n    BookedRTG: number | string;\n    ProjectedRtg: string;\n    ProjectedImpressions: string;\n    NormalizedOrderedRating: string;\n    NormalizedOrderedImpressions: string;\n    NormalizedPostedRating: string;\n    NormalizedPostedImpressions: string;\n    StartAndEndTimeForDisplay: string;\n    targetLUR: string;\n    loweLimitForBookedRateInPercent: string;\n    upperLimitForBookedRateInPercent: string;\n    displayRateActionKey: IconActionForBookedRateColumn[];\n    displayRateTooltipKey: any;\n    displayRatingActionKey: IconActionForBookedRateColumn[];\n    displayRatingTooltipKey: any;\n    displayImpsActionKey: IconActionForBookedRateColumn[];\n    displayImpsTooltipKey: any;\n    displayGRP: string;\n    displayIMPS: string;\n    BuyerLineForDisplay: any;\n    originActionKey;\n    originTooltipKey;\n    IsViolating: boolean;\n    IsViolated: boolean;\n\n    // Had to keep pascal case\n    WeeklyAURatings: string;\n    WeeklyAUImpressions: string;\n    BookedRating: string;\n    BookedImpression: string;\n    RollingEstimateRating: string;\n    RollingEstimateImpression: string;\n    StationEstimateRating: string;\n    StationEstimateImpression: string;\n\n    estimatePriorityUpperLabelVal: string;\n    estimatePriorityLowerLabelVal: string;\n\n    // new keys for easy filters filtering\n    showIfBookedFilterSelected: boolean;\n    showIfBookedToDateFilterSelected: boolean;\n    showIfAiredFilterSelected: boolean;\n    showIfPostedFilterSelected: boolean;\n    showIfScheduledFilterSelected: boolean;\n    showIfToBeScheduledFilterSelected: boolean;\n    showIfDroppedFilterSelected: boolean;\n    showIfPoliticalRateViolationsFilterSelected: boolean;\n    showIfCandidateToCandidateViolationsFilterSelected: boolean;\n    showIfViolatedFilterSelected: boolean;\n    showIfViolatingFilterSelected: boolean;\n    showIfLateRunsSelected: boolean;\n    ActualOrderedRatings: any;\n    ActualOrderedImpressions: any;\n\n    measurementAgency: MeasurementAgencyInSpotDetails;\n    postedImpressionsActionKey: ISvgOrIconTypeInGTTable[] = [];\n    postedGrpActionKey: ISvgOrIconTypeInGTTable[] = [];\n\n    constructor(\n        estimatePriorityList: string[],\n        obj: any,\n        currencyPipe: CurrencyPipe,\n        showLURVoilation: boolean,\n        showRateRtgOrImpsTooltip: boolean,\n        metricType: any,\n        orderLevelMeasurementAgency: MeasurementAgencyInOrderSummary,\n    ) {\n        this.SellerLine = obj.LineNumber;\n        this.SpotNumber = obj.SpotNumber;\n        this.Origin = obj.Origin;\n        this.SpotStatus = obj.Status;\n        this.DisplaytSpotStatusBI = obj.DisplaytSpotStatusBI ? obj.DisplaytSpotStatusBI : \"\";\n        this.AirStatus = obj.AirStatus;\n        this.AiredProgram = obj.AiredProgram;\n        this.SeeMG = obj.SeeMG == null ? \"-\" : obj.SeeMG;\n        this.MGFor = obj.MGFor == null ? \"-\" : obj.MGFor;\n        this.Length = obj.Length == null ? \"-\" : obj.Length;\n        // this.IsciCode = obj.IsciCode;\n        this.DP = obj.Daypart == null ? \"-\" : obj.Daypart;\n        this.InventoryCode = obj.InventoryCode;\n        this.Program = obj.Program;\n        this.WeekNumber = obj.WeekNumber;\n        this.ScheduleFlightWeek = obj.WeekStartDate;\n        this.Week = dayjs(obj.WeekStartDate, \"MM/DD/YY\").format(\"MM/DD/YYYY\");\n        this.SpotDate = obj.SpotDate;\n        this.AirDateAndTime = obj.AirDateAndTime == null ? \"-\" : obj.AirDateAndTime;\n\n        if (obj.AirDateAndTime.indexOf(\"|\") > 0) {\n            this.AirDate =\n                obj.AirDateAndTime == null ? \"-\" : obj.AirDateAndTime.slice(0, obj.AirDateAndTime.indexOf(\"|\")).trim();\n        } else {\n            this.AirDate = obj.AirDateAndTime == null ? \"-\" : obj.AirDateAndTime.trim();\n        }\n\n        this.WeeklyAURatings = obj.WeeklyAURatings;\n        this.WeeklyAUImpressions = obj.WeeklyAUImpressions;\n        this.BookedRating = obj.BookedRating;\n        this.BookedImpression = obj.BookedImpression;\n        this.RollingEstimateRating = obj.RollingEstimateRating;\n        this.RollingEstimateImpression = obj.RollingEstimateImpression;\n        this.StationEstimateRating = obj.StationEstimateRating;\n        this.StationEstimateImpression = obj.StationEstimateImpression;\n\n        const estimatePriorityVal = GenericSpotDetailsService.returnEstimatePrioritiesColumnVal(\n            estimatePriorityList,\n            obj,\n            metricType,\n        );\n        this.estimatePriorityUpperLabelVal = estimatePriorityVal[0];\n        this.estimatePriorityLowerLabelVal = estimatePriorityVal[1];\n\n        this.RevenueClass = obj.RevenueClass == null ? \"-\" : obj.RevenueClass;\n        this.StartTime = obj.StartTime == null ? \"-\" : obj.StartTime;\n        this.EndTime = obj.EndTime == null ? \"-\" : obj.EndTime;\n        this.StartTimeForFilter = obj.StartTime == null ? \"-\" : obj.StartTimeForFilter;\n        this.StartAndEndTimeForDisplay = `${this.StartTime} - ${this.EndTime}`;\n        this.EndTimeForFilter = obj.EndTime == null ? \"-\" : obj.EndTimeForFilter;\n        this.ScheduledDay = obj.ScheduledDay == null ? \"-\" : obj.ScheduledDay;\n        this.BookedRate = obj.Rate;\n        // this.DisplayRate = currencyPipe.transform(obj.Rate, 'USD', 'symbol', '1.0-0');\n        this.DisplayRate = obj.DisplayRate;\n        // this.BookedRatingOrImpressions = obj.OrderedRatingsOrImpressions == null ? \"-\" : obj.OrderedRatingsOrImpressions;\n        this.BookedRTG = obj.OrderedRatings == null ? \"-\" : obj.OrderedRatings;\n        this.BookedIMPS = obj.OrderedImpressions == null ? \"-\" : obj.OrderedImpressions;\n        // this.PostedRatingsOrImpressions = obj.PostedRatingsOrImpressions == null ? \"-\" : obj.PostedRatingsOrImpressions;\n        this.PostedRating = obj.PostedRatings == null ? \"-\" : obj.PostedRatings;\n        this.PostedImpressions = obj.PostedImpressions == null ? \"-\" : obj.PostedImpressions;\n        this.ActualOrderedRatings = obj.ActualOrderedRatings === null ? \"-\" : obj.ActualOrderedRatings;\n        this.ActualOrderedImpressions = obj.ActualOrderedImpressions === null ? \"-\" : obj.ActualOrderedImpressions;\n        this.ActualPostedImpressions = obj.ActualPostedImpressions;\n        this.ActualPostedRatings = obj.ActualPostedRatings;\n\n        this.ActualProjectedImpressions = obj.ActualProjectedImpressions;\n        this.ActualProjectedRatings = obj.ActualProjectedRatings;\n\n        this.ProjectedRtg = obj.ProjectedRatings == null ? \"-\" : obj.ProjectedRatings;\n        this.ProjectedImpressions = obj.ProjectedImpressions == null ? \"-\" : obj.ProjectedImpressions;\n\n        // this.DemoNormalizedOrderedRtgOrImp = obj.DemoNormalizedOrderedRtgOrImp == null ? \"-\" : obj.DemoNormalizedOrderedRtgOrImp;\n        this.NormalizedOrderedRating =\n            obj.DemoNormalizedOrderedRatings == null ? \"-\" : obj.DemoNormalizedOrderedRatings;\n        this.NormalizedOrderedImpressions =\n            obj.DemoNormalizedOrderedImpressions == null ? \"-\" : obj.DemoNormalizedOrderedImpressions;\n        // this.DemoNormalizedPostedRtgOrImp = obj.DemoNormalizedPostedRtgOrImp == null ? \"-\" : obj.DemoNormalizedPostedRtgOrImp;\n        this.NormalizedPostedImpressions =\n            obj.DemoNormalizedPostedImpressions == null ? \"-\" : obj.DemoNormalizedPostedImpressions;\n        this.NormalizedPostedRating = obj.DemoNormalizedPostedRatings == null ? \"-\" : obj.DemoNormalizedPostedRatings;\n        // this.NormalizedPostedRating = this.NormalizedPostedImpressions = cloneDeep(this.DemoNormalizedPostedRtgOrImp);\n        // this.NormalizedOrderedRating = this.NormalizedOrderedImpressions = cloneDeep(this.DemoNormalizedOrderedRtgOrImp);\n        this.SpotId = obj.SpotId;\n        this.Metric = obj.Metric;\n        this.StatusBeforeMarkingSpot = \"\";\n        this.IsAired = obj.IsAired;\n        this.IsLateRun = obj.IsLateRun;\n        this.IsPosted = obj.IsPosted;\n        this.IsLURViolated = obj.IsLURViolated;\n        this.IsMarkForMakeGood = obj.IsMarkForMakeGood;\n        this.IsMarkForCredit = obj.IsMarkForCredit;\n        this.IsBuyerRequestedForCredit = obj.IsBuyerRequestedForCredit;\n        this.IsSellerRequestedForCredit = obj.IsSellerRequestedForCredit;\n        this.AllowUserToMarkForMakeGood = obj.AllowUserToMarkForMakeGood;\n        this.AllowUserToMarkForCredit = obj.AllowUserToMarkForCredit;\n        this.AllowUserToMarkForMakeGoodBeforeMarkingSpot = obj.AllowUserToMarkForMakeGood;\n        this.AllowUserToMarkForCreditBeforeMarkingSpot = obj.AllowUserToMarkForCredit;\n        this.AllowUserToUndoMarkForMakeGood = false;\n        this.AllowUserToUndoMarkForCredit = false;\n        this.IsPreempted = obj.IsPreempted;\n        this.IsSelected = false;\n        this.IsDisabled = false;\n        this.LastRowOfGroup = false;\n        this.AdId = obj.AdId === \"\" || obj.AdId === null ? \"-\" : obj.AdId;\n        this.gtClass = TableClassNameConstant.defaultClass;\n        this.BuyerLine = obj.BuyerLine;\n        this.BuyerLineForDisplay = obj.BuyerLine == null || obj.BuyerLine === \"\" ? \"-\" : obj.BuyerLine;\n        this.buyerProgramName =\n            obj.BuyerProgramName == null || obj.BuyerProgramName === \"\" ? \"-\" : obj.BuyerProgramName;\n        this.SellerProgramName = obj.SellerProgram == null || obj.SellerProgram === \"\" ? \"-\" : obj.SellerProgram;\n        this.SellerProgInvCode = this.InventoryCode ? `${this.SellerProgramName} (${this.InventoryCode})` : \"-\";\n        this.WeeklyAUR = obj.WeeklyAUR == null || obj.WeeklyAUR === \"\" ? \"-\" : obj.WeeklyAUR;\n        // this.DisplayWeeklyAUR = obj.WeeklyAUR == null || obj.WeeklyAUR == \"\" ? \"-\" : currencyPipe.transform(obj.WeeklyAUR, 'USD', 'symbol', '1.0-2');\n        this.DisplayWeeklyAUR = obj.DisplayWeeklyAUR;\n        this.AURTG = obj.WeeklyAURatings == null || obj.WeeklyAURatings === \"\" ? \"-\" : obj.WeeklyAURatings;\n        this.AUIMPS = obj.WeeklyAUImpressions == null || obj.WeeklyAUImpressions === \"\" ? \"-\" : obj.WeeklyAUImpressions;\n        this.displayGRP = this.AURTG.toLocaleString(\"en-us\", { minimumFractionDigits: 0, maximumFractionDigits: 2 });\n        this.displayIMPS = this.AUIMPS.toLocaleString(\"en-us\", { minimumFractionDigits: 0, maximumFractionDigits: 2 });\n\n        this.targetLUR = obj.TargetLUR;\n        this.measurementAgency = obj.MeasurementAgencyType;\n\n        this.postedImpressionsActionKey = [\n            {\n                showObjectKey: true,\n                svgOrIconName:\n                    obj.PostedImpressions &&\n                    this.showPulseOrOvernightIcon(this.measurementAgency, orderLevelMeasurementAgency).iconName,\n                svgOrIconTooltipMsg: this.showPulseOrOvernightIcon(this.measurementAgency, orderLevelMeasurementAgency)\n                    .tooltipText,\n            },\n        ];\n        this.postedGrpActionKey = [\n            {\n                showObjectKey: true,\n                svgOrIconName:\n                    obj.PostedRatings &&\n                    this.showPulseOrOvernightIcon(this.measurementAgency, orderLevelMeasurementAgency).iconName,\n                svgOrIconTooltipMsg: this.showPulseOrOvernightIcon(this.measurementAgency, orderLevelMeasurementAgency)\n                    .tooltipText,\n            },\n        ];\n\n        if (this.IsBuyerRequestedForCredit) {\n            this.iconClass = \"mi mdi-warning\";\n            this.gtClass = this.gtClass.concat(TableClassNameConstant.redColorStatus);\n        }\n\n        if ((obj.IsViolated || obj.IsViolating) && showLURVoilation) {\n            this.gtClass = this.gtClass.concat(TableClassNameConstant.redColorCellBorder);\n        }\n        if (obj.HighlightRate && showRateRtgOrImpsTooltip) {\n            this.gtClass = this.gtClass.concat(TableClassNameConstant.redColorCellBorder);\n        }\n        if (obj.HighlightRatingsOrImpressions && showRateRtgOrImpsTooltip) {\n            this.gtClass = this.gtClass.concat(TableClassNameConstant.orangeColorCellBorder);\n        }\n\n        const booledRateIconWithTooltip = new IconActionForBookedRateColumn(\n            obj,\n            showLURVoilation,\n            showRateRtgOrImpsTooltip,\n            metricType,\n        );\n        this.displayRateActionKey = [booledRateIconWithTooltip];\n        this.displayRateTooltipKey = this.displayRateActionKey[0].tooltipData;\n\n        const bookedRatingIconWithTooltip = new IconActionForBookedRatingColumn(obj, showRateRtgOrImpsTooltip);\n        this.displayRatingActionKey = [bookedRatingIconWithTooltip];\n        this.displayRatingTooltipKey = this.displayRatingActionKey[0].tooltipData;\n\n        const bookedImpIconWithTooltip = new IconActionForBookedImpsColumn(obj, showRateRtgOrImpsTooltip);\n        this.displayImpsActionKey = [bookedImpIconWithTooltip];\n        this.displayImpsTooltipKey = this.displayImpsActionKey[0].tooltipData;\n        this.IsViolating = obj.IsViolating;\n        this.IsViolated = obj.IsViolated;\n\n        const originActionKey = new IconAction(\n            obj.Origin,\n            obj.ExcludeFromFutureOffers\n                ? \"This preemption has been excluded from further attempts for MakeGoods\"\n                : null,\n            \"mdi mdi-cancel\",\n        );\n        this.originActionKey = [originActionKey];\n        this.originTooltipKey = this.originActionKey[0].tooltipData;\n\n        // keys for easy filters fitering\n        this.showIfBookedFilterSelected = GenericSpotDetailsService.isBooked(this.SpotStatus);\n        // this.showIfBookedToDateFilterSelected = GenericSpotDetailsService.isBookedToDate(this.AirDate, this.SpotStatus);\n        // change late runs here\n        this.showIfLateRunsSelected = GenericSpotDetailsService.isLateRunSpot(this.IsLateRun);\n        this.showIfAiredFilterSelected = GenericSpotDetailsService.isAired(this.IsAired);\n        this.showIfPostedFilterSelected = GenericSpotDetailsService.isPosted(this.IsPosted);\n        this.showIfScheduledFilterSelected = GenericSpotDetailsService.isScheduled(this.AirDate, this.SpotStatus);\n        this.showIfToBeScheduledFilterSelected = GenericSpotDetailsService.isToBeScheduled(this.SpotStatus);\n        this.showIfDroppedFilterSelected = GenericSpotDetailsService.isDropped(this.SpotStatus);\n        this.showIfPoliticalRateViolationsFilterSelected = this.IsLURViolated;\n        this.showIfCandidateToCandidateViolationsFilterSelected = this.IsLURViolated;\n        this.showIfViolatedFilterSelected = this.IsViolated;\n        this.showIfViolatingFilterSelected = this.IsViolating;\n    }\n\n    showPulseOrOvernightIcon(\n        measurementAgency: MeasurementAgencyInSpotDetails,\n        orderLevelMeasurementAgency: MeasurementAgencyInOrderSummary,\n    ) {\n        if (\n            orderLevelMeasurementAgency === MeasurementAgencyInOrderSummary.Comscore &&\n            measurementAgency === MeasurementAgencyInSpotDetails.ComscorePulse\n        ) {\n            return {\n                iconName: SvgOrIconNames.COM_SCORE_PULSE,\n                tooltipText: \"Pulse data\",\n            };\n        }\n        if (\n            orderLevelMeasurementAgency === MeasurementAgencyInOrderSummary.NielsenSweeps &&\n            measurementAgency === MeasurementAgencyInSpotDetails.NielsenOvernights\n        ) {\n            return {\n                iconName: SvgOrIconNames.NIELSEN_OVERNIGHTS,\n                tooltipText: \"HH Overnights\",\n            };\n        }\n        return {\n            iconName: null,\n            tooltipText: null,\n        };\n    }\n}\n\nexport class IconAction {\n    id: any = 0;\n    data: string;\n    iconClass: string = \"mdi mdi-information-outline\";\n    showIcon: boolean = false;\n    disabledIcon: boolean = false;\n    linkClass: string;\n    showLink: boolean = false;\n    disabledLink: boolean = false;\n    showTooltip: boolean = false;\n    typeOfData: \"STRING\" | \"ICON_TEXT_ACTION\";\n    additionalTextBeforeLink: string;\n    disableTooltip: boolean = false;\n    tooltipData: any = null;\n    tooltipClass: string;\n    constructor(data: number | string, tooltiptext: string, iconClass: string) {\n        this.tooltipClass = \"spot-details-info-tooltip\";\n        this.iconClass = iconClass;\n        this.additionalTextBeforeLink = `${data}`;\n        if (tooltiptext) {\n            this.showIcon = true;\n            this.showTooltip = true;\n            this.tooltipData = [\n                {\n                    key: tooltiptext,\n                    value: null,\n                },\n            ];\n        }\n    }\n}\n\nexport class TotalRowForSpotDetails {\n    totalSpots: number;\n    totalBookedRate: number | string;\n    totalAUR: number | string = 0;\n\n    totalRtgOrdered: number | string;\n    totalImpOrdered: number | string;\n\n    totalRtgPosted: number | string;\n    totalImpPosted: number | string;\n\n    totalRtgProjected: number | string;\n    totalImpsProjected: number | string;\n\n    totalClearedSpots: number | string;\n    clearedSpotRate: string;\n    clearedSpotPercentage: string;\n\n    totalNormalizedImpressionsBooked: number;\n    totalNormalizedRTGBooked: number;\n    totalNormalizedRTGPosted: number;\n    totalNormalizedImpressionsPosted: number;\n\n    constructor(data: SpotTableData[], currecyPipe: CurrencyPipe) {\n        let totalNullRate: number = 0;\n        let totalNullRtgOrdered: number = 0;\n        let totalNullImpOrdered: number = 0;\n        let totalNullRtgPosted: number = 0;\n        let totalNullImpPosted: number = 0;\n        let totalNullAUR: number = 0;\n        let totalNullRtgProjected: number = 0;\n        let totalNullImpsProjected: number = 0;\n\n        this.totalSpots = 0;\n        this.totalBookedRate = 0;\n        this.totalRtgOrdered = 0;\n        this.totalImpOrdered = 0;\n        this.totalRtgPosted = 0;\n        this.totalImpPosted = 0;\n        this.totalRtgProjected = 0;\n        this.totalImpsProjected = 0;\n\n        totalNullRtgOrdered = 0;\n        totalNullImpOrdered = 0;\n        totalNullRtgPosted = 0;\n        totalNullImpPosted = 0;\n        totalNullRate = 0;\n\n        this.totalNormalizedRTGBooked = 0;\n        this.totalNormalizedImpressionsBooked = 0;\n        this.totalNormalizedRTGPosted = 0;\n        this.totalNormalizedImpressionsPosted = 0;\n\n        data.forEach((row: any) => {\n            this.totalSpots += 1;\n\n            if (row.BookedRate === \"-\") {\n                totalNullRate += 1;\n            } else {\n                this.totalBookedRate += row.BookedRate;\n            }\n\n            if (row.WeeklyAUR === \"-\") {\n                totalNullAUR += 1;\n            } else {\n                this.totalAUR += row.WeeklyAUR;\n            }\n            // row.AURTG == \"-\" ? totalNullAURTG++ : (totalAURTG += row.AURTG);\n            // row.AUIMPS == \"-\" ? totalNullAUIMPS++ : (totalAUIMPS += row.AUIMPS);\n            // row.BookedRate == \"-\"\n            //     ? this.totalNullRtgOrdered++\n            //     : (this.totalRate += row.BookedRate);\n            if (row.ActualOrderedRatings === \"-\") {\n                totalNullRtgOrdered += 1;\n            } else {\n                this.totalRtgOrdered += row.ActualOrderedRatings;\n            }\n\n            if (row.ActualOrderedImpressions === \"-\") {\n                totalNullImpOrdered += 1;\n            } else {\n                this.totalImpOrdered += row.ActualOrderedImpressions;\n            }\n\n            if (row.PostedRating === \"-\") {\n                totalNullRtgPosted += 1;\n            } else {\n                this.totalRtgPosted += row.ActualPostedRatings;\n            }\n\n            if (row.PostedImpressions === \"-\") {\n                totalNullImpPosted += 1;\n            } else {\n                this.totalImpPosted += row.ActualPostedImpressions;\n            }\n\n            if (row.ProjectedRtg === \"-\") {\n                totalNullRtgProjected += 1;\n            } else {\n                this.totalRtgProjected += row.ActualProjectedRatings;\n            }\n\n            if (row.ProjectedImpressions === \"-\") {\n                totalNullImpsProjected += 1;\n            } else {\n                this.totalImpsProjected += row.ActualProjectedImpressions;\n            }\n\n            if (row.NormalizedOrderedRating && row.NormalizedOrderedRating !== \"-\") {\n                this.totalNormalizedRTGBooked += +row.NormalizedOrderedRating;\n            }\n\n            if (row.NormalizedOrderedImpressions && row.NormalizedOrderedImpressions !== \"-\") {\n                this.totalNormalizedImpressionsBooked += +row.NormalizedOrderedImpressions;\n            }\n\n            if (row.NormalizedPostedRating && row.NormalizedPostedRating !== \"-\") {\n                this.totalNormalizedRTGPosted += +row.NormalizedPostedRating;\n            }\n\n            if (row.NormalizedPostedImpressions && row.NormalizedPostedImpressions !== \"-\") {\n                this.totalNormalizedImpressionsPosted += +row.NormalizedPostedImpressions;\n            }\n        });\n\n        this.totalBookedRate =\n            totalNullRate === this.totalSpots\n                ? \"-\"\n                : currecyPipe.transform(Math.round(this.totalBookedRate * 100) / 100, \"USD\", \"symbol\", \"1.0-2\");\n\n        this.totalAUR =\n            totalNullAUR === this.totalSpots\n                ? \"-\"\n                : currecyPipe.transform(Math.round((+this.totalAUR * 100) / 100), \"USD\", \"symbol\", \"1.0-2\");\n        // totalAURTG = totalNullAURTG == this.totalSpots ? \"-\" : (Math.round(+totalAURTG * 100) / 100).toLocaleString('en-us', { minimumFractionDigits: 0, maximumFractionDigits: 2 });\n        // totalAUIMPS = totalNullAUIMPS == this.totalSpots ? \"-\" : (Math.round(+totalAUIMPS * 100) / 100).toLocaleString('en-us', { minimumFractionDigits: 0, maximumFractionDigits: 2 });\n\n        this.totalRtgOrdered =\n            totalNullRtgOrdered === this.totalSpots\n                ? \"-\"\n                : (Math.round(this.totalRtgOrdered * 100) / 100).toLocaleString(\"en-us\", {\n                      minimumFractionDigits: 0,\n                      maximumFractionDigits: 2,\n                  });\n        this.totalImpOrdered =\n            totalNullImpOrdered === this.totalSpots\n                ? \"-\"\n                : (Math.round(this.totalImpOrdered * 100) / 100).toLocaleString(\"en-us\", {\n                      minimumFractionDigits: 0,\n                      maximumFractionDigits: 1,\n                  });\n\n        this.totalRtgPosted =\n            totalNullRtgPosted === this.totalSpots\n                ? \"-\"\n                : (Math.round(this.totalRtgPosted * 100) / 100).toLocaleString(\"en-us\", {\n                      minimumFractionDigits: 0,\n                      maximumFractionDigits: 2,\n                  });\n        this.totalImpPosted =\n            totalNullImpPosted === this.totalSpots\n                ? \"-\"\n                : (Math.round(this.totalImpPosted * 100) / 100).toLocaleString(\"en-us\", {\n                      minimumFractionDigits: 0,\n                      maximumFractionDigits: 1,\n                  });\n\n        this.totalRtgProjected =\n            totalNullRtgProjected === this.totalSpots\n                ? \"-\"\n                : (Math.round(this.totalRtgProjected * 100) / 100).toLocaleString(\"en-us\", {\n                      minimumFractionDigits: 0,\n                      maximumFractionDigits: 2,\n                  });\n        this.totalImpsProjected =\n            totalNullImpsProjected === this.totalSpots\n                ? \"-\"\n                : (Math.round(this.totalImpsProjected * 100) / 100).toLocaleString(\"en-us\", {\n                      minimumFractionDigits: 0,\n                      maximumFractionDigits: 1,\n                  });\n\n        this.totalClearedSpots = (\n            data.filter((x: any) => x.SpotStatus.includes(StatusConstants.Aired)).length +\n            data.filter((x: any) => x.SpotStatus.includes(StatusConstants.Late)).length +\n            data.filter((x: any) => x.SpotStatus.includes(StatusConstants.Placed)).length\n        ).toLocaleString(\"en-us\");\n\n        const clearedSpotRate = data\n            .filter(\n                (x: any) =>\n                    x.SpotStatus === StatusConstants.Aired ||\n                    x.SpotStatus === StatusConstants.Placed ||\n                    x.SpotStatus === StatusConstants.Late,\n            )\n            .map((x: any) => x.BookedRate)\n            .reduce((a: any, b: any) => a + b, 0);\n\n        const bookedSpotRate = data\n            .filter((x: any) =>\n                [\n                    StatusConstants.Placed,\n                    StatusConstants.Displaced,\n                    StatusConstants.Late,\n                    StatusConstants.Preempted,\n                    StatusConstants.PreemptedBonus,\n                    StatusConstants.PreemptedDR,\n                    StatusConstants.PreemptedPaidProgram,\n                    StatusConstants.PreemptedStationUtilized,\n                    StatusConstants.PreemptedNoCharge,\n                    StatusConstants.NonSpot,\n                    StatusConstants.Aired,\n                ].includes(x.SpotStatus),\n            )\n            .map((x: any) => x.BookedRate)\n            .reduce((a: any, b: any) => a + b, 0);\n\n        this.clearedSpotRate = ` ${currecyPipe.transform(clearedSpotRate, \"USD\", \"symbol\", \"1.0-2\")} `;\n        const clearedPercentageVal = bookedSpotRate === 0 ? \"-\" : Math.round((clearedSpotRate / bookedSpotRate) * 100);\n        this.clearedSpotPercentage = ` (${clearedPercentageVal}%) `;\n    }\n}\n\nexport class TotalRowForSpotDetailsForGroupedData {\n    totalSpots: number;\n    totalRate: number | string;\n    totalNullRate: number;\n    totalRTGOrdered: number | string;\n    totalIMPSOrdered: number | string;\n    totalNullRTGOrdered: number;\n    totalNullIMPSOrdered: number;\n    totalRTGPosted: number | string;\n    totalNullRTGPosted: number;\n    totalIMPSPosted: number | string;\n    totalNullIMPSPosted: number;\n    totalAUR: number | string;\n    totalAURTG: number | string;\n    totalAUIMPS: number | string;\n    totalNullAUR: number;\n    totalNullAURTG: number;\n    totalNullAUIMPS: number;\n    totalNormalizedRTGBooked: number;\n    totalNormalizedIMPSBooked: number;\n    totalNormalizedRTGPosted: number;\n    totalNormalizedIMPSPosted: number;\n    totalRtgProjected: number | string;\n    totalImpsProjected: number | string;\n    constructor(data: any, currencyPipe: CurrencyPipe) {\n        this.totalSpots = 0;\n        this.totalRate = 0;\n        this.totalRTGOrdered = 0;\n        this.totalIMPSOrdered = 0;\n        this.totalRTGPosted = 0;\n        this.totalIMPSPosted = 0;\n        this.totalNormalizedRTGBooked = 0;\n        this.totalNormalizedIMPSBooked = 0;\n        this.totalNullRTGOrdered = 0;\n        this.totalNullRTGPosted = 0;\n        this.totalNullRate = 0;\n        this.totalNormalizedRTGPosted = 0;\n        this.totalNullIMPSOrdered = 0;\n        this.totalNullIMPSPosted = 0;\n        this.totalNormalizedIMPSPosted = 0;\n        this.totalAUR = 0;\n        this.totalAURTG = 0;\n        this.totalAUIMPS = 0;\n        this.totalRtgProjected = 0;\n        this.totalImpsProjected = 0;\n\n        let totalNullRtgProjected: number = 0;\n        let totalNullImpsProjected: number = 0;\n\n        data.forEach((group: any) => {\n            group.Spots.forEach((row: any) => {\n                if (row.IsPreempted) {\n                    this.totalSpots += 1;\n                    if (row.Rate == null || row.Rate === \"-\") {\n                        this.totalNullRate += 1;\n                    } else {\n                        this.totalRate += row.Rate;\n                    }\n                    if (row.ActualOrderedRatings == null || row.ActualOrderedRatings === \"-\") {\n                        this.totalNullRTGOrdered += 1;\n                    } else {\n                        this.totalRTGOrdered += row.ActualOrderedRatings;\n                    }\n                    if (row.ActualOrderedImpressions == null || row.ActualOrderedImpressions === \"-\") {\n                        this.totalNullIMPSOrdered += 1;\n                    } else {\n                        this.totalIMPSOrdered += row.ActualOrderedImpressions;\n                    }\n                    if (row.ActualPostedRatings == null || row.ActualPostedRatings === \"-\") {\n                        this.totalNullRTGPosted += 1;\n                    } else {\n                        this.totalRTGPosted += row.ActualPostedRatings;\n                    }\n                    if (row.ActualPostedImpressions == null || row.ActualPostedImpressions === \"-\") {\n                        this.totalNullIMPSPosted += 1;\n                    } else {\n                        this.totalIMPSPosted += row.ActualPostedImpressions;\n                    }\n                    this.totalImpsProjected =\n                        row.ActualProjectedImpressions === \"-\"\n                            ? this.totalImpsProjected\n                            : this.totalImpsProjected + row.ActualProjectedImpressions;\n                    this.totalRtgProjected =\n                        row.ActualProjectedRatings === \"-\"\n                            ? this.totalRtgProjected\n                            : this.totalRtgProjected + row.ActualProjectedRatings;\n\n                    if (row.ProjectedRatings === \"-\") {\n                        totalNullRtgProjected += 1;\n                    } else {\n                        this.totalRtgProjected += row.ProjectedRatings;\n                    }\n\n                    if (row.ProjectedImpressions === \"-\") {\n                        totalNullImpsProjected += 1;\n                    } else {\n                        this.totalImpsProjected += row.ProjectedImpressions;\n                    }\n\n                    if (row.WeeklyAUR === \"-\") {\n                        this.totalNullAUR += 1;\n                    } else {\n                        this.totalAUR += row.WeeklyAUR;\n                    }\n\n                    if (row.WeeklyAURatings === \"-\") {\n                        this.totalNullAURTG += 1;\n                    } else {\n                        this.totalAURTG += row.WeeklyAURatings;\n                    }\n\n                    if (row.WeeklyAUImpressions === \"-\") {\n                        this.totalNullAUIMPS += 1;\n                    } else {\n                        this.totalAUIMPS += row.WeeklyAUImpressions;\n                    }\n\n                    if (row.DemoNormalizedOrderedRatings && row.DemoNormalizedOrderedRatings !== \"-\") {\n                        this.totalNormalizedRTGBooked += +row.DemoNormalizedOrderedRatings;\n                    }\n\n                    if (row.DemoNormalizedOrderedImpressions && row.DemoNormalizedOrderedImpressions !== \"-\") {\n                        this.totalNormalizedIMPSBooked += +row.DemoNormalizedOrderedImpressions;\n                    }\n\n                    if (row.DemoNormalizedPostedRatings && row.DemoNormalizedPostedRatings !== \"-\") {\n                        this.totalNormalizedRTGPosted += row.DemoNormalizedPostedRatings;\n                    }\n\n                    if (row.DemoNormalizedPostedImpressions && row.DemoNormalizedPostedImpressions !== \"-\") {\n                        this.totalNormalizedIMPSPosted += row.DemoNormalizedPostedImpressions;\n                    }\n                }\n            });\n        });\n\n        this.totalRate =\n            this.totalNullRate === this.totalSpots\n                ? \"-\"\n                : currencyPipe.transform(Math.round(this.totalRate * 100) / 100, \"USD\", \"symbol\", \"1.0-2\");\n        this.totalRTGOrdered =\n            this.totalNullRTGOrdered === this.totalSpots\n                ? \"-\"\n                : (Math.round(this.totalRTGOrdered * 100) / 100).toLocaleString(\"en-us\", {\n                      minimumFractionDigits: 0,\n                      maximumFractionDigits: 2,\n                  });\n        this.totalIMPSOrdered =\n            this.totalNullIMPSOrdered === this.totalSpots\n                ? \"-\"\n                : (Math.round(this.totalIMPSOrdered * 100) / 100).toLocaleString(\"en-us\", {\n                      minimumFractionDigits: 0,\n                      maximumFractionDigits: 1,\n                  });\n        this.totalRTGPosted =\n            this.totalNullRTGPosted === this.totalSpots\n                ? \"-\"\n                : (Math.round(this.totalRTGPosted * 100) / 100).toLocaleString(\"en-us\", {\n                      minimumFractionDigits: 0,\n                      maximumFractionDigits: 2,\n                  });\n        this.totalIMPSPosted =\n            this.totalNullIMPSPosted === this.totalSpots\n                ? \"-\"\n                : (Math.round(this.totalIMPSPosted * 100) / 100).toLocaleString(\"en-us\", {\n                      minimumFractionDigits: 0,\n                      maximumFractionDigits: 1,\n                  });\n        this.totalAUR =\n            this.totalNullAUR === this.totalSpots\n                ? \"-\"\n                : currencyPipe.transform(Math.round(+this.totalAUR * 100) / 100, \"USD\", \"symbol\", \"1.0-2\");\n        this.totalAURTG =\n            this.totalNullAURTG === this.totalSpots\n                ? \"-\"\n                : (Math.round(+this.totalAURTG * 100) / 100).toLocaleString(\"en-us\", {\n                      minimumFractionDigits: 0,\n                      maximumFractionDigits: 2,\n                  });\n        this.totalAUIMPS =\n            this.totalNullAUIMPS === this.totalSpots\n                ? \"-\"\n                : (Math.round(+this.totalAUIMPS * 100) / 100).toLocaleString(\"en-us\", {\n                      minimumFractionDigits: 0,\n                      maximumFractionDigits: 1,\n                  });\n\n        this.totalRtgProjected =\n            totalNullRtgProjected === this.totalSpots\n                ? \"-\"\n                : (Math.round(this.totalRtgProjected * 100) / 100).toLocaleString(\"en-us\", {\n                      minimumFractionDigits: 0,\n                      maximumFractionDigits: 2,\n                  });\n        this.totalImpsProjected =\n            totalNullImpsProjected === this.totalSpots\n                ? \"-\"\n                : (Math.round(this.totalImpsProjected * 100) / 100).toLocaleString(\"en-us\", {\n                      minimumFractionDigits: 0,\n                      maximumFractionDigits: 2,\n                  });\n    }\n}\n\nexport interface ISpotData {\n    SpotId: string;\n    LineNumber: number;\n    SpotNumber: number;\n    Origin: string;\n    Status: string;\n    AirStatus: string;\n    AirDate: string;\n    AiredProgram: string;\n    SeeMG: string;\n    MGFor: string;\n    Length: string;\n    IsciCode: string;\n    Daypart: string;\n    InventoryCode: string;\n    Program: string;\n    WeekNumber: number;\n    WeekStartDate: string;\n    SpotDate: string;\n    AirDateAndTime: string;\n    ScheduledDay: string;\n    Rate: number;\n    RevenueClass: string;\n    StartTime: string;\n    EndTime: string;\n    StartTimeForFilter: string;\n    EndTimeForFilter: string;\n    Metric: string;\n    OrderedRatingsOrImpressions: number;\n    PostedRatingsOrImpressions: number;\n    BuyerProgramName: string;\n    BuyerLine: number;\n    WeeklyAUR: number;\n    WeeklyAURatingOrImpressions: number;\n    IsAired: boolean;\n    IsPosted: boolean;\n    IsLURViolated: boolean;\n    IsMarkForMakeGood: boolean;\n    IsMarkForCredit: boolean;\n    IsBuyerRequestedForCredit: boolean;\n    IsSellerRequestedForCredit: boolean;\n    AllowUserToMarkForMakeGood: boolean;\n    AllowUserToMarkForCredit: boolean;\n    AllowUserToMarkForMakeGoodBeforeMarkingSpot: boolean;\n    AllowUserToMarkForCreditBeforeMarkingSpot: boolean;\n    AllowUserToUndoMarkForMakeGood: boolean;\n    AllowUserToUndoMarkForCredit: boolean;\n    StatusBeforeMarkingSpot: string;\n    IsPreempted: boolean;\n    DisplaytSpotStatusBI?: string;\n}\n\nexport interface IMarkForCreditOrMgRequest {\n    OrderId: string;\n    StationId: number;\n    Spots: string[];\n}\n\nexport interface ISpotQuarterFilter {\n    IsAllSpotsSelected: boolean;\n    StartDate: string;\n    EndDate: string;\n    SelectedCalendarType: TypeOfCalendar;\n}\nexport interface ISpotsRequest {\n    OrderId: string;\n    StationId: number;\n    IsAllSpotsSelected: boolean;\n    IsCurrentQuarterSelected: boolean;\n    IsNormalized?: boolean;\n    StartDate: string;\n    EndDate: string;\n    StandardDemoId?: number;\n}\n\nexport interface OrderInfoForSpotDetails {\n    campaignStartDate: string;\n    campaignEndDate: string;\n    is_DR_order?: boolean;\n    orderId: string;\n    channelId: string;\n    orderFlightStatus: string;\n    orderType: string;\n}\n\nexport type QuarterFilter = { startDate: string; endDate: string; isAll: boolean };\nexport type MgCreditType = \"Credit\" | \"MakeGood\";\n","// Angular import statements\nimport { AsyncPipe, CurrencyPipe, NgClass, NgFor, NgIf } from \"@angular/common\";\nimport {\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    EventEmitter,\n    Inject,\n    Input,\n    OnChanges,\n    OnDestroy,\n    Output,\n    SimpleChanges,\n    TemplateRef,\n    ViewChild,\n} from \"@angular/core\";\nimport { Router } from \"@angular/router\";\nimport {\n    AnnaCoreModule,\n    AnnaFilterService,\n    AnnaGlobalConfigService,\n    AnnaGtHelperService,\n    AnnaNonEditableGenericTableComponent,\n    AnnaPersistingFilterService,\n    AnnaSortService,\n    ButtonToggleComponent,\n    ButtonToggleOptions,\n    ICustomSingleSelect,\n    IGtGeneralConfig,\n    IGtTableHeader,\n    INgSelectSettings,\n    ITotalRowInfo,\n    TableClassNameConstant,\n} from \"@annalib/anna-core\";\nimport {\n    AnnaDesignComponentsLibModule,\n    CalendarQuarterYearFilterService,\n    IdTextForSingleSelect,\n    NormalizedData,\n    OrderContainerFilterModal,\n    PeriodSelectionPopUp,\n    StartDateConsideringFactor,\n    TypeOfCalendar,\n} from \"@annalib/anna-design-components-lib\";\nimport { OrderMetrics, PrimaryOrderPanelService } from \"@annalib/anna-feature-shared-lib\";\n// Third party import statements\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\nimport dayjs from \"dayjs\";\nimport { cloneDeep, isEqual, sortBy } from \"lodash-es\";\nimport { NgxSkeletonLoaderModule } from \"ngx-skeleton-loader\";\nimport { Subject } from \"rxjs\";\n\nimport { DateAndAllKeyType } from \"../audience-performance/models/audiencePerformance.model\";\nimport {\n    MeasurementAgencyInOrderSummary,\n    PrimaryDetails,\n} from \"../primary-order-panel/models/primary-order-panel.model\";\nimport {\n    ISpotDetailsBackendService,\n    SPOT_DETAILS_PAGE_SERVICE_TOKEN,\n} from \"./config/spot-details-backend-service.token\";\n// User defined import statements\nimport { EasyFilterConstants, StatusConstants } from \"./constants/spot-details.constants\";\nimport { ESTIMATEPRIORITIES } from \"./models/generic-spot-details.model\";\nimport {\n    ICustomizableColumnsForSpotDetails,\n    IGroupData,\n    IGroupDataPerQuarter,\n    IMarkForCreditOrMgRequest,\n    ISpotData,\n    ISpotDataPerQuarter,\n    ISpotQuarterFilter,\n    MgCreditType,\n    SPOTDETAILVIEWS,\n    SpotTableData,\n    TotalRowForSpotDetails,\n    TotalRowForSpotDetailsForGroupedData,\n    UserTypeEnum,\n} from \"./models/spot-details.model\";\nimport { GenericSpotDetailsService } from \"./services/generic-spot-details.service\";\nimport { SpotDetailsService } from \"./services/spot-details.service\";\n\n@Component({\n    selector: \"anna-feature-lib-spot-details\",\n    templateUrl: \"./spot-details.component.html\",\n    styleUrls: [\"./spot-details.component.scss\"],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [\n        NgIf,\n        AnnaDesignComponentsLibModule,\n        NgFor,\n        NgClass,\n        AnnaCoreModule,\n        NgxSkeletonLoaderModule,\n        ButtonToggleComponent,\n        AsyncPipe,\n    ],\n})\nexport class SpotDetailsComponent implements OnChanges, OnDestroy {\n    @Input() showNormalizationToggle: boolean;\n    @Input() primaryOrderData: PrimaryDetails;\n    @Input() spotData: ISpotData[] = [];\n    @Input() groupedData: IGroupData[] = [];\n    @Input() tableHeaders: IGtTableHeader[];\n    @Input() showMarkForCreditBtn: boolean;\n    @Input() showMarkForMakegoodBtn: boolean;\n    @Input() showCheckboxColumn: boolean = true;\n    @Input() showAUR: boolean = false;\n    @Input() showSkeletonLoading: boolean;\n    @Input() filtersAreAlreadyApplied: boolean;\n    @Input() filtersFromRoute: any;\n    @Input() persistingFilterPeriodData: PeriodSelectionPopUp;\n    @Input() gtGeneralConfig: IGtGeneralConfig;\n    @Input() queryParams: any;\n    @Input() normalizationDemographics: IdTextForSingleSelect[];\n    @Input() selectedNormalization: NormalizedData;\n    @Input() backdate: string;\n    @Input() showCleaerdSpotsAndAmount: boolean = true;\n    @Input() showLURVoilationInfo: boolean = true;\n    @Input() isCandidateViolation: boolean = true;\n    @Input() showRateRtgOrImpsTooltip: boolean = true;\n    @Input() APIFailed: boolean = false;\n    @Input() orderDefaultMetricType: OrderMetrics = null;\n    @Input() estimatePriorities: string[] = [];\n    @Input() showSellerViewToggle: boolean = false;\n    @Input() showBuyerViewToggle: boolean = false;\n    @Input() defaultView: SPOTDETAILVIEWS;\n    @Input() selectedView: SPOTDETAILVIEWS;\n    @Input() userType: UserTypeEnum = UserTypeEnum.SELLER;\n\n    @Output() viewToggled = new EventEmitter<SPOTDETAILVIEWS>();\n    @Output() fetchDataFromBackend = new EventEmitter<ISpotQuarterFilter>();\n    @Output() periodSelectionChanged = new EventEmitter<ISpotQuarterFilter>();\n    @Output() anyFilterAppliedToTable = new EventEmitter<ISpotQuarterFilter>();\n    @Output() resetFilterOutput = new EventEmitter<ISpotQuarterFilter>();\n    @Output() normalizationToggledOrDemoSelectionChanged = new EventEmitter<NormalizedData>();\n    @Output() metricTypeDropdownChanged = new EventEmitter<string>();\n    @Output() initialQuarterStartEndDateEmitter = new EventEmitter();\n\n    // orderId: string;\n    // stationId: string;\n    gtDimension: {\n        rowHeight: number;\n        headerHeight: number;\n        dataOnTopHeight: number;\n        marginFromBottom: number;\n    } = { rowHeight: 40, headerHeight: 40, dataOnTopHeight: null, marginFromBottom: 0 };\n\n    selectedMetric: { id: number; text: OrderMetrics } = null;\n    orderMetricsListForDropdown: { id: number; text: OrderMetrics }[];\n    metricDropdownConfig: ICustomSingleSelect;\n\n    ngbModalOptions: any;\n    // confirmationCreditOrMgModalReference: any;\n    customizeColumnsModalReference: any;\n\n    selectedFilterStartDate: string;\n    selectedFilterEndDate: string;\n    loggedInUserEmail: string;\n    periodModalTitle: string;\n    selectedStartDate: string;\n    selectedEndDate: string;\n    periodModalMessage: string;\n    initialAppliedEasyFilter: string;\n    // mgOrCredit: MgCreditType;\n    undoSpotId: string;\n    disablePeriodSelection: boolean = false;\n    flightPeriodData: { statDate: string; endDate: string };\n\n    isUndo: boolean;\n    // undoCreditedSpots: boolean;\n    // undoMgSpots: boolean;\n    isRevertCustomizedColumns: boolean;\n    disableCustomizeColumnsBtn: boolean;\n    selectedFilterIsAllSpot: boolean;\n    buyerRequestedSpotExists: boolean;\n    isNoData: boolean = false;\n    disableClearAllBtn: boolean = true;\n    // spotsSelectedToMarkForMg: boolean = false;\n    // spotsSelectedToMarkForCredit: boolean = false;\n\n    spotDataCache: ISpotDataPerQuarter[] = [];\n    groupedSpotsDataCache: IGroupDataPerQuarter[] = [];\n\n    totalRowInfo: ITotalRowInfo[];\n    tableData: SpotTableData[] = [];\n    tableDataCloned: SpotTableData[] = [];\n    tableHeadersCloned: IGtTableHeader[];\n    easyFilterNames: string[];\n    groupedTableData: any[];\n\n    noDataWidth: string = \"55%\";\n    ngSelectConfig: INgSelectSettings;\n\n    easyFilterMap: Map<string, { active: boolean; disabled: boolean }>;\n    customizableColumnsList: ICustomizableColumnsForSpotDetails[];\n    customizableColumnsListCloned: ICustomizableColumnsForSpotDetails[];\n    quarterFilterConstant = OrderContainerFilterModal;\n    startDateConsideringFactor: StartDateConsideringFactor;\n    enabledFiltersCount: number;\n    genericTableClass: string = \"spot-details-table\";\n    easyFilterConstants = EasyFilterConstants;\n\n    // @ViewChild('confirmationCreditOrMgModal') confirmationCreditOrMgModal: TemplateRef<any>;\n    @ViewChild(\"customizeColumnsModal\") customizeColumnsModal: TemplateRef<any>;\n    @ViewChild(AnnaNonEditableGenericTableComponent) nonEditableGTComponent: AnnaNonEditableGenericTableComponent;\n    protected ngUnsubscribe: Subject<void> = new Subject<void>();\n    initialNormalizationVal: NormalizedData;\n    selectedCalendarType: TypeOfCalendar;\n    showLateRunsEasyFilter: boolean = false;\n    buttonToggleOptions: ButtonToggleOptions[] = [];\n    measurementAgency: MeasurementAgencyInOrderSummary;\n\n    constructor(\n        private router: Router,\n        private modalService: NgbModal,\n        private cdRef: ChangeDetectorRef,\n        private annaSortService: AnnaSortService,\n        public annaFilterService: AnnaFilterService,\n        private annaGlobalConfig: AnnaGlobalConfigService,\n        private quarterFilterService: CalendarQuarterYearFilterService,\n        private annaSpotDetailsService: SpotDetailsService,\n        private annaGtService: AnnaGtHelperService,\n        protected primaryOrderPanelService: PrimaryOrderPanelService,\n        @Inject(SPOT_DETAILS_PAGE_SERVICE_TOKEN)\n        public consumingProjectSpotDetailsBackendService: ISpotDetailsBackendService,\n        private persistingFilterService: AnnaPersistingFilterService,\n        private currencyPipe: CurrencyPipe,\n    ) {\n        this.setMetricDropdownConfig();\n        this.settingConfig();\n    }\n\n    ngOnChanges(changes: SimpleChanges) {\n        if (\n            (changes.orderDefaultMetricType?.currentValue || changes.filtersFromRoute?.currentValue) &&\n            !this.annaSpotDetailsService.filtersAppliedRouteChange\n        ) {\n            const metricTypeToApply = this.filtersFromRoute?.metricType\n                ? JSON.parse(this.filtersFromRoute?.metricType)\n                : this.orderDefaultMetricType;\n            if (metricTypeToApply) {\n                this.selectedMetric =\n                    metricTypeToApply === OrderMetrics.imps\n                        ? this.orderMetricsListForDropdown[1]\n                        : this.orderMetricsListForDropdown[0];\n                this.metricTypeDropdownChanged.emit(this.selectedMetric?.text);\n                this.resetTableHeadersBasedOnNormalizationValue(\n                    this.selectedNormalization && this.selectedNormalization.toggle,\n                );\n            }\n        }\n\n        this.annaSpotDetailsService.filtersAppliedRouteChange = false;\n        if (changes.tableHeaders && changes.tableHeaders.currentValue) {\n            this.tableHeadersCloned = cloneDeep(this.tableHeaders);\n        }\n        if (\n            changes.backdate &&\n            changes.backdate.currentValue &&\n            changes.backdate.currentValue !== changes.backdate.previousValue &&\n            this.tableData\n        ) {\n            this.enableOrDisableEasyFilters(this.tableData, true);\n        }\n        if (changes.spotData && changes.spotData.currentValue && changes.spotData.currentValue.length) {\n            const spotsRequestPayload = this.getFilterPaylod();\n            this.processSpotAndGroupedSpotData(spotsRequestPayload);\n            this.metricTypeDropdownChanged.emit(this.selectedMetric?.text);\n            this.resetTableHeadersBasedOnNormalizationValue(\n                this.selectedNormalization && this.selectedNormalization.toggle,\n            );\n        }\n        if (!this.showSkeletonLoading && !this.spotData.length) {\n            this.noDataCase();\n        }\n        if (changes.primaryOrderData && changes.primaryOrderData.currentValue) {\n            this.intialiseData();\n            this.disablePeriodSelection = this.primaryOrderData.orderInfo.orderType === \"UD (Liability set)\";\n            this.showLateRunsEasyFilter =\n                this.primaryOrderData.orderInfo.orderCategory === \"TV Revenue\" && this.userType === UserTypeEnum.SELLER;\n            this.measurementAgency = this.primaryOrderData.orderInfo.measurementAgency;\n        }\n        if (!this.showSkeletonLoading && !this.spotData.length) {\n            this.noDataCase();\n        }\n        if (changes.selectedNormalization && changes.selectedNormalization.currentValue) {\n            this.resetTableHeadersBasedOnNormalizationValue(\n                this.selectedNormalization && this.selectedNormalization.toggle,\n            );\n        }\n        // if (changes['isCandidateViolation'] && changes['isCandidateViolation'].currentValue) {\n        //   this.initializeEasyFilterMap(this.tableData);\n        // }\n        if (this.showSellerViewToggle) {\n            const sellerViewIndex = this.buttonToggleOptions.findIndex((option) => option.value === \"SellerView\");\n            if (sellerViewIndex === -1) {\n                this.buttonToggleOptions.push({\n                    label: \"Seller View\",\n                    value: \"SellerView\",\n                    disabled: false,\n                });\n            }\n\n            // check if this should be disabled if !showBuyerLine\n        }\n\n        if (this.showBuyerViewToggle) {\n            const buyerViewIndex = this.buttonToggleOptions.findIndex((option) => option.value === \"BuyerView\");\n            if (buyerViewIndex === -1) {\n                this.buttonToggleOptions.push({ label: \"Buyer View\", value: \"BuyerView\", disabled: false });\n            }\n        }\n    }\n\n    // setGTDimensions() {\n    //   this.gtDimension = {\n    //     ...this.gtDimension,\n    //     rowHeight: 50,\n    //     dataOnTopHeight: 200\n    //   };\n    // }\n\n    intialiseData() {\n        // this.annaFilterService.resetFilterSortActiveStatus = false;\n        this.flightPeriodData = {\n            statDate: this.primaryOrderData.campaignStartDate,\n            endDate: this.primaryOrderData.campaignEndDate,\n        };\n        // this.undoMgSpots = this.undoCreditedSpots = this.spotsSelectedToMarkForCredit = this.spotsSelectedToMarkForMg = false;\n        this.startDateConsideringFactor =\n            this.primaryOrderData.orderInfo.orderFlightStatus === \"COMPLETED\"\n                ? StartDateConsideringFactor.FLIGHT_END_DATE\n                : StartDateConsideringFactor.FLIGHT_START_DATE;\n        this.initialNormalizationVal = {\n            toggle: false,\n            demoId: null,\n        };\n    }\n\n    processSpotAndGroupedSpotData(spotsRequestPayload: ISpotQuarterFilter) {\n        this.processGroupedSpotsDataResponse(spotsRequestPayload);\n        this.processSpotDataResponse(spotsRequestPayload);\n\n        if (this.filtersAreAlreadyApplied) {\n            if (this.annaFilterService.tooltipSelectedMap.has(EasyFilterConstants.GroupedPEAndMG)) {\n                this.filterGroupData();\n            } else {\n                const easyBtnFilteredData = this.getEasyBtnFilteredData(this.tableDataCloned, \"\");\n                let keyToSkip = \"\";\n                this.annaFilterService.tooltipSelectedMap.forEach((value, key) => {\n                    if (\n                        this.annaSpotDetailsService.easyFiltersInSpotDetails.has(key) ||\n                        this.annaSpotDetailsService.easyFiltersKeysInSpotDetails.has(key)\n                    ) {\n                        keyToSkip = key;\n                    }\n                });\n\n                this.tableData =\n                    easyBtnFilteredData != null\n                        ? cloneDeep(this.annaFilterService.filterData(easyBtnFilteredData, keyToSkip))\n                        : cloneDeep(this.annaFilterService.filterData(this.tableDataCloned, \"\"));\n                this.annaSortService.noSortingAppliedData = cloneDeep(this.tableData);\n                setTimeout(() => {\n                    this.annaSortService.columnSortState = this.filtersFromRoute?.sortState\n                        ? new Map(JSON.parse(this.filtersFromRoute?.sortState))\n                        : new Map();\n                    this.callSort();\n                    this.annaFilterService.updateStateOfAllTheKeys(this.annaSortService.columnSortState);\n                    this.nonEditableGTComponent.detectChanges();\n                }, 0);\n                if (\n                    !this.primaryOrderData.orderInfo?.isDrOrder &&\n                    !this.easyFilterMap.get(EasyFilterConstants.Booked).disabled &&\n                    this.filtersFromRoute?.easyFilters !== EasyFilterConstants.UnSelectedBooked\n                ) {\n                    this.initialAppliedEasyFilter = EasyFilterConstants.Booked;\n                }\n                // if(this.filtersFromRoute?.easyFilters === EasyFilterConstants.UnSelectedBooked){\n                //     this.easyFilterClicked(EasyFilterConstants.Booked);\n                // }\n                // this.tableData = this.annaSortService.callSort(this.tableData);\n                this.enableOrDisableUndoAllMarkForCreditAndMg();\n                this.enableOrDisableMarkForCreditAndMg();\n                this.enableOrDisableHeaderCheckbox();\n                this.enableOrDisableClearAllBtn();\n                this.createTotalRow(this.tableData);\n                this.cdRef.detectChanges();\n            }\n        }\n    }\n    initializePeriodFilter(startEndDateObj: { startDate: string; endDate: string }) {\n        this.initialQuarterStartEndDateEmitter.emit(startEndDateObj);\n    }\n    setSelectedFilterValue(value: DateAndAllKeyType) {\n        this.selectedFilterIsAllSpot = value.isEntireFlightPeriod;\n        this.selectedFilterStartDate = value.startDate;\n        this.selectedFilterEndDate = value.endDate;\n        this.selectedCalendarType = value.selectedCalendarType;\n    }\n\n    getFilterPaylod(): ISpotQuarterFilter {\n        return {\n            StartDate: this.selectedFilterStartDate,\n            EndDate: this.selectedFilterEndDate,\n            IsAllSpotsSelected: this.selectedFilterIsAllSpot,\n            SelectedCalendarType: this.selectedCalendarType,\n        };\n    }\n\n    initializeVariables() {\n        // this.orderId = this.orderInfo.orderId;\n        // this.stationId = this.orderInfo.channelId;\n        // this.undoMgSpots = this.undoCreditedSpots = this.spotsSelectedToMarkForCredit = this.spotsSelectedToMarkForMg = false;\n        this.spotDataCache = [];\n        this.groupedSpotsDataCache = [];\n        this.isNoData = false;\n    }\n\n    setGtGeneralConfig() {\n        this.gtGeneralConfig.totalRow = true;\n        this.gtGeneralConfig.component = \"SPOTDETAILS\";\n        this.gtGeneralConfig.verticalScrollOffsetForFilterTooltip = 230;\n\n        this.gtGeneralConfig.multiWeekPickerConfig = { ...this.annaGlobalConfig.defaultWeekCalendarConfig };\n        this.gtGeneralConfig.multiWeekPickerConfig.numberOfMonthsToEnableInPast = 6;\n        this.gtGeneralConfig.multiWeekPickerConfig.selectMultipleWeeks = true;\n        this.gtGeneralConfig.multiWeekPickerConfig.maxWeeksToShowWithRemainingCount = 3;\n        this.gtGeneralConfig.multiWeekPickerConfig.maxWeeksToSelect = 13;\n        this.gtGeneralConfig.multiWeekPickerConfig.showAsDropdown = false;\n        // disable table header checkbox if no spot is selectable\n        this.enableOrDisableHeaderCheckbox();\n\n        // change header to IMP\n        // if (this.tableData[0].Metric === \"CPM\") {\n        //   let changedTableHeaders = cloneDeep(this.tableHeaders);\n        //   let i = changedTableHeaders.findIndex(obj => obj.headerInfo[0].name === TableColumnNameConstants.BookedRating);\n        //   if (i !== -1) {\n        //     changedTableHeaders[i].headerInfo[0].name = TableColumnNameConstants.BookedIMPS;\n        //     i = changedTableHeaders.findIndex(obj => obj.headerInfo[0].name === TableColumnNameConstants.PostedRating);\n        //     changedTableHeaders[i].headerInfo[0].name = TableColumnNameConstants.PostedIMPS;\n\n        //     this.tableHeaders = cloneDeep(changedTableHeaders);\n        //   }\n        //   // i = this.customizableColumnsList.findIndex(obj => obj.objectKey === \"OrderedRatingsOrImpressions\");\n        //   // if (i !== -1) {\n        //   //   this.customizableColumnsList[i].name = CustomizableColumnNameConstants.ImpressionsOrdered;\n        //   //   i = this.customizableColumnsList.findIndex(obj => obj.objectKey === \"PostedRatingsOrImpressions\");\n        //   //   this.customizableColumnsList[i].name = CustomizableColumnNameConstants.ImpressionsPosted;\n        //   // }\n        //   // i = this.customizableColumnsList.findIndex(obj => obj.name === CustomizableColumnNameConstants.AURating);\n        //   // if (i !== -1) {\n        //   //   this.customizableColumnsList[i].name = CustomizableColumnNameConstants.AUImpression;\n        //   // }\n\n        //   // // this.tableHeadersCloned = cloneDeep(this.tableHeaders);\n        //   // this.customizableColumnsListCloned = cloneDeep(this.customizableColumnsList);\n        // }\n        // else {\n        // this.tableHeadersCloned = cloneDeep(this.tableHeaders);\n        // this.customizableColumnsListCloned = this.annaSpotDetailsService.getCustomizableColumnsListForSpotDetails(this.showAUR);\n        // }\n    }\n\n    enableOrDisableHeaderCheckbox() {\n        this.gtGeneralConfig.disableHeaderCheckbox =\n            this.tableData.findIndex(\n                (obj) =>\n                    obj.SpotStatus !== StatusConstants.MarkedForCredit &&\n                    obj.SpotStatus !== StatusConstants.MarkedForMG &&\n                    (obj.AllowUserToMarkForCredit || obj.AllowUserToMarkForMakeGood),\n            ) === -1;\n    }\n\n    initializeCustomizeColumns() {\n        // if (this.filtersAreAlreadyApplied) {\n        //   this.customizableColumnsList = this.filtersFromRoute.selectedColumns;\n        // }\n        // else {\n        this.customizableColumnsList = this.annaSpotDetailsService.getCustomizableColumnsListForSpotDetails(\n            this.showAUR,\n        );\n        this.customizableColumnsListCloned = this.annaSpotDetailsService.getCustomizableColumnsListForSpotDetails(\n            this.showAUR,\n        );\n        // }\n        this.tableHeaders = cloneDeep(this.tableHeaders);\n        this.customizableColumnsList.forEach((column) => {\n            if (!column.isFixed && column.isChecked) {\n                const i = this.tableHeaders.findIndex((obj) => obj.headerInfo[0].objectKey === column.objectKey);\n                this.tableHeaders[i].visible = true;\n            }\n        });\n    }\n\n    initializeEasyFilterMap(tableData: SpotTableData[]) {\n        this.easyFilterNames = this.annaSpotDetailsService.getEasyFilterNames(\n            this.showLURVoilationInfo,\n            this.isCandidateViolation,\n            this.selectedView,\n            this.userType === UserTypeEnum.BUYER,\n        );\n        this.enableOrDisableEasyFilters(tableData, true);\n\n        if (\n            this.filtersAreAlreadyApplied &&\n            this.filtersFromRoute &&\n            this.filtersFromRoute.easyFilters &&\n            this.filtersFromRoute.easyFilters !== EasyFilterConstants.UnSelectedBooked\n        ) {\n            const val = this.easyFilterMap.get(this.filtersFromRoute.easyFilters);\n            val.active = true;\n            this.easyFilterMap.set(this.filtersFromRoute.easyFilters, val);\n        }\n    }\n\n    enableOrDisableEasyFilters(tableData: SpotTableData[], newMap: boolean) {\n        this.easyFilterNames = this.annaSpotDetailsService.getEasyFilterNames(\n            this.showLURVoilationInfo,\n            this.isCandidateViolation,\n            this.selectedView,\n            this.userType === UserTypeEnum.BUYER,\n        );\n\n        if (newMap) {\n            this.easyFilterMap = new Map();\n        }\n\n        const today = dayjs(GenericSpotDetailsService.backDate, \"YYYY-MM-DD\").format(\"MM/DD/YYYY\");\n        let isActive: boolean = false;\n        const easyFiltersEnabledMap: Map<string, boolean> = new Map();\n        const easyFiltersActiveMap: Map<string, boolean> = new Map();\n        let easyFiltersEnabledValues: Set<boolean> = new Set();\n        // disabling all inactive filters by default\n        this.easyFilterNames.forEach((filter) => {\n            if (filter !== EasyFilterConstants.GroupedPEAndMG) {\n                easyFiltersEnabledMap.set(filter, false);\n            }\n            if (newMap) {\n                isActive = false;\n            } else {\n                isActive = this.easyFilterMap.has(filter) ? this.easyFilterMap.get(filter).active : false;\n            }\n            if (!isActive) {\n                this.easyFilterMap.set(filter, { active: isActive, disabled: true });\n            } else {\n                this.easyFilterMap.set(filter, { active: isActive, disabled: false });\n            }\n            easyFiltersActiveMap.set(filter, isActive);\n        });\n        // enabling filters if data for it is present\n        tableData.forEach((data) => {\n            easyFiltersEnabledValues = new Set(easyFiltersEnabledMap.values());\n            if (!easyFiltersEnabledValues.has(false)) {\n                return;\n            }\n\n            if (\n                [\n                    StatusConstants.Placed,\n                    StatusConstants.Displaced,\n                    StatusConstants.Late,\n                    StatusConstants.Preempted,\n                    StatusConstants.PreemptedBonus,\n                    StatusConstants.PreemptedDR,\n                    StatusConstants.PreemptedPaidProgram,\n                    StatusConstants.PreemptedStationUtilized,\n                    StatusConstants.PreemptedNoCharge,\n                    StatusConstants.NonSpot,\n                    StatusConstants.Aired,\n                ].includes(data.SpotStatus)\n            ) {\n                this.easyFilterMap.set(EasyFilterConstants.Booked, {\n                    active: easyFiltersActiveMap.get(EasyFilterConstants.Booked),\n                    disabled: false,\n                });\n                easyFiltersEnabledMap.set(EasyFilterConstants.Booked, true);\n            }\n            // if (\n            //     dayjs(data.AirDate, 'MM/DD/YYYY').isBefore(today) &&\n            //     !this.easyFilterMap.get(EasyFilterConstants.Booked).disabled\n            // ) {\n            //     this.easyFilterMap.set(EasyFilterConstants.BookedToDate, {\n            //         active: easyFiltersActiveMap.get(EasyFilterConstants.BookedToDate),\n            //         disabled: false,\n            //     });\n            //     easyFiltersEnabledMap.set(EasyFilterConstants.BookedToDate, true);\n            // }\n            // if ([StatusConstants.PreemptedAndMadeGood, StatusConstants.Credited,\n            //   StatusConstants.Unresolved, StatusConstants.Removed].includes(data.Status)) {\n            //     this.easyFilterMap.set(EasyFilterConstants.Removed, { active: easyFiltersActiveMap.get(EasyFilterConstants.Removed), disabled: false });\n            //     easyFiltersEnabledMap.set(EasyFilterConstants.Removed, true);\n            // }\n            // if (data.Status === StatusConstants.Late) {\n            //   this.easyFilterMap.set(EasyFilterConstants.Late, { active: easyFiltersActiveMap.get(EasyFilterConstants.Late), disabled: false });\n            //   easyFiltersEnabledMap.set(EasyFilterConstants.Late, true);\n            // }\n            if (\n                [StatusConstants.Placed].includes(data.SpotStatus) &&\n                dayjs(data.AirDate, \"MM/DD/YYYY\").isSameOrAfter(today)\n            ) {\n                this.easyFilterMap.set(EasyFilterConstants.Scheduled, {\n                    active: easyFiltersActiveMap.get(EasyFilterConstants.Scheduled),\n                    disabled: false,\n                });\n                easyFiltersEnabledMap.set(EasyFilterConstants.Scheduled, true);\n            }\n            if (data.IsAired) {\n                this.easyFilterMap.set(EasyFilterConstants.Aired, {\n                    active: easyFiltersActiveMap.get(EasyFilterConstants.Aired),\n                    disabled: false,\n                });\n                easyFiltersEnabledMap.set(EasyFilterConstants.Aired, true);\n            }\n            if (data.IsLateRun) {\n                this.easyFilterMap.set(EasyFilterConstants.LateRuns, {\n                    active: easyFiltersActiveMap.get(EasyFilterConstants.LateRuns),\n                    disabled: false,\n                });\n                easyFiltersEnabledMap.set(EasyFilterConstants.LateRuns, true);\n            }\n            if (data.IsPosted) {\n                this.easyFilterMap.set(EasyFilterConstants.Posted, {\n                    active: easyFiltersActiveMap.get(EasyFilterConstants.Posted),\n                    disabled: false,\n                });\n                easyFiltersEnabledMap.set(EasyFilterConstants.Posted, true);\n            }\n            if (data.IsViolated) {\n                this.easyFilterMap.set(EasyFilterConstants.ViolatedSpot, {\n                    active: easyFiltersActiveMap.get(EasyFilterConstants.ViolatedSpot),\n                    disabled: false,\n                });\n                easyFiltersEnabledMap.set(EasyFilterConstants.ViolatedSpot, true);\n            }\n            if (data.IsViolating) {\n                this.easyFilterMap.set(EasyFilterConstants.ViolatingSpot, {\n                    active: easyFiltersActiveMap.get(EasyFilterConstants.ViolatingSpot),\n                    disabled: false,\n                });\n                easyFiltersEnabledMap.set(EasyFilterConstants.ViolatingSpot, true);\n            }\n            if (\n                [\n                    StatusConstants.Preempted,\n                    StatusConstants.PreemptedBonus,\n                    StatusConstants.PreemptedDR,\n                    StatusConstants.PreemptedPaidProgram,\n                    StatusConstants.PreemptedStationUtilized,\n                    StatusConstants.PreemptedNoCharge,\n                    StatusConstants.Displaced,\n                ].includes(data.SpotStatus)\n            ) {\n                this.easyFilterMap.set(EasyFilterConstants.ToBeScheduled, {\n                    active: easyFiltersActiveMap.get(EasyFilterConstants.ToBeScheduled),\n                    disabled: false,\n                });\n                easyFiltersEnabledMap.set(EasyFilterConstants.ToBeScheduled, true);\n            }\n            if (\n                [StatusConstants.Credited, StatusConstants.Unresolved, StatusConstants.Removed].includes(\n                    data.SpotStatus,\n                )\n            ) {\n                this.easyFilterMap.set(EasyFilterConstants.Dropped, {\n                    active: easyFiltersActiveMap.get(EasyFilterConstants.Dropped),\n                    disabled: false,\n                });\n                easyFiltersEnabledMap.set(EasyFilterConstants.Dropped, true);\n            }\n        });\n\n        // Check if group data exists\n        if (this.groupedData && this.groupedData.length > 0) {\n            this.easyFilterMap.set(EasyFilterConstants.GroupedPEAndMG, {\n                active: easyFiltersActiveMap.get(EasyFilterConstants.GroupedPEAndMG),\n                disabled: false,\n            });\n        }\n        this.setEnabledFiltersCount();\n    }\n\n    setEnabledFiltersCount() {\n        this.enabledFiltersCount = 0;\n        this.easyFilterNames.forEach((item) => {\n            if (!this.easyFilterMap.get(item).disabled) {\n                this.enabledFiltersCount += 1;\n            }\n        });\n    }\n\n    // check if cache has data\n    checkForCacheDataOtherwiseCallAPI(\n        isAllSpots: boolean,\n        startDate: string,\n        endDate: string,\n        resetEasyFilter: boolean,\n        viewtoggled: boolean = false,\n    ) {\n        if (isAllSpots) {\n            let allSpotsIndex = -1;\n            if (this.spotDataCache && this.spotDataCache.length) {\n                allSpotsIndex = this.spotDataCache.findIndex(\n                    (obj) =>\n                        obj.IsAllSpots &&\n                        obj.SelectedView === this.selectedView &&\n                        (!this.showNormalizationToggle ||\n                            (this.showNormalizationToggle &&\n                                this.selectedNormalization.toggle &&\n                                obj.DemoId === this.selectedNormalization.demoId) ||\n                            (!this.selectedNormalization.toggle && !obj.IsNormalized)),\n                );\n            }\n            if (allSpotsIndex !== -1) {\n                this.spotData = this.spotDataCache[allSpotsIndex].Spots;\n                this.groupedData = this.groupedSpotsDataCache[allSpotsIndex].Groups;\n                this.annaSpotDetailsService.postedSpotPresentInSelectedPeriod = cloneDeep(\n                    this.spotDataCache[allSpotsIndex].IsPostedSpotsPresent,\n                );\n                this.getTableData();\n                this.setGroupedTableData();\n                this.setGtGeneralConfig();\n\n                if (resetEasyFilter) {\n                    this.enableOrDisableEasyFilters(this.tableData, true);\n                }\n\n                if (!this.primaryOrderData.orderInfo.isDrOrder && resetEasyFilter) {\n                    this.setFilterAsDefault(EasyFilterConstants.Booked);\n                }\n                this.enableOrDisableClearAllBtn();\n            } else {\n                this.tableData = [];\n                this.setDisableEnableSpotReportDownloadBtnValue();\n                const quarterFilter = this.getFilterPaylod();\n                this.fetchDataFromBackend.emit(quarterFilter);\n            }\n        } else {\n            let spotsIndex = -1;\n            if (this.spotDataCache && this.spotDataCache.length) {\n                spotsIndex = this.spotDataCache.findIndex(\n                    (obj) =>\n                        obj.StartDate === startDate &&\n                        obj.EndDate === endDate &&\n                        obj.SelectedView === this.selectedView &&\n                        (!this.showNormalizationToggle ||\n                            (this.showNormalizationToggle &&\n                                ((this.selectedNormalization.toggle &&\n                                    obj.DemoId === this.selectedNormalization.demoId) ||\n                                    (!this.selectedNormalization.toggle && !obj.IsNormalized)))),\n                );\n            }\n            if (spotsIndex !== -1) {\n                this.spotData = this.spotDataCache[spotsIndex].Spots;\n                this.groupedData = this.groupedSpotsDataCache[spotsIndex].Groups;\n                this.annaSpotDetailsService.postedSpotPresentInSelectedPeriod = cloneDeep(\n                    this.spotDataCache[spotsIndex].IsPostedSpotsPresent,\n                );\n                this.getTableData();\n                this.setGroupedTableData();\n                this.setGtGeneralConfig();\n\n                if (resetEasyFilter) {\n                    this.enableOrDisableEasyFilters(this.tableData, true);\n                }\n                if (\n                    !this.primaryOrderData.orderInfo.isDrOrder &&\n                    this.filtersFromRoute?.easyFilters !== EasyFilterConstants.UnSelectedBooked &&\n                    resetEasyFilter\n                ) {\n                    this.setFilterAsDefault(EasyFilterConstants.Booked);\n                }\n                this.enableOrDisableClearAllBtn();\n            } else {\n                this.tableData = [];\n                this.setDisableEnableSpotReportDownloadBtnValue();\n                const quarterFilter = this.getFilterPaylod();\n                this.fetchDataFromBackend.emit(quarterFilter);\n            }\n        }\n    }\n\n    processGroupedSpotsDataResponse(spotsRequestPayload: ISpotQuarterFilter) {\n        // this.initializeCustomizeColumns();\n        this.setGroupedTableData();\n        this.updateGroupedSpotsCacheData(spotsRequestPayload);\n    }\n\n    processSpotDataResponse(spotsRequestPayload: ISpotQuarterFilter) {\n        this.getTableData();\n        this.updateSpotsCacheData(spotsRequestPayload);\n        // this.initializeCustomizeColumns();\n        this.setGtGeneralConfig();\n        this.initializeEasyFilterMap(this.tableData);\n\n        if (\n            !this.primaryOrderData.orderInfo?.isDrOrder &&\n            this.filtersFromRoute?.easyFilters !== EasyFilterConstants.UnSelectedBooked\n        ) {\n            this.setFilterAsDefault(EasyFilterConstants.Booked);\n        }\n        this.enableOrDisableClearAllBtn();\n    }\n\n    callSort() {\n        this.annaSortService.columnSortState.forEach((value, key) => {\n            if (value === \"ASC\") {\n                this.tableData = this.annaSortService.sortDataForComponentOtherThanLurAndCsrPage(\n                    true,\n                    this.tableData,\n                    key,\n                );\n            } else if (value === \"DESC\") {\n                this.tableData = this.annaSortService.sortDataForComponentOtherThanLurAndCsrPage(\n                    false,\n                    this.tableData,\n                    key,\n                );\n            }\n        });\n        this.enableOrDisableClearAllBtn();\n    }\n\n    updateSpotsCacheData(spotsRequestPayload: ISpotQuarterFilter) {\n        const newQuarterInfo: ISpotDataPerQuarter = {} as ISpotDataPerQuarter;\n        if (spotsRequestPayload.IsAllSpotsSelected) {\n            newQuarterInfo.IsAllSpots = true;\n            newQuarterInfo.Spots = this.spotData;\n        } else {\n            newQuarterInfo.StartDate = spotsRequestPayload.StartDate;\n            newQuarterInfo.EndDate = spotsRequestPayload.EndDate;\n            newQuarterInfo.Spots = this.spotData;\n        }\n        if (this.showNormalizationToggle && this.selectedNormalization) {\n            newQuarterInfo.IsNormalized = this.selectedNormalization.toggle;\n            newQuarterInfo.DemoId = this.selectedNormalization.demoId;\n        }\n        newQuarterInfo.SelectedView = this.selectedView;\n        newQuarterInfo.IsPostedSpotsPresent = cloneDeep(this.annaSpotDetailsService.postedSpotPresentInSelectedPeriod);\n        this.spotDataCache.push(newQuarterInfo);\n    }\n\n    updateGroupedSpotsCacheData(spotsRequestPayload: ISpotQuarterFilter) {\n        const newQuarterInfo: IGroupDataPerQuarter = {} as IGroupDataPerQuarter;\n        if (spotsRequestPayload.IsAllSpotsSelected) {\n            newQuarterInfo.IsAllSpots = true;\n        } else {\n            newQuarterInfo.StartDate = spotsRequestPayload.StartDate;\n            newQuarterInfo.EndDate = spotsRequestPayload.EndDate;\n        }\n        if (this.showNormalizationToggle && this.selectedNormalization) {\n            newQuarterInfo.IsNormalized = this.selectedNormalization.toggle;\n            newQuarterInfo.DemoId = this.selectedNormalization.demoId;\n        }\n        newQuarterInfo.Groups = this.groupedData;\n        this.groupedSpotsDataCache.push(newQuarterInfo);\n    }\n\n    setGroupedTableData() {\n        // generate grouped table data wrapper\n        if (this.groupedData.length > 0) {\n            // initial sorting of Spots by LineNumber and SpotNumber\n            const tempGroupedData: any[] = [];\n            this.groupedData.forEach((group) => {\n                const spotsInGroup: ISpotData[] = group.Spots;\n                let preemptSpots: ISpotData[] = [];\n                let mgSpots: ISpotData[] = [];\n                spotsInGroup.forEach((spot) => {\n                    if (spot.IsPreempted) {\n                        preemptSpots.push(spot);\n                    } else {\n                        mgSpots.push(spot);\n                    }\n                });\n                preemptSpots = sortBy(preemptSpots, [\"LineNumber\", \"SpotNumber\"]);\n                mgSpots = sortBy(mgSpots, [\"LineNumber\", \"SpotNumber\"]);\n                tempGroupedData.push({\n                    GroupId: group.GroupId,\n                    Spots: [...preemptSpots, ...mgSpots],\n                });\n            });\n            this.groupedData = cloneDeep(tempGroupedData);\n            const finalGroupedData: any[] = [];\n            this.groupedData.forEach((group) => {\n                const groupId = group.GroupId;\n                let estimatePriorities = cloneDeep(this.estimatePriorities);\n                if (this.userType === UserTypeEnum.BUYER) {\n                    estimatePriorities = estimatePriorities.filter((n) => n !== ESTIMATEPRIORITIES.AverageRTG);\n                }\n                group.Spots.forEach((obj, index, array) => {\n                    const spotObject: SpotTableData = new SpotTableData(\n                        estimatePriorities,\n                        obj,\n                        this.currencyPipe,\n                        this.showLURVoilationInfo,\n                        this.showRateRtgOrImpsTooltip,\n                        this.selectedMetric?.text,\n                        this.primaryOrderData?.orderInfo?.measurementAgency,\n                    );\n                    spotObject.GroupId = groupId;\n                    spotObject.IsDisabled = true; // grouped table checkbox will be always disabled\n                    if (index === array.length - 1) {\n                        spotObject.LastRowOfGroup = true;\n                    }\n                    let cellBorderColor = \"\";\n\n                    if (spotObject.gtClass.includes(TableClassNameConstant.greenColorCellBorder)) {\n                        cellBorderColor = TableClassNameConstant.greenColorCellBorder;\n                    } else if (spotObject.gtClass.includes(TableClassNameConstant.redColorCellBorder)) {\n                        cellBorderColor = TableClassNameConstant.redColorCellBorder;\n                    } else if (spotObject.gtClass.includes(TableClassNameConstant.orangeColorCellBorder)) {\n                        cellBorderColor = TableClassNameConstant.orangeColorCellBorder;\n                    }\n\n                    spotObject.gtClass = null;\n                    spotObject.gtClass = TableClassNameConstant.defaultClass;\n                    spotObject.gtClass = `${spotObject.gtClass} ${cellBorderColor}`;\n                    this.appendOrRemoveClassName(\n                        spotObject.LastRowOfGroup,\n                        spotObject,\n                        TableClassNameConstant.lastRowOfGroup,\n                    );\n                    this.appendOrRemoveClassName(!spotObject.IsPreempted, spotObject, TableClassNameConstant.mgRow);\n                    finalGroupedData.push(spotObject);\n                });\n            });\n\n            this.groupedTableData = finalGroupedData;\n        }\n    }\n\n    getTableData() {\n        const tableData: SpotTableData[] = [];\n        this.buyerRequestedSpotExists = false;\n\n        // initial data sort by LineNumber and SpotNumber\n        this.spotData = sortBy(this.spotData, [\"LineNumber\", \"SpotNumber\"]);\n        let estimatePriorities = cloneDeep(this.estimatePriorities);\n        if (this.userType === UserTypeEnum.BUYER) {\n            estimatePriorities = estimatePriorities.filter((n) => n !== ESTIMATEPRIORITIES.AverageRTG);\n        }\n        this.spotData.forEach((spot) => {\n            const tableRow = new SpotTableData(\n                estimatePriorities,\n                spot,\n                this.currencyPipe,\n                this.showLURVoilationInfo,\n                this.showRateRtgOrImpsTooltip,\n                this.selectedMetric?.text,\n                this.primaryOrderData?.orderInfo?.measurementAgency,\n            );\n            if (spot.IsBuyerRequestedForCredit) {\n                this.buyerRequestedSpotExists = true;\n            }\n            // disable row checkboxes\n            if (\n                tableRow.SpotStatus === StatusConstants.MarkedForCredit ||\n                tableRow.SpotStatus === StatusConstants.MarkedForMG ||\n                tableRow.SpotStatus === StatusConstants.Unresolved ||\n                (!tableRow.AllowUserToMarkForCredit && !tableRow.AllowUserToMarkForMakeGood)\n            ) {\n                tableRow.IsDisabled = true;\n            }\n            this.appendOrRemoveClassName(!tableRow.IsDisabled, tableRow, TableClassNameConstant.selectableRow);\n            tableData.push(tableRow);\n        });\n\n        this.tableData = tableData;\n        this.setDisableEnableSpotReportDownloadBtnValue();\n        this.enableOrDisableUndoAllMarkForCreditAndMg();\n        if (!this.gtGeneralConfig.isGrouped) {\n            this.createTotalRow(this.tableData);\n        } else {\n            this.createTotalRowForGroupedData(this.groupedData);\n        }\n        this.tableDataCloned = cloneDeep(this.tableData);\n        this.disableCustomizeColumnsBtn = this.tableDataCloned.length === 0;\n        this.annaSortService.noSortingAppliedData = cloneDeep(this.tableDataCloned);\n    }\n\n    checkIfBuyerRequestedSpotExists(): boolean {\n        return this.tableData.some((item) => item.IsBuyerRequestedForCredit);\n    }\n\n    enableOrDisableUndoAllMarkForCreditAndMg() {\n        // this.undoCreditedSpots = this.tableData.findIndex(obj => obj.AllowUserToUndoMarkForCredit\n        //   && obj.SpotStatus == StatusConstants.MarkedForCredit) !== -1;\n        // this.undoMgSpots = this.tableData.findIndex(obj => obj.AllowUserToUndoMarkForMakeGood\n        //   && obj.SpotStatus == StatusConstants.MarkedForMG) !== -1;\n    }\n\n    createTotalRow(data: SpotTableData[]) {\n        const totalRowData = new TotalRowForSpotDetails(data, this.currencyPipe);\n        const tempTotalRowInfo: ITotalRowInfo[] = [];\n        tempTotalRowInfo.push({ colspan: 1, data: \"\", colName: \"total-icon\" });\n        if (this.showCheckboxColumn) {\n            tempTotalRowInfo.push({ colspan: 1, data: \"\", colName: \"total-checkobx\" });\n        }\n        const totalMessageColspan = 5;\n\n        this.annaFilterService.appliedFiltersArray = [...new Set(this.annaFilterService.appliedFiltersArray)];\n        if (\n            (this.annaFilterService.appliedFiltersArray.includes(EasyFilterConstants.Booked) ||\n                this.annaFilterService.appliedFiltersArray.includes(\"showIfBookedFilterSelected\")) &&\n            this.annaFilterService.appliedFiltersArray.length === 1 &&\n            this.showCleaerdSpotsAndAmount\n        ) {\n            tempTotalRowInfo.push({\n                colspan: totalMessageColspan,\n                data: `Booked spots: ${totalRowData.totalSpots.toLocaleString(\n                    \"en-us\",\n                )} | Cleared spots: ${totalRowData.totalClearedSpots.toLocaleString(\"en-us\")} | Cleared amount(%): ${\n                    totalRowData.clearedSpotRate\n                }${totalRowData.clearedSpotPercentage}`,\n                colName: \"total-count\",\n                tooltipMessage: \"The cleared spots includes Aired or Placed spots\",\n                tooltipIconClass: \"mi mdi-info-outline info-label\",\n            });\n        } else {\n            tempTotalRowInfo.push({\n                colspan: totalMessageColspan,\n                data: `Total ${totalRowData.totalSpots} spot(s) listed below`,\n                colName: \"total-count\",\n            });\n        }\n\n        tempTotalRowInfo.push({\n            colspan: 1,\n            data: totalRowData.totalBookedRate === \"-\" ? \"-\" : totalRowData.totalBookedRate.toString(),\n            lowerData: this.showAUR ? totalRowData.totalAUR.toString() : null,\n            colName: \"total-rate\",\n        });\n\n        const isNormalizedHeaderPresent =\n            this.tableHeaders?.filter((n) => n.headerInfo[0]?.name?.includes(\"NORMALIZED\"))?.length !== 0;\n\n        if (this.selectedMetric?.text === OrderMetrics.imps) {\n            tempTotalRowInfo.push({\n                colspan: 1,\n                data: totalRowData.totalImpOrdered === \"-\" ? \"-\" : totalRowData.totalImpOrdered.toString(),\n                colName: \"total-booked-imp\",\n            });\n            if (this.userType === UserTypeEnum.SELLER) {\n                tempTotalRowInfo.push({\n                    colspan: 1,\n                    data: \"\",\n                    colName: \"total-row-estimates-col-empty\",\n                });\n            }\n            tempTotalRowInfo.push({\n                colspan: 1,\n                data: totalRowData.totalImpPosted === \"-\" ? \"-\" : totalRowData.totalImpPosted.toString(),\n                lowerData: totalRowData.totalImpsProjected === \"-\" ? \"-\" : totalRowData.totalImpsProjected.toString(),\n                colName: \"total-projected-imp\",\n            });\n            if (isNormalizedHeaderPresent) {\n                tempTotalRowInfo.push({\n                    colspan: 1,\n                    data: (+totalRowData.totalNormalizedImpressionsBooked.toFixed(2)).toString(),\n                    lowerData: (+totalRowData.totalNormalizedImpressionsPosted.toFixed(2)).toString(),\n                    colName: \"total-normalized-imp-posted\",\n                });\n            }\n        } else {\n            tempTotalRowInfo.push({\n                colspan: 1,\n                data: totalRowData.totalRtgOrdered === \"-\" ? \"-\" : totalRowData.totalRtgOrdered.toString(),\n                colName: \"total-booked-rtg\",\n            });\n            if (this.userType === UserTypeEnum.SELLER) {\n                tempTotalRowInfo.push({\n                    colspan: 1,\n                    data: \"\",\n                    colName: \"total-estimates-col-icon\",\n                });\n            }\n            tempTotalRowInfo.push({\n                colspan: 1,\n                data: totalRowData.totalRtgPosted === \"-\" ? \"-\" : totalRowData.totalRtgPosted.toString(),\n                lowerData: totalRowData.totalRtgProjected === \"-\" ? \"-\" : totalRowData.totalRtgProjected.toString(),\n                colName: \"total-projected-rtg\",\n            });\n            if (isNormalizedHeaderPresent) {\n                tempTotalRowInfo.push({\n                    colspan: 1,\n                    data: (+totalRowData.totalNormalizedRTGBooked.toFixed(2)).toString(),\n                    lowerData: (+totalRowData.totalNormalizedRTGPosted.toFixed(2)).toString(),\n                    colName: \"total-normalized-rtg-posted\",\n                });\n            }\n        }\n\n        tempTotalRowInfo.push({ colspan: 7, data: \"\", colName: \"total-end-col-space\" });\n        this.totalRowInfo = tempTotalRowInfo;\n    }\n\n    createTotalRowForGroupedData(data: any[]) {\n        const totalRowData = new TotalRowForSpotDetailsForGroupedData(data, this.currencyPipe);\n        const tempTotalRowInfo: ITotalRowInfo[] = [];\n        tempTotalRowInfo.push({ colspan: 1, data: \"\", colName: \"total-row-icon\" });\n        if (this.showCheckboxColumn) {\n            tempTotalRowInfo.push({ colspan: 1, data: \"\", colName: \"total-row-checkobx\" });\n        }\n\n        tempTotalRowInfo.push({\n            colspan: 5,\n            data: `Total for ${totalRowData.totalSpots} MadeGood Preemptions`,\n            colName: \"total-row-made-good-preemption\",\n        });\n\n        tempTotalRowInfo.push({\n            colspan: 1,\n            data: totalRowData.totalRate === \"-\" ? \"-\" : totalRowData.totalRate.toString(),\n            lowerData: this.showAUR ? totalRowData.totalAUR.toString() : null,\n            colName: \"total-row-rate\",\n        });\n        if (this.selectedMetric?.text === OrderMetrics.imps) {\n            tempTotalRowInfo.push({\n                colspan: 1,\n                data: totalRowData.totalIMPSOrdered === \"-\" ? \"-\" : totalRowData.totalIMPSOrdered.toString(),\n                colName: \"total-row-booked-rtg-imp\",\n            });\n            if (this.userType === UserTypeEnum.SELLER) {\n                tempTotalRowInfo.push({\n                    colspan: 1,\n                    data: \"\",\n                    colName: \"total-row-empty-space-1-estimates-col\",\n                });\n            }\n            tempTotalRowInfo.push({\n                colspan: 1,\n                data: totalRowData.totalIMPSPosted === \"-\" ? \"-\" : totalRowData.totalIMPSPosted.toString(),\n                lowerData: totalRowData.totalImpsProjected === \"-\" ? \"-\" : totalRowData.totalImpsProjected.toString(),\n                colName: \"total-projected-rtg\",\n            });\n            if (this.tableHeaders?.filter((n) => n.headerInfo[0]?.name?.includes(\"NORMALIZED\"))?.length !== 0) {\n                tempTotalRowInfo.push({\n                    colspan: 1,\n                    data: (+totalRowData.totalNormalizedIMPSBooked.toFixed(1)).toString(),\n                    lowerData: (+totalRowData.totalNormalizedIMPSPosted.toFixed(1)).toString(),\n                    colName: \"total-normalized-imp-posted\",\n                });\n            }\n        } else {\n            tempTotalRowInfo.push({\n                colspan: 1,\n                data: totalRowData.totalRTGOrdered === \"-\" ? \"-\" : totalRowData.totalRTGOrdered.toString(),\n                colName: \"total-row-booked-rtg-imp\",\n            });\n            if (this.userType === UserTypeEnum.SELLER) {\n                tempTotalRowInfo.push({\n                    colspan: 1,\n                    data: \"\",\n                    colName: \"total-row-empty-space-1-estimates-col\",\n                });\n            }\n            tempTotalRowInfo.push({\n                colspan: 1,\n                data: totalRowData.totalRTGPosted === \"-\" ? \"-\" : totalRowData.totalRTGPosted.toString(),\n                lowerData: totalRowData.totalRtgProjected === \"-\" ? \"-\" : totalRowData.totalRtgProjected.toString(),\n                colName: \"total-projected-rtg\",\n            });\n            if (this.tableHeaders?.filter((n) => n.headerInfo[0]?.name?.includes(\"NORMALIZED\"))?.length !== 0) {\n                tempTotalRowInfo.push({\n                    colspan: 1,\n                    data: (+totalRowData.totalNormalizedRTGBooked.toFixed(1)).toString(),\n                    lowerData: (+totalRowData.totalNormalizedRTGPosted.toFixed(1)).toString(),\n                    colName: \"total-normalized-imp-posted\",\n                });\n            }\n        }\n        tempTotalRowInfo.push({\n            colspan: 7,\n            data: \"\",\n            colName: \"total-row-empty-space-2\",\n        });\n\n        this.totalRowInfo = tempTotalRowInfo;\n    }\n\n    toggleCheckbox(event: any) {\n        const rowIndex = this.tableData.findIndex((obj) => obj.SpotId === event.rowData.SpotId);\n        this.tableData[rowIndex].IsSelected = !this.tableData[rowIndex].IsSelected;\n        this.appendOrRemoveClassName(\n            this.tableData[rowIndex].IsSelected,\n            this.tableData[rowIndex],\n            TableClassNameConstant.selectedRow,\n        );\n        this.verifyHeaderCheckbox();\n        this.enableOrDisableMarkForCreditAndMg();\n    }\n\n    toggleHeaderCheckbox() {\n        this.gtGeneralConfig.isHeaderChecked = !this.gtGeneralConfig.isHeaderChecked;\n        this.verifyRowCheckbox();\n        this.enableOrDisableMarkForCreditAndMg();\n    }\n\n    verifyRowCheckbox() {\n        const isChecked = this.gtGeneralConfig.isHeaderChecked;\n        this.tableData.forEach((data) => {\n            if (!data.IsDisabled) {\n                data.IsSelected = isChecked;\n            }\n        });\n        this.tableData = [...this.tableData];\n    }\n\n    verifyHeaderCheckbox() {\n        let allCheckboxes = 0;\n        let selectedCheckboxes = 0;\n        this.tableData.forEach((data) => {\n            if (!data.IsDisabled) {\n                if (data.IsSelected) {\n                    selectedCheckboxes += 1;\n                }\n                allCheckboxes += 1;\n            }\n        });\n        this.gtGeneralConfig.isHeaderChecked = allCheckboxes === selectedCheckboxes;\n    }\n\n    enableOrDisableMarkForCreditAndMg() {\n        //   let selectedRows = this.tableData.filter(obj => obj.IsSelected);\n        //   let onlyMg = 0, onlyCredit = 0, bothMgAndCredit = 0;\n        //   this.spotsSelectedToMarkForCredit = false;\n        //   this.spotsSelectedToMarkForMg = false;\n        //   selectedRows.forEach(data => {\n        //     if (data.AllowUserToMarkForMakeGood && !data.AllowUserToMarkForCredit) {\n        //       onlyMg++;\n        //     }\n        //     else if (!data.AllowUserToMarkForMakeGood && data.AllowUserToMarkForCredit) {\n        //       onlyCredit++;\n        //     }\n        //     else if (data.AllowUserToMarkForMakeGood && data.AllowUserToMarkForCredit) {\n        //       bothMgAndCredit++;\n        //     }\n        //   })\n        //   if (onlyMg > 0 && onlyCredit === 0 && bothMgAndCredit === 0) {\n        //     this.spotsSelectedToMarkForMg = true;\n        //     this.spotsSelectedToMarkForCredit = false;\n        //   }\n        //   else if (onlyCredit > 0 && onlyMg === 0 && bothMgAndCredit === 0) {\n        //     this.spotsSelectedToMarkForCredit = true;\n        //     this.spotsSelectedToMarkForMg = false;\n        //   }\n        //   else if (bothMgAndCredit > 0) {\n        //     if (onlyCredit === 0 && onlyMg === 0) {\n        //       this.spotsSelectedToMarkForMg = true;\n        //       this.spotsSelectedToMarkForCredit = true;\n        //     }\n        //     else if (onlyCredit > 0) {\n        //       this.spotsSelectedToMarkForCredit = true;\n        //       this.spotsSelectedToMarkForMg = false;\n        //     }\n        //     else if (onlyMg > 0) {\n        //       this.spotsSelectedToMarkForMg = true;\n        //       this.spotsSelectedToMarkForCredit = false;\n        //     }\n        //   }\n    }\n\n    openConfirmationModal(mgOrCredit: MgCreditType) {\n        //   this.isUndo = false;\n        //   this.mgOrCredit = mgOrCredit;\n        //   this.confirmationCreditOrMgModalReference = this.modalService.open(this.confirmationCreditOrMgModal, this.ngbModalOptions);\n    }\n\n    preparePayloadAndSendSelectedSpots(mgOrCredit: MgCreditType) {\n        //   let selectedSpots: string[] = this.tableData.filter(obj => obj.IsSelected)\n        //     .map(obj => obj.SpotId);\n        //   let selectedSpotsLength = selectedSpots.length;\n        //   let isAllSpots = this.gtGeneralConfig.isHeaderChecked;\n        //   let requestPayload: IMarkForCreditOrMgRequest = {\n        //     OrderId: this.orderInfo.orderId,\n        //     StationId: +this.orderInfo.channelId,\n        //     Spots: selectedSpots\n        //   }\n        //   if (mgOrCredit === \"MakeGood\") {\n        //     this.sendSpotsForMakegood(requestPayload, selectedSpotsLength, isAllSpots);\n        //   }\n        //   else {\n        //     this.sendSpotsForCredit(requestPayload, selectedSpotsLength, isAllSpots);\n        //   }\n    }\n\n    preparePayloadAndSendSelectedSpotForUndo(mgOrCredit: MgCreditType) {\n        //   let selectedSpot: string[] = [this.undoSpotId];\n        //   let requestPayload: IMarkForCreditOrMgRequest = {\n        //     OrderId: this.orderInfo.orderId,\n        //     StationId: +this.orderInfo.channelId,\n        //     Spots: selectedSpot\n        //   }\n        //   let allSpots = false;\n        //   if (mgOrCredit === \"MakeGood\") {\n        //     this.sendSpotsForUndoMakegood(requestPayload, allSpots);\n        //   }\n        //   else {\n        //     this.sendSpotsForUndoCredit(requestPayload, allSpots);\n        //   }\n    }\n\n    sendSpotsForCredit(requestPayload: IMarkForCreditOrMgRequest, selectedSpotsLength: number, isAllSpots: boolean) {\n        //   this.showSkeletonLoading = true;\n        //   this.setDisableEnableSpotReportDownloadBtnValue();\n        //   this.consumingProjectSpotDetailsBackendService.markForCredit(requestPayload).subscribe(\n        //     {\n        //       next: (response: HttpResponse<any>) => {\n        //         if (response.status === ErrorCodes.SUCCESS_CODE_GET) {\n        //           this.toastr.success(\n        //             (isAllSpots ? 'All spots ' : (selectedSpotsLength + ' spot') + (selectedSpotsLength > 1 ? 's' : ''))\n        //             + ' marked for Credit');\n        //           //mark spots as credited\n        //           let spotIds = requestPayload.Spots;\n        //           let spotPosition: number, spotQuarterPosition: number;\n        //           spotIds.forEach((spotId) => {\n        //             spotPosition = -1;\n        //             for (var i = 0; i < this.spotDataCache.length; i++) {\n        //               if (!this.spotDataCache[i].IsAllSpots) {\n        //                 spotPosition = this.spotDataCache[i].Spots.findIndex(obj => obj.SpotId === spotId);\n        //                 if (spotPosition !== -1) {\n        //                   spotQuarterPosition = i;\n        //                   break;\n        //                 }\n        //               }\n        //             }\n        //             if (spotPosition !== -1) {\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].IsMarkForCredit = true;\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToMarkForCreditBeforeMarkingSpot =\n        //                 this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToMarkForCredit;\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToMarkForMakeGoodBeforeMarkingSpot =\n        //                 this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToMarkForMakeGood;\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToMarkForCredit = false;\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToMarkForMakeGood = false;\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToUndoMarkForCredit = true;\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].StatusBeforeMarkingSpot = this.spotDataCache[spotQuarterPosition].Spots[spotPosition].Status;\n        //               if (this.spotDataCache[spotQuarterPosition].Spots[spotPosition].Status === StatusConstants.BuyerCreditRequested) {\n        //                 this.spotDataCache[spotQuarterPosition].Spots[spotPosition].IsBuyerRequestedForCredit = false;\n        //               }\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].Status = StatusConstants.MarkedForCredit;\n        //               if (!this.selectedFilterIsAllSpot) {\n        //                 spotPosition = this.tableData.findIndex(obj => obj.SpotId === spotId);\n        //                 this.tableData[spotPosition].IsMarkForCredit = true;\n        //                 this.tableData[spotPosition].AllowUserToMarkForCreditBeforeMarkingSpot =\n        //                   this.tableData[spotPosition].AllowUserToMarkForCredit;\n        //                 this.tableData[spotPosition].AllowUserToMarkForMakeGoodBeforeMarkingSpot =\n        //                   this.tableData[spotPosition].AllowUserToMarkForMakeGood;\n        //                 this.tableData[spotPosition].AllowUserToMarkForCredit = false;\n        //                 this.tableData[spotPosition].AllowUserToMarkForMakeGood = false;\n        //                 this.tableData[spotPosition].AllowUserToUndoMarkForCredit = true;\n        //                 this.tableData[spotPosition].IsSelected = false;\n        //                 this.tableData[spotPosition].IsDisabled = true;\n        //                 if (this.tableData[spotPosition].SpotStatus === StatusConstants.BuyerCreditRequested) {\n        //                   this.tableData[spotPosition].IsBuyerRequestedForCredit = false;\n        //                 }\n        //                 this.tableData[spotPosition].SpotStatus = StatusConstants.MarkedForCredit;\n        //                 spotPosition = this.tableDataCloned.findIndex(obj => obj.SpotId === spotId);\n        //                 this.tableDataCloned[spotPosition].IsMarkForCredit = true;\n        //                 this.tableDataCloned[spotPosition].AllowUserToMarkForCreditBeforeMarkingSpot =\n        //                   this.tableDataCloned[spotPosition].AllowUserToMarkForCredit;\n        //                 this.tableDataCloned[spotPosition].AllowUserToMarkForMakeGoodBeforeMarkingSpot =\n        //                   this.tableDataCloned[spotPosition].AllowUserToMarkForMakeGood;\n        //                 this.tableDataCloned[spotPosition].AllowUserToMarkForCredit = false;\n        //                 this.tableDataCloned[spotPosition].AllowUserToMarkForMakeGood = false;\n        //                 this.tableDataCloned[spotPosition].AllowUserToUndoMarkForCredit = true;\n        //                 this.tableDataCloned[spotPosition].IsSelected = false;\n        //                 this.tableDataCloned[spotPosition].IsDisabled = true;\n        //                 if (this.tableDataCloned[spotPosition].SpotStatus === StatusConstants.BuyerCreditRequested) {\n        //                   this.tableDataCloned[spotPosition].IsBuyerRequestedForCredit = false;\n        //                 }\n        //                 this.tableDataCloned[spotPosition].SpotStatus = StatusConstants.MarkedForCredit;\n        //               }\n        //             }\n        //           })\n        //           //Update All spots cached data\n        //           spotIds.forEach((spotId) => {\n        //             spotPosition = -1;\n        //             for (var i = 0; i < this.spotDataCache.length; i++) {\n        //               if (this.spotDataCache[i].IsAllSpots) {\n        //                 spotPosition = this.spotDataCache[i].Spots.findIndex(obj => obj.SpotId === spotId);\n        //                 if (spotPosition !== -1) {\n        //                   spotQuarterPosition = i;\n        //                   break;\n        //                 }\n        //                 break;\n        //               }\n        //             }\n        //             if (spotPosition !== -1) {\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].IsMarkForCredit = true;\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToMarkForCreditBeforeMarkingSpot =\n        //                 this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToMarkForCredit;\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToMarkForMakeGoodBeforeMarkingSpot =\n        //                 this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToMarkForMakeGood;\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToMarkForCredit = false;\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToMarkForMakeGood = false;\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToUndoMarkForCredit = true;\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].StatusBeforeMarkingSpot = this.spotDataCache[spotQuarterPosition].Spots[spotPosition].Status;\n        //               if (this.spotDataCache[spotQuarterPosition].Spots[spotPosition].Status === StatusConstants.BuyerCreditRequested) {\n        //                 this.spotDataCache[spotQuarterPosition].Spots[spotPosition].IsBuyerRequestedForCredit = false;\n        //               }\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].Status = StatusConstants.MarkedForCredit;\n        //               if (this.selectedFilterIsAllSpot) {\n        //                 spotPosition = this.tableData.findIndex(obj => obj.SpotId === spotId);\n        //                 this.tableData[spotPosition].IsMarkForCredit = true;\n        //                 this.tableData[spotPosition].AllowUserToMarkForCreditBeforeMarkingSpot =\n        //                   this.tableData[spotPosition].AllowUserToMarkForCredit;\n        //                 this.tableData[spotPosition].AllowUserToMarkForMakeGoodBeforeMarkingSpot =\n        //                   this.tableData[spotPosition].AllowUserToMarkForMakeGood;\n        //                 this.tableData[spotPosition].AllowUserToMarkForCredit = false;\n        //                 this.tableData[spotPosition].AllowUserToMarkForMakeGood = false;\n        //                 this.tableData[spotPosition].AllowUserToUndoMarkForCredit = true;\n        //                 this.tableData[spotPosition].IsSelected = false;\n        //                 this.tableData[spotPosition].IsDisabled = true;\n        //                 if (this.tableData[spotPosition].SpotStatus === StatusConstants.BuyerCreditRequested) {\n        //                   this.tableData[spotPosition].IsBuyerRequestedForCredit = false;\n        //                 }\n        //                 this.tableData[spotPosition].SpotStatus = StatusConstants.MarkedForCredit;\n        //                 spotPosition = this.tableDataCloned.findIndex(obj => obj.SpotId === spotId);\n        //                 this.tableDataCloned[spotPosition].IsMarkForCredit = true;\n        //                 this.tableDataCloned[spotPosition].AllowUserToMarkForCreditBeforeMarkingSpot =\n        //                   this.tableDataCloned[spotPosition].AllowUserToMarkForCredit;\n        //                 this.tableDataCloned[spotPosition].AllowUserToMarkForMakeGoodBeforeMarkingSpot =\n        //                   this.tableDataCloned[spotPosition].AllowUserToMarkForMakeGood;\n        //                 this.tableDataCloned[spotPosition].AllowUserToMarkForCredit = false;\n        //                 this.tableDataCloned[spotPosition].AllowUserToMarkForMakeGood = false;\n        //                 this.tableDataCloned[spotPosition].AllowUserToUndoMarkForCredit = true;\n        //                 this.tableDataCloned[spotPosition].IsSelected = false;\n        //                 this.tableDataCloned[spotPosition].IsDisabled = true;\n        //                 if (this.tableDataCloned[spotPosition].SpotStatus === StatusConstants.BuyerCreditRequested) {\n        //                   this.tableDataCloned[spotPosition].IsBuyerRequestedForCredit = false;\n        //                 }\n        //                 this.tableDataCloned[spotPosition].SpotStatus = StatusConstants.MarkedForCredit;\n        //               }\n        //             }\n        //           })\n        //           this.buyerRequestedSpotExists = this.checkIfBuyerRequestedSpotExists();\n        //           this.gtGeneralConfig.isHeaderChecked = false;\n        //           this.clearAllFilter();\n        //         }\n        //         this.showSkeletonLoading = false;\n        //         this.setDisableEnableSpotReportDownloadBtnValue();\n        //       },\n        //       error: (error: any) => {\n        //         if (error.status === ErrorCodes.BAD_REQUEST) {\n        //           this.toastr.error(\"Invalid spots requested\");\n        //         }\n        //         else {\n        //           this.toastr.error(\"Some error occurred, please try again\");\n        //         }\n        //         this.showSkeletonLoading = false;\n        //         this.setDisableEnableSpotReportDownloadBtnValue();\n        //       }\n        //     }\n        //   )\n    }\n\n    sendSpotsForMakegood(requestPayload: IMarkForCreditOrMgRequest, selectedSpotsLength: number, isAllSpots: boolean) {\n        //   this.showSkeletonLoading = true;\n        //   this.setDisableEnableSpotReportDownloadBtnValue();\n        //   this.consumingProjectSpotDetailsBackendService.markForMakegood(requestPayload).subscribe(\n        //     {\n        //       next: (response: HttpResponse<any>) => {\n        //         if (response.status === ErrorCodes.SUCCESS_CODE_GET) {\n        //           this.toastr.success(\n        //             (isAllSpots ? 'All spots ' : (selectedSpotsLength + ' spot') + (selectedSpotsLength > 1 ? 's' : ''))\n        //             + ' marked for MakeGood');\n        //           //mark spots as marked for make good\n        //           let spotIds = requestPayload.Spots;\n        //           let spotPosition: number, spotQuarterPosition: number;\n        //           spotIds.forEach((spotId) => {\n        //             spotPosition = -1;\n        //             for (var i = 0; i < this.spotDataCache.length; i++) {\n        //               if (!this.spotDataCache[i].IsAllSpots) {\n        //                 spotPosition = this.spotDataCache[i].Spots.findIndex(obj => obj.SpotId === spotId);\n        //                 if (spotPosition !== -1) {\n        //                   spotQuarterPosition = i;\n        //                   break;\n        //                 }\n        //               }\n        //             }\n        //             if (spotPosition !== -1) {\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].IsMarkForMakeGood = true;\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToMarkForCreditBeforeMarkingSpot =\n        //                 this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToMarkForCredit;\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToMarkForMakeGoodBeforeMarkingSpot =\n        //                 this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToMarkForMakeGood;\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToMarkForCredit = false;\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToMarkForMakeGood = false;\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToUndoMarkForMakeGood = true;\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].StatusBeforeMarkingSpot = this.spotDataCache[spotQuarterPosition].Spots[spotPosition].Status;\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].Status = StatusConstants.MarkedForMG;\n        //               if (!this.selectedFilterIsAllSpot) {\n        //                 spotPosition = this.tableData.findIndex(obj => obj.SpotId === spotId);\n        //                 this.tableData[spotPosition].IsMarkForMakeGood = true;\n        //                 this.tableData[spotPosition].AllowUserToMarkForCreditBeforeMarkingSpot =\n        //                   this.tableData[spotPosition].AllowUserToMarkForCredit;\n        //                 this.tableData[spotPosition].AllowUserToMarkForMakeGoodBeforeMarkingSpot =\n        //                   this.tableData[spotPosition].AllowUserToMarkForMakeGood;\n        //                 this.tableData[spotPosition].AllowUserToMarkForCredit = false;\n        //                 this.tableData[spotPosition].AllowUserToMarkForMakeGood = false;\n        //                 this.tableData[spotPosition].AllowUserToUndoMarkForMakeGood = true;\n        //                 this.tableData[spotPosition].IsSelected = false;\n        //                 this.tableData[spotPosition].IsDisabled = true;\n        //                 this.tableData[spotPosition].SpotStatus = StatusConstants.MarkedForMG;\n        //                 spotPosition = this.tableDataCloned.findIndex(obj => obj.SpotId === spotId);\n        //                 this.tableDataCloned[spotPosition].IsMarkForMakeGood = true;\n        //                 this.tableDataCloned[spotPosition].AllowUserToMarkForCreditBeforeMarkingSpot =\n        //                   this.tableDataCloned[spotPosition].AllowUserToMarkForCredit;\n        //                 this.tableDataCloned[spotPosition].AllowUserToMarkForMakeGoodBeforeMarkingSpot =\n        //                   this.tableDataCloned[spotPosition].AllowUserToMarkForMakeGood;\n        //                 this.tableDataCloned[spotPosition].AllowUserToMarkForCredit = false;\n        //                 this.tableDataCloned[spotPosition].AllowUserToMarkForMakeGood = false;\n        //                 this.tableDataCloned[spotPosition].AllowUserToUndoMarkForMakeGood = true;\n        //                 this.tableDataCloned[spotPosition].IsSelected = false;\n        //                 this.tableDataCloned[spotPosition].IsDisabled = true;\n        //                 this.tableDataCloned[spotPosition].SpotStatus = StatusConstants.MarkedForMG;\n        //               }\n        //             }\n        //           })\n        //           //Update All Spots cached data\n        //           spotIds.forEach((spotId) => {\n        //             spotPosition = -1;\n        //             for (var i = 0; i < this.spotDataCache.length; i++) {\n        //               if (this.spotDataCache[i].IsAllSpots) {\n        //                 spotPosition = this.spotDataCache[i].Spots.findIndex(obj => obj.SpotId === spotId);\n        //                 if (spotPosition !== -1) {\n        //                   spotQuarterPosition = i;\n        //                   break;\n        //                 }\n        //                 break;\n        //               }\n        //             }\n        //             if (spotPosition !== -1) {\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].IsMarkForMakeGood = true;\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToMarkForCreditBeforeMarkingSpot =\n        //                 this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToMarkForCredit;\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToMarkForMakeGoodBeforeMarkingSpot =\n        //                 this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToMarkForMakeGood;\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToMarkForCredit = false;\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToMarkForMakeGood = false;\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToUndoMarkForMakeGood = true;\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].StatusBeforeMarkingSpot = this.spotDataCache[spotQuarterPosition].Spots[spotPosition].Status;\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].Status = StatusConstants.MarkedForMG;\n        //               if (this.selectedFilterIsAllSpot) {\n        //                 spotPosition = this.tableData.findIndex(obj => obj.SpotId === spotId);\n        //                 this.tableData[spotPosition].IsMarkForMakeGood = true;\n        //                 this.tableData[spotPosition].AllowUserToMarkForCreditBeforeMarkingSpot =\n        //                   this.tableData[spotPosition].AllowUserToMarkForCredit;\n        //                 this.tableData[spotPosition].AllowUserToMarkForMakeGoodBeforeMarkingSpot =\n        //                   this.tableData[spotPosition].AllowUserToMarkForMakeGood;\n        //                 this.tableData[spotPosition].AllowUserToMarkForCredit = false;\n        //                 this.tableData[spotPosition].AllowUserToMarkForMakeGood = false;\n        //                 this.tableData[spotPosition].AllowUserToUndoMarkForMakeGood = true;\n        //                 this.tableData[spotPosition].IsSelected = false;\n        //                 this.tableData[spotPosition].IsDisabled = true;\n        //                 this.tableData[spotPosition].SpotStatus = StatusConstants.MarkedForMG;\n        //                 spotPosition = this.tableDataCloned.findIndex(obj => obj.SpotId === spotId);\n        //                 this.tableDataCloned[spotPosition].IsMarkForMakeGood = true;\n        //                 this.tableDataCloned[spotPosition].AllowUserToMarkForCreditBeforeMarkingSpot =\n        //                   this.tableDataCloned[spotPosition].AllowUserToMarkForCredit;\n        //                 this.tableDataCloned[spotPosition].AllowUserToMarkForMakeGoodBeforeMarkingSpot =\n        //                   this.tableDataCloned[spotPosition].AllowUserToMarkForMakeGood;\n        //                 this.tableDataCloned[spotPosition].AllowUserToMarkForCredit = false;\n        //                 this.tableDataCloned[spotPosition].AllowUserToMarkForMakeGood = false;\n        //                 this.tableDataCloned[spotPosition].AllowUserToUndoMarkForMakeGood = true;\n        //                 this.tableDataCloned[spotPosition].IsSelected = false;\n        //                 this.tableDataCloned[spotPosition].IsDisabled = true;\n        //                 this.tableDataCloned[spotPosition].SpotStatus = StatusConstants.MarkedForMG;\n        //               }\n        //             }\n        //           })\n        //           this.gtGeneralConfig.isHeaderChecked = false;\n        //           this.clearAllFilter();\n        //         }\n        //         this.showSkeletonLoading = false;\n        //         this.setDisableEnableSpotReportDownloadBtnValue();\n        //       },\n        //       error: (error: any) => {\n        //         if (error.status === ErrorCodes.BAD_REQUEST) {\n        //           this.toastr.error(\"Invalid spots requested\");\n        //         }\n        //         else {\n        //           this.toastr.error(\"Some error occurred, please try again\");\n        //         }\n        //         this.showSkeletonLoading = false;\n        //       }\n        //     }\n        //   );\n    }\n\n    sendSpotsForUndoCredit(requestPayload: IMarkForCreditOrMgRequest, allSpots: boolean) {\n        //   this.showSkeletonLoading = true;\n        //   this.setDisableEnableSpotReportDownloadBtnValue();\n        //   this.consumingProjectSpotDetailsBackendService.undoCreditedSpots(requestPayload).subscribe(\n        //     {\n        //       next: (response: HttpResponse<any>) => {\n        //         if (response.status === ErrorCodes.SUCCESS_CODE) {\n        //           this.toastr.success((allSpots ? \"All Spots\" : \"Spot\") + \" successfully unmarked\");\n        //           //unmark spots for credit\n        //           let spotIds = requestPayload.Spots;\n        //           let spotPosition: number, spotQuarterPosition: number;\n        //           let previousStatus: string;\n        //           spotIds.forEach((spotId) => {\n        //             spotPosition = -1;\n        //             for (var i = 0; i < this.spotDataCache.length; i++) {\n        //               if (!this.spotDataCache[i].IsAllSpots) {\n        //                 spotPosition = this.spotDataCache[i].Spots.findIndex(obj => obj.SpotId === spotId);\n        //                 if (spotPosition !== -1) {\n        //                   spotQuarterPosition = i;\n        //                   break;\n        //                 }\n        //               }\n        //             }\n        //             if (spotPosition !== -1) {\n        //               previousStatus = this.spotDataCache[spotQuarterPosition].Spots[spotPosition].StatusBeforeMarkingSpot;\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].IsMarkForCredit = false;\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToMarkForCredit = true;\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToMarkForMakeGood =\n        //                 this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToMarkForMakeGoodBeforeMarkingSpot;\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToUndoMarkForCredit = false;\n        //               if (previousStatus === StatusConstants.BuyerCreditRequested) {\n        //                 this.spotDataCache[spotQuarterPosition].Spots[spotPosition].IsBuyerRequestedForCredit = true;\n        //               }\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].Status = previousStatus;\n        //               if (!this.selectedFilterIsAllSpot) {\n        //                 spotPosition = this.tableData.findIndex(obj => obj.SpotId === spotId);\n        //                 this.tableData[spotPosition].IsMarkForCredit = false;\n        //                 this.tableData[spotPosition].AllowUserToMarkForCredit = true;\n        //                 this.tableData[spotPosition].AllowUserToMarkForMakeGood =\n        //                   this.tableData[spotPosition].AllowUserToMarkForMakeGoodBeforeMarkingSpot;\n        //                 this.tableData[spotPosition].AllowUserToUndoMarkForCredit = false;\n        //                 this.tableData[spotPosition].IsDisabled = false;\n        //                 if (previousStatus === StatusConstants.BuyerCreditRequested) {\n        //                   this.tableData[spotPosition].IsBuyerRequestedForCredit = true;\n        //                 }\n        //                 this.tableData[spotPosition].SpotStatus = previousStatus;\n        //                 spotPosition = this.tableDataCloned.findIndex(obj => obj.SpotId === spotId);\n        //                 this.tableDataCloned[spotPosition].IsMarkForCredit = false;\n        //                 this.tableDataCloned[spotPosition].AllowUserToMarkForCredit = true;\n        //                 this.tableDataCloned[spotPosition].AllowUserToMarkForMakeGood =\n        //                   this.tableDataCloned[spotPosition].AllowUserToMarkForMakeGoodBeforeMarkingSpot;\n        //                 this.tableDataCloned[spotPosition].AllowUserToUndoMarkForCredit = false;\n        //                 this.tableDataCloned[spotPosition].IsDisabled = false;\n        //                 if (previousStatus === StatusConstants.BuyerCreditRequested) {\n        //                   this.tableDataCloned[spotPosition].IsBuyerRequestedForCredit = true;\n        //                 }\n        //                 this.tableDataCloned[spotPosition].SpotStatus = previousStatus;\n        //               }\n        //             }\n        //           })\n        //           //Update all spots cached data\n        //           spotIds.forEach((spotId) => {\n        //             spotPosition = -1;\n        //             for (var i = 0; i < this.spotDataCache.length; i++) {\n        //               if (this.spotDataCache[i].IsAllSpots) {\n        //                 spotPosition = this.spotDataCache[i].Spots.findIndex(obj => obj.SpotId === spotId);\n        //                 if (spotPosition !== -1) {\n        //                   spotQuarterPosition = i;\n        //                   break;\n        //                 }\n        //                 break;\n        //               }\n        //             }\n        //             if (spotPosition !== -1) {\n        //               previousStatus = this.spotDataCache[spotQuarterPosition].Spots[spotPosition].StatusBeforeMarkingSpot;\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].IsMarkForCredit = false;\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToMarkForCredit = true;\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToMarkForMakeGood =\n        //                 this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToMarkForMakeGoodBeforeMarkingSpot;\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToUndoMarkForCredit = false;\n        //               if (previousStatus === StatusConstants.BuyerCreditRequested) {\n        //                 this.spotDataCache[spotQuarterPosition].Spots[spotPosition].IsBuyerRequestedForCredit = true;\n        //               }\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].Status = previousStatus;\n        //               if (this.selectedFilterIsAllSpot) {\n        //                 spotPosition = this.tableData.findIndex(obj => obj.SpotId === spotId);\n        //                 this.tableData[spotPosition].IsMarkForCredit = false;\n        //                 this.tableData[spotPosition].AllowUserToMarkForCredit = true;\n        //                 this.tableData[spotPosition].AllowUserToMarkForMakeGood =\n        //                   this.tableData[spotPosition].AllowUserToMarkForMakeGoodBeforeMarkingSpot;\n        //                 this.tableData[spotPosition].AllowUserToUndoMarkForCredit = false;\n        //                 this.tableData[spotPosition].IsDisabled = false;\n        //                 if (previousStatus === StatusConstants.BuyerCreditRequested) {\n        //                   this.tableData[spotPosition].IsBuyerRequestedForCredit = true;\n        //                 }\n        //                 this.tableData[spotPosition].SpotStatus = previousStatus;\n        //                 spotPosition = this.tableDataCloned.findIndex(obj => obj.SpotId === spotId);\n        //                 this.tableDataCloned[spotPosition].IsMarkForCredit = false;\n        //                 this.tableDataCloned[spotPosition].AllowUserToMarkForCredit = true;\n        //                 this.tableDataCloned[spotPosition].AllowUserToMarkForMakeGood =\n        //                   this.tableDataCloned[spotPosition].AllowUserToMarkForMakeGoodBeforeMarkingSpot;\n        //                 this.tableDataCloned[spotPosition].AllowUserToUndoMarkForCredit = false;\n        //                 this.tableDataCloned[spotPosition].IsDisabled = false;\n        //                 if (previousStatus === StatusConstants.BuyerCreditRequested) {\n        //                   this.tableDataCloned[spotPosition].IsBuyerRequestedForCredit = true;\n        //                 }\n        //                 this.tableDataCloned[spotPosition].SpotStatus = previousStatus;\n        //               }\n        //             }\n        //           })\n        //           this.buyerRequestedSpotExists = this.checkIfBuyerRequestedSpotExists();\n        //           this.gtGeneralConfig.isHeaderChecked = false;\n        //           this.clearAllFilter();\n        //         }\n        //         this.showSkeletonLoading = false;\n        //         this.setDisableEnableSpotReportDownloadBtnValue();\n        //       },\n        //       error: (error: any) => {\n        //         if (error.status === ErrorCodes.BAD_REQUEST) {\n        //           this.toastr.error(\"Invalid spots requested\");\n        //         }\n        //         else {\n        //           this.toastr.error(\"Some error occurred, please try again\");\n        //         }\n        //         this.showSkeletonLoading = false;\n        //       }\n        //     }\n        //   );\n    }\n\n    sendSpotsForUndoMakegood(requestPayload: IMarkForCreditOrMgRequest, allSpots: boolean) {\n        //   this.showSkeletonLoading = true;\n        //   this.setDisableEnableSpotReportDownloadBtnValue();\n        //   this.consumingProjectSpotDetailsBackendService.undoMakegoodSpots(requestPayload).subscribe(\n        //     {\n        //       next: (response: HttpResponse<any>) => {\n        //         if (response.status === ErrorCodes.SUCCESS_CODE) {\n        //           this.toastr.success((allSpots ? \"All Spots\" : \"Spot\") + \" successfully unmarked\");\n        //           //unmark spots for make good\n        //           let spotIds = requestPayload.Spots;\n        //           let spotPosition: number, spotQuarterPosition: number;\n        //           let previousStatus: string;\n        //           spotIds.forEach((spotId) => {\n        //             spotPosition = -1;\n        //             for (var i = 0; i < this.spotDataCache.length; i++) {\n        //               if (!this.spotDataCache[i].IsAllSpots) {\n        //                 spotPosition = this.spotDataCache[i].Spots.findIndex(obj => obj.SpotId === spotId);\n        //                 if (spotPosition !== -1) {\n        //                   spotQuarterPosition = i;\n        //                   break;\n        //                 }\n        //               }\n        //             }\n        //             if (spotPosition !== -1) {\n        //               previousStatus = this.spotDataCache[spotQuarterPosition].Spots[spotPosition].StatusBeforeMarkingSpot;\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].IsMarkForMakeGood = false;\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToMarkForMakeGood = true;\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToMarkForCredit =\n        //                 this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToMarkForCreditBeforeMarkingSpot;\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToUndoMarkForMakeGood = false;\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].Status = previousStatus;\n        //               if (!this.selectedFilterIsAllSpot) {\n        //                 spotPosition = this.tableData.findIndex(obj => obj.SpotId === spotId);\n        //                 this.tableData[spotPosition].IsMarkForMakeGood = false;\n        //                 this.tableData[spotPosition].AllowUserToMarkForMakeGood = true;\n        //                 this.tableData[spotPosition].AllowUserToMarkForCredit =\n        //                   this.tableData[spotPosition].AllowUserToMarkForCreditBeforeMarkingSpot;\n        //                 this.tableData[spotPosition].AllowUserToUndoMarkForMakeGood = false;\n        //                 this.tableData[spotPosition].IsDisabled = false;\n        //                 this.tableData[spotPosition].SpotStatus = previousStatus;\n        //                 spotPosition = this.tableDataCloned.findIndex(obj => obj.SpotId === spotId);\n        //                 this.tableDataCloned[spotPosition].IsMarkForMakeGood = false;\n        //                 this.tableDataCloned[spotPosition].AllowUserToMarkForMakeGood = true;\n        //                 this.tableDataCloned[spotPosition].AllowUserToMarkForCredit =\n        //                   this.tableDataCloned[spotPosition].AllowUserToMarkForCreditBeforeMarkingSpot;\n        //                 this.tableDataCloned[spotPosition].AllowUserToUndoMarkForMakeGood = false;\n        //                 this.tableDataCloned[spotPosition].IsDisabled = false;\n        //                 this.tableDataCloned[spotPosition].SpotStatus = previousStatus;\n        //               }\n        //             }\n        //           })\n        //           //Update all spots cached data\n        //           spotIds.forEach((spotId) => {\n        //             spotPosition = -1;\n        //             for (var i = 0; i < this.spotDataCache.length; i++) {\n        //               if (this.spotDataCache[i].IsAllSpots) {\n        //                 spotPosition = this.spotDataCache[i].Spots.findIndex(obj => obj.SpotId === spotId);\n        //                 if (spotPosition !== -1) {\n        //                   spotQuarterPosition = i;\n        //                   break;\n        //                 }\n        //                 break;\n        //               }\n        //             }\n        //             if (spotPosition !== -1) {\n        //               previousStatus = this.spotDataCache[spotQuarterPosition].Spots[spotPosition].StatusBeforeMarkingSpot;\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].IsMarkForMakeGood = false;\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToMarkForMakeGood = true;\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToMarkForCredit =\n        //                 this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToMarkForCreditBeforeMarkingSpot;\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToUndoMarkForMakeGood = false;\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].Status = previousStatus;\n        //               if (this.selectedFilterIsAllSpot) {\n        //                 spotPosition = this.tableData.findIndex(obj => obj.SpotId === spotId);\n        //                 this.tableData[spotPosition].IsMarkForMakeGood = false;\n        //                 this.tableData[spotPosition].AllowUserToMarkForMakeGood = true;\n        //                 this.tableData[spotPosition].AllowUserToMarkForCredit =\n        //                   this.tableData[spotPosition].AllowUserToMarkForCreditBeforeMarkingSpot;\n        //                 this.tableData[spotPosition].AllowUserToUndoMarkForMakeGood = false;\n        //                 this.tableData[spotPosition].IsDisabled = false;\n        //                 this.tableData[spotPosition].SpotStatus = previousStatus;\n        //                 spotPosition = this.tableDataCloned.findIndex(obj => obj.SpotId === spotId);\n        //                 this.tableDataCloned[spotPosition].IsMarkForMakeGood = false;\n        //                 this.tableDataCloned[spotPosition].AllowUserToMarkForMakeGood = true;\n        //                 this.tableDataCloned[spotPosition].AllowUserToMarkForCredit =\n        //                   this.tableDataCloned[spotPosition].AllowUserToMarkForCreditBeforeMarkingSpot;\n        //                 this.tableDataCloned[spotPosition].AllowUserToUndoMarkForMakeGood = false;\n        //                 this.tableDataCloned[spotPosition].IsDisabled = false;\n        //                 this.tableDataCloned[spotPosition].SpotStatus = previousStatus;\n        //               }\n        //             }\n        //           })\n        //           this.gtGeneralConfig.isHeaderChecked = false;\n        //           this.clearAllFilter();\n        //         }\n        //         this.showSkeletonLoading = false;\n        //         this.setDisableEnableSpotReportDownloadBtnValue();\n        //       },\n        //       error: (error: any) => {\n        //         if (error.status === ErrorCodes.BAD_REQUEST) {\n        //           this.toastr.error(\"Invalid spots requested, please try again\");\n        //         }\n        //         else {\n        //           this.toastr.error(\"Some error occurred, please try again\");\n        //         }\n        //         this.showSkeletonLoading = false;\n        //       }\n        //     }\n        //   );\n    }\n\n    undoAllCreditedSpots() {\n        //   let allCreditedSpots: string[] = this.tableData.filter(obj => obj.AllowUserToUndoMarkForCredit\n        //     && obj.SpotStatus == StatusConstants.MarkedForCredit).map(obj => obj.SpotId);\n        //   let requestPayload: IMarkForCreditOrMgRequest = {\n        //     OrderId: this.orderInfo.orderId,\n        //     StationId: +this.orderInfo.channelId,\n        //     Spots: allCreditedSpots\n        //   }\n        //   let allSpots = true;\n        //   this.sendSpotsForUndoCredit(requestPayload, allSpots);\n    }\n\n    undoAllMgSpots() {\n        //   let allMgSpots: string[] = this.tableData.filter(obj => obj.AllowUserToUndoMarkForMakeGood\n        //     && obj.SpotStatus == StatusConstants.MarkedForMG).map(obj => obj.SpotId);\n        //   let requestPayload: IMarkForCreditOrMgRequest = {\n        //     OrderId: this.orderInfo.orderId,\n        //     StationId: +this.orderInfo.channelId,\n        //     Spots: allMgSpots\n        //   }\n        //   let allSpots = true;\n        //   this.sendSpotsForUndoMakegood(requestPayload, allSpots);\n    }\n\n    undoIconClicked(event: any) {\n        // this.undoSpotId = event.data.SpotId;\n        // this.isUndo = true;\n        // this.mgOrCredit = event.mgOrCredit;\n        // this.confirmationCreditOrMgModalReference = this.modalService.open(this.confirmationCreditOrMgModal, this.ngbModalOptions);\n    }\n\n    filterAppliedToTable(tableData: SpotTableData[]) {\n        const easyBtnFilteredData = this.getEasyBtnFilteredData(tableData, \"\");\n        const data =\n            easyBtnFilteredData != null ? easyBtnFilteredData : this.annaFilterService.filterData(tableData, \"\");\n        this.annaFilterService.resetFilterSortActiveStatus = false;\n\n        this.tableData = cloneDeep(data);\n        this.enableOrDisableUndoAllMarkForCreditAndMg();\n        this.enableOrDisableMarkForCreditAndMg();\n        this.enableOrDisableHeaderCheckbox();\n        this.enableOrDisableClearAllBtn();\n        this.enableOrDisableEasyFilters(data, false);\n        this.createTotalRow(data);\n        this.updateNavigationHistory();\n        this.cdRef.detectChanges();\n    }\n\n    sortingAppliedToTable(data: SpotTableData[]) {\n        this.tableData = cloneDeep(data);\n        this.enableOrDisableClearAllBtn();\n        this.updateNavigationHistory();\n        this.annaFilterService.resetFilterSortActiveStatus = false;\n    }\n\n    resetAllFiltervariables() {\n        this.initFilters();\n        this.annaSortService.columnSortState = new Map();\n\n        this.gtGeneralConfig.isGrouped = false;\n        this.gtGeneralConfig.showAllColumnFilter = true;\n        this.gtGeneralConfig.totalRow = true;\n        this.gtGeneralConfig.isHeaderChecked = false;\n    }\n\n    clearAllFilter() {\n        this.nonEditableGTComponent?.setScrollToInitialPosition();\n        // this.initSorting();\n        this.resetAllFiltervariables();\n\n        this.tableData = cloneDeep(this.tableDataCloned);\n        // this.checkIfSortingIsApplied();\n        this.enableOrDisableEasyFilters(this.tableData, true);\n\n        // if (this.initialAppliedEasyFilter) {\n        //     this.setFilterAsDefault(this.initialAppliedEasyFilter);\n        // }\n\n        this.initialAppliedEasyFilter = EasyFilterConstants.Booked;\n        this.setFilterAsDefault(this.initialAppliedEasyFilter);\n\n        this.enableOrDisableUndoAllMarkForCreditAndMg();\n        this.enableOrDisableMarkForCreditAndMg();\n        this.enableOrDisableHeaderCheckbox();\n        this.enableOrDisableClearAllBtn();\n        this.createTotalRow(this.tableData);\n        this.annaFilterService.updateStateOfAllTheKeys(this.annaSortService.columnSortState);\n        this.updateNavigationHistory();\n        this.resetFilterOutput.emit();\n    }\n\n    initFilters() {\n        this.annaFilterService.tooltipSelectedMap = new Map();\n        this.annaFilterService.selectedRadio = null;\n        this.annaFilterService.appliedFiltersArray = [];\n    }\n\n    enableOrDisableClearAllBtn() {\n        let isFilterApplied = false;\n        if (this.initialAppliedEasyFilter) {\n            const filterSet = new Set(this.annaFilterService.appliedFiltersArray);\n            const initialAppliedEasyFilter = this.annaSpotDetailsService.easyFilterNamesAndKeyNamesToUseMap[\n                this.initialAppliedEasyFilter\n            ]\n                ? this.annaSpotDetailsService.easyFilterNamesAndKeyNamesToUseMap[this.initialAppliedEasyFilter]\n                : this.initialAppliedEasyFilter;\n            isFilterApplied =\n                (filterSet.has(initialAppliedEasyFilter) && filterSet.size > 1) ||\n                !filterSet.has(initialAppliedEasyFilter);\n        } else {\n            const anyEasyFilterActive = this.getSelectedEasyFilter();\n            const anyAppliedFilter =\n                !this.annaFilterService.appliedFiltersArray.includes(\"showIfBookedFilterSelected\") &&\n                this.annaFilterService.appliedFiltersArray.length > 0;\n            isFilterApplied = anyEasyFilterActive === EasyFilterConstants.UnSelectedBooked || anyAppliedFilter;\n        }\n\n        let isSortApplied = false;\n        this.annaSortService.columnSortState.forEach((value, key) => {\n            if (value === \"ASC\" || value === \"DESC\") {\n                isSortApplied = true;\n            }\n        });\n\n        this.disableClearAllBtn = !(isFilterApplied || isSortApplied);\n        this.cdRef.detectChanges();\n    }\n\n    markSpots(yes: boolean) {\n        // if (yes) {\n        //   if (!this.isUndo) {\n        //     this.preparePayloadAndSendSelectedSpots(this.mgOrCredit);\n        //   }\n        //   else {\n        //     this.preparePayloadAndSendSelectedSpotForUndo(this.mgOrCredit);\n        //   }\n        // }\n        // this.closeCreditOrMgConfirmationModal();\n    }\n\n    closeCreditOrMgConfirmationModal() {\n        // this.confirmationCreditOrMgModalReference.close();\n    }\n\n    openCustomizeColumnsModal() {\n        // obtain checkbox state consistent with table columns visible\n        const visibleColumns: string[] = [];\n        this.tableHeaders.forEach((column) => {\n            if (column.visible) {\n                visibleColumns.push(column.headerInfo[0].objectKey);\n            }\n        });\n        this.customizableColumnsList = cloneDeep(this.customizableColumnsListCloned);\n        this.isRevertCustomizedColumns = false;\n        this.customizableColumnsList.forEach((column) => {\n            if (!column.isFixed && visibleColumns.includes(column.objectKey)) {\n                column.isChecked = true;\n                this.isRevertCustomizedColumns = true;\n            }\n        });\n        this.customizeColumnsModalReference = this.modalService.open(this.customizeColumnsModal, this.ngbModalOptions);\n    }\n\n    selectUnselectCustomizeColumns(column: ICustomizableColumnsForSpotDetails) {\n        const columnIndex = this.customizableColumnsList.findIndex((obj) => obj.objectKey === column.objectKey);\n        this.customizableColumnsList[columnIndex].isChecked = !this.customizableColumnsList[columnIndex].isChecked;\n        this.isRevertCustomizedColumns =\n            this.customizableColumnsList.findIndex((obj) => !obj.isFixed && obj.isChecked) !== -1;\n    }\n\n    revertCustomizedColumns() {\n        this.isRevertCustomizedColumns = false;\n        this.customizableColumnsList.forEach((column) => {\n            if (!column.isFixed) {\n                column.isChecked = false;\n            }\n        });\n    }\n\n    customizeColumns(customize: boolean) {\n        if (customize) {\n            const selectedColumnsList: string[] = [];\n            this.annaFilterService.resetFilterSortActiveStatus = false;\n            this.customizableColumnsList.forEach((column) => {\n                if (!column.isFixed && column.isChecked) {\n                    selectedColumnsList.push(column.objectKey);\n                }\n            });\n            if (selectedColumnsList.length > 0) {\n                const changedTableHeaders = cloneDeep(this.tableHeadersCloned);\n                selectedColumnsList.forEach((selectedColumn) => {\n                    changedTableHeaders.forEach((column) => {\n                        const isSelected =\n                            column.headerInfo.findIndex((obj) => obj.objectKey === selectedColumn) !== -1;\n                        if (isSelected) {\n                            column.visible = true;\n                        }\n                    });\n                });\n                this.tableHeaders = cloneDeep(changedTableHeaders);\n            } else {\n                // revert to default\n                this.tableHeaders = cloneDeep(this.tableHeadersCloned);\n            }\n            this.setGroupedTableData();\n            if (!this.gtGeneralConfig.isGrouped) {\n                this.createTotalRow(this.tableData);\n            } else {\n                this.createTotalRowForGroupedData(this.groupedData);\n            }\n            this.updateNavigationHistory();\n        }\n        this.closeCustomizeColumnsModal();\n    }\n\n    closeCustomizeColumnsModal() {\n        this.customizeColumnsModalReference.close();\n    }\n\n    checkIfOtherEasyFilterIsApplied() {\n        const appliedFiltersSet = new Set(this.annaFilterService.appliedFiltersArray);\n        this.easyFilterNames.forEach((name) => {\n            if (this.easyFilterMap.get(name).active) {\n                this.easyFilterMap.set(name, { active: false, disabled: this.easyFilterMap.get(name).disabled });\n                const nameToUse = this.annaSpotDetailsService.easyFilterNamesAndKeyNamesToUseMap[name];\n                this.annaFilterService.tooltipSelectedMap.delete(nameToUse || name);\n\n                if (nameToUse && appliedFiltersSet.has(nameToUse)) {\n                    appliedFiltersSet.delete(nameToUse);\n                }\n\n                if (name && appliedFiltersSet.has(name)) {\n                    appliedFiltersSet.delete(name);\n                }\n            }\n        });\n        this.annaFilterService.appliedFiltersArray = [...appliedFiltersSet];\n    }\n\n    easyFilterClicked(btnName: string) {\n        const filterName = btnName;\n        this.nonEditableGTComponent?.setScrollToInitialPosition();\n        if (this.easyFilterMap.get(filterName).active) {\n            this.checkIfOtherEasyFilterIsApplied();\n            this.enableOrDisableClearAllBtn();\n\n            const easyBtnFilteredData = this.getEasyBtnFilteredData(this.tableDataCloned, \"\");\n            this.tableData =\n                easyBtnFilteredData != null\n                    ? easyBtnFilteredData\n                    : this.annaFilterService.filterData(this.tableDataCloned, \"\");\n\n            this.enableOrDisableEasyFilters(this.tableData, false);\n            this.enableOrDisableUndoAllMarkForCreditAndMg();\n            this.enableOrDisableMarkForCreditAndMg();\n            this.enableOrDisableHeaderCheckbox();\n            this.createTotalRow(this.tableData);\n            if (this.gtGeneralConfig.isGrouped) {\n                this.gtGeneralConfig.isGrouped = false;\n                this.gtGeneralConfig.totalRow = true;\n                this.gtGeneralConfig.tableContainerName = null;\n                this.gtGeneralConfig.showAllColumnFilter = true;\n            }\n        } else {\n            this.checkIfOtherEasyFilterIsApplied();\n            const nameToUse = this.annaSpotDetailsService.easyFilterNamesAndKeyNamesToUseMap[filterName];\n\n            this.annaFilterService.appliedFiltersArray.push(nameToUse || filterName);\n            this.annaFilterService.tooltipSelectedMap.set(nameToUse || filterName, [true]);\n            this.easyFilterMap.set(filterName, { active: true, disabled: false });\n            if (filterName === EasyFilterConstants.GroupedPEAndMG) {\n                this.filterGroupData();\n            } else {\n                if (this.gtGeneralConfig.isGrouped) {\n                    this.gtGeneralConfig.isGrouped = false;\n                }\n                const easyBtnFilteredData = this.getEasyBtnFilteredData(this.tableDataCloned, \"\");\n                this.tableData =\n                    easyBtnFilteredData != null\n                        ? easyBtnFilteredData\n                        : this.annaFilterService.filterData(this.tableDataCloned, \"\");\n                this.tableData = this.annaFilterService.filterData(this.tableData, \"\");\n                this.enableOrDisableUndoAllMarkForCreditAndMg();\n                this.enableOrDisableMarkForCreditAndMg();\n                this.enableOrDisableHeaderCheckbox();\n                this.createTotalRow(this.tableData);\n            }\n            this.enableOrDisableClearAllBtn();\n        }\n        this.updateNavigationHistory();\n    }\n\n    filterGroupData() {\n        // disable other easy filters\n        this.easyFilterMap.forEach((value, key) => {\n            if (key !== EasyFilterConstants.GroupedPEAndMG) {\n                this.easyFilterMap.set(key, { active: false, disabled: true });\n            }\n        });\n        this.gtGeneralConfig.isGrouped = true;\n        this.gtGeneralConfig.totalRow = true;\n        this.gtGeneralConfig.showAllColumnFilter = false;\n        this.gtGeneralConfig.tableContainerName = TableClassNameConstant.groupedTableClass;\n        this.gtGeneralConfig.disableHeaderCheckbox = true;\n        this.tableData = this.groupedTableData;\n        this.setDisableEnableSpotReportDownloadBtnValue();\n        this.gtGeneralConfig = { ...this.gtGeneralConfig };\n        // this.undoMgSpots = this.undoCreditedSpots = this.spotsSelectedToMarkForCredit = this.spotsSelectedToMarkForMg = false;\n        this.createTotalRowForGroupedData(this.groupedData);\n    }\n\n    updateNavigationHistory() {\n        this.annaSpotDetailsService.filtersAppliedRouteChange = true;\n        const queryParams = this.prepareQueryParamOnFilterApplication();\n        const updatedParentQueryParams = this.queryParams ? cloneDeep(this.queryParams) : {};\n\n        if (Object.keys(queryParams).length > 0) {\n            const hashedQueryParams = this.persistingFilterService.storeKeyValueInLocalStorage(queryParams);\n            this.annaGtService.updateQueryParamsFilter(\"filters\", hashedQueryParams, \"ADD\", updatedParentQueryParams);\n        } else {\n            this.annaGtService.updateQueryParamsFilter(\"filters\", {}, \"DELETE\", updatedParentQueryParams);\n        }\n\n        if (Object.keys(updatedParentQueryParams).length > 0) {\n            this.router.navigate([], {\n                queryParams: updatedParentQueryParams,\n            });\n        } else {\n            this.router.navigate([]);\n        }\n\n        this.anyFilterAppliedToTable.emit();\n        this.setDisableEnableSpotReportDownloadBtnValue();\n    }\n\n    setDisableEnableSpotReportDownloadBtnValue() {\n        const disable = !!(this.showSkeletonLoading || (this.tableData && !(this.tableData.length > 0)));\n        this.annaSpotDetailsService.disableEnableSpotReportDownloadBtnSubject.next(disable);\n    }\n\n    setSortComponentDataProperty(sortComponent: any) {\n        sortComponent.data = this.tableData;\n        sortComponent.clonedData = cloneDeep(this.tableData);\n    }\n\n    prepareQueryParamOnFilterApplication() {\n        const selectedEasyFilter = this.getSelectedEasyFilter();\n        const query: any = {};\n\n        if (\n            this.annaFilterService.appliedFiltersArray.length > 0 &&\n            !(\n                this.annaFilterService.appliedFiltersArray.length === 1 &&\n                selectedEasyFilter === this.initialAppliedEasyFilter\n            )\n        ) {\n            query.appliedFilters = this.annaFilterService.appliedFiltersArray;\n            query.selectedFilterData = JSON.stringify(Array.from(this.annaFilterService.tooltipSelectedMap));\n            query.easyFilters = selectedEasyFilter;\n        }\n\n        if (selectedEasyFilter === EasyFilterConstants.UnSelectedBooked) {\n            query.easyFilters = selectedEasyFilter;\n        }\n\n        if (this.annaGtService.isSortingAppliedToTable()) {\n            query.sortState = JSON.stringify(Array.from(this.annaSortService.columnSortState));\n        }\n\n        if (!isEqual(this.initialNormalizationVal, this.selectedNormalization) && this.showNormalizationToggle) {\n            query.normalizedData = JSON.stringify(this.selectedNormalization);\n        }\n\n        if (this.defaultView !== this.selectedView) {\n            query.selectedView = this.selectedView;\n        }\n\n        if (this.selectedMetric?.text !== this.orderDefaultMetricType) {\n            query.metricType = JSON.stringify(this.selectedMetric?.text);\n        }\n\n        return query;\n    }\n\n    getSelectedEasyFilter() {\n        let easyFilterIndex = -1;\n        let index = 0;\n        this.easyFilterMap.forEach((value, key) => {\n            if (value.active) {\n                easyFilterIndex = index;\n            }\n            index += 1;\n        });\n\n        // if BOOKED Easy filter is not active, then that's consider a change in filter\n        if (\n            easyFilterIndex === -1 &&\n            !this.easyFilterMap.get(EasyFilterConstants.Booked).active &&\n            !this.easyFilterMap.get(EasyFilterConstants.Booked).disabled\n        ) {\n            return EasyFilterConstants.UnSelectedBooked;\n        }\n        return easyFilterIndex === -1 ? null : this.easyFilterNames[easyFilterIndex];\n    }\n\n    initSorting() {\n        // this.annaSortService.columnSortState = new Map();\n        // this.annaSortService.noSortingAppliedData = [];\n    }\n\n    appendOrRemoveClassName(condition: boolean, propertyName: any, className: string) {\n        if (condition) {\n            propertyName.gtClass = propertyName.gtClass.includes(className)\n                ? propertyName.gtClass\n                : propertyName.gtClass.concat(className);\n        } else {\n            propertyName.gtClass = propertyName.gtClass.includes(className)\n                ? propertyName.gtClass.replace(className, \" \")\n                : propertyName.gtClass;\n        }\n    }\n\n    noDataCase() {\n        this.tableData = [];\n        this.tableDataCloned = [];\n        this.totalRowInfo = [];\n        this.disableCustomizeColumnsBtn = true;\n        this.gtGeneralConfig.totalRow = false;\n        this.enableOrDisableEasyFilters([], true);\n        this.initializeCustomizeColumns();\n        this.setDisableEnableSpotReportDownloadBtnValue();\n    }\n\n    setFilterAsDefault(filterName: string) {\n        let isAlreadyEasyFilterApplied = false;\n        this.easyFilterNames.forEach((name) => {\n            if (this.easyFilterMap.get(name).active) {\n                isAlreadyEasyFilterApplied = true;\n                if (\n                    !this.annaFilterService.appliedFiltersArray ||\n                    this.annaFilterService.appliedFiltersArray.length === 0\n                ) {\n                    const nameToUse = this.annaSpotDetailsService.easyFilterNamesAndKeyNamesToUseMap[name];\n\n                    this.annaFilterService.appliedFiltersArray.push(nameToUse || name);\n                    this.annaFilterService.tooltipSelectedMap.set(nameToUse || name, [true]);\n                }\n            }\n        });\n\n        // set default filter if already any easy filter is NOT applied\n        if (!isAlreadyEasyFilterApplied) {\n            this.enableOrDisableEasyFilters(this.tableData, true);\n            if (!this.easyFilterMap.get(filterName).disabled) {\n                this.initialAppliedEasyFilter = filterName;\n                const nameToUse = this.annaSpotDetailsService.easyFilterNamesAndKeyNamesToUseMap[filterName];\n\n                this.annaFilterService.appliedFiltersArray.push(nameToUse || filterName);\n                this.annaFilterService.tooltipSelectedMap.set(nameToUse || filterName, [true]);\n                this.easyFilterMap.set(filterName, { active: true, disabled: false });\n                const easyBtnFilteredData = this.getEasyBtnFilteredData(this.tableDataCloned, \"\");\n                this.tableData =\n                    easyBtnFilteredData != null\n                        ? easyBtnFilteredData\n                        : this.annaFilterService.filterData(this.tableDataCloned, \"\");\n                this.setDisableEnableSpotReportDownloadBtnValue();\n\n                this.createTotalRow(this.tableData);\n            }\n        }\n    }\n\n    applyPeriodSelection(value: DateAndAllKeyType) {\n        this.setSelectedFilterValue(value);\n\n        this.annaSpotDetailsService.filtersAppliedRouteChange = true;\n\n        const objToEmit: any = {\n            selectedPeriodData: this.getFilterPaylod(),\n            resetColumnFilters: this.tableDataCloned && this.tableDataCloned.length > 0,\n        };\n\n        if (objToEmit.resetColumnFilters) {\n            this.initFilters();\n            this.annaSortService.columnSortState = new Map();\n            this.annaFilterService.updateStateOfAllTheKeys(this.annaSortService.columnSortState);\n        }\n\n        this.gtGeneralConfig.isGrouped = false;\n        this.gtGeneralConfig.showAllColumnFilter = true;\n        this.gtGeneralConfig = { ...this.gtGeneralConfig };\n\n        this.periodSelectionChanged.emit(objToEmit);\n        this.checkForCacheDataOtherwiseCallAPI(\n            this.selectedFilterIsAllSpot,\n            this.selectedFilterStartDate,\n            this.selectedFilterEndDate,\n            true,\n        );\n    }\n\n    getEasyBtnFilteredData(originalData: SpotTableData[], keyToSkip: string): null | any[] {\n        const filteredData = originalData;\n        let result = null;\n\n        this.annaFilterService.tooltipSelectedMap.forEach((value, key) => {\n            if (\n                (key !== keyToSkip && this.annaSpotDetailsService.easyFiltersInSpotDetails.has(key)) ||\n                this.annaSpotDetailsService.easyFiltersKeysInSpotDetails.has(key)\n            ) {\n                result = this.annaSpotDetailsService.filterOnEasyFiltersInSpotDetails(\n                    filteredData,\n                    this.annaSpotDetailsService.keyNamesToUseAndEasyFilterNamesMap[key]\n                        ? this.annaSpotDetailsService.keyNamesToUseAndEasyFilterNamesMap[key]\n                        : key,\n                );\n            }\n        });\n        return result;\n    }\n\n    settingConfig() {\n        this.ngbModalOptions = {\n            size: \"lg\",\n        };\n        this.ngSelectConfig = { ...this.annaGlobalConfig.defaultNgSelectSettings };\n        this.gtGeneralConfig = { ...this.annaGlobalConfig.defaultGtGeneralConfig };\n        this.periodModalTitle = this.quarterFilterConstant.SpotDetailsPeriodModalTitle;\n        this.periodModalMessage = this.quarterFilterConstant.SpotDetailsPeriodModalMessage;\n    }\n\n    ngOnDestroy() {\n        this.quarterFilterService.onDropdownChanged = false;\n        this.annaSpotDetailsService.filtersAppliedRouteChange = undefined;\n        this.ngUnsubscribe.next();\n        this.ngUnsubscribe.complete();\n    }\n\n    updateNormalizationValue(val: NormalizedData) {\n        this.selectedNormalization = val;\n        this.annaSpotDetailsService.filtersAppliedRouteChange = true;\n        this.normalizationToggledOrDemoSelectionChanged.emit(val);\n        this.resetTableHeadersBasedOnNormalizationValue(val.toggle);\n        this.resetAllFiltervariables();\n\n        this.enableOrDisableEasyFilters(this.tableData, true);\n\n        if (this.initialAppliedEasyFilter) {\n            this.setFilterAsDefault(this.initialAppliedEasyFilter);\n        }\n        this.updateNavigationHistory();\n        this.checkForCacheDataOtherwiseCallAPI(\n            this.selectedFilterIsAllSpot,\n            this.selectedFilterStartDate,\n            this.selectedFilterEndDate,\n            true,\n        );\n    }\n\n    resetTableHeadersBasedOnNormalizationValue(isNormalized: boolean) {\n        if (this.showNormalizationToggle && this.tableHeaders) {\n            const tableHeaders = cloneDeep(this.tableHeaders);\n            const normalizedColumnIndex: number = tableHeaders?.findIndex((n) =>\n                n.headerInfo[0]?.objectKey?.includes(\"Normalized\"),\n            );\n\n            if (!isNormalized) {\n                if (normalizedColumnIndex !== -1) {\n                    tableHeaders.splice(normalizedColumnIndex, 1);\n                }\n            } else if (normalizedColumnIndex === -1) {\n                const normalizationHedaer = this.annaSpotDetailsService.returnNormalizationHeader(\n                    this.showSkeletonLoading,\n                    this.selectedMetric.text,\n                );\n                const daypartColumnIndex: number = tableHeaders?.findIndex((n) =>\n                    n.headerInfo[0]?.objectKey?.includes(\"DP\"),\n                );\n                tableHeaders.splice(daypartColumnIndex, 0, normalizationHedaer);\n            }\n\n            this.tableHeaders = cloneDeep(tableHeaders);\n        }\n        this.cdRef.detectChanges();\n    }\n\n    onOrderMetricChanged(metric: IdTextForSingleSelect) {\n        this.selectedMetric = metric as { id: number; text: OrderMetrics };\n\n        this.tableData.forEach((spot: SpotTableData) => {\n            const estimatePriorityValByMetric = GenericSpotDetailsService.returnEstimatePrioritiesColumnVal(\n                this.estimatePriorities,\n                spot,\n                this.selectedMetric?.text,\n            );\n            spot.estimatePriorityUpperLabelVal = estimatePriorityValByMetric[0];\n            spot.estimatePriorityLowerLabelVal = estimatePriorityValByMetric[1];\n        });\n\n        this.createTotalRow(this.tableData);\n        this.clearAllFilter();\n        this.metricTypeDropdownChanged.emit(metric.text);\n        this.annaSpotDetailsService.filtersAppliedRouteChange = true;\n        this.updateNavigationHistory();\n    }\n\n    setMetricDropdownConfig() {\n        this.orderMetricsListForDropdown = this.primaryOrderPanelService.getOrderMetricsDropdownValues();\n        this.metricDropdownConfig = { ...this.annaGlobalConfig.defaultSingleSelectConfig };\n        this.metricDropdownConfig.placeholder = \"No data found\";\n    }\n\n    viewChanged(selectedView: any) {\n        this.selectedView = selectedView as SPOTDETAILVIEWS;\n        this.selectedNormalization = { demoId: null, toggle: false };\n        this.selectedMetric =\n            this.orderDefaultMetricType === OrderMetrics.imps\n                ? this.orderMetricsListForDropdown[1]\n                : this.orderMetricsListForDropdown[0];\n        this.resetTableHeadersBasedOnNormalizationValue(false);\n        this.viewToggled.emit(this.selectedView);\n        this.normalizationToggledOrDemoSelectionChanged.emit(this.selectedNormalization);\n        this.metricTypeDropdownChanged.emit(this.selectedMetric.text);\n        this.annaSpotDetailsService.filtersAppliedRouteChange = true;\n        this.resetAllFiltervariables();\n        this.updateNavigationHistory();\n        this.checkForCacheDataOtherwiseCallAPI(\n            this.selectedFilterIsAllSpot,\n            this.selectedFilterStartDate,\n            this.selectedFilterEndDate,\n            true,\n            true,\n        );\n    }\n}\n","<div\n    class=\"warning-error\"\n    *ngIf=\"!showSkeletonLoading && buyerRequestedSpotExists\"\n>\n    <i class=\"mi mdi-warning\"></i>\n    <span>\n        One or more spots have been requested for credit by the buyer. Please mark them for either credit or MakeGood,\n        at the earliest.\n    </span>\n</div>\n\n<section class=\"quarter-filters\">\n    <anna-design-order-container-filter-modal\n        class=\"pr-10\"\n        *ngIf=\"flightPeriodData\"\n        [title]=\"periodModalTitle\"\n        [selectedData]=\"persistingFilterPeriodData\"\n        [disablePeriodSelection]=\"showSkeletonLoading || disablePeriodSelection\"\n        [flightPeriod]=\"flightPeriodData\"\n        [message]=\"periodModalMessage\"\n        [parentQueryParams]=\"queryParams\"\n        [startDateConsideringFactor]=\"startDateConsideringFactor\"\n        (apply)=\"applyPeriodSelection($event)\"\n        (initialQuarterStartEndDateEmitter)=\"initializePeriodFilter($event)\"\n    >\n    </anna-design-order-container-filter-modal>\n\n    <ng-container *ngIf=\"!flightPeriodData\">\n        <div class=\"d-flex flex-column\">\n            <span class=\"header\">Period</span>\n            <ngx-skeleton-loader\n                count=\"1\"\n                [theme]=\"{ width: '280px', height: '25px', 'background-color': '#D8D8D8', 'border-radius': 0 }\"\n            ></ngx-skeleton-loader>\n        </div>\n    </ng-container>\n\n    <ng-container *ngIf=\"showSkeletonLoading\">\n        <anna-design-skt-loader\n            [count]=\"1\"\n            *ngIf=\"showSellerViewToggle\"\n            [theme]=\"{ height: '30px', width: '110px', float: 'left', 'margin-left': '20px', 'margin-bottom': '0px' }\"\n        >\n        </anna-design-skt-loader>\n        <anna-design-skt-loader\n            [count]=\"1\"\n            *ngIf=\"showBuyerViewToggle\"\n            [theme]=\"{ height: '30px', width: '110px', float: 'left', 'margin-bottom': '0px' }\"\n        >\n        </anna-design-skt-loader>\n    </ng-container>\n    <anna-core-button-toggle\n        *ngIf=\"(showSellerViewToggle || showBuyerViewToggle) && !showSkeletonLoading\"\n        [isPageViewToggle]=\"true\"\n        [options]=\"buttonToggleOptions\"\n        [selectedValue]=\"selectedView\"\n        [disabled]=\"tableDataCloned?.length === 0\"\n        (valueChange)=\"viewChanged($event)\"\n    >\n    </anna-core-button-toggle>\n    <!-- <mat-button-toggle-group\n        *ngIf=\"(showSellerViewToggle || showBuyerViewToggle) && !showSkeletonLoading\"\n        class=\"anna-button-toggle\"\n        [value]=\"selectedView\"\n        (change)=\"viewChanged($event.value)\"\n        [disabled]=\"tableDataCloned?.length === 0\"\n    >\n        <mat-button-toggle\n            *ngIf=\"showSellerViewToggle\"\n            [disabled]=\"!showBuyerViewToggle\"\n            value=\"SellerView\"\n            >Seller View</mat-button-toggle\n        >\n        <mat-button-toggle\n            *ngIf=\"showBuyerViewToggle\"\n            value=\"BuyerView\"\n            >Buyer View</mat-button-toggle\n        >\n    </mat-button-toggle-group> -->\n\n    <ng-container *ngIf=\"normalizationDemographics\">\n        <div\n            *ngIf=\"showNormalizationToggle\"\n            class=\"spot-details-normalization\"\n        >\n            <anna-design-demo-normalization\n                [dropdownData]=\"normalizationDemographics\"\n                [selectedFilters]=\"selectedNormalization\"\n                [normalizationTooltipClass]=\"'drr-summary-normalization-tooltip normalization-tooltip'\"\n                (normalizationChange)=\"updateNormalizationValue($event)\"\n                [isDisabled]=\"showSkeletonLoading || (tableData.length === 0 && !APIFailed)\"\n            ></anna-design-demo-normalization>\n            <div\n                *ngIf=\"showNormalizationToggle\"\n                class=\"divider-line\"\n            ></div>\n        </div>\n\n        <anna-design-single-select\n            [items]=\"orderMetricsListForDropdown\"\n            class=\"order-metrics-dropdown\"\n            [selectedItem]=\"selectedMetric\"\n            [config]=\"metricDropdownConfig\"\n            (valueChanged)=\"onOrderMetricChanged($event)\"\n            [disabled]=\"showSkeletonLoading || (tableData?.length === 0 && !APIFailed)\"\n        >\n        </anna-design-single-select>\n    </ng-container>\n\n    <div class=\"d-flex\">\n        <div class=\"mark-for-credit-mg-btns-container\">\n            <!-- <ng-container *ngIf=\"!showSkeletonLoading\">\n        <button\n          *ngIf=\"showMarkForCreditBtn\"\n          class=\"btn-regular btn-action-blue reporting-buttons border-none\"\n          [disabled]=\"!spotsSelectedToMarkForCredit\"\n          (click)=\"openConfirmationModal('Credit')\"\n        >\n          Mark for Credit\n        </button>\n        <button\n          *ngIf=\"showMarkForMakegoodBtn\"\n          class=\"btn-regular btn-action-blue reporting-buttons border-none\"\n          [disabled]=\"!spotsSelectedToMarkForMg\"\n          (click)=\"openConfirmationModal('MakeGood')\"\n        >\n          Mark for MakeGood\n        </button>\n        <button\n          class=\"blue-btn border-none\"\n          [disabled]=\"disableCustomizeColumnsBtn\"\n          (click)=\"openCustomizeColumnsModal()\"\n        >\n          Customize Columns\n        </button>\n      </ng-container> -->\n\n            <!-- <ng-container *ngIf=\"showSkeletonLoading\">\n        <anna-design-skt-loader\n          *ngIf=\"showMarkForCreditBtn\"\n          [count]=\"1\"\n          [theme]=\"{ height: '30px', width: '160px', 'margin-right': '10px' }\"\n        >\n        </anna-design-skt-loader>\n        <anna-design-skt-loader\n          *ngIf=\"showMarkForMakegoodBtn\"\n          [count]=\"1\"\n          [theme]=\"{\n            height: '30px',\n            width: '160px',\n            'margin-top': '12px',\n            'margin-right': '10px'\n          }\"\n        >\n        </anna-design-skt-loader>\n        <anna-design-skt-loader\n          [count]=\"1\"\n          [theme]=\"{ height: '30px', width: '160px' }\"\n        >\n        </anna-design-skt-loader>\n      </ng-container> -->\n        </div>\n    </div>\n</section>\n\n<section\n    class=\"easy-filters\"\n    [ngClass]=\"{ 'easy-filters-loading': showSkeletonLoading }\"\n>\n    <ng-container *ngIf=\"!showSkeletonLoading\">\n        <div>\n            <ng-container\n                class=\"d-flex\"\n                *ngFor=\"let btnName of easyFilterNames; let i = index; let last = last\"\n            >\n                <button\n                    *ngIf=\"\n                        btnName !== easyFilterConstants.GroupedPEAndMG &&\n                        btnName !== easyFilterConstants.ViolatedSpot &&\n                        btnName !== easyFilterConstants.ViolatingSpot &&\n                        btnName !== easyFilterConstants.LateRuns\n                    \"\n                    class=\"intelli-filter\"\n                    [disabled]=\"this.easyFilterMap.get(btnName).disabled\"\n                    [ngClass]=\"{\n                        active: this.easyFilterMap.get(btnName).active,\n                        'only-enabled-button': enabledFiltersCount === 1 && easyFilterMap.get(btnName).active\n                    }\"\n                    (click)=\"easyFilterClicked(btnName)\"\n                >\n                    {{ btnName }}\n                </button>\n                <button\n                    *ngIf=\"btnName === easyFilterConstants.LateRuns && showLateRunsEasyFilter\"\n                    class=\"intelli-filter\"\n                    [disabled]=\"this.easyFilterMap.get(btnName).disabled\"\n                    [ngClass]=\"{\n                        active: this.easyFilterMap.get(btnName).active,\n                        'only-enabled-button': enabledFiltersCount === 1 && easyFilterMap.get(btnName).active\n                    }\"\n                    (click)=\"easyFilterClicked(btnName)\"\n                >\n                    {{ btnName }}\n                </button>\n                <ng-container\n                    *ngIf=\"\n                        btnName === easyFilterConstants.GroupedPEAndMG ||\n                        (showLURVoilationInfo &&\n                            (btnName === easyFilterConstants.ViolatedSpot ||\n                                btnName === easyFilterConstants.ViolatingSpot))\n                    \"\n                >\n                    <div\n                        class=\"filter-divider\"\n                        *ngIf=\"\n                            btnName === easyFilterConstants.GroupedPEAndMG ||\n                            (showLURVoilationInfo &&\n                                (btnName === easyFilterConstants.ViolatedSpot ||\n                                    (btnName === easyFilterConstants.ViolatingSpot && !isCandidateViolation)))\n                        \"\n                    ></div>\n                    <div\n                        class=\"filter-label\"\n                        *ngIf=\"\n                            showLURVoilationInfo &&\n                            (btnName === easyFilterConstants.ViolatedSpot ||\n                                (btnName === easyFilterConstants.ViolatingSpot && !isCandidateViolation))\n                        \"\n                    >\n                        <span>Political Violations</span>\n                    </div>\n                    <button\n                        class=\"intelli-filter\"\n                        [disabled]=\"this.easyFilterMap.get(btnName).disabled\"\n                        [ngClass]=\"{\n                            active: this.easyFilterMap.get(btnName).active,\n                            'only-enabled-button': enabledFiltersCount === 1 && easyFilterMap.get(btnName).active\n                        }\"\n                        (click)=\"easyFilterClicked(btnName)\"\n                    >\n                        {{ btnName }}\n                    </button>\n                </ng-container>\n            </ng-container>\n        </div>\n        <button\n            *ngIf=\"!showSkeletonLoading\"\n            class=\"clear-all-btn\"\n            (click)=\"clearAllFilter()\"\n            [disabled]=\"disableClearAllBtn\"\n        >\n            Reset all filters\n        </button>\n    </ng-container>\n\n    <ng-container *ngIf=\"showSkeletonLoading\">\n        <anna-design-skt-loader\n            [count]=\"\n                showLURVoilationInfo\n                    ? selectedView === 'SellerView'\n                        ? showLateRunsEasyFilter\n                            ? 9\n                            : 8\n                        : showLateRunsEasyFilter\n                          ? 8\n                          : 7\n                    : selectedView === 'SellerView'\n                      ? showLateRunsEasyFilter\n                          ? 8\n                          : 7\n                      : showLateRunsEasyFilter\n                        ? 7\n                        : 6\n            \"\n            [theme]=\"{\n                height: '20px',\n                width: '100px',\n                display: 'inline-block',\n                'margin-right': '10px',\n                'border-radius': '12px',\n                'margin-bottom': '0px'\n            }\"\n        ></anna-design-skt-loader>\n    </ng-container>\n</section>\n<section>\n    <anna-core-non-editable-generic-table-lib\n        [showSkeletonLoading]=\"showSkeletonLoading\"\n        [ngClass]=\"{\n            'spot-detail-no-data-table': !showSkeletonLoading && tableData && tableData.length === 0,\n            'demo-normalisation-set': selectedNormalization?.toggle,\n            default: !selectedNormalization?.toggle,\n            'seller-view-table': selectedView === 'SellerView',\n            'buyer-view-table': selectedView === 'BuyerView'\n        }\"\n        [tableHeaders]=\"tableHeaders\"\n        [tableData]=\"tableData\"\n        [clonedTableData]=\"tableDataCloned\"\n        [tableClass]=\"genericTableClass\"\n        [includeBorderInTableHeight]=\"false\"\n        [gtGeneralConfig]=\"gtGeneralConfig\"\n        [totalRowInfo]=\"totalRowInfo\"\n        [gtDimension]=\"gtDimension\"\n        [fixNumberOfRowsForPopup]=\"primaryOrderPanelService.isPrimaryOrderPanelOpen$ | async\"\n        [showOrHideToggleForTotalRow]=\"true\"\n        (filterAppliedToTable)=\"filterAppliedToTable($event)\"\n        (sortingAppliedToTable)=\"sortingAppliedToTable($event)\"\n        (toggleCheckbox)=\"toggleCheckbox($event)\"\n        (toggleHeaderCheckbox)=\"toggleHeaderCheckbox()\"\n        (undoIconClicked)=\"undoIconClicked($event)\"\n    >\n    </anna-core-non-editable-generic-table-lib>\n</section>\n\n<!-- <ng-template #confirmationCreditOrMgModal let-modal>\n  <div class=\"modal-header confirm-modal-header\">\n    <i class=\"mdi mdi-close mdi-font-md close pull-right\" style=\"cursor: pointer\"\n      (click)=\"closeCreditOrMgConfirmationModal()\"></i>\n    <h4 *ngIf=\"!isUndo\">\n      Are you sure you want to mark the selected spots for {{ mgOrCredit }}?\n    </h4>\n\n    <div class=\"mg-credit-info-message\" *ngIf=\"!isUndo && mgOrCredit !== 'MakeGood'\">\n      Please note that these spots will only be credited in the traffic system\n      during the next revision window.\n    </div>\n\n    <div class=\"mg-credit-info-message\" *ngIf=\"!isUndo && mgOrCredit === 'MakeGood'\">\n      Kindly note that based on the Business Rules set for this order, this\n      action has no effect on any selected no-charge and/or paid preemptions.\n      Buyer credit requested spots, if selected, will be marked as preempted and\n      No-charge preemptions, if selected, will be marked for MG. All of these\n      spots will be picked up for MakeGood in the upcoming revision cycle.\n    </div>\n    <div class=\"mg-credit-info-message\" *ngIf=\"!isUndo && mgOrCredit === 'MakeGood'\">\n      Also note that Unresolved, DR-Preempted and Paid-Preempted spots cannot be\n      marked for MakeGood. You can choose to mark them for credit.\n    </div>\n\n    <div class=\"d-flex justify-content-around mark-spot-button-group\">\n      <div>\n        <button class=\"btn btn-primary mark-spot-yes\" (click)=\"markSpots(true)\">\n          Yes\n        </button>\n      </div>\n      <div>\n        <button class=\"btn btn-primary mark-spot-no\" (click)=\"markSpots(false)\">\n          No\n        </button>\n      </div>\n    </div>\n  </div>\n</ng-template> -->\n\n<!-- <ng-template #customizeColumnsModal let-modal>\n  <div class=\"modal-header\">\n    <i\n      class=\"mdi mdi-close mdi-font-md close pull-right\"\n      style=\"cursor: pointer\"\n      (click)=\"closeCustomizeColumnsModal()\"\n    ></i>\n    <h4>Customize Columns</h4>\n  </div>\n  <div class=\"modal-body customize-columns-modal-body\">\n    <p>Choose columns to be included in table</p>\n\n    <div class=\"customize-columns-btns-container\">\n      <button\n        *ngFor=\"let column of customizableColumnsList\"\n        class=\"customize-columns-btns\"\n        [disabled]=\"column.isFixed\"\n        [ngClass]=\"{ 'customize-column-btn-active': column.isChecked }\"\n        (click)=\"selectUnselectCustomizeColumns(column)\"\n      >\n        <div>\n          <span\n            *ngIf=\"column.isChecked\"\n            class=\"material-icons custom-column-checkbox\"\n          >\n            check_box\n          </span>\n          <span\n            *ngIf=\"!column.isChecked\"\n            class=\"material-icons custom-column-checkbox\"\n          >\n            check_box_outline_blank\n          </span>\n          <span>{{ column.name }}</span>\n        </div>\n      </button>\n    </div>\n    <div class=\"customize-columns-footer\">\n      <div class=\"d-flex align-items-center\">\n        <button\n          class=\"revert-to-default-btn\"\n          (click)=\"revertCustomizedColumns()\"\n          [disabled]=\"!isRevertCustomizedColumns\"\n        >\n          Revert back to default\n        </button>\n      </div>\n      <div>\n        <button\n          class=\"btn-regular btn-action-blue reporting-buttons border-none\"\n          (click)=\"customizeColumns(false)\"\n          style=\"margin-right: 8px\"\n        >\n          Cancel\n        </button>\n        <button class=\"blue-btn border-none\" (click)=\"customizeColumns(true)\">\n          Customize\n        </button>\n      </div>\n    </div>\n  </div>\n</ng-template> -->\n","import { DragDropModule } from \"@angular/cdk/drag-drop\";\nimport { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\nimport { MatExpansionModule } from \"@angular/material/expansion\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { MatInputModule } from \"@angular/material/input\";\nimport { MatMenuModule } from \"@angular/material/menu\";\nimport { MatTableModule } from \"@angular/material/table\";\nimport { RouterModule } from \"@angular/router\";\nimport { AnnaConvertArrayToCommaSeperatedValue, AnnaCoreModule, AnnaDateFormatterPipe } from \"@annalib/anna-core\";\nimport { AnnaDesignComponentsLibModule } from \"@annalib/anna-design-components-lib\";\nimport { NgbModule } from \"@ng-bootstrap/ng-bootstrap\";\nimport { NgxSkeletonLoaderModule } from \"ngx-skeleton-loader\";\nimport { ToastrModule } from \"ngx-toastr\";\n\nimport { AnnaFeatureReadOnlyDirective } from \"./acl-directives/anna-feature-read-only.directive\";\nimport { AudiencePerformanceComponent } from \"./audience-performance/audience-performance.component\";\nimport { BillingDetailsTableComponent } from \"./billing-details-table/billing-details-table.component\";\nimport { BillingReportTableComponent } from \"./billing-report-table/billing-report-table.component\";\nimport { GlobalOrderSearchHeaderComponent } from \"./global-order-search-header/global-order-search-header.component\";\nimport { HiatusWindowPopupComponent } from \"./hiatus-window-popup/hiatus-window-popup.component\";\nimport { LiabilityModalComponent } from \"./liability-modal/liability-modal.component\";\n// eslint-disable-next-line import/no-cycle\nimport { LineDetailsComponent } from \"./line-details/line-details.component\";\nimport { NotificationHeaderComponent } from \"./notifications/app-notification-header/app-notification-header.component\";\nimport { NotificationPageComponent } from \"./notifications/notification-page/notification-page.component\";\nimport { OrderHistoryComponent } from \"./order-history/order-history.component\";\nimport { OrderListingComponent } from \"./order-listing/order-listing.component\";\nimport { OrderRevisionsComponent } from \"./order-revisions/order-revisions.component\";\nimport { PrimaryOrderPanelComponent } from \"./primary-order-panel/primary-order-panel.component\";\nimport { SchedulePostingReportPopupComponent } from \"./schedule-posting-report-popup/schedule-posting-report-popup.component\";\nimport { SpotDetailsComponent } from \"./spot-details/spot-details.component\";\n\n@NgModule({\n    imports: [\n        FormsModule,\n        NgbModule,\n        CommonModule,\n        DragDropModule,\n        NgxSkeletonLoaderModule,\n        AnnaDesignComponentsLibModule,\n        AnnaCoreModule,\n        RouterModule,\n        MatExpansionModule,\n        ReactiveFormsModule,\n        MatMenuModule,\n        MatIconModule,\n        MatTableModule,\n        MatIconModule,\n        MatInputModule,\n        ToastrModule.forRoot({\n            positionClass: \"toast-bottom-right\",\n        }),\n        AudiencePerformanceComponent,\n        BillingReportTableComponent,\n        BillingDetailsTableComponent,\n        SpotDetailsComponent,\n        PrimaryOrderPanelComponent,\n        OrderRevisionsComponent,\n        LineDetailsComponent,\n        OrderHistoryComponent,\n        NotificationHeaderComponent,\n        NotificationPageComponent,\n        OrderListingComponent,\n        GlobalOrderSearchHeaderComponent,\n        AnnaFeatureReadOnlyDirective,\n        LiabilityModalComponent,\n        HiatusWindowPopupComponent,\n        SchedulePostingReportPopupComponent,\n    ],\n    exports: [\n        AudiencePerformanceComponent,\n        BillingReportTableComponent,\n        BillingDetailsTableComponent,\n        SpotDetailsComponent,\n        PrimaryOrderPanelComponent,\n        OrderRevisionsComponent,\n        LineDetailsComponent,\n        OrderHistoryComponent,\n        NotificationHeaderComponent,\n        NotificationPageComponent,\n        OrderListingComponent,\n        GlobalOrderSearchHeaderComponent,\n        AnnaFeatureReadOnlyDirective,\n        HiatusWindowPopupComponent,\n        SchedulePostingReportPopupComponent,\n    ],\n    providers: [AnnaDateFormatterPipe, AnnaConvertArrayToCommaSeperatedValue],\n})\nexport class AnnaFeatureLibModule { }\n","/* eslint-disable func-names */\nimport {\n    AnnaPersistingFilterService,\n    ClickableItem,\n    IActionItemTypeWithStringIconOrTextAction,\n} from \"@annalib/anna-core\";\nimport dayjs from \"dayjs\";\nimport { cloneDeep } from \"lodash-es\";\n\nconst colorsClasses = [\n    \"station-E120A7\",\n    \"station-208BE1\",\n    \"station-F3BD18\",\n    \"station-F31818\",\n    \"station-18D869\",\n    \"station-1834D8\",\n    \"station-BD18F3\",\n    \"station-F36618\",\n];\nconst stationColourMap = new Map<string, string>();\nconst notificationsTypeMap = new Map<string, string>([\n    [\"OTHERS\", \"Others\"],\n    [\"DAILY_UPDATES\", \"Daily Updates\"],\n]);\nconst urlMapForView = new Map<string, { url: string; filters: any; filterKey: string }>([\n    [\n        \"TODAYS_ANNA_REVISIONS_ASA\",\n        {\n            url: \"orders/todays-anna-offers\",\n            filterKey: \"\",\n            filters: {\n                appliedFilters: [\n                    \"easy_automationActivatedGroup_isWriteEnabledOrder\",\n                    \"easy_revisionStatusGroup_orderRevisionStatusForEasyFilter\",\n                ],\n                selectedFilterData:\n                    '[[\"isWriteEnabledOrder\",[true]],[\"orderRevisionStatusForEasyFilter\",[\"Seller Pending\"]]]',\n            },\n        },\n    ],\n    [\n        \"TODAYS_ANNA_REVISIONS_RG\",\n        {\n            url: \"orders/todays-anna-offers\",\n            filterKey: \"\",\n            filters: {\n                appliedFilters: [\"orderRevisionStatus\"],\n                selectedFilterData: '[[\"orderRevisionStatus\",[\"REV GENERATED\"]]]',\n                easyFilter: \"REV GENERATED\",\n            },\n        },\n    ],\n    [\"TODAYS_USER_REVISIONS\", { url: \"orders/todays-user-revisions\", filterKey: \"\", filters: null }],\n    [\"TODAYS_USER_REVISIONS\", { url: \"orders/todays-user-revisions\", filterKey: \"\", filters: null }],\n    [\"ORDER_BIZ_RULES_PAGE\", { url: \"order-business-rules\", filterKey: \"\", filters: null }],\n    [\"ADVERTISER_BIZ_RULES_PAGE\", { url: \"business-rules/advertiser\", filterKey: \"\", filters: null }],\n    [\"USERS_AWAITING_ACTION_PAGE\", { url: \"users/users-awaiting-action\", filterKey: \"\", filters: null }],\n    [\"LINE_DETAILS\", { url: \"line-details\", filterKey: \"\", filters: null }],\n    [\"BULK_COPY_STATUS_POPUP\", { url: \"BULK_COPY_STATUS_POPUP\", filterKey: \"\", filters: null }],\n    [\"EC_ORDER\", { url: \"orders/ec-orders\", filterKey: \"\", filters: null }],\n    [\"DYNAMIC_RATES_PUBLISH_POPUP\", { url: \"yield-management-center/dynamic-rates\", filterKey: \"\", filters: null }],\n    [\"GUIDANCE_RATES_LISTING\", { url: \"yield-management-center/guidance-rates\", filterKey: \"\", filters: null }],\n    [\"SECTION_RATES_EDIT_PAGE\", { url: \"yield-management-center/section-rate-card\", filterKey: \"\", filters: null }],\n]);\n\nenum TypeOfActionLinkForGtEnumNotifications {\n    MARK_AS_READ = \"MARK_AS_READ\",\n}\n\nexport class NotificationList {\n    notifications: Notification[] = [];\n    unreadCount: number = 0;\n    constructor(notificationList: any, persistingFilterService: AnnaPersistingFilterService) {\n        notificationList.forEach((notif: any) => {\n            if (!notif.isRead) {\n                this.unreadCount += 1;\n            }\n            this.notifications.push(new Notification(notif, persistingFilterService));\n        });\n    }\n}\n\nexport class CollapseableData {\n    text: string;\n    label: string;\n    isExpanded: boolean;\n    title: string;\n    constructor(data: any) {\n        this.text = data.Body.length > 186 ? `${data.Body.slice(0, 186)}...` : data.Body;\n        this.title = data.Body.length > 186 ? data.Body : \"\";\n        this.isExpanded = false;\n        this.label = data.Title;\n    }\n    expandClicked() {\n        this.isExpanded = !this.isExpanded;\n    }\n}\n\nexport class Buttons {\n    text: string;\n    action: string;\n    constructor(data: any) {\n        this.text = data.Name;\n        this.action = data.Url;\n    }\n}\n\nexport class AdditionalDataForLink {\n    orderId?: string;\n    stationId?: string;\n    flightStartDate?: string;\n    flightEndDate?: string;\n    advertiserId?: string;\n    campaignId?: string;\n    advertiserName?: string;\n    emailId?: string;\n    transactionId?: string;\n    userName?: string; // name of the user not the usercode\n    /** Dynamic rates notification: period info from backend AdditionalData */\n    periodInformation?: string;\n    periodType?: string;\n    startDate?: string;\n    endDate?: string;\n    constructor(obj: any) {\n        const data: any = obj && obj !== \"\" ? JSON.parse(obj) : null;\n        this.orderId = data?.OrderId;\n        this.transactionId = data?.TransactionId;\n        this.stationId = data?.StationId;\n        this.flightStartDate = data?.FlightStartDate;\n        this.flightEndDate = data?.FlightEndDate;\n        this.advertiserId = data?.AdvertiserId;\n        this.campaignId = data?.CampaignId;\n        this.advertiserName = data?.AdvertiserName;\n        this.emailId = data?.UserEmail;\n        this.userName = data?.UserName;\n        this.periodInformation = data?.PeriodInformation;\n        this.periodType = data?.PeriodType;\n        this.startDate = data?.StartDate;\n        this.endDate = data?.EndDate;\n    }\n}\n\nexport class ClickableLink {\n    label: string;\n    pageUrl: string;\n    queryParams: any;\n    additionalDataForLink: AdditionalDataForLink;\n    constructor(data: any) {\n        this.label = data.Name;\n        this.pageUrl = urlMapForView.get(data?.Url).url;\n        this.queryParams = urlMapForView.get(data.Url).filterKey;\n        this.additionalDataForLink = new AdditionalDataForLink(data.AdditionalData);\n    }\n}\n\nconst getLinkHTML = function (\n    data: { Name: string; Url: string }[],\n    persistingFilterService: AnnaPersistingFilterService,\n) {\n    if (!data || data?.length === 0) return \"\";\n    let html = \"\";\n    data.forEach((link: { Name: string; Url: string }) => {\n        if (urlMapForView.has(link.Url)) {\n            const urlAndFilters = urlMapForView.get(link.Url);\n            const filterkey: string = !urlAndFilters.filterKey\n                ? persistingFilterService.storeKeyValueInLocalStorage(urlAndFilters.filters, true)\n                : urlAndFilters.filterKey;\n            urlAndFilters.filterKey = filterkey;\n            urlMapForView.set(link.Url, cloneDeep(urlAndFilters));\n            html += ` <a class='view-link ${urlAndFilters.url}'>${link.Name}</a>`;\n            // html += \" <a class='view-link' href='/#/\" + urlAndFilters.url + (filterkey ? '?filters=' + filterkey : '') + \"'>\" + link.Name + '</a>';\n        }\n    });\n    return html;\n};\n\nexport class Notification {\n    station: string;\n    id: string;\n    date: string;\n    time: string;\n    message: string;\n    timezone: string;\n    displayDate: string;\n    displayTime: string;\n\n    isRead: boolean;\n    hover: boolean;\n    showTooltip: boolean;\n    gtClass: string;\n    icon: string;\n    nameActionKey: ClickableItem[] = [];\n    userActivityTooltipKey: { key: string; value: string }[] = [];\n    tooltipData: { key: string; value: string }[] = [];\n    readActionKey: IActionItemTypeWithStringIconOrTextAction[] = [];\n    collapseableData: CollapseableData;\n    buttons: { text: string; action: string }[] = [];\n    displayType: string;\n    type: string;\n    stationColorClass: string;\n    tableMessages: string;\n    isCurrentDailyRevision: boolean;\n    clickableItems: ClickableLink[] = [];\n\n    constructor(data: any, persistingFilterService: AnnaPersistingFilterService) {\n        this.id = data.NotificationId;\n        this.station = data.StationName ? data.StationName : \"-\";\n        // station name display color\n        if (stationColourMap.has(this.station)) this.stationColorClass = stationColourMap.get(this.station);\n        else {\n            stationColourMap.set(this.station, colorsClasses[stationColourMap.size % 8]);\n            this.stationColorClass = stationColourMap.get(this.station);\n        }\n        this.date = data.DisplayDate;\n        this.time = data.Time;\n        this.displayTime = data.DisplayTime;\n        this.displayDate = dayjs(data.DisplayDate).format(\"MM/DD/YY\");\n        this.timezone = data.Timezone;\n        this.message = data.Message;\n        const messageWithLink = `<div class='message-text'>${data.Message}${getLinkHTML(data.Links, persistingFilterService)}</div>`;\n        // if (this.station == null) this.message = messageWithLink;\n        // else\n        //   this.message =\n        //     messageWithLink +\n        //     ' <span class=\"station-display ' +\n        //     this.stationColorClass +\n        //     '\">' +\n        //     this.station +\n        //     '</span>';\n\n        this.collapseableData = data.CollapsibleInfo?.length > 0 ? new CollapseableData(data.CollapsibleInfo[0]) : null;\n        data.Buttons?.forEach((button: any) => this.buttons.push(new Buttons(button)));\n        this.tableMessages = messageWithLink;\n        if (this.collapseableData) {\n            this.tableMessages += getCollapsibleHTML(this.collapseableData);\n        } else if (this.buttons?.length > 0) {\n            this.tableMessages += getButtonsHTML(this.buttons);\n        }\n        this.tooltipData.push({ key: \"read\", value: \"Mark as Read\" });\n        this.isRead = data.IsRead;\n        this.clickableItems = data.Links?.map((link: any) => new ClickableLink(link));\n        this.gtClass = this.isRead ? \"read\" : \"unread\";\n        this.readActionKey.push(\n            new IconActionForRead(TypeOfActionLinkForGtEnumNotifications.MARK_AS_READ, this.tooltipData, this.isRead),\n        );\n        this.type = data.Tab;\n        this.displayType = notificationsTypeMap.get(data.Tab);\n        this.isCurrentDailyRevision = data.IsCurrentDailyRevision;\n    }\n}\n\nclass IconActionForRead {\n    id: string;\n    data: string;\n    iconClass: string;\n    showIcon: boolean = false;\n    disabledIcon: boolean = false;\n    linkClass: string;\n    showLink: boolean = false;\n    disabledLink: boolean = false;\n    showTooltip: boolean = false;\n    enableTooltipForAdditionalText: boolean = true;\n    typeOfData: \"STRING\" | \"ICON_TEXT_ACTION\";\n    additionalTextBeforeLink: string;\n    tooltipData: { key: string; value: string }[];\n    tooltipPlacement: string;\n    tooltipClass: string;\n    constructor(\n        typeOfActionLinkForGt: TypeOfActionLinkForGtEnumNotifications,\n        tooltipData: { key: string; value: string }[],\n        isRead: boolean,\n    ) {\n        this.id = typeOfActionLinkForGt;\n        this.tooltipData = tooltipData;\n        this.typeOfData = \"ICON_TEXT_ACTION\";\n        this.showIcon = !isRead;\n        this.showTooltip = true;\n        this.disabledIcon = false;\n        this.showLink = false;\n        this.iconClass = isRead ? \"\" : \"mdi mdi-checkbox-blank-circle unread-mark  on-hover\";\n        this.enableTooltipForAdditionalText = true;\n        this.tooltipClass = \"notification-tooltip\";\n    }\n}\n\nexport interface INotificationTab {\n    id: number;\n    name: string;\n    key: string;\n    notificationCount: number;\n}\n\nlet getCollapsibleHTML = function (data: CollapseableData) {\n    const orders = data.title ? data.title : data.text;\n    return `<div class=\"expansion-container\"><span onClick=\"collapseClicked()\">${data.label}<i class=\"expantion-icon\"></i></span> <span class=\"expanded-data expanded\"> ${orders}</span></div>`;\n};\n\nlet getButtonsHTML = function (data: Buttons[]) {\n    let html = '<div class=\"notification-button\">';\n    data.forEach((btn) => {\n        html += `<span><a class=\"download-button\" href=\"${btn.action}\" target=\"_blank\">${btn.text}</a></span>`;\n    });\n    return `${html}</div>`;\n};\n\nexport interface MarkAsReadPayload {\n    UserId: number;\n    NotificationIds: string[];\n}\n","import { CurrencyPipe } from \"@angular/common\";\nimport { GTTableRelatedCommonFunctionsService, IActionItemTypeWithStringIconOrTextAction } from \"@annalib/anna-core\";\n\nexport class OrderRevisions {\n    RevisionNumber: number;\n    RoId: number | null;\n    RevisionType: \"ANNA\" | \"Seller User\" | \"Buyer\";\n    GeneratedOn: string;\n    BookedValue: string;\n    BookedSpots: number;\n    BookedGRP: number;\n    BookedIMPS: number;\n    IMPS: number;\n    BookedCPP: number;\n    BookedCPM: number;\n    DisplayBookedGRP: string;\n    DisplayBookedIMPS: string;\n    DisplayBookedCPP: string;\n    DisplayBookedCPM: string;\n    DisplayBookedSpots: string;\n    MGsValue: number;\n    ADUsValue: number;\n    BuyerChangesValue: number;\n    UserChangesValue: number;\n    CreditedValue: number;\n    UserUnresolvedValue: number;\n    BuyerAddedValue: number;\n    BuyerDeletedValue: number;\n\n    BookedValueForDisplay: string | number;\n    MGsValueForDisplay: string | number;\n    ADUsValueForDisplay: string | number;\n    CreditedValueForDisplay: string | number;\n    UserUnresolvedValueForDisplay: string | number;\n    BuyerAddedValueForDisplay: string | number;\n    BuyerDeletedValueForDisplay: string | number;\n    BuyerChangesValueForDisplay: string | number;\n    UserChangesValueForDisplay: string | number;\n    backgroundColor: string;\n    rowClass: string;\n    AllowClick: boolean;\n\n    buyerGrpChangesValue: number;\n    buyerImpChangesValue: number;\n    buyerGrpChangesValueDisplay: string;\n    buyerImpChangesValueDisplay: string;\n\n    tooltipData: { key: string; value: string }[] = [];\n    readActionKey: IActionItemTypeWithStringIconOrTextAction[] = [];\n    buyerAddedValueDisplay: string;\n    buyerDeletedValueDisplay: string;\n\n    constructor(data: any, currencyPipe: CurrencyPipe) {\n        this.RevisionNumber = data.RevisionNumber;\n        this.RoId = data.RoId ?? null;\n        this.RevisionType = data.RevisionType;\n        this.GeneratedOn = data.GeneratedOn;\n        this.BookedSpots = data.BookedSpots;\n        this.BookedValue = data.BookedValue;\n        this.MGsValue = data.MGValue === \"-\" ? null : +data.MGValue;\n        this.ADUsValue = data.ADUValue === \"-\" ? null : +data.ADUValue;\n        this.BuyerChangesValue = data.BuyerChangesValue === \"-\" ? null : +data.BuyerChangesValue;\n        this.UserChangesValue = data.UserChangesValue === \"-\" ? null : +data.UserChangesValue;\n        this.UserUnresolvedValue = data.UserUnresolvedValue === \"-\" ? null : +data.UserUnresolvedValue;\n        this.CreditedValue = data.CreditedValue === \"-\" ? null : +data.CreditedValue;\n        this.BuyerAddedValue = data.BuyerAddedValue === \"-\" ? null : +data.BuyerAddedValue;\n        this.BuyerDeletedValue = data.BuyerDeletedValue === \"-\" ? null : +data.BuyerDeletedValue;\n        this.BuyerDeletedValue = data.BuyerDeletedValue === \"-\" ? null : +data.BuyerDeletedValue;\n        this.BookedGRP = data.BookedGRP;\n        this.BookedIMPS = data.BookedIMPS;\n        this.IMPS = data.BookedIMPS;\n\n        this.buyerGrpChangesValue = data.BuyerGrpChangesValue;\n        this.buyerImpChangesValue = data.BuyerImpChangesValue;\n\n        this.buyerGrpChangesValueDisplay =\n            data.BuyerGrpChangesValue !== \"-\"\n                ? GTTableRelatedCommonFunctionsService.GetGrpOrImpsRoundedValue(data.BuyerGrpChangesValue, 2)\n                : \"-\";\n        this.buyerImpChangesValueDisplay =\n            data.BuyerGrpChangesValue !== \"-\"\n                ? GTTableRelatedCommonFunctionsService.GetGrpOrImpsRoundedValue(data.BuyerImpChangesValue, 1)\n                : \"-\";\n\n        this.buyerAddedValueDisplay =\n            data.BuyerAddedValue !== \"-\" ? currencyPipe.transform(data.BuyerAddedValue, \"USD\", \"symbol\", \"1.0-2\") : \"-\";\n\n        this.buyerDeletedValueDisplay =\n            data.BuyerDeletedValue !== \"-\"\n                ? currencyPipe.transform(data.BuyerDeletedValue, \"USD\", \"symbol\", \"1.0-2\")\n                : \"-\";\n\n        this.DisplayBookedGRP = this.BookedGRP.toLocaleString(\"en-us\", {\n            minimumFractionDigits: 0,\n            maximumFractionDigits: 2,\n        });\n        this.DisplayBookedIMPS = this.BookedIMPS.toLocaleString(\"en-us\", {\n            minimumFractionDigits: 0,\n            maximumFractionDigits: 2,\n        });\n\n        this.BookedCPP = data.BookedCPP;\n        this.BookedCPM = data.BookedCPM;\n        this.DisplayBookedCPP = currencyPipe.transform(data.BookedCPP, \"USD\", \"symbol\", \"1.0-0\");\n        this.DisplayBookedCPM = currencyPipe.transform(data.BookedCPM, \"USD\", \"symbol\", \"1.0-0\");\n\n        this.DisplayBookedSpots = data.BookedSpots.toLocaleString(\"en-us\");\n        this.BookedValueForDisplay =\n            data.BookedValue && data.BookedValue !== \"-\"\n                ? currencyPipe.transform(data.BookedValue, \"USD\", \"symbol\", \"1.0-2\")\n                : data.BookedValue;\n        this.MGsValueForDisplay =\n            data.MGValue && data.MGValue !== \"-\"\n                ? currencyPipe.transform(data.MGValue, \"USD\", \"symbol\", \"1.0-0\")\n                : data.MGValue;\n        this.ADUsValueForDisplay =\n            data.ADUValue && data.ADUValue !== \"-\"\n                ? currencyPipe.transform(data.ADUValue, \"USD\", \"symbol\", \"1.0-0\")\n                : data.ADUValue;\n        this.CreditedValueForDisplay =\n            data.CreditedValue && data.CreditedValue !== \"-\"\n                ? currencyPipe.transform(data.CreditedValue, \"USD\", \"symbol\", \"1.0-0\")\n                : data.CreditedValue;\n        this.UserUnresolvedValueForDisplay =\n            data.UserUnresolvedValue && data.UserUnresolvedValue !== \"-\"\n                ? currencyPipe.transform(data.UserUnresolvedValue, \"USD\", \"symbol\", \"1.0-0\")\n                : data.UserUnresolvedValue;\n        this.BuyerAddedValueForDisplay =\n            data.BuyerAddedValue && data.BuyerAddedValue !== \"-\"\n                ? currencyPipe.transform(data.BuyerAddedValue, \"USD\", \"symbol\", \"1.0-0\")\n                : data.BuyerAddedValue;\n        this.BuyerDeletedValueForDisplay =\n            data.BuyerDeletedValue && data.BuyerDeletedValue !== \"-\"\n                ? currencyPipe.transform(data.BuyerDeletedValue, \"USD\", \"symbol\", \"1.0-0\")\n                : data.BuyerDeletedValue;\n        this.BuyerChangesValueForDisplay =\n            data.BuyerChangesValue && data.BuyerChangesValue !== \"-\"\n                ? currencyPipe.transform(data.BuyerChangesValue, \"USD\", \"symbol\", \"1.0-0\")\n                : data.BuyerChangesValue;\n        this.UserChangesValueForDisplay =\n            data.UserChangesValue && data.UserChangesValue !== \"-\"\n                ? currencyPipe.transform(data.UserChangesValue, \"USD\", \"symbol\", \"1.0-0\")\n                : data.UserChangesValue;\n\n        this.AllowClick = data.AllowClick;\n        this.backgroundColor = !this.AllowClick ? \"#DEDEDE\" : \"#FFFFFF\";\n        this.rowClass = !this.AllowClick ? \"non-clickable-row\" : \"\";\n\n        this.tooltipData.push({ key: data.ToolTipMessage, value: null });\n        this.readActionKey.push(\n            new IconActionForRead(data.ToolTipMessage !== \"\", this.tooltipData, this.RevisionNumber),\n        );\n    }\n}\n\nexport interface IOrderRevisionPayload {\n    orderId: number;\n    stationId: number;\n    equivalisation: boolean;\n}\n\nexport interface RevisionInfoForRoute {\n    selectedRevisionNumber: number;\n}\n\nexport class IconActionForRead {\n    id: string;\n    data: string;\n    iconClass: string;\n    showIcon: boolean = false;\n    disabledIcon: boolean = false;\n    linkClass: string;\n    showLink: boolean = false;\n    disabledLink: boolean = false;\n    showTooltip: boolean = false;\n    enableTooltipForAdditionalText: boolean = true;\n    typeOfData: \"STRING\" | \"ICON_TEXT_ACTION\";\n    additionalTextBeforeLink: string;\n    tooltipData: { key: string; value: string }[];\n    tooltipPlacement: string;\n\n    constructor(isToolTipNeeded: boolean, tooltipData: { key: string; value: string }[], revNumber: number) {\n        if (isToolTipNeeded) {\n            this.tooltipData = tooltipData;\n            this.tooltipPlacement = \"right\";\n            this.typeOfData = \"STRING\";\n            this.data = revNumber.toString();\n            this.showIcon = true;\n            this.showTooltip = true;\n            this.disabledIcon = false;\n            this.showLink = false;\n            this.iconClass = \"mi mdi-info-outline\";\n            this.enableTooltipForAdditionalText = true;\n        } else {\n            this.tooltipData = tooltipData;\n            this.typeOfData = \"STRING\";\n            this.data = revNumber.toString();\n            this.showIcon = false;\n            this.showTooltip = false;\n            this.disabledIcon = true;\n            this.showLink = false;\n        }\n    }\n}\n","import { BizRuleStatus } from \"@annalib/anna-feature-shared-lib\";\n\nimport { OrderType } from \"../../order-listing/models/order-listing.model\";\n\nexport interface IOrder {\n    StationId: number; // coming from backend equivalent to channel Id\n    BuyerOrderId: string; // coming from backend equivalent to orderId and displayOrderId\n    CampaignId: string; // coming from backend equivalent to campaign Id\n    FlightStartDate?: string; // coming from backend equivalent to campaignStartDate\n    FlightEndDate?: string; // coming from backend equivalent to campaignEndDate\n    AdvertiserId?: number; // coming from backend quivalent to advertiserId\n    StationName?: string; // coming from backend equivalent to station\n    BizRuleStatus?: BizRuleStatus; // coming from backend [\"NOTIFY\",\"ACCEPTED\",\"REJECTED\",\"AWAITING_APPROVAL\"]\n    RevenueType?: \"TV Revenue\" | \"Other Revenue\";\n    RedirectTo: \"line-details\" | \"order-business-rules\" | \"audience-performance\";\n    OrderType?: OrderType;\n    DisplayOrderId: string;\n    AltOrderId: string; // coming from backend might be null or empty\n    // used to redirect from search bar.\n    // If \"NOTIFY\" redirect to 'business rule' else to 'audience performance'.\n}\n\nexport interface IOrderSearch {\n    channelId: number;\n    orderId: string;\n    displayOrderId: string;\n    currentTab: string;\n    campaignId: string;\n    campaignStartDate: string;\n    campaignEndDate: string;\n    advertiserId: number;\n    navigateTo: string;\n    searchRedirected: boolean;\n    stationName?: string;\n    orderType?: string;\n    isPaidOrder?: boolean;\n}\nexport interface IOrderArray {\n    Orders: IOrder[];\n}\n\nexport enum BizRulesEnum {\n    notify = 0,\n    awaiting_approval = 1,\n    rejected = 2,\n    accepted = 3,\n}\n","/* eslint-disable import/no-cycle */\n/*\n * Public API Surface of anna-feature-lib\n */\n\nexport * from \"./lib/anna-feature-lib.module\";\n\n// COMPONENT\nexport * from \"./lib/audience-performance/audience-performance.component\";\nexport * from \"./lib/billing-details-table/billing-details-table.component\";\nexport * from \"./lib/billing-report-table/billing-report-table.component\";\nexport * from \"./lib/hiatus-window-popup/hiatus-window-popup.component\";\nexport * from \"./lib/line-details/line-details.component\";\nexport * from \"./lib/notifications/app-notification-header/app-notification-header.component\";\nexport * from \"./lib/notifications/notification-page/notification-page.component\";\nexport * from \"./lib/order-history/order-history.component\";\nexport * from \"./lib/order-listing/order-listing.component\";\nexport * from \"./lib/order-revisions/order-revisions.component\";\nexport * from \"./lib/primary-order-panel/primary-order-panel.component\";\nexport * from \"./lib/schedule-posting-report-popup/schedule-posting-report-popup.component\";\nexport * from \"./lib/spot-details/spot-details.component\";\n\n// MODELS\nexport * from \"./lib/audience-performance/models/audiencePerformance.model\";\nexport * from \"./lib/billing-report-table/models/billing-report-table.model\";\nexport * from \"./lib/hiatus-window-popup/model/hiatus-window-popup.model\";\nexport * from \"./lib/line-details/models/line-details.model\";\nexport * from \"./lib/notifications/models/notifications.model\";\nexport * from \"./lib/notifications/utils/notification-navigation.util\";\nexport * from \"./lib/order-history/models/orderHistory.model\";\nexport * from \"./lib/order-listing/models/order-listing.model\";\nexport * from \"./lib/order-listing/models/order-listing-backend-token.service\";\nexport * from \"./lib/order-revisions/models/orderRevisionsModel\";\nexport * from \"./lib/primary-order-panel/models/primary-order-panel.model\";\nexport * from \"./lib/spot-details/models/generic-spot-details.model\";\nexport * from \"./lib/spot-details/models/spot-details.model\";\n\n// CONSTANTS\nexport * from \"./lib/audience-performance/constants/audiencePerformance.constant\";\nexport * from \"./lib/order-listing/models/order-listing.constant\";\nexport * from \"./lib/order-revisions/constants/order-revisions.constants\";\nexport * from \"./lib/schedule-posting-report-popup/Model/schedulePostingReportPopup.model\";\nexport * from \"./lib/spot-details/constants/spot-details.constants\";\n\n// SERVICES\nexport * from \"./lib/billing-report-table/services/billing-report-table.service\";\nexport * from \"./lib/global-order-search-header/global-order-search-header.component\";\nexport * from \"./lib/global-order-search-header/models/global-order-search-header.model\";\nexport * from \"./lib/line-details/config/line-details-service.token\";\nexport * from \"./lib/login/login-token.service\";\nexport * from \"./lib/notifications/mass-copy-status-popup/services/mass-copy-status-backend.service\"\nexport * from \"./lib/notifications/services/notifications.service\";\nexport * from \"./lib/order-history/order-history-backend-service.token\";\nexport * from \"./lib/order-history/services/order-history.service\";\nexport * from \"./lib/order-listing/services/dashboard-and-order-listing.service\";\nexport * from \"./lib/order-listing/services/order-listing-helper.service\";\nexport * from \"./lib/order-revisions/services/orderRevisions.service\";\nexport * from \"./lib/spot-details/config/spot-details-backend-service.token\";\nexport * from \"./lib/spot-details/services/generic-spot-details.service\";\nexport * from \"./lib/spot-details/services/spot-details.service\";\n// Directives\nexport * from \"./lib/acl-directives/anna-feature-read-only.directive\";\nexport * from \"./lib/hiatus-window-popup/service/hiatus-window-popup-token.service\";\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","OrderTypeConstants","i3","i2.HiatusWindowPopupService","i1.NotificationsService","i4","i3.NotificationsService","i5","i6","Constants","TableHeaderNames","i7.DashboardAndOrderListingService","i8.OrderListingHelperService","i9","i2.OrderRevisionsService","i7","i8","IconActionForRead"],"mappings":"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"}