{"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/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\";\r\nimport { AnnaLibAclService } from \"@annalib/anna-cognito-lib\";\r\n\r\n@Directive({\r\n    selector: \"[annaFeatureReadOnly]\",\r\n    standalone: true,\r\n})\r\nexport class AnnaFeatureReadOnlyDirective implements AfterViewChecked {\r\n    public elem: HTMLElement;\r\n    permissionStatus: boolean;\r\n\r\n    constructor(\r\n        @Inject(ElementRef) private el: ElementRef,\r\n        @Inject(AnnaLibAclService) public aclService: AnnaLibAclService,\r\n    ) {}\r\n\r\n    ngAfterViewChecked() {\r\n        this.elem = this.el.nativeElement;\r\n        this.permissionStatus = this.aclService.isUserAuthorisedToAccessElement(this.elem.id);\r\n        if (this.permissionStatus) {\r\n            this.elem.removeAttribute(\"disabled\");\r\n        } else {\r\n            this.elem.setAttribute(\"disabled\", \"true\");\r\n        }\r\n    }\r\n}\r\n","import { NgClass, NgIf } from \"@angular/common\";\r\nimport {\r\n    ChangeDetectionStrategy,\r\n    Component,\r\n    EventEmitter,\r\n    Input,\r\n    OnChanges,\r\n    Output,\r\n    SimpleChanges,\r\n} from \"@angular/core\";\r\nimport { FormBuilder, FormGroup, FormsModule, ReactiveFormsModule, Validators } from \"@angular/forms\";\r\nimport { AnnaCoreModule, IRadioButtonComponentConfig } from \"@annalib/anna-core\";\r\nimport { AnnaDesignComponentsLibModule } from \"@annalib/anna-design-components-lib\";\r\n\r\n@Component({\r\n    selector: \"anna-feature-liability-modal\",\r\n    templateUrl: \"./liability-modal.component.html\",\r\n    styleUrls: [\"./liability-modal.component.scss\"],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    imports: [NgIf, AnnaDesignComponentsLibModule, FormsModule, ReactiveFormsModule, AnnaCoreModule, NgClass],\r\n})\r\nexport class LiabilityModalComponent implements OnChanges {\r\n    @Input() orderType: string;\r\n    @Input() orderMetric: string;\r\n    @Input() liabilityValue: any = null;\r\n    @Output() save = new EventEmitter();\r\n    // eslint-disable-next-line @angular-eslint/no-output-native\r\n    @Output() cancel = new EventEmitter();\r\n\r\n    isOrderMetricSet: boolean = false;\r\n    isImpressions: boolean = false;\r\n    liabilityForm: FormGroup;\r\n    radioConfig: IRadioButtonComponentConfig;\r\n    selectedMetric: any = \"Ratings\";\r\n    liabilityPattern = \"^[0-9]*(.[0-9]{1,2})?$\";\r\n    disableButton: boolean = true;\r\n\r\n    constructor(private formBuilder: FormBuilder) {\r\n        this.radioConfig = this.getRadioConfig();\r\n    }\r\n\r\n    ngOnChanges(changes: SimpleChanges) {\r\n        if (changes.orderMetric) {\r\n            if (this.orderMetric === \"Ratings\") {\r\n                this.isImpressions = false;\r\n                this.isOrderMetricSet = true;\r\n            } else if (this.orderMetric === \"Impressions\") {\r\n                this.isImpressions = true;\r\n                this.isOrderMetricSet = true;\r\n                this.liabilityPattern = \"^[0-9]*(.[0-9]{1})?$\";\r\n            }\r\n        }\r\n        if (changes.liabilityValue) {\r\n            this.initializeForm();\r\n            this.liabilityForm.get(\"liabilityInput\").patchValue(this.liabilityValue);\r\n        }\r\n    }\r\n\r\n    initializeForm(): void {\r\n        this.liabilityForm = this.formBuilder.group({\r\n            liabilityInput: [\"\", [Validators.required, Validators.pattern(this.liabilityPattern)]],\r\n        });\r\n    }\r\n    metricSelectionChange(event: any) {\r\n        if (event === \"Impressions\") {\r\n            this.isImpressions = true;\r\n            this.liabilityPattern = \"^[0-9]*(.[0-9]{1})?$\";\r\n        } else {\r\n            this.isImpressions = false;\r\n            this.liabilityPattern = \"^[0-9]*(.[0-9]{1,2})?$\";\r\n        }\r\n        this.disableButton = true;\r\n        this.selectedMetric = event;\r\n        this.liabilityForm.get(\"liabilityInput\")?.reset(\"\");\r\n    }\r\n\r\n    closePopup() {\r\n        this.cancel.emit();\r\n    }\r\n\r\n    onInputChange(event: Event): void {\r\n        if (+this.liabilityForm.get(\"liabilityInput\").value === 0) {\r\n            this.disableButton = true;\r\n        } else {\r\n            this.disableButton = this.liabilityForm.get(\"liabilityInput\").errors !== null;\r\n        }\r\n        if (this.liabilityValue != null && this.liabilityForm.get(\"liabilityInput\").value === this.liabilityValue) {\r\n            this.disableButton = true;\r\n        }\r\n    }\r\n\r\n    saveLiability() {\r\n        const metric = this.isOrderMetricSet ? this.orderMetric.toUpperCase() : this.selectedMetric.toUpperCase();\r\n        const data = {\r\n            UserSelectedMetric: metric,\r\n            Liability: this.liabilityForm.get(\"liabilityInput\").value,\r\n        };\r\n        this.save.emit(data);\r\n        this.closePopup();\r\n    }\r\n\r\n    getRadioConfig() {\r\n        return {\r\n            heading: \"Metric\",\r\n            radioGroupName: \"MetricRadioConfig\",\r\n            radioButtons: [\r\n                {\r\n                    value: \"Ratings\",\r\n                    isDisabled: false,\r\n                    label: \"Ratings\",\r\n                    class: \"grey-background\",\r\n                    id: 3,\r\n                },\r\n                {\r\n                    value: \"Impressions\",\r\n                    isDisabled: false,\r\n                    label: \"IMPS\",\r\n                    class: \"grey-background\",\r\n                    id: 2,\r\n                },\r\n            ],\r\n        };\r\n    }\r\n}\r\n","<section class=\"main-modal\">\r\n    <div class=\"modal-header\">\r\n        <span>\r\n            <h3 class=\"modal-title\">Enter Liability</h3>\r\n        </span>\r\n    </div>\r\n\r\n    <div class=\"modal-body\">\r\n        <div class=\"meta-data\">\r\n            <span\r\n                >Order type: <b>{{ orderType }}</b></span\r\n            >\r\n            <span\r\n                *ngIf=\"isOrderMetricSet\"\r\n                class=\"order-metric\"\r\n                >Buyer metric: <b>{{ orderMetric }}</b></span\r\n            >\r\n            <div\r\n                class=\"liability-radio-button\"\r\n                *ngIf=\"!isOrderMetricSet\"\r\n            >\r\n                <anna-design-radio-buttons\r\n                    [config]=\"radioConfig\"\r\n                    [selectedValue]=\"selectedMetric\"\r\n                    (selectionChanged)=\"metricSelectionChange($event)\"\r\n                    [disabled]=\"false\"\r\n                    class=\"liability-radio\"\r\n                ></anna-design-radio-buttons>\r\n            </div>\r\n        </div>\r\n        <form [formGroup]=\"liabilityForm\">\r\n            <div class=\"form-group\">\r\n                <label\r\n                    class=\"label\"\r\n                    for=\"liabilityInput\"\r\n                    >Liability\r\n                    <span>{{ isImpressions ? \"(In Impressions)\" : \"(In Ratings)\" }}</span>\r\n                </label>\r\n\r\n                <input\r\n                    annaCoreDigitOnly\r\n                    type=\"text\"\r\n                    [decimal]=\"true\"\r\n                    inputmode=\"numeric\"\r\n                    [pattern]=\"liabilityPattern\"\r\n                    [min]=\"0\"\r\n                    [allowPaste]=\"false\"\r\n                    class=\"form-control\"\r\n                    id=\"liabilityInput\"\r\n                    formControlName=\"liabilityInput\"\r\n                    [placeholder]=\"isImpressions ? 'Enter liability (in Impressions)' : 'Enter liability (in Ratings)'\"\r\n                    [ngClass]=\"{\r\n                        error:\r\n                            liabilityForm.get('liabilityInput').dirty &&\r\n                            (liabilityForm.get('liabilityInput').errors ||\r\n                            +liabilityForm.get('liabilityInput').value === 0)\r\n                    }\"\r\n                    (input)=\"onInputChange($event)\"\r\n                />\r\n                <!-- Do not use === here -->\r\n            </div>\r\n        </form>\r\n\r\n        <ul class=\"order-ul\">\r\n            <li>The UD liability entered will be against the order flight dates.</li>\r\n            <!-- <li>The UD liability once entered, can not be edited later.</li> -->\r\n        </ul>\r\n        <div class=\"button-container\">\r\n            <button\r\n                class=\"anna cancel-button\"\r\n                (click)=\"closePopup()\"\r\n            >\r\n                Cancel\r\n            </button>\r\n            <button\r\n                class=\"anna apply-button\"\r\n                [disabled]=\"disableButton\"\r\n                (click)=\"saveLiability()\"\r\n            >\r\n                Save\r\n            </button>\r\n        </div>\r\n    </div>\r\n</section>\r\n","// Manisha move this to TableColumnNameConstants drr constant\r\nexport class DRRTableColumnNameConstants {\r\n    static readonly PrimaryAE = \"PRIMARY AE\";\r\n    static readonly Region = \"REGION\";\r\n    static readonly Agency = \"AGENCY\";\r\n    static readonly Location = \"LOCATION\";\r\n    static readonly Advertiser = \"ADVERTISER\";\r\n    static readonly ProductCode = \"PRODUCT CODE\";\r\n    static readonly RevisionStartDate = \" REVISION START DATE\";\r\n    static readonly StartDate = \"START DATE\";\r\n    static readonly EndDate = \"END DATE\";\r\n    static readonly OrderNumber = \"STN ORDER#-REV#\";\r\n    static readonly BuyerOrderId = \"BUYER ORDER#\";\r\n    static readonly AltOrderId = \"ALT/REP ORDER#\";\r\n\r\n    static readonly GRP = \"GRP\";\r\n    static readonly CPP = \"CPP\";\r\n    static readonly IMPS = \"IMPS\";\r\n    static readonly CPM = \"CPM\";\r\n    static readonly OfferefMadegood = \"OFFERED MG\";\r\n    static readonly OSPEValue = \"O/S PE\";\r\n    static readonly OfferefADUs = \"OFFERED ADUs\";\r\n    static readonly AudienceDeficit = \"O/S AUD DELTA\";\r\n    static readonly BookedValue = \"$ BOOKED\";\r\n    static readonly BookedSpots = \"SPOTS\";\r\n    static readonly UserChanges = \"USER CHANGES\";\r\n    static readonly RevisionType = \"REVISION TYPE\";\r\n    static readonly BuyerChanges = \"BUYER CHANGES\";\r\n    static readonly UserADUs = \"USER ADUs\";\r\n    static readonly UserMGs = \"USER MG\";\r\n    static readonly Demo = \"DEMO\";\r\n}\r\n\r\nexport class OrderListingEasyFilterConstants {\r\n    static readonly ORDER_FLIGHT_STATUS = \"Order flight status\";\r\n    static readonly IN_FLIGHT = \"IN-FLIGHT\";\r\n    static readonly COMPLETED = \"COMPLETED\";\r\n    static readonly UPCOMING = \"UPCOMING\";\r\n\r\n    static readonly BUSINESS_RULES_STATUS = \"Buyer business rule approval\";\r\n    static readonly NOTIFY = \"NOTIFY BUYER\";\r\n    static readonly AWAITING_BUYER_APPROVAL = \"AWAITING BUYER APPROVAL\";\r\n    static readonly AWAITING_SELLER_CONFIRMATION = \"AWAITING SELLER CONFIRMATION\";\r\n\r\n    static readonly AWAITING_SELLER_APPROVAL = \"AWAITING SELLER APPROVAL\";\r\n    static readonly AWAITING_BUYER_CONFIRMATION = \"AWAITING BUYER CONFIRMATION\";\r\n    static readonly NEED_BUYER_CONFIRMATION = \"NEED BUYER CONFIRMATION\";\r\n    static readonly NEED_SELLER_CONFIRMATION = \"NEED SELLER CONFIRMATION\";\r\n\r\n    static readonly STARRED = \"STARRED\";\r\n    static readonly POD = \"PoD\";\r\n    static readonly P4S = \"P4S\";\r\n    static readonly WRITE_ENABLED = \"AUTOMATED\";\r\n    static readonly NON_AUTOMATED = \"NON-AUTOMATED\";\r\n    static readonly BLANK = \"BLANK\";\r\n    static readonly DELETED = \"DELETED\";\r\n\r\n    static readonly ADU_DISCREPANCY = \"ADU DISCREPANCY\";\r\n}\r\nexport class OrderTypeConstants {\r\n    static readonly PAID_AUDIENCE = \"Paid (Aud Posting)\";\r\n    static readonly PAID_NO_AUDIENCE = \"Paid (No Aud Posting)\";\r\n    static readonly UD_LIABILITY_NOT_SET = \"UD (Liability not set)\";\r\n    static readonly UD_LIABILITY_SET = \"UD (Liability set)\";\r\n    static readonly UD = \"UD\";\r\n}\r\nexport class OrderListingTableHeaderConstants extends DRRTableColumnNameConstants {\r\n    static readonly STATION = \"STATION\";\r\n    static readonly BUYERS = \"BUYERS\";\r\n    static readonly REPS = \"REPS\";\r\n    static readonly NETWORK_AFFILIATE = \"NETWORK AFFILIATE\";\r\n    static readonly MARKET = \"MARKET\";\r\n    static readonly ALT_ORDER = \"ALT/REP ORDER #\";\r\n    static readonly DEMO = \"DEMO\";\r\n    static readonly ESTIMATE = \"ESTIMATE#\";\r\n    static readonly REV_CODE_1 = \"REV CODE 1\";\r\n    static readonly REV_CODE_2 = \"REV CODE 2\";\r\n    static readonly REV_CODE_3 = \"REV CODE 3\";\r\n    static readonly MADEGOOD_PE = \"$ MADEGOOD PEs\";\r\n    static readonly OUTSTANDING_PE = \"$ O/S PEs\";\r\n    static readonly POSTED_ADUs = \"$ POSTED ADUs\";\r\n    static readonly SCHEDULED_ADUs = \"$ SCHEDULED ADUs\";\r\n    static readonly OUTSTANDING_AUD_DELTA = \"$ O/S AUDIENCE\";\r\n    static readonly POSTED_AUDIENCE_PER = \"POSTED AUDIENCE %\";\r\n    static readonly STN_ORDERNO_REV_NO = \"STN ORDER#-REV#\";\r\n    static readonly ORDER_SOURCE = \"ORDER ROUTE\";\r\n    static readonly ORDER_TYPE = \"ORDER TYPE\";\r\n    static readonly ANNA_REVISED = \"ANNA REVISED\";\r\n    static readonly CASH_TRADE = \"C/T\";\r\n    static readonly ORDER_CATEGORY = \"REVENUE CATEGORY\";\r\n    static readonly REVISION_TYPE = \"REVISION TYPE\";\r\n    static readonly STATUS = \"STATUS\";\r\n    static readonly BOOKED = \"$ BOOKED\";\r\n    static readonly UD_IMPS = \"PROJ. UD IMPS\";\r\n    static readonly UD_GRP = \"PROJ. UD GRP\";\r\n    static readonly OD_IMPS = \"PROJ. OD IMPS\";\r\n    static readonly OD_GRP = \"PROJ. OD GRP\";\r\n    static readonly UD_PERCENT = \"PROJ. UD %\";\r\n    static readonly UD_GRP_PERCENT = \"UD GRP %\";\r\n    static readonly OD_PERCENT = \" PROJ. OD %\";\r\n    static readonly OD_GRP_PERCENT = \"OD GRP %\";\r\n    static readonly OD_VALUE = \"PROJ. $ OD\";\r\n    static readonly UD_VALUE = \"PROJ. $ UD\";\r\n    static readonly AUDIENCE_POSTING = \"AUDIENCE POSTING\";\r\n}\r\n\r\nexport class OrdersConstant {\r\n    // buyer-contact-details\r\n    static readonly buyerApprovalAndContact = \"Buyer Approval & Contact\";\r\n    static readonly buyerBizApprovalNeeded = \"Buyer business rules approval needed\";\r\n    static readonly noContactsAdded = \"No Contact added\";\r\n    static readonly buyerApprovalRequired = \"Buyer approval required\";\r\n    static readonly emailOnlyOrderSchedule = \"Email only order schedule\";\r\n    static readonly buyer = \"Buyer\";\r\n    static readonly buyerContact = `${OrdersConstant.buyer} contact`;\r\n    static readonly addBuyer = `Add ${OrdersConstant.buyer.toLowerCase()}`;\r\n    static readonly addBuyerContact = `Add ${OrdersConstant.buyer} Contact`;\r\n    static readonly editBuyer = \"Edit \";\r\n    static readonly yes = \"Yes\";\r\n    static readonly no = \"No\";\r\n\r\n    // add-buyer-contact constants\r\n    static readonly primary = \"Primary\";\r\n    static readonly secondary = \"Secondary\";\r\n    static readonly primaryBuyerDetails = `${OrdersConstant.primary} ${OrdersConstant.buyer.toLowerCase()} details`;\r\n\r\n    static readonly namePlaceholder = \"Enter buyer’s name\";\r\n    static readonly emailPlaceholder = \"Enter buyer’s email ID\";\r\n    static readonly phoneNoPlaceholder = \"Enter buyer’s phone number\";\r\n\r\n    static readonly invalidName = \"*Invalid Name\";\r\n    static readonly Name = \"Name*\";\r\n    static readonly pleaseEnterFullName = \"*Please enter full name\";\r\n    static readonly specialCharNotAllowed = \"Special Charater not allowed\";\r\n\r\n    static readonly invalidEmail = \"*Invalid Email\";\r\n    static readonly email = \"Email*\";\r\n    static readonly pleaseEnterEmailId = \"Please enter email ID\";\r\n    static readonly pleaseEnterValidEmailId = \"Please enter a valid email ID\";\r\n\r\n    static readonly invalidPhone = \"Invalid Phone\";\r\n    static readonly phone = \"Phone\";\r\n    static readonly pleaseEnterValidPhoneNo = \"Please enter a valid Phone No\";\r\n\r\n    static readonly secondaryBuyerContactDetails = `${OrdersConstant.secondary} ${OrdersConstant.buyer.toLowerCase()} Details`;\r\n    static readonly addSecondaryBuyerContactDetails = `Add ${OrdersConstant.secondaryBuyerContactDetails.toLowerCase()}`;\r\n    static readonly removeSecondaryBuyerContactDetails = `Remove ${OrdersConstant.secondaryBuyerContactDetails.toLowerCase()}`;\r\n    static readonly save = \"Save \";\r\n\r\n    static readonly newBuyerSuccess = \"New Buyer Contact details added successfully.\";\r\n    static readonly updateBuyerSuccess = \"Buyer Contact details updated successfully.\";\r\n    static readonly BuyerErrorMessage = \"Some Error occured. Couldn't add Buyer details\";\r\n    static readonly secondaryBuyerDeleteErrorMessage = \"Some Error occured while deleting secondary Buyer details\";\r\n\r\n    static readonly businessRulesTabName = \"Business Rules\";\r\n    static readonly UndefinedEndDate = \"indefinitely\";\r\n    static readonly ProxyOrderToasteTextPartOne = \"This order belongs to \";\r\n    static readonly ProxyOrderToasteTextPartTwo = \". You can manage this order since you are the proxy user from\";\r\n    static readonly writeEnabledOrderToastrMessage =\r\n        \"This is a Automated order. Action taken on spots for this order will be fed into the traffic system.\";\r\n    static readonly notWriteEnabledOrderToastrMessage =\r\n        \"This is a Read-Only order. No approval action can be taken for these orders.\";\r\n\r\n    static readonly PerformancePeriodModalTitle = \"Edit Period\";\r\n    static readonly PerformancePeriodModalMessage =\r\n        \"Select period for which you want to view the audience performance for.\";\r\n    static readonly SpotDetailsPeriodModalTitle = \"Edit Period\";\r\n    static readonly SpotDetailsPeriodModalMessage = \"Select period for which you want to view the spot details for.\";\r\n    static readonly Quarter = \"Quarter\";\r\n    static readonly Month = \"Month\";\r\n    static readonly CustomRange = \"Custom Range\";\r\n    static readonly Broadcast = \"broadcast\";\r\n    static readonly Fiscal = \"fiscal\";\r\n\r\n    static readonly OngoingTemporaryRevisionMessage =\r\n        \"This is an ongoing temporary revision. Any new revision will henceforth be for the live order.\";\r\n\r\n    static readonly AnnaOrderEntry = \"ANNA ORDER ENTRY\";\r\n}\r\nexport class OrderDiscrepanciesHeaderConstant {\r\n    static readonly STATION = \"STATION\";\r\n    static readonly MARKET = \"MARKET\";\r\n    static readonly ALT_REP_ORDER = \"ALT/REP ORDER#\";\r\n    static readonly STN_ORDER = \"STN ORDER#\";\r\n    static readonly SOURCE = \"SOURCE\";\r\n    static readonly ESTIMATE = \"ESTIMATE#\";\r\n    static readonly PRIMARY_AE = \"PRIMARY AE\";\r\n    static readonly AGENCY = \"AGENCY\";\r\n    static readonly ADVERTISER = \"ADVERTISER\";\r\n    static readonly DEMO = \"DEMO\";\r\n    static readonly METRIC = \"METRIC\";\r\n    static readonly BOOKED = \"$ BOOKED\";\r\n    static readonly BOOKED_RTG = \"BOOKED RTG\";\r\n    static readonly BOOKED_IMPS = \"BOOKED IMPS\";\r\n    static readonly FLIGHT_DATES = \"FLIGHT DATES\";\r\n    static readonly SPOTS = \"# SPOTS\";\r\n    static readonly LEN = \"LEN (# SPOTS)\";\r\n}\r\n\r\nexport class VerifyMappingEasyFilterConstants {\r\n    static readonly NEEDS_REVIEW = \"NEEDS REVIEW\";\r\n    static readonly RATE_RTG_GREATER = \"RATE | RTG > 125%\";\r\n    static readonly RATE_RTG_LESS = \"RATE | RTG < 75%\";\r\n}\r\n","import { CurrencyPipe, DecimalPipe } from \"@angular/common\";\r\nimport {\r\n    AnnaNumberFormatService,\r\n    IActionItemTypeWithStringIconOrTextAction,\r\n    SvgOrIconNames,\r\n    SvgOrIconTypeInGTTable,\r\n} from \"@annalib/anna-core\";\r\nimport { OrderListingConstants, OrderRoute } from \"@annalib/anna-feature-shared-lib\";\r\n\r\n// import { TypeOfActionLinkForGtEnum } from \"../../../../biz-rules-order-listing/model/biz-rule-order-listing.model\";\r\nimport { OrderTypeConstants } from \"./order-listing.constant\";\r\n\r\nexport type RevisionType = \"ANNA\" | \"Buyer revision\" | \"User offers\" | \"-\" | \"- (High discrepancy)\";\r\nexport type RevisionStatus =\r\n    | \"Seller Pending\"\r\n    | \"Buyer Pending\"\r\n    | \"SM Pending\"\r\n    | \"Rev Generated\"\r\n    | \"Rev discarded\"\r\n    | \"O/S Spots\"\r\n    | \"O/S UD\";\r\n\r\nexport interface Filter {\r\n    text: string;\r\n    isActive: boolean;\r\n    isDisabled: boolean;\r\n    iconRequired?: boolean;\r\n    isSvgIcon?: boolean;\r\n    iconClass?: string;\r\n}\r\n\r\nexport interface OrderListingEasyFilter {\r\n    label: string;\r\n    class?: string;\r\n    filters: Filter[];\r\n}\r\nexport enum OrderType {\r\n    PAID_WITH_AUDIENCE = \"PAID_WITH_AUDIENCE\",\r\n    PAID_NO_AUDIENCE = \"PAID_NO_AUDIENCE\",\r\n    UD_LIABILITY_NOT_SET = \"UD_LIABILITY_NOT_SET\",\r\n    UD_LIABILITY_SET = \"UD_LIABILITY_SET\",\r\n    UD = \"UD\",\r\n}\r\nexport class OrderDetails {\r\n    station: string;\r\n    primaryBuyer: string;\r\n    secondaryBuyer: string;\r\n    estimateNo: string;\r\n    stationId: number;\r\n    agency: string;\r\n    location: string;\r\n    advertiser: string;\r\n    buyerNames: string = null;\r\n    repUserNames: string = null;\r\n    brand: string;\r\n    brandId: number;\r\n    startDate: string;\r\n    endDate: string;\r\n    orderId: number;\r\n    campaignId: number;\r\n    revision: string;\r\n    orderStatus: string;\r\n    // orderRevisionStatus: string;\r\n    orderStarred: boolean;\r\n    payForPerformance: boolean;\r\n    bizRuleStatus: string;\r\n    primaryAe: string;\r\n    region: string;\r\n    orderNoRevNo: string;\r\n    revCode1: string;\r\n    revCode2: string;\r\n    revCode3: string;\r\n    advertiserId;\r\n    isWriteEnabled: boolean;\r\n    demo: string;\r\n    productCode: string;\r\n    buyerOrderId: string;\r\n    bookedValueExcludingZeroRtngSpots: number;\r\n    poDAndAAIconKey: SvgOrIconTypeInGTTable[];\r\n    deletedOrderIconKey: SvgOrIconTypeInGTTable[];\r\n    isAnnaOrderEntry: boolean;\r\n\r\n    booked: number;\r\n    displayBooked: string;\r\n\r\n    spots: number;\r\n    displaySpots: string;\r\n    grp: number;\r\n    grpWithoutRoundoff: number;\r\n\r\n    imps: number;\r\n\r\n    cpp: number;\r\n    displaycpp: string;\r\n\r\n    cpm: number;\r\n    displaycpm: string;\r\n\r\n    rcvPreempt: number;\r\n    displayMadegoodPe: string;\r\n\r\n    osPreempt: number;\r\n    displayOsPe: string;\r\n\r\n    postedAdu: number;\r\n    displayPostedADUs: string;\r\n\r\n    scheduledAdu: number;\r\n    displayScheduledADUs: string;\r\n\r\n    audienceDeficit: number;\r\n    displayOsAudienceDelta: string;\r\n\r\n    postedAudPercent: number;\r\n    displayPostedAudiencePer: string;\r\n    iconClass: string;\r\n    gtClass: string;\r\n\r\n    orderCategory: string;\r\n    revisionType: RevisionType;\r\n    revisionStatus: RevisionStatus | string;\r\n    annaRevised: string;\r\n    cashOrTrade: string;\r\n    orderSource: string;\r\n    underDeliveryPercent: number;\r\n    overDeliveryPercent: number;\r\n\r\n    underDeliveryImpsDisplay: string;\r\n    underDeliveryGrpDisplay: string;\r\n    overDeliveryImpsDisplay: string;\r\n    overDeliveryGrpDisplay: string;\r\n    underDeliveryPercentDisplay: string;\r\n    overDeliveryPercentDisplay: string;\r\n    UDImps: number;\r\n    UDGrp: number;\r\n    ODImps: number;\r\n    ODGrp: number;\r\n    odImpsPercent: number;\r\n    odGrpPercent: number;\r\n    udImpsPercent: number;\r\n    udGrpPercent: number;\r\n    displayGrp: string;\r\n    displayimps: string;\r\n    // showPFPViewOnlyModeForBuyer: boolean;\r\n    orderTypeActionKey?: any;\r\n    orderTypeTooltipKey: { key: string; value: string }[];\r\n    isDeletedOrder: boolean;\r\n    orderType?: string;\r\n    redirectTo: \"order-business-rules\" | \"line-details\" | \"audience-performance\";\r\n\r\n    displayUdValue: string;\r\n    udValue: number;\r\n    displayOdValue: string;\r\n    odValue: number;\r\n    isHiatusDateSet: boolean = false;\r\n    startDateActionKey: IActionItemTypeWithStringIconOrTextAction[] = [];\r\n    startDateTooltipKey: { key: string; value: string }[] = [];\r\n    hasAduDiscrepancy: boolean;\r\n    market: string;\r\n    networkAffiliate: string;\r\n    bookedImpWithoutRoundoff: number;\r\n    isAudiencePostingRequired: boolean;\r\n    isAudiencePostingRequiredText: string;\r\n\r\n    constructor(data: any, currencyPipe: CurrencyPipe, decimalPipe: DecimalPipe, currentListingTab: string) {\r\n        this.station = data.Station;\r\n\r\n        this.market = data?.MarketName ?? \"-\";\r\n        this.networkAffiliate = data?.NetworkAffiliate ?? \"-\";\r\n        this.redirectTo = data.RedirectTo;\r\n        this.primaryBuyer = data?.PrimaryBuyerName ? data.PrimaryBuyerName : \"-\";\r\n        this.secondaryBuyer = data?.SecondaryBuyerName ? data.SecondaryBuyerName : \"-\";\r\n        this.estimateNo = data?.EstimateNumber ? data?.EstimateNumber : \"-\";\r\n        this.stationId = data.StationId;\r\n        this.agency = data.AgencyName;\r\n        this.location = data.Location ? data.Location : \"-\";\r\n        this.advertiser = data.AdvertiserName;\r\n        this.brand = data.BrandName;\r\n        this.brandId = data.BrandId;\r\n        this.startDate = data.FlightStartDate;\r\n        this.endDate = data.FlightEndDate;\r\n        this.orderId = data.OrderId;\r\n        this.campaignId = data.CampaignId;\r\n        this.revision = data.OrderRevisionNo;\r\n        this.buyerNames = OrderDetails.convertToCommaSeperatedString(data.BuyerNames);\r\n        this.repUserNames = OrderDetails.convertToCommaSeperatedString(data.RepContactNames);\r\n        this.isAnnaOrderEntry = data.AnnaEnteredRepOrder;\r\n        this.rcvPreempt = data.PreemptedRecoveredCost;\r\n        this.osPreempt = data.PreemptedUnrecoveredCost;\r\n\r\n        this.hasAduDiscrepancy = data.HasAduDiscrepancy;\r\n\r\n        this.orderType =\r\n            data.OrderType === OrderType.UD_LIABILITY_NOT_SET\r\n                ? OrderTypeConstants.UD_LIABILITY_NOT_SET\r\n                : OrderDetails.mapOrderTypeToText(data.OrderType);\r\n\r\n        this.orderTypeActionKey = OrderDetails.getOrderTypeActionKey(data.OrderType, this.hasAduDiscrepancy);\r\n        // this.mapOrderTypeToText(data.OrderType);\r\n        this.orderTypeTooltipKey = OrderDetails.getOrderTypeTooltipKey(this.hasAduDiscrepancy);\r\n\r\n        this.orderStatus = data.OrderFlightStatus;\r\n        // this.orderRevisionStatus = data.OrderRevisionStatus ? data.OrderRevisionStatus.toUpperCase() : \"\";\r\n        this.region = data.Region;\r\n        this.isHiatusDateSet = data.IsHiatusDatesSet;\r\n\r\n        const hiatusActions = new HaitusTextActions(data);\r\n        this.startDateActionKey.push(hiatusActions);\r\n        this.startDateTooltipKey = this.startDateActionKey[0].tooltipData;\r\n        this.orderNoRevNo = `${data.OrderId}-${data.OrderRevisionNo.split(\" \").join(\"\")}`;\r\n        this.revCode1 = data.RevCode1 ? data.RevCode1 : \"-\";\r\n        this.revCode2 = data.RevCode2 ? data.RevCode2 : \"-\";\r\n        this.revCode3 = data.RevCode3 ? data.RevCode3 : \"-\";\r\n        this.revCode3 = !data.RevCode2 && !data.RevCode3 ? null : this.revCode3;\r\n        this.booked = data.BookedValue;\r\n        this.spots = data.BookedSpots;\r\n        this.displaySpots = this.spots.toLocaleString();\r\n        this.primaryAe = data.PrimaryAEName;\r\n        this.grp = data.BookedGrp;\r\n        this.displayGrp = data.OrderType === OrderType.UD_LIABILITY_SET ? \"-\" : this.grp.toLocaleString();\r\n        this.grpWithoutRoundoff = data.BookedGrpWithoutRoundoff;\r\n        this.cpp = data.Cpp;\r\n        this.imps = data.BookedImp;\r\n        this.displayimps = data.OrderType === OrderType.UD_LIABILITY_SET ? \"-\" : this.imps.toLocaleString();\r\n        this.cpm = data.Cpm;\r\n        this.advertiserId = data.AdvertiserId;\r\n        this.orderStarred = data.MarkedAsStarred;\r\n        this.bizRuleStatus = data.BizRuleStatus ? data.BizRuleStatus.toUpperCase() : \"\";\r\n        this.isWriteEnabled = data.IsAutomated;\r\n\r\n        this.payForPerformance = data.IsPayForPerformanceOrder ? data.IsPayForPerformanceOrder : false;\r\n        this.isAudiencePostingRequired = data.IsAudiencePostingRequired;\r\n        this.isAudiencePostingRequiredText = data.IsAudiencePostingRequired ? \"Yes\" : \"No\";\r\n        this.demo = data.TgName;\r\n        // hotfix changes : change buyer_order_id to alternate_order_id\r\n        this.buyerOrderId = data.AlternateOrderId ? data.AlternateOrderId : \"-\";\r\n        // this.buyerOrderId = data.buyer_order_id;\r\n        this.productCode = data.ProductCode ? data.ProductCode : \"-\";\r\n        this.postedAdu = data.PostedAduCost;\r\n        this.scheduledAdu = data.ScheduleAduCost;\r\n        this.audienceDeficit = data.UdDeficitValue;\r\n        this.postedAudPercent = data.PostedUdPercent;\r\n        this.bookedValueExcludingZeroRtngSpots = data.BookedValueWithoutZeroRatingSpots;\r\n\r\n        this.UDImps = data.under_delivery.Impression;\r\n        this.UDGrp = data.under_delivery.Grp;\r\n        this.ODImps = data.over_delivery.Impression;\r\n        this.ODGrp = data.over_delivery.Grp;\r\n\r\n        this.underDeliveryImpsDisplay = this.UDImps === 0 ? \"-\" : this.UDImps?.toLocaleString();\r\n        this.underDeliveryGrpDisplay = this.UDGrp === 0 ? \"-\" : this.UDGrp?.toLocaleString();\r\n        this.overDeliveryImpsDisplay = this.ODImps === 0 ? \"-\" : this.ODImps?.toLocaleString();\r\n        this.overDeliveryGrpDisplay = this.ODGrp === 0 ? \"-\" : this.ODGrp?.toLocaleString();\r\n\r\n        this.odImpsPercent = data.over_delivery.Percent;\r\n        this.odGrpPercent = data.over_delivery.Percent;\r\n        this.udImpsPercent = data.under_delivery.Percent;\r\n        this.udGrpPercent = data.under_delivery.Percent;\r\n\r\n        this.underDeliveryPercent = data.under_delivery.Percent === 0 ? \"-\" : data.under_delivery.Percent;\r\n        this.overDeliveryPercent = data.over_delivery.Percent === 0 ? \"-\" : data.over_delivery.Percent;\r\n\r\n        this.underDeliveryPercentDisplay = this.toPercent(decimalPipe, this.underDeliveryPercent);\r\n        this.overDeliveryPercentDisplay = this.toPercent(decimalPipe, this.overDeliveryPercent);\r\n\r\n        this.displayBooked = currencyPipe.transform(this.booked ? this.booked : 0, \"USD\", \"symbol\", \"1.0-2\");\r\n        this.displaycpp = this.cpp ? currencyPipe.transform(this.cpp, \"USD\", \"symbol\", \"1.0-0\") : \"-\";\r\n        this.displaycpm = this.cpm ? currencyPipe.transform(this.cpm, \"USD\", \"symbol\", \"1.0-1\") : \"-\";\r\n\r\n        this.udValue = data.under_delivery.Value;\r\n        this.displayUdValue = this.udValue\r\n            ? currencyPipe.transform(this.udValue ? this.udValue : 0, \"USD\", \"symbol\", \"1.0-0\")\r\n            : \"-\";\r\n\r\n        this.odValue = data.over_delivery.Value;\r\n        this.displayOdValue = currencyPipe.transform(this.odValue ? this.odValue : 0, \"USD\", \"symbol\", \"1.0-0\");\r\n        if (\r\n            data.OrderType === OrderType.UD_LIABILITY_NOT_SET ||\r\n            data.OrderType === OrderType.UD_LIABILITY_SET ||\r\n            data.OrderType === OrderType.PAID_NO_AUDIENCE\r\n        ) {\r\n            this.displayOdValue = \"-\";\r\n            this.displayUdValue = \"-\";\r\n        }\r\n        if (this.overDeliveryGrpDisplay === \"-\" && this.overDeliveryImpsDisplay === \"-\" && !this.odValue) {\r\n            this.displayOdValue = \"-\";\r\n        }\r\n        if (this.underDeliveryGrpDisplay === \"-\" && this.underDeliveryImpsDisplay === \"-\" && !this.udValue) {\r\n            this.displayUdValue = \"-\";\r\n        }\r\n        this.displayMadegoodPe =\r\n            this.rcvPreempt == null ? \"-\" : currencyPipe.transform(this.rcvPreempt, \"USD\", \"symbol\", \"1.0-0\");\r\n        this.displayOsPe =\r\n            this.osPreempt == null ? \"-\" : currencyPipe.transform(this.osPreempt, \"USD\", \"symbol\", \"1.0-0\");\r\n        this.displayOsPe = this.osPreempt == null && this.rcvPreempt === 0 ? null : this.displayOsPe;\r\n\r\n        this.displayPostedADUs =\r\n            this.postedAdu == null ? \"-\" : currencyPipe.transform(this.postedAdu, \"USD\", \"symbol\", \"1.0-0\");\r\n        this.displayScheduledADUs =\r\n            this.scheduledAdu == null ? \"-\" : currencyPipe.transform(this.scheduledAdu, \"USD\", \"symbol\", \"1.0-0\");\r\n        this.displayScheduledADUs =\r\n            this.postedAdu == null && this.scheduledAdu === 0 ? null : this.displayScheduledADUs;\r\n\r\n        this.displayOsAudienceDelta = \"-\";\r\n        if (this.audienceDeficit != null) {\r\n            this.displayOsAudienceDelta =\r\n                this.audienceDeficit < 0\r\n                    ? \"$0\"\r\n                    : currencyPipe.transform(this.audienceDeficit, \"USD\", \"symbol\", \"1.0-0\");\r\n        }\r\n\r\n        this.displayPostedAudiencePer =\r\n            this.postedAudPercent == null ? \"-\" : `${decimalPipe.transform(this.postedAudPercent, \"1.2-2\")}%`;\r\n        this.displayPostedAudiencePer =\r\n            this.audienceDeficit == null && this.postedAudPercent == null ? null : this.displayPostedAudiencePer;\r\n\r\n        if (this.audienceDeficit < 0) {\r\n            this.gtClass = \"red-color-audience\";\r\n        }\r\n\r\n        this.iconClass = this.orderStarred ? \"mdi mdi-star highlight-star\" : \"mdi mdi-star-outline\";\r\n\r\n        this.orderCategory = data.OrderCategory;\r\n        this.cashOrTrade = data.CashOrTrade;\r\n        this.revisionType = data.RevisionType;\r\n        this.annaRevised = data.AnnaRevised;\r\n        this.revisionStatus = data.RevisionStatus;\r\n        this.orderSource = data.OrderSource;\r\n\r\n        this.isDeletedOrder = data.IsDeletedAtTraffic;\r\n\r\n        if (currentListingTab === OrderListingConstants.BlankAndDeleted && !this.isDeletedOrder) {\r\n            this.gtClass = \"grey-background-row\";\r\n        }\r\n\r\n        this.deletedOrderIconKey = [\r\n            {\r\n                showObjectKey: true,\r\n                svgOrIconName: this.isDeletedOrder ? \"DELETED_ORDER\" : null,\r\n            },\r\n        ];\r\n\r\n        this.poDAndAAIconKey = [\r\n            {\r\n                showObjectKey: true,\r\n                svgOrIconName: this.payForPerformance ? SvgOrIconNames.PAY_FOR_PERFORMANCE_ACTIVE : null,\r\n            },\r\n            {\r\n                showObjectKey: false,\r\n                svgOrIconName: this.isWriteEnabled ? SvgOrIconNames.AUTOMATED : null,\r\n            },\r\n        ];\r\n\r\n        this.bookedImpWithoutRoundoff = data.BookedImpWithoutRoundoff;\r\n    }\r\n\r\n    public static getOrderTypeActionKey(orderType: OrderType, hasAduDiscrepancy: boolean) {\r\n        return [\r\n            {\r\n                showTooltip: hasAduDiscrepancy,\r\n                dataToDisplay: OrderDetails.mapOrderTypeToText(orderType),\r\n                tooltipPosition: \"bottom auto\",\r\n                additionalTextWoTooltip:\r\n                    orderType === OrderType.UD_LIABILITY_NOT_SET\r\n                        ? \"(<span class='liability-not-set'>Liability not set</span>)\"\r\n                        : null,\r\n                tooltipIconClass: \"mi mdi-warning adu-discrepancy\",\r\n                tooltipInnerClass: \"order-adu-discrepancy-tooltip\",\r\n                disableTooltip: false,\r\n            },\r\n        ];\r\n    }\r\n\r\n    public static getOrderTypeTooltipKey(hasAduDiscrepancy: boolean): { key: string; value: string }[] {\r\n        return hasAduDiscrepancy\r\n            ? [\r\n                  {\r\n                      key: \"\",\r\n                      value: \"The order type is set to Paid on ANNA where no audience posting is required but has user booked ADUs\",\r\n                  },\r\n              ]\r\n            : [];\r\n    }\r\n\r\n    public toPercent(decimalPipe: DecimalPipe, value: number | string): string {\r\n        return value == null || value === \"-\" ? \"-\" : `${decimalPipe.transform(value, \"1.2-2\")}%`;\r\n    }\r\n\r\n    public to$Value(currencyPipe: CurrencyPipe, value: string): string {\r\n        return value == null || value === \"-\" ? \"-\" : currencyPipe.transform(value, \"USD\", \"symbol\", \"1.0-0\");\r\n    }\r\n    public static mapOrderTypeToText(orderType: OrderType): string {\r\n        switch (orderType) {\r\n            case OrderType.PAID_WITH_AUDIENCE:\r\n                return OrderTypeConstants.PAID_AUDIENCE;\r\n            case OrderType.PAID_NO_AUDIENCE:\r\n                return OrderTypeConstants.PAID_NO_AUDIENCE;\r\n            case OrderType.UD_LIABILITY_NOT_SET:\r\n                return \"UD \";\r\n            case OrderType.UD_LIABILITY_SET:\r\n                return OrderTypeConstants.UD_LIABILITY_SET;\r\n            case OrderType.UD:\r\n                return OrderTypeConstants.UD;\r\n            default:\r\n                return \"\";\r\n        }\r\n    }\r\n    static convertToCommaSeperatedString(arrList: any[]): string {\r\n        let nameList = \"\";\r\n        if (arrList && arrList.length) {\r\n            nameList = arrList.join(\", \");\r\n        } else {\r\n            nameList = \"-\";\r\n        }\r\n        return nameList;\r\n    }\r\n}\r\n\r\nexport class HaitusTextActions {\r\n    id: any;\r\n    data: string;\r\n    iconClass: string;\r\n    showIcon: boolean = false;\r\n    disabledIcon: boolean = false;\r\n    linkClass: string;\r\n    showLink: boolean = false;\r\n    disabledLink: boolean = false;\r\n    showTooltip: boolean = false;\r\n    disableTooltip: boolean = false;\r\n    additionalTextBeforeLink: string = null;\r\n    typeOfData: \"STRING\" | \"ICON_TEXT_ACTION\";\r\n    enableTooltipForAdditionalText: boolean = false;\r\n    tooltipData: { key: string; value: string }[];\r\n    tooltipPlacement: string;\r\n    tooltipClass: string = null;\r\n\r\n    constructor(data: any) {\r\n        this.showLink = false;\r\n        this.data = data.FlightStartDate;\r\n        this.disabledLink = false;\r\n        this.typeOfData = \"STRING\";\r\n\r\n        if (data.IsHiatusDatesSet) {\r\n            const haitusDateTooltip = [];\r\n            const tooltip: { key: string; value: string } = {\r\n                key: \"Hiatus Dates have been set for this order\",\r\n                value: null,\r\n            };\r\n            haitusDateTooltip.push(tooltip);\r\n            this.tooltipData = haitusDateTooltip;\r\n            this.showTooltip = true;\r\n            this.showIcon = true;\r\n            this.iconClass = \"mdi mdi-alpha-h-box\";\r\n            this.tooltipClass = \"hiatus-tooltip\";\r\n        }\r\n    }\r\n}\r\n\r\nexport class OrderListingTotalRow {\r\n    bookedValue: number = 0;\r\n    bookedSpots: number = 0;\r\n    bookedGrp: number = 0;\r\n    bookedGrpWithoutRoundoff: number = 0;\r\n    cpp: number = 0;\r\n    imps: number = 0;\r\n    cpm: number = 0;\r\n    rcvPreempt: number = 0;\r\n    osPreempt: number = 0;\r\n    // rcvUnderDly: number;\r\n    postedAudPercent: number = 0;\r\n    postedAdu: number = 0;\r\n    scheduledAdu: number = 0;\r\n    audienceDeficit: number = 0;\r\n    bookedValueExcludingZeroRtngSpots: number = 0;\r\n    bookedImpWithoutRoundoff: number = 0;\r\n    orderCountWithPostedAudiencePer: number = 0;\r\n    // displayCpp: string;\r\n    // displayCpm: string;\r\n    displayImps: string;\r\n    displayBookedValue: string;\r\n    displayPostedAdu: string;\r\n    displayScheduledAdu: string;\r\n    displayAudienceDeficit: string;\r\n    displayRcvPreempt: string;\r\n    displayOsPreempt: string;\r\n    underDeliveryPercent: number = 0;\r\n    overDeliveryPercent: number = 0;\r\n    displayUdImps: any = 0;\r\n    displayUdGrp: any = 0;\r\n    displayOdImps: any = 0;\r\n    displayOdGrp: any = 0;\r\n    displayUdPercent: any = \"0%\";\r\n    displayOdPercent: any = \"0%\";\r\n    udCountWithoutNull: number = 0;\r\n    odCountWithoutNull: number = 0;\r\n    udValue: number = 0;\r\n    odValue: number = 0;\r\n    displayUdValue: string;\r\n    displayOdValue: string;\r\n\r\n    constructor(data: OrderDetails[]) {\r\n        data.forEach((order: OrderDetails) => {\r\n            this.bookedValue += order.booked;\r\n            this.bookedSpots += order.spots;\r\n            this.bookedGrp += order.grp;\r\n            this.bookedGrpWithoutRoundoff += order.grpWithoutRoundoff;\r\n            // this.cpp += order.cpp;\r\n            this.imps += order.imps;\r\n            // this.cpm += order.cpm;\r\n            this.rcvPreempt += order.rcvPreempt;\r\n            this.osPreempt += order.osPreempt;\r\n            this.postedAdu += order.postedAdu;\r\n            this.scheduledAdu += order.scheduledAdu;\r\n            this.audienceDeficit += order.audienceDeficit;\r\n            this.postedAudPercent += order.postedAudPercent;\r\n            this.bookedValueExcludingZeroRtngSpots += order.bookedValueExcludingZeroRtngSpots;\r\n            this.bookedImpWithoutRoundoff += order.bookedImpWithoutRoundoff;\r\n            if (order.postedAudPercent > 0) {\r\n                this.orderCountWithPostedAudiencePer += 1;\r\n            }\r\n            this.odValue += order.odValue;\r\n            this.udValue += order.udValue;\r\n\r\n            this.displayUdImps += order.underDeliveryImpsDisplay === \"-\" ? 0 : order.UDImps;\r\n            this.displayUdGrp += order.underDeliveryGrpDisplay === \"-\" ? 0 : order.UDGrp;\r\n            this.displayOdImps += order.overDeliveryImpsDisplay === \"-\" ? 0 : order.ODImps;\r\n            this.displayOdGrp += order.overDeliveryGrpDisplay === \"-\" ? 0 : order.ODGrp;\r\n            this.underDeliveryPercent += order.underDeliveryPercentDisplay === \"-\" ? 0 : order.underDeliveryPercent;\r\n            this.overDeliveryPercent += order.overDeliveryPercentDisplay === \"-\" ? 0 : order.overDeliveryPercent;\r\n            this.udCountWithoutNull =\r\n                order.underDeliveryPercentDisplay === \"-\" ? this.udCountWithoutNull : this.udCountWithoutNull + 1;\r\n            this.odCountWithoutNull =\r\n                order.overDeliveryPercentDisplay === \"-\" ? this.odCountWithoutNull : this.odCountWithoutNull + 1;\r\n        });\r\n        this.displayOdGrp = this.displayOdGrp === 0 ? \"-\" : this.displayOdGrp.toString();\r\n        this.displayOdImps =\r\n            this.displayOdImps === 0 ? \"-\" : AnnaNumberFormatService.GetRoundedValueWithUnits(this.displayOdImps, 1);\r\n        this.displayUdGrp = this.displayUdGrp === 0 ? \"-\" : this.displayUdGrp.toString();\r\n        this.displayUdImps =\r\n            this.displayUdImps === 0 ? \"-\" : AnnaNumberFormatService.GetRoundedValueWithUnits(this.displayUdImps, 1);\r\n\r\n        this.underDeliveryPercent = this.udCountWithoutNull ? this.underDeliveryPercent / this.udCountWithoutNull : 0;\r\n        this.overDeliveryPercent = this.odCountWithoutNull ? this.overDeliveryPercent / this.odCountWithoutNull : 0;\r\n\r\n        this.cpp =\r\n            this.bookedGrpWithoutRoundoff > 0\r\n                ? this.bookedValueExcludingZeroRtngSpots / this.bookedGrpWithoutRoundoff\r\n                : null;\r\n        this.cpm =\r\n            this.bookedImpWithoutRoundoff > 0\r\n                ? this.bookedValueExcludingZeroRtngSpots / this.bookedImpWithoutRoundoff\r\n                : null;\r\n        this.postedAudPercent =\r\n            this.orderCountWithPostedAudiencePer > 0 ? this.postedAudPercent / this.orderCountWithPostedAudiencePer : 0;\r\n\r\n        this.displayImps = this.imps > 0 ? AnnaNumberFormatService.GetRoundedImpressionsWithUnits(this.imps, 1) : \"$0\";\r\n        this.displayBookedValue =\r\n            this.bookedValue > 0 ? `$${AnnaNumberFormatService.GetRoundedValueWithUnits(this.bookedValue)}` : \"$0\";\r\n        this.displayPostedAdu =\r\n            this.postedAdu > 0 ? `$${AnnaNumberFormatService.GetRoundedValueWithUnits(this.postedAdu)}` : \"$0\";\r\n        this.displayScheduledAdu =\r\n            this.scheduledAdu > 0 ? `$${AnnaNumberFormatService.GetRoundedValueWithUnits(this.scheduledAdu)}` : \"$0\";\r\n        this.displayAudienceDeficit =\r\n            this.audienceDeficit > 0\r\n                ? `$${AnnaNumberFormatService.GetRoundedValueWithUnits(this.audienceDeficit)}`\r\n                : \"$0\";\r\n        this.displayRcvPreempt =\r\n            this.rcvPreempt > 0 ? `$${AnnaNumberFormatService.GetRoundedValueWithUnits(this.rcvPreempt)}` : \"0\";\r\n        this.displayOsPreempt =\r\n            this.osPreempt > 0 ? `$${AnnaNumberFormatService.GetRoundedValueWithUnits(this.osPreempt)}` : \"0\";\r\n        this.displayUdPercent =\r\n            this.underDeliveryPercent > 0\r\n                ? AnnaNumberFormatService.GetRoundedImpressionsWithUnits(this.underDeliveryPercent)\r\n                : \"-\";\r\n        this.displayOdPercent =\r\n            this.overDeliveryPercent > 0\r\n                ? AnnaNumberFormatService.GetRoundedImpressionsWithUnits(this.overDeliveryPercent)\r\n                : \"-\";\r\n        this.displayUdValue =\r\n            this.udValue > 0 ? `$${AnnaNumberFormatService.GetRoundedValueWithUnits(this.udValue)}` : \"-\";\r\n        this.displayOdValue =\r\n            this.odValue > 0 ? `$${AnnaNumberFormatService.GetRoundedValueWithUnits(this.odValue)}` : \"-\";\r\n    }\r\n}\r\n\r\nexport class OrderDetailsGroupedByRevisionStatus {\r\n    orders: OrderDetails[] = [];\r\n    constructor(data: any, currencyPipe: CurrencyPipe, decimalPipe: DecimalPipe, currentTab: string) {\r\n        data?.forEach((eachOrder: any) => {\r\n            const order = new OrderDetails(eachOrder, currencyPipe, decimalPipe, currentTab);\r\n            this.orders.push(order);\r\n        });\r\n    }\r\n}\r\n\r\nexport class OrderListingTabName {\r\n    static readonly TVRevenue = \"TVRevenue\";\r\n    static readonly OtherRevenue = \"OtherRevenue\";\r\n    static readonly BlankAndDeleted = \"BlankAndDeleted\";\r\n    static readonly Deleted = \"Deleted\";\r\n    static readonly PostingAndUDTracker = \"PostingAndUDTracker\";\r\n    static readonly TodaysAnnaOffers = \"TodaysAnnaOffers\";\r\n    static readonly TodaysUserOffers = \"TodaysUserOffers\";\r\n    static readonly OffersAwaitingApproval = \"OffersAwaitingApproval\";\r\n    static readonly ECOrders = \"ECOrders\";\r\n}\r\n\r\nexport interface OrderListingTab {\r\n    element: string;\r\n    name: string;\r\n    url: string;\r\n    componentName: OrderListingTabName;\r\n    showDivider: boolean;\r\n}\r\n\r\nexport class OrderDetailsInfo {\r\n    channelId: number;\r\n    orderId: string;\r\n    campaignId: number;\r\n    campaignStartDate: string;\r\n    campaignEndDate: string;\r\n    displayOrderId: string;\r\n    currentTab: number;\r\n    advertiserId: string;\r\n    latest_revision: number;\r\n    navigateTo: string;\r\n    currentListingTab: number;\r\n    searchRedirected: boolean;\r\n    currentListingTabName: string;\r\n    order_type: OrderRoute;\r\n    orderType: string;\r\n    constructor() {\r\n        this.channelId = 0;\r\n        this.orderId = null;\r\n        this.campaignId = 0;\r\n        this.campaignStartDate = null;\r\n        this.campaignEndDate = null;\r\n        this.displayOrderId = null;\r\n        this.currentTab = 0;\r\n        this.currentListingTab = 1;\r\n        this.currentListingTabName = \"\";\r\n        this.advertiserId = \"\";\r\n        this.latest_revision = null;\r\n        this.navigateTo = \"\";\r\n        this.orderType = null;\r\n    }\r\n}\r\n\r\nexport type OrderListingTabsName = \"TV Revenue\" | \"TV\" | \"Other Revenue\" | \"Blank & Deleted\" | \"Deleted\";\r\n","import { OrderRoute } from \"@annalib/anna-feature-shared-lib\";\r\nimport dayjs from \"dayjs\";\r\n\r\nimport { OrderTypeConstants } from \"../../order-listing/models/order-listing.constant\";\r\nimport { OrderType } from \"../../order-listing/models/order-listing.model\";\r\nimport { ESTIMATEPRIORITIES } from \"../../spot-details/models/generic-spot-details.model\";\r\n\r\nexport type CashOrTrade = \"Cash\" | \"Trade\";\r\nexport type OrderCategory =\r\n    | OrderCategoryEnum.tvRevenue\r\n    | OrderCategoryEnum.nonSpotsDigital\r\n    | OrderCategoryEnum.stationUtilizedTV\r\n    | OrderCategoryEnum.tradeTV;\r\nexport type OrderFlightStatus =\r\n    | OrderFlightStatusEnum.inflight\r\n    | OrderFlightStatusEnum.completed\r\n    | OrderFlightStatusEnum.upcoming;\r\n\r\nexport enum OrderCategoryEnum {\r\n    tvRevenue = \"TV Revenue\",\r\n    nonSpotsDigital = \"Non-spots Digital\",\r\n    stationUtilizedTV = \"Station Utilized TV\",\r\n    tradeTV = \"Trade TV\",\r\n}\r\n\r\nexport enum OrderFlightStatusEnum {\r\n    inflight = \"LIVE\",\r\n    completed = \"COMPLETED\",\r\n    upcoming = \"UPCOMING\",\r\n}\r\n\r\nexport enum OrderMetricsFromBE {\r\n    grp = \"GRP\",\r\n    impressions = \"Impressions\",\r\n}\r\n\r\nexport class StartEndDate {\r\n    StartDate: string;\r\n    EndDate: string;\r\n    constructor(obj: any) {\r\n        this.StartDate = obj.StartDate;\r\n        this.EndDate = obj.EndDate;\r\n    }\r\n}\r\n\r\nexport enum HiatusStatusEnum {\r\n    \"QUEUED_FOR_ENTRY\" = \"QUEUED_FOR_ENTRY\",\r\n    \"ENTRY_IN_PROGRESS\" = \"ENTRY_IN_PROGRESS\",\r\n    \"ENTRY_FAILED\" = \"ENTRY_FAILED\",\r\n    \"AWAITING_APPROVAL\" = \"AWAITING_APPROVAL\",\r\n    \"APPROVED\" = \"APPROVED\",\r\n    \"DATES_NOT_SET\" = \"DATES_NOT_SET\",\r\n    \"REJECTED\" = \"REJECTED\",\r\n}\r\n\r\nexport class HiatusDetailsForPopup {\r\n    enableEdit: boolean = false;\r\n    statusClass: string = null;\r\n    hiatusDateRange: StartEndDate[] = [];\r\n    lastEditedByUsername: string = null;\r\n    lastEditedByUserType: \"SELLER\" | \"BUYER\" | null = null;\r\n    lastEditedTime: string = null;\r\n    hiatusStatus: HiatusStatusEnum;\r\n    hiatusStatusTextToDisplay: string;\r\n    hiatusStatusIconClasss: string;\r\n    sellerComments: string = null;\r\n    disableSellerComments: boolean;\r\n    lastEditAndEnteredOnTrafficMessage: string = \"\";\r\n\r\n    constructor(data: any, disableEdit: boolean, isEOSApplication: boolean = false) {\r\n        if (data.HiatusPeriod) {\r\n            data.HiatusPeriod.forEach((date: StartEndDate) => {\r\n                const hiatusStartEndDate = new StartEndDate(date);\r\n                this.hiatusDateRange.push(hiatusStartEndDate);\r\n            });\r\n        }\r\n\r\n        this.lastEditedByUsername = data.UserName ? data.UserName : null;\r\n        this.lastEditedByUserType = data.LastUpdatedUserType ? data.LastUpdatedUserType : null;\r\n        this.lastEditedTime = data.LastUpdatedAt ? data.LastUpdatedAt : null;\r\n        this.hiatusStatus = data.Status;\r\n        this.sellerComments = data.Comment;\r\n\r\n        switch (this.hiatusStatus) {\r\n            case HiatusStatusEnum.QUEUED_FOR_ENTRY:\r\n                this.statusClass = \"queued-for-entry\";\r\n                this.hiatusStatusTextToDisplay = \"Queued for Entry\";\r\n                this.hiatusStatusIconClasss = \"mdi mdi-message-arrow-right\";\r\n                break;\r\n            case HiatusStatusEnum.ENTRY_FAILED:\r\n                this.statusClass = \"entry-failed\";\r\n                this.hiatusStatusTextToDisplay = \"Entry Failed\";\r\n                this.hiatusStatusIconClasss = \"mdi mdi-alert-octagon\";\r\n                break;\r\n            case HiatusStatusEnum.ENTRY_IN_PROGRESS:\r\n                this.statusClass = \"entry-in-progress\";\r\n                this.hiatusStatusTextToDisplay = \"Entry in Progress\";\r\n                this.hiatusStatusIconClasss = \"mdi mdi-check-circle\";\r\n                break;\r\n            case HiatusStatusEnum.AWAITING_APPROVAL:\r\n                this.statusClass = \"awaiting-approval\";\r\n                this.hiatusStatusTextToDisplay = \"Awaiting Approval\";\r\n                this.hiatusStatusIconClasss = \"mdi mdi-progress-clock\";\r\n                break;\r\n            case HiatusStatusEnum.APPROVED:\r\n                this.enableEdit = !disableEdit;\r\n                break;\r\n            case HiatusStatusEnum.REJECTED:\r\n                this.enableEdit = !disableEdit;\r\n                break;\r\n            case HiatusStatusEnum.DATES_NOT_SET:\r\n                this.enableEdit = !disableEdit;\r\n                break;\r\n            // no default\r\n        }\r\n\r\n        this.disableSellerComments = !this.enableEdit || (this.enableEdit && isEOSApplication);\r\n        if (this.lastEditedByUserType != null) {\r\n            const userType = this.lastEditedByUserType === \"SELLER\" ? \"Seller\" : \"Buyer\";\r\n            this.lastEditAndEnteredOnTrafficMessage += `Last edited by ${userType} (${this.lastEditedByUsername}) on <span class=\"bold-text\"> ${this.lastEditedTime}</span> `;\r\n        }\r\n        if (this.lastEditedByUserType != null && data.TrafficEntryDateTime != null) {\r\n            this.lastEditAndEnteredOnTrafficMessage += `<span class='divider'>|</span> `;\r\n        }\r\n        if (data.TrafficEntryDateTime != null) {\r\n            this.lastEditAndEnteredOnTrafficMessage += `Entered on WO Traffic on <span class=\"bold-text\">${data.TrafficEntryDateTime}</span>`;\r\n        }\r\n    }\r\n}\r\nexport class HiatusDetailsForOrderSummary {\r\n    // enableEdit: boolean = false;\r\n    hiatusDateRange: StartEndDate[] = [];\r\n    actionLinkForPopup: string;\r\n    constructor(data: any, orderCategory: OrderCategory, isDeletedOrder: boolean) {\r\n        if (data.HiatusDates) {\r\n            data.HiatusDates.forEach((date: StartEndDate) => {\r\n                const hiatusStartEndDate = new StartEndDate(date);\r\n                this.hiatusDateRange.push(hiatusStartEndDate);\r\n            });\r\n        }\r\n\r\n        if (orderCategory === OrderCategoryEnum.tvRevenue && !isDeletedOrder) {\r\n            this.actionLinkForPopup = data?.IsHiatusDatesSet ? \"View\" : \"Add\";\r\n        } else {\r\n            this.actionLinkForPopup = data?.IsHiatusDatesSet ? \"-\" : \"View\";\r\n        }\r\n    }\r\n}\r\n\r\nexport enum MeasurementAgencyInOrderSummary {\r\n    NielsenHHOvernights = \"Nielsen (Overnights)\",\r\n    NielsenSweeps = \"Nielsen (Sweeps)\",\r\n    Comscore = \"Comscore\",\r\n}\r\n\r\nexport class OrderInfo {\r\n    stationName: string;\r\n    networkAffiliate: string;\r\n    market: string;\r\n    latestRevisionDate: string;\r\n    orderCreationDate: string;\r\n    aeName: string;\r\n    isUserForThisOrderActivated: boolean;\r\n    salesOffice: string;\r\n    measurementAgency: MeasurementAgencyInOrderSummary;\r\n    region: string;\r\n    demographic: string;\r\n    stationOrderId: string;\r\n    flightStartDate: string;\r\n    flightEndDate: string;\r\n    hiatusPeriod: StartEndDate[] = [];\r\n    revCode1: string;\r\n    revCode2: string;\r\n    revCode3: string;\r\n    revenueClass: string;\r\n    postingType: string;\r\n    isPayForPerformanceOrder: boolean;\r\n    isStarredOrder: boolean;\r\n    isStationInSandboxMode: boolean;\r\n    isWriteEnabledOrder: boolean;\r\n    orderRoute: OrderRoute;\r\n    orderType: string;\r\n    isRepOrder: boolean;\r\n    orderCategory: OrderCategory;\r\n    cashOrTrade: CashOrTrade;\r\n    isDrOrder: boolean;\r\n    orderFlightStatus: OrderFlightStatus;\r\n    disableIfInSandboxAndWriteDisabled: boolean;\r\n    isDeletedOrder: boolean;\r\n    isCommercialOrder: boolean;\r\n    unitCode: string;\r\n    repStartDate: string;\r\n    repEndDate: string;\r\n    actionLinkForHiatusPopup: string;\r\n    isAnnaOrderEntry: boolean;\r\n    isGenerateAduPostingInBizRuleSet: boolean;\r\n    // isAutomationActivatedActionAllowed: boolean;\r\n    allowDisablingAutomation: boolean;\r\n    allowAutomation: boolean;\r\n    considerSpotsWithBonusOrAdu: boolean;\r\n\r\n    constructor(obj: any) {\r\n        this.stationName = obj.StationName;\r\n        this.networkAffiliate = obj.NetworkAffiliate;\r\n        this.market = obj.MarketName;\r\n        this.orderCreationDate = obj.OrderCreationDate;\r\n        this.allowDisablingAutomation = obj.AllowDisablingAutomation;\r\n        this.allowAutomation = obj.AllowAutomation;\r\n        this.aeName = obj.AeName;\r\n        this.measurementAgency = obj.MeasurementAgencyType;\r\n        this.isUserForThisOrderActivated = obj.IsUserForThisOrderActivated;\r\n        this.salesOffice = obj.SalesOffice;\r\n        this.region = obj.Region;\r\n        this.demographic = obj.Demographic;\r\n        this.stationOrderId = obj.StationOrderId;\r\n        this.flightStartDate = obj.FlightStartDate;\r\n        this.flightEndDate = obj.FlightEndDate;\r\n        // this.orderType=\"\";\r\n        this.orderType = this.mapOrderTypeToText(obj.OrderType);\r\n        this.postingType = obj.PostingType;\r\n        this.revenueClass = obj.RevenueClass;\r\n        this.revCode1 = obj.RevCode1;\r\n        this.revCode2 = obj.RevCode2;\r\n        this.revCode3 = obj.RevCode3;\r\n        this.isPayForPerformanceOrder = obj.IsPayForPerformanceOrder;\r\n        this.isStarredOrder = obj.IsStarredOrder;\r\n        this.isGenerateAduPostingInBizRuleSet = obj.IsGenerateAduPostingInBizRuleSet;\r\n        // this.isAutomationActivatedActionAllowed = obj.IsAutomationActivatedActionAllowed;\r\n        this.isStationInSandboxMode = obj.IsStationInSandboxMode;\r\n        this.isWriteEnabledOrder = obj.IsAutomated;\r\n        this.orderRoute = obj.OrderRoute;\r\n        this.orderCategory = obj.OrderCategory;\r\n        this.cashOrTrade = obj.CashOrTrade;\r\n        this.isDrOrder = obj.IsDrOrder;\r\n        this.orderFlightStatus = obj.OrderFlightStatus;\r\n        this.disableIfInSandboxAndWriteDisabled = this.isStationInSandboxMode ? !this.isWriteEnabledOrder : false;\r\n        this.isRepOrder = obj.IsRepOrder;\r\n        this.isDeletedOrder = obj.IsDeletedAtTraffic;\r\n        this.isCommercialOrder = obj.IsCommercialOrder;\r\n        this.unitCode = obj.UnitCode;\r\n        this.repStartDate = obj.RepStartDate;\r\n        this.repEndDate = obj.RepEndDate;\r\n        this.isAnnaOrderEntry = obj.AnnaEnteredRepOrder;\r\n        this.considerSpotsWithBonusOrAdu = obj.ConsiderSpotsWithBonusOrAdu;\r\n\r\n        if (obj.HiatusPeriod) {\r\n            obj.HiatusPeriod.forEach((date: StartEndDate) => {\r\n                const hiatusStartEndDate = new StartEndDate(date);\r\n                this.hiatusPeriod.push(hiatusStartEndDate);\r\n            });\r\n        }\r\n        if (\r\n            this.orderCategory === OrderCategoryEnum.tvRevenue &&\r\n            !this.isDeletedOrder &&\r\n            this.orderFlightStatus !== OrderFlightStatusEnum.completed\r\n        ) {\r\n            this.actionLinkForHiatusPopup = obj.IsHiatusDatesSet ? \"View\" : \"Add\";\r\n        } else {\r\n            this.actionLinkForHiatusPopup = obj.IsHiatusDatesSet ? \"View\" : \"-\";\r\n        }\r\n    }\r\n    mapOrderTypeToText(orderType: OrderType): string {\r\n        switch (orderType) {\r\n            case OrderType.PAID_WITH_AUDIENCE:\r\n                return OrderTypeConstants.PAID_AUDIENCE;\r\n            case OrderType.PAID_NO_AUDIENCE:\r\n                return OrderTypeConstants.PAID_NO_AUDIENCE;\r\n            case OrderType.UD_LIABILITY_NOT_SET:\r\n                return OrderTypeConstants.UD_LIABILITY_NOT_SET;\r\n            case OrderType.UD_LIABILITY_SET:\r\n                return OrderTypeConstants.UD_LIABILITY_SET;\r\n            case OrderType.UD:\r\n                return OrderTypeConstants.UD;\r\n            default:\r\n                return \"\";\r\n        }\r\n    }\r\n}\r\n\r\nexport class PrimaryDetailContactInfo {\r\n    name: string;\r\n    email: string;\r\n    phoneNo: string;\r\n    constructor(obj: any) {\r\n        this.name = obj.Name;\r\n        this.email = obj.Email;\r\n        this.phoneNo = obj.ContactNumber;\r\n    }\r\n}\r\n\r\nexport class ClientInfo {\r\n    agencyName: string;\r\n    agencyLocation: string;\r\n    advertiserName: string;\r\n    advertiserId: number;\r\n    productCode: string;\r\n    alternateOrderId: string;\r\n    estimateNo: string;\r\n    orderProductDescription: string;\r\n    orderMinSeparation: string;\r\n\r\n    constructor(obj: any) {\r\n        this.advertiserId = obj.AdvertiserId;\r\n        this.agencyName = obj.AgencyName;\r\n        this.agencyLocation = obj.AgencyLocation;\r\n        this.advertiserName = obj.AdvertiserName;\r\n        this.productCode = obj.ProductCode;\r\n        this.alternateOrderId = obj.AlternateOrderId;\r\n        this.estimateNo = obj.EstimateNo;\r\n        this.orderProductDescription = obj.OrderProductDescription;\r\n        this.orderMinSeparation = obj.MinOrderSeparation;\r\n        // this.primaryBuyer = obj.BuyerContactDetails.Primary\r\n        //     ? new PrimaryDetailContactInfo(obj.BuyerContactDetails.Primary)\r\n        //     : null;\r\n        // this.secondaryBuyer = obj.BuyerContactDetails.Secondary\r\n        //     ? new PrimaryDetailContactInfo(obj.BuyerContactDetails.Secondary)\r\n        //     : null;\r\n        // this.testBuyer = obj.BuyerContactDetails.TestBuyer\r\n        //     ? new PrimaryDetailContactInfo(obj.BuyerContactDetails.TestBuyer)\r\n        //     : null;\r\n    }\r\n}\r\n\r\nexport class SpotsMeasurementCostAndValue {\r\n    spots: number;\r\n    value: string;\r\n    grp: string;\r\n    imps: string;\r\n\r\n    constructor(obj: any) {\r\n        this.spots = obj.Spots !== null ? obj.Spots : \"-\";\r\n        this.value = obj.Value;\r\n        this.grp = obj.GRP;\r\n        this.imps = obj.IMP;\r\n    }\r\n}\r\n\r\nexport class RevenueInfo {\r\n    isUdLiabilitySet: boolean;\r\n    udLiabilityMetric?: string;\r\n    originallyOrdered: SpotsMeasurementCostAndValue;\r\n    booked: SpotsMeasurementCostAndValue;\r\n    projected: SpotsMeasurementCostAndValue;\r\n    orderedToDate: SpotsMeasurementCostAndValue;\r\n    airedToDate: SpotsMeasurementCostAndValue;\r\n    postedToDate: SpotsMeasurementCostAndValue;\r\n    outstandingPreemptions: SpotsMeasurementCostAndValue;\r\n    credited: SpotsMeasurementCostAndValue;\r\n    unresolved: SpotsMeasurementCostAndValue;\r\n\r\n    constructor(obj: any) {\r\n        this.isUdLiabilitySet = obj.IsUDLiabilitySet;\r\n        this.udLiabilityMetric = obj.LiabilityMetric;\r\n        this.originallyOrdered = new SpotsMeasurementCostAndValue(obj.OriginallyOrdered);\r\n        this.booked = new SpotsMeasurementCostAndValue(obj.Booked);\r\n        this.projected = new SpotsMeasurementCostAndValue(obj.Projected);\r\n        this.orderedToDate = new SpotsMeasurementCostAndValue(obj.OrderedToDate);\r\n        this.airedToDate = new SpotsMeasurementCostAndValue(obj.AiredToDate);\r\n        this.postedToDate = new SpotsMeasurementCostAndValue(obj.PostedToDate);\r\n        this.outstandingPreemptions = new SpotsMeasurementCostAndValue(obj.OutstandingPreemptions);\r\n        this.credited = new SpotsMeasurementCostAndValue(obj.Credited);\r\n        this.unresolved = new SpotsMeasurementCostAndValue(obj.Unresolved);\r\n    }\r\n}\r\n\r\nexport class ProxyPeriod {\r\n    startDate: string;\r\n    endDate: string | null;\r\n    constructor(data: any) {\r\n        this.startDate = dayjs(data.StartDate).format(\"MM/DD/YYYY\");\r\n        this.endDate = data.EndDate != null ? dayjs(data.EndDate).format(\"MM/DD/YYYY\") : null;\r\n    }\r\n}\r\n\r\nexport class PrimaryDetails {\r\n    stationId: number;\r\n    orderId: string;\r\n    campaignStartDate: string;\r\n    campaignEndDate: string;\r\n    og: { id: number; text: string };\r\n    campaignId: number;\r\n    orderMeasurementType: string;\r\n    timeZone: string;\r\n    lastSunsetDateAndTimeAndTimezone: string;\r\n    latestConfirmedRevNo: number;\r\n    postAirDate: string;\r\n    postEvalDatesMessages: string[];\r\n    proxiedUserId: number | null;\r\n    orderInfo: OrderInfo;\r\n    clientInfo: ClientInfo;\r\n    revenueInfo: RevenueInfo;\r\n    proxyPeriod: ProxyPeriod | null;\r\n    estimatePriorities: ESTIMATEPRIORITIES[] | string[];\r\n\r\n    constructor(obj: any, isBuyerInterface: boolean = false) {\r\n        this.stationId = obj.StationId;\r\n        this.orderId = obj.OrderInfo.StationOrderId;\r\n        this.campaignStartDate = dayjs(obj.OrderInfo.FlightStartDate, \"MM/DD/YY\").format(\"MM/DD/YYYY\");\r\n        this.campaignEndDate = dayjs(obj.OrderInfo.FlightEndDate, \"MM/DD/YY\").format(\"MM/DD/YYYY\");\r\n        this.og = { id: obj?.OgId, text: obj?.OgName };\r\n        this.campaignId = obj.CampaignId;\r\n        this.orderMeasurementType = obj.OrderMeasurementType;\r\n        this.timeZone = obj.TimeZone;\r\n        this.lastSunsetDateAndTimeAndTimezone = obj.LastSunsetAt;\r\n        this.latestConfirmedRevNo = obj.LatestConfirmedRevNo;\r\n        this.postAirDate = obj.PostAirDate;\r\n        this.postEvalDatesMessages = obj.PostEvalDatesMessages;\r\n        this.proxiedUserId = obj.UserId;\r\n        this.orderInfo = new OrderInfo(obj.OrderInfo);\r\n        this.clientInfo = new ClientInfo(obj.ClientInfo);\r\n        this.revenueInfo = new RevenueInfo(obj.RevenueInfo);\r\n        if (this.orderInfo.orderType === OrderTypeConstants.UD_LIABILITY_NOT_SET) {\r\n            this.revenueInfo.booked.grp = \"-\";\r\n            this.revenueInfo.booked.imps = \"-\";\r\n            this.revenueInfo.orderedToDate.grp = \"-\";\r\n            this.revenueInfo.orderedToDate.imps = \"-\";\r\n        }\r\n        this.proxyPeriod = obj.ProxyPeriod != null ? new ProxyPeriod(obj.ProxyPeriod) : null;\r\n        this.estimatePriorities = obj.EstimatePriorities;\r\n    }\r\n}\r\n\r\nexport class Group {\r\n    group: KeyValueInfo[] = [];\r\n    constructor(...groupArr: any) {\r\n        groupArr.forEach((group: KeyValueInfo) => {\r\n            this.group.push(group);\r\n        });\r\n    }\r\n}\r\n\r\nexport class KeyValueInfo {\r\n    name: string;\r\n    value: any;\r\n    nameClass: string;\r\n    valueClass: string;\r\n    isSpotGrpValue: boolean;\r\n    noBorderBottom: boolean;\r\n    nameColspan: number;\r\n    valueColspan: number;\r\n    tooltipMessageBesideName: string | null;\r\n    showLink: boolean;\r\n    constructor(\r\n        name: string,\r\n        value: string,\r\n        nameClass: string,\r\n        valueClass: string,\r\n        isSpotGrpValue = false,\r\n        nameColspan = 1,\r\n        valueColspan = 1,\r\n        noBorderBottom = false,\r\n        tooltipMessageBesideName: string | null = null,\r\n        showLink = false,\r\n    ) {\r\n        this.name = name;\r\n        this.value = value;\r\n        this.nameClass = nameClass;\r\n        this.valueClass = valueClass;\r\n        this.isSpotGrpValue = isSpotGrpValue;\r\n        this.nameColspan = nameColspan;\r\n        this.valueColspan = valueColspan;\r\n        this.noBorderBottom = noBorderBottom;\r\n        this.showLink = showLink;\r\n        this.tooltipMessageBesideName = tooltipMessageBesideName;\r\n    }\r\n}\r\n\r\nexport class CollapseKeyValueInfo {\r\n    name: string;\r\n    value: string;\r\n    firstValue?: string;\r\n    secondValue?: string;\r\n    className: string;\r\n    showLink: boolean;\r\n    constructor(\r\n        name: string,\r\n        value: string,\r\n        className: string = null,\r\n        showLink: boolean = false,\r\n        firstValue: string = null,\r\n        secondValue: string = null,\r\n    ) {\r\n        this.name = name;\r\n        this.value = value;\r\n        this.className = className;\r\n        this.showLink = showLink;\r\n        this.firstValue = firstValue;\r\n        this.secondValue = secondValue;\r\n    }\r\n}\r\n","export class AudiencePerformanceConstant {\r\n    // colors\r\n    static readonly bookedInQuaterColor = \"#9b1b93\";\r\n    static readonly airedToDateColor = \"#d780d1\";\r\n    static readonly postedToDateColor = \"#8db72e\";\r\n    static readonly postedToDateWithAduColor = \"#426000\";\r\n    static readonly whiteColor = \"#fff\";\r\n    static readonly noDataColor = \"#d8d8d8\";\r\n    static readonly radiantBookedInQuarterColor = \"#CB04A5\";\r\n    static readonly radiantPostedToDateColor = \"#52D1DC\";\r\n    static readonly radiantPostedToDateWithAduColor = \"#1C8A94\";\r\n\r\n    // unit constants\r\n    static readonly impressionUnit = \"IMP('000)\";\r\n    static readonly impressionName = \"Impression\";\r\n    static readonly grpUnit = \"GRP\";\r\n    static readonly spotsUnit = \"Spots\";\r\n    static readonly adus = \"ADUs \";\r\n    static readonly impressionUnitKey = `${AudiencePerformanceConstant.impressionUnit}:`;\r\n    static readonly grpUnitKey = `${AudiencePerformanceConstant.grpUnit}:`;\r\n\r\n    // keywords\r\n    static readonly booked = \"Booked\";\r\n    static readonly posted = \"Posted\";\r\n    static readonly toDate = \"to date\";\r\n    static readonly throughDate = \"through date\";\r\n    static readonly total = \"Total\";\r\n\r\n    // audience delivery card\r\n    static readonly audienceDelivery = \"Audience Delivery\";\r\n    static readonly audiencePerformance = \"Audience Performance\";\r\n    // static readonly commercialOrderWithRating = \"Commercial orders with ratings/impressions\";\r\n    static readonly paidOrderWithAudience = \"Orders that require audience posting\";\r\n    static readonly audienceDeliveredThroughDate = \"% of Audience $Value delivered through \";\r\n    static readonly bookedInQuater = `${AudiencePerformanceConstant.booked} in the quarter`;\r\n    static readonly postedToDate = `${AudiencePerformanceConstant.posted} ${AudiencePerformanceConstant.toDate} `;\r\n    // eslint-disable-next-line max-len\r\n    static readonly postedThroughDate = `${AudiencePerformanceConstant.posted} ${AudiencePerformanceConstant.throughDate} `;\r\n    static readonly postedThrough = `${AudiencePerformanceConstant.posted} through`;\r\n    static readonly postedProjection = `${AudiencePerformanceConstant.posted} Projection`;\r\n    // eslint-disable-next-line max-len\r\n    static readonly totalSpotsKeyUnit = `${AudiencePerformanceConstant.total} ${AudiencePerformanceConstant.spotsUnit.toLowerCase()}: `;\r\n    static readonly noPostedData = \"No Posted data*\";\r\n    static readonly noAiredData = \"No Aired data*\";\r\n    static readonly airedThrough = \"Booked through \";\r\n    static readonly inTheQuater = \"in the quarter\";\r\n    static readonly inTheSelectedPeriod = \"in the selected period\";\r\n    static readonly withAdus = \" (With ADUs)\";\r\n    static readonly NoAdus = \" (No ADUs)\";\r\n    static readonly noData = \" -\";\r\n    static readonly scheduled = \"Scheduled\";\r\n    static readonly postedDataNotFound = \"Posted data not found\";\r\n    static readonly postedDataNotFoundDatesMessage = \"Posted data could not be found for the following dates\";\r\n    static readonly postedDataNotFoundDemosMessage =\r\n        \"Posted data could not be found for one or more days of the following demographics\";\r\n    static readonly InfoData = \"Info-Value\";\r\n    static readonly udLiability = \"UD LIABILITY\";\r\n    static readonly udPercentageDelivered = \"% Delivered:\";\r\n\r\n    static readonly underDeliveryAtHundredPercent = \"UD (@ 100%)\";\r\n    static readonly unPaidOverDelivery = \"UNPAID OD (> 100%)\";\r\n    static readonly underDeliveryAtThreshold = \"UD (@ THRESHOLD)\";\r\n    static readonly projectedUnderDeliveryAtHundredPercent = \"PROJ. UD (@ 100%)\";\r\n    static readonly overDeliveryProjection = \"PROJ. UNPAID OD (> 100%)\";\r\n    static readonly projectedUnderDeliveryAtThreshold = \"PROJ. UD (@ THRESHOLD)\";\r\n    static readonly carryForwardUnderDeliveryLiability = \"C/F UD LIABILITY\";\r\n    static readonly podBillingReduction = \"PoD BILLING REDUCTION\";\r\n    static readonly projectedCFunderDeliveryLiability = \"PROJ. C/F UD LIABILITY\";\r\n    static readonly projectedPodBillingReduction = \"PROJ. PoD BILLING REDUCTION\";\r\n    static readonly deliveryThresholdHeading = \"DELIVERY THRESHOLD %\";\r\n\r\n    static readonly udLiabilityTooltipForDashboardCard =\r\n        // eslint-disable-next-line max-len\r\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.\";\r\n    static readonly udLiabilityTooltipPartOne =\r\n        \"This under-delivery is a liability to the station since it is below the permitted audience delivery limit (\";\r\n    static readonly udLiabilityTooltipPartTwo = \"%) as set in the business rules for this order.\";\r\n}\r\n","import { AnnaNumberFormatService } from \"@annalib/anna-core\";\r\nimport { IdText, KeyValue, SingleSelectIdText, TypeOfCalendar } from \"@annalib/anna-design-components-lib\";\r\nimport dayjs from \"dayjs\";\r\nimport { cloneDeep } from \"lodash-es\";\r\n\r\nimport { OrderType } from \"../../order-listing/models/order-listing.model\";\r\nimport { AudiencePerformanceConstant } from \"../constants/audiencePerformance.constant\";\r\n\r\nexport interface MissingPostedDataRequestPayload {\r\n    StationId: number;\r\n    Demographs: string[];\r\n    StartDate: string;\r\n    EndDate: string;\r\n    PostingType: PostingTypeEnum;\r\n    MeasurementAgencyType: string;\r\n}\r\nexport enum PostingTypeEnum {\r\n    LIVE_PLUS_SAME_DAY = \"LS\",\r\n    LIVE_PLUS_ONE_DAY = \"L1\",\r\n    LIVE_PLUS_THREE_DAYS = \"L3\",\r\n    LIVE_PLUS_SEVEN_DAYS = \"L7\",\r\n}\r\nexport class LegendData {\r\n    legendName: string;\r\n    legendDotColor: string;\r\n    legendMetaData: KeyValue[];\r\n    constructor(name: string, color: string, data: KeyValue[]) {\r\n        this.legendName = name;\r\n        this.legendDotColor = color;\r\n        this.legendMetaData = data;\r\n    }\r\n}\r\n\r\nexport class PostedBifurcationData {\r\n    heading: string;\r\n    value: string;\r\n    keyValue: KeyValue[];\r\n    constructor(heading: string, value: string, keyValue: KeyValue[]) {\r\n        this.heading = heading;\r\n        this.value = value;\r\n        this.keyValue = keyValue;\r\n    }\r\n}\r\n\r\nexport class Dataset {\r\n    data: number[];\r\n    measurementName?: string;\r\n    tooltipDisplayValue: string[];\r\n    tooltipImpsOrGrpDisplay?: string[];\r\n    label: string;\r\n    fill: boolean = true;\r\n    borderColor: string;\r\n    backgroundColor: string;\r\n    hoverBackgroundColor: string;\r\n    hoverBorderColor: string;\r\n    hoverBorderCapStyle: string;\r\n    pointBorderColor: string;\r\n    pointBackgroundColor: string;\r\n    pointHoverBackgroundColor: string;\r\n    pointHoverBorderColor: string;\r\n    borderRadius: number;\r\n    borderDash: number[];\r\n    borderWidth: any;\r\n    order: number;\r\n\r\n    constructor(\r\n        measurementName: string,\r\n        value: number[],\r\n        displayValue: string[],\r\n        displayImpsOrGrp: string[],\r\n        borderColor: string,\r\n        backgroundColor: string,\r\n        borderRadius: number,\r\n        order: number,\r\n        borderDash: number[] = [],\r\n        borderWidth: number = 2,\r\n    ) {\r\n        this.measurementName = measurementName;\r\n        this.data = value;\r\n        this.tooltipDisplayValue = displayValue;\r\n        this.tooltipImpsOrGrpDisplay = displayImpsOrGrp;\r\n        this.pointHoverBackgroundColor = borderColor;\r\n        this.pointHoverBorderColor = borderColor;\r\n        this.borderColor = borderColor;\r\n        this.backgroundColor = backgroundColor;\r\n        this.borderRadius = borderRadius;\r\n        this.borderWidth = borderWidth;\r\n        this.borderDash = borderDash;\r\n        this.order = order;\r\n    }\r\n}\r\n\r\nexport interface NewChartJSType {\r\n    labels: string[];\r\n    datasets: Dataset[];\r\n}\r\n\r\nexport interface PeriodSelectionPopUp {\r\n    isEntireFlightPeriod?: boolean;\r\n    calendarType: TypeOfCalendar;\r\n    periodMode: string;\r\n    year: string | null;\r\n    month: any | null;\r\n    quarter: any | null;\r\n    startDate: string | null;\r\n    endDate: string | null;\r\n}\r\n\r\nexport interface ICalendarTypeResponse {\r\n    BroadcastQuarterYear: IYearQuarter[];\r\n    FiscalQuarterYear: IYearQuarter[];\r\n}\r\n\r\nexport interface IYearQuarter {\r\n    Year: number;\r\n    Quarters: IQuarter[];\r\n}\r\n\r\nexport interface IQuarter {\r\n    DisplayDate: string;\r\n    StartDate: string;\r\n    EndDate: string;\r\n    IsCurrentQuarter: boolean;\r\n}\r\n\r\nexport class AudienceImpressionsGraphData {\r\n    date: string[] = [];\r\n    grp: number[] = [];\r\n    impression: number[] = [];\r\n\r\n    valueDisplay: string[] = [];\r\n    grpDisplay: string[] = [];\r\n    impressionDisplay: string[] = [];\r\n    constructor(arr: ChartDataObjects[]) {\r\n        if (arr) {\r\n            arr.forEach((data: ChartDataObjects) => {\r\n                this.date.push(data.Date);\r\n                this.impression.push(data.Impressions);\r\n                this.grp.push(data.Grps);\r\n\r\n                this.impressionDisplay.push(data.ImpressionsDisplay);\r\n                this.valueDisplay.push(data.ValueDisplay);\r\n                this.grpDisplay.push(data.GrpsDisplay);\r\n            });\r\n        }\r\n    }\r\n}\r\n\r\ninterface ChartDataObjects {\r\n    Date: string;\r\n    Grps: number;\r\n    GrpsDisplay: string;\r\n    Impressions: number;\r\n    ImpressionsDisplay: string;\r\n    Value: number;\r\n    ValueDisplay: string;\r\n}\r\n\r\nexport class AudienceDeliveryCardInfo {\r\n    udLiabilityValueDisplay: string;\r\n    udLiablityImpressionDisplay: string;\r\n    udLiabilityGRPDisplay: string;\r\n    udLiabilitypercentageDelivered: string;\r\n    orderType: OrderType;\r\n    isPaidOrdersPresent: boolean;\r\n    audienceDeliveredToDateDisplay: string;\r\n    projectedAudienceDeliveredToDateDisplay: string;\r\n    bookedImpressionDisplay: string;\r\n    bookedGrpDisplay: string;\r\n    bookedValueDisplay: string;\r\n    bookedSpotsDisplay: string;\r\n    daypartGroup: SingleSelectIdText[];\r\n    preApprovedSpotsDisplay: string;\r\n    buyerApprovedSpotsDisplay: string;\r\n    airedImpressionDisplay: string;\r\n    airedGrpDisplay: string;\r\n    airedValueDisplay: string;\r\n    airedSpotsDisplay: string;\r\n    postedImpressionDisplay: string;\r\n    postedGrpDisplay: string;\r\n    postedValueDisplay: string;\r\n    postedWithoutAduSpotsDisplay: string;\r\n    bookedAndAduImpressionDisplay: string;\r\n    bookedAndAduGrpDisplay: string;\r\n    bookedAndAduValue: string;\r\n    postedWithAduSpotsDisplay: string;\r\n    udImpactsToDisplay: string;\r\n\r\n    postedProjectionNoAduSpotsDisplay: string;\r\n    postedProjectionNoAduValueDisplay: string;\r\n    postedProjectionNoAduGrpDisplay: string;\r\n    postedProjectionNoAduImpressionDisplay: string;\r\n\r\n    postedProjectionAduSpotsDisplay: string;\r\n    postedProjectionAduValueDisplay: string;\r\n    postedProjectionAduGrpDisplay: string;\r\n    postedProjectionAduImpressionDisplay: string;\r\n\r\n    scheduledAduImpressionDisplay: string;\r\n    scheduledAduGrpDisplay: string;\r\n    scheduledAduValueDisplay: string;\r\n    scheduledAduSpotsDisplay: string;\r\n\r\n    annaAduImpressionDisplay: string;\r\n    annaAduGrpDisplay: string;\r\n    annaAduValueDisplay: string;\r\n    annaAduSpotsDisplay: string;\r\n\r\n    userAduImpressionDisplay: string;\r\n    userAduGrpDisplay: string;\r\n    userAduValueDisplay: string;\r\n    userAduSpotsDisplay: string;\r\n\r\n    postedAduImpressionDisplay: string;\r\n    postedAduGrpDisplay: string;\r\n    postedAduValueDisplay: string;\r\n    postedAduSpotsDisplay: string;\r\n\r\n    postedToDate: string;\r\n    airedToDate: string;\r\n\r\n    audienceBookedData: AudienceImpressionsGraphData;\r\n    audiencePostedNoAduData: AudienceImpressionsGraphData;\r\n    audiencePostedwithAduData: AudienceImpressionsGraphData;\r\n    audienceAiredData: AudienceImpressionsGraphData;\r\n    projectionWithAduData: AudienceImpressionsGraphData;\r\n    projectionWithoutAduData: AudienceImpressionsGraphData;\r\n    // postedReportUpdatedTillDate: string;\r\n\r\n    demographs: string[];\r\n\r\n    //  underDelivery: ODUD;\r\n    overDelivery: ODUD;\r\n    // underDeliveryLiability: ODUD;\r\n    // underDeliveryProjection: ODUD;\r\n    overDeliveryProjection: ODUD;\r\n    // underDeliveryProjectionLiability: ODUD;\r\n\r\n    //  deliveryThresholdPercent: string;\r\n    // projectedDeliveryThresholdPercent: string;\r\n    udImpacts: string;\r\n    projectedUdImpacts: string;\r\n    underDeliveryAtHundredPercent: ODUD;\r\n    underDeliveryAtThreshold: ODUD;\r\n    carryForwardUnderDeliveryLiability: ODUD;\r\n    podBillingReduction: ODUD;\r\n    projectedUnderDeliveryAtHundredPercent: ODUD;\r\n    projectedUnderDeliveryAtThreshold: ODUD;\r\n    projectedCFunderDeliveryLiability: ODUD;\r\n    projectedPodBillingReduction: ODUD;\r\n\r\n    udLiabilityMetricDisplay: string;\r\n    udLiabilityMetricValueDisplay: string;\r\n    bizRulesAudienceDeliveryLimit: number;\r\n    isPoDOrder: boolean;\r\n    providedAdusValueForTooltipDisplay: string;\r\n\r\n    // keys added at UI\r\n    bookedInTheSelectedPeriodDataForChart: AudienceImpressionsGraphData;\r\n    projectionWithAduDataForChart: AudienceImpressionsGraphData;\r\n    projectionWithoutAduDataForChart: AudienceImpressionsGraphData;\r\n    postedReportUpdatedTillDateFormatted: string;\r\n    dontPlotPostedReportUpdatedTillDateInGraph: boolean;\r\n    PROJECTIONWITHADUDATAONLASTPOSTEDDATE: ChartDataObjects;\r\n    PROJECTIONWITHOUTADUDATAONLASTPOSTEDDATE: ChartDataObjects;\r\n\r\n    constructor(obj: any, isDashboard: boolean = false) {\r\n        this.udLiabilityMetricDisplay = obj?.UdLiabilityMetricDisplay;\r\n        this.udLiabilityMetricValueDisplay = obj?.UdLiabilityValueDisplay;\r\n\r\n        this.udLiabilitypercentageDelivered = obj?.UdLiabilityDeliveredPercentDisplay;\r\n        this.orderType = obj?.OrderType;\r\n        this.isPaidOrdersPresent = obj?.IsPaidOrdersPresent;\r\n        this.audienceDeliveredToDateDisplay = obj.DeliveryPercentAtThresholdDisplay || \"-\";\r\n        this.projectedAudienceDeliveredToDateDisplay = obj.ProjectedDeliveryPercentAtThresholdDisplay || \"-\";\r\n        this.udImpactsToDisplay = obj.UdImpacts;\r\n\r\n        this.bookedImpressionDisplay = obj.BookedImpressionDisplay;\r\n        this.bookedGrpDisplay = obj.BookedGrpDisplay;\r\n        this.bookedValueDisplay = obj.BookedValueDisplay;\r\n        this.bookedSpotsDisplay = obj.BookedSpotsDisplay;\r\n        this.preApprovedSpotsDisplay = obj.pre_approved_spots_display;\r\n        this.buyerApprovedSpotsDisplay = obj.buyer_approved_spots_display;\r\n        this.postedToDate = obj.PostedWithoutAduAudienceData?.PostedToDate || \"-\";\r\n        this.providedAdusValueForTooltipDisplay = obj.ProvidedAdusValue;\r\n        this.isPoDOrder = obj.IsPayForPerformanceOrder;\r\n        // this.daypartGroup.push(new SingleSelectIdText(0,\"All\",null,null,null,true))\r\n        // obj.DaypartGroups.forEach((group:any)=>{\r\n        //   this.daypartGroup.push(new SingleSelectIdText(group.Id, group.GroupsDisplayText, null, null, null, group.IsSelected))\r\n        // })\r\n        this.airedImpressionDisplay = obj.AiredImpressionDisplay;\r\n        this.airedGrpDisplay = obj.AiredGrpDisplay;\r\n        this.airedValueDisplay = obj.AiredValueDisplay;\r\n        this.airedSpotsDisplay = obj.AiredSpotsDisplay;\r\n        this.airedToDate = obj.AiredAudienceData.AiredToDate;\r\n\r\n        this.postedImpressionDisplay = obj.PostedWithoutAduImpressionDisplay;\r\n        this.postedGrpDisplay = obj.PostedWithoutAduGrpDisplay;\r\n        this.postedValueDisplay = obj.PostedWithoutAduValueDisplay;\r\n        this.postedWithoutAduSpotsDisplay = obj.PostedWithoutAduSpotsDisplay; // used\r\n\r\n        this.bookedAndAduImpressionDisplay = obj.PostedWithAduImpressionDisplay;\r\n        this.bookedAndAduGrpDisplay = obj.PostedWithAduGrpDisplay;\r\n        this.bookedAndAduValue = obj.PostedWithAduValueDisplay;\r\n        this.postedWithAduSpotsDisplay = obj.PostedWithAduSpotsDisplay; // used\r\n\r\n        this.postedProjectionNoAduSpotsDisplay = obj.PostedProjectionNoAduSpotsDisplay;\r\n        this.postedProjectionNoAduValueDisplay = obj.PostedProjectionNoAduValueDisplay;\r\n        this.postedProjectionNoAduGrpDisplay = obj.PostedProjectionNoAduGrpDisplay;\r\n        this.postedProjectionNoAduImpressionDisplay = obj.PostedProjectionNoAduImpressionDisplay;\r\n\r\n        this.postedProjectionAduSpotsDisplay = obj.PostedProjectionAduSpotsDisplay;\r\n        this.postedProjectionAduValueDisplay = obj.PostedProjectionAduValueDisplay;\r\n        this.postedProjectionAduGrpDisplay = obj.PostedProjectionAduGrpDisplay;\r\n        this.postedProjectionAduImpressionDisplay = obj.PostedProjectionAduImpressionDisplay;\r\n\r\n        this.scheduledAduImpressionDisplay = obj.ScheduledAduImpressionDisplay;\r\n        this.scheduledAduGrpDisplay = obj.ScheduledAduGrpDisplay;\r\n        this.scheduledAduValueDisplay = obj.ScheduledAduValueDisplay;\r\n        this.scheduledAduSpotsDisplay = obj.ScheduledAduSpotsDisplay;\r\n\r\n        this.annaAduImpressionDisplay = obj.AnnaAduImpressionDisplay;\r\n        this.annaAduGrpDisplay = obj.AnnaAduGrpDisplay;\r\n        this.annaAduValueDisplay = obj.AnnaAduValueDisplay;\r\n        this.annaAduSpotsDisplay = obj.AnnaAduSpotsDisplay;\r\n\r\n        this.userAduImpressionDisplay = obj.UserAduImpressionDisplay;\r\n        this.userAduGrpDisplay = obj.UserAduGrpDisplay;\r\n        this.userAduValueDisplay = obj.UserAduValueDisplay;\r\n        this.userAduSpotsDisplay = obj.UserAduSpotsDisplay;\r\n\r\n        this.postedAduImpressionDisplay = obj.PostedAduImpressionDisplay;\r\n        this.postedAduGrpDisplay = obj.PostedAduGrpDisplay;\r\n        this.postedAduValueDisplay = obj.PostedAduValueDisplay;\r\n        this.postedAduSpotsDisplay = obj.PostedAduSpotsDisplay;\r\n\r\n        this.audienceBookedData = new AudienceImpressionsGraphData(obj.BookedAudienceData.Data);\r\n        this.audiencePostedNoAduData = obj.PostedWithoutAduAudienceData\r\n            ? new AudienceImpressionsGraphData(obj.PostedWithoutAduAudienceData.Data)\r\n            : null;\r\n        this.audienceAiredData = new AudienceImpressionsGraphData(obj.AiredAudienceData.Data);\r\n        this.audiencePostedwithAduData = obj.PostedWithAduAudienceData\r\n            ? new AudienceImpressionsGraphData(obj.PostedWithAduAudienceData.Data)\r\n            : null;\r\n        this.projectionWithAduData = obj.PostedProjectionWithAduData\r\n            ? new AudienceImpressionsGraphData(obj.PostedProjectionWithAduData.Data)\r\n            : null;\r\n        this.projectionWithoutAduData = obj.PostedProjectionWithoutAduData\r\n            ? new AudienceImpressionsGraphData(obj.PostedProjectionWithoutAduData.Data)\r\n            : null;\r\n\r\n        this.bizRulesAudienceDeliveryLimit = obj.DeliveryThresholdPercent;\r\n        // this.postedReportUpdatedTillDate = obj.posted_report_updated_till_date;\r\n        this.demographs = cloneDeep(obj.Demographs);\r\n        this.projectedUdImpacts = obj.ProjectionUdImpacts;\r\n\r\n        // this.deliveryThresholdPercent = obj.deliveryThresholdPercent || \"-\";\r\n        // this.projectedDeliveryThresholdPercent = obj.projected_delivery_threshold_percent || \"-\";\r\n\r\n        this.underDeliveryAtHundredPercent = obj.UnderDelivery\r\n            ? new ODUD(obj.UnderDelivery, AudiencePerformanceConstant.underDeliveryAtHundredPercent, null, isDashboard)\r\n            : null;\r\n        this.overDelivery = obj.OverDelivery\r\n            ? new ODUD(obj.OverDelivery, AudiencePerformanceConstant.unPaidOverDelivery, null, isDashboard)\r\n            : null;\r\n\r\n        this.underDeliveryAtThreshold = obj.UnderDeliveryAtThreshold\r\n            ? new ODUD(\r\n                  obj.UnderDeliveryAtThreshold,\r\n                  AudiencePerformanceConstant.underDeliveryAtThreshold,\r\n                  null,\r\n                  isDashboard,\r\n              )\r\n            : null;\r\n        this.projectedUnderDeliveryAtHundredPercent = obj.UnderDeliveryProjection\r\n            ? new ODUD(\r\n                  obj.UnderDeliveryProjection,\r\n                  AudiencePerformanceConstant.projectedUnderDeliveryAtHundredPercent,\r\n                  null,\r\n                  isDashboard,\r\n              )\r\n            : null;\r\n        this.overDeliveryProjection = obj.OverDeliveryProjection\r\n            ? new ODUD(\r\n                  obj.OverDeliveryProjection,\r\n                  AudiencePerformanceConstant.overDeliveryProjection,\r\n                  null,\r\n                  isDashboard,\r\n              )\r\n            : null;\r\n        this.projectedUnderDeliveryAtThreshold = obj.ProjectedUnderDeliveryAtThreshold\r\n            ? new ODUD(\r\n                  obj.ProjectedUnderDeliveryAtThreshold,\r\n                  AudiencePerformanceConstant.projectedUnderDeliveryAtThreshold,\r\n                  null,\r\n                  isDashboard,\r\n              )\r\n            : null;\r\n\r\n        this.carryForwardUnderDeliveryLiability = obj.CfUdLiability\r\n            ? new ODUD(\r\n                  obj.CfUdLiability,\r\n                  AudiencePerformanceConstant.carryForwardUnderDeliveryLiability,\r\n                  null,\r\n                  isDashboard,\r\n              )\r\n            : null;\r\n        this.podBillingReduction = obj.PodBillingReduction\r\n            ? new ODUD(obj.PodBillingReduction, AudiencePerformanceConstant.podBillingReduction, null, isDashboard)\r\n            : null;\r\n\r\n        this.projectedCFunderDeliveryLiability = obj.ProjectedCfUdLiability\r\n            ? new ODUD(\r\n                  obj.ProjectedCfUdLiability,\r\n                  AudiencePerformanceConstant.projectedCFunderDeliveryLiability,\r\n                  null,\r\n                  isDashboard,\r\n              )\r\n            : null;\r\n        this.projectedPodBillingReduction = obj.ProjectedPodBillingReduction\r\n            ? new ODUD(\r\n                  obj.ProjectedPodBillingReduction,\r\n                  AudiencePerformanceConstant.projectedPodBillingReduction,\r\n                  null,\r\n                  isDashboard,\r\n              )\r\n            : null;\r\n\r\n        // new keys for chart lines\r\n        this.bookedInTheSelectedPeriodDataForChart = new AudienceImpressionsGraphData(obj.BookedAudienceData.Data);\r\n\r\n        this.postedReportUpdatedTillDateFormatted =\r\n            this.postedToDate && this.postedToDate !== \"-\" ? dayjs(this.postedToDate).format(\"YYYY-MM-DD\") : \"-\";\r\n        this.dontPlotPostedReportUpdatedTillDateInGraph =\r\n            obj?.PostedWithAduAudienceData?.Data?.length === 0 ||\r\n            obj.BookedAudienceData.Data.findIndex((n: any) => n.Date === this.postedReportUpdatedTillDateFormatted) ===\r\n                -1;\r\n\r\n        const projectionWithAduDataForChart = obj.PostedProjectionWithAduData\r\n            ? cloneDeep(obj.PostedProjectionWithAduData.Data)\r\n            : null;\r\n        const projectionWithoutAduDataForChart = obj.PostedProjectionWithoutAduData\r\n            ? cloneDeep(obj.PostedProjectionWithoutAduData.Data)\r\n            : null;\r\n        this.PROJECTIONWITHADUDATAONLASTPOSTEDDATE = projectionWithAduDataForChart\r\n            ? projectionWithAduDataForChart.filter((n: any) => n.Date === this.postedReportUpdatedTillDateFormatted)[0]\r\n            : null;\r\n        this.PROJECTIONWITHOUTADUDATAONLASTPOSTEDDATE = projectionWithoutAduDataForChart\r\n            ? projectionWithoutAduDataForChart.filter(\r\n                  (n: any) => n.Date === this.postedReportUpdatedTillDateFormatted,\r\n              )[0]\r\n            : null;\r\n\r\n        if (this.dontPlotPostedReportUpdatedTillDateInGraph) {\r\n            this.projectionWithAduDataForChart = new AudienceImpressionsGraphData(\r\n                projectionWithAduDataForChart\r\n                    ? projectionWithAduDataForChart.filter(\r\n                          (n: any) => n.Date !== this.postedReportUpdatedTillDateFormatted,\r\n                      )\r\n                    : [],\r\n            );\r\n            this.projectionWithoutAduDataForChart = new AudienceImpressionsGraphData(\r\n                projectionWithoutAduDataForChart\r\n                    ? projectionWithoutAduDataForChart.filter(\r\n                          (n: any) => n.Date !== this.postedReportUpdatedTillDateFormatted,\r\n                      )\r\n                    : [],\r\n            );\r\n        } else {\r\n            this.projectionWithAduDataForChart = new AudienceImpressionsGraphData(projectionWithAduDataForChart || []);\r\n            this.projectionWithoutAduDataForChart = new AudienceImpressionsGraphData(\r\n                projectionWithoutAduDataForChart || [],\r\n            );\r\n        }\r\n    }\r\n}\r\nexport class OverOrUnderDeliveryClass {\r\n    value: string;\r\n    orders: number;\r\n    impression: string;\r\n    grp: number;\r\n    percentage: number;\r\n    constructor(obj: any, isDashboardAudPerformance: boolean = false) {\r\n        this.value = isDashboardAudPerformance\r\n            ? AnnaNumberFormatService.GetRoundedValueWithUnits(obj.Value)\r\n            : AnnaNumberFormatService.GetRoundedValuesWithoutUnits(obj.Value);\r\n        this.orders = obj.Orders == null || obj.Orders === \"-\" || obj.Orders === 0 ? \"-\" : obj.Orders;\r\n        if (obj.Impression == null || obj.Impression === \"-\" || obj.Impression === 0) {\r\n            this.impression = \"-\";\r\n        } else {\r\n            this.impression = isDashboardAudPerformance\r\n                ? AnnaNumberFormatService.GetRoundedValueWithUnits(obj.Impression)\r\n                : AnnaNumberFormatService.GetRoundedValuesWithoutUnits(obj.Impression);\r\n        }\r\n\r\n        this.grp = obj.Grp == null || obj.Grp === \"-\" || obj.Grp === 0 ? \"-\" : obj.Grp;\r\n        this.percentage = obj.Percent;\r\n    }\r\n}\r\n\r\nexport class ODUD {\r\n    public key: string;\r\n    tooltipBesideKey: string | null;\r\n    public value: OverOrUnderDeliveryClass;\r\n    constructor(\r\n        obj: any,\r\n        key: string,\r\n        tooltipBesideKey: string | null = null,\r\n        isDashboardAudPerformance: boolean = false,\r\n    ) {\r\n        this.key = key;\r\n        this.tooltipBesideKey = tooltipBesideKey;\r\n        this.value =\r\n            obj.Value !== 0 || obj.Impression !== 0\r\n                ? new OverOrUnderDeliveryClass(obj, isDashboardAudPerformance)\r\n                : undefined;\r\n    }\r\n}\r\n\r\nexport interface AnnotatedLine {\r\n    type: string;\r\n    borderColor: string;\r\n    borderWidth: number;\r\n    xMax?: number;\r\n    xMin?: number;\r\n    yMax?: number;\r\n    yMin?: number;\r\n    borderDash?: number[];\r\n    order: number;\r\n}\r\n\r\nexport type CalendarQuarterYear = { calendarType: string; quarter: IdText; year: IdText } | null;\r\nexport type QuarterFilterSubjectResponseType = {\r\n    filterData: ICalendarTypeResponse;\r\n    selectedFilter: CalendarQuarterYear;\r\n};\r\nexport type DateAndAllKeyType = {\r\n    isEntireFlightPeriod: boolean;\r\n    startDate: string;\r\n    endDate: string;\r\n    selectedCalendarType?: TypeOfCalendar;\r\n};\r\n","import { NgClass, NgFor, NgIf, NgStyle, NgTemplateOutlet, UpperCasePipe } from \"@angular/common\";\r\nimport {\r\n    ChangeDetectionStrategy,\r\n    Component,\r\n    EventEmitter,\r\n    Input,\r\n    input,\r\n    OnChanges,\r\n    OnInit,\r\n    Output,\r\n    SimpleChanges,\r\n    TemplateRef,\r\n    ViewChild,\r\n} from \"@angular/core\";\r\nimport { Router } from \"@angular/router\";\r\nimport {\r\n    AnnaFilterService,\r\n    AnnaGlobalConfigService,\r\n    ICustomMultiSelect,\r\n    ICustomSingleSelect,\r\n    INgSelectSettings,\r\n} from \"@annalib/anna-core\";\r\nimport {\r\n    AnnaDesignComponentsLibModule,\r\n    BreadcrumbsService,\r\n    GenericMessageBoxTheme,\r\n    IdText,\r\n    KeyValue,\r\n    MeasurementType,\r\n    MessageBoxData,\r\n    MissingPostedData,\r\n    MultiSelectIdText,\r\n    SingleSelectIdText,\r\n    ToggleComponent,\r\n} from \"@annalib/anna-design-components-lib\";\r\nimport { NgbModal, NgbModalOptions, NgbModalRef, NgbTooltip } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { Chart } from \"chart.js\";\r\nimport annotationPlugin from \"chartjs-plugin-annotation\";\r\nimport dayjs from \"dayjs\";\r\nimport { cloneDeep } from \"lodash-es\";\r\n\r\nimport { LiabilityModalComponent } from \"../liability-modal/liability-modal.component\";\r\nimport { OrderTypeConstants } from \"../order-listing/models/order-listing.constant\";\r\nimport { OrderType } from \"../order-listing/models/order-listing.model\";\r\nimport { MeasurementAgencyInOrderSummary } from \"../primary-order-panel/models/primary-order-panel.model\";\r\nimport { AudiencePerformanceConstant } from \"./constants/audiencePerformance.constant\";\r\nimport {\r\n    AnnotatedLine,\r\n    AudienceDeliveryCardInfo,\r\n    AudienceImpressionsGraphData,\r\n    Dataset,\r\n    LegendData,\r\n    MissingPostedDataRequestPayload,\r\n    NewChartJSType,\r\n    PostedBifurcationData,\r\n} from \"./models/audiencePerformance.model\";\r\n\r\nChart.register(annotationPlugin);\r\n\r\n@Component({\r\n    selector: \"anna-feature-audience-performance\",\r\n    templateUrl: \"./audience-performance.component.html\",\r\n    styleUrls: [\"./audience-performance.component.scss\"],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    imports: [\r\n        NgIf,\r\n        AnnaDesignComponentsLibModule,\r\n        NgClass,\r\n        NgbTooltip,\r\n        NgFor,\r\n        NgStyle,\r\n        LiabilityModalComponent,\r\n        UpperCasePipe,\r\n        NgTemplateOutlet,\r\n        ToggleComponent,\r\n    ],\r\n})\r\nexport class AudiencePerformanceComponent implements OnInit, OnChanges {\r\n    measurementAgency = input<string>(null);\r\n    @Input() data: AudienceDeliveryCardInfo;\r\n    @Input() loading: boolean;\r\n    @Input() isImpression: boolean;\r\n    @Input() errorMessage: string;\r\n    @Input() chartClassName: string;\r\n    @Input() showDemographicInfo: boolean;\r\n    @Input() isAllQuarterSelected: boolean;\r\n    @Input() showHeadingAndDropdown: boolean;\r\n    @Input() missingPostedData: MissingPostedData;\r\n    @Input() metricType: MeasurementType = \"GRP\";\r\n    @Input() showProjection: boolean = true;\r\n    @Input() missingPostedDataPayload: MissingPostedDataRequestPayload;\r\n    @Input() isSingleOrder: boolean = false;\r\n    @Input() isCommercialOrder: boolean = false;\r\n    @Input() isBi: boolean = false;\r\n    @Input() toolTipMessage: string = \"\";\r\n    @Input() selectedOrderTypeId: string = null;\r\n    // @Input() audienceDeliveredThroughDateText: string = \"\";\r\n    @Input() isDeletedOrder: boolean;\r\n    @Input() showLiabilitySection: boolean;\r\n    @Input() isEditLiabilityAllowed: boolean;\r\n    @Input() metricTypeForPopup: string = null;\r\n    @Input() orderFilterDropdownData: SingleSelectIdText[] = [];\r\n    @Input() revClassDropdownData: MultiSelectIdText[] = [];\r\n    @Input() disableViewLink: boolean = false;\r\n    @Input() isNeededForRadiant: boolean = false;\r\n\r\n    @Output() filterApplied = new EventEmitter<IdText>();\r\n    @Output() showProjectionsToggled = new EventEmitter<boolean>();\r\n    @Output() saveLiabilityEvent = new EventEmitter<any>();\r\n    @Output() orderFilterChanged = new EventEmitter<any>();\r\n    @Output() revClassChanged = new EventEmitter<MultiSelectIdText[]>();\r\n    @Output() revClassDropdownOpenedEvent = new EventEmitter<MultiSelectIdText[]>();\r\n    OrderType = OrderType;\r\n    lineChartLabels: string[];\r\n    lineChartData: NewChartJSType;\r\n    lineChartColors: { borderColor: string; backgroundColor: string }[];\r\n    sizeOfChart: { height: string; width: string };\r\n    lineChartOptions: any;\r\n    toDisplayGraph: boolean;\r\n\r\n    graphType: { id: number; text: string }[];\r\n    selectedGraphType: { id: number; text: string };\r\n    metricDropdownOpened: boolean = false;\r\n    ngSelectConfig: INgSelectSettings;\r\n    barOrStackChartBorderRadius: number = 4;\r\n    borderDash: number[] = [4, 3];\r\n    constants: typeof AudiencePerformanceConstant;\r\n    postedDataNotFoundPopupMessage: string;\r\n\r\n    legendData: LegendData[];\r\n    toShowAiredToDatePercent: boolean;\r\n    aduData: PostedBifurcationData[];\r\n    grapghTypeDropdownConfig: ICustomSingleSelect;\r\n    udLiabilityData: any;\r\n    orderTypeForPopup: string;\r\n\r\n    @ViewChild(\"liabilityModal\") private editOrderTypeModal: TemplateRef<any>;\r\n    editModalReference: NgbModalRef;\r\n    ngbModalOptions: NgbModalOptions;\r\n    liabilityForPopup: any = null;\r\n    @Output() viewAudiencePerformanceClicked = new EventEmitter();\r\n    deleteOrderMessageData: MessageBoxData;\r\n    liabilityInfoMsg: MessageBoxData;\r\n    selectedOrderTypeFilter: SingleSelectIdText;\r\n    orderFilterDropdownConfig: ICustomSingleSelect;\r\n    revClassDropdownConfig: ICustomMultiSelect;\r\n    annaUserAdusData: PostedBifurcationData[] = [];\r\n    showAnnaAduSection: boolean = true;\r\n\r\n    MeasurementAgencyInOrderSummary = MeasurementAgencyInOrderSummary;\r\n\r\n    constructor(\r\n        private annaGlobalConfig: AnnaGlobalConfigService,\r\n        public annaFilterService: AnnaFilterService,\r\n        private router: Router,\r\n        private modalService: NgbModal,\r\n        private breadcrumbService: BreadcrumbsService,\r\n    ) {\r\n        this.setDropdownConfig();\r\n        this.setOrderFilterTypeDropdownConfig();\r\n        this.setRevClassDropdownConfig();\r\n        this.popupModalConfig();\r\n        this.setMessageData();\r\n    }\r\n\r\n    ngOnInit() {\r\n        Chart.register(annotationPlugin);\r\n        this.constants = AudiencePerformanceConstant;\r\n        this.graphType = [\r\n            { id: 1, text: this.constants.grpUnit },\r\n            { id: 2, text: this.constants.impressionUnit },\r\n        ];\r\n        this.sizeOfChart = {\r\n            height: \"13.75rem\",\r\n            width: \"100%\",\r\n        };\r\n        this.isImpression = this.isImpression === undefined ? false : this.isImpression;\r\n        this.toDisplayGraph = false;\r\n    }\r\n\r\n    setOrderTypeForPopUp(orderType: OrderType) {\r\n        if (orderType === OrderType.UD) {\r\n            this.orderTypeForPopup = OrderTypeConstants.UD;\r\n        } else if (orderType === OrderType.UD_LIABILITY_NOT_SET) {\r\n            this.orderTypeForPopup = OrderTypeConstants.UD_LIABILITY_NOT_SET;\r\n        } else if (orderType === OrderType.UD_LIABILITY_SET) {\r\n            this.orderTypeForPopup = OrderTypeConstants.UD_LIABILITY_SET;\r\n        }\r\n    }\r\n\r\n    ngOnChanges(changes: SimpleChanges) {\r\n        // toDisplayGraph unnecessary variable\r\n        if (this.data && changes.data && changes.data.currentValue) {\r\n            this.setDropdownActiveItem();\r\n            this.setLineChartData();\r\n            this.setOrderTypeForPopUp(this.data.orderType);\r\n            this.toDisplayGraph = true;\r\n            if (this.data.udLiabilityMetricDisplay !== \"-\") {\r\n                if (this.data.udLiabilityMetricDisplay === \"IMPRESSIONS\") {\r\n                    this.metricTypeForPopup = \"Impressions\";\r\n                } else if (this.data.udLiabilityMetricDisplay === \"RATINGS\") {\r\n                    this.metricTypeForPopup = \"Ratings\";\r\n                }\r\n                this.liabilityForPopup = this.data.udLiabilityMetricValueDisplay;\r\n            }\r\n        } else if (!this.data) {\r\n            this.toDisplayGraph = false;\r\n        }\r\n\r\n        if (changes.isImpression) {\r\n            if (this.data && this.data.orderType === OrderType.UD_LIABILITY_SET) {\r\n                this.isImpression = this.data.udLiabilityMetricDisplay.toLowerCase() === \"impressions\";\r\n            }\r\n            this.setLineChartData();\r\n        }\r\n\r\n        if (this.data && changes.showProjection) {\r\n            this.showOrHideProjectionData(this.showProjection);\r\n        }\r\n\r\n        if (changes.orderFilterDropdownData) {\r\n            this.selectedOrderTypeFilter = this.orderFilterDropdownData.find((item) => item.isSelected === true);\r\n        }\r\n        if (changes.selectedOrderTypeId) {\r\n            this.selectedOrderTypeFilter = this.orderFilterDropdownData?.find(\r\n                (item) => item.id.toString() === this.selectedOrderTypeId,\r\n            );\r\n        }\r\n    }\r\n\r\n    orderFilterSelected(orderFilterSelected: SingleSelectIdText) {\r\n        this.selectedOrderTypeFilter = orderFilterSelected;\r\n        this.orderFilterDropdownData.forEach((filter: SingleSelectIdText) => {\r\n            filter.isSelected = false;\r\n            if (filter.id === orderFilterSelected.id) {\r\n                filter.isSelected = true;\r\n            }\r\n        });\r\n        this.orderFilterChanged.emit(orderFilterSelected.id);\r\n        // this emitted event will refetch audience performance data for the filter applied\r\n    }\r\n\r\n    revClassDropdownOpened(revClassDropdownData: MultiSelectIdText[]) {\r\n        this.revClassDropdownOpenedEvent.emit(revClassDropdownData);\r\n    }\r\n    revClassSelected(revClassDropdownData: MultiSelectIdText[]) {\r\n        this.revClassChanged.emit(revClassDropdownData);\r\n    }\r\n    setDropdownActiveItem() {\r\n        if (this.showHeadingAndDropdown && !this.isNeededForRadiant) {\r\n            this.selectedGraphType = this.graphType[this.graphType.findIndex((n) => n.text === this.metricType)];\r\n            this.isImpression = this.selectedGraphType.id === 2;\r\n        }\r\n    }\r\n\r\n    graphTypeSelected(value: IdText) {\r\n        this.isImpression = value.id === 2;\r\n        this.setLineChartData();\r\n        this.toDisplayGraph = true;\r\n        this.filterApplied.emit(value);\r\n    }\r\n\r\n    setLineChartDataWithProjectedData() {\r\n        let bookedInTheSelectedPeriodValues: number[];\r\n        let postedProjectionWithAduImpsOrGrpValuesBeforeLastPostedDate: number[];\r\n        let postedProjectionWithoutAduImpsOrGrpValuesBeforeLastPostedDate: number[];\r\n        let postedProjectionWithAduImpsOrGrpValuesAfterLastPostedDate: number[];\r\n        let postedProjectionWithoutAduImpsOrGrpValuesAfterLastPostedDate: number[];\r\n\r\n        let bookedInTheSelectedPeriodTooltipImpsOrGrp: string[];\r\n        let postedProjctionWithAduTooltipImpsOrGrpBeforeLastPostedDate: string[];\r\n        let postedProjectionWithoutAduTooltipImpsOrGrpBeforeLastPostedDate: string[];\r\n        let postedProjctionWithAduTooltipImpsOrGrpAfterLastPostedDate: string[];\r\n        let postedProjectionWithoutAduTooltipImpsOrGrpAfterLastPostedDate: string[];\r\n\r\n        let measurementName: string;\r\n        this.lineChartLabels = [];\r\n        this.lineChartColors = [];\r\n        const backgroundColor = \"transparent\";\r\n\r\n        this.setGraphLegendData();\r\n        this.setAduBifurcationData();\r\n        this.setLiabilityData();\r\n\r\n        const nullArrayLength: number = this.returnNullArrayLength();\r\n        let removeObjectsCount = 0;\r\n\r\n        if (this.data.projectionWithAduData && this.data.audiencePostedwithAduData) {\r\n            removeObjectsCount = this.data.dontPlotPostedReportUpdatedTillDateInGraph\r\n                ? this.data.projectionWithAduData.date.length - this.data.audiencePostedwithAduData.date.length\r\n                : this.data.projectionWithAduData.date.length - this.data.audiencePostedwithAduData.date.length - 1;\r\n            if (removeObjectsCount <= 0) {\r\n                removeObjectsCount = this.data.projectionWithAduDataForChart.date.length * -1;\r\n            }\r\n        }\r\n\r\n        const projectionWithoutAduDataForChart: AudienceImpressionsGraphData = cloneDeep(\r\n            this.data.projectionWithoutAduDataForChart,\r\n        );\r\n        const projectionWithAduDataForChart: AudienceImpressionsGraphData = cloneDeep(\r\n            this.data.projectionWithAduDataForChart,\r\n        );\r\n\r\n        if (this.isImpression) {\r\n            measurementName = this.constants.impressionUnit;\r\n            bookedInTheSelectedPeriodTooltipImpsOrGrp =\r\n                this.data.bookedInTheSelectedPeriodDataForChart.impressionDisplay;\r\n            postedProjectionWithoutAduTooltipImpsOrGrpBeforeLastPostedDate =\r\n                projectionWithoutAduDataForChart.impressionDisplay.slice(0, removeObjectsCount * -1);\r\n            postedProjctionWithAduTooltipImpsOrGrpBeforeLastPostedDate =\r\n                projectionWithAduDataForChart.impressionDisplay.slice(0, removeObjectsCount * -1);\r\n            postedProjectionWithoutAduTooltipImpsOrGrpAfterLastPostedDate =\r\n                projectionWithoutAduDataForChart.impressionDisplay.slice(nullArrayLength);\r\n            postedProjctionWithAduTooltipImpsOrGrpAfterLastPostedDate =\r\n                projectionWithAduDataForChart.impressionDisplay.slice(nullArrayLength);\r\n\r\n            bookedInTheSelectedPeriodValues = this.data.bookedInTheSelectedPeriodDataForChart.impression;\r\n            postedProjectionWithoutAduImpsOrGrpValuesBeforeLastPostedDate =\r\n                projectionWithoutAduDataForChart.impression.slice(0, removeObjectsCount * -1);\r\n            postedProjectionWithAduImpsOrGrpValuesBeforeLastPostedDate = projectionWithAduDataForChart.impression.slice(\r\n                0,\r\n                removeObjectsCount * -1,\r\n            );\r\n            postedProjectionWithoutAduImpsOrGrpValuesAfterLastPostedDate =\r\n                projectionWithoutAduDataForChart.impression.slice(nullArrayLength);\r\n            postedProjectionWithAduImpsOrGrpValuesAfterLastPostedDate =\r\n                projectionWithAduDataForChart.impression.slice(nullArrayLength);\r\n        } else {\r\n            measurementName = this.constants.grpUnit;\r\n            bookedInTheSelectedPeriodTooltipImpsOrGrp = this.data.bookedInTheSelectedPeriodDataForChart.grpDisplay;\r\n            postedProjectionWithoutAduTooltipImpsOrGrpBeforeLastPostedDate =\r\n                projectionWithoutAduDataForChart.grpDisplay.slice(0, removeObjectsCount * -1);\r\n            postedProjctionWithAduTooltipImpsOrGrpBeforeLastPostedDate = projectionWithAduDataForChart.grpDisplay.slice(\r\n                0,\r\n                removeObjectsCount * -1,\r\n            );\r\n            postedProjectionWithoutAduTooltipImpsOrGrpAfterLastPostedDate =\r\n                projectionWithoutAduDataForChart.grpDisplay.slice(nullArrayLength);\r\n            postedProjctionWithAduTooltipImpsOrGrpAfterLastPostedDate =\r\n                projectionWithAduDataForChart.grpDisplay.slice(nullArrayLength);\r\n\r\n            bookedInTheSelectedPeriodValues = this.data.bookedInTheSelectedPeriodDataForChart.grp;\r\n            postedProjectionWithoutAduImpsOrGrpValuesBeforeLastPostedDate = projectionWithoutAduDataForChart.grp.slice(\r\n                0,\r\n                removeObjectsCount * -1,\r\n            );\r\n            postedProjectionWithAduImpsOrGrpValuesBeforeLastPostedDate = projectionWithAduDataForChart.grp.slice(\r\n                0,\r\n                removeObjectsCount * -1,\r\n            );\r\n            postedProjectionWithoutAduImpsOrGrpValuesAfterLastPostedDate =\r\n                projectionWithoutAduDataForChart.grp.slice(nullArrayLength);\r\n            postedProjectionWithAduImpsOrGrpValuesAfterLastPostedDate =\r\n                projectionWithAduDataForChart.grp.slice(nullArrayLength);\r\n        }\r\n\r\n        const bookedInTheSelectedPeriodData = new Dataset(\r\n            measurementName,\r\n            bookedInTheSelectedPeriodValues,\r\n            this.data.bookedInTheSelectedPeriodDataForChart.valueDisplay,\r\n            bookedInTheSelectedPeriodTooltipImpsOrGrp,\r\n            this.isNeededForRadiant ? this.constants.radiantBookedInQuarterColor : this.constants.bookedInQuaterColor,\r\n            backgroundColor,\r\n            this.barOrStackChartBorderRadius,\r\n            1,\r\n        );\r\n\r\n        const postedProjectionWithAduValuesBeforeLastPostedDate = cloneDeep(\r\n            this.data.projectionWithAduData\r\n                ? this.data.projectionWithAduData.valueDisplay.slice(0, removeObjectsCount * -1)\r\n                : [],\r\n        );\r\n        const postedProjectionWithoutAduValuesBeforeLastPostedDate = cloneDeep(\r\n            this.data.projectionWithoutAduData ? this.data.projectionWithoutAduData.valueDisplay : [],\r\n        ).slice(0, removeObjectsCount * -1);\r\n        const postedProjectionWithAduValuesAfterLastPostedDate = cloneDeep(\r\n            this.data.projectionWithAduData ? this.data.projectionWithAduData.valueDisplay : [],\r\n        ).slice(nullArrayLength);\r\n        const postedProjectionWithoutAduValuesAfterLastPostedDate = cloneDeep(\r\n            this.data.projectionWithoutAduData ? this.data.projectionWithoutAduData.valueDisplay : [],\r\n        ).slice(nullArrayLength);\r\n\r\n        const postedThroughWithoutAdusData = new Dataset(\r\n            measurementName,\r\n            postedProjectionWithoutAduImpsOrGrpValuesBeforeLastPostedDate,\r\n            postedProjectionWithoutAduValuesBeforeLastPostedDate,\r\n            postedProjectionWithoutAduTooltipImpsOrGrpBeforeLastPostedDate,\r\n            this.isNeededForRadiant ? this.constants.radiantPostedToDateColor : this.constants.postedToDateColor,\r\n            backgroundColor,\r\n            this.barOrStackChartBorderRadius,\r\n            2,\r\n        );\r\n\r\n        const postedThroughWithAduData = new Dataset(\r\n            measurementName,\r\n            postedProjectionWithAduImpsOrGrpValuesBeforeLastPostedDate,\r\n            postedProjectionWithAduValuesBeforeLastPostedDate,\r\n            postedProjctionWithAduTooltipImpsOrGrpBeforeLastPostedDate,\r\n            this.isNeededForRadiant\r\n                ? this.constants.radiantPostedToDateWithAduColor\r\n                : this.constants.postedToDateWithAduColor,\r\n            backgroundColor,\r\n            this.barOrStackChartBorderRadius,\r\n            3,\r\n        );\r\n\r\n        const nullArray = Array(nullArrayLength).fill(null);\r\n        const projectionWithAduData = new Dataset(\r\n            measurementName,\r\n            [...nullArray, ...postedProjectionWithAduImpsOrGrpValuesAfterLastPostedDate],\r\n            [...nullArray, ...postedProjectionWithAduValuesAfterLastPostedDate],\r\n            [...nullArray, ...postedProjctionWithAduTooltipImpsOrGrpAfterLastPostedDate],\r\n            this.constants.postedToDateWithAduColor,\r\n            backgroundColor,\r\n            this.barOrStackChartBorderRadius,\r\n            4,\r\n            this.borderDash,\r\n        );\r\n\r\n        const ProjectionWithoutAduData = new Dataset(\r\n            measurementName,\r\n            [...nullArray, ...postedProjectionWithoutAduImpsOrGrpValuesAfterLastPostedDate],\r\n            [...nullArray, ...postedProjectionWithoutAduValuesAfterLastPostedDate],\r\n            [...nullArray, ...postedProjectionWithoutAduTooltipImpsOrGrpAfterLastPostedDate],\r\n            this.constants.postedToDateColor,\r\n            backgroundColor,\r\n            this.barOrStackChartBorderRadius,\r\n            5,\r\n            this.borderDash,\r\n        );\r\n\r\n        this.lineChartData = {\r\n            datasets: [],\r\n            labels: [],\r\n        };\r\n        this.lineChartData.datasets.push(bookedInTheSelectedPeriodData);\r\n        this.lineChartData.datasets.push(postedThroughWithoutAdusData);\r\n        this.lineChartData.datasets.push(postedThroughWithAduData);\r\n        this.lineChartData.datasets.push(ProjectionWithoutAduData);\r\n        this.lineChartData.datasets.push(projectionWithAduData);\r\n\r\n        const dateFormat = this.isAllQuarterSelected ? \"MM/DD/YY\" : \"MM/DD\";\r\n        this.data.bookedInTheSelectedPeriodDataForChart.date.forEach((date: string) => {\r\n            this.lineChartLabels.push(dayjs(date).format(dateFormat));\r\n            this.lineChartData.labels.push(dayjs(date).format(dateFormat));\r\n        });\r\n\r\n        this.lineChartColors.push({\r\n            borderColor: this.isNeededForRadiant\r\n                ? this.constants.radiantBookedInQuarterColor\r\n                : this.constants.bookedInQuaterColor,\r\n            backgroundColor,\r\n        });\r\n        this.lineChartColors.push({\r\n            borderColor: this.isNeededForRadiant\r\n                ? this.constants.radiantPostedToDateColor\r\n                : this.constants.postedToDateColor,\r\n            backgroundColor,\r\n        });\r\n        this.lineChartColors.push({\r\n            borderColor: this.isNeededForRadiant\r\n                ? this.constants.radiantPostedToDateWithAduColor\r\n                : this.constants.postedToDateWithAduColor,\r\n            backgroundColor,\r\n        });\r\n        this.lineChartColors.push({\r\n            borderColor: this.isNeededForRadiant\r\n                ? this.constants.radiantPostedToDateColor\r\n                : this.constants.postedToDateColor,\r\n            backgroundColor,\r\n        });\r\n        this.lineChartColors.push({\r\n            borderColor: this.isNeededForRadiant\r\n                ? this.constants.radiantPostedToDateWithAduColor\r\n                : this.constants.postedToDateWithAduColor,\r\n            backgroundColor,\r\n        });\r\n\r\n        this.lineChartOptions = this.getAudienceDeliveryLineChartOptions(measurementName);\r\n    }\r\n\r\n    getLastSoldLineDateIndex() {\r\n        if (this.data.audiencePostedwithAduData?.date?.length > 0) {\r\n            if (this.data.dontPlotPostedReportUpdatedTillDateInGraph) {\r\n                return this.data.audiencePostedwithAduData.date.length - 2;\r\n            }\r\n            return this.data.audiencePostedwithAduData.date.length - 1;\r\n        }\r\n        return 0;\r\n    }\r\n\r\n    addAnnotationsForWithProjectonChart() {\r\n        const xPlacementForVerticalDashedLine: number = this.findVerticalLinePlacement();\r\n        const skipSolidLineAnnotations: boolean = xPlacementForVerticalDashedLine % 1 === 0;\r\n        const lastSolidLineDateIndex: number = this.getLastSoldLineDateIndex();\r\n\r\n        const skipDottedLineAnnotations: boolean =\r\n            xPlacementForVerticalDashedLine === 0 &&\r\n            this.data.bookedInTheSelectedPeriodDataForChart.valueDisplay.length ===\r\n                this.data.projectionWithAduDataForChart.valueDisplay.length;\r\n\r\n        let a1VerticalDottedLine: AnnotatedLine;\r\n        let a2SolidLineForPostedThroughWithADU: AnnotatedLine;\r\n        let a3SolidLineForPostedThroughWithoutADU: AnnotatedLine;\r\n        let a4DottedLineForPostedThroughWithADU: AnnotatedLine;\r\n        let a5DottedLineForPostedThroughWithoutADU: AnnotatedLine;\r\n\r\n        const annotationsArrayToReturn = [];\r\n\r\n        const keyTouse: \"impression\" | \"grp\" = this.isImpression ? \"impression\" : \"grp\";\r\n        const keyTouseInOriginalObject: \"Grps\" | \"Impressions\" = this.isImpression ? \"Impressions\" : \"Grps\";\r\n\r\n        if (xPlacementForVerticalDashedLine > 0) {\r\n            a1VerticalDottedLine = {\r\n                type: \"line\",\r\n                borderColor: \"#d4d4d4\",\r\n                borderWidth: 2,\r\n                xMax: xPlacementForVerticalDashedLine,\r\n                xMin: xPlacementForVerticalDashedLine,\r\n                borderDash: [7, 6],\r\n                order: 1,\r\n            };\r\n        }\r\n\r\n        if (this.data.audiencePostedwithAduData && this.data.audiencePostedwithAduData.date.length > 0) {\r\n            if (!skipSolidLineAnnotations) {\r\n                a2SolidLineForPostedThroughWithADU = {\r\n                    type: \"line\",\r\n                    borderColor: this.constants.postedToDateWithAduColor,\r\n                    borderWidth: 2,\r\n                    yMax: this.data.PROJECTIONWITHADUDATAONLASTPOSTEDDATE[keyTouseInOriginalObject],\r\n                    yMin: this.data.projectionWithAduDataForChart[keyTouse][lastSolidLineDateIndex],\r\n                    xMax: xPlacementForVerticalDashedLine,\r\n                    xMin: lastSolidLineDateIndex,\r\n                    order: 1,\r\n                };\r\n                a3SolidLineForPostedThroughWithoutADU = {\r\n                    type: \"line\",\r\n                    borderColor: this.constants.postedToDateColor,\r\n                    borderWidth: 2,\r\n                    yMax: this.data.PROJECTIONWITHOUTADUDATAONLASTPOSTEDDATE[keyTouseInOriginalObject],\r\n                    yMin: this.data.projectionWithoutAduDataForChart[keyTouse][lastSolidLineDateIndex],\r\n                    xMax: xPlacementForVerticalDashedLine,\r\n                    xMin: lastSolidLineDateIndex,\r\n                    order: 2,\r\n                };\r\n            }\r\n\r\n            if (!skipDottedLineAnnotations) {\r\n                a4DottedLineForPostedThroughWithADU = {\r\n                    type: \"line\",\r\n                    borderColor: this.constants.postedToDateWithAduColor,\r\n                    borderWidth: 2,\r\n                    yMax: this.data.projectionWithAduDataForChart[keyTouse][lastSolidLineDateIndex + 1],\r\n                    yMin: this.data.PROJECTIONWITHADUDATAONLASTPOSTEDDATE[keyTouseInOriginalObject],\r\n                    xMax: lastSolidLineDateIndex + 1,\r\n                    xMin: xPlacementForVerticalDashedLine,\r\n                    borderDash: this.borderDash,\r\n                    order: 1,\r\n                };\r\n                a5DottedLineForPostedThroughWithoutADU = {\r\n                    type: \"line\",\r\n                    borderColor: this.constants.postedToDateColor,\r\n                    borderWidth: 2,\r\n                    yMax: this.data.projectionWithoutAduDataForChart[keyTouse][lastSolidLineDateIndex + 1],\r\n                    yMin: this.data.PROJECTIONWITHOUTADUDATAONLASTPOSTEDDATE[keyTouseInOriginalObject],\r\n                    xMax: lastSolidLineDateIndex + 1,\r\n                    xMin: xPlacementForVerticalDashedLine,\r\n                    borderDash: this.borderDash,\r\n                    order: 2,\r\n                };\r\n            }\r\n        }\r\n        if (a1VerticalDottedLine) {\r\n            annotationsArrayToReturn.push(a1VerticalDottedLine);\r\n        }\r\n        if (a3SolidLineForPostedThroughWithoutADU) {\r\n            annotationsArrayToReturn.push(a3SolidLineForPostedThroughWithoutADU);\r\n        }\r\n        if (a2SolidLineForPostedThroughWithADU) {\r\n            annotationsArrayToReturn.push(a2SolidLineForPostedThroughWithADU);\r\n        }\r\n        if (a5DottedLineForPostedThroughWithoutADU) {\r\n            annotationsArrayToReturn.push(a5DottedLineForPostedThroughWithoutADU);\r\n        }\r\n        if (a4DottedLineForPostedThroughWithADU) {\r\n            annotationsArrayToReturn.push(a4DottedLineForPostedThroughWithADU);\r\n        }\r\n\r\n        return annotationsArrayToReturn;\r\n    }\r\n\r\n    findVerticalLinePlacement(): number {\r\n        let postedThroughWithAduDataForChartLength: number = 0;\r\n        if (this.data.audiencePostedwithAduData?.date?.length > 0) {\r\n            postedThroughWithAduDataForChartLength = this.data.dontPlotPostedReportUpdatedTillDateInGraph\r\n                ? this.data.audiencePostedwithAduData.date.length - 1\r\n                : this.data.audiencePostedwithAduData.date?.length;\r\n        }\r\n        if (this.data.postedToDate && this.data.postedToDate !== \"-\" && postedThroughWithAduDataForChartLength > 0) {\r\n            const postedDataAvailableTillDate = dayjs(this.data.postedToDate);\r\n            const lastSolidLineIndex: number = postedThroughWithAduDataForChartLength - 1;\r\n\r\n            const dateOnXAxisSolidLineEndsAt = dayjs(\r\n                this.data.audiencePostedwithAduData.date[postedThroughWithAduDataForChartLength - 1],\r\n            );\r\n            const dateOnXAxisDottedLineStartsAt = dayjs(\r\n                this.data.projectionWithoutAduData.date[postedThroughWithAduDataForChartLength + 1],\r\n            );\r\n\r\n            const intervalUsedInAxisInDays: number = dateOnXAxisDottedLineStartsAt.diff(\r\n                dateOnXAxisSolidLineEndsAt,\r\n                \"day\",\r\n            );\r\n            const differenceInDays: number = postedDataAvailableTillDate.diff(dateOnXAxisSolidLineEndsAt, \"day\");\r\n            return differenceInDays === 0\r\n                ? lastSolidLineIndex\r\n                : lastSolidLineIndex + differenceInDays / intervalUsedInAxisInDays;\r\n        }\r\n        return 0;\r\n    }\r\n\r\n    setLineChartDataWithoutProjectionData() {\r\n        let postedThroughNoADUsValues: number[];\r\n        let postedThroughWithADUValues: number[];\r\n        let bookedThroughValues: number[];\r\n        let postedNoADUTooltipImpsOrGrp: string[];\r\n        let postedWithAduTooltipImpsOrGrp: string[];\r\n        let bookedThroughTooltipImpsOrGrp: string[];\r\n        let measurementName: string;\r\n        this.lineChartLabels = [];\r\n        this.lineChartColors = [];\r\n        const backgroundColor = \"transparent\";\r\n\r\n        this.setGraphLegendDataForWithoutPorjectionChart();\r\n        this.setAduBifurcationData();\r\n        this.setLiabilityData();\r\n\r\n        if (this.isImpression) {\r\n            measurementName = this.constants.impressionUnit;\r\n            postedNoADUTooltipImpsOrGrp = this.data.audiencePostedNoAduData\r\n                ? this.data.audiencePostedNoAduData.impressionDisplay\r\n                : null;\r\n            postedWithAduTooltipImpsOrGrp = this.data.audiencePostedwithAduData\r\n                ? this.data.audiencePostedwithAduData.impressionDisplay\r\n                : null;\r\n            postedThroughNoADUsValues = this.data.audiencePostedNoAduData\r\n                ? this.data.audiencePostedNoAduData.impression\r\n                : null;\r\n            postedThroughWithADUValues = this.data.audiencePostedwithAduData\r\n                ? this.data.audiencePostedwithAduData.impression\r\n                : null;\r\n            bookedThroughTooltipImpsOrGrp = this.data.audienceAiredData\r\n                ? this.data.audienceAiredData.impressionDisplay\r\n                : null;\r\n            bookedThroughValues = this.data.audienceAiredData ? this.data.audienceAiredData.impression : null;\r\n        } else {\r\n            measurementName = this.constants.grpUnit;\r\n            postedNoADUTooltipImpsOrGrp = this.data.audiencePostedNoAduData.grpDisplay;\r\n            postedWithAduTooltipImpsOrGrp = this.data.audiencePostedwithAduData.grpDisplay;\r\n            postedThroughNoADUsValues = this.data.audiencePostedNoAduData.grp;\r\n            postedThroughWithADUValues = this.data.audiencePostedwithAduData.grp;\r\n            bookedThroughTooltipImpsOrGrp = this.data.audienceAiredData.grpDisplay;\r\n            bookedThroughValues = this.data.audienceAiredData.grp;\r\n        }\r\n\r\n        const bookedThroughData = new Dataset(\r\n            measurementName,\r\n            bookedThroughValues,\r\n            this.data.audienceAiredData ? this.data.audienceAiredData.valueDisplay : null,\r\n            bookedThroughTooltipImpsOrGrp,\r\n            this.constants.airedToDateColor,\r\n            backgroundColor,\r\n            this.barOrStackChartBorderRadius,\r\n            2,\r\n        );\r\n\r\n        const postedThroughNoADUData = new Dataset(\r\n            measurementName,\r\n            postedThroughNoADUsValues,\r\n            this.data.audiencePostedNoAduData ? this.data.audiencePostedNoAduData.valueDisplay : null,\r\n            postedNoADUTooltipImpsOrGrp,\r\n            this.isNeededForRadiant ? this.constants.radiantPostedToDateColor : this.constants.postedToDateColor,\r\n            backgroundColor,\r\n            this.barOrStackChartBorderRadius,\r\n            3,\r\n        );\r\n\r\n        const postedThroughWithADUData = new Dataset(\r\n            measurementName,\r\n            postedThroughWithADUValues,\r\n            this.data.audiencePostedwithAduData ? this.data.audiencePostedwithAduData.valueDisplay : null,\r\n            postedWithAduTooltipImpsOrGrp,\r\n            this.isNeededForRadiant\r\n                ? this.constants.radiantPostedToDateWithAduColor\r\n                : this.constants.postedToDateWithAduColor,\r\n            backgroundColor,\r\n            this.barOrStackChartBorderRadius,\r\n            4,\r\n        );\r\n\r\n        this.lineChartData = {\r\n            datasets: [],\r\n            labels: [],\r\n        };\r\n        //  this.lineChartData.datasets.push(bookedInTheSelectedPeriodData);\r\n        this.lineChartData.datasets.push(bookedThroughData);\r\n        this.lineChartData.datasets.push(postedThroughNoADUData);\r\n        this.lineChartData.datasets.push(postedThroughWithADUData);\r\n\r\n        const dateFormat = this.isAllQuarterSelected ? \"MM/DD/YY\" : \"MM/DD\";\r\n\r\n        if (this.isNeededForRadiant) {\r\n            this.data.bookedInTheSelectedPeriodDataForChart.date.forEach((date) => {\r\n                this.lineChartLabels.push(dayjs(date).format(dateFormat));\r\n                this.lineChartData.labels.push(dayjs(date).format(dateFormat));\r\n            });\r\n        } else {\r\n            this.data.projectionWithAduData.date.forEach((date: string) => {\r\n                this.lineChartLabels.push(dayjs(date).format(dateFormat));\r\n                this.lineChartData.labels.push(dayjs(date).format(dateFormat));\r\n            });\r\n        }\r\n\r\n        this.lineChartColors.push({\r\n            borderColor: this.isNeededForRadiant\r\n                ? this.constants.radiantPostedToDateWithAduColor\r\n                : this.constants.postedToDateWithAduColor,\r\n            backgroundColor,\r\n        });\r\n        this.lineChartColors.push({\r\n            borderColor: this.isNeededForRadiant\r\n                ? this.constants.radiantPostedToDateColor\r\n                : this.constants.postedToDateColor,\r\n            backgroundColor,\r\n        });\r\n        this.lineChartColors.push({ borderColor: this.constants.airedToDateColor, backgroundColor });\r\n        this.lineChartColors.push({\r\n            borderColor: this.isNeededForRadiant\r\n                ? this.constants.radiantBookedInQuarterColor\r\n                : this.constants.bookedInQuaterColor,\r\n            backgroundColor,\r\n        });\r\n\r\n        this.lineChartOptions = this.getAudienceDeliveryLineChartOptions(measurementName);\r\n    }\r\n\r\n    setLineChartData() {\r\n        if (!this.data) return;\r\n        if (this.showProjection) {\r\n            this.setLineChartDataWithProjectedData();\r\n        } else {\r\n            this.setLineChartDataWithoutProjectionData();\r\n        }\r\n    }\r\n\r\n    returnNullArrayLength(): number {\r\n        const length: number =\r\n            // eslint-disable-next-line no-nested-ternary\r\n            this.data.postedToDate && this.data.postedToDate !== \"-\"\r\n                ? this.data.dontPlotPostedReportUpdatedTillDateInGraph\r\n                    ? this.data.audiencePostedwithAduData.date.length - 1\r\n                    : this.data.audiencePostedwithAduData.date.length\r\n                : 0;\r\n        return length;\r\n    }\r\n\r\n    setGraphLegendDataForWithoutPorjectionChart() {\r\n        this.constants = AudiencePerformanceConstant;\r\n        // let bookedImpsOrGrp: string;\r\n        let airedImpsOrGrp: string;\r\n        let postedImpsOrGrpNoAdu: string;\r\n        let postedImpsOrGrpWithAdu: string;\r\n\r\n        const parentClass = \"audience-delivery-parent\";\r\n        const valueClass = this.constants.InfoData;\r\n        let unit: \"IMP('000)\" | \"GRP\";\r\n\r\n        this.legendData = [];\r\n        if (this.isImpression) {\r\n            //   bookedImpsOrGrp = this.data.bookedImpressionDisplay;\r\n            airedImpsOrGrp = this.data.airedImpressionDisplay;\r\n            postedImpsOrGrpNoAdu = this.data.postedImpressionDisplay;\r\n            postedImpsOrGrpWithAdu = this.data.bookedAndAduImpressionDisplay;\r\n            unit = this.constants.impressionUnit;\r\n        } else {\r\n            // bookedImpsOrGrp = this.data.bookedGrpDisplay;\r\n            airedImpsOrGrp = this.data.airedGrpDisplay;\r\n            postedImpsOrGrpNoAdu = this.data.postedGrpDisplay;\r\n            postedImpsOrGrpWithAdu = this.data.bookedAndAduGrpDisplay;\r\n            unit = this.constants.grpUnit;\r\n        }\r\n\r\n        // const bookedLegend: LegendData = this.setBookedLegendData(valueClass, parentClass, unit, bookedImpsOrGrp);\r\n        const airedLegend: LegendData = this.setAiredLegendData(valueClass, parentClass, unit, airedImpsOrGrp);\r\n        const postedNoAduLegend: LegendData = this.setPostedNoAduLegendData(\r\n            valueClass,\r\n            parentClass,\r\n            unit,\r\n            postedImpsOrGrpNoAdu,\r\n        );\r\n        const postedWithAduLegend: LegendData = this.setPostedWithAduLegendData(\r\n            valueClass,\r\n            parentClass,\r\n            unit,\r\n            postedImpsOrGrpWithAdu,\r\n        );\r\n\r\n        // this.legendData.push(bookedLegend);\r\n        this.legendData.push(airedLegend);\r\n        this.legendData.push(postedNoAduLegend);\r\n        this.legendData.push(postedWithAduLegend);\r\n    }\r\n\r\n    setGraphLegendDataForWithPorjectionChart() {\r\n        this.constants = AudiencePerformanceConstant;\r\n        let bookedImpsOrGrp: string;\r\n        let postedProjectionImpsOrGrpNoAdu: string;\r\n        let postedProjectionImpsOrGrpWithAdu: string;\r\n\r\n        const parentClass = \"audience-delivery-parent\";\r\n        const valueClass = this.constants.InfoData;\r\n\r\n        let unit: \"IMP('000)\" | \"GRP\";\r\n\r\n        this.legendData = [];\r\n        if (this.isImpression) {\r\n            bookedImpsOrGrp = this.data.bookedImpressionDisplay;\r\n            postedProjectionImpsOrGrpNoAdu = this.data.postedProjectionNoAduImpressionDisplay;\r\n            postedProjectionImpsOrGrpWithAdu = this.data.postedProjectionAduImpressionDisplay;\r\n            unit = this.constants.impressionUnit;\r\n        } else {\r\n            bookedImpsOrGrp = this.data.bookedGrpDisplay;\r\n            postedProjectionImpsOrGrpNoAdu = this.data.postedProjectionNoAduGrpDisplay;\r\n            postedProjectionImpsOrGrpWithAdu = this.data.postedProjectionAduGrpDisplay;\r\n            unit = this.constants.grpUnit;\r\n        }\r\n\r\n        const bookedLegend: LegendData = this.setBookedLegendData(valueClass, parentClass, unit, bookedImpsOrGrp);\r\n        const postedProjectionNoAduLegend: LegendData = this.setPostedProjectionNoAduLegendData(\r\n            valueClass,\r\n            parentClass,\r\n            unit,\r\n            postedProjectionImpsOrGrpNoAdu,\r\n        );\r\n        const postedProjectionWithAduLegend: LegendData = this.setPostedProjectionWithAduLegendData(\r\n            valueClass,\r\n            parentClass,\r\n            unit,\r\n            postedProjectionImpsOrGrpWithAdu,\r\n        );\r\n\r\n        this.legendData.push(bookedLegend);\r\n        this.legendData.push(postedProjectionNoAduLegend);\r\n        this.legendData.push(postedProjectionWithAduLegend);\r\n    }\r\n\r\n    setGraphLegendData() {\r\n        if (this.showProjection) {\r\n            this.setGraphLegendDataForWithPorjectionChart();\r\n        } else {\r\n            this.setGraphLegendDataForWithoutPorjectionChart();\r\n        }\r\n    }\r\n\r\n    setBookedLegendData(valueClass: string, parentClass: string, unit: string, ImpsOrGrp: string) {\r\n        const bookedLegendMetaData: KeyValue[] = [];\r\n        const keyName = this.constants.inTheSelectedPeriod;\r\n        bookedLegendMetaData.push(new KeyValue(\"\", keyName, \"\", valueClass, parentClass));\r\n        bookedLegendMetaData.push(\r\n            new KeyValue(\"\", this.data.bookedValueDisplay || \"-\", \"\", \"legend-value\", \"display-value value\"),\r\n        );\r\n        bookedLegendMetaData.push(\r\n            new KeyValue(`${unit}: `, ImpsOrGrp || \"-\", \"ratings-imps-key\", \"\", \"rating-imps-container value\"),\r\n        );\r\n\r\n        if (!this.isNeededForRadiant) {\r\n            bookedLegendMetaData.push(\r\n                new KeyValue(\r\n                    `${this.constants.spotsUnit}:`,\r\n                    this.data.bookedSpotsDisplay,\r\n                    \"\",\r\n                    \"\",\r\n                    \" rating-imps-container\",\r\n                ),\r\n            );\r\n        }\r\n        return new LegendData(\r\n            this.constants.booked,\r\n            this.isNeededForRadiant ? this.constants.radiantBookedInQuarterColor : this.constants.bookedInQuaterColor,\r\n            bookedLegendMetaData,\r\n        );\r\n    }\r\n\r\n    setPostedProjectionNoAduLegendData(valueClass: string, parentClass: string, unit: string, ImpsOrGrp: string) {\r\n        const postedProjectionNoAduLegendMetaData: KeyValue[] = [];\r\n        const date = this.constants.NoAdus;\r\n\r\n        postedProjectionNoAduLegendMetaData.push(new KeyValue(\"\", date, \"\", valueClass, parentClass));\r\n        postedProjectionNoAduLegendMetaData.push(\r\n            new KeyValue(\r\n                \"\",\r\n                this.data.postedProjectionNoAduValueDisplay || \"-\",\r\n                \"\",\r\n                \"legend-value\",\r\n                \"display-value value\",\r\n            ),\r\n        );\r\n        postedProjectionNoAduLegendMetaData.push(\r\n            new KeyValue(`${unit}: `, ImpsOrGrp || \"-\", \"\", \"\", \"rating-imps-container value\"),\r\n        );\r\n\r\n        if (!this.isNeededForRadiant) {\r\n            postedProjectionNoAduLegendMetaData.push(\r\n                new KeyValue(\r\n                    `${this.constants.spotsUnit}:`,\r\n                    this.data.postedProjectionNoAduSpotsDisplay,\r\n                    \"\",\r\n                    \"\",\r\n                    \"rating-imps-container\",\r\n                ),\r\n            );\r\n        }\r\n\r\n        return new LegendData(\r\n            this.constants.postedProjection,\r\n            this.isNeededForRadiant ? this.constants.radiantPostedToDateColor : this.constants.postedToDateColor,\r\n            postedProjectionNoAduLegendMetaData,\r\n        );\r\n    }\r\n\r\n    setPostedProjectionWithAduLegendData(valueClass: string, parentClass: string, unit: string, ImpsOrGrp: string) {\r\n        const postedProjectionWithAduLegendMetaData: KeyValue[] = [];\r\n        const date = this.constants.withAdus;\r\n\r\n        postedProjectionWithAduLegendMetaData.push(new KeyValue(\"\", date, \"\", valueClass, parentClass));\r\n        postedProjectionWithAduLegendMetaData.push(\r\n            new KeyValue(\r\n                \"\",\r\n                this.data.postedProjectionAduValueDisplay || \"-\",\r\n                \"\",\r\n                \"legend-value\",\r\n                \"display-value value\",\r\n            ),\r\n        );\r\n        postedProjectionWithAduLegendMetaData.push(\r\n            new KeyValue(`${unit}: `, ImpsOrGrp || \"-\", \"\", \"\", \"rating-imps-container value\"),\r\n        );\r\n\r\n        if (!this.isNeededForRadiant) {\r\n            postedProjectionWithAduLegendMetaData.push(\r\n                new KeyValue(\r\n                    `${this.constants.spotsUnit}:`,\r\n                    this.data.postedProjectionAduSpotsDisplay,\r\n                    \"\",\r\n                    \"\",\r\n                    \"rating-imps-container\",\r\n                ),\r\n            );\r\n        }\r\n        return new LegendData(\r\n            this.constants.postedProjection,\r\n            this.isNeededForRadiant\r\n                ? this.constants.radiantPostedToDateWithAduColor\r\n                : this.constants.postedToDateWithAduColor,\r\n            postedProjectionWithAduLegendMetaData,\r\n        );\r\n    }\r\n\r\n    setLiabilityData() {\r\n        this.udLiabilityData = null;\r\n        const udLiabilityKeyValue: KeyValue[] = [];\r\n        let impsOrGrpKey: string;\r\n        const udLiabilityKey = this.constants.udLiability.toUpperCase();\r\n        const udLiabilityImpsOrGrp: string = this.data.udLiabilityMetricValueDisplay;\r\n        if (this.data.udLiabilityMetricDisplay === \"IMPRESSIONS\") {\r\n            impsOrGrpKey = this.constants.impressionUnitKey;\r\n        } else if (this.data.udLiabilityMetricDisplay === \"RATINGS\") {\r\n            impsOrGrpKey = this.constants.grpUnitKey;\r\n        }\r\n        udLiabilityKeyValue.push(new KeyValue(impsOrGrpKey, udLiabilityImpsOrGrp, \"\", \"\", \"value\"));\r\n        udLiabilityKeyValue.push(\r\n            new KeyValue(this.constants.udPercentageDelivered, this.data.udLiabilitypercentageDelivered, \"\", \"\", \"\"),\r\n        );\r\n        const udLiability: PostedBifurcationData = new PostedBifurcationData(udLiabilityKey, null, udLiabilityKeyValue);\r\n        this.udLiabilityData = udLiability;\r\n    }\r\n\r\n    setAiredLegendData(valueClass: string, parentClass: string, unit: string, ImpsOrGrp: string): LegendData {\r\n        const airedLegendMetaData: KeyValue[] = [];\r\n        const date = this.data.airedToDate === \"-\" || !this.data.airedToDate ? \"\" : `${this.data.airedToDate}* `;\r\n\r\n        airedLegendMetaData.push(new KeyValue(\"\", date, \"\", valueClass, parentClass));\r\n        airedLegendMetaData.push(\r\n            new KeyValue(\r\n                \"\",\r\n                date ? this.data.airedValueDisplay || \"-\" : \"-\",\r\n                \"\",\r\n                \"legend-value\",\r\n                \"display-value value\",\r\n            ),\r\n        );\r\n        airedLegendMetaData.push(\r\n            new KeyValue(`${unit}: `, date ? ImpsOrGrp || \"-\" : \"-\", \"ratings-imps-key\", \"\", \"rating-imps-container\"),\r\n        );\r\n\r\n        if (!this.isNeededForRadiant) {\r\n            airedLegendMetaData.push(\r\n                new KeyValue(\r\n                    `${this.constants.spotsUnit}:`,\r\n                    this.data.airedSpotsDisplay,\r\n                    \"\",\r\n                    \"\",\r\n                    \" rating-imps-container\",\r\n                ),\r\n            );\r\n        }\r\n        return new LegendData(this.constants.airedThrough, this.constants.airedToDateColor, airedLegendMetaData);\r\n    }\r\n\r\n    setPostedNoAduLegendData(valueClass: string, parentClass: string, unit: string, ImpsOrGrp: string): LegendData {\r\n        const postedNoAduLegendMetaData: KeyValue[] = [];\r\n        const date =\r\n            this.data.postedToDate === \"-\"\r\n                ? this.constants.NoAdus\r\n                : `${this.data.postedToDate}* ${this.constants.NoAdus}`;\r\n\r\n        postedNoAduLegendMetaData.push(new KeyValue(\"\", date, \"\", valueClass, parentClass));\r\n        postedNoAduLegendMetaData.push(\r\n            new KeyValue(\"\", this.data.postedValueDisplay || \"-\", \"\", \"legend-value\", \"display-value value\"),\r\n        );\r\n        postedNoAduLegendMetaData.push(new KeyValue(`${unit}: `, ImpsOrGrp || \"-\", \"\", \"\", \"rating-imps-container\"));\r\n\r\n        if (!this.isNeededForRadiant) {\r\n            postedNoAduLegendMetaData.push(\r\n                new KeyValue(\r\n                    `${this.constants.spotsUnit}:`,\r\n                    this.data.postedWithoutAduSpotsDisplay,\r\n                    \"\",\r\n                    \"\",\r\n                    \"rating-imps-container\",\r\n                ),\r\n            );\r\n        }\r\n\r\n        return new LegendData(\r\n            this.constants.postedThrough,\r\n            this.isNeededForRadiant ? this.constants.radiantPostedToDateColor : this.constants.postedToDateColor,\r\n            postedNoAduLegendMetaData,\r\n        );\r\n    }\r\n\r\n    setPostedWithAduLegendData(valueClass: string, parentClass: string, unit: string, ImpsOrGrp: string): LegendData {\r\n        const postedWithAduLegendMetaData: KeyValue[] = [];\r\n        const date =\r\n            this.data.postedToDate === \"-\"\r\n                ? this.constants.withAdus\r\n                : `${this.data.postedToDate}* ${this.constants.withAdus}`;\r\n        postedWithAduLegendMetaData.push(new KeyValue(\"\", date, \"\", valueClass, parentClass));\r\n\r\n        postedWithAduLegendMetaData.push(\r\n            new KeyValue(\"\", this.data.bookedAndAduValue || \"-\", \"\", \"legend-value\", \"display-value value\"),\r\n        );\r\n        postedWithAduLegendMetaData.push(new KeyValue(`${unit}: `, ImpsOrGrp || \"-\", \"\", \"\", \"rating-imps-container\"));\r\n\r\n        if (!this.isNeededForRadiant) {\r\n            postedWithAduLegendMetaData.push(\r\n                new KeyValue(\r\n                    `${this.constants.spotsUnit}:`,\r\n                    this.data.postedWithAduSpotsDisplay,\r\n                    \"\",\r\n                    \"\",\r\n                    \"rating-imps-container\",\r\n                ),\r\n            );\r\n        }\r\n\r\n        return new LegendData(\r\n            this.constants.postedThrough,\r\n            this.isNeededForRadiant\r\n                ? this.constants.radiantPostedToDateWithAduColor\r\n                : this.constants.postedToDateWithAduColor,\r\n            postedWithAduLegendMetaData,\r\n        );\r\n    }\r\n\r\n    setAduBifurcationData() {\r\n        this.aduData = [];\r\n        let annaAduImpsOrGrp: string;\r\n        let userAduImpsOrGrp: string;\r\n        let postedImpsOrGrp: string;\r\n        let scheduledImpsOrGrp: string;\r\n        let impsOrGrpKey: string;\r\n        const postedAduKeyValue: KeyValue[] = [];\r\n        const scheduledAduKeyValue: KeyValue[] = [];\r\n        const postedADUsKey = `${this.constants.posted.toUpperCase()} ${this.constants.adus}`;\r\n        const scheduledADUsKey = `${this.constants.scheduled.toUpperCase()} ${this.constants.adus}`;\r\n\r\n        if (this.isImpression) {\r\n            postedImpsOrGrp = this.data.postedAduImpressionDisplay || \"-\";\r\n            scheduledImpsOrGrp = this.data.scheduledAduImpressionDisplay || \"-\";\r\n            annaAduImpsOrGrp = this.data.annaAduImpressionDisplay || \"-\";\r\n            userAduImpsOrGrp = this.data.userAduImpressionDisplay || \"-\";\r\n            impsOrGrpKey = this.constants.impressionUnitKey;\r\n        } else {\r\n            postedImpsOrGrp = this.data.postedAduGrpDisplay || \"-\";\r\n            scheduledImpsOrGrp = this.data.scheduledAduGrpDisplay || \"-\";\r\n            annaAduImpsOrGrp = this.data.annaAduGrpDisplay || \"-\";\r\n            userAduImpsOrGrp = this.data.userAduGrpDisplay || \"-\";\r\n            impsOrGrpKey = this.constants.grpUnitKey;\r\n        }\r\n\r\n        postedAduKeyValue.push(new KeyValue(impsOrGrpKey, postedImpsOrGrp || \"-\", \"\", \"\", \"value\"));\r\n        postedAduKeyValue.push(\r\n            new KeyValue(`${this.constants.spotsUnit}:`, this.data.postedAduSpotsDisplay || \"-\", \"\", \"\", \"\"),\r\n        );\r\n        const postedAdu: PostedBifurcationData = new PostedBifurcationData(\r\n            postedADUsKey,\r\n            this.data.postedAduValueDisplay,\r\n            postedAduKeyValue,\r\n        );\r\n\r\n        scheduledAduKeyValue.push(new KeyValue(impsOrGrpKey, scheduledImpsOrGrp || \"-\", \"\", \"\", \"value\"));\r\n        scheduledAduKeyValue.push(\r\n            new KeyValue(`${this.constants.spotsUnit}:`, this.data.scheduledAduSpotsDisplay || \"-\", \"\", \"\", \"\"),\r\n        );\r\n        const scheduledAdu: PostedBifurcationData = new PostedBifurcationData(\r\n            scheduledADUsKey,\r\n            this.data.scheduledAduValueDisplay,\r\n            scheduledAduKeyValue,\r\n        );\r\n\r\n        this.aduData.push(postedAdu);\r\n        this.aduData.push(scheduledAdu);\r\n\r\n        const annaAduKeyValue: KeyValue[] = [];\r\n        annaAduKeyValue.push(new KeyValue(impsOrGrpKey, annaAduImpsOrGrp, \"\", \"\", \"value\"));\r\n        annaAduKeyValue.push(\r\n            new KeyValue(`${this.constants.spotsUnit}:`, this.data.annaAduSpotsDisplay || \"-\", \"\", \"\", \"\"),\r\n        );\r\n\r\n        this.annaUserAdusData = [\r\n            new PostedBifurcationData(`ANNA ${this.constants.adus}`, this.data.annaAduValueDisplay, annaAduKeyValue),\r\n        ];\r\n\r\n        const userAduKeyValue: KeyValue[] = [];\r\n        userAduKeyValue.push(new KeyValue(impsOrGrpKey, userAduImpsOrGrp, \"\", \"\", \"value\"));\r\n        userAduKeyValue.push(\r\n            new KeyValue(`${this.constants.spotsUnit}:`, this.data.userAduSpotsDisplay || \"-\", \"\", \"\", \"\"),\r\n        );\r\n        this.annaUserAdusData.push(\r\n            new PostedBifurcationData(`USER ${this.constants.adus}`, this.data.userAduValueDisplay, userAduKeyValue),\r\n        );\r\n    }\r\n    saveLiability(data: any) {\r\n        this.saveLiabilityEvent.emit(data);\r\n    }\r\n    getAudienceDeliveryLineChartOptions(measurementName: string) {\r\n        return {\r\n            responsive: true,\r\n            maintainAspectRatio: false,\r\n            animation: false,\r\n            animations: false,\r\n            transitions: {\r\n                show: {\r\n                    animations: false,\r\n                },\r\n                hide: {\r\n                    animations: false,\r\n                },\r\n            },\r\n            scales: {\r\n                x: {\r\n                    grid: {\r\n                        display: true,\r\n                        zeroLineColor: \"#000000\",\r\n                        color: \"transparent\",\r\n                    },\r\n                    ticks: {\r\n                        padding: 4, // audience delivery issue no 6\r\n                    },\r\n                },\r\n                y: {\r\n                    min: 0,\r\n                    display: true,\r\n                    scaleLabel: {\r\n                        display: true,\r\n                        labelString: measurementName,\r\n                        lineHeight: 0.7,\r\n                        fontColor: \"#747474\",\r\n                        fontFamily: \"Roboto\",\r\n                        fontSize: 13,\r\n                        padding: 5,\r\n                    },\r\n                    ticks: {\r\n                        beginAtZero: true,\r\n                        padding: 4, // audience delivery issue no 6\r\n                        min: 0,\r\n                        callback(value: any, index: any, values: any) {\r\n                            function thousandFormatting(numValue: any) {\r\n                                let returnValue;\r\n                                let updatedValue = numValue;\r\n                                if (updatedValue / 10 ** 6 >= 1) {\r\n                                    updatedValue /= 10 ** 6;\r\n                                    returnValue = `${parseFloat(updatedValue)} M`;\r\n                                } else if (updatedValue / 10 ** 4 >= 1) {\r\n                                    // 4 is required because we don't want it in decimal for that we are using truncate\r\n                                    // eslint-disable-next-line max-len\r\n                                    updatedValue /= 10 ** 3; // so 1200 will be 1200 itself not 1K (1100 to 1400) will truncate to became 1K\r\n                                    returnValue = `${Math.trunc(parseFloat(updatedValue))} K`;\r\n                                } else {\r\n                                    returnValue = parseInt(updatedValue, 10);\r\n                                }\r\n                                return returnValue;\r\n                            }\r\n                            return thousandFormatting(value);\r\n                        },\r\n                    },\r\n                },\r\n            },\r\n            interaction: {\r\n                mode: \"index\",\r\n                intersect: false,\r\n            },\r\n            elements: {\r\n                line: { tension: 0 },\r\n                point: { radius: 0 },\r\n            },\r\n            plugins: {\r\n                tooltip: {\r\n                    animation: false,\r\n                    enabled: false,\r\n                    // itemSort: function (a: any, b: any) {\r\n                    //   return b.datasetIndex - a.datasetIndex;\r\n                    // },\r\n                    callbacks: {\r\n                        label(context: any) {\r\n                            const index = context.dataIndex;\r\n                            const tooltipDatasetImpressionGrp = context.dataset.tooltipImpsOrGrpDisplay[index];\r\n                            const tooltipDatasetValue = context.dataset.tooltipDisplayValue[index];\r\n\r\n                            const tooltipData = {\r\n                                unit: context.dataset.measurementName,\r\n                                labelColor: context.dataset.borderColor,\r\n                                value: tooltipDatasetValue,\r\n                                impressionGrp: tooltipDatasetImpressionGrp,\r\n                            };\r\n                            return tooltipData;\r\n                        },\r\n                    },\r\n                    external(context: any) {\r\n                        let tooltipEl = document.getElementById(\"chartjs-tooltip\");\r\n\r\n                        if (!tooltipEl) {\r\n                            tooltipEl = document.createElement(\"div\");\r\n                            tooltipEl.id = \"chartjs-tooltip\";\r\n                            tooltipEl.innerHTML = '<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\"></table>';\r\n                            document.body.appendChild(tooltipEl);\r\n                        }\r\n\r\n                        // Hide if no tooltip\r\n                        const tooltipModel = context.tooltip;\r\n                        if (tooltipModel.opacity === 0) {\r\n                            tooltipEl.style.opacity = \"0\";\r\n                            return;\r\n                        }\r\n                        // Set caret Position\r\n                        tooltipEl.setAttribute(\"class\", \"\");\r\n                        tooltipEl.classList.add(\"bottom\", \"custom-tooltip-chartjs\");\r\n\r\n                        function getBody(bodyItem: any) {\r\n                            return bodyItem.lines;\r\n                        }\r\n\r\n                        // Set Text\r\n                        if (tooltipModel.body) {\r\n                            const titleLines = tooltipModel.title || [];\r\n                            const bodyLines = tooltipModel.body.map(getBody);\r\n\r\n                            let innerHtml = \"<thead>\";\r\n                            titleLines.forEach((title: any) => {\r\n                                innerHtml += \"<tr><th></th></tr>\";\r\n                            });\r\n                            innerHtml += \"</thead><tbody>\";\r\n\r\n                            bodyLines.forEach((body: any, i: any) => {\r\n                                const colors = tooltipModel.labelColors[i];\r\n                                // eslint-disable-next-line max-len\r\n                                const style = `background:${colors.backgroundColor}; border-width: 0.125rem; font-size: 0.75rem; color: #747474;`;\r\n                                // eslint-disable-next-line max-len\r\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}`;\r\n                                // eslint-disable-next-line max-len\r\n                                const valueStyle = `color:#000; font-family:Roboto; font-size: 0.75rem; font-weight:bold; font-family: Roboto; line-height: 1; letter-spacing: normal;`;\r\n                                const span = `<span style=\"${style}\"></span>`;\r\n                                const colorSpan = `<span style=\"${dotStyle}\"></span>`;\r\n                                // let leftSpace = \"<span style='margin-left:14x;color:red'>a</span>\";\r\n                                const valueSpan = `<span style=\"${valueStyle}\">${body[0].value}</span>`;\r\n                                innerHtml += `<tr>\r\n                                    <td>\r\n                                        ${colorSpan}\r\n                                        ${span}\r\n                                        <span style=\"${valueStyle}\">\r\n                                            ${body[0].impressionGrp} ${body[0].unit}\r\n                                        </span>\r\n                                    </td>\r\n                                </tr>`;\r\n\r\n                                innerHtml += `<tr><td style=\"padding:0 0 4px 26px\">${valueSpan}</td></tr>`;\r\n                            });\r\n                            innerHtml += \"</tbody>\";\r\n\r\n                            const tableRoot = tooltipEl.querySelector(\"table\");\r\n                            tableRoot.innerHTML = innerHtml;\r\n                            tableRoot.style.width = \"100%\";\r\n                        }\r\n\r\n                        const position = context.chart.canvas.getBoundingClientRect();\r\n\r\n                        // For the Last tooltip if its position is greater than chart width then left shift it\r\n                        const LeftOffset = 0;\r\n\r\n                        let uppermostDataPoint = tooltipModel.dataPoints[0].element.y;\r\n                        tooltipModel.dataPoints.forEach((ele: any) => {\r\n                            uppermostDataPoint = Math.min(ele.element.y, uppermostDataPoint);\r\n                        });\r\n\r\n                        tooltipEl.style.opacity = \"1\";\r\n                        tooltipEl.style.backgroundColor = \"#fff\";\r\n                        tooltipEl.style.position = \"absolute\";\r\n                        tooltipEl.style.zIndex = \"10000\";\r\n                        // eslint-disable-next-line no-underscore-dangle\r\n                        tooltipEl.style.fontFamily = tooltipModel._bodyFontFamily;\r\n                        tooltipEl.style.fontSize = `${tooltipModel.bodyFontSize}px`;\r\n                        // eslint-disable-next-line no-underscore-dangle\r\n                        tooltipEl.style.fontStyle = tooltipModel._bodyFontStyle;\r\n                        tooltipEl.style.padding = `${tooltipModel.yPadding}px ${tooltipModel.xPadding}px`;\r\n                        tooltipEl.style.pointerEvents = \"none\";\r\n                        tooltipEl.style.borderRadius = \"4px\";\r\n                        tooltipEl.style.boxShadow = \"1px 1px 3px 1px rgba(156, 156, 156, 0.25)\";\r\n                        tooltipEl.style.width = \"140px\";\r\n                        tooltipEl.style.maxWidth = \"140px\";\r\n                        tooltipEl.style.borderWidth = \"8px 8px 0 8px\";\r\n                        tooltipEl.style.border = \"1px solid #CFCFCF\";\r\n\r\n                        // eslint-disable-next-line max-len\r\n                        tooltipEl.style.left = `${position.left + window.pageXOffset + tooltipModel.caretX - LeftOffset - 70}px`;\r\n                        // eslint-disable-next-line max-len\r\n                        tooltipEl.style.top = `${position.top + window.pageYOffset + uppermostDataPoint - tooltipEl.scrollHeight}px`;\r\n                    },\r\n                },\r\n                annotation: {\r\n                    annotations: this.showProjection ? this.addAnnotationsForWithProjectonChart() : null,\r\n                },\r\n            },\r\n        };\r\n    }\r\n\r\n    setDropdownConfig() {\r\n        this.grapghTypeDropdownConfig = { ...this.annaGlobalConfig.defaultSingleSelectConfig };\r\n        this.grapghTypeDropdownConfig.placeholder = \"Select Filter\";\r\n    }\r\n\r\n    setOrderFilterTypeDropdownConfig() {\r\n        this.orderFilterDropdownConfig = { ...this.annaGlobalConfig.defaultSingleSelectConfig };\r\n        this.orderFilterDropdownConfig.placeholder = \"Select Filter\";\r\n    }\r\n\r\n    setRevClassDropdownConfig() {\r\n        this.revClassDropdownConfig = { ...this.annaGlobalConfig.defaultMultiSelectConfig };\r\n        this.revClassDropdownConfig.placeholder = \"Select Rev Classes\";\r\n        this.revClassDropdownConfig.maxHeightOfList = 150;\r\n    }\r\n\r\n    setBreadcrumbs() {\r\n        if (!this.breadcrumbService.isBreadcrumbClicked) {\r\n            const name = \"Dashboard (Daily BoB)\";\r\n            const path = this.router.url;\r\n\r\n            this.breadcrumbService.updateBreadcrumbs(name, path, false);\r\n        } else {\r\n            this.breadcrumbService.isBreadcrumbClicked = false;\r\n        }\r\n    }\r\n\r\n    navigateToOrderPage() {\r\n        this.setBreadcrumbs();\r\n        this.viewAudiencePerformanceClicked.emit();\r\n    }\r\n\r\n    openModal() {\r\n        this.editModalReference = this.modalService.open(this.editOrderTypeModal, this.ngbModalOptions);\r\n    }\r\n    closeModal() {\r\n        this.editModalReference.close();\r\n    }\r\n\r\n    popupModalConfig() {\r\n        this.ngbModalOptions = {\r\n            windowClass: \"liability-enter-popup\",\r\n        };\r\n    }\r\n\r\n    setMessageData() {\r\n        const msgForDeletedOrder = `There is no audience performance data available for this order.`;\r\n        const iconClass = \"mdi mdi-information\";\r\n        const msgForLibility = `Please enter the UD liability for this order.`;\r\n        this.deleteOrderMessageData = new MessageBoxData(\r\n            null,\r\n            msgForDeletedOrder,\r\n            iconClass,\r\n            `${GenericMessageBoxTheme.informationBlue.messageBoxClass} sm mg-adu-rule`,\r\n        );\r\n        this.liabilityInfoMsg = new MessageBoxData(\r\n            null,\r\n            msgForLibility,\r\n            iconClass,\r\n            `${GenericMessageBoxTheme.informationBlue.messageBoxClass} sm liability-info-msg`,\r\n        );\r\n    }\r\n\r\n    showOrHideProjectionData(value?: boolean) {\r\n        this.showProjection = value !== undefined ? value : !this.showProjection;\r\n        this.setLineChartData();\r\n        this.showProjectionsToggled.emit(this.showProjection);\r\n    }\r\n}\r\n","<anna-design-message-box\r\n    *ngIf=\"isDeletedOrder\"\r\n    [messageBoxData]=\"deleteOrderMessageData\"\r\n></anna-design-message-box>\r\n\r\n<anna-design-message-box\r\n    *ngIf=\"isEditLiabilityAllowed && data?.orderType === OrderType.UD_LIABILITY_NOT_SET\"\r\n    [messageBoxData]=\"liabilityInfoMsg\"\r\n></anna-design-message-box>\r\n\r\n<ng-container\r\n    *ngIf=\"isSingleOrder && showProjection && !errorMessage && !loading\"\r\n    [ngTemplateOutlet]=\"projectionMessage\"\r\n>\r\n</ng-container>\r\n\r\n<div\r\n    class=\"user-card pull-right\"\r\n    *ngIf=\"!isDeletedOrder\"\r\n    [ngClass]=\"{ 'user-card-no-proj': !showProjection }\"\r\n>\r\n    <div\r\n        *ngIf=\"isNeededForRadiant\"\r\n        class=\"radiant-dashboard-heading\"\r\n    >\r\n        {{ constants.audiencePerformance | uppercase }}\r\n    </div>\r\n\r\n    <ng-container *ngIf=\"!loading\">\r\n        <div\r\n            class=\"header-div row nowrap\"\r\n            *ngIf=\"showHeadingAndDropdown || !isSingleOrder\"\r\n        >\r\n            <div\r\n                class=\"p-0 dashboard-header-container\"\r\n                *ngIf=\"showHeadingAndDropdown\"\r\n            >\r\n                <div\r\n                    *ngIf=\"!isNeededForRadiant\"\r\n                    class=\"dashboard-heading\"\r\n                >\r\n                    {{ constants.audiencePerformance | uppercase }}\r\n                </div>\r\n                <p\r\n                    class=\"dashboard-sub-heading\"\r\n                    *ngIf=\"data && !isNeededForRadiant\"\r\n                >\r\n                    {{ constants.paidOrderWithAudience }} -\r\n                    <a\r\n                        class=\"view-link\"\r\n                        [ngClass]=\"{ disabled: !data.isPaidOrdersPresent || disableViewLink }\"\r\n                        (click)=\"navigateToOrderPage()\"\r\n                        >View</a\r\n                    >\r\n                    <i\r\n                        class=\"mi mdi-info-outline info-icon\"\r\n                        #t=\"ngbTooltip\"\r\n                        [ngbTooltip]=\"commercialOrderWithRatingTooltip\"\r\n                        placement=\"top\"\r\n                        tooltipClass=\"custom-tooltip commercial-order-with-rating-tooltip\"\r\n                    >\r\n                    </i>\r\n                </p>\r\n            </div>\r\n            <div class=\"projections-filter-container\">\r\n                <div\r\n                    class=\"show-projections-toggle\"\r\n                    *ngIf=\"!isSingleOrder && !errorMessage\"\r\n                >\r\n                    Show Projections\r\n                    <anna-design-toggle\r\n                        [isDisabled]=\"!data\"\r\n                        [position]=\"'none'\"\r\n                        [isToggled]=\"showProjection\"\r\n                        (toggle)=\"showOrHideProjectionData()\"\r\n                    >\r\n                    </anna-design-toggle>\r\n                </div>\r\n                <div\r\n                    class=\"filter-dropdown\"\r\n                    *ngIf=\"data && showHeadingAndDropdown && !isNeededForRadiant\"\r\n                >\r\n                    <anna-design-single-select\r\n                        class=\"custom-dropdown-width\"\r\n                        *ngIf=\"!isSingleOrder\"\r\n                        [items]=\"orderFilterDropdownData\"\r\n                        [selectedItem]=\"selectedOrderTypeFilter\"\r\n                        [disabled]=\"!data\"\r\n                        [config]=\"orderFilterDropdownConfig\"\r\n                        (valueChanged)=\"orderFilterSelected($event)\"\r\n                    >\r\n                    </anna-design-single-select>\r\n                    <div\r\n                        class=\"grey-line\"\r\n                        *ngIf=\"!isSingleOrder && !errorMessage\"\r\n                    ></div>\r\n                    <anna-design-single-select\r\n                        class=\"custom-dropdown-width\"\r\n                        [items]=\"graphType\"\r\n                        [selectedItem]=\"selectedGraphType\"\r\n                        [disabled]=\"!data\"\r\n                        [config]=\"grapghTypeDropdownConfig\"\r\n                        (valueChanged)=\"graphTypeSelected($event)\"\r\n                    >\r\n                    </anna-design-single-select>\r\n                </div>\r\n            </div>\r\n        </div>\r\n\r\n        <div *ngIf=\"errorMessage\">\r\n            <p class=\"noData\">{{ errorMessage }}</p>\r\n        </div>\r\n\r\n        <ng-container *ngIf=\"data\">\r\n            <div class=\"row nowrap\">\r\n                <div class=\"legend-container\">\r\n                    <span class=\"text-container\">\r\n                        $ {{ showProjection ? \"Projected \" : \"\" }}Delivery % (&#64; Threshold):\r\n                    </span>\r\n                    <span class=\"percent-value\">\r\n                        {{\r\n                            showProjection\r\n                                ? data.projectedAudienceDeliveredToDateDisplay\r\n                                : data.audienceDeliveredToDateDisplay\r\n                        }}\r\n                        <span *ngIf=\"!isNeededForRadiant\">%</span>\r\n                        <i\r\n                            class=\"mi mdi-info-outline info-tooltip-icon\"\r\n                            #t=\"ngbTooltip\"\r\n                            [ngbTooltip]=\"unrealizableDollarValue\"\r\n                            placement=\"bottom\"\r\n                            tooltipClass=\"custom-tooltip unrealizableDollarValue-tooltip\"\r\n                        >\r\n                        </i>\r\n                    </span>\r\n                </div>\r\n                <div\r\n                    class=\"grey-line h-27\"\r\n                    *ngIf=\"!isNeededForRadiant\"\r\n                ></div>\r\n                <div\r\n                    class=\"legend-container\"\r\n                    *ngIf=\"!isNeededForRadiant\"\r\n                >\r\n                    <span class=\"text-container\"> UD Impacts: </span>\r\n                    <span class=\"percent-value\">\r\n                        {{ showProjection ? data.projectedUdImpacts : data.udImpactsToDisplay }}\r\n                        <i\r\n                            class=\"mi mdi-info-outline info-tooltip-icon\"\r\n                            #t=\"ngbTooltip\"\r\n                            [ngbTooltip]=\"udImpactsTooltip\"\r\n                            placement=\"bottom\"\r\n                            tooltipClass=\"custom-tooltip\"\r\n                        >\r\n                        </i>\r\n                    </span>\r\n                </div>\r\n                <div\r\n                    class=\"revclass\"\r\n                    *ngIf=\"!isSingleOrder && !isNeededForRadiant\"\r\n                >\r\n                    <anna-design-multi-select\r\n                        [items]=\"revClassDropdownData\"\r\n                        [config]=\"revClassDropdownConfig\"\r\n                        [disabled]=\"revClassDropdownData.length === 0\"\r\n                        (dropdownOpenedEvent)=\"revClassDropdownOpened($event)\"\r\n                        (dropdownClosedEvent)=\"revClassSelected($event)\"\r\n                    ></anna-design-multi-select>\r\n                </div>\r\n\r\n                <!-- <div\r\n                    class=\"revclass\"\r\n                    *ngIf=\"!isSingleOrder\"\r\n                >\r\n                    <anna-design-multi-select\r\n                        [items]=\"revClassDropdownData\"\r\n                        [config]=\"revClassDropdownConfig\"\r\n                        [disabled]=\"revClassDropdownData.length === 0\"\r\n                        (dropdownOpenedEvent)=\"revClassDropdownOpened($event)\"\r\n                        (dropdownClosedEvent)=\"revClassSelected($event)\"\r\n                    ></anna-design-multi-select>\r\n                </div> -->\r\n                <!-- <ng-container\r\n                    *ngIf=\"!isSingleOrder && showProjection && !errorMessage && !loading\"\r\n                    [ngTemplateOutlet]=\"projectionMessage\"\r\n                >\r\n                </ng-container>\r\n                <div\r\n                    *ngIf=\"isSingleOrder\"\r\n                    class=\"posted-report-text italic-text\"\r\n                >\r\n                    {{\r\n                        data.postedToDate === \"-\"\r\n                            ? \"*No posted data\"\r\n                            : (showProjection ? \"- - - - \" : \"*\") + \"Posted report is updated till \" + data.postedToDate\r\n                    }}\r\n                </div>\r\n                -->\r\n                <div\r\n                    *ngIf=\"missingPostedDataPayload\"\r\n                    class=\"right-aligned\"\r\n                >\r\n                    <anna-design-missing-posted-data\r\n                        [isHHData]=\"measurementAgency() === MeasurementAgencyInOrderSummary.NielsenSweeps\"\r\n                        [missingPostedData]=\"missingPostedData\"\r\n                        class=\"audience-perfromance-missing-posted-data\"\r\n                        [payload]=\"missingPostedDataPayload\"\r\n                        [showDemographicInfo]=\"showDemographicInfo\"\r\n                    ></anna-design-missing-posted-data>\r\n                </div>\r\n            </div>\r\n            <!-- <div\r\n                *ngIf=\"!isSingleOrder\"\r\n                class=\"posted-report-text mtb-8 italic-text\"\r\n            >\r\n                {{\r\n                    data.postedToDate === \"-\"\r\n                        ? \"*No posted data\"\r\n                        : (showProjection ? \"- - - - \" : \"*\") + \"Posted report is updated till \" + data.postedToDate\r\n                }}\r\n            </div> -->\r\n\r\n            <div class=\"chart-container\">\r\n                <div class=\"line-chart\">\r\n                    <section class=\"w-100\">\r\n                        <div class=\"chart-with-posted-text\">\r\n                            <ng-container\r\n                                *ngIf=\"!isSingleOrder && showProjection && !errorMessage && !loading\"\r\n                                [ngTemplateOutlet]=\"projectionMessage\"\r\n                            >\r\n                            </ng-container>\r\n                            <div\r\n                                *ngIf=\"isSingleOrder\"\r\n                                class=\"posted-report-text mr-8 italic-text\"\r\n                            >\r\n                                {{\r\n                                    data.postedToDate === \"-\"\r\n                                        ? \"*No posted data\"\r\n                                        : (showProjection ? \"- - - - \" : \"*\") +\r\n                                          \"Posted data for this order is updated till \" +\r\n                                          data.postedToDate\r\n                                }}\r\n                            </div>\r\n                            <div\r\n                                *ngIf=\"!isSingleOrder\"\r\n                                class=\"posted-report-text mr-8 mtb-8 italic-text\"\r\n                            >\r\n                                {{\r\n                                    data.postedToDate === \"-\"\r\n                                        ? \"*No posted data\"\r\n                                        : (showProjection ? \"- - - - \" : \"*\") +\r\n                                          \"Posted report is updated till \" +\r\n                                          data.postedToDate\r\n                                }}\r\n                            </div>\r\n                        </div>\r\n\r\n                        <article class=\"d-flex\">\r\n                            <span class=\"graph-axis-titles\">{{\r\n                                isImpression ? constants.impressionUnit : constants.grpUnit\r\n                            }}</span>\r\n                            <anna-design-generic-line-chart\r\n                                class=\"smaller-graph\"\r\n                                [chartClassName]=\"chartClassName\"\r\n                                *ngIf=\"toDisplayGraph\"\r\n                                [sizeOfChart]=\"sizeOfChart\"\r\n                                [lineChartOptions]=\"lineChartOptions\"\r\n                                [lineChartData]=\"lineChartData\"\r\n                            >\r\n                            </anna-design-generic-line-chart>\r\n                        </article>\r\n                    </section>\r\n\r\n                    <section class=\"row legend-container-graph legened-inline-with-graph\">\r\n                        <ng-container\r\n                            [ngTemplateOutlet]=\"graphLegendTemplate\"\r\n                            [ngTemplateOutletContext]=\"{ legendData: legendData }\"\r\n                        ></ng-container>\r\n                    </section>\r\n                </div>\r\n                <div [ngClass]=\"{ 'ml-40': isSingleOrder }\">\r\n                    <div class=\"row legend-container-graph flex-start-align pb-16\">\r\n                        <ng-container *ngFor=\"let adu of aduData; let i = index\">\r\n                            <div>\r\n                                <p class=\"recovered-under-delivery-heading\">{{ adu.heading }}</p>\r\n                                <div class=\"recovered-under-delivery-total-data\">\r\n                                    <div class=\"recovered-under-delivery-value\">\r\n                                        {{ adu.value }}\r\n                                    </div>\r\n                                    <anna-design-key-value\r\n                                        class=\"audience-card-adu-parent\"\r\n                                        [data]=\"adu.keyValue\"\r\n                                    ></anna-design-key-value>\r\n                                </div>\r\n                            </div>\r\n                        </ng-container>\r\n\r\n                        <ng-container *ngIf=\"showAnnaAduSection\">\r\n                            <div class=\"divider\"></div>\r\n                            <ng-container *ngFor=\"let adu of annaUserAdusData; let i = index\">\r\n                                <div>\r\n                                    <p class=\"recovered-under-delivery-heading\">{{ adu?.heading }}</p>\r\n                                    <div class=\"recovered-under-delivery-total-data\">\r\n                                        <div class=\"recovered-under-delivery-value\">\r\n                                            {{ adu?.value }}\r\n                                        </div>\r\n                                        <anna-design-key-value\r\n                                            class=\"audience-card-adu-parent\"\r\n                                            [data]=\"adu.keyValue\"\r\n                                        ></anna-design-key-value>\r\n                                    </div>\r\n                                </div>\r\n                            </ng-container>\r\n                        </ng-container>\r\n\r\n                        <ng-container *ngIf=\"showLiabilitySection\">\r\n                            <div class=\"divider\"></div>\r\n                            <div>\r\n                                <p class=\"recovered-under-delivery-heading\">\r\n                                    {{ udLiabilityData.heading }}\r\n                                    <span\r\n                                        *ngIf=\"\r\n                                            isEditLiabilityAllowed &&\r\n                                            (data.orderType === OrderType.UD_LIABILITY_NOT_SET ||\r\n                                                data.orderType === OrderType.UD_LIABILITY_SET)\r\n                                        \"\r\n                                        class=\"mdi mdi-pencil\"\r\n                                        (click)=\"openModal()\"\r\n                                    ></span>\r\n                                </p>\r\n                                <div class=\"recovered-under-delivery-total-data\">\r\n                                    <div\r\n                                        *ngIf=\"data.orderType === OrderType.UD_LIABILITY_NOT_SET\"\r\n                                        class=\"recovered-under-delivery-value\"\r\n                                    >\r\n                                        -\r\n                                    </div>\r\n                                    <anna-design-key-value\r\n                                        *ngIf=\"data.orderType === OrderType.UD_LIABILITY_SET\"\r\n                                        class=\"ud-liability-section\"\r\n                                        [data]=\"udLiabilityData.keyValue\"\r\n                                    ></anna-design-key-value>\r\n                                </div>\r\n                            </div>\r\n                        </ng-container>\r\n                    </div>\r\n                    <div\r\n                        class=\"row legend-container-graph\"\r\n                        [ngClass]=\"{\r\n                            'order-container pt-12': isSingleOrder,\r\n                            'flex-start-align': !isSingleOrder\r\n                        }\"\r\n                    >\r\n                        <ng-container *ngIf=\"isSingleOrder\">\r\n                            <ng-container *ngIf=\"!showProjection\">\r\n                                <!-- <div\r\n                                    *ngIf=\"data.underDeliveryAtHundredPercent.value\"\r\n                                    class=\"divider\"\r\n                                ></div> -->\r\n                                <anna-design-over-or-under-delivery\r\n                                    class=\"od-ml-orders\"\r\n                                    *ngIf=\"data.underDeliveryAtHundredPercent.value\"\r\n                                    [data]=\"data.underDeliveryAtHundredPercent\"\r\n                                    [isImp]=\"isImpression\"\r\n                                    [isGRP]=\"!isImpression\"\r\n                                ></anna-design-over-or-under-delivery>\r\n                                <div\r\n                                    *ngIf=\"data.underDeliveryAtHundredPercent.value\"\r\n                                    class=\"divider\"\r\n                                ></div>\r\n                                <div *ngIf=\"data.bizRulesAudienceDeliveryLimit\">\r\n                                    <p class=\"recovered-under-delivery-heading\">\r\n                                        {{ constants.deliveryThresholdHeading }}\r\n                                    </p>\r\n                                    <div class=\"recovered-under-delivery-total-data\">\r\n                                        <div class=\"recovered-under-delivery-value\">\r\n                                            {{ data.bizRulesAudienceDeliveryLimit }}%\r\n                                        </div>\r\n                                    </div>\r\n                                </div>\r\n                                <anna-design-over-or-under-delivery\r\n                                    *ngIf=\"data.underDeliveryAtThreshold.value\"\r\n                                    [data]=\"data.underDeliveryAtThreshold\"\r\n                                    [isImp]=\"isImpression\"\r\n                                    [isGRP]=\"!isImpression\"\r\n                                ></anna-design-over-or-under-delivery>\r\n                                <div\r\n                                    class=\"divider\"\r\n                                    *ngIf=\"\r\n                                        data.carryForwardUnderDeliveryLiability.value || data.podBillingReduction.value\r\n                                    \"\r\n                                ></div>\r\n                                <anna-design-over-or-under-delivery\r\n                                    *ngIf=\"data.carryForwardUnderDeliveryLiability.value\"\r\n                                    [data]=\"data.carryForwardUnderDeliveryLiability\"\r\n                                    [isImp]=\"isImpression\"\r\n                                    [isGRP]=\"!isImpression\"\r\n                                ></anna-design-over-or-under-delivery>\r\n\r\n                                <anna-design-over-or-under-delivery\r\n                                    *ngIf=\"data.podBillingReduction.value\"\r\n                                    [data]=\"data.podBillingReduction\"\r\n                                    [isImp]=\"isImpression\"\r\n                                    [isGRP]=\"!isImpression\"\r\n                                ></anna-design-over-or-under-delivery>\r\n                                <div\r\n                                    *ngIf=\"data.overDelivery.value\"\r\n                                    class=\"divider\"\r\n                                ></div>\r\n                                <anna-design-over-or-under-delivery\r\n                                    class=\"od-ml\"\r\n                                    *ngIf=\"data.overDelivery.value\"\r\n                                    [data]=\"data.overDelivery\"\r\n                                    [isOverdelivered]=\"true\"\r\n                                    [isImp]=\"isImpression\"\r\n                                    [isGRP]=\"!isImpression\"\r\n                                    [tooltipMessage]=\"toolTipMessage\"\r\n                                ></anna-design-over-or-under-delivery>\r\n                            </ng-container>\r\n\r\n                            <ng-container *ngIf=\"showProjection\">\r\n                                <!-- <div\r\n                                    class=\"divider\"\r\n                                    *ngIf=\"data.projectedUnderDeliveryAtHundredPercent.value\"\r\n                                ></div> -->\r\n                                <anna-design-over-or-under-delivery\r\n                                    *ngIf=\"data.projectedUnderDeliveryAtHundredPercent.value\"\r\n                                    [data]=\"data.projectedUnderDeliveryAtHundredPercent\"\r\n                                    [isImp]=\"isImpression\"\r\n                                    [isGRP]=\"!isImpression\"\r\n                                ></anna-design-over-or-under-delivery>\r\n                                <div\r\n                                    *ngIf=\"data.projectedUnderDeliveryAtHundredPercent.value\"\r\n                                    class=\"divider\"\r\n                                ></div>\r\n                                <div *ngIf=\"data.bizRulesAudienceDeliveryLimit\">\r\n                                    <p class=\"recovered-under-delivery-heading\">\r\n                                        {{ constants.deliveryThresholdHeading }}\r\n                                    </p>\r\n                                    <div class=\"recovered-under-delivery-total-data\">\r\n                                        <div class=\"recovered-under-delivery-value\">\r\n                                            {{ data.bizRulesAudienceDeliveryLimit }}%\r\n                                        </div>\r\n                                    </div>\r\n                                </div>\r\n\r\n                                <anna-design-over-or-under-delivery\r\n                                    *ngIf=\"data.projectedUnderDeliveryAtThreshold.value\"\r\n                                    [data]=\"data.projectedUnderDeliveryAtThreshold\"\r\n                                    [isImp]=\"isImpression\"\r\n                                    [isGRP]=\"!isImpression\"\r\n                                ></anna-design-over-or-under-delivery>\r\n                                <div\r\n                                    *ngIf=\"\r\n                                        data.projectedCFunderDeliveryLiability.value ||\r\n                                        data.projectedPodBillingReduction.value\r\n                                    \"\r\n                                    class=\"divider\"\r\n                                ></div>\r\n                                <anna-design-over-or-under-delivery\r\n                                    *ngIf=\"data.projectedCFunderDeliveryLiability.value\"\r\n                                    [data]=\"data.projectedCFunderDeliveryLiability\"\r\n                                    [isImp]=\"isImpression\"\r\n                                    [isGRP]=\"!isImpression\"\r\n                                ></anna-design-over-or-under-delivery>\r\n                                <anna-design-over-or-under-delivery\r\n                                    *ngIf=\"data.projectedPodBillingReduction.value\"\r\n                                    [data]=\"data.projectedPodBillingReduction\"\r\n                                    [isImp]=\"isImpression\"\r\n                                    [isGRP]=\"!isImpression\"\r\n                                ></anna-design-over-or-under-delivery>\r\n                                <div\r\n                                    class=\"divider\"\r\n                                    *ngIf=\"data.overDeliveryProjection.value\"\r\n                                ></div>\r\n                                <anna-design-over-or-under-delivery\r\n                                    class=\"od-ml\"\r\n                                    *ngIf=\"data.overDeliveryProjection.value\"\r\n                                    [data]=\"data.overDeliveryProjection\"\r\n                                    [isOverdelivered]=\"true\"\r\n                                    [isImp]=\"isImpression\"\r\n                                    [isGRP]=\"!isImpression\"\r\n                                    [tooltipMessage]=\"toolTipMessage\"\r\n                                ></anna-design-over-or-under-delivery>\r\n                            </ng-container>\r\n                        </ng-container>\r\n                    </div>\r\n\r\n                    <div\r\n                        class=\"additional-data row\"\r\n                        [ngClass]=\"{ 'custom-border-top': !isSingleOrder }\"\r\n                    >\r\n                        <div\r\n                            class=\"od-ud-container ud-ml\"\r\n                            *ngIf=\"!isSingleOrder\"\r\n                        >\r\n                            <ng-container *ngIf=\"showProjection\">\r\n                                <anna-design-over-or-under-delivery\r\n                                    class=\"proj-UD-100 border-right\"\r\n                                    *ngIf=\"data.projectedUnderDeliveryAtHundredPercent\"\r\n                                    [data]=\"data.projectedUnderDeliveryAtHundredPercent\"\r\n                                    [isImp]=\"isImpression\"\r\n                                    [isGRP]=\"!isImpression\"\r\n                                    [showOrderCount]=\"true\"\r\n                                ></anna-design-over-or-under-delivery>\r\n\r\n                                <div\r\n                                    class=\"od-ml-orders\"\r\n                                    [ngClass]=\"{ 'first-item': !data.projectedUnderDeliveryAtHundredPercent }\"\r\n                                >\r\n                                    <p class=\"proj-delivery-threshold recovered-under-delivery-heading\">\r\n                                        {{ constants.deliveryThresholdHeading }}\r\n                                    </p>\r\n                                    <div class=\"recovered-under-delivery-total-data\">\r\n                                        <div class=\"recovered-under-delivery-value\">\r\n                                            {{\r\n                                                data.bizRulesAudienceDeliveryLimit !== null\r\n                                                    ? data.bizRulesAudienceDeliveryLimit + \"%\"\r\n                                                    : \"-\"\r\n                                            }}\r\n                                        </div>\r\n                                    </div>\r\n                                </div>\r\n                                <anna-design-over-or-under-delivery\r\n                                    class=\"od-ml-orders proj-ud border-right\"\r\n                                    *ngIf=\"data.projectedUnderDeliveryAtThreshold\"\r\n                                    [data]=\"data.projectedUnderDeliveryAtThreshold\"\r\n                                    [isImp]=\"isImpression\"\r\n                                    [isGRP]=\"!isImpression\"\r\n                                    [showOrderCount]=\"true\"\r\n                                ></anna-design-over-or-under-delivery>\r\n                                <anna-design-over-or-under-delivery\r\n                                    class=\"od-ml-orders proj-cf-ud\"\r\n                                    *ngIf=\"data.projectedCFunderDeliveryLiability\"\r\n                                    [data]=\"data.projectedCFunderDeliveryLiability\"\r\n                                    [showOrderCount]=\"true\"\r\n                                    [isImp]=\"isImpression\"\r\n                                    [isGRP]=\"!isImpression\"\r\n                                ></anna-design-over-or-under-delivery>\r\n                                <anna-design-over-or-under-delivery\r\n                                    class=\"od-ml-orders proj-pod\"\r\n                                    *ngIf=\"data.projectedPodBillingReduction\"\r\n                                    [data]=\"data.projectedPodBillingReduction\"\r\n                                    [showOrderCount]=\"true\"\r\n                                    [isImp]=\"isImpression\"\r\n                                    [isGRP]=\"!isImpression\"\r\n                                ></anna-design-over-or-under-delivery>\r\n                                <anna-design-over-or-under-delivery\r\n                                    class=\"proj-od border-left\"\r\n                                    [ngClass]=\"{ 'od-ml-orders': data.projectedPodBillingReduction.value }\"\r\n                                    *ngIf=\"data.overDeliveryProjection\"\r\n                                    [data]=\"data.overDeliveryProjection\"\r\n                                    [isOverdelivered]=\"true\"\r\n                                    [isImp]=\"isImpression\"\r\n                                    [isGRP]=\"!isImpression\"\r\n                                    [showOrderCount]=\"true\"\r\n                                    [tooltipMessage]=\"toolTipMessage\"\r\n                                ></anna-design-over-or-under-delivery>\r\n                            </ng-container>\r\n\r\n                            <ng-container *ngIf=\"!showProjection\">\r\n                                <anna-design-over-or-under-delivery\r\n                                    *ngIf=\"data.underDeliveryAtHundredPercent\"\r\n                                    class=\"od-ud-titles-without-projection border-right\"\r\n                                    [data]=\"data.underDeliveryAtHundredPercent\"\r\n                                    [isImp]=\"isImpression\"\r\n                                    [isGRP]=\"!isImpression\"\r\n                                    [showOrderCount]=\"true\"\r\n                                ></anna-design-over-or-under-delivery>\r\n                                <div class=\"od-ml-orders\">\r\n                                    <p class=\"recovered-under-delivery-heading delivery-threshold-heading\">\r\n                                        {{ constants.deliveryThresholdHeading }}\r\n                                    </p>\r\n                                    <div class=\"recovered-under-delivery-total-data\">\r\n                                        <div class=\"recovered-under-delivery-value\">\r\n                                            {{\r\n                                                data.bizRulesAudienceDeliveryLimit !== null\r\n                                                    ? data.bizRulesAudienceDeliveryLimit + \"%\"\r\n                                                    : \"-\"\r\n                                            }}\r\n                                        </div>\r\n                                    </div>\r\n                                </div>\r\n                                <anna-design-over-or-under-delivery\r\n                                    class=\"od-ml-orders od-ud-titles-without-projection border-right\"\r\n                                    *ngIf=\"data.underDeliveryAtThreshold\"\r\n                                    [data]=\"data.underDeliveryAtThreshold\"\r\n                                    [isImp]=\"isImpression\"\r\n                                    [isGRP]=\"!isImpression\"\r\n                                    [showOrderCount]=\"true\"\r\n                                ></anna-design-over-or-under-delivery>\r\n                                <anna-design-over-or-under-delivery\r\n                                    class=\"od-ml-orders\"\r\n                                    *ngIf=\"data.carryForwardUnderDeliveryLiability\"\r\n                                    [data]=\"data.carryForwardUnderDeliveryLiability\"\r\n                                    [isImp]=\"isImpression\"\r\n                                    [isGRP]=\"!isImpression\"\r\n                                    [showOrderCount]=\"true\"\r\n                                    [showOrderCount]=\"true\"\r\n                                ></anna-design-over-or-under-delivery>\r\n                                <anna-design-over-or-under-delivery\r\n                                    class=\"od-ml-orders pod-order\"\r\n                                    *ngIf=\"data.podBillingReduction\"\r\n                                    [data]=\"data.podBillingReduction\"\r\n                                    [showOrderCount]=\"true\"\r\n                                    [isImp]=\"isImpression\"\r\n                                    [isGRP]=\"!isImpression\"\r\n                                ></anna-design-over-or-under-delivery>\r\n                                <anna-design-over-or-under-delivery\r\n                                    class=\"od-ud-titles-without-projection border-left\"\r\n                                    *ngIf=\"data.overDelivery\"\r\n                                    [data]=\"data.overDelivery\"\r\n                                    [isOverdelivered]=\"true\"\r\n                                    [isImp]=\"isImpression\"\r\n                                    [isGRP]=\"!isImpression\"\r\n                                    [showOrderCount]=\"true\"\r\n                                    [tooltipMessage]=\"toolTipMessage\"\r\n                                ></anna-design-over-or-under-delivery>\r\n                            </ng-container>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        </ng-container>\r\n    </ng-container>\r\n\r\n    <div *ngIf=\"loading\">\r\n        <anna-design-skt-loader\r\n            [theme]=\"{ height: '1.5625rem', width: '30%', 'margin-bottom': '1.5rem' }\"\r\n        ></anna-design-skt-loader>\r\n\r\n        <div class=\"row justify-content-between\">\r\n            <div class=\"w-85\">\r\n                <anna-design-skt-loader\r\n                    [theme]=\"{ height: '17.5rem', 'margin-bottom': '1.5rem' }\"\r\n                ></anna-design-skt-loader>\r\n            </div>\r\n            <div class=\"w-15\">\r\n                <div class=\"flex flex-column gap-16\">\r\n                    <ng-container *ngFor=\"let repeat of [1, 2, 3]\">\r\n                        <anna-design-skt-loader\r\n                            [count]=\"1\"\r\n                            [theme]=\"{ height: '1rem' }\"\r\n                        ></anna-design-skt-loader>\r\n                        <anna-design-skt-loader\r\n                            [count]=\"3\"\r\n                            [theme]=\"{ height: '0.5rem' }\"\r\n                        ></anna-design-skt-loader>\r\n                        <anna-design-skt-loader\r\n                            [count]=\"1\"\r\n                            [theme]=\"{ height: '0.5rem', 'margin-bottom': '32px' }\"\r\n                        ></anna-design-skt-loader>\r\n                    </ng-container>\r\n                </div>\r\n            </div>\r\n        </div>\r\n\r\n        <anna-design-skt-loader\r\n            [theme]=\"{ height: '1.5625rem', 'margin-bottom': '1.125rem', 'margin-top': '1.5625rem' }\"\r\n        ></anna-design-skt-loader>\r\n        <div class=\"row\">\r\n            <div\r\n                class=\"col-3\"\r\n                *ngFor=\"let repeat of [1, 2, 3, 4]\"\r\n            >\r\n                <anna-design-skt-loader\r\n                    [count]=\"4\"\r\n                    [theme]=\"{ height: '0.5rem' }\"\r\n                ></anna-design-skt-loader>\r\n            </div>\r\n        </div>\r\n        <ng-container *ngIf=\"!isSingleOrder && !isNeededForRadiant\">\r\n            <anna-design-skt-loader\r\n                [theme]=\"{ height: '1.5625rem', 'margin-bottom': '1.125rem', 'margin-top': '1.5625rem' }\"\r\n            ></anna-design-skt-loader>\r\n            <div class=\"row\">\r\n                <div\r\n                    [ngClass]=\"{ 'ud-loader': showProjection }\"\r\n                    class=\"col-3\"\r\n                    *ngFor=\"let repeat of [1, 2, 3, 4]\"\r\n                >\r\n                    <anna-design-skt-loader\r\n                        [count]=\"4\"\r\n                        [theme]=\"{ height: '0.5rem' }\"\r\n                    ></anna-design-skt-loader>\r\n                </div>\r\n            </div>\r\n        </ng-container>\r\n    </div>\r\n</div>\r\n\r\n<ng-template #projectionMessage>\r\n    <div\r\n        class=\"italic-text projections-message\"\r\n        [ngClass]=\"{ 'mtb-8': isSingleOrder }\"\r\n    >\r\n        <ng-container [ngTemplateOutlet]=\"measurementAgencyMessage\"></ng-container>\r\n\r\n        <ng-container *ngIf=\"data?.postedToDate !== '-'\">\r\n            <!-- All projections are derived from the sum of actual posted information until {{ data?.postedToDate }}\r\n            and estimates for the remaining selected period. -->\r\n            <ul>\r\n                <li>\r\n                    All projections are derived from the sum of actual posted information until\r\n                    <b>{{ data?.postedToDate }}</b>\r\n                    and estimates for the remaining selected period.\r\n                </li>\r\n            </ul>\r\n        </ng-container>\r\n        <ng-container *ngIf=\"data?.postedToDate === '-'\">\r\n            <ul>\r\n                <li>\r\n                    All projections are derived from the sum of actual posted information until the last posted date and\r\n                    estimates for the remaining selected period.\r\n                </li>\r\n            </ul>\r\n            <!-- All projections are derived from the sum of actual posted information until the last posted date and\r\n            estimates for the remaining selected period. -->\r\n        </ng-container>\r\n    </div>\r\n</ng-template>\r\n\r\n<ng-template #tooltipContent>Under-delivery recovered using the spots of this quarter.</ng-template>\r\n\r\n<ng-template #bookedThroughTooltip> The booked data is for posted spots only. </ng-template>\r\n\r\n<ng-template #commercialOrderWithRatingTooltip>\r\n    <!-- Includes orders which have:\r\n    <ul>\r\n        <li>Original Order spots with ratings</li>\r\n        <li>Buyer Added spots with ratings</li>\r\n    </ul> -->\r\n    Includes Orders where audience posting is required as per the business rules.\r\n</ng-template>\r\n\r\n<ng-template #udLiabilityIsSetTooltip> This is the UD liability entered for the order </ng-template>\r\n\r\n<ng-template #udImpactsTooltip>\r\n    <b>UD Impact break-up:</b>\r\n    <ol>\r\n        <li>ADUs provided at no-charge: ${{ data.providedAdusValueForTooltipDisplay }}</li>\r\n        <li\r\n            *ngIf=\"\r\n                showProjection && ((isSingleOrder && data?.projectedCFunderDeliveryLiability?.value) || !isSingleOrder)\r\n            \"\r\n        >\r\n            C/F UD Liability for Pay for Spots(P4S) Orders:\r\n            {{\r\n                data?.projectedCFunderDeliveryLiability?.value\r\n                    ? \"$\" + data.projectedCFunderDeliveryLiability.value.value\r\n                    : \"-\"\r\n            }}\r\n        </li>\r\n        <li\r\n            *ngIf=\"\r\n                !showProjection &&\r\n                ((isSingleOrder && data?.carryForwardUnderDeliveryLiability?.value) || !isSingleOrder)\r\n            \"\r\n        >\r\n            C/F UD Liability for Pay for Spots(P4S) Orders:\r\n            {{\r\n                data?.carryForwardUnderDeliveryLiability?.value\r\n                    ? \"$\" + data.carryForwardUnderDeliveryLiability.value.value\r\n                    : \"-\"\r\n            }}\r\n        </li>\r\n        <li *ngIf=\"showProjection && ((isSingleOrder && data?.projectedPodBillingReduction?.value) || !isSingleOrder)\">\r\n            Billing reduction for PoD orders:\r\n            {{ data?.projectedPodBillingReduction?.value ? \"$\" + data.projectedPodBillingReduction.value.value : \"-\" }}\r\n        </li>\r\n        <li *ngIf=\"!showProjection && ((isSingleOrder && data?.podBillingReduction?.value) || !isSingleOrder)\">\r\n            Billing reduction for PoD orders:\r\n            {{ data?.podBillingReduction?.value ? \"$\" + data.podBillingReduction.value.value : \"-\" }}\r\n        </li>\r\n    </ol>\r\n</ng-template>\r\n<ng-template #unrealizableDollarValue>\r\n    <b>Unrealizable $ value:</b>\r\n    <ol>\r\n        <li>C/F Liability for Pay for Spots(P4S) Orders.</li>\r\n        <li>Billing Reduction due to UD for PoD orders.</li>\r\n    </ol>\r\n</ng-template>\r\n\r\n<ng-template\r\n    #liabilityModal\r\n    let-modal\r\n>\r\n    <anna-feature-liability-modal\r\n        [orderMetric]=\"metricTypeForPopup\"\r\n        [liabilityValue]=\"liabilityForPopup\"\r\n        [orderType]=\"orderTypeForPopup\"\r\n        (cancel)=\"closeModal()\"\r\n        (save)=\"saveLiability($event)\"\r\n    >\r\n    </anna-feature-liability-modal>\r\n</ng-template>\r\n\r\n<ng-template\r\n    #graphLegendTemplate\r\n    let-legendData=\"legendData\"\r\n>\r\n    <ng-container *ngFor=\"let legend of legendData\">\r\n        <div class=\"p-0\">\r\n            <span\r\n                class=\"dot\"\r\n                [ngStyle]=\"{ 'background-color': legend.legendDotColor }\"\r\n            ></span>\r\n            {{ legend.legendName }}\r\n            <i\r\n                class=\"mi mdi-info-outline info-icon\"\r\n                *ngIf=\"legend.legendName === constants.airedThrough\"\r\n                #t=\"ngbTooltip\"\r\n                [ngbTooltip]=\"bookedThroughTooltip\"\r\n                placement=\"bottom\"\r\n                tooltipClass=\"custom-tooltip booked-tooltip\"\r\n            >\r\n            </i>\r\n            <anna-design-key-value [data]=\"legend.legendMetaData\">\r\n                <i\r\n                    class=\"mi mdi-info-outline ud-liability-info-icon\"\r\n                    *ngIf=\"\r\n                        showLiabilitySection &&\r\n                        data.orderType === OrderType.UD_LIABILITY_SET &&\r\n                        (legend.legendName === 'Booked' || legend.legendName === 'Booked through ')\r\n                    \"\r\n                    #t=\"ngbTooltip\"\r\n                    [ngbTooltip]=\"udLiabilityIsSetTooltip\"\r\n                    placement=\"bottom\"\r\n                    tooltipClass=\"custom-tooltip\"\r\n                >\r\n                </i>\r\n            </anna-design-key-value>\r\n        </div>\r\n    </ng-container>\r\n</ng-template>\r\n\r\n<ng-template #measurementAgencyMessage>\r\n    @if (measurementAgency() === MeasurementAgencyInOrderSummary.NielsenSweeps ||\r\n         measurementAgency() === MeasurementAgencyInOrderSummary.Comscore) {\r\n        <ul>\r\n            <li>\r\n                @if (measurementAgency() === MeasurementAgencyInOrderSummary.NielsenSweeps) {\r\n                    ANNA is using Sweeps and Skewed HH overnights data wherever applicable.\r\n                } @else if (measurementAgency() === MeasurementAgencyInOrderSummary.Comscore) {\r\n                    ANNA is using Pulse data and actual Persons data wherever applicable.\r\n                }\r\n            </li>\r\n        </ul>\r\n    }\r\n</ng-template>\r\n","import { Injectable } from \"@angular/core\";\r\n\r\n@Injectable({\r\n    providedIn: \"root\",\r\n})\r\nexport class BillingReportService {\r\n    static measurementName: \"GRP\" | \"IMP\";\r\n    public static getDataAsPerBillingPeriod(totalBillingPeriodData: any) {\r\n        const billingList: any[] = [];\r\n        const data = totalBillingPeriodData.find((x: any) => x.isCurrentBillingPeriod);\r\n        if (data) {\r\n            billingList.push(data);\r\n        }\r\n        // eslint-disable-next-line max-len\r\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\r\n        else {\r\n            billingList.push(totalBillingPeriodData[0]);\r\n        }\r\n        return billingList;\r\n    }\r\n}\r\n","import dayjs from \"dayjs\";\r\n\r\nimport { BillingReportService } from \"../services/billing-report-table.service\";\r\n\r\nexport type OrderInfoType = { stationId: string; order: string; isEquivalisedData: boolean };\r\n\r\nexport class SpotValuGrpImp {\r\n    spot: string;\r\n    value: string;\r\n    grp: string;\r\n    imps: string;\r\n    constructor(obj: any) {\r\n        this.spot = obj.Spots;\r\n        this.value = obj.Value;\r\n        this.grp = obj.GRP;\r\n        this.imps = obj.IMP;\r\n    }\r\n}\r\n\r\nexport class SpotValuGrpImpCppCpm extends SpotValuGrpImp {\r\n    cpm: string;\r\n    cpp: string;\r\n    constructor(obj: any) {\r\n        super(obj);\r\n        this.cpp = obj.CPP;\r\n        this.cpm = obj.CPM;\r\n    }\r\n}\r\n\r\nexport class ActualSpotValueGrpImp {\r\n    actualSpot: number;\r\n    actualValue: number;\r\n    actualGrp: number;\r\n    actualImps: number;\r\n}\r\n\r\nexport interface ActualSpotValueGrpImpCppCpm extends ActualSpotValueGrpImp {\r\n    actualCpm: number;\r\n    actualCpp: number;\r\n}\r\n\r\nexport class ActualAndDisplaySpotValueGrpImp extends SpotValuGrpImp {\r\n    actualSpot: number;\r\n    actualValue: number;\r\n    actualGrp: number;\r\n    actualImps: number;\r\n    constructor(obj: any) {\r\n        super(obj);\r\n        this.actualSpot = obj.ActualSpots;\r\n        this.actualValue = obj.ActualValue;\r\n        this.actualGrp = obj.ActualGRP;\r\n        this.actualImps = obj.ActualIMP;\r\n    }\r\n}\r\n\r\nexport class ActualAndDisplaySpotValueGrpImpCppCpm extends ActualAndDisplaySpotValueGrpImp {\r\n    cpm: string;\r\n    cpp: string;\r\n    actualCpm: number;\r\n    actualCpp: number;\r\n    constructor(obj: any) {\r\n        super(obj);\r\n        this.cpp = obj.CPP;\r\n        this.cpm = obj.CPM;\r\n        this.actualCpp = obj.ActualCPP;\r\n        this.actualCpm = obj.ActualCPM;\r\n    }\r\n}\r\n\r\nexport class Liability {\r\n    value: string;\r\n    UDGRP: string;\r\n    UDIMPS: string;\r\n    UDLiabilityGrp: string;\r\n    UDLiabilityImps: string;\r\n    ODGRP: string;\r\n    ODIMPS: string;\r\n\r\n    constructor(obj: any) {\r\n        this.value = obj.Value;\r\n        this.UDGRP = obj.UDGRP;\r\n        this.UDIMPS = obj.UDIMPS;\r\n        this.UDLiabilityGrp = obj.UDLiabilityGrp;\r\n        this.UDLiabilityImps = obj.UDLiabilityImps;\r\n        this.ODGRP = obj.ODGRP;\r\n        this.ODIMPS = obj.ODIMPS;\r\n    }\r\n}\r\n\r\nexport interface BillingReportTableMissingPostedDataRequestPayload {\r\n    StationId: number;\r\n    Demographs: string[];\r\n    StartDate: string;\r\n    EndDate: string;\r\n}\r\n\r\nexport class WeeklySpotResponse {\r\n    latestRevisionNo: number;\r\n    // measurementName: \"GRP\" | \"IMP('000)\";\r\n    isPayForPerformanceOrder: boolean;\r\n    isCompletedOrder: boolean;\r\n    totalOriginal: SpotValuGrpImpCppCpm;\r\n    totalRevised: SpotValuGrpImpCppCpm;\r\n    totalProjectedDeliveryWithoutADUSpots: SpotValuGrpImp;\r\n    totalProjectedDeliveryWithADUSpots: SpotValuGrpImp;\r\n    totalLiabilityData: Liability;\r\n    totalBillableToDate: SpotValuGrpImp;\r\n    totalNetAmount: string;\r\n    totalAgencyCommissionOnBillableAmount: string;\r\n    totalBillingPeriodWiseSummaryData: TotalBillingData[] = [];\r\n    dropdownSelectedBillingWiseData: TotalBillingData[] = [];\r\n    selectedBillingPeriod: { id: number; text: string };\r\n    demographs: string[];\r\n    postedToDate: string;\r\n\r\n    constructor(data: any) {\r\n        this.latestRevisionNo = data.LatestRevisionNumber;\r\n        this.isPayForPerformanceOrder = data.IsPayPerPerformanceOrder === 1;\r\n        // BillingReportService.measurementName = data.MeasurementName;\r\n        // this.measurementName = data.MeasurementName==\"Impressions\"?\"IMP('000)\":\"GRP\";\r\n        this.totalOriginal = new SpotValuGrpImpCppCpm(data.TotalOriginal);\r\n        this.totalRevised = new SpotValuGrpImpCppCpm(data.TotalRevised);\r\n        this.totalBillableToDate = new SpotValuGrpImp(data.TotalBillableToDate);\r\n        this.totalProjectedDeliveryWithoutADUSpots = new SpotValuGrpImp(data.TotalProjectedDeliveryWithoutADUSpots);\r\n        this.totalProjectedDeliveryWithADUSpots = new SpotValuGrpImp(data.TotalProjectedDeliveryWithADUSpots);\r\n        this.totalLiabilityData = new Liability(data.TotalLiabilityData);\r\n        this.totalNetAmount = data.TotalNetAmount;\r\n        this.isCompletedOrder = data.IsCompletedOrder;\r\n        this.totalAgencyCommissionOnBillableAmount = data.TotalAgencyCommissionOnBillableAmount;\r\n        // this.postingType = data.PostingType ? data.PostingType : '-';\r\n        data.BillingPlanSummary.forEach((item: any, index: any) => {\r\n            this.totalBillingPeriodWiseSummaryData.push(new TotalBillingData(item, index));\r\n        });\r\n\r\n        this.dropdownSelectedBillingWiseData = BillingReportService.getDataAsPerBillingPeriod(\r\n            this.totalBillingPeriodWiseSummaryData,\r\n        );\r\n        this.selectedBillingPeriod = {\r\n            id: this.dropdownSelectedBillingWiseData[0]?.id,\r\n            text: this.dropdownSelectedBillingWiseData[0]?.billingPeriod,\r\n        };\r\n\r\n        this.demographs = data.Demographs;\r\n        this.postedToDate = data.postedToDate;\r\n    }\r\n}\r\n\r\nexport class TotalBillingData {\r\n    id: number;\r\n    billingPeriod: string;\r\n    startDate: string;\r\n    endDate: string;\r\n    isCurrentBillingPeriod: boolean;\r\n    totalAgencyCommissionOnBillableAmount: string;\r\n    netAmount: string;\r\n    totalOriginal: SpotValuGrpImpCppCpm;\r\n    totalRevised: SpotValuGrpImpCppCpm;\r\n    totalBillable: SpotValuGrpImp;\r\n    projectedDeliveryWithoutAdu: SpotValuGrpImp;\r\n    projectedDeliveryAdu: SpotValuGrpImp;\r\n    liability: Liability;\r\n    postedInfoAvailableForAllAiredSpots: boolean;\r\n\r\n    constructor(data: any, index: number) {\r\n        this.id = index;\r\n        this.startDate = data.StartDate;\r\n        this.endDate = data.EndDate;\r\n        // eslint-disable-next-line max-len\r\n        this.billingPeriod = `${dayjs(this.startDate, \"YYYY/MM/DD\").format(\"DD MMM YYYY\")} - ${dayjs(this.endDate, \"YYYY/MM/DD\").format(\"DD MMM YYYY\")}`;\r\n        this.isCurrentBillingPeriod = data.IsCurrentBillingPeriod;\r\n        this.postedInfoAvailableForAllAiredSpots = data.PostedInfoAvailableForAllAiredSpots;\r\n        this.totalAgencyCommissionOnBillableAmount = data.TotalAgencyCommissionOnBillableAmount;\r\n        this.netAmount = data.NetAmount;\r\n\r\n        this.totalOriginal = new SpotValuGrpImpCppCpm(data.Original);\r\n        this.totalRevised = new SpotValuGrpImpCppCpm(data.Revised);\r\n        this.totalBillable = new SpotValuGrpImp(data.BillableToDate);\r\n        this.projectedDeliveryWithoutAdu = new SpotValuGrpImp(data.ProjectedDeliveryWithoutADUSpots);\r\n        this.projectedDeliveryAdu = new SpotValuGrpImp(data.ProjectedDeliveryWithADUSpots);\r\n        this.liability = new Liability(data.Liability);\r\n    }\r\n}\r\n\r\n// export class LineDetails {\r\n//   lineNumber: number;\r\n//   hidden: boolean;\r\n//   lineDetail: LineDetail[] = [];\r\n\r\n//   constructor(object) {\r\n//     this.lineNumber = object.LineNumber;\r\n//     this.hidden = true;\r\n//     object.LineData.forEach((item) => {\r\n//       this.lineDetail.push(new LineDetail(item));\r\n//     });\r\n//   }\r\n// }\r\n\r\nexport class TotalBillingPeriodWiseData {\r\n    id: number;\r\n    billingPeriod: string;\r\n    startDate: string;\r\n    endDate: string;\r\n    isCurrentBillingPeriod: boolean;\r\n    original: ActualAndDisplaySpotValueGrpImpCppCpm;\r\n    revised: ActualAndDisplaySpotValueGrpImpCppCpm;\r\n    projectedDeliveryWithoutAdu: ActualAndDisplaySpotValueGrpImp;\r\n    projectedDeliveryAdu: ActualAndDisplaySpotValueGrpImp;\r\n    billableToDateValue: string;\r\n\r\n    constructor(data: any, index: number) {\r\n        this.id = index;\r\n        this.startDate = data.StartDate;\r\n        this.endDate = data.EndDate;\r\n        this.isCurrentBillingPeriod = data.IsCurrentBillingPeriod;\r\n        // eslint-disable-next-line max-len\r\n        this.billingPeriod = `${dayjs(this.startDate, \"YYYY/MM/DD\").format(\"DD MMM YYYY\")} - ${dayjs(this.endDate, \"YYYY/MM/DD\").format(\"DD MMM YYYY\")}`;\r\n\r\n        this.original = new ActualAndDisplaySpotValueGrpImpCppCpm(data.Original);\r\n        this.revised = new ActualAndDisplaySpotValueGrpImpCppCpm(data.Revised);\r\n        this.projectedDeliveryWithoutAdu = new ActualAndDisplaySpotValueGrpImp(data.ProjectedDeliveryWithoutADUSpots);\r\n        this.projectedDeliveryAdu = new ActualAndDisplaySpotValueGrpImp(data.ProjectedDeliveryWithADUSpots);\r\n\r\n        this.billableToDateValue = data.BillableToDateValue[0] === \"-\" ? \"-\" : data.BillableToDateValue[1];\r\n    }\r\n}\r\n\r\nexport class BillingViewDetails {\r\n    latestRevisionNo: number;\r\n    postingType: string;\r\n    isPayForPerformanceOrder: boolean;\r\n    billingPeriod: BillingPeriodLineInfo[] = [];\r\n    constructor(data: any) {\r\n        this.latestRevisionNo = data?.LatestRevisionNumber;\r\n        this.postingType = data?.PostingType;\r\n        this.isPayForPerformanceOrder = data?.IsPayPerPerformanceOrder;\r\n        data?.BillingPeriods.forEach((billingPeriod: any, index: number) => {\r\n            this.billingPeriod.push(new BillingPeriodLineInfo(billingPeriod, index));\r\n        });\r\n    }\r\n}\r\nexport class BillingPeriodLineInfo {\r\n    id: number;\r\n    startDate: string;\r\n    endDate: string;\r\n    isCurrentBillingPeriod: boolean;\r\n    totalOriginal: SpotValuGrpImpCppCpm;\r\n    totalRevised: SpotValuGrpImpCppCpm;\r\n    totalProjectedDeliveryWithoutADUSpots: SpotValuGrpImp;\r\n    totalProjectedDeliveryWithADUSpots: SpotValuGrpImp;\r\n    totalBillableToDateValue: string;\r\n    billingPeriod: string;\r\n    lines: LineInfo[] = [];\r\n    constructor(data: any, index: number) {\r\n        this.startDate = data.StartDate;\r\n        this.endDate = data.EndDate;\r\n        this.id = index;\r\n        this.startDate = data.StartDate;\r\n        this.endDate = data.EndDate;\r\n        this.isCurrentBillingPeriod = data.IsCurrentBillingPeriod;\r\n        this.billingPeriod = `${dayjs(this.startDate, \"YYYY/MM/DD\").format(\"DD MMM YYYY\")} - ${dayjs(this.endDate, \"YYYY/MM/DD\").format(\"DD MMM YYYY\")}`;\r\n        this.totalOriginal = new SpotValuGrpImpCppCpm(data.TotalOriginal);\r\n        this.totalRevised = new SpotValuGrpImpCppCpm(data.TotalRevised);\r\n        this.totalProjectedDeliveryWithADUSpots = new SpotValuGrpImp(data.TotalProjectedDeliveryWithADUSpots);\r\n        this.totalProjectedDeliveryWithoutADUSpots = new SpotValuGrpImp(data.TotalProjectedDeliveryWithoutADUSpots);\r\n        this.totalBillableToDateValue = data.TotalBillableToDateValue ? data.TotalBillableToDateValue : \"-\";\r\n        data?.Lines.forEach((lines: any) => {\r\n            this.lines.push(new LineInfo(lines));\r\n        });\r\n    }\r\n}\r\n\r\nexport class GenericLineInfo {\r\n    lineNumber: number;\r\n    original: ActualAndDisplaySpotValueGrpImpCppCpm;\r\n    revisedToDate: ActualAndDisplaySpotValueGrpImpCppCpm;\r\n    projectedDeliveryWithoutAdu: ActualAndDisplaySpotValueGrpImp;\r\n    projectedDeliveryAdu: ActualAndDisplaySpotValueGrpImp;\r\n    billableToDateValue: string;\r\n    inventoryCode: string;\r\n    programName: string;\r\n    programList: string[];\r\n    days: string;\r\n    len: string;\r\n    rate: number;\r\n    time: string;\r\n    cpp: number;\r\n    cpm: number;\r\n    postedInfoAvailableForAllAiredSpots: boolean;\r\n    constructor(data: any) {\r\n        this.lineNumber = data.LineNumber;\r\n        this.days = data.Days;\r\n        this.len = data.Length;\r\n        this.inventoryCode = data.InventoryCodeSellerProgramMap?.length\r\n            ? data.InventoryCodeSellerProgramMap[0].InventoryCode[0] ?? \"-\"\r\n            : \"-\";\r\n        this.programName = data.InventoryCodeSellerProgramMap?.length\r\n            ? data.InventoryCodeSellerProgramMap[0].SellerProgramName[0] ?? \"-\"\r\n            : \"-\";\r\n\r\n        this.programList = data.InventoryCodeSellerProgramMap?.length\r\n            ? data.InventoryCodeSellerProgramMap[0].SellerProgramName.slice(1)\r\n            : [];\r\n\r\n        this.rate = data.Rate;\r\n\r\n        this.original = new ActualAndDisplaySpotValueGrpImpCppCpm(data.Original);\r\n        this.revisedToDate = new ActualAndDisplaySpotValueGrpImpCppCpm(data.Revised);\r\n        // this.cpp = this.revisedToDate.cpp;\r\n        // this.cpm = this.revisedToDate.cpp;\r\n        this.projectedDeliveryWithoutAdu = new ActualAndDisplaySpotValueGrpImp(data.ProjectedDeliveryWithoutADUSpots);\r\n        this.projectedDeliveryAdu = new ActualAndDisplaySpotValueGrpImp(data.ProjectedDeliveryWithADUSpots);\r\n\r\n        this.billableToDateValue = data.BillableToDateValue[0] === \"-\" ? \"-\" : data.BillableToDateValue[1];\r\n        this.postedInfoAvailableForAllAiredSpots = data.PostedInfoAvailableForAllAiredSpots;\r\n\r\n        this.cpp = data.CPP;\r\n        this.cpm = data.CPM;\r\n    }\r\n}\r\nexport class LineInfo extends GenericLineInfo {\r\n    hidden: boolean;\r\n    subLines: GenericLineInfo[] = [];\r\n    constructor(data: any) {\r\n        super(data);\r\n        this.hidden = true;\r\n        data?.SubLineData?.forEach((subLine: any) => {\r\n            this.subLines.push(new GenericLineInfo(subLine));\r\n        });\r\n    }\r\n}\r\nexport class SalesUnit {\r\n    line_number: number;\r\n    inventory_code: string;\r\n    selling_title: string;\r\n    start_end_date: string;\r\n    length: string;\r\n    rate: string;\r\n    order_amount: string;\r\n    spot_played_till_date: string;\r\n    amount_till_date: string;\r\n    date_wise_data: SpotSummary[] = [];\r\n    constructor(object: any) {\r\n        this.line_number = object.line_number;\r\n        this.inventory_code = object.inventory_code;\r\n        this.selling_title = object.selling_title;\r\n        this.start_end_date = object.start_end_date;\r\n        this.length = object.length;\r\n        this.rate = object.rate;\r\n        this.order_amount = object.order_amount;\r\n        this.spot_played_till_date = object.spot_played_till_date;\r\n        this.amount_till_date = object.amount_till_date;\r\n        object.spot_summary.forEach((item: any) => {\r\n            const spotSummary = new SpotSummary(item);\r\n            this.date_wise_data.push(spotSummary);\r\n        });\r\n    }\r\n}\r\n// export class SalesUnit {\r\n//     line_number: number;\r\n//     selling_title: string;\r\n//     start_end_date: string;\r\n//     days: string;\r\n//     isci: string;\r\n//     inventory_code: string;\r\n//     length: string;\r\n//     rate: string;\r\n//     order_amount: string;\r\n//     spot_played_till_date: string;\r\n//     amount_till_date: string;\r\n//     spot_summary: SpotSummary[] = [];\r\n//     constructor(object) {\r\n//         this.line_number = object.line_number;\r\n//         this.selling_title = object.selling_title;\r\n//         this.start_end_date = object.start_end_date;\r\n//         this.days = object.days;\r\n//         this.isci = object.isci;\r\n//         this.inventory_code = object.inventory_code;\r\n//         this.length = object.length;\r\n//         this.rate = object.rate;\r\n//         this.order_amount = object.order_amount;\r\n//         this.spot_played_till_date = object.spot_played_till_date;\r\n//         this.amount_till_date = object.amount_till_date;\r\n//         object.spot_summary.forEach(item => {\r\n//             let spotSummary = new SpotSummary(item);\r\n//             this.spot_summary.push(spotSummary);\r\n//         });\r\n//     }\r\n// }\r\n\r\nexport class SpotSummary {\r\n    date: string;\r\n    original: number;\r\n    revision: number;\r\n    played: number;\r\n    constructor(object: any) {\r\n        this.date = object.date;\r\n        this.original = object.original;\r\n        this.revision = object.revision;\r\n        this.played = object.played;\r\n    }\r\n}\r\n","/* eslint-disable max-len */\r\nimport { CurrencyPipe, DecimalPipe, NgClass, NgFor, NgIf, NgStyle, NgTemplateOutlet } from \"@angular/common\";\r\nimport { ChangeDetectionStrategy, Component, Input, OnChanges, OnInit, SimpleChanges } from \"@angular/core\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport {\r\n    AnnaCoreModule,\r\n    AnnaGlobalConfigService,\r\n    ICustomSingleSelect,\r\n    ShowEllipsisTextOnHoverDirective,\r\n} from \"@annalib/anna-core\";\r\nimport { AnnaDesignComponentsLibModule, IdText } from \"@annalib/anna-design-components-lib\";\r\nimport { OrderMetrics, PrimaryOrderPanelService } from \"@annalib/anna-feature-shared-lib\";\r\nimport { NgbTooltip } from \"@ng-bootstrap/ng-bootstrap\";\r\n\r\nimport {\r\n    BillingPeriodLineInfo,\r\n    SpotValuGrpImp,\r\n    SpotValuGrpImpCppCpm,\r\n} from \"../billing-report-table/models/billing-report-table.model\";\r\n\r\n@Component({\r\n    selector: \"anna-feature-billing-details-table\",\r\n    templateUrl: \"./billing-details-table.component.html\",\r\n    styleUrls: [\"./billing-details-table.component.scss\"],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    imports: [\r\n        NgClass,\r\n        NgIf,\r\n        AnnaDesignComponentsLibModule,\r\n        FormsModule,\r\n        NgTemplateOutlet,\r\n        NgFor,\r\n        NgbTooltip,\r\n        NgStyle,\r\n        DecimalPipe,\r\n        CurrencyPipe,\r\n        AnnaCoreModule,\r\n        NgTemplateOutlet,\r\n        ShowEllipsisTextOnHoverDirective,\r\n    ]\r\n})\r\nexport class BillingDetailsTableComponent implements OnChanges, OnInit {\r\n    // @Input() data: WeeklySpotResponse;\r\n    @Input() loading: boolean;\r\n    @Input() stationName: string;\r\n    @Input() logoImageUrl: string;\r\n    @Input() latestRevisionNo: number;\r\n    @Input() postingType: string;\r\n    @Input() isPayForPerformance: boolean;\r\n    @Input() allBillingPeriodList: BillingPeriodLineInfo[];\r\n    @Input() selectedBillingPeriod: BillingPeriodLineInfo;\r\n    @Input() isEquivalized: boolean;\r\n    @Input() orderId: string;\r\n    @Input() metric: string = \"GRP\";\r\n    cppOrCpm: \"CPP($)\" | \"CPM($)\";\r\n    currencyUnit = \"USD\";\r\n    numberOfSkeletonRows = Array(15).fill(0);\r\n    numberOfSkeletonCols = Array(10).fill(0);\r\n    borderClass: string = null;\r\n\r\n    totalRow: {\r\n        totalOriginal: {\r\n            actualSpot: string;\r\n            actualValue: string;\r\n            actualGrp: string;\r\n            actualImps: string;\r\n            actualCpp: string;\r\n            actualCpm: string;\r\n        };\r\n        totalRevised: {\r\n            actualSpot: string;\r\n            actualValue: string;\r\n            actualGrp: string;\r\n            actualImps: string;\r\n            actualCpp: string;\r\n            actualCpm: string;\r\n        };\r\n        totalProjectedDeliveryWithoutAdu: {\r\n            actualSpot: string;\r\n            actualValue: string;\r\n            actualGrp: string;\r\n            actualImps: string;\r\n        };\r\n        totalProjectedDeliveryAdu: { actualSpot: string; actualValue: string; actualGrp: string; actualImps: string };\r\n        totalBillableValue: number | string;\r\n    };\r\n    // totalRow: {\r\n    //   totalOriginal: ActualSpotValueGrpImpCppCpm,\r\n    //   totalRevised: ActualSpotValueGrpImpCppCpm,\r\n    //   totalProjectedDeliveryWithoutAdu: ActualSpotValueGrpImp,\r\n    //   totalProjectedDeliveryAdu: ActualSpotValueGrpImp,\r\n    //   totalBillableValue: number | string\r\n    // };\r\n    orderMetrics: IdText[];\r\n    metricDropdownConfig: ICustomSingleSelect;\r\n    selectedMetric: IdText;\r\n    selectedKeys: {\r\n        grporImps: \"grp\" | \"imps\";\r\n        cpporCpm: \"cpp\" | \"cpm\";\r\n        actualGrporImps: \"actualGrp\" | \"actualImps\";\r\n        actualCpporCpm: \"actualCpp\" | \"actualCpm\";\r\n    };\r\n    disableDropDown: boolean;\r\n    showTotalRow: boolean = true;\r\n    showOrHideToggleForTotalRow: boolean = true;\r\n    isExpandRowsChecked: boolean = false;\r\n    disableExpandCheckbox: boolean = true;\r\n\r\n    constructor(\r\n        private primaryOrderPanelService: PrimaryOrderPanelService,\r\n        private annaGlobalConfig: AnnaGlobalConfigService,\r\n    ) {\r\n        this.setDropDownData();\r\n    }\r\n    ngOnInit() {\r\n        this.calculateTopPositionOfScrollBar();\r\n    }\r\n\r\n    ngOnChanges(changes: SimpleChanges) {\r\n        if (changes?.selectedBillingPeriod && changes.selectedBillingPeriod?.currentValue) {\r\n            this.setBorderBottomForTable(changes.selectedBillingPeriod.currentValue);\r\n            this.enableDisableExpandRowCheckbox();\r\n            this.createTotalRow();\r\n            this.disableDropDown = !this.selectedBillingPeriod && this.selectedBillingPeriod.lines.length === 0;\r\n        }\r\n        if (changes.metric && changes.metric.currentValue) {\r\n            this.metricChanged(this.orderMetrics.find((m) => m.text === this.metric));\r\n        }\r\n    }\r\n\r\n    setBorderBottomForTable(data: BillingPeriodLineInfo) {\r\n        const viewportHeight = window.innerHeight;\r\n        const dataOnTopHeight = 218;\r\n        const marginFromBottom = 45;\r\n        const maxHeightOfRow = 45;\r\n        const headerHeight = 45;\r\n\r\n        const heightLeftForTable = viewportHeight - dataOnTopHeight - marginFromBottom;\r\n        const maximumRowsThatCanBeRenderedWithoutScrollBar =\r\n            Math.ceil((heightLeftForTable - headerHeight - maxHeightOfRow) / maxHeightOfRow) + 1;\r\n        if (data?.lines?.length && maximumRowsThatCanBeRenderedWithoutScrollBar <= data?.lines?.length) {\r\n            this.borderClass = \"bottom-border\";\r\n        } else {\r\n            this.borderClass = null;\r\n        }\r\n    }\r\n\r\n    createTotalRow() {\r\n        this.totalRow = {\r\n            totalOriginal: {\r\n                actualSpot: null,\r\n                actualValue: null,\r\n                actualGrp: null,\r\n                actualImps: null,\r\n                actualCpp: null,\r\n                actualCpm: null,\r\n            },\r\n            totalRevised: {\r\n                actualSpot: null,\r\n                actualValue: null,\r\n                actualGrp: null,\r\n                actualImps: null,\r\n                actualCpp: null,\r\n                actualCpm: null,\r\n            },\r\n            totalProjectedDeliveryWithoutAdu: {\r\n                actualSpot: null,\r\n                actualValue: null,\r\n                actualGrp: null,\r\n                actualImps: null,\r\n            },\r\n            totalProjectedDeliveryAdu: { actualSpot: null, actualValue: null, actualGrp: null, actualImps: null },\r\n            totalBillableValue: null,\r\n        };\r\n        // this.data.totalBillingPeriodWiseSummaryData.forEach((summaryData: TotalBillingData) => {\r\n        //     if (summaryData.billingPeriod == this.selectedBillingPeriod?.text) {\r\n        //         this.totalRow.totalOriginal = this.sumValueWithCppCpm(summaryData.totalOriginal);\r\n        //         this.totalRow.totalRevised = this.sumValueWithCppCpm(summaryData.totalRevised);\r\n        //         this.totalRow.totalBillableValue = summaryData.totalBillable.value;\r\n        //         this.totalRow.totalProjectedDeliveryWithoutAdu = this.sumValue(summaryData.projectedDeliveryWithoutAdu);\r\n        //         this.totalRow.totalProjectedDeliveryAdu = this.sumValue(summaryData.projectedDeliveryAdu);\r\n        //     }\r\n        // });\r\n        this.totalRow.totalOriginal = this.sumValueWithCppCpm(this.selectedBillingPeriod.totalOriginal);\r\n        this.totalRow.totalRevised = this.sumValueWithCppCpm(this.selectedBillingPeriod.totalRevised);\r\n        this.totalRow.totalBillableValue = this.selectedBillingPeriod.totalBillableToDateValue;\r\n        this.totalRow.totalProjectedDeliveryWithoutAdu = this.sumValue(\r\n            this.selectedBillingPeriod.totalProjectedDeliveryWithoutADUSpots,\r\n        );\r\n        this.totalRow.totalProjectedDeliveryAdu = this.sumValue(\r\n            this.selectedBillingPeriod.totalProjectedDeliveryWithADUSpots,\r\n        );\r\n        this.calculateTopPositionOfScrollBar();\r\n    }\r\n\r\n    sumValue(eachLine: SpotValuGrpImp): {\r\n        actualSpot: string;\r\n        actualValue: string;\r\n        actualGrp: string;\r\n        actualImps: string;\r\n    } {\r\n        return {\r\n            actualValue: eachLine.value,\r\n            actualSpot: eachLine.spot,\r\n            actualGrp: eachLine.grp,\r\n            actualImps: eachLine.imps,\r\n        };\r\n    }\r\n\r\n    sumValueWithCppCpm(eachLine: SpotValuGrpImpCppCpm): {\r\n        actualSpot: string;\r\n        actualValue: string;\r\n        actualGrp: string;\r\n        actualImps: string;\r\n        actualCpp: string;\r\n        actualCpm: string;\r\n    } {\r\n        return {\r\n            actualValue: eachLine.value,\r\n            actualSpot: eachLine.spot,\r\n            actualGrp: eachLine.grp,\r\n            actualImps: eachLine.imps,\r\n            actualCpp: eachLine.cpp,\r\n            actualCpm: eachLine.cpm,\r\n        };\r\n    }\r\n\r\n    hideorShowTd(index: number) {\r\n        this.selectedBillingPeriod.lines[index].hidden = !this.selectedBillingPeriod.lines[index].hidden;\r\n        // this.data.line[index].hidden = !this.data.line[index].hidden;\r\n    }\r\n    expandRowsClicked() {\r\n        this.isExpandRowsChecked = !this.isExpandRowsChecked;\r\n        this.expandAllRows();\r\n    }\r\n\r\n    expandAllRows() {\r\n        this.selectedBillingPeriod.lines.forEach((row) => {\r\n            if (row.subLines.length > 0) {\r\n                row.hidden = !this.isExpandRowsChecked;\r\n            }\r\n        });\r\n    }\r\n\r\n    enableDisableExpandRowCheckbox(): void {\r\n        this.disableExpandCheckbox = !this.selectedBillingPeriod.lines.some((row) => row.subLines.length > 0);\r\n        if (this.disableExpandCheckbox) this.isExpandRowsChecked = false;\r\n    }\r\n\r\n    selectNextOrPreviousPeriod(isNextPeriod: boolean) {\r\n        /** if disable condition - then click not allowed */\r\n        if (\r\n            (this.selectedBillingPeriod.id === 0 && !isNextPeriod) ||\r\n            (this.selectedBillingPeriod.id === this.allBillingPeriodList.length - 1 && isNextPeriod)\r\n        ) {\r\n            return;\r\n        }\r\n        const index = this.allBillingPeriodList.findIndex((x) => x.id === this.selectedBillingPeriod.id);\r\n        if (isNextPeriod) {\r\n            //  this.setEachWeekData(isNextOrder);\r\n            this.selectedBillingPeriod = this.allBillingPeriodList[index + 1];\r\n            this.createTotalRow();\r\n            this.enableDisableExpandRowCheckbox();\r\n            this.expandAllRows();\r\n        } else {\r\n            //   this.setEachWeekData(isNextOrder);\r\n            this.selectedBillingPeriod = this.allBillingPeriodList[index - 1];\r\n            this.createTotalRow();\r\n            this.enableDisableExpandRowCheckbox();\r\n            this.expandAllRows();\r\n        }\r\n    }\r\n\r\n    setDropDownData() {\r\n        this.orderMetrics = this.primaryOrderPanelService.getOrderMetricsDropdownValues();\r\n        this.setMetricDropdownConfig();\r\n    }\r\n\r\n    setMetricDropdownConfig() {\r\n        this.metricDropdownConfig = { ...this.annaGlobalConfig.defaultSingleSelectConfig };\r\n        this.metricDropdownConfig.placeholder = \"Select metric\";\r\n    }\r\n\r\n    metricChanged(event: IdText) {\r\n        this.selectedMetric = event;\r\n        this.metric = this.selectedMetric.text;\r\n        this.cppOrCpm = this.metric === \"GRP\" ? \"CPP($)\" : \"CPM($)\";\r\n        this.selectedKeys = {\r\n            grporImps: event.text === OrderMetrics.rating ? \"grp\" : \"imps\",\r\n            cpporCpm: event.text === OrderMetrics.rating ? \"cpp\" : \"cpm\",\r\n            actualGrporImps: event.text === OrderMetrics.rating ? \"actualGrp\" : \"actualImps\",\r\n            actualCpporCpm: event.text === OrderMetrics.rating ? \"actualCpp\" : \"actualCpm\",\r\n        };\r\n    }\r\n\r\n    showHideTotalRow() {\r\n        this.showTotalRow = !this.showTotalRow;\r\n        this.calculateTopPositionOfScrollBar();\r\n    }\r\n\r\n    calculateTopPositionOfScrollBar() {\r\n        const isSmallerScreenSize = window.innerWidth < 1635;\r\n        const isSpotMissingTextPresent = this.totalRow?.totalBillableValue === \"-\";\r\n\r\n        if (!this.showTotalRow) {\r\n            const topScrollBarHeight = isSmallerScreenSize && isSpotMissingTextPresent ? \"28px\" : \"20px\";\r\n            document.documentElement.style.setProperty(`--hide-total-row-scrollbar-offset`, topScrollBarHeight);\r\n        } else {\r\n            const topScrollBarHeight = isSmallerScreenSize && isSpotMissingTextPresent ? \"-32px\" : \"-25px\";\r\n            document.documentElement.style.setProperty(`--hide-total-row-scrollbar-offset`, topScrollBarHeight);\r\n        }\r\n    }\r\n}\r\n","<div class=\"main-seperate-tab-background\">\r\n    <nav>\r\n        <img\r\n            class=\"anna-logo\"\r\n            src=\"{{ logoImageUrl }}\"\r\n            alt=\"Anna Logo\"\r\n        />\r\n        <img\r\n            class=\"circuit-img\"\r\n            src=\"assets/images/CircuitGrid-BG-PNG.png\"\r\n            alt=\"Skynet Logo\"\r\n        />\r\n    </nav>\r\n    <section class=\"main-container\">\r\n        <div class=\"heading\">BILLING DETAILS FOR ORDER #{{ orderId }}</div>\r\n        <div class=\"info\"></div>\r\n\r\n        <div\r\n            id=\"billingtable\"\r\n            class=\"col-12 p-0 table-scroll-styling {{ borderClass }}\"\r\n            [ngClass]=\"{\r\n                'loading-table': loading,\r\n                'increased-total-row-height': !loading && totalRow?.totalBillableValue === '-'\r\n            }\"\r\n        >\r\n            <button\r\n                *ngIf=\"showOrHideToggleForTotalRow && !loading && selectedBillingPeriod.lines.length > 0\"\r\n                [ngClass]=\"{\r\n                    'shift-toggle-top-on-total-row-click': !showTotalRow\r\n                }\"\r\n                class=\"show-or-hide-toggle-btn\"\r\n                (click)=\"showHideTotalRow()\"\r\n            >\r\n                <i\r\n                    class=\"mdi mdi-menu-swap\"\r\n                    tooltipClass=\"show-or-hide-toggle-tooltip\"\r\n                    placement=\"auto\"\r\n                    container=\"body\"\r\n                    [ngbTooltip]=\"showOrHideToggleForTotalRowTooltip\"\r\n                ></i>\r\n            </button>\r\n            <table>\r\n                <colgroup>\r\n                    <col />\r\n                    <col />\r\n                    <col />\r\n                    <col />\r\n                    <col />\r\n                    <col />\r\n                    <col />\r\n                    <col />\r\n                    <col />\r\n                    <col />\r\n                </colgroup>\r\n                <thead>\r\n                    <!-- DROPDOWN -->\r\n                    <tr class=\"dropdown-row\">\r\n                        <td\r\n                            class=\"posting-type-container\"\r\n                            colspan=\"3\"\r\n                            [style.visibility]=\"loading ? 'hidden' : 'visible'\"\r\n                        >\r\n                            <div class=\"display-flex-container\">\r\n                                <div\r\n                                    annaCoreShowEllipsisTextOnHover\r\n                                    class=\"posting-type-header station-name overflow-text\"\r\n                                >\r\n                                    Station: <b>{{ stationName }}</b>\r\n                                </div>\r\n                                <div\r\n                                    annaCoreShowEllipsisTextOnHover\r\n                                    class=\"posting-type-header posting-type overflow-text\"\r\n                                >\r\n                                    Posting Type: <b>{{ postingType }}</b>\r\n                                </div>\r\n\r\n                                <div class=\"mtn-4\">\r\n                                    <anna-design-equivalisation-of-data-toggle-btn\r\n                                        *ngIf=\"!loading\"\r\n                                        [toShow]=\"true\"\r\n                                        class=\"billing-view-toggle\"\r\n                                        [defaultEquivalisedValue]=\"isEquivalized\"\r\n                                        [equivalisationTooltipClass]=\"'billingdetails-equivalization-tooltip'\"\r\n                                    ></anna-design-equivalisation-of-data-toggle-btn>\r\n                                </div>\r\n                            </div>\r\n                        </td>\r\n                        <td colspan=\"2\">\r\n                            <anna-design-single-select\r\n                                *ngIf=\"!loading\"\r\n                                [items]=\"orderMetrics\"\r\n                                class=\"order-metrics-dropdown billing-details-dropdown\"\r\n                                [selectedItem]=\"selectedMetric\"\r\n                                [config]=\"metricDropdownConfig\"\r\n                                [disabled]=\"disableDropDown\"\r\n                                (valueChanged)=\"metricChanged($event)\"\r\n                            >\r\n                            </anna-design-single-select>\r\n                            <anna-design-skt-loader\r\n                                *ngIf=\"loading\"\r\n                                [count]=\"1\"\r\n                                [theme]=\"{ width: '100%', height: '30px' }\"\r\n                            ></anna-design-skt-loader>\r\n                        </td>\r\n                        <td\r\n                            colspan=\"5\"\r\n                            *ngIf=\"!loading\"\r\n                        >\r\n                            <div class=\"billing-flex-container\">\r\n                                <div\r\n                                    class=\"icon-container\"\r\n                                    [ngClass]=\"{ disabled: selectedBillingPeriod.id === 0 }\"\r\n                                    (click)=\"selectNextOrPreviousPeriod(false)\"\r\n                                >\r\n                                    <i class=\"mdi mdi-chevron-down expand-icon left-icon\"></i>\r\n                                </div>\r\n                                <div class=\"input-div\">\r\n                                    <span> Billing Period</span>\r\n                                    <input\r\n                                        class=\"form-control\"\r\n                                        [(ngModel)]=\"selectedBillingPeriod.billingPeriod\"\r\n                                        type=\"text\"\r\n                                    />\r\n                                </div>\r\n\r\n                                <div\r\n                                    class=\"icon-container\"\r\n                                    [ngClass]=\"{\r\n                                        disabled: selectedBillingPeriod.id === allBillingPeriodList.length - 1\r\n                                    }\"\r\n                                    (click)=\"selectNextOrPreviousPeriod(true)\"\r\n                                >\r\n                                    <i class=\"mdi mdi-chevron-down expand-icon right-icon\"></i>\r\n                                </div>\r\n                            </div>\r\n                        </td>\r\n                    </tr>\r\n                    <tr class=\"expand-all-row\">\r\n                        <td colspan=\"10\">\r\n                            <div\r\n                                class=\"expand-all-container\"\r\n                                *ngIf=\"!loading\"\r\n                            >\r\n                                <span class=\"expand-all-label\">Expand All</span>\r\n                                <i\r\n                                    class=\"mi mdi-check-box check-box\"\r\n                                    [ngClass]=\"{\r\n                                        disabled: disableExpandCheckbox,\r\n                                        'mdi-check-box': isExpandRowsChecked,\r\n                                        'mdi-check-box-outline-blank unchecked': !isExpandRowsChecked\r\n                                    }\"\r\n                                    (click)=\"expandRowsClicked()\"\r\n                                ></i>\r\n                            </div>\r\n                        </td>\r\n                    </tr>\r\n                    <!-- DROPDOWN -->\r\n                    <tr class=\"header-row\">\r\n                        <th rowspan=\"2\">LINE</th>\r\n                        <th\r\n                            id=\"inventory_th\"\r\n                            rowspan=\"2\"\r\n                        >\r\n                            SELLER PROGRAM <br />\r\n                            <span>INVENTORY CODE</span>\r\n                        </th>\r\n                        <th rowspan=\"2\">DAYS</th>\r\n                        <th rowspan=\"2\">LEN</th>\r\n                        <th\r\n                            class=\"white-space-nowrap\"\r\n                            rowspan=\"2\"\r\n                        >\r\n                            {{ isEquivalized ? \"EUR($)\" : \"RATE($)\" }}\r\n                            <br />\r\n                            <span> {{ cppOrCpm }} </span>\r\n                        </th>\r\n                    </tr>\r\n                    <tr class=\"header-row\">\r\n                        <th>\r\n                            ORIGINAL BOOKING ($) <br />\r\n                            <ng-container\r\n                                [ngTemplateOutlet]=\"secondaryTableHeader\"\r\n                                [ngTemplateOutletContext]=\"{ showCppOrCpm: true }\"\r\n                            ></ng-container>\r\n                        </th>\r\n                        <th>\r\n                            <label\r\n                                >REVISED BOOKING <br />\r\n                                IN REV-{{ latestRevisionNo }} ($)</label\r\n                            >\r\n                            <br />\r\n                            <ng-container\r\n                                [ngTemplateOutlet]=\"secondaryTableHeader\"\r\n                                [ngTemplateOutletContext]=\"{ showCppOrCpm: true }\"\r\n                            ></ng-container>\r\n                        </th>\r\n                        <th>\r\n                            <label>\r\n                                PROJECTED DELIVERY <br />\r\n                                WITHOUT ADUs ($)\r\n                            </label>\r\n                            <br />\r\n                            <ng-container\r\n                                [ngTemplateOutlet]=\"secondaryTableHeader\"\r\n                                [ngTemplateOutletContext]=\"{ showCppOrCpm: false }\"\r\n                            ></ng-container>\r\n                        </th>\r\n                        <th>\r\n                            <label\r\n                                >PROJECTED DELIVERY <br />\r\n                                WITH ADUs ($)</label\r\n                            >\r\n                            <br />\r\n                            <ng-container\r\n                                [ngTemplateOutlet]=\"secondaryTableHeader\"\r\n                                [ngTemplateOutletContext]=\"{ showCppOrCpm: false }\"\r\n                            ></ng-container>\r\n                        </th>\r\n                        <th class=\"border-rt\">\r\n                            <label>\r\n                                BILLABLE <br *ngIf=\"isPayForPerformance\" />\r\n                                {{ isPayForPerformance === true ? \"WITH ADUs ($)\" : \"($)\" }} <br\r\n                            /></label>\r\n                        </th>\r\n                    </tr>\r\n                </thead>\r\n                <tbody>\r\n                    <ng-container *ngIf=\"loading\">\r\n                        <tr *ngFor=\"let numrow of numberOfSkeletonRows\">\r\n                            <td *ngFor=\"let numcol of numberOfSkeletonCols\">\r\n                                <anna-design-skt-loader\r\n                                    [count]=\"1\"\r\n                                    [theme]=\"{ height: '8px' }\"\r\n                                ></anna-design-skt-loader>\r\n                            </td>\r\n                        </tr>\r\n                    </ng-container>\r\n                    <ng-container *ngIf=\"!loading\">\r\n                        <!-- TOTAL ROW -->\r\n                        <tr\r\n                            *ngIf=\"showTotalRow\"\r\n                            class=\"total-row\"\r\n                        >\r\n                            <!-- <td></td> -->\r\n                            <td colspan=\"5\">\r\n                                <b class=\"pl-8\"\r\n                                    >Total for {{ selectedBillingPeriod.lines.length }} Lines in the selected period</b\r\n                                >\r\n                            </td>\r\n                            <!-- RHS TABLE TOTAL ROW WEEK WISE DATA -->\r\n                            <ng-container>\r\n                                <td class=\"total-row-custom-shadow\">\r\n                                    <ng-container\r\n                                        [ngTemplateOutlet]=\"totalData\"\r\n                                        [ngTemplateOutletContext]=\"{\r\n                                            value: totalRow.totalOriginal,\r\n                                            bold: true,\r\n                                            showCppOrCpm: true\r\n                                        }\"\r\n                                    >\r\n                                    </ng-container>\r\n                                </td>\r\n                                <td>\r\n                                    <ng-container\r\n                                        [ngTemplateOutlet]=\"totalData\"\r\n                                        [ngTemplateOutletContext]=\"{\r\n                                            value: totalRow.totalRevised,\r\n                                            bold: true,\r\n                                            showCppOrCpm: true\r\n                                        }\"\r\n                                    >\r\n                                    </ng-container>\r\n                                </td>\r\n                                <td>\r\n                                    <ng-container\r\n                                        [ngTemplateOutlet]=\"totalData\"\r\n                                        [ngTemplateOutletContext]=\"{\r\n                                            value: totalRow.totalProjectedDeliveryWithoutAdu,\r\n                                            bold: true,\r\n                                            showCppOrCpm: false\r\n                                        }\"\r\n                                    >\r\n                                    </ng-container>\r\n                                </td>\r\n                                <td>\r\n                                    <ng-container\r\n                                        [ngTemplateOutlet]=\"totalData\"\r\n                                        [ngTemplateOutletContext]=\"{\r\n                                            value: totalRow.totalProjectedDeliveryAdu,\r\n                                            bold: true,\r\n                                            showCppOrCpm: false\r\n                                        }\"\r\n                                    >\r\n                                    </ng-container>\r\n                                </td>\r\n                                <td class=\"border-rt\">\r\n                                    <b *ngIf=\"totalRow.totalBillableValue !== '-'\">\r\n                                        {{ totalRow.totalBillableValue }}\r\n                                    </b>\r\n                                    <b *ngIf=\"totalRow.totalBillableValue === '-'\">\r\n                                        <span>\r\n                                            - <br />\r\n                                            <i>(Data missing for a few spots)</i></span\r\n                                        >\r\n                                    </b>\r\n                                    <br />\r\n                                </td>\r\n                            </ng-container>\r\n                        </tr>\r\n                        <!-- REMAINNING ROWS -->\r\n                        <ng-container *ngFor=\"let eachLine of selectedBillingPeriod.lines; let index = index\">\r\n                            <!-- PARENT LINE TR -->\r\n                            <tr\r\n                                class=\"table-body-row\"\r\n                                (click)=\"hideorShowTd(index)\"\r\n                                [ngClass]=\"{\r\n                                    'pointer-cursor': eachLine.subLines.length,\r\n                                    'parent-with-subline-bg-color': eachLine.subLines.length && !eachLine.hidden\r\n                                }\"\r\n                            >\r\n                                <td>\r\n                                    <span class=\"line-number\">{{ eachLine.lineNumber }} </span>\r\n                                    <ng-container *ngIf=\"eachLine.subLines.length\">\r\n                                        <i\r\n                                            *ngIf=\"eachLine.hidden\"\r\n                                            class=\"mdi mdi-menu-down\"\r\n                                            container=\"body\"\r\n                                            ngbTooltip=\"This line contains multiple sub-lines.\"\r\n                                            tooltipClass=\"custom-tooltip\"\r\n                                            placement=\"right\"\r\n                                        >\r\n                                        </i>\r\n                                        <i\r\n                                            *ngIf=\"!eachLine.hidden\"\r\n                                            class=\"mdi mdi-menu-up\"\r\n                                            container=\"body\"\r\n                                            ngbTooltip=\"This line contains multiple sub-lines.\"\r\n                                            tooltipClass=\"custom-tooltip\"\r\n                                            placement=\"right\"\r\n                                        >\r\n                                        </i>\r\n                                    </ng-container>\r\n                                </td>\r\n                                <td>\r\n                                    <div class=\"row inv-program-column\">\r\n                                        <p\r\n                                            annaCoreShowEllipsisTextOnHover\r\n                                            [ngClass]=\"{ 'reduced-width': eachLine.programList.length > 0 }\"\r\n                                        >\r\n                                            {{ eachLine.programName }}\r\n                                        </p>\r\n                                        <i\r\n                                            *ngIf=\"eachLine.programList.length > 0\"\r\n                                            class=\"tooltip-text\"\r\n                                            #arrowTooltip=\"ngbTooltip\"\r\n                                            container=\"body\"\r\n                                            [ngbTooltip]=\"eachLine.programList.join(', ')\"\r\n                                        >\r\n                                            +{{ eachLine.programList.length }}\r\n                                        </i>\r\n                                    </div>\r\n                                    <div class=\"row inv-program-column\">\r\n                                        <span annaCoreShowEllipsisTextOnHover>{{ eachLine.inventoryCode }}</span>\r\n                                    </div>\r\n                                </td>\r\n                                <td>\r\n                                    {{ eachLine.days !== \"0\" ? eachLine.days : \"-\" }}\r\n                                </td>\r\n                                <td>\r\n                                    {{ eachLine.len }}\r\n                                </td>\r\n                                <td>\r\n                                    {{ eachLine.rate | currency: currencyUnit : \"symbol\" : \"1.0-2\" }} <br />\r\n                                    <span>{{\r\n                                        eachLine[selectedKeys.cpporCpm] | currency: currencyUnit : \"symbol\" : \"1.0-2\"\r\n                                    }}</span>\r\n                                </td>\r\n                                <!-- RHS TABLE WEEK WISE DATA -->\r\n                                <ng-container>\r\n                                    <td>\r\n                                        <ng-container\r\n                                            [ngTemplateOutlet]=\"tableData\"\r\n                                            [ngTemplateOutletContext]=\"{\r\n                                                value: eachLine.original,\r\n                                                showCppOrCpm: true\r\n                                            }\"\r\n                                        >\r\n                                        </ng-container>\r\n                                    </td>\r\n                                    <td>\r\n                                        <ng-container\r\n                                            [ngTemplateOutlet]=\"tableData\"\r\n                                            [ngTemplateOutletContext]=\"{\r\n                                                value: eachLine.revisedToDate,\r\n                                                showCppOrCpm: true\r\n                                            }\"\r\n                                        >\r\n                                        </ng-container>\r\n                                    </td>\r\n\r\n                                    <td>\r\n                                        <ng-container\r\n                                            [ngTemplateOutlet]=\"tableData\"\r\n                                            [ngTemplateOutletContext]=\"{\r\n                                                value: eachLine.projectedDeliveryWithoutAdu,\r\n                                                showCppOrCpm: false\r\n                                            }\"\r\n                                        >\r\n                                        </ng-container>\r\n                                    </td>\r\n                                    <td>\r\n                                        <ng-container\r\n                                            [ngTemplateOutlet]=\"tableData\"\r\n                                            [ngTemplateOutletContext]=\"{\r\n                                                value: eachLine.projectedDeliveryAdu,\r\n                                                showCppOrCpm: false\r\n                                            }\"\r\n                                        >\r\n                                        </ng-container>\r\n                                    </td>\r\n                                    <td>\r\n                                        {{\r\n                                            eachLine.billableToDateValue === \"-\"\r\n                                                ? \"-\"\r\n                                                : (eachLine.billableToDateValue\r\n                                                  | currency: currencyUnit : \"symbol\" : \"1.0-0\")\r\n                                        }}\r\n                                    </td>\r\n                                </ng-container>\r\n                            </tr>\r\n                            <!-- SUB LINE TR -->\r\n                            <ng-container *ngFor=\"let subLine of eachLine.subLines; let i = index\">\r\n                                <tr\r\n                                    *ngIf=\"!eachLine.hidden\"\r\n                                    class=\"sub-line-color\"\r\n                                >\r\n                                    <td>\r\n                                        {{ null }}\r\n                                    </td>\r\n                                    <td class=\"custom-padding\">\r\n                                        <div class=\"row inv-program-column\">\r\n                                            <p\r\n                                                annaCoreShowEllipsisTextOnHover\r\n                                                [ngClass]=\"{ 'reduced-width': eachLine.programList.length > 0 }\"\r\n                                            >\r\n                                                {{ subLine.programName }}\r\n                                            </p>\r\n                                            <i\r\n                                                *ngIf=\"subLine.programList.length > 0\"\r\n                                                class=\"tooltip-text\"\r\n                                                #arrowTooltip=\"ngbTooltip\"\r\n                                                container=\"body\"\r\n                                                [ngbTooltip]=\"subLine.programList.join(', ')\"\r\n                                            >\r\n                                                +{{ subLine.programList.length }}\r\n                                            </i>\r\n                                        </div>\r\n                                        <div class=\"row inv-program-column\">\r\n                                            <span annaCoreShowEllipsisTextOnHover>{{ subLine.inventoryCode }}</span>\r\n                                        </div>\r\n                                    </td>\r\n                                    <td>\r\n                                        {{ subLine.days !== \"0\" ? subLine.days : \"-\" }}\r\n                                    </td>\r\n                                    <td>\r\n                                        {{ subLine.len }}\r\n                                    </td>\r\n                                    <td>\r\n                                        {{ subLine.rate | currency: currencyUnit : \"symbol\" : \"1.0-2\" }} <br />\r\n                                        <span> {{ subLine[selectedKeys.cpporCpm] }} </span>\r\n                                    </td>\r\n                                    <!-- <td>\r\n                        <ng-container [ngTemplateOutlet]=\"tableData\"\r\n                            [ngTemplateOutletContext]=\"{value: subLine.original}\">\r\n                        </ng-container>\r\n                        </td>\r\n                        <td>\r\n                        <ng-container [ngTemplateOutlet]=\"tableData\"\r\n                            [ngTemplateOutletContext]=\"{value: subLine.revisedToDate}\">\r\n                        </ng-container>\r\n                        </td>\r\n                        <td style=\"border-end-width: medium; border-end-color: lightgray\">\r\n                        <ng-container [ngTemplateOutlet]=\"tableData\"\r\n                            [ngTemplateOutletContext]=\"{value: subLine.billableToDate}\">\r\n                        </ng-container>\r\n                        </td> -->\r\n                                    <!-- RHS TABLE -->\r\n                                    <ng-container>\r\n                                        <td>\r\n                                            <ng-container\r\n                                                [ngTemplateOutlet]=\"tableData\"\r\n                                                [ngTemplateOutletContext]=\"{\r\n                                                    value: subLine.original,\r\n                                                    showCppOrCpm: true\r\n                                                }\"\r\n                                            >\r\n                                            </ng-container>\r\n                                        </td>\r\n                                        <td>\r\n                                            <ng-container\r\n                                                [ngTemplateOutlet]=\"tableData\"\r\n                                                [ngTemplateOutletContext]=\"{\r\n                                                    value: subLine.revisedToDate,\r\n                                                    showCppOrCpm: true\r\n                                                }\"\r\n                                            >\r\n                                            </ng-container>\r\n                                        </td>\r\n                                        <td>\r\n                                            <ng-container\r\n                                                [ngTemplateOutlet]=\"tableData\"\r\n                                                [ngTemplateOutletContext]=\"{\r\n                                                    value: subLine.projectedDeliveryWithoutAdu,\r\n                                                    showCppOrCpm: false\r\n                                                }\"\r\n                                            >\r\n                                            </ng-container>\r\n                                        </td>\r\n                                        <td>\r\n                                            <ng-container\r\n                                                [ngTemplateOutlet]=\"tableData\"\r\n                                                [ngTemplateOutletContext]=\"{\r\n                                                    value: subLine.projectedDeliveryAdu,\r\n                                                    showCppOrCpm: false\r\n                                                }\"\r\n                                            >\r\n                                            </ng-container>\r\n                                        </td>\r\n                                        <td>\r\n                                            {{\r\n                                                subLine.billableToDateValue === \"-\"\r\n                                                    ? \"-\"\r\n                                                    : (subLine.billableToDateValue\r\n                                                      | currency: currencyUnit : \"symbol\" : \"1.0-0\")\r\n                                            }}\r\n                                        </td>\r\n                                    </ng-container>\r\n                                </tr>\r\n                            </ng-container>\r\n                        </ng-container>\r\n                    </ng-container>\r\n                </tbody>\r\n            </table>\r\n        </div>\r\n\r\n        <ng-template\r\n            #tableData\r\n            let-key=\"value\"\r\n            let-isBold=\"bold\"\r\n            let-showCppOrCpm=\"showCppOrCpm\"\r\n        >\r\n            <div\r\n                class=\"lht\"\r\n                [ngStyle]=\"{ 'font-weight': isBold ? 'bold' : 'normal' }\"\r\n            >\r\n                <span class=\"color-black\">\r\n                    {{ key.value }}\r\n                </span>\r\n            </div>\r\n            <div\r\n                class=\"lht\"\r\n                [ngStyle]=\"{ 'font-weight': isBold ? 'bold' : 'normal' }\"\r\n            >\r\n                <span>\r\n                    {{ key.spot }} |\r\n                    {{ key[selectedKeys.grporImps] }}\r\n                    <ng-container *ngIf=\"showCppOrCpm\"> | {{ key[selectedKeys.cpporCpm] }} </ng-container>\r\n                </span>\r\n            </div>\r\n        </ng-template>\r\n\r\n        <ng-template\r\n            #totalData\r\n            let-key=\"value\"\r\n            let-isBold=\"bold\"\r\n            let-showCppOrCpm=\"showCppOrCpm\"\r\n        >\r\n            <div\r\n                class=\"lht\"\r\n                [ngStyle]=\"{ 'font-weight': isBold ? 'bold' : 'normal' }\"\r\n            >\r\n                <span class=\"color-black\">\r\n                    {{ key.actualValue }}\r\n                </span>\r\n            </div>\r\n            <div\r\n                class=\"lht\"\r\n                [ngStyle]=\"{ 'font-weight': isBold ? 'bold' : 'normal' }\"\r\n            >\r\n                <span>\r\n                    {{ key.actualSpot }} |\r\n                    {{ key[selectedKeys.actualGrporImps] }}\r\n                    <ng-container *ngIf=\"showCppOrCpm\"> | {{ key[selectedKeys.actualCpporCpm] }} </ng-container>\r\n                </span>\r\n            </div>\r\n        </ng-template>\r\n        <!-- <ng-template #totalData let-key=\"value\" let-isBold=\"bold\" let-showCppOrCpm=\"showCppOrCpm\">\r\n            <div class=\"lht\" [ngStyle]=\"{'font-weight': isBold ? 'bold': 'normal'}\">\r\n                <span class=\"color-black\">\r\n                    {{ key.actualValue | currency: currencyUnit:\"symbol\":\"1.0-0\"}}\r\n                </span>\r\n            </div>\r\n            <div class=\"lht\" [ngStyle]=\"{'font-weight': isBold ? 'bold': 'normal'}\">\r\n                <span>\r\n                    {{ key.actualSpot| AnnaConvertZeroOrNullOrUndefined : \"-\" }} |\r\n                    {{ key[selectedKeys.actualGrporImps] | number: \"1.0-1\"}}\r\n                    <ng-container *ngIf=\"showCppOrCpm\"> | {{ key[selectedKeys.actualCpporCpm] | currency:\r\n                        currencyUnit:\"symbol\":\"1.0-0\" }} </ng-container>\r\n                </span>\r\n            </div>\r\n        </ng-template> -->\r\n\r\n        <ng-template\r\n            #secondaryTableHeader\r\n            let-showCppOrCpm=\"showCppOrCpm\"\r\n        >\r\n            <ng-container *ngIf=\"metric\">\r\n                <span class=\"total-row-data\"\r\n                    >SPOTS | {{ metric }}<ng-container *ngIf=\"showCppOrCpm\"> | {{ cppOrCpm }} </ng-container></span\r\n                >\r\n            </ng-container>\r\n        </ng-template>\r\n        <ng-template> </ng-template>\r\n\r\n        <ng-template #totalEquivalizationRowTooltip>\r\n            <p class=\"equivalization-row\">\r\n                Only the total row have their 30-second Impressions / GRPs / CPP /CPM weighted up/down in proportion to\r\n                their length. The values for each line as per the order remains unequivalised.\r\n            </p>\r\n        </ng-template>\r\n    </section>\r\n</div>\r\n\r\n<ng-template #showOrHideToggleForTotalRowTooltip>\r\n    <div>\r\n        {{ showOrHideToggleForTotalRow && !showTotalRow ? \"Show Total Row\" : \"Hide Total Row\" }}\r\n    </div>\r\n</ng-template>\r\n","import { DatePipe, NgClass, NgFor, NgIf, NgStyle, NgTemplateOutlet } from \"@angular/common\";\r\nimport {\r\n    ChangeDetectionStrategy,\r\n    Component,\r\n    EventEmitter,\r\n    Input,\r\n    input,\r\n    OnChanges,\r\n    OnInit,\r\n    Output,\r\n    SimpleChanges,\r\n} from \"@angular/core\";\r\nimport { RouterLink } from \"@angular/router\";\r\nimport { AnnaCoreModule, AnnaGlobalConfigService, ICustomSingleSelect } from \"@annalib/anna-core\";\r\nimport {\r\n    AnnaDesignComponentsLibModule,\r\n    GenericMessageBoxTheme,\r\n    IdText,\r\n    MessageBoxData,\r\n    MissingPostedData,\r\n} from \"@annalib/anna-design-components-lib\";\r\nimport { OrderMetrics, PrimaryOrderPanelService } from \"@annalib/anna-feature-shared-lib\";\r\nimport { NgbTooltip } from \"@ng-bootstrap/ng-bootstrap\";\r\n\r\nimport { MeasurementAgencyInOrderSummary } from \"../primary-order-panel/models/primary-order-panel.model\";\r\nimport {\r\n    BillingReportTableMissingPostedDataRequestPayload,\r\n    TotalBillingData,\r\n    WeeklySpotResponse,\r\n} from \"./models/billing-report-table.model\";\r\n\r\n@Component({\r\n    selector: \"anna-feature-billing-report-table\",\r\n    templateUrl: \"./billing-report-table.component.html\",\r\n    styleUrls: [\"./billing-report-table.component.scss\"],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    imports: [\r\n        NgIf,\r\n        NgClass,\r\n        AnnaDesignComponentsLibModule,\r\n        NgbTooltip,\r\n        RouterLink,\r\n        NgTemplateOutlet,\r\n        NgFor,\r\n        AnnaCoreModule,\r\n        NgStyle,\r\n        DatePipe,\r\n    ],\r\n})\r\nexport class BillingReportTableComponent implements OnInit, OnChanges {\r\n    measurementAgency = input<string>(null);\r\n    @Input() missingPostedDataPayload: BillingReportTableMissingPostedDataRequestPayload;\r\n    @Input() missingPostedData: MissingPostedData;\r\n    @Input() billingReportData: WeeklySpotResponse;\r\n    @Input() queryParamForDetailsPage: any;\r\n    @Input() parentTab: \"TV Revenue\" | \"Other Revenue\";\r\n    @Input() billingWiseData: TotalBillingData[];\r\n    @Input() isEquivalisedData: boolean;\r\n    @Input() loading: boolean;\r\n    @Input() measurementName: string;\r\n    @Input() billingDetailsUrl: string;\r\n    @Input() isDeletedOrder: boolean;\r\n    @Input() isPoDOrder: boolean;\r\n    @Output() viewDetails = new EventEmitter();\r\n    MeasurementAgencyInOrderSummary = MeasurementAgencyInOrderSummary;\r\n\r\n    tableBottomBorder: string = \"\";\r\n    noDataWidth: string = \"55%\";\r\n    numberOfSkeletonRows = Array(12).fill(0);\r\n    numberOfSkeletonCols = Array(8).fill(0);\r\n    currencyUnit = \"USD\";\r\n    cppOrCpm: \"CPP($)\" | \"CPM($)\";\r\n    selectedKeys: { grporImps: string; cpporCpm: string };\r\n    orderMetrics: IdText[] = [];\r\n    selectedMetric: IdText;\r\n    disableDropDown: boolean = false;\r\n    metricDropdownConfig: ICustomSingleSelect;\r\n    orderMetricsEnum = OrderMetrics;\r\n    deleteOrderMessageData: MessageBoxData;\r\n    showTotalRow: boolean = true;\r\n    showOrHideToggleForTotalRow: boolean = true;\r\n\r\n    constructor(\r\n        private primaryOrderPanelService: PrimaryOrderPanelService,\r\n        private annaGlobalConfig: AnnaGlobalConfigService,\r\n    ) {\r\n        this.setDropDownData();\r\n        this.setMessageData();\r\n    }\r\n\r\n    ngOnInit(): void {\r\n        document.documentElement.style.setProperty(`--hide-total-row-scrollbar-offset`, \"0px\");\r\n        this.numberOfSkeletonCols = Array(9).fill(0);\r\n    }\r\n\r\n    ngOnChanges(changes: SimpleChanges) {\r\n        if (changes.billingWiseData && changes.billingWiseData.currentValue) {\r\n            this.disableDropDown = !this.billingWiseData && this.billingWiseData.length === 0;\r\n        }\r\n        if (changes.measurementName && changes.measurementName.currentValue) {\r\n            this.metricChanged(this.orderMetrics.find((m) => m.text === this.measurementName));\r\n        }\r\n        // eslint-disable-next-line max-len\r\n        // if ((changes['isEquivalisedData'] && changes['isEquivalisedData'].currentValue != undefined && this.queryParamForDetailsPage) || (changes['queryParamForDetailsPage'] && changes['queryParamForDetailsPage'].currentValue)) {\r\n        //   this.updateViewDetailsUrl();\r\n        // }\r\n    }\r\n\r\n    viewDetailsClick() {\r\n        this.viewDetails.emit();\r\n    }\r\n\r\n    setDropDownData() {\r\n        this.orderMetrics = this.primaryOrderPanelService.getOrderMetricsDropdownValues();\r\n        this.setMetricDropdownConfig();\r\n    }\r\n\r\n    setMetricDropdownConfig() {\r\n        this.metricDropdownConfig = { ...this.annaGlobalConfig.defaultSingleSelectConfig };\r\n        this.metricDropdownConfig.placeholder = \"Select metric\";\r\n    }\r\n\r\n    metricChanged(event: IdText) {\r\n        this.selectedMetric = event;\r\n        this.measurementName = event.text;\r\n        this.cppOrCpm = this.measurementName === \"GRP\" ? \"CPP($)\" : \"CPM($)\";\r\n        this.selectedKeys = {\r\n            grporImps: event.text === OrderMetrics.rating ? \"grp\" : \"imps\",\r\n            cpporCpm: event.text === OrderMetrics.rating ? \"cpp\" : \"cpm\",\r\n        };\r\n        // this.updateViewDetailsUrl();\r\n    }\r\n\r\n    setMessageData() {\r\n        const msg = `There is no billing data available for this order.`;\r\n        const iconClass = \"mdi mdi-information\";\r\n        this.deleteOrderMessageData = new MessageBoxData(\r\n            null,\r\n            msg,\r\n            iconClass,\r\n            `${GenericMessageBoxTheme.informationBlue.messageBoxClass} sm mg-adu-rule`,\r\n        );\r\n    }\r\n\r\n    showHideTotalRow() {\r\n        this.showTotalRow = !this.showTotalRow;\r\n        if (!this.showTotalRow) {\r\n            document.documentElement.style.setProperty(`--hide-total-row-scrollbar-offset`, \"40px\");\r\n        } else {\r\n            document.documentElement.style.setProperty(`--hide-total-row-scrollbar-offset`, \"0px\");\r\n        }\r\n    }\r\n}\r\n","<anna-design-message-box\r\n    *ngIf=\"isDeletedOrder\"\r\n    [messageBoxData]=\"deleteOrderMessageData\"\r\n></anna-design-message-box>\r\n\r\n<div *ngIf=\"!isDeletedOrder\">\r\n    <div class=\"heading\">\r\n        <p>\r\n            Summary\r\n            <ng-container *ngIf=\"!isPoDOrder\">(Pay for Spots(P4S) Order)</ng-container>\r\n            <ng-container *ngIf=\"isPoDOrder\">(PoD Order)</ng-container>\r\n        </p>\r\n        <i\r\n            class=\"mi mdi-info-outline info-label\"\r\n            container=\"body\"\r\n            tooltipClass=\"summary-custom-tooltip\"\r\n            [ngbTooltip]=\"pfpCalculation\"\r\n        ></i>\r\n        <div\r\n            *ngIf=\"missingPostedDataPayload\"\r\n            class=\"right-aligned\"\r\n        >\r\n            <anna-design-missing-posted-data\r\n                [isHHData]=\"measurementAgency() === MeasurementAgencyInOrderSummary.NielsenSweeps\"\r\n                [payload]=\"missingPostedDataPayload\"\r\n                [showDemographicInfo]=\"false\"\r\n                [missingPostedData]=\"missingPostedData\"\r\n            ></anna-design-missing-posted-data>\r\n        </div>\r\n    </div>\r\n\r\n    <div class=\"table-height {{ tableBottomBorder }}\">\r\n        <article class=\"flex\">\r\n            <!-- <div class=\"posting-type-container\">\r\n                <span>\r\n                    Posting Type\r\n                </span>\r\n                <span class=\"bold\">{{billingReportData?.postingType}}</span>\r\n            </div> -->\r\n            <p\r\n                class=\"italic-msg\"\r\n                [style.visibility]=\"isEquivalisedData ? 'visible' : 'hidden'\"\r\n            >\r\n                All data in the below table except for spots count of Paid Programs, Non-spots TV and Non-spots Digital\r\n                is equivalized\r\n            </p>\r\n            <div class=\"dropdown-view-btn-container\">\r\n                <!-- Drop-down for metric selection -->\r\n                <anna-design-single-select\r\n                    *ngIf=\"!loading\"\r\n                    [items]=\"orderMetrics\"\r\n                    class=\"order-metrics-dropdown\"\r\n                    [selectedItem]=\"selectedMetric\"\r\n                    [config]=\"metricDropdownConfig\"\r\n                    [disabled]=\"disableDropDown || (!loading && (!billingWiseData || billingWiseData?.length === 0))\"\r\n                    (valueChanged)=\"metricChanged($event)\"\r\n                >\r\n                </anna-design-single-select>\r\n\r\n                <anna-design-skt-loader\r\n                    *ngIf=\"loading\"\r\n                    [count]=\"1\"\r\n                    [theme]=\"{ width: '8rem', height: '24px', 'margin-bottom': '0px' }\"\r\n                ></anna-design-skt-loader>\r\n                <anna-design-skt-loader\r\n                    *ngIf=\"loading\"\r\n                    [count]=\"1\"\r\n                    [theme]=\"{ width: '7.3rem', height: '24px', 'margin-bottom': '0px' }\"\r\n                ></anna-design-skt-loader>\r\n\r\n                <a\r\n                    href=\"\"\r\n                    target=\"_blank\"\r\n                    type=\"submit\"\r\n                    *ngIf=\"!loading\"\r\n                    class=\"view-details-link\"\r\n                    [ngClass]=\"{\r\n                        'disabled-view-details': !loading && (!billingWiseData || billingWiseData?.length === 0)\r\n                    }\"\r\n                    (click)=\"viewDetailsClick()\"\r\n                    [routerLink]=\"[billingDetailsUrl]\"\r\n                    [queryParams]=\"{\r\n                        stationId: queryParamForDetailsPage?.stationId,\r\n                        order: queryParamForDetailsPage?.order,\r\n                        isEquivalized: queryParamForDetailsPage?.isEquivalized,\r\n                        metric: measurementName,\r\n                        parentTab: parentTab\r\n                    }\"\r\n                >\r\n                    View Details\r\n                </a>\r\n            </div>\r\n        </article>\r\n\r\n        <div class=\"billing-table-container\">\r\n            <button\r\n                *ngIf=\"showOrHideToggleForTotalRow && !loading && billingWiseData?.length > 0\"\r\n                [ngClass]=\"{\r\n                    'shift-toggle-top-on-total-row-click': !showTotalRow\r\n                }\"\r\n                class=\"show-or-hide-toggle-btn\"\r\n                (click)=\"showHideTotalRow()\"\r\n            >\r\n                <i\r\n                    class=\"mdi mdi-menu-swap\"\r\n                    tooltipClass=\"show-or-hide-toggle-tooltip\"\r\n                    placement=\"auto\"\r\n                    container=\"body\"\r\n                    [ngbTooltip]=\"showOrHideToggleForTotalRowTooltip\"\r\n                ></i>\r\n            </button>\r\n            <table\r\n                class=\"billing-summary-table\"\r\n                [ngClass]=\"{ 'billing-no-data-table': !loading && (!billingWiseData || billingWiseData?.length === 0) }\"\r\n            >\r\n                <thead>\r\n                    <tr>\r\n                        <th>BILLING PERIOD</th>\r\n                        <th>\r\n                            <label>ORIGINAL BOOKING ($) </label> <br />\r\n                            <ng-container\r\n                                [ngTemplateOutlet]=\"secondaryTableHeader\"\r\n                                [ngTemplateOutletContext]=\"{ showCppOrCpm: true }\"\r\n                            ></ng-container>\r\n                        </th>\r\n                        <th>\r\n                            <label>\r\n                                REVISED BOOKING <br />\r\n                                IN REV-{{ billingReportData?.latestRevisionNo }} ($)</label\r\n                            >\r\n                            <br />\r\n                            <ng-container\r\n                                [ngTemplateOutlet]=\"secondaryTableHeader\"\r\n                                [ngTemplateOutletContext]=\"{ showCppOrCpm: true }\"\r\n                            ></ng-container>\r\n                        </th>\r\n                        <th>\r\n                            <label>\r\n                                PROJECTED DELIVERY <br />\r\n                                WITHOUT ADUs ($)\r\n                            </label>\r\n                            <br />\r\n                            <ng-container\r\n                                [ngTemplateOutlet]=\"secondaryTableHeader\"\r\n                                [ngTemplateOutletContext]=\"{ showCppOrCpm: false }\"\r\n                            ></ng-container>\r\n                        </th>\r\n                        <th>\r\n                            <label>\r\n                                PROJECTED DELIVERY <br />\r\n                                WITH ADUs ($)\r\n                            </label>\r\n                            <br />\r\n                            <ng-container\r\n                                [ngTemplateOutlet]=\"secondaryTableHeader\"\r\n                                [ngTemplateOutletContext]=\"{ showCppOrCpm: false }\"\r\n                            ></ng-container>\r\n                        </th>\r\n\r\n                        <th>\r\n                            <label\r\n                                >BILLABLE<br *ngIf=\"billingReportData?.isPayForPerformanceOrder\" />\r\n                                {{\r\n                                    billingReportData?.isPayForPerformanceOrder === true ? \"WITH ADUs ($)\" : \"($)\"\r\n                                }}</label\r\n                            >\r\n                            <br />\r\n                            <span *ngIf=\"measurementName\">SPOTS | POSTED {{ measurementName }}</span>\r\n                        </th>\r\n                        <th>\r\n                            AGENCY <br />\r\n                            COMMISSION ($)\r\n                        </th>\r\n                        <th>\r\n                            NET <br />\r\n                            AMOUNT($)\r\n                        </th>\r\n\r\n                        <th>\r\n                            <label *ngIf=\"!isPoDOrder\"> LIABILITY ($)</label>\r\n                            <label *ngIf=\"isPoDOrder\"> BILLING REDUCTION ($)</label>\r\n                            <br />\r\n                            <span class=\"liability-header\"\r\n                                >UD | UD (&#64; Threshold) | OD ({{\r\n                                    selectedMetric.text === orderMetricsEnum.rating ? \"GRP\" : \"IMPS\"\r\n                                }})</span\r\n                            >\r\n                        </th>\r\n                    </tr>\r\n                </thead>\r\n                <tbody>\r\n                    <ng-container *ngIf=\"loading\">\r\n                        <tr\r\n                            class=\"table-row loading-row\"\r\n                            *ngFor=\"let numrow of numberOfSkeletonRows\"\r\n                        >\r\n                            <td *ngFor=\"let numcol of numberOfSkeletonCols\">\r\n                                <anna-design-skt-loader\r\n                                    [count]=\"1\"\r\n                                    [theme]=\"{ height: '1em' }\"\r\n                                ></anna-design-skt-loader>\r\n                            </td>\r\n                        </tr>\r\n                    </ng-container>\r\n                    <ng-container *ngIf=\"!loading && billingWiseData && billingWiseData?.length > 0\">\r\n                        <tr\r\n                            *ngIf=\"showTotalRow\"\r\n                            class=\"total-row\"\r\n                        >\r\n                            <td>\r\n                                <b class=\"pl-8 inline-block\"\r\n                                    >Total<ng-container *ngIf=\"isEquivalisedData\"> (Equivalized)</ng-container></b\r\n                                >\r\n                            </td>\r\n                            <td>\r\n                                <ng-container\r\n                                    [ngTemplateOutlet]=\"tableData\"\r\n                                    [ngTemplateOutletContext]=\"{\r\n                                        value: billingReportData.totalOriginal,\r\n                                        bold: true,\r\n                                        showCppOrCpm: true\r\n                                    }\"\r\n                                >\r\n                                </ng-container>\r\n                            </td>\r\n                            <td>\r\n                                <ng-container\r\n                                    [ngTemplateOutlet]=\"tableData\"\r\n                                    [ngTemplateOutletContext]=\"{\r\n                                        value: billingReportData.totalRevised,\r\n                                        bold: true,\r\n                                        showCppOrCpm: true\r\n                                    }\"\r\n                                >\r\n                                </ng-container>\r\n                            </td>\r\n                            <td>\r\n                                <ng-container\r\n                                    [ngTemplateOutlet]=\"tableData\"\r\n                                    [ngTemplateOutletContext]=\"{\r\n                                        value: billingReportData.totalProjectedDeliveryWithoutADUSpots,\r\n                                        bold: true,\r\n                                        showCppOrCpm: false\r\n                                    }\"\r\n                                ></ng-container>\r\n                            </td>\r\n                            <td>\r\n                                <ng-container\r\n                                    [ngTemplateOutlet]=\"tableData\"\r\n                                    [ngTemplateOutletContext]=\"{\r\n                                        value: billingReportData.totalProjectedDeliveryWithADUSpots,\r\n                                        bold: true,\r\n                                        showCppOrCpm: false\r\n                                    }\"\r\n                                >\r\n                                </ng-container>\r\n                            </td>\r\n                            <td>\r\n                                <ng-container\r\n                                    [ngTemplateOutlet]=\"tableData\"\r\n                                    [ngTemplateOutletContext]=\"{\r\n                                        value: billingReportData.totalBillableToDate,\r\n                                        bold: true,\r\n                                        showCppOrCpm: false\r\n                                    }\"\r\n                                >\r\n                                </ng-container>\r\n                            </td>\r\n                            <td>\r\n                                <b>\r\n                                    {{ billingReportData.totalAgencyCommissionOnBillableAmount }}\r\n                                </b>\r\n                            </td>\r\n                            <td>\r\n                                <b> {{ billingReportData.totalNetAmount }} </b>\r\n                            </td>\r\n\r\n                            <td>\r\n                                <div class=\"liability-data\">\r\n                                    {{ billingReportData.totalLiabilityData.value }}\r\n                                </div>\r\n                                <span>\r\n                                    {{\r\n                                        selectedMetric.text === orderMetricsEnum.rating\r\n                                            ? billingReportData.totalLiabilityData.UDGRP\r\n                                            : billingReportData.totalLiabilityData.UDIMPS\r\n                                    }}\r\n                                    |\r\n                                    {{\r\n                                        selectedMetric.text === orderMetricsEnum.rating\r\n                                            ? billingReportData.totalLiabilityData.UDLiabilityGrp\r\n                                            : billingReportData.totalLiabilityData.UDLiabilityImps\r\n                                    }}\r\n                                    |\r\n                                    {{\r\n                                        selectedMetric.text === orderMetricsEnum.rating\r\n                                            ? billingReportData.totalLiabilityData.ODGRP\r\n                                            : billingReportData.totalLiabilityData.ODIMPS\r\n                                    }}\r\n                                </span>\r\n                            </td>\r\n                        </tr>\r\n                        <tr\r\n                            class=\"table-row\"\r\n                            *ngFor=\"let data of billingWiseData\"\r\n                        >\r\n                            <td>{{ data.startDate | date: \"MM/dd/yy\" }} - {{ data.endDate | date: \"MM/dd/yy\" }}</td>\r\n                            <td>\r\n                                <ng-container\r\n                                    [ngTemplateOutlet]=\"tableData\"\r\n                                    [ngTemplateOutletContext]=\"{ value: data.totalOriginal, showCppOrCpm: true }\"\r\n                                >\r\n                                </ng-container>\r\n                            </td>\r\n                            <td>\r\n                                <ng-container\r\n                                    [ngTemplateOutlet]=\"tableData\"\r\n                                    [ngTemplateOutletContext]=\"{ value: data.totalRevised, showCppOrCpm: true }\"\r\n                                >\r\n                                </ng-container>\r\n                            </td>\r\n                            <td>\r\n                                <ng-container\r\n                                    [ngTemplateOutlet]=\"tableData\"\r\n                                    [ngTemplateOutletContext]=\"{\r\n                                        value: data.projectedDeliveryWithoutAdu,\r\n                                        showCppOrCpm: false\r\n                                    }\"\r\n                                ></ng-container>\r\n                            </td>\r\n                            <td>\r\n                                <ng-container\r\n                                    [ngTemplateOutlet]=\"tableData\"\r\n                                    [ngTemplateOutletContext]=\"{\r\n                                        value: data.projectedDeliveryAdu,\r\n                                        showCppOrCpm: false\r\n                                    }\"\r\n                                >\r\n                                </ng-container>\r\n                            </td>\r\n                            <td>\r\n                                <ng-container\r\n                                    *ngIf=\"\r\n                                        !data.postedInfoAvailableForAllAiredSpots;\r\n                                        else postedInfoAvailableForAllAiredSpots\r\n                                    \"\r\n                                    [ngTemplateOutlet]=\"DataMissing\"\r\n                                ></ng-container>\r\n                                <ng-template #postedInfoAvailableForAllAiredSpots>\r\n                                    <ng-container\r\n                                        [ngTemplateOutlet]=\"tableData\"\r\n                                        [ngTemplateOutletContext]=\"{ value: data.totalBillable, showCppOrCpm: false }\"\r\n                                    >\r\n                                    </ng-container>\r\n                                </ng-template>\r\n                            </td>\r\n                            <td>\r\n                                {{ data.totalAgencyCommissionOnBillableAmount }}\r\n                            </td>\r\n                            <td>\r\n                                {{ data.netAmount }}\r\n                            </td>\r\n\r\n                            <td>\r\n                                <div>\r\n                                    {{ data.liability.value }}\r\n                                </div>\r\n                                <span>\r\n                                    <ng-container\r\n                                        *ngIf=\"\r\n                                            selectedMetric.text === orderMetricsEnum.rating;\r\n                                            else liabilityImpsTemplate\r\n                                        \"\r\n                                    >\r\n                                        {{ data.liability.UDGRP }} | {{ data.liability.UDLiabilityGrp }} |\r\n                                        {{ data.liability.ODGRP }}\r\n                                    </ng-container>\r\n                                    <ng-template #liabilityImpsTemplate>\r\n                                        {{ data.liability.UDIMPS }} | {{ data.liability.UDLiabilityImps }} |\r\n                                        {{ data.liability.ODIMPS }}\r\n                                    </ng-template>\r\n                                </span>\r\n                            </td>\r\n                        </tr>\r\n                    </ng-container>\r\n                    <div\r\n                        *ngIf=\"!loading && (!billingWiseData || billingWiseData?.length === 0)\"\r\n                        class=\"billing-no-data\"\r\n                    >\r\n                        <anna-core-no-data-lib [width]=\"noDataWidth\"> </anna-core-no-data-lib>\r\n                    </div>\r\n                </tbody>\r\n            </table>\r\n        </div>\r\n    </div>\r\n\r\n    <ng-template\r\n        #tableData\r\n        let-data=\"value\"\r\n        let-isBold=\"bold\"\r\n        let-showCppOrCpm=\"showCppOrCpm\"\r\n    >\r\n        <div [ngStyle]=\"{ 'font-weight': isBold ? 'bold' : 'normal' }\">\r\n            {{ data.value }}\r\n        </div>\r\n        <span>\r\n            {{ data.spot }} | {{ data[selectedKeys.grporImps] }}\r\n            <ng-container *ngIf=\"showCppOrCpm\"> | {{ data[selectedKeys.cpporCpm] }}</ng-container>\r\n        </span>\r\n    </ng-template>\r\n\r\n    <ng-template\r\n        #DataMissing\r\n        let-data=\"value\"\r\n    >\r\n        <div>-</div>\r\n        <span> <i>(Data missing for a few spots) </i></span>\r\n    </ng-template>\r\n\r\n    <ng-template\r\n        #secondaryTableHeader\r\n        let-showCppOrCpm=\"showCppOrCpm\"\r\n    >\r\n        <ng-container *ngIf=\"measurementName\">\r\n            <span\r\n                >SPOTS | {{ measurementName }}<ng-container *ngIf=\"showCppOrCpm\"> | {{ cppOrCpm }}</ng-container>\r\n            </span>\r\n        </ng-container>\r\n    </ng-template>\r\n</div>\r\n\r\n<ng-template #pfpCalculation>\r\n    <ul>\r\n        <li>For Pay for Spots(P4S) Orders, billable amount = Sigma (Booked Rate)</li>\r\n        <li>\r\n            For Payment on Delivery Orders,\r\n            <ul>\r\n                <li>\r\n                    Billable amount = Sigma (Booked Rate); if UD% is equal to or above the liability % specified in\r\n                    Business Rules\r\n                </li>\r\n                <li>\r\n                    Billable amount = Posted GRP/IMPS * Booked CPP/CPM; if UD % is less than the liability % specified\r\n                    in Business Rules\r\n                </li>\r\n            </ul>\r\n        </li>\r\n    </ul>\r\n</ng-template>\r\n\r\n<ng-template #showOrHideToggleForTotalRowTooltip>\r\n    <div>\r\n        {{ showOrHideToggleForTotalRow && !showTotalRow ? \"Show Total Row\" : \"Hide Total Row\" }}\r\n    </div>\r\n</ng-template>\r\n","import { NgClass, NgIf } from \"@angular/common\";\r\nimport {\r\n    ChangeDetectionStrategy,\r\n    Component,\r\n    EventEmitter,\r\n    Input,\r\n    NgZone,\r\n    OnInit,\r\n    Output,\r\n    Renderer2,\r\n    ViewChild,\r\n} from \"@angular/core\";\r\nimport { FormControl, FormsModule, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { MatIconModule } from \"@angular/material/icon\";\r\nimport { MatMenuModule } from \"@angular/material/menu\";\r\nimport { MatTableModule } from \"@angular/material/table\";\r\nimport { SpinnerButtonDirective } from \"@annalib/anna-cognito-lib\";\r\nimport { distinctUntilChanged } from \"rxjs/operators\";\r\n\r\nimport { IOrder, IOrderArray } from \"./models/global-order-search-header.model\";\r\n\r\n@Component({\r\n    selector: \"anna-feature-global-order-search-header\",\r\n    templateUrl: \"./global-order-search-header.component.html\",\r\n    styleUrls: [\"./global-order-search-header.component.scss\"],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    imports: [\r\n        NgIf,\r\n        NgClass,\r\n        MatIconModule,\r\n        FormsModule,\r\n        ReactiveFormsModule,\r\n        MatMenuModule,\r\n        MatTableModule,\r\n        SpinnerButtonDirective,\r\n    ]\r\n})\r\nexport class GlobalOrderSearchHeaderComponent implements OnInit {\r\n    @Input() allOrders: IOrderArray;\r\n    @Output() orderClicked = new EventEmitter<IOrder>();\r\n\r\n    searchInput: string = \"\";\r\n    showInputBox: boolean = false;\r\n    showLoading: boolean = true;\r\n    showError: boolean = false;\r\n    searchControl: FormControl = new FormControl();\r\n\r\n    foundOrders: IOrder[] = [];\r\n    renderedData: IOrder[] = [];\r\n\r\n    start: number = 0;\r\n    limit: number = 30;\r\n    end: number = this.limit + this.start;\r\n\r\n    tableHeight: number = 203;\r\n    displayedColumns: string[] = [\"orderId\", \"flightPeriod\", \"station\"];\r\n    selectedRowIndex: any = 0;\r\n\r\n    @ViewChild(\"scrollView\") viewPort: any;\r\n\r\n    constructor(\r\n        private ngZone: NgZone,\r\n        private renderer: Renderer2,\r\n    ) {}\r\n\r\n    ngOnInit() {\r\n        this.initializeSearch();\r\n    }\r\n\r\n    initializeSearch() {\r\n        this.showLoading = true;\r\n        this.showError = false;\r\n\r\n        this.searchControl.valueChanges.pipe(distinctUntilChanged()).subscribe(\r\n            (orderId: string) => {\r\n                this.foundOrders = this.getOrders(orderId);\r\n                this.showLoading = false;\r\n                this.showError = this.foundOrders.length === 0;\r\n                this.setTableHeight(this.foundOrders.length);\r\n                this.setInitialRowsForTable();\r\n            },\r\n            (error) => {\r\n                this.showError = true;\r\n            },\r\n        );\r\n    }\r\n\r\n    onKeyDown(event: KeyboardEvent) {\r\n        if (event.key === \"ArrowDown\") {\r\n            event.preventDefault(); // Prevent the default behavior of the down arrow key\r\n\r\n            const firstRow = document.querySelector(\r\n                \".search-table-container tr.mat-mdc-row:nth-child(1)\",\r\n            ) as HTMLElement;\r\n            if (firstRow) {\r\n                firstRow.click();\r\n                firstRow.focus();\r\n            }\r\n        }\r\n\r\n        if (event.key === \"Enter\") {\r\n            this.enterKeyEvent(0);\r\n        }\r\n    }\r\n\r\n    setTableHeight(rowCount: number) {\r\n        this.selectedRowIndex = 0;\r\n        const rowHeight = 24;\r\n        const headerHeight = 34;\r\n        if (this.foundOrders.length && this.foundOrders.length <= 5) {\r\n            this.tableHeight = headerHeight + rowHeight * rowCount;\r\n        } else if (this.tableHeight !== 203) {\r\n            this.tableHeight = 203;\r\n        }\r\n    }\r\n\r\n    getOrders(value: string): IOrder[] {\r\n        const filteredOrders: IOrder[] = this.allOrders.Orders.filter((order) =>\r\n            order.DisplayOrderId.toString().toLowerCase().includes(value.toLowerCase()),\r\n        );\r\n\r\n        filteredOrders.sort((a, b) => {\r\n            if (a.BuyerOrderId === b.BuyerOrderId) {\r\n                if (a.AltOrderId === b.AltOrderId) {\r\n                    return (b.StationName as any) - (a.StationName as any);\r\n                }\r\n                return (b.AltOrderId as any) - (a.AltOrderId as any);\r\n            }\r\n            return a.BuyerOrderId > b.BuyerOrderId ? 1 : -1;\r\n        });\r\n        return filteredOrders;\r\n    }\r\n\r\n    searchClicked() {\r\n        this.showInputBox = !this.showInputBox;\r\n        this.setFocus(\"#searchInputBox\");\r\n    }\r\n\r\n    setFocus(selector: string): void {\r\n        this.ngZone.runOutsideAngular(() => {\r\n            setTimeout(() => {\r\n                this.renderer.selectRootElement(selector).focus();\r\n            }, 0);\r\n        });\r\n    }\r\n\r\n    closeClick() {\r\n        this.showInputBox = !this.showInputBox;\r\n        this.searchInput = \"\";\r\n        this.foundOrders = null;\r\n        this.showLoading = false;\r\n        this.showError = false;\r\n        this.showInputBox = false;\r\n    }\r\n\r\n    onOrderClicked(order: IOrder) {\r\n        this.orderClicked.emit(order);\r\n        this.closeClick();\r\n    }\r\n\r\n    isBusinessRuleSet(status: string): boolean {\r\n        if (status.toLowerCase() === \"notify\" || status.toLowerCase() === \"rejected\") {\r\n            return false;\r\n        }\r\n        return true;\r\n    }\r\n\r\n    trackByFn(index: number) {\r\n        return index;\r\n    }\r\n\r\n    highlight(row: any, index: any) {\r\n        if (index >= 0 && this.foundOrders?.length && index <= this.foundOrders.length - 1) {\r\n            this.selectedRowIndex = index;\r\n            this.viewPort.nativeElement.scrollTop = 24 * this.selectedRowIndex - 24 * 6;\r\n        }\r\n    }\r\n\r\n    arrowUpEvent(row: object, index: number) {\r\n        if (index === 0) {\r\n            this.setFocus(\"#searchInputBox\");\r\n            return;\r\n        }\r\n        const nextrow = this.foundOrders[index - 1];\r\n        this.highlight(nextrow, index - 1);\r\n    }\r\n\r\n    arrowDownEvent(row: object, index: number) {\r\n        const nextrow = this.foundOrders[index + 1];\r\n        this.highlight(nextrow, index + 1);\r\n    }\r\n\r\n    enterKeyEvent(index: number) {\r\n        if (this.foundOrders && this.foundOrders.length > 0) {\r\n            this.onOrderClicked(this.foundOrders[index]);\r\n        } else {\r\n            this.closeClick();\r\n        }\r\n    }\r\n\r\n    onTableContainerScroll(e: any) {\r\n        const tableViewHeight = e.target.offsetHeight; // viewport\r\n        const tableScrollHeight = e.target.scrollHeight; // length of all table\r\n        const scrollLocation = e.target.scrollTop; // how far user scrolled\r\n\r\n        // If the user has scrolled within 150px of the bottom, add more data\r\n        const buffer = 150;\r\n        const limit = tableScrollHeight - tableViewHeight - buffer;\r\n        if (scrollLocation > limit) {\r\n            const data = this.getTableData(this.start, this.end);\r\n            this.renderedData = this.renderedData.concat(data);\r\n            this.updateIndex();\r\n        }\r\n    }\r\n\r\n    setInitialRowsForTable() {\r\n        this.resetIndex();\r\n        this.renderedData = this.getTableData(this.start, this.end);\r\n        this.updateIndex();\r\n    }\r\n\r\n    getTableData(start: number, end: number) {\r\n        return this.foundOrders.filter((value, index) => index >= start && index < end);\r\n    }\r\n\r\n    updateIndex() {\r\n        this.start = this.end;\r\n        this.end = this.limit + this.start;\r\n    }\r\n    resetIndex() {\r\n        this.start = 0;\r\n        this.end = this.limit + this.start;\r\n    }\r\n}\r\n","<div class=\"main-div\">\r\n    <button\r\n        class=\"search-btn\"\r\n        *ngIf=\"!showInputBox\"\r\n        (click)=\"searchClicked()\"\r\n        [disabled]=\"!allOrders?.Orders?.length\"\r\n        [ngClass]=\"{ 'search-icon-disable': !allOrders?.Orders?.length }\"\r\n    >\r\n        <i class=\"white-theme mdi mdi-magnify mat-icon\"></i>\r\n    </button>\r\n\r\n    <div\r\n        *ngIf=\"showInputBox\"\r\n        class=\"input-div\"\r\n    >\r\n        <input\r\n            id=\"searchInputBox\"\r\n            type=\"text\"\r\n            class=\"form-control search-box\"\r\n            (keyup)=\"searchInput.length && menuTrigger.openMenu()\"\r\n            placeholder=\"Search for a Station Order# or Alt Order#\"\r\n            [formControl]=\"searchControl\"\r\n            [(ngModel)]=\"searchInput\"\r\n            autocomplete=\"off\"\r\n            (keydown)=\"onKeyDown($event)\"\r\n        />\r\n        <i\r\n            (click)=\"closeClick()\"\r\n            class=\"close-button mat-icon mdi mdi-close\"\r\n        ></i>\r\n    </div>\r\n</div>\r\n\r\n<div\r\n    #menuTrigger=\"matMenuTrigger\"\r\n    [matMenuTriggerFor]=\"contextMenu\"\r\n>\r\n    <mat-menu\r\n        backdropClass=\"global-search\"\r\n        class=\"global-search\"\r\n        #contextMenu=\"matMenu\"\r\n    >\r\n        <div (click)=\"$event.stopPropagation()\">\r\n            <ng-container *ngIf=\"searchInput.length && showLoading && !showError; then loading\"></ng-container>\r\n            <ng-container *ngIf=\"foundOrders && searchInput.length && !showLoading && !showError; then results\">\r\n            </ng-container>\r\n            <ng-container *ngIf=\"showError; then errorHandler\"></ng-container>\r\n            <ng-container *ngIf=\"!searchInput.length && menuTrigger.closeMenu()\"></ng-container>\r\n        </div>\r\n    </mat-menu>\r\n</div>\r\n<ng-template #results>\r\n    <div class=\"results-box\">\r\n        <div\r\n            class=\"search-table-container\"\r\n            #scrollView\r\n            [style.maxHeight.px]=\"tableHeight\"\r\n            (scroll)=\"onTableContainerScroll($event)\"\r\n        >\r\n            <table\r\n                mat-table\r\n                [dataSource]=\"renderedData\"\r\n            >\r\n                <ng-container matColumnDef=\"orderId\">\r\n                    <th\r\n                        mat-header-cell\r\n                        *matHeaderCellDef\r\n                    >\r\n                        STN ORDER# (ALT ORDER#)\r\n                    </th>\r\n                    <td\r\n                        mat-cell\r\n                        *matCellDef=\"let order\"\r\n                    >\r\n                        <button\r\n                            (click)=\"onOrderClicked(order)\"\r\n                            class=\"order-button\"\r\n                        >\r\n                            {{ order?.DisplayOrderId }}\r\n                        </button>\r\n                    </td>\r\n                </ng-container>\r\n                <ng-container matColumnDef=\"flightPeriod\">\r\n                    <th\r\n                        mat-header-cell\r\n                        *matHeaderCellDef\r\n                    >\r\n                        FLIGHT PERIOD\r\n                    </th>\r\n                    <td\r\n                        mat-cell\r\n                        *matCellDef=\"let order\"\r\n                    >\r\n                        {{ order.FlightStartDate }} - {{ order.FlightEndDate }}\r\n                    </td>\r\n                </ng-container>\r\n                <ng-container matColumnDef=\"station\">\r\n                    <th\r\n                        mat-header-cell\r\n                        *matHeaderCellDef\r\n                    >\r\n                        STATION\r\n                    </th>\r\n                    <td\r\n                        mat-cell\r\n                        *matCellDef=\"let order\"\r\n                    >\r\n                        {{ order.StationName }}\r\n                    </td>\r\n                </ng-container>\r\n\r\n                <tr\r\n                    mat-header-row\r\n                    *matHeaderRowDef=\"displayedColumns; sticky: true\"\r\n                ></tr>\r\n                <tr\r\n                    mat-row\r\n                    *matRowDef=\"let row; columns: displayedColumns; let i = index\"\r\n                    (click)=\"highlight(row, i)\"\r\n                    [ngClass]=\"{ highlight: selectedRowIndex === i }\"\r\n                    tabindex=\"999\"\r\n                    (keydown.arrowdown)=\"arrowDownEvent(row, selectedRowIndex)\"\r\n                    (keydown.arrowup)=\"arrowUpEvent(row, selectedRowIndex)\"\r\n                    (keydown.enter)=\"enterKeyEvent(selectedRowIndex)\"\r\n                ></tr>\r\n            </table>\r\n        </div>\r\n    </div>\r\n</ng-template>\r\n\r\n<ng-template #loading>\r\n    <div class=\"results-box loading-box\">\r\n        <div\r\n            annaCognitoSpinnerBtn\r\n            [spinnerButtonLoading]=\"true\"\r\n            class=\"spinner\"\r\n        ></div>\r\n        <div>Searching for {{ searchInput }}</div>\r\n    </div>\r\n</ng-template>\r\n\r\n<ng-template #errorHandler>\r\n    <div class=\"error-box\">Sorry, we couldn't find any results. Try searching again.</div>\r\n</ng-template>\r\n","import { ClickableItem } from \"@annalib/anna-core\";\r\n\r\nimport { StartEndDate } from \"../../primary-order-panel/models/primary-order-panel.model\";\r\n\r\nexport class HiatusTableDataForPopup {\r\n    dateToDisplay: string;\r\n    gtClass: string;\r\n    action: ClickableItem[] = [];\r\n\r\n    constructor(date: any, enableEdit: boolean) {\r\n        this.dateToDisplay = date;\r\n        this.gtClass = enableEdit ? \"remove-action-tr\" : \"remove-action-tr disable\";\r\n\r\n        const text = \"Remove\";\r\n        const typeOfAction = HiatusTableActionTypeForGt.REMOVE_ACTION;\r\n        this.action.push(new ClickableItem(typeOfAction, text, this.gtClass, false, null));\r\n    }\r\n}\r\nexport enum HiatusTableActionTypeForGt {\r\n    REMOVE_ACTION = \"REMOVE\",\r\n}\r\n\r\nexport interface SaveHiatusDatesForEntryPayload {\r\n    StationId: number;\r\n    OrderId: string;\r\n    Comment: string;\r\n    SellerId?: number | string;\r\n    CentralBuyerId?: number | string;\r\n    HiatusDatesToSave: StartEndDate[];\r\n}\r\n\r\nexport interface HiatusSaveEmitObject {\r\n    hiatusDates: StartEndDate[];\r\n    sellerComments?: string;\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { IGtTableHeader } from \"@annalib/anna-core\";\r\n\r\n@Injectable({\r\n    providedIn: \"root\",\r\n})\r\nexport class HiatusWindowPopupService {\r\n    getHiatusDateTableHeaders(): IGtTableHeader[] {\r\n        return [\r\n            {\r\n                headerInfo: [\r\n                    {\r\n                        name: \"DATES\",\r\n                        objectKey: \"dateToDisplay\",\r\n                        typeOfHeaderData: \"STRING\",\r\n                        showTooltipIcon: false,\r\n                        typeOfBodyData: \"STRING\",\r\n                    },\r\n                ],\r\n                visible: true,\r\n                width: \"300px\",\r\n            },\r\n            {\r\n                headerInfo: [\r\n                    {\r\n                        name: \"ACTION\",\r\n                        objectKey: \"action\",\r\n                        actionKey: \"action\",\r\n                        typeOfHeaderData: \"STRING\",\r\n                        showTooltipIcon: false,\r\n                        typeOfBodyData: \"CLICKABLE_DATA\",\r\n                    },\r\n                ],\r\n                visible: true,\r\n                width: \"17%\",\r\n            },\r\n        ];\r\n    }\r\n}\r\n","import { NgClass, NgIf } from \"@angular/common\";\r\nimport {\r\n    ChangeDetectionStrategy,\r\n    Component,\r\n    EventEmitter,\r\n    Input,\r\n    OnChanges,\r\n    OnInit,\r\n    Output,\r\n    SimpleChanges,\r\n} from \"@angular/core\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport {\r\n    AnnaCalendarFilterComponent,\r\n    AnnaDateTimeFormatService,\r\n    AnnaGlobalConfigService,\r\n    AnnaNonEditableGenericTableComponent,\r\n    IConfirmationPopupConfig,\r\n    IGtGeneralConfig,\r\n    IGtTableHeader,\r\n    NgbDateType,\r\n} from \"@annalib/anna-core\";\r\nimport { MessageBoxComponent, MessageBoxData } from \"@annalib/anna-design-components-lib\";\r\nimport { NgbDate, NgbDateStruct } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport dayjs from \"dayjs\";\r\nimport { cloneDeep, isEqual } from \"lodash-es\";\r\n\r\nimport { HiatusDetailsForPopup, StartEndDate } from \"../primary-order-panel/models/primary-order-panel.model\";\r\nimport { HiatusSaveEmitObject, HiatusTableDataForPopup } from \"./model/hiatus-window-popup.model\";\r\nimport { HiatusWindowPopupService } from \"./service/hiatus-window-popup.service.ts.service\";\r\n\r\n@Component({\r\n    selector: \"anna-feature-hiatus-window-popup\",\r\n    templateUrl: \"./hiatus-window-popup.component.html\",\r\n    styleUrls: [\"./hiatus-window-popup.component.scss\"],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    imports: [\r\n        MessageBoxComponent,\r\n        NgClass,\r\n        NgIf,\r\n        AnnaCalendarFilterComponent,\r\n        AnnaNonEditableGenericTableComponent,\r\n        FormsModule,\r\n    ]\r\n})\r\nexport class HiatusWindowPopupComponent implements OnInit, OnChanges {\r\n    @Input() hiatusInfoForPopup: HiatusDetailsForPopup = null;\r\n    @Input() hiatusDatesArr: StartEndDate[] = []; // mandatory\r\n    @Input() topInfoMessage: MessageBoxData = null;\r\n    @Input() popupHeaderMessage: string; // mandatory\r\n    @Input() editMode: boolean = false;\r\n    @Input() calendarMinEnabledDate: NgbDateType; // mandatory\r\n    @Input() calendarMaxEnabledDate: NgbDateType; // mandatory\r\n    @Input() showSellerComments: boolean = false;\r\n    @Input() saveButtonText: string = \"Save\";\r\n    @Output() closePopup = new EventEmitter<void>();\r\n    @Output() hiatusDatesSaved = new EventEmitter<HiatusSaveEmitObject>();\r\n    @Output() hiatusMergedDisplayText = new EventEmitter<string>(); // used only for Pending EC\r\n\r\n    // @ViewChild(\"hiatusWindowPopup\") private hiatusWindowPopupTemplate:TemplateRef<any>;\r\n    // hiatusPopupRefernce:NgbModalRef\r\n    selectedFromDate: any;\r\n    selectedToDate: any;\r\n    hiatusDatesToSave: StartEndDate[] = [];\r\n    maxRowsRenderedWithoutScroll = 3;\r\n    gtGeneralConfig: IGtGeneralConfig;\r\n    haitusTableHeaders: IGtTableHeader[];\r\n    hiatusDateInputText: string;\r\n    hiatusTableGtDimension = { rowHeight: 24, headerHeight: 34, dataOnTopHeight: 340, marginFromBottom: 20 };\r\n    sellerCommentsInvalid: boolean = false;\r\n    disableDatesForCalenderFunction = (date: NgbDateStruct) => false;\r\n    disableSaveForEntryButton: boolean = true;\r\n    haitusDatesTableData: HiatusTableDataForPopup[] = [];\r\n    hiatusDatesTableDataClonned: HiatusTableDataForPopup[] = [];\r\n    config: IConfirmationPopupConfig;\r\n\r\n    constructor(\r\n        private annaDateTimeFormatService: AnnaDateTimeFormatService,\r\n        private hiatusWindowService: HiatusWindowPopupService,\r\n        private annaGlobalConfig: AnnaGlobalConfigService,\r\n        // private modalService: NgbModal,\r\n    ) {}\r\n\r\n    ngOnChanges(changes: SimpleChanges) {\r\n        if (changes.hiatusDatesArr && changes.hiatusDatesArr.currentValue) {\r\n            this.setHiatusTableData();\r\n            this.updateDisableDatesForCalenderFunction();\r\n            this.disableSaveForEntryButtonFunc();\r\n        }\r\n    }\r\n\r\n    ngOnInit() {\r\n        this.config = { ...this.annaGlobalConfig.defaultConfirmationPopupConfig };\r\n        this.haitusTableHeaders = this.hiatusWindowService.getHiatusDateTableHeaders();\r\n        this.gtGeneralConfig = { ...this.annaGlobalConfig.defaultGtGeneralConfig };\r\n    }\r\n\r\n    resetSelectedDateRange() {\r\n        this.selectedFromDate = null;\r\n        this.selectedToDate = null;\r\n    }\r\n\r\n    setHiatusTableData() {\r\n        this.haitusDatesTableData = [];\r\n\r\n        this.hiatusDatesArr.forEach((item: StartEndDate) => {\r\n            const displayDate =\r\n                item.StartDate === item.EndDate ? item.StartDate : `${item.StartDate} - ${item.EndDate}`;\r\n            this.haitusDatesTableData.push(new HiatusTableDataForPopup(displayDate, this.editMode));\r\n        });\r\n        this.haitusDatesTableData = this.mergeDateRange();\r\n        this.hiatusDatesTableDataClonned = cloneDeep(this.haitusDatesTableData);\r\n        this.updateHiatusDateInputText();\r\n    }\r\n    // this.enableDisableHiatusDateSaveBtn();\r\n\r\n    updateDisableDatesForCalenderFunction() {\r\n        const datesToDisabled: any = [];\r\n        this.haitusDatesTableData.forEach((item) => {\r\n            const startDate = item.dateToDisplay.includes(\"-\")\r\n                ? item.dateToDisplay.split(\"-\")[0].trim()\r\n                : item.dateToDisplay;\r\n            const endDate = item.dateToDisplay.includes(\"-\")\r\n                ? item.dateToDisplay.split(\"-\")[1].trim()\r\n                : item.dateToDisplay;\r\n\r\n            let dayjsStartDate = dayjs(startDate, \"MM/DD/YY\");\r\n            const dayjsEndDate = dayjs(endDate, \"MM/DD/YY\");\r\n\r\n            while (!dayjsStartDate.isSame(dayjsEndDate)) {\r\n                datesToDisabled.push(dayjsStartDate.format(\"MM/DD/YY\"));\r\n                dayjsStartDate = dayjsStartDate.add(1, \"day\");\r\n            }\r\n            datesToDisabled.push(dayjsStartDate.format(\"MM/DD/YY\"));\r\n        });\r\n\r\n        this.disableDatesForCalenderFunction = (date: NgbDateStruct) => {\r\n            const dateInStringFormat = this.annaDateTimeFormatService.convertNgbDateToMomentInSpecificFormat(\r\n                date,\r\n                \"MM/DD/YY\",\r\n            );\r\n            return datesToDisabled.includes(dateInStringFormat);\r\n        };\r\n        this.haitusDatesTableData = this.mergeDateRange();\r\n    }\r\n\r\n    cancelSelectedDate() {\r\n        this.resetSelectedDateRange();\r\n    }\r\n\r\n    updateHiatusDate(dateRange: { fromDate: NgbDate; toDate: NgbDate }) {\r\n        const formattedStartDate = this.annaDateTimeFormatService.convertNgbDateToMomentInSpecificFormat(\r\n            dateRange.fromDate,\r\n            \"MM/DD/YY\",\r\n        );\r\n        const formattedEndDate = this.annaDateTimeFormatService.convertNgbDateToMomentInSpecificFormat(\r\n            dateRange.toDate,\r\n            \"MM/DD/YY\",\r\n        );\r\n\r\n        const displayDate =\r\n            formattedStartDate === formattedEndDate\r\n                ? formattedStartDate\r\n                : `${formattedStartDate} - ${formattedEndDate}`;\r\n        // let displayDate= dateRange.fromDate == dateRange.toDate ? dateRange.fromDate : `${dateRange.fromDate} - ${dateRange.toDate}`;\r\n        this.haitusDatesTableData.push(new HiatusTableDataForPopup(displayDate, this.editMode));\r\n        this.haitusDatesTableData = [...this.haitusDatesTableData];\r\n        this.resetSelectedDateRange();\r\n        this.updateDisableDatesForCalenderFunction();\r\n        this.disableSaveForEntryButtonFunc();\r\n    }\r\n\r\n    updateHiatusDateInputText() {\r\n        this.hiatusDateInputText = this.haitusDatesTableData.map((item) => item.dateToDisplay).join(\", \");\r\n        this.hiatusMergedDisplayText.emit(this.hiatusDateInputText);\r\n    }\r\n\r\n    saveHiatusDates() {\r\n        this.haitusDatesTableData = this.mergeDateRange();\r\n        this.haitusDatesTableData.forEach((item: HiatusTableDataForPopup) => {\r\n            const startDate = item.dateToDisplay.includes(\"-\")\r\n                ? item.dateToDisplay.split(\"-\")[0].trim()\r\n                : item.dateToDisplay;\r\n            const endDate = item.dateToDisplay.includes(\"-\")\r\n                ? item.dateToDisplay.split(\"-\")[1].trim()\r\n                : item.dateToDisplay;\r\n            const date = {\r\n                StartDate: startDate,\r\n                EndDate: endDate,\r\n            };\r\n            this.hiatusDatesToSave.push(date);\r\n        });\r\n\r\n        const objToEmit = {\r\n            hiatusDates: this.hiatusDatesToSave,\r\n            sellerComments: this.showSellerComments ? this.hiatusInfoForPopup?.sellerComments : null,\r\n        };\r\n\r\n        this.hiatusDatesSaved.emit(objToEmit);\r\n        this.updateHiatusDateInputText();\r\n    }\r\n\r\n    mergeDateRange() {\r\n        const mergedRanges: any = [];\r\n\r\n        if (this.haitusDatesTableData.length === 0) {\r\n            return mergedRanges;\r\n        }\r\n\r\n        this.haitusDatesTableData.sort((a, b) => {\r\n            const aStartDate = a.dateToDisplay.includes(\"-\") ? a.dateToDisplay.split(\"-\")[0].trim() : a.dateToDisplay;\r\n            const bStartDate = b.dateToDisplay.includes(\"-\") ? b.dateToDisplay.split(\"-\")[0].trim() : b.dateToDisplay;\r\n            return dayjs(aStartDate, \"MM/DD/YY\").diff(dayjs(bStartDate, \"MM/DD/YY\"));\r\n        });\r\n\r\n        let currentRange: HiatusTableDataForPopup = cloneDeep(this.haitusDatesTableData[0]);\r\n\r\n        for (let i = 1; i < this.haitusDatesTableData.length; i++) {\r\n            const nextRange = this.haitusDatesTableData[i];\r\n            const currentRangeStartDate = currentRange.dateToDisplay.includes(\"-\")\r\n                ? currentRange.dateToDisplay.split(\"-\")[0].trim()\r\n                : currentRange.dateToDisplay;\r\n            const currentRangeEndDate = currentRange.dateToDisplay.includes(\"-\")\r\n                ? currentRange.dateToDisplay.split(\"-\")[1].trim()\r\n                : currentRange.dateToDisplay;\r\n\r\n            const currentDayjsRangeEndDate = dayjs(currentRangeEndDate, \"MM/DD/YY\");\r\n\r\n            const [nextDayjsRangeStartDate, nextDayjsRangeEndDate] = this.getDateFromHiatusDateTableData(i);\r\n\r\n            if (currentDayjsRangeEndDate.add(1, \"d\").isSame(nextDayjsRangeStartDate)) {\r\n                currentRange.dateToDisplay = `${currentRangeStartDate} - ${nextDayjsRangeEndDate.format(\"MM/DD/YY\")}`;\r\n            } else {\r\n                mergedRanges.push(currentRange);\r\n                currentRange = nextRange;\r\n            }\r\n        }\r\n\r\n        mergedRanges.push(currentRange);\r\n\r\n        return mergedRanges;\r\n    }\r\n    // rowData: { data: ActiveStationUsers, id: TypeOfActionLinkForGtEnum,\r\n    hiatusTableActionClicked(rowData: { data: HiatusTableDataForPopup }) {\r\n        this.haitusDatesTableData = this.haitusDatesTableData.filter(\r\n            (item) => item.dateToDisplay !== rowData.data.dateToDisplay,\r\n        );\r\n        this.haitusDatesTableData = [...this.haitusDatesTableData];\r\n        this.updateDisableDatesForCalenderFunction();\r\n        this.disableSaveForEntryButtonFunc();\r\n        // this.disableHiatusDatesSaveBtn = isEqual(this.haitusDatesTableData, this.clonedHiatusTableData) || isEqual (this.hiatusData.sellerComments,this.hiatusDatesClonned.sellerComments);\r\n    }\r\n\r\n    getDateFromHiatusDateTableData(index: number) {\r\n        const dateRange = this.haitusDatesTableData[index].dateToDisplay;\r\n        const startDate = dateRange.includes(\"-\") ? dateRange.split(\"-\")[0].trim() : dateRange;\r\n        const endDate = dateRange.includes(\"-\") ? dateRange.split(\"-\")[1].trim() : dateRange;\r\n\r\n        return [dayjs(startDate, \"MM/DD/YY\"), dayjs(endDate, \"MM/DD/YY\")];\r\n    }\r\n\r\n    closeHiatusDatePopup() {\r\n        this.closePopup.emit();\r\n    }\r\n\r\n    sellerCommentChanged(event: any) {\r\n        this.sellerCommentsInvalid = /[`!@#$%^&*()_+\\-=[\\]{};':\"\\\\|<>/?~]/.test(event);\r\n        this.disableSaveForEntryButtonFunc();\r\n    }\r\n\r\n    changesMadeInCommentBox(e: any) {\r\n        if (!/[a-zA-Z0-9 .,]/.test(e.key)) {\r\n            e.preventDefault();\r\n        }\r\n    }\r\n\r\n    disableSaveForEntryButtonFunc() {\r\n        this.disableSaveForEntryButton = isEqual(this.hiatusDatesTableDataClonned, this.haitusDatesTableData);\r\n    }\r\n}\r\n","<div class=\"modal-header\">\r\n    <h3 class=\"modal-title\">\r\n        {{ popupHeaderMessage }}\r\n    </h3>\r\n</div>\r\n<div class=\"modal-body\">\r\n    <span\r\n        class=\"last-edit-text\"\r\n        *ngIf=\"hiatusInfoForPopup?.lastEditAndEnteredOnTrafficMessage !== ''\"\r\n        [innerHTML]=\"hiatusInfoForPopup?.lastEditAndEnteredOnTrafficMessage\"\r\n    ></span>\r\n\r\n    <anna-design-message-box\r\n        *ngIf=\"topInfoMessage\"\r\n        class=\"info-msg-top\"\r\n        [messageBoxData]=\"topInfoMessage\"\r\n    ></anna-design-message-box>\r\n\r\n    <div\r\n        class=\"status-container\"\r\n        *ngIf=\"hiatusInfoForPopup?.hiatusStatusTextToDisplay\"\r\n    >\r\n        <div\r\n            class=\"status-tag\"\r\n            [ngClass]=\"hiatusInfoForPopup?.statusClass\"\r\n        >\r\n            <span [ngClass]=\"hiatusInfoForPopup?.hiatusStatusIconClasss\"></span>\r\n            <span class=\"status-text\">{{ hiatusInfoForPopup?.hiatusStatusTextToDisplay }}</span>\r\n        </div>\r\n    </div>\r\n\r\n    <section\r\n        class=\"hiatus-date-picker-section\"\r\n        *ngIf=\"editMode\"\r\n    >\r\n        <span>Please select the dates to be marked as hiatus.</span>\r\n\r\n        <anna-core-calendar-filter-lib\r\n            class=\"hiatus-calendar\"\r\n            [placeholder]=\"'Select hiatus dates'\"\r\n            [showFooterTemplate]=\"true\"\r\n            [autoClose]=\"false\"\r\n            [dateFormat]=\"'MM/DD/YY'\"\r\n            [selectedFromDate]=\"selectedFromDate\"\r\n            [selectedToDate]=\"selectedToDate\"\r\n            [disableFunction]=\"disableDatesForCalenderFunction\"\r\n            [maxDate]=\"calendarMaxEnabledDate\"\r\n            [minDate]=\"calendarMinEnabledDate\"\r\n            (apply)=\"updateHiatusDate($event)\"\r\n            (cancel)=\"cancelSelectedDate()\"\r\n            [placement]=\"['bottom-start']\"\r\n        >\r\n        </anna-core-calendar-filter-lib>\r\n    </section>\r\n\r\n    <i class=\"count-text\"\r\n        >Selected Hiatus period: <b>{{ haitusDatesTableData.length }}</b></i\r\n    >\r\n\r\n    <anna-core-non-editable-generic-table-lib\r\n        class=\"hiatus-generic-table\"\r\n        [showSkeletonLoading]=\"false\"\r\n        [tableHeaders]=\"haitusTableHeaders\"\r\n        [tableData]=\"haitusDatesTableData\"\r\n        [fixNumberOfRowsForPopup]=\"true\"\r\n        [maximumRowsWhichCanBeRenderedWithoutScroll]=\"maxRowsRenderedWithoutScroll\"\r\n        [clonedTableData]=\"hiatusDatesTableDataClonned\"\r\n        [gtGeneralConfig]=\"gtGeneralConfig\"\r\n        [gtDimension]=\"hiatusTableGtDimension\"\r\n        (clickableDataClicked)=\"hiatusTableActionClicked($event)\"\r\n    >\r\n    </anna-core-non-editable-generic-table-lib>\r\n\r\n    <section\r\n        class=\"seller-comments-section\"\r\n        *ngIf=\"showSellerComments\"\r\n    >\r\n        <span>Seller Comments</span>\r\n\r\n        <textarea\r\n            [(ngModel)]=\"hiatusInfoForPopup.sellerComments\"\r\n            spellcheck=\"false\"\r\n            id=\"sellerCommentInput\"\r\n            [disabled]=\"hiatusInfoForPopup?.disableSellerComments\"\r\n            (keydown)=\"changesMadeInCommentBox($event)\"\r\n            (ngModelChange)=\"sellerCommentChanged($event)\"\r\n            (keyup)=\"disableSaveForEntryButtonFunc()\"\r\n        ></textarea>\r\n    </section>\r\n    <div class=\"button-container\">\r\n        <button\r\n            class=\"anna cancel-button\"\r\n            (click)=\"closeHiatusDatePopup()\"\r\n        >\r\n            Cancel\r\n        </button>\r\n        <button\r\n            class=\"anna apply-button\"\r\n            [disabled]=\"disableSaveForEntryButton\"\r\n            (click)=\"saveHiatusDates()\"\r\n        >\r\n            {{ saveButtonText }}\r\n        </button>\r\n    </div>\r\n</div>\r\n","import { InjectionToken } from \"@angular/core\";\r\nimport { Observable } from \"rxjs\";\r\n\r\nimport { LineDetailsPayload } from \"../models/line-details.model\";\r\n\r\n/** Token to inject the acl service */\r\nexport const LINE_DETAILS_PAGE_SERVICE_TOKEN: InjectionToken<any> = new InjectionToken<ILineDetailsBackendService>(\r\n    \"SpotsApprovalBackendService token\",\r\n);\r\n\r\nexport interface ILineDetailsBackendService {\r\n    getLineDetails(selectedLine: \"SellerLine\" | \"BuyerLine\", payload: LineDetailsPayload): Observable<any>;\r\n}\r\n","import { OrderMetrics } from \"@annalib/anna-feature-shared-lib\";\r\n\r\nexport interface LineDetailsTableHeader {\r\n    columnName: string;\r\n    lowerData: string;\r\n    filterRequired?: boolean;\r\n    upperColumnFilter: IFilterOBJ;\r\n    lowerColumnFilter?: IFilterOBJ;\r\n    isToolTipRequired?: boolean[];\r\n    toolTipMsg?: string[];\r\n    width: string;\r\n}\r\n\r\nexport type IFilterTypes = \"CHECKBOX\" | \"DATE\" | \"TIME\" | \"SLIDER\";\r\n\r\nexport interface IFilterOBJ {\r\n    columnKeys: string[];\r\n    filterType?: IFilterTypes;\r\n    isSortRequired: boolean[];\r\n    isFilterRequired: boolean[];\r\n}\r\nexport interface LineDetailsPayload {\r\n    StationId: number;\r\n    OrderId: string;\r\n    StartDate: string;\r\n    EndDate: string;\r\n    IsEquivalised: boolean;\r\n}\r\n\r\nexport interface IEasyFilters {\r\n    isEnabled: boolean;\r\n    isActive: boolean;\r\n    filterName: string;\r\n    onlyEnabled?: boolean;\r\n}\r\n\r\nexport interface IPersistingFiltersLineDetails {\r\n    easyFilters?: IEasyFilters[];\r\n    columnLevelFilters?: any;\r\n    selectedLine?: \"SellerLine\" | \"BuyerLine\";\r\n    metricType?: OrderMetrics | string;\r\n    showSublines?: boolean;\r\n}\r\n\r\nexport class LineDetailsTableData {\r\n    isADULine: boolean;\r\n    lineNumber: string;\r\n    buyerProgram: string;\r\n    sellerProgram: string;\r\n    sellerProgramList: string[];\r\n    inventoryCodeSellerProgramMap: IInvCodeSellerPgmMap[];\r\n    inventoryCode: string;\r\n    sellerProgInvCode: string;\r\n    inventoryDays: string;\r\n    inventoryTime: string;\r\n    startDate: string;\r\n    endDate: string;\r\n    daypart: string;\r\n    length: string;\r\n    rate: number;\r\n    rating: number;\r\n    IMPS: number;\r\n    bookedGRP: number;\r\n    bookedGI: number;\r\n    projectedGI: number;\r\n    projectedGRP: number;\r\n    projectedGIToDisplay: number | string;\r\n    projectedGRPToDisplay: number | string;\r\n    spots: number;\r\n    amount: number;\r\n    weekSpots: number[];\r\n    parentExpandlableLineID: number;\r\n    isParentRowWithSublines: boolean;\r\n    isExpaded: boolean | null = null;\r\n    isSubline: boolean;\r\n    subLines: LineDetailsTableData[];\r\n    spotType: string;\r\n    rowClass: string = \"\";\r\n    TimeBand: string[] = [];\r\n    startTime: string;\r\n    endTime: string;\r\n    constructor(data: any, isADULine: boolean, subLine: boolean = false, expandID: number = -1) {\r\n        this.isADULine = subLine ? isADULine : data.IsAduLine;\r\n        this.lineNumber = data.LineNumber?.toString();\r\n        this.buyerProgram = data.BuyerProgramName ?? \"-\";\r\n        this.inventoryCode = data.InventoryCodeSellerProgramMap?.length\r\n            ? data.InventoryCodeSellerProgramMap[0].InventoryCode[0] ?? \"-\"\r\n            : \"-\";\r\n        this.sellerProgram = data.InventoryCodeSellerProgramMap?.length\r\n            ? data.InventoryCodeSellerProgramMap[0].SellerProgramName[0] ?? \"-\"\r\n            : \"-\";\r\n\r\n        this.sellerProgramList = data.InventoryCodeSellerProgramMap?.length\r\n            ? Array.from(\r\n                new Set<string>(data.InventoryCodeSellerProgramMap.flatMap((item: any) => item.SellerProgramName))\r\n            ).slice(1)\r\n            : [];\r\n        \r\n        this.inventoryCodeSellerProgramMap = data.InventoryCodeSellerProgramMap;\r\n\r\n        this.sellerProgInvCode =\r\n            this.inventoryCode && this.inventoryCode !== \"-\" ? `${this.sellerProgram} (${this.inventoryCode})` : \"-\";\r\n\r\n        this.inventoryDays = data.Days;\r\n        this.inventoryTime = data.Time;\r\n        this.TimeBand = data.TimeBand;\r\n        this.startTime = data.TimeBand?.length ? data.TimeBand[1] : \"\";\r\n        this.endTime = data.TimeBand?.length ? data.TimeBand[2] : \"\";\r\n        this.startDate = data.StartDate ? data.StartDate : \"-\";\r\n        this.endDate = data.EndDate ? data.EndDate : \"-\";\r\n        this.daypart = data.Daypart;\r\n        this.length = data.Length;\r\n        this.rate = data.Rate;\r\n        this.rating = parseFloat(data?.Ratings.toFixed(2));\r\n        this.IMPS = parseFloat(data?.Impressions.toFixed(1));\r\n        this.bookedGI = parseFloat(data?.BookedGI.toFixed(2));\r\n        this.bookedGRP = parseFloat(data?.BookedGRP.toFixed(2));\r\n        this.projectedGI = data?.ProjectedGI ? parseFloat(data?.ProjectedGI.toFixed(1)) : null;\r\n        this.projectedGRP = data?.ProjectedGRP ? parseFloat(data?.ProjectedGRP.toFixed(2)) : null;\r\n        this.spots = data.Spots;\r\n        this.amount = data.Amount;\r\n        this.weekSpots = data.WeekWiseSpotsCount.map((week: any) => week.SpotCount);\r\n        this.parentExpandlableLineID = expandID;\r\n        this.isSubline = subLine;\r\n        this.isParentRowWithSublines = expandID > -1 && !subLine;\r\n        this.isExpaded = this.isParentRowWithSublines ? false : null;\r\n        this.spotType = data.SpotType;\r\n        this.subLines = [];\r\n        if (data.Sublines && data.Sublines.length > 0) {\r\n            const sublines: LineDetailsTableData[] = [];\r\n            data.Sublines.forEach((subline: any) => {\r\n                sublines.push(new LineDetailsTableData(subline, data.IsAduLine, true, expandID));\r\n            });\r\n            this.subLines = sublines;\r\n        }\r\n    }\r\n}\r\n\r\nexport interface ItotalRow {\r\n    totalLines: number;\r\n    totalSpots: number;\r\n    totalGI: number;\r\n    totalGRP: number;\r\n    totalAmount: number;\r\n    totalProjectedGI: number | string;\r\n    totalProjectedGRP: number | string;\r\n    totalWeekSpots?: number[];\r\n}\r\n\r\nexport interface IInvCodeSellerPgmMap{\r\n    InventoryCode: string[];\r\n    SellerProgramName: string[];\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { EasyFilters } from \"@annalib/anna-design-components-lib\";\r\nimport { GenericFeatureRelatedConstants, OrderMetrics } from \"@annalib/anna-feature-shared-lib\";\r\n\r\nimport { ILineDetailsResponse } from \"../models/line-details.interface\";\r\nimport { LineDetailsTableHeader } from \"../models/line-details.model\";\r\n\r\n@Injectable({\r\n    providedIn: \"root\",\r\n})\r\nexport class LineDetailsService {\r\n    tooltipRadioTextMap: Map<string, string>;\r\n\r\n    constructor() {\r\n        this.tooltipRadioTextMap = new Map();\r\n        this.insertValuesIntoMap();\r\n    }\r\n\r\n    getTableHeaders(\r\n        metricType: { id: number; text: OrderMetrics },\r\n        selectedLine: \"SellerLine\" | \"BuyerLine\",\r\n        userType: \"SELLER\" | \"BUYER\",\r\n        equivalisedData: boolean = false,\r\n        showSublines: boolean = false,\r\n    ): LineDetailsTableHeader[] {\r\n        const loading: boolean = !metricType;\r\n        const equivalisedText = equivalisedData ? \"EQ. \" : \"\";\r\n        let impOrRtgColumnName = null;\r\n        if (!loading) {\r\n            impOrRtgColumnName = metricType?.text === OrderMetrics.imps ? \"IMP('000)\" : \"RTG\";\r\n        }\r\n\r\n        const programkey = selectedLine === \"SellerLine\" ? \"sellerProgram\" : \"buyerProgram\";\r\n        const inventorykey =\r\n            selectedLine === \"SellerLine\"\r\n                ? \"inventoryCode\"\r\n                : `${userType === \"SELLER\" ? \"sellerProgInvCode\" : \"sellerProgram\"}`;\r\n\r\n        const programHeader = selectedLine === \"SellerLine\" ? \"SELLER PROGRAM\" : \"BUYER PROGRAM\";\r\n        const inventoryHeader = selectedLine === \"SellerLine\"\r\n        ? \"INVENTORY CODE\"\r\n        : `SELLER PROGRAM${userType === \"SELLER\" ? \" (INVENTORY CODE)\" : \"\"}`\r\n\r\n        const tableHeader: LineDetailsTableHeader[] = [\r\n            {\r\n                columnName: \"LINE\",\r\n                lowerData: \"\",\r\n                upperColumnFilter: {\r\n                    columnKeys: [\"lineNumber\"],\r\n                    filterType: \"CHECKBOX\",\r\n                    isSortRequired: [true],\r\n                    isFilterRequired: [true],\r\n                },\r\n                width: '80px',\r\n                filterRequired: true,\r\n            },\r\n            {\r\n                columnName: programHeader,\r\n                lowerData: inventoryHeader,\r\n                upperColumnFilter: {\r\n                    columnKeys: [programkey, inventorykey],\r\n                    filterType: \"CHECKBOX\",\r\n                    isSortRequired: [true, true],\r\n                    isFilterRequired: [true, true],\r\n                },\r\n                width: selectedLine === \"SellerLine\" ? '160px' : '250px',\r\n                filterRequired: true,\r\n            },\r\n            {\r\n                columnName: \"START DATE\",\r\n                lowerData: \"END DATE\",\r\n                filterRequired: showSublines,\r\n                upperColumnFilter: {\r\n                    columnKeys: [\"startDate\", \"endDate\"],\r\n                    filterType: \"DATE\",\r\n                    isSortRequired: [true, true],\r\n                    isFilterRequired: [true, true],\r\n                },\r\n                width: '95px',\r\n            },\r\n            {\r\n                columnName: \"DAYS\",\r\n                lowerData: \"TIME\",\r\n                upperColumnFilter: {\r\n                    columnKeys: [\"inventoryDays\"],\r\n                    filterType: \"CHECKBOX\",\r\n                    isSortRequired: [true],\r\n                    isFilterRequired: [true],\r\n                },\r\n                lowerColumnFilter: {\r\n                    columnKeys: [\"TimeBand\"],\r\n                    filterType: \"TIME\",\r\n                    isSortRequired: [true],\r\n                    isFilterRequired: [true],\r\n                },\r\n                filterRequired: showSublines,\r\n                width: '90px',\r\n            },\r\n            {\r\n                columnName: \"TYPE\",\r\n                upperColumnFilter: {\r\n                    columnKeys: [\"spotType\"],\r\n                    filterType: \"CHECKBOX\",\r\n                    isSortRequired: [true],\r\n                    isFilterRequired: [true],\r\n                },\r\n                filterRequired: showSublines,\r\n                width: '55px',\r\n                lowerData: \"\",\r\n            },\r\n            {\r\n                columnName: \"DP\",\r\n                lowerData: \"LEN\",\r\n                upperColumnFilter: {\r\n                    columnKeys: [\"daypart\", \"length\"],\r\n                    filterType: \"CHECKBOX\",\r\n                    isSortRequired: [true, true],\r\n                    isFilterRequired: [true, true],\r\n                },\r\n                width: '60px',\r\n                filterRequired: showSublines,\r\n            },\r\n            {\r\n                columnName: impOrRtgColumnName,\r\n                lowerData: \"\",\r\n                upperColumnFilter:{\r\n                    columnKeys: metricType?.text === OrderMetrics.imps ? [\"IMPS\"] : [\"rating\"],\r\n                    filterType: \"SLIDER\",\r\n                    isSortRequired: [true],\r\n                    isFilterRequired: [true],\r\n                },\r\n                width: '78px',\r\n                filterRequired: showSublines,\r\n                isToolTipRequired: equivalisedData ? [true] : [false],\r\n                toolTipMsg: [\r\n                    `The ${metricType?.text === OrderMetrics.imps ? \"impressions\" : \"ratings\"} are as per the quarterly hour average`,\r\n                ],\r\n            },\r\n            {\r\n                columnName: equivalisedData ? \"EUR\" : \"RATE\",\r\n                lowerData: \"\",\r\n                upperColumnFilter: {\r\n                    columnKeys: [\"rate\"],\r\n                    filterType: \"SLIDER\",\r\n                    isSortRequired: [true],\r\n                    isFilterRequired: [true],\r\n                },\r\n                filterRequired: showSublines,\r\n                width: '60px',\r\n            },\r\n            {\r\n                columnName: `${equivalisedText}SPOTS`,\r\n                lowerData: \"\",\r\n                upperColumnFilter: {\r\n                    columnKeys: [\"spots\"],\r\n                    filterType: \"SLIDER\",\r\n                    isSortRequired: [true],\r\n                    isFilterRequired: [true],\r\n                },\r\n                filterRequired: showSublines,\r\n                width: '78px',\r\n            },\r\n            selectedLine === \"SellerLine\" && userType === \"SELLER\"\r\n                ? this.getGIOrGRPColumnHeaderObjectForSellerLine(loading, metricType, equivalisedText, showSublines)\r\n                : this.getGIOrGRPColumnHeaderObjectForBuyerLine(loading, metricType, equivalisedText, showSublines),\r\n            {\r\n                columnName: \"AMOUNT\",\r\n                lowerData: \"\",\r\n                upperColumnFilter: {\r\n                    columnKeys: [\"amount\"],\r\n                    filterType: \"SLIDER\",\r\n                    isSortRequired: [true],\r\n                    isFilterRequired: [true],\r\n                },\r\n                filterRequired: showSublines,\r\n                width: '71px',\r\n            },\r\n        ];\r\n        return tableHeader;\r\n    }\r\n\r\n    getGIOrGRPColumnHeaderObjectForSellerLine(\r\n        loading: boolean,\r\n        metricType: { id: number; text: OrderMetrics },\r\n        equivalisedText: string,\r\n        showSublines: boolean\r\n    ): LineDetailsTableHeader {\r\n        let columnName = null;\r\n        if (!loading) {\r\n            columnName = `${equivalisedText}${metricType?.text === OrderMetrics.imps ? \"GI\" : \"GRP\"}`;\r\n        }\r\n        return {\r\n            columnName,\r\n            lowerData: equivalisedText + (metricType?.text === OrderMetrics.imps ? \"PROJ. GI\" : \"PROJ. GRP\"),\r\n            upperColumnFilter: {\r\n                columnKeys: metricType?.text === OrderMetrics.imps ? [\"bookedGI\", \"projectedGI\"] : [\"bookedGRP\", \"projectedGRP\"],\r\n                filterType: \"SLIDER\",\r\n                isSortRequired: [true, true],\r\n                isFilterRequired: [true, true],\r\n            },\r\n            width: '100px',\r\n            filterRequired: showSublines,\r\n            isToolTipRequired: metricType?.text === OrderMetrics.imps ? [true, true] : [false, true],\r\n            toolTipMsg:\r\n                metricType?.text === OrderMetrics.imps\r\n                    ? [\r\n                          \"IMPS and GI figures are in terms of thousands.\",\r\n                          GenericFeatureRelatedConstants.ProjectedGrpOrImpsMessage,\r\n                      ]\r\n                    : [null, GenericFeatureRelatedConstants.ProjectedGrpOrImpsMessage],\r\n        };\r\n    }\r\n\r\n    getGIOrGRPColumnHeaderObjectForBuyerLine(\r\n        loading: boolean,\r\n        metricType: { id: number; text: OrderMetrics },\r\n        equivalisedText: string,\r\n        showSublines: boolean\r\n    ): LineDetailsTableHeader {\r\n        let columnName = null;\r\n        if (!loading) {\r\n            columnName = equivalisedText + (metricType?.text === OrderMetrics.imps ? \"GI\" : \"GRP\");\r\n        }\r\n        return {\r\n            columnName,\r\n            lowerData: \"\",\r\n            upperColumnFilter: {\r\n                columnKeys: metricType?.text === OrderMetrics.imps ? [\"bookedGI\"] : [\"bookedGRP\"],\r\n                filterType: \"SLIDER\",\r\n                isSortRequired: [true, true],\r\n                isFilterRequired: [true, true],\r\n            },\r\n            width: '65px',\r\n            filterRequired: showSublines,\r\n            isToolTipRequired: metricType?.text === OrderMetrics.imps ? [true] : [false],\r\n            toolTipMsg:\r\n                metricType?.text === OrderMetrics.imps ? [\"IMPS and GI figures are in terms of thousands.\"] : [null],\r\n        };\r\n    }\r\n\r\n    /**\r\n     * Function to get the week wise table headers\r\n     * @param tableAPIData - Line details API response\r\n     * @returns - Line details table week headers \r\n     * */ \r\n    getWeekTableHeaders(tableAPIData: ILineDetailsResponse): LineDetailsTableHeader[] {\r\n        if(tableAPIData?.Lines?.length > 0)\r\n            return tableAPIData?.Lines[0].WeekWiseSpotsCount.map(\r\n                (ele: any): LineDetailsTableHeader => ({\r\n                    columnName: ele.DisplayWeek.split(\",\")[0],\r\n                    lowerData: ele.DisplayWeek.split(\",\")[1],\r\n                    width: '55px',\r\n                    upperColumnFilter: {\r\n                        columnKeys: [],\r\n                        isFilterRequired: [],\r\n                        isSortRequired: [],\r\n                    }\r\n                }),\r\n            );\r\n\r\n        return [];\r\n    }\r\n\r\n    getEasyFiltersForLineDetails(): EasyFilters[] {\r\n        const easyFilters: EasyFilters[] = [\r\n            {\r\n                label: \"\",\r\n                groupId: \"lines\",\r\n                filters: [\r\n                    {\r\n                        text: \"ORDERED LINES\",\r\n                        isActive: false,\r\n                        isDisabled: false,\r\n                        filterKeyValue: { key: \"isADULine\", valueToCheck: false },\r\n                    },\r\n                    {\r\n                        text: \"ADU LINES\",\r\n                        isActive: false,\r\n                        isDisabled: false,\r\n                        filterKeyValue: { key: \"isADULine\", valueToCheck: true },\r\n                    },\r\n                ],\r\n            },\r\n        ];\r\n\r\n        return easyFilters;\r\n    }\r\n\r\n    insertValuesIntoMap() {\r\n        this.tooltipRadioTextMap.set(\"lineNumber\", \"Line\");\r\n        this.tooltipRadioTextMap.set(\"inventoryCode\", \"Inventory Code\");\r\n        this.tooltipRadioTextMap.set(\"buyerProgram\", \"Buyer Prog Name\");\r\n        this.tooltipRadioTextMap.set(\"daypart\", \"DP\");\r\n    }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { AnnaFilterService, AnnaGtHelperService, AnnaSortService, RadioButtonModel } from \"@annalib/anna-core\";\r\nimport { cloneDeep, uniq } from \"lodash-es\";\r\n\r\n@Injectable({\r\n    providedIn: \"root\",\r\n})\r\nexport class LineDetailsFilterService {\r\n    tableData: any = [];\r\n    tableDataClonned: any = [];\r\n    tooltipRadioTextMap: Map<string, string>;\r\n\r\n    tooltip: any;\r\n    showFilterTabs: boolean;\r\n    radioButtons: RadioButtonModel[];\r\n    enabledHeaders: string[];\r\n\r\n    showClearAllBtn: boolean;\r\n    columnSortFiltersStates: any;\r\n\r\n    constructor(\r\n        public annaSortService: AnnaSortService,\r\n        public annaFilterService: AnnaFilterService,\r\n        private annaGenericTableService: AnnaGtHelperService,\r\n    ) {\r\n        this.initFilters();\r\n        this.annaSortService.columnSortState = new Map();\r\n        this.annaFilterService.initialValueMap = new Map();\r\n        this.tooltipRadioTextMap = new Map();\r\n        this.insertValuesIntoMap();\r\n    }\r\n\r\n    bindTheValueToToolTip(\r\n        tooltip: any,\r\n        header: string[],\r\n        isSortRequired: boolean[],\r\n        isFilterRequired: boolean[]\r\n    ): void {\r\n        if (tooltip === this.tooltip) {\r\n            this.closeTooltip();\r\n        } else {\r\n            this.enabledHeaders = header;\r\n            this.showFilterTabs = header.length > 1;\r\n            const enabledHeaders: any = [];\r\n            header.forEach((item) => {\r\n                if (uniq(this.tableDataClonned.map((u: any) => u[item])).length > 1 || this.isTooltipActive([item])) {\r\n                    enabledHeaders.push(item);\r\n                }\r\n            });\r\n            this.openTooltip(tooltip, enabledHeaders, isSortRequired, isFilterRequired);\r\n        }\r\n    }\r\n\r\n    isTooltipActive(header: string[]): boolean {\r\n        if (this.annaSortService.columnSortState) {\r\n            return (\r\n                this.annaFilterService.isTooltipActive(header, this.annaSortService.columnSortState) &&\r\n                this.areDiffrentvaluesInTable(header)\r\n            );\r\n        }\r\n        return false;\r\n    }\r\n\r\n    areDiffrentvaluesInTable(header: any): boolean {\r\n        let present = false;\r\n        header.forEach((key: any) => {\r\n            let checkboxData: any[] = [];\r\n            this.tableDataClonned.forEach((element: any) => {\r\n                checkboxData.push(element[key]);\r\n            });\r\n            checkboxData = [...new Set(checkboxData)];\r\n            if (checkboxData.length > 1) {\r\n                present = true;\r\n            }\r\n        });\r\n        return present;\r\n    }\r\n\r\n    openTooltip(tooltip: any, header: string[], isSortRequired: boolean[], isFilterRequired: boolean[]): void {\r\n        this.closeTooltip();\r\n        this.tooltip = tooltip;\r\n        this.tooltip.open();\r\n        this.radioButtons = header.map((key, index) => {\r\n            const value = this.tooltipRadioTextMap.get(key) ?? key;\r\n            return new RadioButtonModel(key, value, isSortRequired[index], isFilterRequired[index]);\r\n        });\r\n    }\r\n\r\n    applyFilters(): any {\r\n        this.enableDisableClearAllBtn();\r\n        this.disableEnableTooltipIcon();\r\n        this.closeTooltip();\r\n    }\r\n\r\n    enableDisableClearAllBtn() {\r\n        let isSortApplied = false;\r\n        this.annaSortService.columnSortState.forEach((val, key) => {\r\n            if (val === \"ASC\" || val === \"DESC\") {\r\n                isSortApplied = true;\r\n            }\r\n        });\r\n        this.showClearAllBtn = this.annaFilterService.appliedFiltersArray.length > 0 || isSortApplied;\r\n    }\r\n\r\n    closeTooltip(): void {\r\n        if (this.tooltip && this.tooltip.isOpen()) {\r\n            this.tooltip.close();\r\n        }\r\n        this.tooltip = null;\r\n    }\r\n\r\n    initFilters(): void {\r\n        this.annaGenericTableService.initColumnFilterAndSorting();\r\n        this.showClearAllBtn = false;\r\n    }\r\n\r\n    clearAllFiltersAndSorting() {\r\n        this.initFilters();\r\n        this.tableData = cloneDeep(this.tableDataClonned);\r\n        this.annaSortService.noSortingAppliedData = cloneDeep(this.tableData);\r\n        this.disableEnableTooltipIcon();\r\n    }\r\n\r\n    disableEnableTooltipIcon() {\r\n        this.columnSortFiltersStates = {\r\n            lineNumber: this.disableEnableEachColumnTooltipIcon(\"lineNumber\", \"CHECKBOX\"),\r\n            inventoryCode: this.disableEnableEachColumnTooltipIcon(\"inventoryCode\", \"CHECKBOX\"),\r\n            daypart: this.disableEnableEachColumnTooltipIcon(\"daypart\", \"CHECKBOX\"),\r\n            buyerProgram: this.disableEnableEachColumnTooltipIcon(\"buyerProgram\", \"CHECKBOX\"),\r\n            sellerProgram: this.disableEnableEachColumnTooltipIcon(\"sellerProgram\", \"CHECKBOX\"),\r\n            sellerProgInvCode: this.disableEnableEachColumnTooltipIcon(\"sellerProgInvCode\", \"CHECKBOX\"),\r\n            spotType: this.disableEnableEachColumnTooltipIcon(\"spotType\", \"CHECKBOX\"),\r\n            inventoryDays: this.disableEnableEachColumnTooltipIcon(\"inventoryDays\", \"CHECKBOX\"),\r\n            length: this.disableEnableEachColumnTooltipIcon(\"length\", \"CHECKBOX\"),\r\n            rating: this.disableEnableEachColumnTooltipIcon(\"rating\", \"CHECKBOX\"),\r\n            IMPS: this.disableEnableEachColumnTooltipIcon(\"IMPS\", \"CHECKBOX\"),\r\n            rate: this.disableEnableEachColumnTooltipIcon(\"rate\", \"CHECKBOX\"),\r\n            spots: this.disableEnableEachColumnTooltipIcon(\"spots\", \"CHECKBOX\"),\r\n            amount: this.disableEnableEachColumnTooltipIcon(\"amount\", \"CHECKBOX\"),\r\n            bookedGRP: this.disableEnableEachColumnTooltipIcon(\"bookedGRP\", \"CHECKBOX\"),\r\n            bookedGI: this.disableEnableEachColumnTooltipIcon(\"bookedGI\", \"CHECKBOX\"),\r\n            projectedGRP: this.disableEnableEachColumnTooltipIcon(\"projectedGRP\", \"CHECKBOX\"),\r\n            projectedGI: this.disableEnableEachColumnTooltipIcon(\"projectedGI\", \"CHECKBOX\"),\r\n            endDate: this.disableEnableEachColumnTooltipIcon(\"endDate\", \"CHECKBOX\"),\r\n            startDate: this.disableEnableEachColumnTooltipIcon(\"startDate\", \"CHECKBOX\"),\r\n            TimeBand: this.disableEnableEachColumnTooltipIcon(\"TimeBand\", \"TIME\"),\r\n        };\r\n    }\r\n\r\n    disableEnableEachColumnTooltipIcon(key: string, filterType?: \"CHECKBOX\" | \"TIME\") {\r\n        let values = [];\r\n        let disableTooltipIcon: boolean = true;\r\n\r\n        const latestFilters = this.annaFilterService.appliedFiltersArray;\r\n        if (latestFilters.length > 0 && latestFilters[latestFilters.length - 1] === key) {\r\n            disableTooltipIcon = false;\r\n        }\r\n\r\n        if (disableTooltipIcon) {\r\n            values = this.tableData.map((u: { [x: string]: any }) => u[key]);\r\n            if (\r\n                (filterType === \"CHECKBOX\" && uniq(values).filter((n) => n != null).length > 1) ||\r\n                (filterType !== \"CHECKBOX\" && uniq(values).filter((n) => n != null && n !== \"-\").length > 1)\r\n            ) {\r\n                disableTooltipIcon = false;\r\n            }\r\n        }\r\n        return disableTooltipIcon;\r\n    }\r\n\r\n    insertValuesIntoMap() {\r\n        this.tooltipRadioTextMap.set(\"lineNumber\", \"Line\");\r\n        this.tooltipRadioTextMap.set(\"inventoryCode\", \"Inventory Code\");\r\n        this.tooltipRadioTextMap.set(\"sellerProgram\", \"Seller Program\");\r\n        this.tooltipRadioTextMap.set(\"buyerProgram\", \"Buyer Program\");\r\n        this.tooltipRadioTextMap.set(\"sellerProgInvCode\", \"Seller Pgm (Inv Code)\");\r\n        this.tooltipRadioTextMap.set(\"daypart\", \"DP\");\r\n        this.tooltipRadioTextMap.set(\"spotType\",\"Type\");\r\n        this.tooltipRadioTextMap.set(\"inventoryDays\",\"Days\");\r\n        this.tooltipRadioTextMap.set(\"length\",\"Length\");\r\n        this.tooltipRadioTextMap.set(\"rating\",\"Rating\");\r\n        this.tooltipRadioTextMap.set(\"IMPS\",\"IMP('000)\");\r\n        this.tooltipRadioTextMap.set(\"rate\",\"Rate\");\r\n        this.tooltipRadioTextMap.set(\"spots\",\"Spots\");\r\n        this.tooltipRadioTextMap.set(\"amount\",\"Amount\");\r\n        this.tooltipRadioTextMap.set(\"bookedGRP\",\"Booked GRP\");\r\n        this.tooltipRadioTextMap.set(\"bookedGI\",\"Booked GI\");\r\n        this.tooltipRadioTextMap.set(\"projectedGRP\",\"Proj. GRP\");\r\n        this.tooltipRadioTextMap.set(\"projectedGI\",\"Proj. GI\");\r\n        this.tooltipRadioTextMap.set(\"endDate\",\"End Date\");\r\n        this.tooltipRadioTextMap.set(\"startDate\",\"Start Date\");\r\n        this.tooltipRadioTextMap.set(\"TimeBand\",\"Time\");\r\n    }\r\n}\r\n","import { CurrencyPipe, DecimalPipe, NgClass, NgFor, NgIf, NgStyle, NgTemplateOutlet } from \"@angular/common\";\r\nimport {\r\n    AfterViewChecked,\r\n    ChangeDetectionStrategy,\r\n    ChangeDetectorRef,\r\n    Component,\r\n    ElementRef,\r\n    EventEmitter,\r\n    Inject,\r\n    Input,\r\n    OnChanges,\r\n    OnInit,\r\n    Output,\r\n    QueryList,\r\n    SimpleChanges,\r\n    ViewChild,\r\n    ViewChildren,\r\n} from \"@angular/core\";\r\nimport { Params } from \"@angular/router\";\r\nimport {\r\n    AnnaCoreModule,\r\n    AnnaDateTimeFormatService,\r\n    AnnaFilterService,\r\n    AnnaGlobalConfigService,\r\n    AnnaGtHelperService,\r\n    AnnaNoDataComponent,\r\n    AnnaSortService,\r\n    ButtonToggleComponent,\r\n    ButtonToggleOptions,\r\n    ICustomSingleSelect,\r\n} from \"@annalib/anna-core\";\r\nimport {\r\n    AnnaDesignComponentsLibModule,\r\n    CalendarQuarterYearFilterService,\r\n    DatepickerService,\r\n    EasyFilters,\r\n    EquivalisationOfDataService,\r\n    IdText,\r\n    PeriodSelectionPopUp,\r\n    StartDateConsideringFactor,\r\n    ToggleComponent,\r\n} from \"@annalib/anna-design-components-lib\";\r\nimport { OrderMetrics, PrimaryOrderPanelService } from \"@annalib/anna-feature-shared-lib\";\r\nimport { NgbDate, NgbTooltip } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport dayjs from \"dayjs\";\r\nimport { cloneDeep, isEqual } from \"lodash-es\";\r\nimport { NgxSkeletonLoaderModule } from \"ngx-skeleton-loader\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\n\r\n// eslint-disable-next-line import/no-cycle\r\nimport { DateAndAllKeyType, PrimaryDetails } from \"../../public-api\";\r\nimport { ILineDetailsBackendService, LINE_DETAILS_PAGE_SERVICE_TOKEN } from \"./config/line-details-service.token\";\r\nimport { ILineDetailsResponse, LineType, UserType } from \"./models/line-details.interface\";\r\nimport {\r\n    IInvCodeSellerPgmMap,\r\n    IPersistingFiltersLineDetails,\r\n    ItotalRow,\r\n    LineDetailsPayload,\r\n    LineDetailsTableData,\r\n    LineDetailsTableHeader,\r\n} from \"./models/line-details.model\";\r\nimport { LineDetailsService } from \"./services/line-details.service\";\r\nimport { LineDetailsFilterService } from \"./services/line-details-filter.service\";\r\n\r\n@Component({\r\n    selector: \"anna-feature-lib-line-details\",\r\n    templateUrl: \"./line-details.component.html\",\r\n    styleUrls: [\"./line-details.component.scss\"],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    imports: [\r\n        NgIf,\r\n        NgFor,\r\n        NgClass,\r\n        NgStyle,\r\n        NgbTooltip,\r\n        CurrencyPipe,\r\n        DecimalPipe,\r\n        AnnaCoreModule,\r\n        ToggleComponent,\r\n        NgTemplateOutlet,\r\n        AnnaNoDataComponent,\r\n        NgxSkeletonLoaderModule,\r\n        AnnaDesignComponentsLibModule,\r\n        ButtonToggleComponent,\r\n    ],\r\n    standalone: true,\r\n})\r\nexport class LineDetailsComponent implements OnInit, OnChanges, AfterViewChecked {\r\n    @Input() queryParams: Params;\r\n    @Input() applyPersistedFilters: boolean; // If any filter found on URL\r\n    @Input() persistedFilters: IPersistingFiltersLineDetails; // Applied Filters from URL\r\n    @Input() persistingFilterPeriodData: PeriodSelectionPopUp; // Period selected\r\n    @Input() primaryOrderData: PrimaryDetails;\r\n    @Input() showSkeletonLoading: boolean = true;\r\n    @Input() showSellLineToggle: boolean;\r\n    @Input() showBuyLineToggle: boolean;\r\n    @Input() showEasyFilters: boolean;\r\n    @Input() orderDefaultMetricType: OrderMetrics = null;\r\n    @Input() equivalisedData: boolean = null;\r\n    @Input() userType: UserType = \"SELLER\";\r\n\r\n    @Output() filterApplied = new EventEmitter();\r\n    @Output() metricTypeDropdownChanged = new EventEmitter<string>();\r\n    @Output() navigateToDiscrepancyDetail = new EventEmitter();\r\n\r\n    // Table Data Variables\r\n    tableData: LineDetailsTableData[] = [];\r\n    tableDataClonned: LineDetailsTableData[] = [];\r\n    originalTableData: LineDetailsTableData[] = [];\r\n\r\n    tableHeaders: LineDetailsTableHeader[] = [];\r\n    totalRow: ItotalRow;\r\n    weekWiseHeaderData: LineDetailsTableHeader[] = [];\r\n\r\n    numberOfSkeletonRow: any = new Array(7);\r\n    numberOfSkeletonColumns: any[] = new Array(20);\r\n    skeletonWeekColumns: any[] = new Array(9);\r\n\r\n    intelliFilters: EasyFilters[];\r\n\r\n    // Quater or month selection veriables\r\n    periodModalTitle: string = \"Edit Period\";\r\n    periodModalMessage: string = \"Select period for which you want to view the line details for.\";\r\n\r\n    PeriodOptions: string[] = [\"Quarter\", \"Month\"]; // In order to remove custom from dropdown in quater filter\r\n\r\n    disablePeriodSelection: boolean = false;\r\n\r\n    isEntireFlightPeriodSelected: boolean;\r\n    selectedFilterStartDate: string;\r\n    selectedFilterEndDate: string;\r\n\r\n    flightPeriodData: { statDate: string; endDate: string };\r\n\r\n    startDateConsideringFactor: StartDateConsideringFactor;\r\n    isFlightPeriodFallsinSameMonth: boolean;\r\n\r\n    // Toggle Values\r\n    selectedLine: LineType = \"SellerLine\";\r\n\r\n    isScrolledLeft: boolean;\r\n    filterAlignment: string = \"auto\";\r\n    tableHeight: string;\r\n    currencyUnit = \"USD\";\r\n\r\n    selectedMetric: { id: number; text: OrderMetrics } = null;\r\n    orderMetricsListForDropdown: { id: number; text: OrderMetrics }[];\r\n\r\n    metricDropdownConfig: ICustomSingleSelect;\r\n\r\n    tableDataApiCalledForFirstTym: boolean = true;\r\n\r\n    showViewLineComparisons: boolean = false;\r\n    showTotalRow: boolean = true;\r\n    showOrHideToggleForTotalRow: boolean = true;\r\n\r\n    @ViewChildren(\"arrowTooltip\") arrowTooltip: QueryList<NgbTooltip>;\r\n    @ViewChild(\"tableElementRef\", { static: true }) tableElementRef: ElementRef;\r\n    @ViewChildren(\"thElement\") thElements: QueryList<ElementRef>;\r\n\r\n    invCodeSellerPgmTooltip: any;\r\n    invCodeSellerPgmTableData: IInvCodeSellerPgmMap[];\r\n    numberOfEasyFilterLoader: number = 2;\r\n\r\n    disableShowSublineToggle: boolean = true;\r\n    isShowSublineToggled: boolean = false;\r\n\r\n    buttonToggleOptions: ButtonToggleOptions[] = [];\r\n    /**\r\n     * Flag Variable to reset filter on period selection change\r\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\r\n     */\r\n    resetFilterOnPeriodSelectionChange: boolean = false;\r\n\r\n    constructor(\r\n        private toastr: ToastrService,\r\n        private cdr: ChangeDetectorRef,\r\n        private dpService: DatepickerService,\r\n        private annaGtService: AnnaGtHelperService,\r\n        public annaSortService: AnnaSortService,\r\n        public annaFilterService: AnnaFilterService,\r\n        public lineDetailsService: LineDetailsService,\r\n        private annaGlobalConfig: AnnaGlobalConfigService,\r\n        public lineDetailsFilterService: LineDetailsFilterService,\r\n        private primaryOrderPanelService: PrimaryOrderPanelService,\r\n        private annaDateTimeFormatService: AnnaDateTimeFormatService,\r\n        private filterModalService: CalendarQuarterYearFilterService,\r\n        private equivalisationOfDataService: EquivalisationOfDataService,\r\n        @Inject(LINE_DETAILS_PAGE_SERVICE_TOKEN) public lineDetailsBackendService: ILineDetailsBackendService,\r\n    ) {\r\n        this.setMetricDropdownConfig();\r\n    }\r\n\r\n    ngOnInit(): void {\r\n        document.documentElement.style.setProperty(`--hide-total-row-scrollbar-offset`, \"0px\");\r\n        this.setFilterAlignmentBasedOnScreenResolution();\r\n        this.checkAndApplyPersistingFilters();\r\n        this.setTableHeaders();\r\n        this.lineDetailsFilterService.initFilters();\r\n\r\n        if (this.showEasyFilters && this.selectedLine === \"SellerLine\") {\r\n            this.intelliFilters = this.lineDetailsService.getEasyFiltersForLineDetails();\r\n        }\r\n    }\r\n\r\n    ngOnChanges(changes: SimpleChanges): void {\r\n        if (changes.primaryOrderData && changes.primaryOrderData.currentValue) {\r\n            this.intialiseData();\r\n\r\n            const metricTypeToApply = this.persistedFilters?.metricType\r\n                ? JSON.parse(this.persistedFilters?.metricType)\r\n                : this.orderDefaultMetricType;\r\n\r\n            if (metricTypeToApply) {\r\n                this.selectedMetric =\r\n                    metricTypeToApply === OrderMetrics.imps\r\n                        ? this.orderMetricsListForDropdown[1]\r\n                        : this.orderMetricsListForDropdown[0];\r\n\r\n                this.metricTypeDropdownChanged.emit(this.selectedMetric?.text);\r\n            }\r\n            this.setTableHeaders();\r\n            this.disablePeriodSelection = this.primaryOrderData?.orderInfo.orderType === \"UD (Liability set)\";\r\n        }\r\n\r\n        if (changes.persistingFilterPeriodData && this.primaryOrderData) {\r\n            this.isFlightPeriodOfSameMonth();\r\n        }\r\n\r\n        if (changes.equivalisedData?.currentValue != null && !this.tableDataApiCalledForFirstTym) {\r\n            this.setTableHeaders();\r\n            this.fetchTableData(this.selectedLine);\r\n        }\r\n\r\n        if (changes?.showBuyLineToggle || changes?.showSellLineToggle) {\r\n            this.addButtonToggleOptions();\r\n        }\r\n    }\r\n\r\n    ngAfterViewChecked() {\r\n        this.annaFilterService.setMarginLeftForFilterIcon(this.thElements);\r\n    }\r\n\r\n    addButtonToggleOptions() {\r\n        const isSellerLineTogglePresent = this.buttonToggleOptions.find((x) => x.value === \"SellerLine\");\r\n        const isBuyerLineTogglePresent = this.buttonToggleOptions.find((x) => x.value === \"BuyerLine\");\r\n        if (this.showSellLineToggle && !isSellerLineTogglePresent) {\r\n            this.buttonToggleOptions.push({\r\n                label: \"Sell Line Details\",\r\n                value: \"SellerLine\",\r\n                disabled: false,\r\n            });\r\n        }\r\n\r\n        if (this.showBuyLineToggle && !isBuyerLineTogglePresent) {\r\n            this.buttonToggleOptions.push({ label: \"Buy Line Details\", value: \"BuyerLine\", disabled: false });\r\n        }\r\n    }\r\n\r\n    setTableHeaders() {\r\n        this.tableHeaders = this.lineDetailsService.getTableHeaders(\r\n            this.selectedMetric,\r\n            this.selectedLine,\r\n            this.userType,\r\n            this.equivalisedData,\r\n            this.selectedLine === \"SellerLine\" && !this.isShowSublineToggled,\r\n        );\r\n    }\r\n\r\n    setScrollToInitialPosition() {\r\n        this.tableElementRef.nativeElement.scrollTop = 0;\r\n        this.tableElementRef.nativeElement.scrollLeft = 0;\r\n    }\r\n\r\n    // Initalizer function\r\n    intialiseData() {\r\n        this.flightPeriodData = {\r\n            statDate: this.primaryOrderData.campaignStartDate,\r\n            endDate: this.primaryOrderData.campaignEndDate,\r\n        };\r\n        this.selectedFilterStartDate = this.flightPeriodData.statDate;\r\n        this.selectedFilterEndDate = this.flightPeriodData.endDate;\r\n        this.setSelectedLine();\r\n        this.isFlightPeriodOfSameMonth();\r\n    }\r\n\r\n    isFlightPeriodOfSameMonth() {\r\n        const ngbFlightStartDate = this.annaDateTimeFormatService.convertToNgbDate(\r\n            this.primaryOrderData.campaignStartDate,\r\n            \"MM/DD/YYYY\",\r\n        );\r\n        const ngbFlightEndDate = this.annaDateTimeFormatService.convertToNgbDate(\r\n            this.primaryOrderData.campaignEndDate,\r\n            \"MM/DD/YYYY\",\r\n        );\r\n        const startDateData = this.dpService.findBroadcastYearAndMonthForDate(NgbDate.from(ngbFlightStartDate));\r\n        const endDateData = this.dpService.findBroadcastYearAndMonthForDate(NgbDate.from(ngbFlightEndDate));\r\n        this.isFlightPeriodFallsinSameMonth = isEqual(startDateData, endDateData);\r\n        const isFlightPeriodOfSameQuarter = this.areMonthsofSameQuarter(startDateData, endDateData);\r\n        const startDate = this.selectedFilterStartDate\r\n            ? dayjs(this.selectedFilterStartDate).format(\"MM/DD/YYYY\")\r\n            : null;\r\n        const endDate = this.selectedFilterEndDate ? dayjs(this.selectedFilterEndDate).format(\"MM/DD/YYYY\") : null;\r\n        if (\r\n            this.isFlightPeriodFallsinSameMonth ||\r\n            (this.persistingFilterPeriodData?.startDate &&\r\n                this.filterModalService.isFlightPeriodWithinSelectedDates(\r\n                    this.primaryOrderData.campaignStartDate,\r\n                    this.primaryOrderData.campaignEndDate,\r\n                    this.persistingFilterPeriodData.startDate,\r\n                    this.persistingFilterPeriodData.endDate,\r\n                ))\r\n        ) {\r\n            this.persistingFilterPeriodData = {\r\n                isEntireFlightPeriod: true,\r\n                startDate,\r\n                endDate,\r\n                calendarType: \"broadcast\",\r\n                month: \"\",\r\n                year: \"\",\r\n                periodMode: \"\",\r\n                quarter: \"\",\r\n            };\r\n            if (isFlightPeriodOfSameQuarter) {\r\n                this.PeriodOptions = [\"Month\"];\r\n                this.persistingFilterPeriodData.periodMode = \"Month\";\r\n            }\r\n        } else if (\r\n            isFlightPeriodOfSameQuarter &&\r\n            (!this.persistingFilterPeriodData ||\r\n                (this.persistingFilterPeriodData && !this.persistingFilterPeriodData.startDate))\r\n        ) {\r\n            this.persistingFilterPeriodData = {\r\n                isEntireFlightPeriod: true,\r\n                startDate,\r\n                endDate,\r\n                calendarType: \"broadcast\",\r\n                month: \"\",\r\n                year: \"\",\r\n                periodMode: \"Month\",\r\n                quarter: \"\",\r\n            };\r\n            this.PeriodOptions = [\"Month\"];\r\n        }\r\n    }\r\n\r\n    areMonthsofSameQuarter(\r\n        startDate: { monthId: number; yearId: number },\r\n        endDate: { monthId: number; yearId: number },\r\n    ): boolean {\r\n        const startQuarter = Math.ceil(startDate.monthId / 3);\r\n        const endQuarter = Math.ceil(endDate.monthId / 3);\r\n\r\n        return startQuarter === endQuarter && startDate.yearId === endDate.yearId;\r\n    }\r\n\r\n    initialisePeriodFilter(startEndDateObj: { startDate: string; endDate: string }) {\r\n        // check what this flow is for\r\n        const selectedPeriod = this.filterModalService.getSelectedPeriodIfFlightPeriodWithinQuarter(\r\n            startEndDateObj,\r\n            this.primaryOrderData,\r\n        );\r\n        this.persistingFilterPeriodData = selectedPeriod || this.persistingFilterPeriodData;\r\n    }\r\n    // Check if any Line is Selected then set selected line\r\n    checkAndApplyPersistingFilters() {\r\n        if (this.applyPersistedFilters) {\r\n            this.selectedLine = this.persistedFilters?.selectedLine ? this.persistedFilters.selectedLine : \"SellerLine\";\r\n            this.isShowSublineToggled = this.persistedFilters?.showSublines ?? false;\r\n        }\r\n    }\r\n\r\n    setSelectedLine() {\r\n        if (!this.showSellLineToggle && !this.showBuyLineToggle) {\r\n            this.selectedLine = this.primaryOrderData.orderInfo.isRepOrder ? \"BuyerLine\" : \"SellerLine\";\r\n        }\r\n    }\r\n\r\n    // Set selected range variables and fetch Table Data\r\n    applyPeriodSelection(value: DateAndAllKeyType) {\r\n        this.setSelectedFilterValue(value);\r\n\r\n        if (this.resetFilterOnPeriodSelectionChange) {\r\n            this.resetFilters();\r\n            this.anyTypeOfFilterApplied();\r\n        } else {\r\n            this.resetFilterOnPeriodSelectionChange = true;\r\n        }\r\n\r\n        if (this.showBuyLineToggle || this.showSellLineToggle || this.primaryOrderData?.orderInfo?.isRepOrder != null) {\r\n            this.fetchTableData(this.selectedLine);\r\n        }\r\n    }\r\n\r\n    // Set Date range Variable\r\n    setSelectedFilterValue(value: DateAndAllKeyType) {\r\n        this.isEntireFlightPeriodSelected = value.isEntireFlightPeriod;\r\n        this.selectedFilterStartDate = value.startDate;\r\n        this.selectedFilterEndDate = value.endDate;\r\n    }\r\n\r\n    // Initailize TableHeader and loding varables --> Get PayLoad --> Call API -->\r\n    // ==Success== Merge week Table Headers --> Set table data in proper format --> Initalize easyFilters --> Apply Persisting Filters and calculate total row data\r\n    // __Error__   Show Error Toastr --> stop loading\r\n    fetchTableData(selectedLine: \"SellerLine\" | \"BuyerLine\") {\r\n        this.showSkeletonLoading = true;\r\n        this.weekWiseHeaderData = [];\r\n        this.tableData = [];\r\n\r\n        this.equivalisationOfDataService.publishIsNoDataStatusData(true);\r\n\r\n        const payload = this.getPayloadForGetLineDetails();\r\n        if (payload.StartDate && payload.EndDate) {\r\n            this.lineDetailsBackendService.getLineDetails(selectedLine, payload).subscribe(\r\n                (response: ILineDetailsResponse) => {\r\n                    this.weekWiseHeaderData = this.lineDetailsService.getWeekTableHeaders(response);\r\n\r\n                    this.showViewLineComparisons = response.ShowLineComparisonViewLink;\r\n                    response.Lines.forEach((line: any, index: number) => {\r\n                        this.tableData.push(\r\n                            new LineDetailsTableData(line, true, false, line.Sublines.length > 0 ? index : -1),\r\n                        );\r\n                    });\r\n\r\n                    this.originalTableData = cloneDeep(this.tableData);\r\n\r\n                    this.setTableDataBasedOnShowSubLinesToggle();\r\n\r\n                    if (this.showEasyFilters && this.selectedLine === \"SellerLine\") {\r\n                        this.intelliFilters = this.lineDetailsService.getEasyFiltersForLineDetails();\r\n                    }\r\n\r\n                    this.equivalisationOfDataService.publishIsNoDataStatusData(this.tableDataClonned.length === 0);\r\n                    this.applyPersistingFilters();\r\n                    this.createTotalRow();\r\n                    this.lineDetailsFilterService.disableEnableTooltipIcon();\r\n                    this.lineDetailsFilterService.enableDisableClearAllBtn();\r\n                    this.showSkeletonLoading = false;\r\n                    this.tableDataApiCalledForFirstTym = false;\r\n                    this.cdr.detectChanges();\r\n                },\r\n                (error: any) => {\r\n                    this.showSkeletonLoading = false;\r\n\r\n                    this.tableData = [];\r\n                    this.tableDataClonned = [];\r\n                    this.lineDetailsFilterService.tableData = [];\r\n                    this.lineDetailsFilterService.tableDataClonned = [];\r\n\r\n                    this.showViewLineComparisons = false;\r\n\r\n                    this.toastr.error(\"Something went wrong! Please try again.\");\r\n                    this.equivalisationOfDataService.publishIsNoDataStatusData(true);\r\n                    this.tableDataApiCalledForFirstTym = false;\r\n                    this.cdr.detectChanges();\r\n                },\r\n            );\r\n        }\r\n    }\r\n\r\n    getPayloadForGetLineDetails(): LineDetailsPayload {\r\n        const payload = {\r\n            StationId: this.primaryOrderData.stationId,\r\n            OrderId: this.primaryOrderData.orderId,\r\n            StartDate: this.isEntireFlightPeriodSelected\r\n                ? this.primaryOrderData.campaignStartDate\r\n                : this.selectedFilterStartDate,\r\n            EndDate: this.isEntireFlightPeriodSelected\r\n                ? this.primaryOrderData.campaignEndDate\r\n                : this.selectedFilterEndDate,\r\n            IsEquivalised: this.equivalisedData,\r\n        };\r\n        return payload;\r\n    }\r\n\r\n    // Apply persisting filters if any.\r\n    applyPersistingFilters() {\r\n        this.annaSortService.noSortingAppliedData = cloneDeep(this.tableDataClonned);\r\n        if (this.applyPersistedFilters) {\r\n            this.initPeristedFilters();\r\n        }\r\n    }\r\n\r\n    // apply column level filters\r\n    initPeristedFilters() {\r\n        this.annaFilterService.initialValueMap = new Map();\r\n        this.annaFilterService.appliedFiltersArray = cloneDeep(\r\n            this.persistedFilters?.columnLevelFilters?.appliedFilters ?? [],\r\n        );\r\n        this.annaFilterService.tooltipSelectedMap = new Map(\r\n            this.persistedFilters?.columnLevelFilters?.selectedFilterData\r\n                ? JSON.parse(this.persistedFilters.columnLevelFilters.selectedFilterData)\r\n                : \"\",\r\n        );\r\n\r\n        this.annaSortService.columnSortState = this.persistedFilters?.columnLevelFilters?.sortState\r\n            ? new Map(JSON.parse(this.persistedFilters.columnLevelFilters.sortState))\r\n            : new Map();\r\n\r\n        this.annaFilterService.updateDateFilterTooltipSelectedMap([\"startDate\", \"endDate\"]);\r\n\r\n        this.tableData = this.annaFilterService.filterData(this.tableData, \"\");\r\n        this.lineDetailsFilterService.showClearAllBtn = true;\r\n    }\r\n\r\n    lineSelectionChanged(selectedLine: any) {\r\n        this.showSkeletonLoading = true;\r\n        this.selectedLine = selectedLine as \"SellerLine\" | \"BuyerLine\";\r\n        this.showEasyFilters = selectedLine === \"SellerLine\";\r\n        this.setTableHeaders();\r\n        this.weekWiseHeaderData = [];\r\n        this.resetFilters();\r\n        this.anyTypeOfFilterApplied();\r\n    }\r\n\r\n    onShowSublineToggled(selectedValue: boolean) {\r\n        this.isShowSublineToggled = selectedValue;\r\n        this.setTableHeaders();\r\n        this.resetFilters();\r\n        this.anyTypeOfFilterApplied();\r\n        this.setTableDataBasedOnShowSubLinesToggle();\r\n        this.createTotalRow();\r\n    }\r\n\r\n    setTableDataBasedOnShowSubLinesToggle() {\r\n        let rows: LineDetailsTableData[] = [];\r\n\r\n        if (!this.isShowSublineToggled) {\r\n            let addDarkColorClass: boolean = true;\r\n            this.originalTableData.forEach((row) => {\r\n                if (row.subLines.length > 0) {\r\n                    row.subLines.forEach((subRow) => {\r\n                        subRow.rowClass = addDarkColorClass ? \"dark-bg-row\" : \"light-bg-row\";\r\n                        rows.push(subRow);\r\n                    });\r\n                    addDarkColorClass = !addDarkColorClass;\r\n                } else {\r\n                    row.rowClass = \"\";\r\n                    rows.push(row);\r\n                }\r\n            });\r\n        } else {\r\n            rows = this.originalTableData;\r\n        }\r\n\r\n        this.tableData = cloneDeep(rows);\r\n        this.tableDataClonned = cloneDeep(rows);\r\n        this.lineDetailsFilterService.tableData = cloneDeep(rows);\r\n        this.lineDetailsFilterService.tableDataClonned = cloneDeep(rows);\r\n        this.enableDisableShowSublinesToggle();\r\n    }\r\n\r\n    enableDisableShowSublinesToggle() {\r\n        this.disableShowSublineToggle = !this.originalTableData.some((row) => row.subLines.length > 0);\r\n    }\r\n\r\n    resetFilters() {\r\n        this.annaFilterService.appliedFiltersArray = [];\r\n        this.annaFilterService.tooltipSelectedMap = new Map();\r\n        this.annaSortService.columnSortState = new Map();\r\n        this.applyPersistedFilters = false;\r\n        this.lineDetailsFilterService.showClearAllBtn = false;\r\n    }\r\n\r\n    intelliFilterClicked(emittedObj: any) {\r\n        this.tableData = emittedObj.filteredData;\r\n        this.createTotalRow();\r\n        this.lineDetailsFilterService.enableDisableClearAllBtn();\r\n        this.anyTypeOfFilterApplied();\r\n    }\r\n\r\n    filterAppliedToTable(tableData: LineDetailsTableData[]) {\r\n        this.setScrollToInitialPosition();\r\n        this.tableData = tableData;\r\n        this.lineDetailsFilterService.tableData = tableData;\r\n        this.lineDetailsFilterService.applyFilters();\r\n        this.anyTypeOfFilterApplied();\r\n        this.createTotalRow();\r\n    }\r\n\r\n    expandRow(index: number) {\r\n        if (index > -1 && this.isShowSublineToggled) {\r\n            const indexOfParentRow = this.tableData.findIndex(\r\n                (line) => line.isParentRowWithSublines && line.parentExpandlableLineID === index,\r\n            );\r\n            this.tableData[indexOfParentRow].isExpaded = !this.tableData[indexOfParentRow].isExpaded;\r\n        }\r\n    }\r\n\r\n    createTotalRow() {\r\n        if (this.tableData.length > 0) {\r\n            const totalLines = new Set(this.tableData.map((line) => line.lineNumber)).size;\r\n            let totalSpots = 0;\r\n            let totalGI = 0;\r\n            let totalProjectedGI = 0;\r\n            let totalProjectedGRP = 0;\r\n            let totalGRP = 0;\r\n            let totalAmount = 0;\r\n            const totalWeekSpots = this.tableDataClonned[0].weekSpots.map(() => 0);\r\n            this.tableData.forEach((line) => {\r\n                if (!line.isSubline || !this.isShowSublineToggled) {\r\n                    totalSpots += line.spots ? line.spots : 0;\r\n                    totalGI += line.bookedGI ? line.bookedGI : 0;\r\n                    totalGRP += line.bookedGRP ? line.bookedGRP : 0;\r\n                    totalProjectedGI += line.projectedGI ? line.projectedGI : 0;\r\n                    totalProjectedGRP += line.projectedGRP ? line.projectedGRP : 0;\r\n                    totalAmount += line.amount ? line.amount : 0;\r\n                    line.weekSpots.forEach((element, index) => {\r\n                        totalWeekSpots[index] += element || 0;\r\n                    });\r\n                }\r\n            });\r\n            const totalRow = {\r\n                totalLines,\r\n                totalSpots,\r\n                totalGI: parseFloat(totalGI.toFixed(2)),\r\n                totalGRP: parseFloat(totalGRP.toFixed(2)),\r\n                totalProjectedGI: parseFloat(totalProjectedGI.toFixed(2)),\r\n                totalProjectedGRP: parseFloat(totalProjectedGRP.toFixed(2)),\r\n                totalAmount,\r\n                totalWeekSpots,\r\n            };\r\n            this.totalRow = totalRow;\r\n        }\r\n    }\r\n\r\n    clearAllFiltersAndSorting() {\r\n        this.setScrollToInitialPosition();\r\n        this.tableData = this.tableDataClonned;\r\n        this.lineDetailsFilterService.clearAllFiltersAndSorting();\r\n        this.createTotalRow();\r\n        this.anyTypeOfFilterApplied();\r\n        this.cdr.markForCheck();\r\n    }\r\n\r\n    anyTypeOfFilterApplied() {\r\n        const filters = this.createPersistingFilterData();\r\n        this.filterApplied.emit(filters);\r\n    }\r\n\r\n    createPersistingFilterData(): IPersistingFiltersLineDetails {\r\n        const filters: IPersistingFiltersLineDetails = {};\r\n        if (this.annaFilterService.appliedFiltersArray.length) {\r\n            filters.columnLevelFilters = {};\r\n            filters.columnLevelFilters.appliedFilters = this.annaFilterService.appliedFiltersArray;\r\n            filters.columnLevelFilters.selectedFilterData = this.annaFilterService.tooltipSelectedMap\r\n                ? JSON.stringify(Array.from(this.annaFilterService.tooltipSelectedMap))\r\n                : JSON.stringify([]);\r\n        }\r\n\r\n        if (this.annaGtService.isSortingAppliedToTable()) {\r\n            if (!filters?.columnLevelFilters) {\r\n                filters.columnLevelFilters = {};\r\n            }\r\n            filters.columnLevelFilters.sortState = JSON.stringify(Array.from(this.annaSortService.columnSortState));\r\n        }\r\n\r\n        if (this.selectedLine === \"BuyerLine\") {\r\n            filters.selectedLine = this.selectedLine;\r\n        }\r\n        if (this.changeInMetricDropdown()) {\r\n            filters.metricType = JSON.stringify(this.selectedMetric?.text);\r\n        }\r\n\r\n        if (this.isShowSublineToggled) {\r\n            filters.showSublines = true;\r\n        }\r\n\r\n        return filters;\r\n    }\r\n\r\n    changeInMetricDropdown(): boolean {\r\n        return this.selectedMetric?.text !== this.orderDefaultMetricType;\r\n    }\r\n\r\n    onTableContainerScroll(event: any) {\r\n        this.isScrolledLeft = event.target.scrollLeft > 0;\r\n        this.lineDetailsFilterService.closeTooltip();\r\n        this.arrowTooltip.forEach((tooltip) => {\r\n            if (tooltip.isOpen()) {\r\n                tooltip.close();\r\n            }\r\n        });\r\n        this.closeTooltip();\r\n    }\r\n\r\n    addTitlesOnTextOverflow() {\r\n        const elements = document.querySelectorAll(\"td .lower-label, td .upper-label, .filter-tab, .total-row span\");\r\n        elements.forEach((elem) => {\r\n            if (elem.clientWidth < elem.scrollWidth) {\r\n                elem.setAttribute(\"title\", elem.textContent);\r\n                elem.classList.add(\"ellipsify\");\r\n            }\r\n        });\r\n    }\r\n\r\n    setFilterAlignmentBasedOnScreenResolution() {\r\n        const viewportHeight = window.innerHeight;\r\n        if (viewportHeight < 740) {\r\n            this.filterAlignment = \"left right\";\r\n        } else {\r\n            this.filterAlignment = \"bottom\";\r\n        }\r\n    }\r\n\r\n    trackByFn(item: any) {\r\n        return item.id;\r\n    }\r\n\r\n    onOrderMetricChanged(metric: IdText) {\r\n        this.selectedMetric = metric as { id: number; text: OrderMetrics };\r\n        this.metricTypeDropdownChanged.emit(this.selectedMetric?.text);\r\n        this.setTableHeaders();\r\n        this.resetFilters();\r\n        this.anyTypeOfFilterApplied();\r\n        this.cdr.markForCheck();\r\n    }\r\n\r\n    setMetricDropdownConfig() {\r\n        this.orderMetricsListForDropdown = this.primaryOrderPanelService.getOrderMetricsDropdownValues();\r\n        this.metricDropdownConfig = { ...this.annaGlobalConfig.defaultSingleSelectConfig };\r\n        this.metricDropdownConfig.placeholder = \"No data found\";\r\n    }\r\n\r\n    viewLinkClicked() {\r\n        this.navigateToDiscrepancyDetail.emit();\r\n    }\r\n\r\n    showHideTotalRow() {\r\n        this.showTotalRow = !this.showTotalRow;\r\n        if (!this.showTotalRow) {\r\n            document.documentElement.style.setProperty(`--hide-total-row-scrollbar-offset`, \"40px\");\r\n        } else {\r\n            document.documentElement.style.setProperty(`--hide-total-row-scrollbar-offset`, \"0px\");\r\n        }\r\n    }\r\n\r\n    bindTheValueToSellerGroupTooltip(invCodeSellerPgm: any[], tooltip: any, closeOnScroll = false): void {\r\n        if (!closeOnScroll) {\r\n            if (this.invCodeSellerPgmTooltip && this.invCodeSellerPgmTooltip.open) {\r\n                this.invCodeSellerPgmTooltip.close();\r\n            }\r\n            this.invCodeSellerPgmTableData = invCodeSellerPgm;\r\n            this.invCodeSellerPgmTooltip = tooltip;\r\n            this.invCodeSellerPgmTooltip.open();\r\n        } else {\r\n            this.invCodeSellerPgmTooltip.close();\r\n        }\r\n    }\r\n\r\n    closeTooltip() {\r\n        if (this.invCodeSellerPgmTooltip && this.invCodeSellerPgmTooltip.isOpen()) {\r\n            this.invCodeSellerPgmTooltip.close();\r\n        }\r\n        this.invCodeSellerPgmTooltip = null;\r\n    }\r\n}\r\n","<div class=\"filter-container period-filter-container\">\r\n    <anna-design-order-container-filter-modal\r\n        *ngIf=\"flightPeriodData\"\r\n        [title]=\"periodModalTitle\"\r\n        [selectedData]=\"persistingFilterPeriodData\"\r\n        [flightPeriod]=\"flightPeriodData\"\r\n        [message]=\"periodModalMessage\"\r\n        [PeriodOptions]=\"PeriodOptions\"\r\n        [startDateConsideringFactor]=\"startDateConsideringFactor\"\r\n        [parentQueryParams]=\"queryParams\"\r\n        [disablePeriodSelection]=\"disablePeriodSelection || isFlightPeriodFallsinSameMonth\"\r\n        (apply)=\"applyPeriodSelection($event)\"\r\n        [disableFiscal]=\"!showEasyFilters || selectedLine === 'BuyerLine'\"\r\n        (initialQuarterStartEndDateEmitter)=\"initialisePeriodFilter($event)\"\r\n        [removeQuarterSelectionsIfOnlyOneQuarter]=\"true\"\r\n    >\r\n    </anna-design-order-container-filter-modal>\r\n    <anna-design-skt-loader\r\n        [count]=\"1\"\r\n        *ngIf=\"!primaryOrderData?.orderInfo.orderFlightStatus\"\r\n        [theme]=\"{ height: '24px', width: '280px', 'margin-top': '8px' }\"\r\n    >\r\n    </anna-design-skt-loader>\r\n\r\n    <!-- Line Compairison View Link -->\r\n    <p\r\n        class=\"view-link\"\r\n        *ngIf=\"showViewLineComparisons && !showSkeletonLoading\"\r\n        (click)=\"viewLinkClicked()\"\r\n    >\r\n        View Line Comparison\r\n    </p>\r\n\r\n    <div class=\"metric-dropdown-container\">\r\n        <anna-design-skt-loader\r\n            *ngIf=\"showSkeletonLoading\"\r\n            [count]=\"1\"\r\n            [theme]=\"{\r\n                height: '24px',\r\n                width: '8rem',\r\n                display: 'inline-block',\r\n                margin: '0',\r\n                'border-radius': '4px'\r\n            }\"\r\n        ></anna-design-skt-loader>\r\n\r\n        <div\r\n            class=\"show-subline-toggle-container\"\r\n            *ngIf=\"!showSkeletonLoading && selectedLine === 'SellerLine'\"\r\n        >\r\n            <span>Merge sub-lines</span>\r\n            <anna-design-toggle\r\n                [isDisabled]=\"disableShowSublineToggle\"\r\n                [position]=\"'none'\"\r\n                [isToggled]=\"isShowSublineToggled\"\r\n                (toggle)=\"onShowSublineToggled($event)\"\r\n            >\r\n            </anna-design-toggle>\r\n        </div>\r\n\r\n        <anna-design-single-select\r\n            *ngIf=\"!showSkeletonLoading\"\r\n            [items]=\"orderMetricsListForDropdown\"\r\n            class=\"order-metrics-dropdown\"\r\n            [selectedItem]=\"selectedMetric\"\r\n            [config]=\"metricDropdownConfig\"\r\n            (valueChanged)=\"onOrderMetricChanged($event)\"\r\n            [disabled]=\"tableData?.length === 0\"\r\n        >\r\n        </anna-design-single-select>\r\n    </div>\r\n</div>\r\n\r\n<div\r\n    class=\"filter-container\"\r\n    [ngClass]=\"{ 'filters-container-wo-filters': !(showEasyFilters && selectedLine === 'SellerLine') }\"\r\n>\r\n    <div\r\n        class=\"d-flex align-items-end\"\r\n        *ngIf=\"showSellLineToggle || showBuyLineToggle\"\r\n    >\r\n        <ng-container *ngIf=\"showSkeletonLoading\">\r\n            <anna-design-skt-loader\r\n                [count]=\"1\"\r\n                *ngIf=\"showSellLineToggle\"\r\n                [theme]=\"{\r\n                    height: '24px',\r\n                    width: '110px',\r\n                    float: 'left',\r\n                    'margin-left': '0px',\r\n                    'margin-bottom': '0px'\r\n                }\"\r\n            >\r\n            </anna-design-skt-loader>\r\n            <anna-design-skt-loader\r\n                [count]=\"1\"\r\n                *ngIf=\"showBuyLineToggle\"\r\n                [theme]=\"{ height: '24px', width: '110px', float: 'left', 'margin-bottom': '0px' }\"\r\n            >\r\n            </anna-design-skt-loader>\r\n        </ng-container>\r\n        <anna-core-button-toggle\r\n            *ngIf=\"!showSkeletonLoading\"\r\n            [isPageViewToggle]=\"true\"\r\n            [options]=\"buttonToggleOptions\"\r\n            [selectedValue]=\"selectedLine\"\r\n            (valueChange)=\"lineSelectionChanged($any($event))\"\r\n        >\r\n        </anna-core-button-toggle>\r\n    </div>\r\n    <div class=\"easy-filters\">\r\n        <anna-design-easy-filters\r\n            *ngIf=\"showEasyFilters && selectedLine === 'SellerLine'\"\r\n            [showLoader]=\"showSkeletonLoading\"\r\n            [numberOfItemsForLoader]=\"numberOfEasyFilterLoader\"\r\n            [easyFilters]=\"intelliFilters\"\r\n            [tableData]=\"tableData\"\r\n            [autoSelectionOfOnlyEnabledFilter]=\"true\"\r\n            [clonedTableData]=\"tableDataClonned\"\r\n            (easyFilterClickEvent)=\"intelliFilterClicked($event)\"\r\n        >\r\n        </anna-design-easy-filters>\r\n\r\n        <div class=\"metric-reset-container\">\r\n            <!-- <button\r\n                *ngIf=\"!showSkeletonLoading\"\r\n                class=\"clear-all-btn\"\r\n                (click)=\"clearAllFiltersAndSorting()\"\r\n                [disabled]=\"!lineDetailsFilterService.showClearAllBtn && !easyFiltersApplied\"\r\n            >\r\n                Reset all filters\r\n            </button> -->\r\n            <ng-container *ngIf=\"!showSkeletonLoading\">\r\n                <!-- <span class=\"expand-all-label\">Expand All</span>\r\n                <i\r\n                    class=\"mi mdi-check-box check-box\"\r\n                    [ngClass]=\"{\r\n                        disabled: disableExpandCheckbox,\r\n                        'mdi-check-box': isExpandRowsChecked,\r\n                        'mdi-check-box-outline-blank unchecked': !isExpandRowsChecked\r\n                    }\"\r\n                    (click)=\"expandRowsClicked()\"\r\n                ></i>\r\n                <div class=\"pipe\"></div> -->\r\n                <button\r\n                    class=\"clear-all-btn\"\r\n                    (click)=\"clearAllFiltersAndSorting()\"\r\n                    [disabled]=\"!lineDetailsFilterService.showClearAllBtn\"\r\n                >\r\n                    Reset all filters\r\n                </button>\r\n            </ng-container>\r\n        </div>\r\n    </div>\r\n</div>\r\n\r\n<div\r\n    class=\"table-container\"\r\n    #tableElementRef\r\n    [ngClass]=\"{ 'buyline-line-details-table-container': selectedLine !== 'SellerLine' }\"\r\n    (scroll)=\"onTableContainerScroll($event)\"\r\n    [ngStyle]=\"{ 'max-height': tableHeight }\"\r\n>\r\n    <div\r\n        class=\"wrapper-table-container\"\r\n        [ngClass]=\"{\r\n            'hidden-total-row-table-container': showOrHideToggleForTotalRow && !showTotalRow\r\n        }\"\r\n    >\r\n        <button\r\n            *ngIf=\"showOrHideToggleForTotalRow && !showSkeletonLoading && tableData.length > 0\"\r\n            [ngClass]=\"{\r\n                'shift-toggle-top-on-total-row-click': !showTotalRow\r\n            }\"\r\n            class=\"show-or-hide-toggle-btn\"\r\n            (click)=\"showHideTotalRow()\"\r\n        >\r\n            <i\r\n                class=\"mdi mdi-menu-swap\"\r\n                tooltipClass=\"show-or-hide-toggle-tooltip\"\r\n                placement=\"auto\"\r\n                container=\"body\"\r\n                [ngbTooltip]=\"showOrHideToggleForTotalRowTooltip\"\r\n            ></i>\r\n        </button>\r\n        <table class=\"line-details-table\">\r\n            <thead>\r\n                <tr class=\"header-row\">\r\n                    <ng-container *ngFor=\"let header of tableHeaders\">\r\n                        <th\r\n                            #thElement\r\n                            class=\"sticky-col first-col header\"\r\n                            [ngClass]=\"{\r\n                                'scroll-left-shadow-effect': isScrolledLeft && header.columnName === 'AMOUNT'\r\n                            }\"\r\n                            width=\"{{ header.width }}\"\r\n                        >\r\n                            <div *ngIf=\"!header?.columnName\">\r\n                                <ngx-skeleton-loader\r\n                                    count=\"1\"\r\n                                    [theme]=\"{ width: '90%', height: '1em', display: 'block', margin: '4px 0' }\"\r\n                                >\r\n                                </ngx-skeleton-loader>\r\n                            </div>\r\n                            <div\r\n                                *ngIf=\"header?.columnName\"\r\n                                class=\"row mx-0 equal-padding\"\r\n                                [ngClass]=\"{ 'with-tooltip-header': header.isToolTipRequired }\"\r\n                            >\r\n                                <p class=\"upper-label\">\r\n                                    {{ header.columnName }}\r\n                                </p>\r\n                                <i\r\n                                    *ngIf=\"header.isToolTipRequired && header.isToolTipRequired[0]\"\r\n                                    class=\"mi mdi-info-outline info-label\"\r\n                                    container=\"body\"\r\n                                    [ngbTooltip]=\"header.toolTipMsg[0]\"\r\n                                    tooltipClass=\"info-tooltip custom-tooltip\"\r\n                                    placement=\"bottom auto\"\r\n                                ></i>\r\n                                <div class=\"sort-filter-container\">\r\n                                    <span\r\n                                        class=\"mdi mdi-filter-variant\"\r\n                                        *ngIf=\"header.filterRequired\"\r\n                                        [tooltipClass]=\"\r\n                                            'filter-tooltip ' +\r\n                                            (header.upperColumnFilter.filterType === 'CHECKBOX'\r\n                                                ? 'non-edit-checkbox-tooltip'\r\n                                                : '')\r\n                                        \"\r\n                                        [ngClass]=\"{\r\n                                            active:\r\n                                                lineDetailsFilterService.isTooltipActive([\r\n                                                    header.upperColumnFilter.columnKeys[0]\r\n                                                ]) ||\r\n                                                lineDetailsFilterService.isTooltipActive([\r\n                                                    header.upperColumnFilter.columnKeys[1]\r\n                                                ]),\r\n                                            disabled:\r\n                                                (lineDetailsFilterService.columnSortFiltersStates?.[\r\n                                                    header.upperColumnFilter.columnKeys[0]\r\n                                                ] &&\r\n                                                    (header.upperColumnFilter.columnKeys[1]\r\n                                                        ? lineDetailsFilterService.columnSortFiltersStates?.[\r\n                                                              header.upperColumnFilter.columnKeys[1]\r\n                                                          ]\r\n                                                        : true)) ||\r\n                                                showSkeletonLoading\r\n                                        }\"\r\n                                        [ngbTooltip]=\"\r\n                                            header.upperColumnFilter.filterType === 'SLIDER'\r\n                                                ? SLIDER\r\n                                                : header.upperColumnFilter.filterType === 'TIME'\r\n                                                  ? TIME\r\n                                                  : header.upperColumnFilter.filterType === 'DATE'\r\n                                                    ? DATE\r\n                                                    : CHECKBOX\r\n                                        \"\r\n                                        placement=\"{{ filterAlignment }}\"\r\n                                        container=\"body\"\r\n                                        [autoClose]=\"'outside'\"\r\n                                        triggers=\"manual\"\r\n                                        #t1=\"ngbTooltip\"\r\n                                        (click)=\"\r\n                                            lineDetailsFilterService.bindTheValueToToolTip(\r\n                                                t1,\r\n                                                header.upperColumnFilter.columnKeys,\r\n                                                header.upperColumnFilter.isSortRequired,\r\n                                                header.upperColumnFilter.isFilterRequired\r\n                                            )\r\n                                        \"\r\n                                        (hidden)=\"lineDetailsFilterService.closeTooltip()\"\r\n                                    >\r\n                                    </span>\r\n                                </div>\r\n                            </div>\r\n                            <div\r\n                                class=\"row\"\r\n                                *ngIf=\"header?.lowerData\"\r\n                                annaCoreShowEllipsisTextOnHover\r\n                            >\r\n                                <p class=\"lower-label\">{{ header.lowerData }}</p>\r\n                                <i\r\n                                    *ngIf=\"header.isToolTipRequired && header.isToolTipRequired[1]\"\r\n                                    class=\"mi mdi-info-outline info-label\"\r\n                                    container=\"body\"\r\n                                    [ngbTooltip]=\"header.toolTipMsg[1]\"\r\n                                    tooltipClass=\"info-tooltip custom-tooltip max-width-400\"\r\n                                    placement=\"bottom auto\"\r\n                                ></i>\r\n                                <div class=\"sort-filter-container\">\r\n                                    <span\r\n                                        class=\"mdi mdi-filter-variant\"\r\n                                        *ngIf=\"header.filterRequired && header.lowerColumnFilter\"\r\n                                        tooltipClass=\"filter-tooltip\"\r\n                                        [ngClass]=\"{\r\n                                            active: lineDetailsFilterService.isTooltipActive([\r\n                                                header.lowerColumnFilter.columnKeys[0]\r\n                                            ]),\r\n                                            disabled:\r\n                                                lineDetailsFilterService.columnSortFiltersStates?.[\r\n                                                    header.lowerColumnFilter.columnKeys[0]\r\n                                                ] || showSkeletonLoading\r\n                                        }\"\r\n                                        [ngbTooltip]=\"\r\n                                            header.lowerColumnFilter.filterType === 'SLIDER'\r\n                                                ? SLIDER\r\n                                                : header.lowerColumnFilter.filterType === 'TIME'\r\n                                                  ? TIME\r\n                                                  : header.lowerColumnFilter.filterType === 'DATE'\r\n                                                    ? DATE\r\n                                                    : CHECKBOX\r\n                                        \"\r\n                                        placement=\"{{ filterAlignment }}\"\r\n                                        container=\"body\"\r\n                                        [autoClose]=\"'outside'\"\r\n                                        triggers=\"manual\"\r\n                                        #t1=\"ngbTooltip\"\r\n                                        (click)=\"\r\n                                            lineDetailsFilterService.bindTheValueToToolTip(\r\n                                                t1,\r\n                                                header.lowerColumnFilter.columnKeys,\r\n                                                header.lowerColumnFilter.isSortRequired,\r\n                                                header.lowerColumnFilter.isFilterRequired\r\n                                            )\r\n                                        \"\r\n                                        (hidden)=\"lineDetailsFilterService.closeTooltip()\"\r\n                                    >\r\n                                    </span>\r\n                                </div>\r\n                            </div>\r\n                        </th>\r\n                    </ng-container>\r\n                    <ng-container *ngIf=\"!showSkeletonLoading && tableHeaders.length > 0\">\r\n                        <th\r\n                            *ngFor=\"let week of weekWiseHeaderData\"\r\n                            width=\"55px\"\r\n                        >\r\n                            <div\r\n                                class=\"row\"\r\n                                annaCoreannaCoreShowEllipsisTextOnHover\r\n                            >\r\n                                <p class=\"upper-label\">{{ week.columnName }}</p>\r\n                            </div>\r\n                            <div\r\n                                class=\"row\"\r\n                                annaCoreannaCoreShowEllipsisTextOnHover\r\n                            >\r\n                                <p class=\"lower-label\">{{ week.lowerData }}</p>\r\n                            </div>\r\n                        </th>\r\n                    </ng-container>\r\n                    <ng-container *ngIf=\"showSkeletonLoading && tableHeaders.length > 0\">\r\n                        <th\r\n                            *ngFor=\"let column of skeletonWeekColumns\"\r\n                            width=\"55px\"\r\n                        >\r\n                            <ngx-skeleton-loader\r\n                                count=\"1\"\r\n                                [theme]=\"{ width: '90%', height: '1em', display: 'block', 'margin-top': '10px' }\"\r\n                            >\r\n                            </ngx-skeleton-loader>\r\n                        </th>\r\n                    </ng-container>\r\n                </tr>\r\n                <tr\r\n                    *ngIf=\"showTotalRow && !showSkeletonLoading && tableData.length > 0\"\r\n                    class=\"total-row\"\r\n                >\r\n                    <td\r\n                        class=\"sticky-col\"\r\n                        colspan=\"8\"\r\n                    >\r\n                        <strong\r\n                            class=\"upper-label pl-8\"\r\n                            annaCoreShowEllipsisTextOnHover\r\n                        >\r\n                            Total for {{ totalRow.totalLines }} Lines in the selected period\r\n                        </strong>\r\n                    </td>\r\n                    <td class=\"sticky-col\">\r\n                        <strong\r\n                            class=\"upper-label\"\r\n                            annaCoreShowEllipsisTextOnHover\r\n                            >{{ totalRow.totalSpots | currency: \" \" : \"symbol\" : \"1.0-1\" }}</strong\r\n                        >\r\n                    </td>\r\n                    <td class=\"sticky-col\">\r\n                        <strong\r\n                            class=\"upper-label\"\r\n                            annaCoreShowEllipsisTextOnHover\r\n                        >\r\n                            <ng-container *ngIf=\"selectedMetric?.text === 'GRP'; else impsTemplateForGIHeader\">\r\n                                {{ totalRow.totalGRP | currency: \" \" : \"symbol\" : \"1.0-2\" }}\r\n                            </ng-container>\r\n                            <ng-template #impsTemplateForGIHeader>\r\n                                {{ totalRow.totalGI | currency: \" \" : \"symbol\" : \"1.0-2\" }}\r\n                            </ng-template>\r\n                        </strong>\r\n                        <p\r\n                            annaCoreShowEllipsisTextOnHover\r\n                            class=\"lower-label\"\r\n                            *ngIf=\"selectedLine === 'SellerLine' && userType === 'SELLER'\"\r\n                        >\r\n                            <ng-container *ngIf=\"selectedMetric?.text === 'GRP'; else impsTemplateForGIHeader\">\r\n                                {{ totalRow.totalProjectedGRP | currency: \" \" : \"symbol\" : \"1.0-2\" }}\r\n                            </ng-container>\r\n                            <ng-template #impsTemplateForGIHeader>\r\n                                {{ totalRow.totalProjectedGI | currency: \" \" : \"symbol\" : \"1.0-2\" }}\r\n                            </ng-template>\r\n                        </p>\r\n                    </td>\r\n                    <td\r\n                        class=\"sticky-col\"\r\n                        [ngClass]=\"{ 'scroll-left-shadow-effect': isScrolledLeft }\"\r\n                    >\r\n                        <strong\r\n                            class=\"upper-label\"\r\n                            annaCoreShowEllipsisTextOnHover\r\n                            >{{ totalRow.totalAmount | currency: currencyUnit : \"symbol\" : \"1.0-2\" }}</strong\r\n                        >\r\n                    </td>\r\n                    <td *ngFor=\"let spots of totalRow.totalWeekSpots\">\r\n                        <strong\r\n                            class=\"upper-label\"\r\n                            annaCoreShowEllipsisTextOnHover\r\n                            >{{ spots | number: \"1.0-1\" }}</strong\r\n                        >\r\n                    </td>\r\n                </tr>\r\n            </thead>\r\n            <tbody>\r\n                <ng-container *ngIf=\"!showSkeletonLoading && tableData.length > 0\">\r\n                    <ng-container *ngFor=\"let line of tableData\">\r\n                        <tr\r\n                            [ngClass]=\"{\r\n                                'expanded-row': line.isExpaded,\r\n                                'expandable-row': line.isParentRowWithSublines\r\n                            }\"\r\n                            [class]=\"line.rowClass\"\r\n                            [ngStyle]=\"{ cursor: line.isParentRowWithSublines ? 'pointer' : 'default' }\"\r\n                            (click)=\"expandRow(line.parentExpandlableLineID)\"\r\n                        >\r\n                            <td class=\"sticky-col\">\r\n                                <div>\r\n                                    <span class=\"upper-label label-with-arrow\"\r\n                                        >{{ line.lineNumber }}\r\n                                        <i\r\n                                            *ngIf=\"line.isParentRowWithSublines\"\r\n                                            class=\"arrow mdi info-label\"\r\n                                            [ngClass]=\"{\r\n                                                'mdi-menu-down': line.isExpaded === false,\r\n                                                'mdi-menu-up': line.isExpaded\r\n                                            }\"\r\n                                            container=\"body\"\r\n                                            ngbTooltip=\"This line contains multiple sub-lines.\"\r\n                                            #arrowTooltip=\"ngbTooltip\"\r\n                                            tooltipClass=\"arrow-tooltip\"\r\n                                            placement=\"top auto\"\r\n                                        ></i>\r\n                                    </span>\r\n                                </div>\r\n                            </td>\r\n                            <td class=\"sticky-col\">\r\n                                <div annaCoreShowEllipsisTextOnHover>\r\n                                    <span\r\n                                        annaCoreShowEllipsisTextOnHover\r\n                                        class=\"upper-label\"\r\n                                        [ngClass]=\"{\r\n                                            'reduced-text-width':\r\n                                                line.sellerProgramList?.length > 0 && selectedLine === 'SellerLine'\r\n                                        }\"\r\n                                        >{{ line[selectedLine === \"SellerLine\" ? \"sellerProgram\" : \"buyerProgram\"] }}\r\n                                    </span>\r\n                                    <ng-container\r\n                                        *ngTemplateOutlet=\"\r\n                                            line.sellerProgramList?.length > 0 && selectedLine === 'SellerLine'\r\n                                                ? additionalData\r\n                                                : null;\r\n                                            context: { data: line.sellerProgramList }\r\n                                        \"\r\n                                    >\r\n                                    </ng-container>\r\n                                </div>\r\n                                <div annaCoreShowEllipsisTextOnHover>\r\n                                    <span\r\n                                        annaCoreShowEllipsisTextOnHover\r\n                                        class=\"lower-label\"\r\n                                        [ngClass]=\"{\r\n                                            'reduced-text-width':\r\n                                                line.sellerProgramList?.length > 0 && selectedLine === 'BuyerLine'\r\n                                        }\"\r\n                                    >\r\n                                        {{\r\n                                            line[\r\n                                                selectedLine === \"SellerLine\"\r\n                                                    ? \"inventoryCode\"\r\n                                                    : userType === \"SELLER\"\r\n                                                      ? \"sellerProgInvCode\"\r\n                                                      : \"sellerProgram\"\r\n                                            ]\r\n                                        }}\r\n                                    </span>\r\n                                    <ng-container\r\n                                        *ngTemplateOutlet=\"\r\n                                            line.sellerProgramList?.length > 0 &&\r\n                                            selectedLine === 'BuyerLine' &&\r\n                                            userType === 'BUYER'\r\n                                                ? additionalData\r\n                                                : null;\r\n                                            context: { data: line.sellerProgramList }\r\n                                        \"\r\n                                    >\r\n                                    </ng-container>\r\n                                    <ng-container\r\n                                        *ngTemplateOutlet=\"\r\n                                            line.inventoryCodeSellerProgramMap?.length > 0 &&\r\n                                            selectedLine === 'BuyerLine' &&\r\n                                            userType === 'SELLER'\r\n                                                ? invCodeSellerPgmTableIcon\r\n                                                : null;\r\n                                            context: { data: line.inventoryCodeSellerProgramMap }\r\n                                        \"\r\n                                    >\r\n                                    </ng-container>\r\n                                </div>\r\n                            </td>\r\n                            <td class=\"sticky-col\">\r\n                                <div annaCoreShowEllipsisTextOnHover>\r\n                                    <span\r\n                                        annaCoreShowEllipsisTextOnHover\r\n                                        class=\"upper-label\"\r\n                                        >{{ line.startDate ? line.startDate : \"-\" }}</span\r\n                                    >\r\n                                </div>\r\n                                <div annaCoreShowEllipsisTextOnHover>\r\n                                    <span\r\n                                        annaCoreShowEllipsisTextOnHover\r\n                                        class=\"lower-label\"\r\n                                        >{{ line.endDate ? line.endDate : \"-\" }}</span\r\n                                    >\r\n                                </div>\r\n                            </td>\r\n                            <td class=\"sticky-col\">\r\n                                <div annaCoreShowEllipsisTextOnHover>\r\n                                    <span\r\n                                        annaCoreShowEllipsisTextOnHover\r\n                                        class=\"upper-label\"\r\n                                        >{{\r\n                                            line.inventoryDays && line.inventoryDays !== \"0\" ? line.inventoryDays : \"-\"\r\n                                        }}</span\r\n                                    >\r\n                                </div>\r\n                                <div annaCoreShowEllipsisTextOnHover>\r\n                                    <span\r\n                                        annaCoreShowEllipsisTextOnHover\r\n                                        class=\"lower-label\"\r\n                                        >{{\r\n                                            line.inventoryTime && line.inventoryTime !== \"0\" ? line.inventoryTime : \"-\"\r\n                                        }}</span\r\n                                    >\r\n                                </div>\r\n                            </td>\r\n                            <td class=\"sticky-col\">\r\n                                <div annaCoreShowEllipsisTextOnHover>\r\n                                    <span\r\n                                        annaCoreShowEllipsisTextOnHover\r\n                                        class=\"upper-label\"\r\n                                    >\r\n                                        {{ line.spotType }}\r\n                                    </span>\r\n                                </div>\r\n                            </td>\r\n                            <td class=\"sticky-col\">\r\n                                <div annaCoreShowEllipsisTextOnHover>\r\n                                    <span\r\n                                        annaCoreShowEllipsisTextOnHover\r\n                                        class=\"upper-label\"\r\n                                        >{{ line.daypart ? line.daypart : \"-\" }}</span\r\n                                    >\r\n                                </div>\r\n                                <div annaCoreShowEllipsisTextOnHover>\r\n                                    <span\r\n                                        annaCoreShowEllipsisTextOnHover\r\n                                        class=\"lower-label\"\r\n                                        >{{ line.length ? line.length : \"-\" }}</span\r\n                                    >\r\n                                </div>\r\n                            </td>\r\n                            <td class=\"sticky-col\">\r\n                                <div annaCoreShowEllipsisTextOnHover>\r\n                                    <span\r\n                                        annaCoreShowEllipsisTextOnHover\r\n                                        class=\"upper-label\"\r\n                                    >\r\n                                        <ng-container *ngIf=\"selectedMetric?.text === 'GRP'; else impsTemplateForImps\">\r\n                                            {{\r\n                                                line.rating || line.rating === 0\r\n                                                    ? (line.rating | currency: \" \" : \"symbol\" : \"1.0\")\r\n                                                    : \"0\"\r\n                                            }}\r\n                                        </ng-container>\r\n                                        <ng-template #impsTemplateForImps>\r\n                                            {{\r\n                                                line.IMPS || line.IMPS === 0\r\n                                                    ? (line.IMPS | currency: \" \" : \"symbol\" : \"1.0\")\r\n                                                    : \"0\"\r\n                                            }}\r\n                                        </ng-template>\r\n                                    </span>\r\n                                </div>\r\n                            </td>\r\n                            <td class=\"sticky-col\">\r\n                                <div annaCoreShowEllipsisTextOnHover>\r\n                                    <span\r\n                                        annaCoreShowEllipsisTextOnHover\r\n                                        class=\"upper-label\"\r\n                                        >{{\r\n                                            line.rate ? (line.rate | currency: currencyUnit : \"symbol\" : \"1.0\") : \"$0\"\r\n                                        }}</span\r\n                                    >\r\n                                </div>\r\n                            </td>\r\n                            <td class=\"sticky-col\">\r\n                                <div annaCoreShowEllipsisTextOnHover>\r\n                                    <span\r\n                                        annaCoreShowEllipsisTextOnHover\r\n                                        class=\"upper-label\"\r\n                                        >{{ line.spots ? (line.spots | currency: \" \" : \"symbol\" : \"1.0\") : \"0\" }}</span\r\n                                    >\r\n                                </div>\r\n                            </td>\r\n                            <td class=\"sticky-col\">\r\n                                <div annaCoreShowEllipsisTextOnHover>\r\n                                    <span\r\n                                        annaCoreShowEllipsisTextOnHover\r\n                                        class=\"upper-label\"\r\n                                    >\r\n                                        <ng-container *ngIf=\"selectedMetric?.text === 'GRP'; else impsTemplateForGI\">\r\n                                            {{\r\n                                                line.bookedGRP\r\n                                                    ? (line.bookedGRP | currency: \" \" : \"symbol\" : \"1.0\")\r\n                                                    : \"0\"\r\n                                            }}\r\n                                        </ng-container>\r\n                                        <ng-template #impsTemplateForGI>\r\n                                            {{\r\n                                                line.bookedGI ? (line.bookedGI | currency: \" \" : \"symbol\" : \"1.0\") : \"0\"\r\n                                            }}\r\n                                        </ng-template>\r\n                                    </span>\r\n                                </div>\r\n                                <div\r\n                                    annaCoreShowEllipsisTextOnHover\r\n                                    *ngIf=\"selectedLine === 'SellerLine' && userType === 'SELLER'\"\r\n                                >\r\n                                    <span\r\n                                        annaCoreShowEllipsisTextOnHover\r\n                                        class=\"lower-label\"\r\n                                    >\r\n                                        <ng-container *ngIf=\"selectedMetric?.text === 'GRP'; else impsTemplateForGI\">\r\n                                            {{\r\n                                                line.projectedGRP\r\n                                                    ? (line.projectedGRP | currency: \" \" : \"symbol\" : \"1.0\")\r\n                                                    : \"0\"\r\n                                            }}\r\n                                        </ng-container>\r\n                                        <ng-template #impsTemplateForGI>\r\n                                            {{\r\n                                                line.projectedGI\r\n                                                    ? (line.projectedGI | currency: \" \" : \"symbol\" : \"1.0\")\r\n                                                    : \"0\"\r\n                                            }}\r\n                                        </ng-template>\r\n                                    </span>\r\n                                </div>\r\n                            </td>\r\n                            <td\r\n                                class=\"sticky-col\"\r\n                                [ngClass]=\"{ 'scroll-left-shadow-effect': isScrolledLeft }\"\r\n                            >\r\n                                <div annaCoreShowEllipsisTextOnHover>\r\n                                    <span\r\n                                        annaCoreShowEllipsisTextOnHover\r\n                                        class=\"upper-label\"\r\n                                        >{{\r\n                                            line.amount != null\r\n                                                ? (line.amount | currency: currencyUnit : \"symbol\" : \"1.0\")\r\n                                                : \"$0\"\r\n                                        }}</span\r\n                                    >\r\n                                </div>\r\n                            </td>\r\n                            <td *ngFor=\"let weekSpot of line.weekSpots\">\r\n                                <div annaCoreShowEllipsisTextOnHover>\r\n                                    <span\r\n                                        annaCoreShowEllipsisTextOnHover\r\n                                        class=\"upper-label\"\r\n                                        >{{ weekSpot ? weekSpot : \"0\" }}</span\r\n                                    >\r\n                                </div>\r\n                            </td>\r\n                        </tr>\r\n                        <ng-container *ngIf=\"line.subLines.length > 0\">\r\n                            <ng-container *ngFor=\"let subline of line.subLines\">\r\n                                <tr\r\n                                    class=\"sub-line\"\r\n                                    [ngStyle]=\"line.isExpaded ? { display: 'table-row' } : { display: 'none' }\"\r\n                                >\r\n                                    <td class=\"sticky-col\">\r\n                                        <div annaCoreShowEllipsisTextOnHover>\r\n                                            <span\r\n                                                annaCoreShowEllipsisTextOnHover\r\n                                                class=\"upper-label\"\r\n                                            ></span>\r\n                                        </div>\r\n                                    </td>\r\n                                    <td class=\"sticky-col\">\r\n                                        <div annaCoreShowEllipsisTextOnHover>\r\n                                            <span\r\n                                                annaCoreShowEllipsisTextOnHover\r\n                                                class=\"upper-label\"\r\n                                                [ngClass]=\"{\r\n                                                    'reduced-text-width':\r\n                                                        subline.sellerProgramList?.length > 0 &&\r\n                                                        selectedLine === 'SellerLine'\r\n                                                }\"\r\n                                            >\r\n                                                {{\r\n                                                    subline[\r\n                                                        selectedLine === \"SellerLine\" ? \"sellerProgram\" : \"buyerProgram\"\r\n                                                    ]\r\n                                                }}\r\n                                            </span>\r\n                                            <ng-container\r\n                                                *ngTemplateOutlet=\"\r\n                                                    subline.sellerProgramList?.length > 0 &&\r\n                                                    selectedLine === 'SellerLine'\r\n                                                        ? additionalData\r\n                                                        : null;\r\n                                                    context: { data: subline.sellerProgramList }\r\n                                                \"\r\n                                            >\r\n                                            </ng-container>\r\n                                        </div>\r\n                                        <div annaCoreShowEllipsisTextOnHover>\r\n                                            <span\r\n                                                annaCoreShowEllipsisTextOnHover\r\n                                                class=\"lower-label\"\r\n                                                [ngClass]=\"{\r\n                                                    'reduced-text-width':\r\n                                                        subline.sellerProgramList?.length > 0 &&\r\n                                                        selectedLine === 'BuyerLine'\r\n                                                }\"\r\n                                                >{{\r\n                                                    subline[\r\n                                                        selectedLine === \"SellerLine\"\r\n                                                            ? \"inventoryCode\"\r\n                                                            : userType === \"SELLER\"\r\n                                                              ? \"sellerProgInvCode\"\r\n                                                              : \"sellerProgram\"\r\n                                                    ]\r\n                                                }}</span\r\n                                            >\r\n                                            <ng-container\r\n                                                *ngTemplateOutlet=\"\r\n                                                    subline.sellerProgramList?.length > 0 &&\r\n                                                    selectedLine === 'BuyerLine' &&\r\n                                                    userType === 'BUYER'\r\n                                                        ? additionalData\r\n                                                        : null;\r\n                                                    context: { data: subline.sellerProgramList }\r\n                                                \"\r\n                                            >\r\n                                            </ng-container>\r\n                                            <ng-container\r\n                                                *ngTemplateOutlet=\"\r\n                                                    line.inventoryCodeSellerProgramMap?.length > 0 &&\r\n                                                    selectedLine === 'BuyerLine' &&\r\n                                                    userType === 'SELLER'\r\n                                                        ? invCodeSellerPgmTableIcon\r\n                                                        : null;\r\n                                                    context: { data: line.inventoryCodeSellerProgramMap }\r\n                                                \"\r\n                                            >\r\n                                            </ng-container>\r\n                                        </div>\r\n                                    </td>\r\n                                    <td class=\"sticky-col\">\r\n                                        <div annaCoreShowEllipsisTextOnHover>\r\n                                            <span\r\n                                                annaCoreShowEllipsisTextOnHover\r\n                                                class=\"upper-label\"\r\n                                                >{{ subline.startDate ? subline.startDate : \"-\" }}</span\r\n                                            >\r\n                                        </div>\r\n                                        <div annaCoreShowEllipsisTextOnHover>\r\n                                            <span\r\n                                                annaCoreShowEllipsisTextOnHover\r\n                                                class=\"lower-label\"\r\n                                                >{{ subline.endDate ? subline.endDate : \"-\" }}</span\r\n                                            >\r\n                                        </div>\r\n                                    </td>\r\n                                    <td class=\"sticky-col\">\r\n                                        <div annaCoreShowEllipsisTextOnHover>\r\n                                            <span\r\n                                                annaCoreShowEllipsisTextOnHover\r\n                                                class=\"upper-label\"\r\n                                                >{{\r\n                                                    subline.inventoryDays && subline.inventoryDays !== \"0\"\r\n                                                        ? subline.inventoryDays\r\n                                                        : \"-\"\r\n                                                }}</span\r\n                                            >\r\n                                        </div>\r\n                                        <div annaCoreShowEllipsisTextOnHover>\r\n                                            <span\r\n                                                annaCoreShowEllipsisTextOnHover\r\n                                                class=\"lower-label\"\r\n                                                >{{\r\n                                                    subline.inventoryTime && subline.inventoryTime !== \"0\"\r\n                                                        ? subline.inventoryTime\r\n                                                        : \"-\"\r\n                                                }}</span\r\n                                            >\r\n                                        </div>\r\n                                    </td>\r\n                                    <td class=\"sticky-col\">\r\n                                        <div annaCoreShowEllipsisTextOnHover>\r\n                                            <span\r\n                                                annaCoreShowEllipsisTextOnHover\r\n                                                class=\"upper-label\"\r\n                                                >{{ subline.spotType }}</span\r\n                                            >\r\n                                        </div>\r\n                                    </td>\r\n                                    <td class=\"sticky-col\">\r\n                                        <div annaCoreShowEllipsisTextOnHover>\r\n                                            <span\r\n                                                annaCoreShowEllipsisTextOnHover\r\n                                                class=\"upper-label\"\r\n                                                >{{ subline.daypart ? subline.daypart : \"-\" }}</span\r\n                                            >\r\n                                        </div>\r\n                                        <div annaCoreShowEllipsisTextOnHover>\r\n                                            <span\r\n                                                annaCoreShowEllipsisTextOnHover\r\n                                                class=\"lower-label\"\r\n                                                >{{ subline.length ? subline.length : \"-\" }}</span\r\n                                            >\r\n                                        </div>\r\n                                    </td>\r\n                                    <td class=\"sticky-col\">\r\n                                        <div annaCoreShowEllipsisTextOnHover>\r\n                                            <span\r\n                                                annaCoreShowEllipsisTextOnHover\r\n                                                class=\"upper-label\"\r\n                                            >\r\n                                                <ng-container\r\n                                                    *ngIf=\"selectedMetric?.text === 'GRP'; else impsTemplateForImps\"\r\n                                                >\r\n                                                    {{\r\n                                                        subline.rating || subline.rating === 0\r\n                                                            ? (subline.rating | currency: \" \" : \"symbol\" : \"1.0\")\r\n                                                            : \"0\"\r\n                                                    }}\r\n                                                </ng-container>\r\n                                                <ng-template #impsTemplateForImps>\r\n                                                    {{\r\n                                                        subline.IMPS || subline.IMPS === 0\r\n                                                            ? (subline.IMPS | currency: \" \" : \"symbol\" : \"1.0\")\r\n                                                            : \"0\"\r\n                                                    }}\r\n                                                </ng-template>\r\n                                            </span>\r\n                                        </div>\r\n                                    </td>\r\n                                    <td class=\"sticky-col\">\r\n                                        <div annaCoreShowEllipsisTextOnHover>\r\n                                            <span\r\n                                                annaCoreShowEllipsisTextOnHover\r\n                                                class=\"upper-label\"\r\n                                                >{{\r\n                                                    subline.rate\r\n                                                        ? (subline.rate | currency: currencyUnit : \"symbol\" : \"1.0\")\r\n                                                        : \"$0\"\r\n                                                }}</span\r\n                                            >\r\n                                        </div>\r\n                                    </td>\r\n                                    <td class=\"sticky-col\">\r\n                                        <div annaCoreShowEllipsisTextOnHover>\r\n                                            <span\r\n                                                annaCoreShowEllipsisTextOnHover\r\n                                                class=\"upper-label\"\r\n                                                >{{\r\n                                                    subline.spots\r\n                                                        ? (subline.spots\r\n                                                          | currency\r\n                                                              : \"\r\n                          \"\r\n                                                              : \"symbol\"\r\n                                                              : \"1.0-1\")\r\n                                                        : \"0\"\r\n                                                }}</span\r\n                                            >\r\n                                        </div>\r\n                                    </td>\r\n                                    <td class=\"sticky-col\">\r\n                                        <div annaCoreShowEllipsisTextOnHover>\r\n                                            <span\r\n                                                annaCoreShowEllipsisTextOnHover\r\n                                                class=\"upper-label\"\r\n                                            >\r\n                                                <ng-container\r\n                                                    *ngIf=\"\r\n                                                        selectedMetric?.text === 'GRP';\r\n                                                        else impsTemplateForGISubline\r\n                                                    \"\r\n                                                >\r\n                                                    {{\r\n                                                        subline.bookedGRP\r\n                                                            ? (subline.bookedGRP | currency: \" \" : \"symbol\" : \"1.0\")\r\n                                                            : \"0\"\r\n                                                    }}\r\n                                                </ng-container>\r\n                                                <ng-template #impsTemplateForGISubline>\r\n                                                    {{\r\n                                                        subline.bookedGI\r\n                                                            ? (subline.bookedGI | currency: \" \" : \"symbol\" : \"1.0\")\r\n                                                            : \"0\"\r\n                                                    }}\r\n                                                </ng-template>\r\n                                            </span>\r\n                                        </div>\r\n\r\n                                        <div\r\n                                            annaCoreShowEllipsisTextOnHover\r\n                                            *ngIf=\"selectedLine === 'SellerLine' && userType === 'SELLER'\"\r\n                                        >\r\n                                            <span\r\n                                                annaCoreShowEllipsisTextOnHover\r\n                                                class=\"lower-label\"\r\n                                            >\r\n                                                <ng-container\r\n                                                    *ngIf=\"selectedMetric?.text === 'GRP'; else impsTemplateForGI\"\r\n                                                >\r\n                                                    {{\r\n                                                        subline.projectedGRP\r\n                                                            ? (subline.projectedGRP | currency: \" \" : \"symbol\" : \"1.0\")\r\n                                                            : \"0\"\r\n                                                    }}\r\n                                                </ng-container>\r\n                                                <ng-template #impsTemplateForGI>\r\n                                                    {{\r\n                                                        subline.projectedGI\r\n                                                            ? (subline.projectedGI | currency: \" \" : \"symbol\" : \"1.0\")\r\n                                                            : \"0\"\r\n                                                    }}\r\n                                                </ng-template>\r\n                                            </span>\r\n                                        </div>\r\n                                    </td>\r\n                                    <td\r\n                                        class=\"sticky-col\"\r\n                                        [ngClass]=\"{ 'scroll-left-shadow-effect': isScrolledLeft }\"\r\n                                    >\r\n                                        <div annaCoreShowEllipsisTextOnHover>\r\n                                            <span\r\n                                                annaCoreShowEllipsisTextOnHover\r\n                                                class=\"upper-label\"\r\n                                                >{{\r\n                                                    subline.amount != null\r\n                                                        ? (subline.amount | currency: currencyUnit : \"symbol\" : \"1.0\")\r\n                                                        : \"$0\"\r\n                                                }}</span\r\n                                            >\r\n                                        </div>\r\n                                    </td>\r\n                                    <td *ngFor=\"let weekSpot of subline.weekSpots\">\r\n                                        <div annaCoreShowEllipsisTextOnHover>\r\n                                            <span\r\n                                                annaCoreShowEllipsisTextOnHover\r\n                                                class=\"upper-label\"\r\n                                                >{{ weekSpot ? weekSpot : \"0\" }}</span\r\n                                            >\r\n                                        </div>\r\n                                    </td>\r\n                                </tr>\r\n                            </ng-container>\r\n                        </ng-container>\r\n                    </ng-container>\r\n                </ng-container>\r\n                <ng-container *ngIf=\"!showSkeletonLoading && tableData.length === 0\">\r\n                    <tr>\r\n                        <td\r\n                            [colSpan]=\"tableHeaders.length\"\r\n                            [height]=\"'100px'\"\r\n                            class=\"no-data-td\"\r\n                        >\r\n                            <div class=\"no-data-to-display\">\r\n                                <anna-core-no-data-lib class=\"line-details-nodata\"></anna-core-no-data-lib>\r\n                            </div>\r\n                        </td>\r\n                        <td\r\n                            *ngIf=\"weekWiseHeaderData.length > 0\"\r\n                            [colSpan]=\"weekWiseHeaderData.length\"\r\n                            [height]=\"'100px'\"\r\n                            class=\"no-data-td\"\r\n                        ></td>\r\n                    </tr>\r\n                </ng-container>\r\n                <ng-container\r\n                    [ngTemplateOutlet]=\"skeletonLoading\"\r\n                    *ngIf=\"showSkeletonLoading\"\r\n                ></ng-container>\r\n            </tbody>\r\n        </table>\r\n    </div>\r\n</div>\r\n\r\n<!-- table skeleton loader -->\r\n<ng-template #skeletonLoading>\r\n    <tr *ngFor=\"let row of numberOfSkeletonRow; let rowIndex = index\">\r\n        <td\r\n            class=\"skeleton-loader-td\"\r\n            *ngFor=\"let column of numberOfSkeletonColumns; let colIndex = index\"\r\n            [ngClass]=\"{\r\n                'scroll-left-shadow-effect': isScrolledLeft && colIndex === 10,\r\n                'sticky-col': colIndex === 10,\r\n                'skeleton-td': colIndex < 11\r\n            }\"\r\n        >\r\n            <ngx-skeleton-loader\r\n                count=\"1\"\r\n                [theme]=\"{ width: '90%', height: '1em', display: 'block', 'margin-top': '10px' }\"\r\n            >\r\n            </ngx-skeleton-loader>\r\n        </td>\r\n    </tr>\r\n</ng-template>\r\n\r\n<!-- Checkbox filter template -->\r\n<ng-template #CHECKBOX>\r\n    <anna-core-anna-column-checkbox-filter\r\n        [tableData]=\"tableData\"\r\n        [showFilterHeaderTabs]=\"lineDetailsFilterService.showFilterTabs\"\r\n        [isLurAndCsrComponent]=\"false\"\r\n        [clonedTableData]=\"tableDataClonned\"\r\n        [filterTabObjects]=\"lineDetailsFilterService.radioButtons\"\r\n        (filterAppliedToTable)=\"filterAppliedToTable($event)\"\r\n        (sortingAppliedToTable)=\"filterAppliedToTable($event)\"\r\n        (closeTooltip)=\"lineDetailsFilterService.closeTooltip()\"\r\n    >\r\n    </anna-core-anna-column-checkbox-filter>\r\n</ng-template>\r\n\r\n<ng-template #SLIDER>\r\n    <anna-core-anna-column-slider-filter\r\n        [tableData]=\"tableData\"\r\n        [showFilterHeaderTabs]=\"lineDetailsFilterService.showFilterTabs\"\r\n        [isLurAndCsrComponent]=\"false\"\r\n        [clonedTableData]=\"tableDataClonned\"\r\n        [filterTabObjects]=\"lineDetailsFilterService.radioButtons\"\r\n        (filterAppliedToTable)=\"filterAppliedToTable($event)\"\r\n        (sortingAppliedToTable)=\"filterAppliedToTable($event)\"\r\n        (closeTooltip)=\"lineDetailsFilterService.closeTooltip()\"\r\n    >\r\n    </anna-core-anna-column-slider-filter>\r\n</ng-template>\r\n\r\n<!-- date Filter Template -->\r\n<ng-template #DATE>\r\n    <anna-core-anna-column-date-range-filter\r\n        [tableData]=\"tableData\"\r\n        [clonedTableData]=\"tableDataClonned\"\r\n        [showFilterHeaderTabs]=\"lineDetailsFilterService.showFilterTabs\"\r\n        [filterTabObjects]=\"lineDetailsFilterService.radioButtons\"\r\n        (filterAppliedToTable)=\"filterAppliedToTable($event)\"\r\n        (sortingAppliedToTable)=\"filterAppliedToTable($event)\"\r\n        (closeTooltip)=\"lineDetailsFilterService.closeTooltip()\"\r\n    >\r\n    </anna-core-anna-column-date-range-filter>\r\n</ng-template>\r\n\r\n<!-- Time Filter Template -->\r\n<ng-template #TIME>\r\n    <anna-core-anna-column-time-filter\r\n        [tableData]=\"tableData\"\r\n        [showFilterHeaderTabs]=\"lineDetailsFilterService.showFilterTabs\"\r\n        [isLurAndCsrComponent]=\"false\"\r\n        [showAllTimeRangeCheckboxes]=\"true\"\r\n        [clonedTableData]=\"tableDataClonned\"\r\n        [filterTabObjects]=\"lineDetailsFilterService.radioButtons\"\r\n        (filterAppliedToTable)=\"filterAppliedToTable($event)\"\r\n        (sortingAppliedToTable)=\"filterAppliedToTable($event)\"\r\n        (closeTooltip)=\"lineDetailsFilterService.closeTooltip()\"\r\n    >\r\n    </anna-core-anna-column-time-filter>\r\n</ng-template>\r\n\r\n<ng-template #showOrHideToggleForTotalRowTooltip>\r\n    <div>\r\n        {{ showOrHideToggleForTotalRow && !showTotalRow ? \"Show Total Row\" : \"Hide Total Row\" }}\r\n    </div>\r\n</ng-template>\r\n\r\n<ng-template\r\n    let-data=\"data\"\r\n    #additionalData\r\n>\r\n    <i\r\n        *ngIf=\"data?.length > 0\"\r\n        class=\"tooltip-text\"\r\n        #arrowTooltip=\"ngbTooltip\"\r\n        container=\"body\"\r\n        [ngbTooltip]=\"data.join(', ')\"\r\n    >\r\n        +{{ data.length }}\r\n    </i>\r\n</ng-template>\r\n\r\n<ng-template\r\n    #invCodeSellerPgmTableIcon\r\n    let-data=\"data\"\r\n>\r\n    <i\r\n        *ngIf=\"data?.length && (data?.length > 1 || (data?.length === 1 && data[0].InventoryCode?.length > 1))\"\r\n        class=\"tooltip-text\"\r\n        [ngbTooltip]=\"inventorySellerProgramTable\"\r\n        placement=\"bottom auto\"\r\n        container=\"body\"\r\n        [autoClose]=\"true\"\r\n        triggers=\"manual\"\r\n        (hidden)=\"closeTooltip()\"\r\n        #info=\"ngbTooltip\"\r\n        tooltipClass=\"seller-program-tooltip\"\r\n        (mouseenter)=\"bindTheValueToSellerGroupTooltip(data, info)\"\r\n        >+{{ data.length }}</i\r\n    >\r\n</ng-template>\r\n\r\n<ng-template #inventorySellerProgramTable>\r\n    <ng-container *ngIf=\"invCodeSellerPgmTableData.length > 0\">\r\n        <section class=\"inventory-table-container\">\r\n            <table class=\"inv-seller-table\">\r\n                <thead>\r\n                    <tr>\r\n                        <th>Seller Program</th>\r\n                        <th>Inventory Code</th>\r\n                    </tr>\r\n                </thead>\r\n                <tbody>\r\n                    <tr *ngFor=\"let row of invCodeSellerPgmTableData\">\r\n                        <td>\r\n                            <span annaCoreShowEllipsisTextOnHover>{{ row.SellerProgramName.join(\", \") }}</span>\r\n                        </td>\r\n                        <td>\r\n                            <span annaCoreShowEllipsisTextOnHover>{{ row.InventoryCode.join(\", \") }}</span>\r\n                        </td>\r\n                    </tr>\r\n                </tbody>\r\n            </table>\r\n        </section>\r\n    </ng-container>\r\n</ng-template>\r\n","import { ClickableItem } from \"@annalib/anna-core\";\r\n\r\nexport class MassCopyStatusInfo {\r\n    copiedFromSource: string;\r\n    copyStatusTableData: CopyStatusTableInfo[] = [];\r\n    constructor(data: any) {\r\n        this.copiedFromSource = data.SourceName;\r\n        data.DestinationEntitiesInfo?.forEach((statusInfo: any) => {\r\n            const statusData = new CopyStatusTableInfo(statusInfo);\r\n            this.copyStatusTableData.push(statusData);\r\n        });\r\n    }\r\n}\r\nexport class CopyStatusTableInfo {\r\n    stationOrAdvertiserDisplayText: string;\r\n    copyStatusActionKey: ClickableItem[] = [];\r\n    copyStatus: string;\r\n    statusDisplayText: string;\r\n    constructor(data: any) {\r\n        if (data.DestinationEntityType === \"ORDER\") {\r\n            this.stationOrAdvertiserDisplayText = data.AlternateOrderId\r\n                ? `${data.OrderId}(${data.AlternateOrderId})`\r\n                : data.OrderId;\r\n        }\r\n        if (data.DestinationEntityType === \"ADVERTISER\") {\r\n            this.stationOrAdvertiserDisplayText = data.AdvertiserName;\r\n        }\r\n        let statusClassName;\r\n        // eslint-disable-next-line default-case\r\n        switch (data.Status) {\r\n            case \"SUCCESS\":\r\n                this.statusDisplayText = \"Copied\";\r\n                statusClassName = \"status-btn success-tag\";\r\n                break;\r\n            case \"ERROR\":\r\n                this.statusDisplayText = \"Error copying\";\r\n                statusClassName = \"status-btn failed-tag\";\r\n                break;\r\n        }\r\n        const statusColumnText = new ClickableItem(\"NONE\", this.statusDisplayText, statusClassName, false, null);\r\n        this.copyStatusActionKey.push(statusColumnText);\r\n    }\r\n}\r\n","import { InjectionToken } from \"@angular/core\";\r\nimport { Observable } from \"rxjs\";\r\n\r\n\r\nexport const MASS_COPY_STATUS_SERVICE: InjectionToken<IMassCopyStatusService> = new InjectionToken<IMassCopyStatusService>(\r\n    \"IMassCopyStatusService token\",\r\n);\r\n\r\nexport interface IMassCopyStatusService {\r\n \r\n    fetchMassCopyStatus(transactionId: string): Observable<any>;\r\n}\r\n","import { CommonModule } from \"@angular/common\";\r\nimport {\r\n    ChangeDetectionStrategy,\r\n    Component,\r\n    Inject,\r\n    Input,\r\n    OnChanges,\r\n    SimpleChanges,\r\n    TemplateRef,\r\n    ViewChild,\r\n} from \"@angular/core\";\r\nimport {\r\n    AnnaFilterService,\r\n    AnnaGlobalConfigService,\r\n    AnnaNonEditableGenericTableComponent,\r\n    AnnaSortService,\r\n    IConfirmationPopupConfig,\r\n    IGtGeneralConfig,\r\n    IGtTableHeader,\r\n} from \"@annalib/anna-core\";\r\nimport { NgbModal, NgbModalOptions, NgbModalRef } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { cloneDeep } from \"lodash-es\";\r\n\r\nimport { CopyStatusTableInfo, MassCopyStatusInfo } from \"./models/mass-copy-status.model\";\r\nimport { IMassCopyStatusService, MASS_COPY_STATUS_SERVICE } from \"./services/mass-copy-status-backend.service\";\r\n\r\n@Component({\r\n    selector: \"anna-feature-mass-copy-status-popup\",\r\n    imports: [CommonModule, AnnaNonEditableGenericTableComponent],\r\n    templateUrl: \"./mass-copy-status-popup.component.html\",\r\n    styleUrls: [\"./mass-copy-status-popup.component.scss\"],\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class MassCopyStatusPopupComponent implements OnChanges {\r\n    @Input() transactionId: string;\r\n    @Input() stationName: string;\r\n    tableData: CopyStatusTableInfo[] = [];\r\n    clonnedTableData: CopyStatusTableInfo[] = [];\r\n    copiedFromSource: string;\r\n    @ViewChild(\"massCopyStatusModal\") private statusCopyTemplate: TemplateRef<any>;\r\n    copyRulesModalReference: NgbModalRef;\r\n\r\n    config: IConfirmationPopupConfig;\r\n    tableHeaders: IGtTableHeader[] = [];\r\n    gtGeneralConfig: IGtGeneralConfig;\r\n    loading: boolean;\r\n    gtDimension = { rowHeight: 22, headerHeight: 40, dataOnTopHeight: 350, marginFromBottom: 0 };\r\n    constructor(\r\n        private modalService: NgbModal,\r\n        private annaSortService: AnnaSortService,\r\n        private annaFilterService: AnnaFilterService,\r\n        private globalConfig: AnnaGlobalConfigService,\r\n        @Inject(MASS_COPY_STATUS_SERVICE)\r\n        public consumingProjectBusinessRuleService: IMassCopyStatusService,\r\n    ) {\r\n        this.tableHeaders = this.getTableHeaders();\r\n        this.config = { ...this.globalConfig.defaultConfirmationPopupConfig };\r\n        this.setTableConfig();\r\n    }\r\n\r\n    ngOnChanges(changes: SimpleChanges) {\r\n        if (changes.transactionId.currentValue) {\r\n            this.fetchMassCopyStatusData();\r\n        }\r\n    }\r\n    fetchMassCopyStatusData() {\r\n        this.annaSortService.columnSortState = new Map();\r\n        this.annaFilterService.initialValueMap = new Map();\r\n        this.annaFilterService.appliedFiltersArray = [];\r\n        this.loading = true;\r\n        this.consumingProjectBusinessRuleService.fetchMassCopyStatus(this.transactionId).subscribe(\r\n            (response) => {\r\n                const massCopyData = new MassCopyStatusInfo(response.body);\r\n                this.tableData = massCopyData.copyStatusTableData;\r\n                this.copiedFromSource = massCopyData.copiedFromSource;\r\n                this.clonnedTableData = cloneDeep(this.tableData);\r\n                this.loading = false;\r\n                this.annaSortService.noSortingAppliedData = cloneDeep(this.clonnedTableData);\r\n            },\r\n            (error) => {\r\n                this.loading = false;\r\n            },\r\n        );\r\n    }\r\n    openModal() {\r\n        const ngbModalOptions: NgbModalOptions = {\r\n            backdrop: this.config.backdrop,\r\n            keyboard: this.config.keyboard,\r\n            windowClass: \"mass-copy-status-modal \",\r\n            centered: true,\r\n            size: \"sm\",\r\n        };\r\n        this.annaFilterService.resetFilterSortActiveStatus = false;\r\n        this.copyRulesModalReference = this.modalService.open(this.statusCopyTemplate, ngbModalOptions);\r\n    }\r\n    setTableConfig() {\r\n        this.gtGeneralConfig = { ...this.globalConfig.defaultGtGeneralConfig };\r\n        this.gtGeneralConfig.component = \"EXCLUDEINVENTORYPOPUP\";\r\n        this.gtGeneralConfig.totalRow = false;\r\n        this.gtGeneralConfig.tableContainerName = \"\";\r\n    }\r\n\r\n    getTableHeaders(): IGtTableHeader[] {\r\n        const gtTableHeaders: IGtTableHeader[] = [\r\n            {\r\n                headerInfo: [\r\n                    {\r\n                        name: \"STN ORDER# (ALT ORDER#) / ADVERTISER\",\r\n                        objectKey: \"stationOrAdvertiserDisplayText\",\r\n                        typeOfHeaderData: \"STRING\",\r\n                        typeOfBodyData: \"STRING\",\r\n                        showTooltipIcon: true,\r\n                        isSortRequired: [true],\r\n                        isFilterRequired: [true],\r\n                        filter: \"CHECKBOX\",\r\n                        filterSortObjectKeys: [\"stationOrAdvertiserDisplayText\"],\r\n                    },\r\n                ],\r\n                visible: true,\r\n                width: \"60%\",\r\n            },\r\n            {\r\n                headerInfo: [\r\n                    {\r\n                        name: \"COPY STATUS\",\r\n                        objectKey: \"statusDisplayText\",\r\n                        actionKey: \"copyStatusActionKey\",\r\n                        typeOfHeaderData: \"STRING\",\r\n                        typeOfBodyData: \"TEXT_ACTIONS\",\r\n                        showTooltipIcon: false,\r\n                        isSortRequired: [false],\r\n                        isFilterRequired: [false],\r\n                    },\r\n                ],\r\n                visible: true,\r\n                width: \"30%\",\r\n            },\r\n        ];\r\n\r\n        return gtTableHeaders;\r\n    }\r\n    filterAppliedToTable(data: CopyStatusTableInfo[]) {\r\n        this.tableData = cloneDeep(data);\r\n    }\r\n    sortingAppliedToTable(data: CopyStatusTableInfo[]) {\r\n        this.tableData = cloneDeep(data);\r\n    }\r\n    closeModal() {\r\n        if (this.copyRulesModalReference) {\r\n            this.tableData = cloneDeep(this.clonnedTableData);\r\n            this.annaSortService.noSortingAppliedData = cloneDeep(this.clonnedTableData);\r\n            this.annaSortService.columnSortState = new Map();\r\n            this.annaFilterService.initialValueMap = new Map();\r\n            this.annaFilterService.tooltipSelectedMap = new Map();\r\n            this.annaFilterService.appliedFiltersArray = [];\r\n            this.copyRulesModalReference.close();\r\n        }\r\n    }\r\n}\r\n","<ng-template\r\n    #massCopyStatusModal\r\n    let-modal\r\n>\r\n    <section class=\"main-modal\">\r\n        <div class=\"modal-header\">\r\n            <h3 class=\"modal-title\">Copy status</h3>\r\n            <i\r\n                class=\"mi mdi-close-icon mdi-font-md close pull-right\"\r\n                (click)=\"closeModal()\"\r\n            ></i>\r\n        </div>\r\n\r\n        <div class=\"modal-body\">\r\n            <div class=\"meta-data\">\r\n                <span\r\n                    >Station: <b>{{ stationName }}</b></span\r\n                >\r\n                <span>\r\n                    Copied from: <b>{{ copiedFromSource }}</b>\r\n                </span>\r\n            </div>\r\n\r\n            <anna-core-non-editable-generic-table-lib\r\n                class=\"mass-status-copy-table\"\r\n                [tableBorderBottomClassRequired]=\"false\"\r\n                [fixNumberOfRowsForPopup]=\"true\"\r\n                [showSkeletonLoading]=\"loading\"\r\n                [tableHeaders]=\"tableHeaders\"\r\n                [tableData]=\"tableData\"\r\n                [clonedTableData]=\"clonnedTableData\"\r\n                [gtGeneralConfig]=\"gtGeneralConfig\"\r\n                [gtDimension]=\"gtDimension\"\r\n                (filterAppliedToTable)=\"filterAppliedToTable($event)\"\r\n                (sortingAppliedToTable)=\"sortingAppliedToTable($event)\"\r\n            >\r\n            </anna-core-non-editable-generic-table-lib>\r\n        </div>\r\n    </section>\r\n</ng-template>\r\n","import { Injectable } from \"@angular/core\";\r\nimport { IGtTableHeader } from \"@annalib/anna-core\";\r\nimport { BehaviorSubject, Subject } from \"rxjs\";\r\n\r\nimport { INotificationTab, Notification } from \"../models/notifications.model\";\r\n\r\n@Injectable({\r\n    providedIn: \"root\",\r\n})\r\nexport class NotificationsService {\r\n    notificationResponseSubject = new BehaviorSubject<Notification[]>(undefined);\r\n    notificationMarkedreadResponseSubject = new BehaviorSubject<string[]>(undefined);\r\n    filtersAppliedRouteChange: any;\r\n    startLoaderSubject = new BehaviorSubject<boolean>(false);\r\n    progressSubject = new BehaviorSubject<number>(0);\r\n    samePageNotificationClickedSubject = new Subject<boolean>();\r\n    triggerLoaderFromStart() {\r\n        this.progressSubject.next(0);\r\n        this.startLoaderSubject.next(true);\r\n    }\r\n    stopLoader() {\r\n        this.startLoaderSubject.next(false);\r\n    }\r\n    updateProgress(value: number) {\r\n        this.progressSubject.next(value);\r\n    }\r\n\r\n    getTabsForNotifications(): INotificationTab[] {\r\n        return [\r\n            { id: 0, name: \"Daily Updates\", notificationCount: 5, key: \"DAILY_UPDATES\" },\r\n            { id: 1, name: \"Others\", notificationCount: 3, key: \"OTHERS\" },\r\n        ];\r\n    }\r\n\r\n    getTableHeaders(): IGtTableHeader[] {\r\n        const gtTableHeaders: IGtTableHeader[] = [\r\n            {\r\n                headerInfo: [\r\n                    {\r\n                        name: \"STATION\",\r\n                        objectKey: \"station\",\r\n                        typeOfHeaderData: \"STRING\",\r\n                        typeOfBodyData: \"STRING\",\r\n                        showTooltipIcon: true,\r\n                        isSortRequired: [true],\r\n                        isFilterRequired: [true],\r\n                        filter: \"CHECKBOX\",\r\n                        filterSortObjectKeys: [\"station\"],\r\n                    },\r\n                ],\r\n                visible: true,\r\n                width: \"50px\",\r\n            },\r\n            {\r\n                headerInfo: [\r\n                    {\r\n                        name: \"DATE\",\r\n                        objectKey: \"date\",\r\n                        tooltipKey: \"statusTooltipKey\",\r\n                        typeOfHeaderData: \"STRING\",\r\n                        typeOfBodyData: \"STRING\",\r\n                        showTooltipIcon: true,\r\n                        isSortRequired: [true],\r\n                        isFilterRequired: [true],\r\n                        filter: \"DATE\",\r\n                        filterSortObjectKeys: [\"date\"],\r\n                    },\r\n                ],\r\n                visible: true,\r\n                width: \"40px\",\r\n            },\r\n            {\r\n                headerInfo: [\r\n                    {\r\n                        name: \"TIME\",\r\n                        objectKey: \"displayTime\",\r\n                        typeOfHeaderData: \"STRING\",\r\n                        typeOfBodyData: \"STRING\",\r\n                        showTooltipIcon: true,\r\n                        isSortRequired: [true],\r\n                        isFilterRequired: [true],\r\n                        filter: \"TIME\",\r\n                        filterSortObjectKeys: [\"time\"],\r\n                    },\r\n                ],\r\n                visible: true,\r\n                width: \"40px\",\r\n            },\r\n            {\r\n                headerInfo: [\r\n                    {\r\n                        name: \"TYPE\",\r\n                        objectKey: \"displayType\",\r\n                        typeOfHeaderData: \"STRING\",\r\n                        typeOfBodyData: \"STRING\",\r\n                        showTooltipIcon: true,\r\n                        isSortRequired: [true],\r\n                        isFilterRequired: [true],\r\n                        filter: \"CHECKBOX\",\r\n                        filterSortObjectKeys: [\"displayType\"],\r\n                    },\r\n                ],\r\n                visible: true,\r\n                width: \"50px\",\r\n            },\r\n            {\r\n                headerInfo: [\r\n                    {\r\n                        name: \"NOTIFICATIONS\",\r\n                        objectKey: \"tableMessages\",\r\n                        typeOfHeaderData: \"STRING\",\r\n                        typeOfBodyData: \"HTML_STRING\",\r\n                        showTooltipIcon: false,\r\n                        isSortRequired: [false],\r\n                        isFilterRequired: [false],\r\n                        filter: \"CHECKBOX\",\r\n                        filterSortObjectKeys: [\"tableMessages\"],\r\n                    },\r\n                ],\r\n                visible: true,\r\n                width: \"220px\",\r\n            },\r\n            {\r\n                headerInfo: [\r\n                    {\r\n                        name: \"\",\r\n                        objectKey: \"icon\",\r\n                        actionKey: \"readActionKey\",\r\n                        typeOfHeaderData: \"STRING\",\r\n                        tooltipKey: \"tooltipData\",\r\n                        typeOfBodyData: \"STRING___ICON_OR_TEXT_ACTION\",\r\n                        showTooltipIcon: false,\r\n                        isSortRequired: [false],\r\n                        isFilterRequired: [false],\r\n                        filter: \"CHECKBOX\",\r\n                        filterSortObjectKeys: [\"notification\"],\r\n                    },\r\n                ],\r\n                visible: true,\r\n                width: \"5px\",\r\n            },\r\n        ];\r\n        return gtTableHeaders;\r\n    }\r\n}\r\n","import { animate, keyframes, state, style, transition, trigger } from \"@angular/animations\";\r\nimport { NgClass, NgFor, NgIf, NgTemplateOutlet, SlicePipe } from \"@angular/common\";\r\nimport {\r\n    ChangeDetectionStrategy,\r\n    ChangeDetectorRef,\r\n    Component,\r\n    EventEmitter,\r\n    Input,\r\n    OnInit,\r\n    Output,\r\n    ViewChild,\r\n} from \"@angular/core\";\r\nimport { MatIconModule } from \"@angular/material/icon\";\r\nimport { MatMenuModule, MatMenuTrigger } from \"@angular/material/menu\";\r\nimport { Router } from \"@angular/router\";\r\nimport { AnnaCircularProgressComponent, AnnaFilterService, AnnaPersistingFilterService } from \"@annalib/anna-core\";\r\nimport { BreadcrumbsService } from \"@annalib/anna-design-components-lib\";\r\nimport { NgbTooltip } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport dayjs from \"dayjs\";\r\nimport { Subject } from \"rxjs\";\r\n\r\nimport { MassCopyStatusPopupComponent } from \"../mass-copy-status-popup/mass-copy-status-popup.component\";\r\nimport { ClickableLink, INotificationTab, Notification } from \"../models/notifications.model\";\r\nimport { NotificationsService } from \"../services/notifications.service\";\r\n\r\n@Component({\r\n    selector: \"anna-feature-notification-header\",\r\n    templateUrl: \"./app-notification-header.component.html\",\r\n    styleUrls: [\"./app-notification-header.component.scss\"],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    animations: [\r\n        trigger(\"fade\", [\r\n            state(\"false\", style({ opacity: 1 })),\r\n            state(\"true\", style({ opacity: 1 })),\r\n            transition(\":increment\", [\r\n                animate(\r\n                    \"2s\",\r\n                    keyframes([\r\n                        style({ transform: \"rotate(0)\" }),\r\n                        style({ transform: \"rotate(30deg)\" }),\r\n                        style({ transform: \"rotate(-28deg)\" }),\r\n                        style({ transform: \"rotate(34deg)\" }),\r\n                        style({ transform: \"rotate(-32deg)\" }),\r\n                        style({ transform: \"rotate(30deg)\" }),\r\n                        style({ transform: \"rotate(-28deg)\" }),\r\n                        style({ transform: \"rotate(26deg)\" }),\r\n                        style({ transform: \"rotate(-24deg)\" }),\r\n                        style({ transform: \"rotate(22deg)\" }),\r\n                        style({ transform: \"rotate(-20deg)\" }),\r\n                        style({ transform: \"rotate(18deg)\" }),\r\n                        style({ transform: \"rotate(-16deg)\" }),\r\n                        style({ transform: \"rotate(14deg)\" }),\r\n                        style({ transform: \"rotate(-12deg)\" }),\r\n                        style({ transform: \"rotate(10deg)\" }),\r\n                        style({ transform: \"rotate(-8deg)\" }),\r\n                        style({ transform: \"rotate(6deg)\" }),\r\n                        style({ transform: \"rotate(-4deg)\" }),\r\n                        style({ transform: \"rotate(2deg)\" }),\r\n                        style({ transform: \"rotate(-1deg)\" }),\r\n                        style({ transform: \"rotate(1deg)\" }),\r\n                        style({ transform: \"rotate(0)\" }),\r\n                        style({ transform: \"rotate(0)\" }),\r\n                    ]),\r\n                ),\r\n            ]),\r\n        ]),\r\n    ],\r\n    imports: [\r\n        MatMenuModule,\r\n        NgIf,\r\n        MatIconModule,\r\n        NgFor,\r\n        SlicePipe,\r\n        NgClass,\r\n        NgbTooltip,\r\n        NgTemplateOutlet,\r\n        AnnaCircularProgressComponent,\r\n        MassCopyStatusPopupComponent,\r\n    ],\r\n})\r\nexport class NotificationHeaderComponent implements OnInit {\r\n    @Input() loading: boolean = true;\r\n    @Input() notificationBellIconRing: boolean = false;\r\n    @Input() orderContainerTabName: \"TV Revenue\" | \"TV\" = \"TV Revenue\";\r\n    @ViewChild(\"massCopyStatusModal\") private massCopyStatusModal: MassCopyStatusPopupComponent;\r\n    @Output() markNotificationAsRead = new EventEmitter();\r\n    @Output() viewAllClicked = new EventEmitter();\r\n    @Output() handleUserNavigation = new EventEmitter();\r\n    @Output() handleNotificationHeaderNavigation = new EventEmitter();\r\n\r\n    notificationCount: number = 0;\r\n    transactionId: string = null;\r\n    notificationsForPanel: Notification[] = [];\r\n    protected ngUnsubscribe: Subject<void> = new Subject<void>();\r\n    activeTab: INotificationTab;\r\n    tabs: INotificationTab[];\r\n    selectedTabNotifications: Notification[] = [];\r\n    progressInterval: any;\r\n\r\n    @ViewChild(MatMenuTrigger) notificationTriggerBell: MatMenuTrigger;\r\n    showLoader: boolean = false;\r\n    progress: number = 0;\r\n    selectedStation: string;\r\n    isLoaderActive: boolean = false;\r\n\r\n    constructor(\r\n        private notificationService: NotificationsService,\r\n        private breadcrumbService: BreadcrumbsService,\r\n        private router: Router,\r\n        private cdr: ChangeDetectorRef,\r\n        private persistingFilterService: AnnaPersistingFilterService,\r\n        private annaFilterService: AnnaFilterService,\r\n    ) {}\r\n\r\n    ngOnInit(): void {\r\n        this.tabs = this.notificationService.getTabsForNotifications();\r\n        this.activeTab = this.tabs[0];\r\n        this.notificationService.notificationResponseSubject.subscribe((response) => {\r\n            this.notificationsForPanel = response || [];\r\n            if (\r\n                this.notificationsForPanel?.some(\r\n                    (notif) =>\r\n                        notif.message === \"Copying business rules in progress\" ||\r\n                        notif.message === \"Copying incremental changes to business rules in progress\",\r\n                )\r\n            ) {\r\n                if (!this.showLoader) {\r\n                    this.notificationService.triggerLoaderFromStart();\r\n                }\r\n            }\r\n            this.selectedTabDataToDisplay();\r\n            this.updateCount();\r\n            this.loading = false;\r\n            this.cdr.markForCheck();\r\n        });\r\n        this.notificationService.startLoaderSubject.subscribe((startLoader) => {\r\n            this.isLoaderActive = startLoader;\r\n\r\n            if (startLoader) {\r\n                this.showLoader = true;\r\n\r\n                this.startProgress();\r\n            } else {\r\n                this.stopProgress(); // Stop progress immediately\r\n                this.completeProgress(); // Complete the loader\r\n            }\r\n        });\r\n        this.notificationService.progressSubject.subscribe((progress) => {\r\n            this.progress = progress;\r\n            this.cdr.detectChanges();\r\n        });\r\n    }\r\n\r\n    startProgress() {\r\n        let currentProgress = 0;\r\n\r\n        this.clearProgressInterval();\r\n\r\n        this.progressInterval = setInterval(() => {\r\n            if (!this.isLoaderActive) {\r\n                this.clearProgressInterval();\r\n                return;\r\n            }\r\n            if (currentProgress < 90) {\r\n                currentProgress += 10;\r\n                this.notificationService.updateProgress(currentProgress);\r\n            } else {\r\n                this.clearProgressInterval();\r\n            }\r\n        }, 10);\r\n    }\r\n\r\n    stopProgress() {\r\n        this.clearProgressInterval();\r\n    }\r\n\r\n    completeProgress() {\r\n        this.notificationService.updateProgress(100);\r\n        this.showLoader = false;\r\n    }\r\n\r\n    clearProgressInterval() {\r\n        if (this.progressInterval) {\r\n            clearInterval(this.progressInterval); // Clear the interval\r\n            this.progressInterval = null; // Reset the reference\r\n        }\r\n    }\r\n\r\n    markAllAsRead() {\r\n        const notificationIds: string[] = this.selectedTabNotifications\r\n            .filter((notification) => !notification.isRead)\r\n            .map((notification) => notification.id);\r\n        this.markNotificationAsRead.emit(notificationIds);\r\n    }\r\n\r\n    markAsRead(notificationId: string) {\r\n        if (\r\n            !this.selectedTabNotifications[\r\n                this.selectedTabNotifications.findIndex((notif) => notif.id === notificationId)\r\n            ].isRead\r\n        )\r\n            this.markNotificationAsRead.emit([notificationId]);\r\n    }\r\n\r\n    updateCount() {\r\n        this.tabs.forEach((tab) => {\r\n            tab.notificationCount = this.notificationsForPanel.filter(\r\n                (n) => n.isRead === false && this.isNotificationForPanel(n, tab),\r\n            ).length;\r\n        });\r\n        this.notificationCount = this.tabs.reduce((acc, n) => acc + n.notificationCount, 0);\r\n        this.cdr.detectChanges();\r\n    }\r\n\r\n    linkClicked(rowData: Notification, url: string, queryParams: any) {\r\n        this.notificationTriggerBell.closeMenu();\r\n        // this.router.navigate([url], {queryParams: {filters: queryParams}});\r\n        if (rowData.clickableItems[0].pageUrl === \"BULK_COPY_STATUS_POPUP\") {\r\n            this.transactionId = rowData.clickableItems[0].additionalDataForLink.transactionId;\r\n            this.selectedStation = rowData.station;\r\n            this.massCopyStatusModal.openModal();\r\n            return;\r\n        }\r\n        this.breadcrumbService.popBreadcrumbs(this.breadcrumbService.getBreadcrumbList()?.length);\r\n        this.navigateToRespectivePage(url, rowData);\r\n    }\r\n\r\n    buttonClicked() {\r\n        this.notificationTriggerBell.closeMenu();\r\n    }\r\n\r\n    redirectToNotifications() {\r\n        this.viewAllClicked.emit();\r\n    }\r\n\r\n    tabChanged(tab: INotificationTab): void {\r\n        this.activeTab = tab;\r\n        this.selectedTabDataToDisplay();\r\n    }\r\n\r\n    selectedTabDataToDisplay() {\r\n        this.selectedTabNotifications = this.notificationsForPanel.filter((n) =>\r\n            this.isNotificationForPanel(n, this.activeTab),\r\n        );\r\n    }\r\n\r\n    isNotificationForPanel(notification: Notification, tab: INotificationTab): boolean {\r\n        return (\r\n            notification.type === tab.key &&\r\n            ((tab.key === \"DAILY_UPDATES\" && notification.isCurrentDailyRevision) || tab.key === \"OTHERS\")\r\n        );\r\n    }\r\n\r\n    navigateToRespectivePage(urlClicked: string, rowData: Notification) {\r\n        const clickedItem = rowData.clickableItems.filter((x: ClickableLink) => urlClicked.includes(x.pageUrl))[0];\r\n        if (!clickedItem) return;\r\n        const url = clickedItem.pageUrl;\r\n\r\n        let filters: any = {};\r\n\r\n        if (url.includes(\"business-rules/advertiser\")) {\r\n            this.breadcrumbService.updateBreadcrumbs(clickedItem.additionalDataForLink.advertiserName, null, true);\r\n            filters.advertiserId = clickedItem.additionalDataForLink.advertiserId;\r\n            filters.stationId = clickedItem.additionalDataForLink.stationId;\r\n            filters.breadcrumbs = this.persistingFilterService.storeKeyValueInLocalStorage(\r\n                this.breadcrumbService.getBreadcrumbList(),\r\n                false,\r\n            );\r\n            this.resetRouteReuseStrategy();\r\n            this.router.navigate([url], { queryParams: filters });\r\n        } else if (url.includes(\"order-business-rules\")) {\r\n            filters = {\r\n                navigateTo: \"order-business-rules\",\r\n                searchRedirected: false,\r\n                currentTab: \"Business Rules\",\r\n                orderId: clickedItem.additionalDataForLink.orderId,\r\n                displayOrderId: clickedItem.additionalDataForLink.orderId,\r\n                channelId: clickedItem.additionalDataForLink.stationId,\r\n                campaignId: clickedItem.additionalDataForLink.campaignId,\r\n                campaignStartDate: dayjs(clickedItem.additionalDataForLink.flightStartDate, \"MM/DD/YY\").format(\r\n                    \"MM/DD/YYYY\",\r\n                ),\r\n                campaignEndDate: dayjs(clickedItem.additionalDataForLink.flightEndDate, \"MM/DD/YY\").format(\r\n                    \"MM/DD/YYYY\",\r\n                ),\r\n                advertiserId: clickedItem.additionalDataForLink.advertiserId,\r\n            };\r\n\r\n            this.resetRouteReuseStrategy();\r\n            this.router.navigate(\r\n                [\r\n                    \"orders/order-container\",\r\n                    clickedItem.additionalDataForLink.orderId,\r\n                    clickedItem.additionalDataForLink.stationId,\r\n                    filters.navigateTo,\r\n                ],\r\n                {\r\n                    queryParams: {\r\n                        orderInfo: this.persistingFilterService.storeKeyValueInLocalStorage(filters),\r\n                        parentTab: this.orderContainerTabName,\r\n                    },\r\n                },\r\n            );\r\n        } else if (url.includes(\"users/users-awaiting-action\")) {\r\n            const email = clickedItem.additionalDataForLink.emailId;\r\n            this.annaFilterService.appliedFiltersArray.push(\"email\");\r\n            this.annaFilterService.tooltipSelectedMap.set(\"email\", [email]);\r\n            filters.appliedFilters = this.annaFilterService.appliedFiltersArray;\r\n            filters.selectedFilterData = JSON.stringify(Array.from(this.annaFilterService.tooltipSelectedMap));\r\n            const hashedQueryParams = this.persistingFilterService.storeKeyValueInLocalStorage(filters);\r\n            const hashedBreadcrumbsQueryParams = this.persistingFilterService.storeKeyValueInLocalStorage(\r\n                this.breadcrumbService.getBreadcrumbList(),\r\n                false,\r\n            );\r\n            let hashedStationIdFilter;\r\n            if (clickedItem.additionalDataForLink.stationId) {\r\n                hashedStationIdFilter = this.persistingFilterService.storeKeyValueInLocalStorage(\r\n                    clickedItem.additionalDataForLink.stationId,\r\n                );\r\n            }\r\n            this.handleUserNavigation.emit({\r\n                filters: hashedQueryParams,\r\n                breadcrumbs: hashedBreadcrumbsQueryParams,\r\n                stationId: hashedStationIdFilter,\r\n                userPageUrl: url,\r\n            });\r\n        } else if (url.includes(\"line-details\")) {\r\n            const hashedBreadcrumbsQueryParams = this.persistingFilterService.storeKeyValueInLocalStorage(\r\n                this.breadcrumbService.getBreadcrumbList(),\r\n                false,\r\n            );\r\n\r\n            this.resetRouteReuseStrategy();\r\n            this.router.navigate(\r\n                [\r\n                    \"orders/order-container\",\r\n                    clickedItem.additionalDataForLink.orderId,\r\n                    clickedItem.additionalDataForLink.stationId,\r\n                    \"line-details\",\r\n                ],\r\n                {\r\n                    queryParams: {\r\n                        parentTab: this.orderContainerTabName,\r\n                        breadcrumbs: hashedBreadcrumbsQueryParams,\r\n                    },\r\n                },\r\n            );\r\n        } else if (url.includes(\"orders/ec-orders\")) {\r\n            if (this.router.url.includes(\"orders/ec-orders\")) {\r\n                this.breadcrumbService.updateBreadcrumbs(\"Orders (EC Orders)\", this.router.url, true);\r\n            }\r\n\r\n            this.annaFilterService.appliedFiltersArray.push(\"displayStatus\");\r\n            this.annaFilterService.tooltipSelectedMap.set(\"displayStatus\", [\"Buyer Revised\", \"New\"]);\r\n            filters.stationId = +clickedItem.additionalDataForLink.stationId;\r\n            filters.appliedFilters = this.annaFilterService.appliedFiltersArray;\r\n            filters.selectedFilterData = JSON.stringify(Array.from(this.annaFilterService.tooltipSelectedMap));\r\n            const hashedBreadcrumbsQueryParams = this.persistingFilterService.storeKeyValueInLocalStorage(\r\n                this.breadcrumbService.getBreadcrumbList(),\r\n                false,\r\n            );\r\n            const hashedFilterQueryParams = this.persistingFilterService.storeKeyValueInLocalStorage(filters);\r\n            this.handleNotificationHeaderNavigation.emit();\r\n            this.router.navigate([url], {\r\n                queryParams: {\r\n                    filters: hashedFilterQueryParams,\r\n                    breadcrumbs: hashedBreadcrumbsQueryParams,\r\n                },\r\n            });\r\n            if (this.router.url.includes(\"orders/ec-orders\")) {\r\n                setTimeout(() => {\r\n                    this.notificationService.samePageNotificationClickedSubject.next(true);\r\n                }, 0);\r\n            }\r\n        } else if (url.includes(\"orders/todays-anna-offers\")) {\r\n            if (this.router.url.includes(\"orders/todays-anna-offers\")) {\r\n                this.breadcrumbService.updateBreadcrumbs(\"Orders (Today’s ANNA Offers)\", this.router.url, true);\r\n            }\r\n            this.router.navigate([url], { queryParams: { filters: clickedItem.queryParams } });\r\n            if (this.router.url.includes(\"orders/todays-anna-offers\")) {\r\n                setTimeout(() => {\r\n                    this.notificationService.samePageNotificationClickedSubject.next(true);\r\n                }, 0);\r\n            }\r\n        } else {\r\n            this.router.navigate([url], { queryParams: { filters: clickedItem.queryParams } });\r\n        }\r\n    }\r\n\r\n    resetRouteReuseStrategy() {\r\n        const prev = this.router.routeReuseStrategy.shouldReuseRoute;\r\n        const prevOSN = this.router.onSameUrlNavigation;\r\n        // eslint-disable-next-line func-names\r\n        this.router.routeReuseStrategy.shouldReuseRoute = function () {\r\n            return false;\r\n        };\r\n        setTimeout(() => {\r\n            this.router.routeReuseStrategy.shouldReuseRoute = prev;\r\n            this.router.onSameUrlNavigation = prevOSN;\r\n        }, 0);\r\n    }\r\n}\r\n","<div class=\"main-div\">\r\n    <anna-core-circular-progress\r\n        *ngIf=\"showLoader\"\r\n        [percent]=\"progress\"\r\n        [radius]=\"20\"\r\n        [outerStrokeWidth]=\"5\"\r\n        [innerStrokeWidth]=\"5\"\r\n        [outerStrokeColor]=\"'#43A047'\"\r\n        [innerStrokeColor]=\"'#d5d5d5'\"\r\n        [animationDuration]=\"200\"\r\n    ></anna-core-circular-progress>\r\n    <button\r\n        #notificationTriggerBell\r\n        class=\"notification-btn\"\r\n        (click)=\"tabChanged(tabs[0])\"\r\n        [matMenuTriggerFor]=\"notificationMenu\"\r\n    >\r\n        <div\r\n            [ngClass]=\"{ 'notification-bubble-inprogress': showLoader }\"\r\n            class=\"notification-bubble\"\r\n            *ngIf=\"notificationCount > 0 && notificationCount < 20\"\r\n        >\r\n            {{ showLoader ? \"\" : notificationCount }}\r\n        </div>\r\n        <div\r\n            [ngClass]=\"{ 'notification-bubble-inprogress': showLoader }\"\r\n            class=\"notification-bubble\"\r\n            *ngIf=\"notificationCount >= 20\"\r\n        >\r\n            {{ showLoader ? \"\" : \"20+\" }}\r\n        </div>\r\n\r\n        <i\r\n            class=\"notification-bell mat-icon mdi mdi-bell\"\r\n            [@fade]=\"notificationCount\"\r\n        ></i>\r\n    </button>\r\n\r\n    <mat-menu\r\n        #notificationMenu=\"matMenu\"\r\n        xPosition=\"before\"\r\n        backdropClass=\"notification-panel-backdrop\"\r\n        class=\"notification-panel\"\r\n    >\r\n        <div class=\"notifications-container\">\r\n            <div\r\n                class=\"notification-panel-header\"\r\n                (click)=\"$event.stopPropagation()\"\r\n            >\r\n                <div class=\"title\">\r\n                    <h3>Notifications</h3>\r\n                </div>\r\n                <div class=\"tabs-container\">\r\n                    <div class=\"tabs\">\r\n                        <ng-container *ngFor=\"let tab of tabs\">\r\n                            <div\r\n                                class=\"list-tab\"\r\n                                [ngClass]=\"{ 'mr-20': tab.notificationCount > 0 }\"\r\n                            >\r\n                                <span\r\n                                    class=\"tab-element\"\r\n                                    (click)=\"$event.stopPropagation(); tabChanged(tab)\"\r\n                                    [ngClass]=\"{ 'tab-active': tab.id === activeTab.id }\"\r\n                                >\r\n                                    <span>\r\n                                        {{ tab.name }}\r\n                                    </span>\r\n                                    <div\r\n                                        class=\"notification-bubble-tab\"\r\n                                        *ngIf=\"tab.notificationCount > 0 && tab.notificationCount < 20\"\r\n                                    >\r\n                                        {{ tab.notificationCount }}\r\n                                    </div>\r\n                                    <div\r\n                                        class=\"notification-bubble-tab\"\r\n                                        *ngIf=\"tab.notificationCount >= 20\"\r\n                                    >\r\n                                        20+\r\n                                    </div>\r\n                                </span>\r\n                            </div>\r\n                        </ng-container>\r\n                    </div>\r\n                    <span\r\n                        class=\"mark-all\"\r\n                        [ngClass]=\"{ 'disable-link': activeTab.notificationCount === 0 }\"\r\n                        *ngIf=\"selectedTabNotifications.length > 0\"\r\n                        (click)=\"$event.stopPropagation(); markAllAsRead()\"\r\n                    >\r\n                        <i class=\"mdi mdi-check-all\"></i><u>Mark all as read</u>\r\n                    </span>\r\n                </div>\r\n            </div>\r\n\r\n            <div\r\n                class=\"notification-items-container\"\r\n                *ngIf=\"selectedTabNotifications.length > 0\"\r\n            >\r\n                <div\r\n                    mat-menu-item\r\n                    class=\"menu-item\"\r\n                    *ngFor=\"let notif of selectedTabNotifications | slice: 0 : 20; let index = index\"\r\n                    [ngClass]=\"{ 'unread-message': !notif.isRead }\"\r\n                    (click)=\"$event.stopPropagation(); markAsRead(notif.id)\"\r\n                >\r\n                    <div class=\"notification-body\">\r\n                        <span [innerHTML]=\"notif.message\"></span>\r\n                        <ng-container *ngFor=\"let link of notif.clickableItems\">\r\n                            <span\r\n                                class=\"view-link\"\r\n                                (click)=\"linkClicked(notif, link.pageUrl, link.queryParams)\"\r\n                                >{{ link.label }}</span\r\n                            >\r\n                        </ng-container>\r\n                        <span\r\n                            *ngIf=\"notif.station !== '-'\"\r\n                            [class]=\"'station-display ' + notif.stationColorClass\"\r\n                            >{{ notif.station }}</span\r\n                        >\r\n                    </div>\r\n                    <div\r\n                        class=\"action-button\"\r\n                        *ngIf=\"!notif.isRead\"\r\n                    >\r\n                        <span class=\"unread-icon-container\">\r\n                            <i class=\"unread-icon mat-icon mdi mdi-circle-small\"></i>\r\n                        </span>\r\n                        <span class=\"check-read-marker\">\r\n                            <i\r\n                                class=\"mdi mdi-check mat-icon\"\r\n                                placement=\"bottom auto\"\r\n                                [ngbTooltip]=\"markAsReadTip\"\r\n                                [autoClose]=\"true\"\r\n                                tooltipClass=\"team-user-tooltip \"\r\n                            ></i>\r\n                        </span>\r\n                    </div>\r\n\r\n                    <div class=\"display-time-zone\">{{ notif.displayDate }} | {{ notif.displayTime }}</div>\r\n\r\n                    <div\r\n                        class=\"lower-data\"\r\n                        *ngIf=\"notif.collapseableData || notif.buttons.length\"\r\n                    >\r\n                        <ng-container\r\n                            [ngTemplateOutlet]=\"notif.buttons.length > 0 ? buttonsTemplate : collapseTemplate\"\r\n                            [ngTemplateOutletContext]=\"{ data: notif }\"\r\n                        >\r\n                        </ng-container>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n            <div\r\n                class=\"notification-items-container-no-notifs\"\r\n                *ngIf=\"selectedTabNotifications.length === 0\"\r\n            >\r\n                <div>\r\n                    <i class=\"mdi mdi-bell-off mat-icon\"></i>\r\n                    <div class=\"title\">No new notifications for today!</div>\r\n                    <div class=\"lower-text\">\r\n                        You are all up-to-date. New notifications will appear when there is any activity on ANNA.\r\n                    </div>\r\n                </div>\r\n            </div>\r\n\r\n            <div\r\n                class=\"notification-panel-footer\"\r\n                (click)=\"redirectToNotifications()\"\r\n                *ngIf=\"notificationsForPanel.length > 0\"\r\n            >\r\n                <span>View all notifications</span>\r\n                <i class=\"mdi mdi-chevron-right\"></i>\r\n            </div>\r\n        </div>\r\n    </mat-menu>\r\n</div>\r\n\r\n<ng-template #markAsReadTip>\r\n    <div class=\"tooltip-div-container\">Mark as Read</div>\r\n</ng-template>\r\n\r\n<ng-template\r\n    #collapseTemplate\r\n    let-data=\"data\"\r\n>\r\n    <div class=\"expandable-data mdi\">\r\n        <span (click)=\"$event.stopPropagation(); data.collapseableData.expandClicked()\">\r\n            {{ data.collapseableData.label }}\r\n            <i\r\n                *ngIf=\"data.collapseableData.isExpanded\"\r\n                class=\"expantion-icon mdi mdi-menu-up\"\r\n            ></i>\r\n            <i\r\n                *ngIf=\"!data.collapseableData.isExpanded\"\r\n                class=\"expantion-icon mdi mdi-menu-down\"\r\n            ></i>\r\n        </span>\r\n        <span\r\n            class=\"expanded-data\"\r\n            [title]=\"data.collapseableData.title\"\r\n            *ngIf=\"data.collapseableData.isExpanded\"\r\n        >\r\n            {{ data.collapseableData.text }}\r\n        </span>\r\n    </div>\r\n</ng-template>\r\n\r\n<ng-template\r\n    #buttonsTemplate\r\n    let-data=\"data\"\r\n>\r\n    <div class=\"notification-button\">\r\n        <span *ngFor=\"let btn of data.buttons\">\r\n            <a\r\n                [href]=\"btn.action\"\r\n                (click)=\"buttonClicked()\"\r\n                target=\"_blank\"\r\n                >{{ btn.text }}</a\r\n            >\r\n        </span>\r\n    </div>\r\n</ng-template>\r\n<anna-feature-mass-copy-status-popup\r\n    #massCopyStatusModal\r\n    [transactionId]=\"transactionId\"\r\n    [stationName]=\"selectedStation\"\r\n>\r\n</anna-feature-mass-copy-status-popup>\r\n","export class Constants {\r\n    static readonly apiFailErrorMessage = \"Unable to mark it as read. Please try after some time.\";\r\n    static readonly SERVER_ERROR_MSG = \"Something went wrong! Please try again.\";\r\n}\r\n","import { NgClass, NgIf } from \"@angular/common\";\r\nimport {\r\n    ChangeDetectionStrategy,\r\n    ChangeDetectorRef,\r\n    Component,\r\n    EventEmitter,\r\n    Input,\r\n    OnChanges,\r\n    OnInit,\r\n    Output,\r\n    SimpleChanges,\r\n    ViewChild,\r\n} from \"@angular/core\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { ActivatedRoute, Router } from \"@angular/router\";\r\nimport {\r\n    AnnaCoreModule,\r\n    AnnaFilterSearchedTextPipe,\r\n    AnnaFilterService,\r\n    AnnaGlobalConfigService,\r\n    AnnaGtHelperService,\r\n    AnnaNonEditableGenericTableComponent,\r\n    AnnaPersistingFilterService,\r\n    AnnaSortService,\r\n    IGtGeneralConfig,\r\n    IGtTableHeader,\r\n} from \"@annalib/anna-core\";\r\nimport {\r\n    AnnaDesignComponentsLibModule,\r\n    BreadcrumbsService,\r\n    PeriodSelectionPopUp,\r\n} from \"@annalib/anna-design-components-lib\";\r\nimport { NgbTooltip } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport dayjs from \"dayjs\";\r\nimport { cloneDeep } from \"lodash-es\";\r\nimport { NgxSkeletonLoaderModule } from \"ngx-skeleton-loader\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\nimport { Subject } from \"rxjs\";\r\nimport { debounceTime } from \"rxjs/operators\";\r\n\r\nimport { Constants } from \"../Constants\";\r\nimport { MassCopyStatusPopupComponent } from \"../mass-copy-status-popup/mass-copy-status-popup.component\";\r\nimport { ClickableLink, Notification } from \"../models/notifications.model\";\r\nimport { NotificationsService } from \"../services/notifications.service\";\r\n\r\n@Component({\r\n    selector: \"anna-feature-notification-page\",\r\n    templateUrl: \"./notification-page.component.html\",\r\n    styleUrls: [\"./notification-page.component.scss\"],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    imports: [\r\n        NgIf,\r\n        AnnaDesignComponentsLibModule,\r\n        NgxSkeletonLoaderModule,\r\n        FormsModule,\r\n        NgClass,\r\n        AnnaCoreModule,\r\n        MassCopyStatusPopupComponent,\r\n        NgbTooltip,\r\n    ]\r\n})\r\nexport class NotificationPageComponent implements OnInit, OnChanges {\r\n    @Input() persistingFilters: any;\r\n    @Input() orderContainerTabName: \"TV Revenue\" | \"TV\" = \"TV Revenue\";\r\n    @Input() loading: boolean = true;\r\n    @Input() notificationDataCloned: Notification[] = [];\r\n\r\n    @Input() selectedPeriodData: PeriodSelectionPopUp;\r\n    @Input() disablePeriodSelection: boolean;\r\n    @Input() enabledPeriod: { statDate: string; endDate: string };\r\n    @Input() startDateToFetchNotifications: string;\r\n    @Input() endDateToFetchNotifications: string;\r\n    @Input() adcContainerQueryParams: any;\r\n    @Input() allowPushNotifications: boolean = false;\r\n    @Input() permissionStatus: NotificationPermission;\r\n\r\n    @Output() markNotificationAsRead = new EventEmitter();\r\n    @Output() periodSelectionChanged = new EventEmitter();\r\n    @ViewChild(\"massCopyStatusModal\") private massCopyStatusModal: MassCopyStatusPopupComponent;\r\n    @Output() requestNotification = new EventEmitter();\r\n\r\n    notificationDataForTable: Notification[] = [];\r\n    gtGeneralConfig: IGtGeneralConfig;\r\n    gtDimension = {\r\n        rowHeight: 60,\r\n        headerHeight: 40,\r\n        dataOnTopHeight: 264,\r\n        marginFromBottom: 21,\r\n    };\r\n    transactionId: string = null;\r\n    selectedStation: string;\r\n\r\n    tableHeaders: IGtTableHeader[] = [];\r\n    notificationCount: number = 0;\r\n    searchItem: string;\r\n    searchSubject = new Subject<string>();\r\n    showNoData: boolean = true;\r\n    resetFilterDisabled = true;\r\n    disableClearAllBtn: boolean = true;\r\n    showMarkAll: boolean = true;\r\n    isToggleDisabled: boolean = true;\r\n    showUnreadBoolean: boolean = false;\r\n    today = dayjs().format(\"MM/DD/YYYY\");\r\n    genericTableClass: string = \"notification-table\";\r\n\r\n    periodModalTitle: string = \"Edit Period\";\r\n    periodModalMessage: string = \"Select period for which you want to view the notifications for.\";\r\n    maximumRowsWhichCanBeRenderedWithoutScroll = 0;\r\n    @ViewChild(AnnaNonEditableGenericTableComponent) nonEditableGTComponent: AnnaNonEditableGenericTableComponent;\r\n\r\n    constructor(\r\n        private gtHelperService: AnnaGtHelperService,\r\n        private annaFilterSearchedPipe: AnnaFilterSearchedTextPipe,\r\n        private annaFilterService: AnnaFilterService,\r\n        public annaSortService: AnnaSortService,\r\n        private route: ActivatedRoute,\r\n        private router: Router,\r\n        private persistingFilterService: AnnaPersistingFilterService,\r\n        private notificationService: NotificationsService,\r\n        private toastr: ToastrService,\r\n        private cdr: ChangeDetectorRef,\r\n        private breadcrumbService: BreadcrumbsService,\r\n        private annaGlobalConfig: AnnaGlobalConfigService,\r\n    ) {\r\n        this.searchSubject.pipe(debounceTime(100)).subscribe((val: string) => {\r\n            this.searchForValues(val);\r\n            this.cdr.markForCheck();\r\n        });\r\n    }\r\n\r\n    ngOnInit(): void {\r\n        this.loading = true;\r\n        // this.detectQueryParamChanges();\r\n        this.setTableConfigData();\r\n        this.setSelectedFilters();\r\n        this.notificationService.notificationMarkedreadResponseSubject.subscribe((response) => {\r\n            if (Array.isArray(response)) {\r\n                this.notificationDataCloned.forEach((item) => {\r\n                    if (response.includes(item.id)) {\r\n                        item.isRead = true;\r\n                        item.gtClass = \"read\";\r\n                        item.readActionKey[0].iconClass = null;\r\n                    }\r\n                });\r\n                this.notificationDataForTable.forEach((item) => {\r\n                    if (response.includes(item.id)) {\r\n                        item.isRead = true;\r\n                        item.gtClass = \"read\";\r\n                        item.readActionKey[0].iconClass = null;\r\n                    }\r\n                });\r\n                this.setFilters();\r\n                this.updateCount();\r\n                this.notificationDataForTable = cloneDeep(\r\n                    this.annaFilterService.filterData(this.notificationDataCloned, \"\"),\r\n                );\r\n                if (this.showUnreadBoolean) {\r\n                    this.notificationDataForTable = this.notificationDataForTable.filter((n: Notification) => !n.isRead);\r\n                }\r\n            }\r\n            this.cdr.markForCheck();\r\n        });\r\n    }\r\n\r\n    ngOnChanges(changes: SimpleChanges): void {\r\n        if (changes.persistingFilters) {\r\n            this.setSelectedFilters();\r\n        }\r\n        if (changes.notificationDataCloned) {\r\n            const notificationDataForTable = cloneDeep(this.notificationDataCloned);\r\n            if (this.persistingFilters && (this.persistingFilters.appliedFilters?.length > 0 || this.persistingFilters.sortState)) {\r\n                this.notificationDataForTable = this.annaFilterService.filterData(notificationDataForTable, \"\");\r\n                this.annaFilterService.updateStateOfAllTheKeys(this.annaSortService.columnSortState);\r\n                this.disableClearAllBtn = this.gtHelperService.enableOrDisableClearAllBtn();\r\n            } else {\r\n                this.notificationDataForTable = cloneDeep(notificationDataForTable);\r\n            }\r\n            this.showNoData = this.notificationDataForTable.length === 0;\r\n            this.updateCount();\r\n        }\r\n    }\r\n\r\n    setSelectedFilters() {\r\n        if (this.isPersistingFilterPresent()) {\r\n            this.initPersistedFilters();\r\n        } else {\r\n            this.gtHelperService.initFilters();\r\n        }\r\n    }\r\n\r\n    setTableConfigData() {\r\n        this.tableHeaders = this.notificationService.getTableHeaders();\r\n        this.gtGeneralConfig = { ...this.annaGlobalConfig.defaultGtGeneralConfig };\r\n        this.gtGeneralConfig.tableContainerName = \"notification-table-container\";\r\n        this.gtGeneralConfig.component = \"NOTIFICATIONS\";\r\n    }\r\n\r\n    isPersistingFilterPresent() {\r\n        return this.persistingFilters && this.persistingFilters.appliedFilters?.length > 0;\r\n    }\r\n\r\n    setFilters() {\r\n        const filteredNotification = this.gtHelperService.setDataAsPerPersistingFilter(\r\n            this.isPersistingFilterPresent(),\r\n            this.notificationDataForTable,\r\n            this.persistingFilters,\r\n        );\r\n        this.notificationDataForTable = cloneDeep(filteredNotification);\r\n        this.disableClearAllBtn = this.gtHelperService.enableOrDisableClearAllBtn();\r\n    }\r\n\r\n    initPersistedFilters() {\r\n        this.annaFilterService.appliedFiltersArray = cloneDeep(this.persistingFilters.appliedFilters);\r\n        const tooltipSelectedMap = new Map(JSON.parse(this.persistingFilters.selectedFilterData));\r\n        if (tooltipSelectedMap.has(\"date\")) {\r\n            const dateObj: { fromDate: string; toDate: string } | any = tooltipSelectedMap.get(\"date\");\r\n            const dateObjectWithMomentValues = {\r\n                fromDate: dayjs(dateObj.fromDate),\r\n                toDate: dayjs(dateObj.toDate),\r\n            };\r\n            tooltipSelectedMap.delete(\"date\");\r\n            tooltipSelectedMap.set(\"date\", dateObjectWithMomentValues);\r\n        }\r\n        this.annaFilterService.tooltipSelectedMap = cloneDeep(tooltipSelectedMap);\r\n        this.annaSortService.columnSortState = this.persistingFilters?.sortState\r\n            ? new Map(JSON.parse(this.persistingFilters.sortState))\r\n            : new Map();\r\n    }\r\n\r\n    showUnread() {\r\n        this.showUnreadBoolean = !this.showUnreadBoolean;\r\n        this.notificationDataForTable = cloneDeep(this.notificationDataCloned);\r\n        if (this.showUnreadBoolean) {\r\n            this.notificationDataForTable = this.notificationDataForTable.filter((n: Notification) => !n.isRead);\r\n        } else {\r\n            this.notificationDataForTable = cloneDeep(this.notificationDataCloned);\r\n            // this.notificationService.notificationResponseSubject.next(\r\n            //   this.notificationDataCloned\r\n            // );\r\n            if (this.isPersistingFilterPresent()) this.setFilters();\r\n        }\r\n    }\r\n\r\n    updateCount() {\r\n        this.notificationCount = this.notificationDataForTable.filter((n) => n.isRead === false).length;\r\n        if (this.notificationCount === 0) {\r\n            this.showUnreadBoolean = false;\r\n        }\r\n    }\r\n\r\n    filterAppliedToTable(filteredData: Notification[]) {\r\n        this.notificationDataForTable = cloneDeep(filteredData);\r\n        this.disableClearAllBtn = this.gtHelperService.enableOrDisableClearAllBtn();\r\n        this.updateFiltersInURL();\r\n        if (this.showUnreadBoolean) {\r\n            this.notificationDataForTable = this.notificationDataForTable.filter((notif) => !notif.isRead);\r\n        }\r\n    }\r\n\r\n    sortingAppliedToTable(sortedData: Notification[]) {\r\n        this.notificationDataForTable = cloneDeep(sortedData);\r\n        this.disableClearAllBtn = this.gtHelperService.enableOrDisableClearAllBtn();\r\n        this.updateFiltersInURL();\r\n    }\r\n\r\n    markAllAsRead() {\r\n        const notificationIds: string[] = this.notificationDataForTable\r\n            .filter((notification) => !notification.isRead)\r\n            .map((notification) => notification.id);\r\n        this.markNotificationAsRead.emit(notificationIds);\r\n        this.notificationDataForTable = cloneDeep(this.annaFilterService.filterData(this.notificationDataCloned, \"\"));\r\n    }\r\n\r\n    markAsRead(rowData: any) {\r\n        if (\r\n            !this.notificationDataForTable[\r\n                this.notificationDataForTable.findIndex((notif) => notif.id === rowData.data.id)\r\n            ].isRead\r\n        )\r\n            this.markNotificationAsRead.emit([rowData.data.id]);\r\n    }\r\n\r\n    changeClassOnHover(rowData: any) {\r\n        this.notificationDataForTable.forEach((ele) => {\r\n            if (ele.id === rowData.rowData.id) {\r\n                ele.readActionKey[0].iconClass = \"mdi mdi-check\";\r\n            }\r\n        });\r\n    }\r\n\r\n    changeClassOnHover2(rowData: any) {\r\n        this.notificationDataForTable.forEach((ele) => {\r\n            if (ele.id === rowData.rowData.id) {\r\n                ele.readActionKey[0].iconClass = \"mdi mdi-checkbox-blank-circle\";\r\n            }\r\n        });\r\n    }\r\n\r\n    clearAllFilter() {\r\n        this.nonEditableGTComponent?.setScrollToInitialPosition();\r\n        this.notificationDataForTable = cloneDeep(this.notificationDataCloned);\r\n        this.gtHelperService.initTableFilters(this.notificationDataCloned);\r\n        this.disableClearAllBtn = this.gtHelperService.enableOrDisableClearAllBtn();\r\n        this.updateFiltersInURL();\r\n        if (this.showUnreadBoolean) {\r\n            this.notificationDataForTable = this.notificationDataForTable.filter((notif) => !notif.isRead);\r\n        }\r\n    }\r\n\r\n    filterNotifications(typedString: string) {\r\n        this.searchSubject.next(typedString);\r\n    }\r\n\r\n    searchForValues(typedString: string) {\r\n        if (typedString) {\r\n            const keysToSearch = [\"message\"];\r\n            this.notificationDataForTable = this.annaFilterSearchedPipe.transform(\r\n                this.annaFilterService.filterData(this.notificationDataCloned, \"\"),\r\n                typedString,\r\n                keysToSearch,\r\n            );\r\n        } else {\r\n            this.notificationDataForTable =\r\n                this.annaFilterService.appliedFiltersArray.length > 0\r\n                    ? this.annaFilterService.filterData(this.notificationDataCloned, \"\")\r\n                    : cloneDeep(this.notificationDataCloned);\r\n        }\r\n        this.updateCount();\r\n        this.markForChangeDetection(this.notificationDataForTable);\r\n    }\r\n\r\n    markForChangeDetection(tableData: Notification[]) {\r\n        this.notificationDataForTable = cloneDeep(tableData);\r\n        this.showNoData = tableData.length === 0;\r\n        this.resetFilterDisabled = this.annaFilterService.appliedFiltersArray.length === 0;\r\n    }\r\n\r\n    errorHandler() {\r\n        this.loading = false;\r\n        this.notificationDataForTable = [];\r\n        this.notificationDataCloned = [];\r\n        this.toastr.error(Constants.apiFailErrorMessage);\r\n    }\r\n\r\n    updateFiltersInURL() {\r\n        const latestQueryParams = this.prepareQueryParamsOnFilter();\r\n        this.notificationService.filtersAppliedRouteChange = true;\r\n\r\n        if (Object.keys(latestQueryParams).length > 0) {\r\n            const hashedQueryParams = this.persistingFilterService.storeKeyValueInLocalStorage(latestQueryParams);\r\n            this.router.navigate([], {\r\n                queryParams: { filters: hashedQueryParams },\r\n                relativeTo: this.route.parent,\r\n                queryParamsHandling: \"merge\",\r\n            });\r\n        } else {\r\n            this.router.navigate([], {\r\n                relativeTo: this.route.parent,\r\n            });\r\n        }\r\n    }\r\n\r\n    prepareQueryParamsOnFilter() {\r\n        const query: any = {};\r\n\r\n        if (this.annaFilterService.appliedFiltersArray.length > 0) {\r\n            query.appliedFilters = this.annaFilterService.appliedFiltersArray;\r\n            query.selectedFilterData = JSON.stringify(Array.from(this.annaFilterService.tooltipSelectedMap));\r\n        }\r\n        if (this.gtHelperService.isSortingAppliedToTable()) {\r\n            query.sortState = JSON.stringify(Array.from(this.annaSortService.columnSortState));\r\n        }\r\n\r\n        return query;\r\n    }\r\n\r\n    buttonOrViewLinkClicked(event: { event: any; rowData: Notification } | any) {\r\n        const { classList } = event.event.target;\r\n        if (classList.contains(\"view-link\")) {\r\n            this.navigateToRespectivePage(classList, event.rowData);\r\n        }\r\n        if (!event.rowData.isRead && (classList.contains(\"download-button\") || classList.contains(\"view-link\")))\r\n            this.markNotificationAsRead.emit([event.rowData.id]);\r\n    }\r\n\r\n    navigateToRespectivePage(classList: DOMTokenList, rowData: Notification) {\r\n        const clickedItem = rowData.clickableItems.filter((x: ClickableLink) => classList.value.includes(x.pageUrl))[0];\r\n        if (!clickedItem) return;\r\n\r\n        const url = clickedItem.pageUrl;\r\n        const filters: any = {};\r\n        if (clickedItem.label === \"View status\") {\r\n            this.transactionId = clickedItem.additionalDataForLink.transactionId;\r\n            this.selectedStation = rowData.station;\r\n            this.massCopyStatusModal.openModal();\r\n            return;\r\n        }\r\n        if (url.includes(\"business-rules/advertiser\")) {\r\n            this.breadcrumbService.updateBreadcrumbs(clickedItem.additionalDataForLink.advertiserName, null, true);\r\n            filters.advertiserId = clickedItem.additionalDataForLink.advertiserId;\r\n            filters.stationId = clickedItem.additionalDataForLink.stationId;\r\n            filters.breadcrumbs = this.persistingFilterService.storeKeyValueInLocalStorage(\r\n                this.breadcrumbService.getBreadcrumbList(),\r\n                false,\r\n            );\r\n            this.resetRouteReuseStrategy();\r\n            this.router.navigate([url], { queryParams: filters });\r\n        } else if (url.includes(\"order-business-rules\")) {\r\n            this.resetRouteReuseStrategy();\r\n            this.router.navigate(\r\n                [\r\n                    \"orders/order-container\",\r\n                    clickedItem.additionalDataForLink.orderId,\r\n                    clickedItem.additionalDataForLink.stationId,\r\n                    \"order-business-rules\",\r\n                ],\r\n                {\r\n                    queryParams: {\r\n                        parentTab: this.orderContainerTabName,\r\n                    },\r\n                },\r\n            );\r\n        } else if (url.includes(\"users-awaiting-action\")) {\r\n            const email = clickedItem.additionalDataForLink.emailId;\r\n            this.annaFilterService.appliedFiltersArray.push(\"email\");\r\n            this.annaFilterService.tooltipSelectedMap.set(\"email\", [email]);\r\n            filters.appliedFilters = this.annaFilterService.appliedFiltersArray;\r\n            filters.selectedFilterData = JSON.stringify(Array.from(this.annaFilterService.tooltipSelectedMap));\r\n            const hashedBreadcrumbsQueryParams = this.persistingFilterService.storeKeyValueInLocalStorage(\r\n                this.breadcrumbService.getBreadcrumbList(),\r\n                false,\r\n            );\r\n            const hashedFilterQueryParams = this.persistingFilterService.storeKeyValueInLocalStorage(filters);\r\n            let hashedStationIdFilter;\r\n            if (clickedItem.additionalDataForLink.stationId) {\r\n                hashedStationIdFilter = this.persistingFilterService.storeKeyValueInLocalStorage(\r\n                    clickedItem.additionalDataForLink.stationId,\r\n                );\r\n            }\r\n            this.router.navigate([url], {\r\n                queryParams: {\r\n                    filters: hashedFilterQueryParams,\r\n                    breadcrumbs: hashedBreadcrumbsQueryParams,\r\n                    stationId: hashedStationIdFilter,\r\n                },\r\n            });\r\n        } else if (url.includes(\"line-details\")) {\r\n            const hashedBreadcrumbsQueryParams = this.persistingFilterService.storeKeyValueInLocalStorage(\r\n                this.breadcrumbService.getBreadcrumbList(),\r\n                false,\r\n            );\r\n\r\n            this.resetRouteReuseStrategy();\r\n            this.router.navigate(\r\n                [\r\n                    \"orders/order-container\",\r\n                    clickedItem.additionalDataForLink.orderId,\r\n                    clickedItem.additionalDataForLink.stationId,\r\n                    \"line-details\",\r\n                ],\r\n                {\r\n                    queryParams: {\r\n                        parentTab: this.orderContainerTabName,\r\n                        breadcrumbs: hashedBreadcrumbsQueryParams,\r\n                    },\r\n                },\r\n            );\r\n        } else if (url.includes(\"orders/ec-orders\")) {\r\n            this.annaFilterService.appliedFiltersArray.push(\"displayStatus\");\r\n            this.annaFilterService.tooltipSelectedMap.set(\"displayStatus\", [\"Buyer Revised\", \"New\"]);\r\n            filters.stationId = +clickedItem.additionalDataForLink.stationId;\r\n            filters.appliedFilters = this.annaFilterService.appliedFiltersArray;\r\n            filters.selectedFilterData = JSON.stringify(Array.from(this.annaFilterService.tooltipSelectedMap));\r\n            const hashedBreadcrumbsQueryParams = this.persistingFilterService.storeKeyValueInLocalStorage(\r\n                this.breadcrumbService.getBreadcrumbList(),\r\n                false,\r\n            );\r\n            const hashedFilterQueryParams = this.persistingFilterService.storeKeyValueInLocalStorage(filters);\r\n            this.router.navigate([url], {\r\n                queryParams: {\r\n                    filters: hashedFilterQueryParams,\r\n                    breadcrumbs: hashedBreadcrumbsQueryParams,\r\n                },\r\n            });\r\n        } else {\r\n            this.router.navigate([url], { queryParams: { filters: clickedItem.queryParams } });\r\n        }\r\n    }\r\n\r\n    resetRouteReuseStrategy() {\r\n        const prev = this.router.routeReuseStrategy.shouldReuseRoute;\r\n        const prevOSN = this.router.onSameUrlNavigation;\r\n        // eslint-disable-next-line func-names\r\n        this.router.routeReuseStrategy.shouldReuseRoute = function () {\r\n            return false;\r\n        };\r\n        setTimeout(() => {\r\n            this.router.routeReuseStrategy.shouldReuseRoute = prev;\r\n            this.router.onSameUrlNavigation = prevOSN;\r\n        }, 0);\r\n    }\r\n\r\n    applyPeriodSelection(event: { isEntireFlightPeriod: boolean; startDate: string; endDate: string }) {\r\n        this.searchItem = \"\";\r\n        const startDateToFetchNotifications = dayjs(event.startDate).format(\"YYYY-MM-DD\");\r\n        const endDateToFetchNotifications = dayjs(event.endDate).format(\"YYYY-MM-DD\");\r\n        if (\r\n            startDateToFetchNotifications !== this.startDateToFetchNotifications &&\r\n            endDateToFetchNotifications !== this.endDateToFetchNotifications\r\n        ) {\r\n            this.startDateToFetchNotifications = startDateToFetchNotifications;\r\n            this.endDateToFetchNotifications = endDateToFetchNotifications;\r\n            this.clearAllFilter();\r\n            this.loading = true;\r\n            this.periodSelectionChanged.emit(event);\r\n        }\r\n    }\r\n\r\n    openRequestPermissionPopup() {\r\n        this.requestNotification.emit();\r\n    }\r\n}\r\n","<div class=\"main-content\">\r\n    <div class=\"searchbar-and-toggle\">\r\n        <section class=\"period-section\">\r\n            <anna-design-order-container-filter-modal\r\n                *ngIf=\"enabledPeriod\"\r\n                [title]=\"periodModalTitle\"\r\n                [showEntireFilghtPeriodSelection]=\"false\"\r\n                [selectedData]=\"selectedPeriodData\"\r\n                [disablePeriodSelection]=\"loading || disablePeriodSelection\"\r\n                [parentQueryParams]=\"adcContainerQueryParams\"\r\n                [flightPeriod]=\"enabledPeriod\"\r\n                [message]=\"periodModalMessage\"\r\n                (apply)=\"applyPeriodSelection($event)\"\r\n            >\r\n            </anna-design-order-container-filter-modal>\r\n            <ngx-skeleton-loader\r\n                *ngIf=\"!enabledPeriod\"\r\n                count=\"1\"\r\n                [theme]=\"{ width: '280px', height: '30px', 'margin-bottom': '0px', position: 'relative', top: '6px' }\"\r\n            >\r\n            </ngx-skeleton-loader>\r\n        </section>\r\n\r\n        <section>\r\n            <input\r\n                type=\"text\"\r\n                [(ngModel)]=\"searchItem\"\r\n                (ngModelChange)=\"filterNotifications($event)\"\r\n                placeholder=\"Search all notifications\"\r\n                [disabled]=\"loading\"\r\n            />\r\n\r\n            <i class=\"mi mdi-search searchIcon\"></i>\r\n        </section>\r\n\r\n        <section class=\"toggle-class\">\r\n            <section *ngIf=\"allowPushNotifications\">\r\n                <a\r\n                    class=\"enable-notification-permission\"\r\n                    (click)=\"openRequestPermissionPopup()\"\r\n                    *ngIf=\"permissionStatus === 'default'\"\r\n                    >Click here to enable push notifications for ANNA\r\n                </a>\r\n                <i\r\n                    *ngIf=\"permissionStatus === 'default'\"\r\n                    class=\"mi mdi-info-outline\"\r\n                    ngbTooltip=\"The page needs to be refreshed to reflect the updated settings\"\r\n                ></i>\r\n                <p\r\n                    class=\"notification-permission\"\r\n                    *ngIf=\"permissionStatus !== 'default'\"\r\n                >\r\n                    <span *ngIf=\"permissionStatus === 'denied'\">Push notifications have been disabled for ANNA</span>\r\n                    <span *ngIf=\"permissionStatus === 'granted'\">Push notifications enabled for ANNA</span>\r\n                    <i\r\n                        class=\"mi mdi-info-outline\"\r\n                        tooltipClass=\"push-notification-info-tooltip\"\r\n                        ngbTooltip=\"Push notifications cannot be enabled/disabled directly on ANNA. To manage your preferences, please adjust the notification settings in your browser.\"\r\n                    ></i>\r\n                </p>\r\n            </section>\r\n\r\n            <div class=\"pipe\"></div>\r\n\r\n            <header>Show all unread</header>\r\n            <anna-design-toggle\r\n                [isDisabled]=\"notificationCount === 0 && showUnreadBoolean === false\"\r\n                [isToggled]=\"showUnreadBoolean\"\r\n                (toggle)=\"showUnread()\"\r\n            >\r\n            </anna-design-toggle>\r\n        </section>\r\n    </div>\r\n\r\n    <div class=\"clear-all-read-all\">\r\n        <a\r\n            (click)=\"markAllAsRead()\"\r\n            [ngClass]=\"notificationCount === 0 ? 'disable-link' : 'enable-link'\"\r\n        >\r\n            <i class=\"mdi mdi-check-all\"></i><u>Mark all as read</u></a\r\n        >\r\n\r\n        <button\r\n            class=\"clear-all-btn\"\r\n            *ngIf=\"!loading\"\r\n            (click)=\"clearAllFilter()\"\r\n            [disabled]=\"disableClearAllBtn\"\r\n        >\r\n            Reset all filters\r\n        </button>\r\n    </div>\r\n\r\n    <div>\r\n        <anna-core-non-editable-generic-table-lib\r\n            class=\"notification-table\"\r\n            [ngClass]=\"{ 'notification-data-no-data no-data-div': showNoData }\"\r\n            [showSkeletonLoading]=\"loading\"\r\n            [tableHeaders]=\"tableHeaders\"\r\n            [tableClass]=\"genericTableClass\"\r\n            [tableData]=\"notificationDataForTable\"\r\n            [clonedTableData]=\"notificationDataCloned\"\r\n            [gtGeneralConfig]=\"gtGeneralConfig\"\r\n            [gtDimension]=\"gtDimension\"\r\n            [setTableHeightWhenRowSizeIsFixed]=\"false\"\r\n            [maximumRowsWhichCanBeRenderedWithoutScroll]=\"maximumRowsWhichCanBeRenderedWithoutScroll\"\r\n            (filterAppliedToTable)=\"filterAppliedToTable($event)\"\r\n            (sortingAppliedToTable)=\"sortingAppliedToTable($event)\"\r\n            (gtTextActionClicked)=\"markAsRead($event)\"\r\n            (notificationIconHover)=\"changeClassOnHover($event)\"\r\n            (notificationIconHoverLeave)=\"changeClassOnHover2($event)\"\r\n            (gtInnerHTMLClicked)=\"buttonOrViewLinkClicked($event)\"\r\n        >\r\n        </anna-core-non-editable-generic-table-lib>\r\n    </div>\r\n\r\n    <p class=\"footer-message\">You are all caught up till {{ today }}</p>\r\n</div>\r\n<anna-feature-mass-copy-status-popup\r\n    #massCopyStatusModal\r\n    [transactionId]=\"transactionId\"\r\n    [stationName]=\"selectedStation\"\r\n>\r\n</anna-feature-mass-copy-status-popup>\r\n","import { InjectionToken } from \"@angular/core\";\r\nimport { Observable } from \"rxjs\";\r\n\r\nimport { SchedulePostingReportPayload } from \"../../schedule-posting-report-popup/Model/schedulePostingReportPopup.model\";\r\nimport { IMarkForCreditOrMgRequest } from \"../models/spot-details.model\";\r\n\r\n/** Token to inject the acl service */\r\nexport const SPOT_DETAILS_PAGE_SERVICE_TOKEN: InjectionToken<ISpotDetailsBackendService> =\r\n    new InjectionToken<ISpotDetailsBackendService>(\"SpotDetailsBackendService token\");\r\n\r\nexport interface ISpotDetailsBackendService {\r\n    markForCredit(requestPayload: IMarkForCreditOrMgRequest): Observable<any>;\r\n    markForMakegood(requestPayload: IMarkForCreditOrMgRequest): Observable<any>;\r\n    undoCreditedSpots(requestPayload: IMarkForCreditOrMgRequest): Observable<any>;\r\n    undoMakegoodSpots(requestPayload: IMarkForCreditOrMgRequest): Observable<any>;\r\n    getPostingReportEmailSchedule(stationId: number, orderId: string): Observable<any>;\r\n    setOrUpdatePostingReportEmailSchedule(payload: SchedulePostingReportPayload): Observable<any>;\r\n    deletePostingReportEmailSchedule(\r\n        stationId: number,\r\n        orderId: string,\r\n        postingReportScheduleId: string,\r\n        userId: number,\r\n    ): Observable<any>;\r\n}\r\n","export class EasyFilterConstants {\r\n    static readonly Booked = \"BOOKED\";\r\n    static readonly UnSelectedBooked = \"UnSelectedBooked\";\r\n    //  static readonly BookedToDate = 'BOOKED TO DATE';\r\n    static readonly Removed = \"REMOVED\";\r\n    static readonly Dropped = \"DROPPED\";\r\n    static readonly LateRuns = \"LATE RUNS\";\r\n    static readonly ToBeScheduled = \"TO BE SCHEDULED\";\r\n    static readonly Late = \"LATE\";\r\n    static readonly Scheduled = \"SCHEDULED\";\r\n    static readonly Aired = \"AIRED\";\r\n    static readonly Posted = \"POSTED\";\r\n    static readonly LURViolations = \"POLITICAL RATE VIOLATIONS\";\r\n    static readonly CandViolation = \"CANDIDATE TO CANDIDATE VIOLATIONS\";\r\n    static readonly GroupedPEAndMG = \"GROUPED PEs & MGs\";\r\n    static readonly ViolatingSpot = \"VIOLATOR SPOTS\";\r\n    static readonly ViolatedSpot = \"VIOLATED SPOTS\";\r\n}\r\n\r\nexport class StatusConstants {\r\n    static readonly Placed = \"Placed\";\r\n    static readonly Displaced = \"Displaced\";\r\n    static readonly Late = \"Late\";\r\n    static readonly Preempted = \"Preempted\";\r\n    static readonly PreemptedBonus = \"Preempted - Bonus\";\r\n    static readonly PreemptedDR = \"Preempted - DR\";\r\n    static readonly PreemptedPaidProgram = \"Preempted - Paid program\";\r\n    static readonly PreemptedStationUtilized = \"Preempted - Station utilized\";\r\n    static readonly PreemptedNoCharge = \"Preempted - No-charge\";\r\n    static readonly NonSpot = \"Non-spot\";\r\n    static readonly Aired = \"Aired\";\r\n    static readonly Removed = \"Removed\";\r\n    static readonly PreemptedAndMadeGood = \"Preempted & made good(PE)\";\r\n    static readonly Credited = \"Credited\";\r\n    static readonly Unresolved = \"Unresolved\";\r\n    static readonly MarkedForCredit = \"Marked For Credit\";\r\n    static readonly MarkedForMG = \"Marked For MG\";\r\n    static readonly BuyerCreditRequested = \"Buyer credit requested\";\r\n}\r\n\r\nexport class TableColumnNameConstants {\r\n    static readonly SellerLine = \"SELLER LINE #\";\r\n    static readonly BuyerLine = \"BUY LINE #\";\r\n    static readonly Spot = \"SPOT#\";\r\n    static readonly Origin = \"ORIGIN\";\r\n    static readonly SpotStatus = \"SPOT STATUS\";\r\n    static readonly InventoryCode = \"INVENTORY CODE\";\r\n    static readonly BuyerProgramName = \"BUYER PROGRAM\";\r\n    static readonly SellerProgramName = \"SELLER PROGRAM\";\r\n    static readonly SellerProgInvCodeName = \"SELLER PROGRAM (INVENTORY CODE)\";\r\n    static readonly Length = \"LEN\";\r\n    static readonly RevenueClass = \"REVENUE CLASS\";\r\n    static readonly BookedRate = \"BOOKED RATE\";\r\n    static readonly AUR = \"BOOKED AVG. RATE\";\r\n    static readonly BookedRating = \"BOOKED RTG\";\r\n    static readonly AURating = \"Avg. RTG\";\r\n    static readonly PostedRating = \"POSTED RTG\";\r\n    static readonly NormalizedBookedRating = \"NORMALIZED BOOKED RTG\";\r\n    static readonly NormalizedPostedRating = \"NORMALIZED POSTED RTG\";\r\n    static readonly NormalizedBookedIMPS = \"NORMALIZED BOOKED IMP('000)\";\r\n    static readonly NormalizedPostedIMPS = \"NORMALIZED POSTED IMP('000)\";\r\n    static readonly Daypart = \"DP\";\r\n    static readonly StartAndEndTime = \"START & END TIME\";\r\n    static readonly ScheduledWeek = \"Sch. WEEK\";\r\n    static readonly ScheduledDay = \"Sch. DAY\";\r\n    static readonly AirStatus = \"AIR STATUS\";\r\n    static readonly AiredDateAndTime = \"AIR DATE & TIME\";\r\n    static readonly AiredProgram = \"AIRED PROGRAM\";\r\n    static readonly SeeMG = \"SEE MG\";\r\n    static readonly MGFor = \"MG FOR\";\r\n    static readonly AdId = \"AD-ID\";\r\n    static readonly BookedIMPS = \"BOOKED IMP('000)\";\r\n    static readonly PostedIMPS = \"POSTED IMP('000)\";\r\n    static readonly AUImpression = \"Avg. IMP('000)\";\r\n    static readonly ProjectedRating = \"PROJECTED RTG\";\r\n    static readonly ProjectedImps = \"PROJECTED IMP('000)\";\r\n}\r\n\r\nexport class CustomizableColumnNameConstants {\r\n    static readonly Line = \"Seller Line\";\r\n    static readonly Spot = \"Spot\";\r\n    static readonly Origin = \"Origin\";\r\n    static readonly Status = \"Status\";\r\n    static readonly AirStatus = \"Aired Status\";\r\n    static readonly SeeMG = \"See MG\";\r\n    static readonly MGFor = \"MG For\";\r\n    static readonly Length = \"Len\";\r\n    static readonly ISCICode = \"ISCI Code\";\r\n    static readonly Daypart = \"Daypart\";\r\n    static readonly InventoryCode = \"Inventory Code\";\r\n    static readonly Program = \"Program\";\r\n    static readonly ScheduledWeek = \"Scheduled Week\";\r\n    static readonly ScheduledDateAndTime = \"Scheduled Date & Time\";\r\n    static readonly AiredDateAndTime = \"Air Date & Time\";\r\n    static readonly RevenueClass = \"Revenue Class\";\r\n    static readonly StartAndEndTime = \"Start & End Time\";\r\n    static readonly ScheduledDay = \"Scheduled Day\";\r\n    static readonly Rate = \"Rate\";\r\n    static readonly RatingOrdered = \"RTG Ordered\";\r\n    static readonly RatingPosted = \"RTG Posted\";\r\n    static readonly ImpressionsOrdered = \"IMP('000) Ordered\";\r\n    static readonly ImpressionsPosted = \"IMP('000) Posted\";\r\n    static readonly AdId = \"AD-ID\";\r\n    static readonly BuyerLine = \"Buy Line\";\r\n    static readonly BuyerProgramName = \"Buyer Program Name\";\r\n    static readonly AUR = \" Avg Rate\";\r\n    static readonly AURating = \"Avg RTG\";\r\n    static readonly AUImpression = \"Avg IMP'000)'\";\r\n}\r\n","export enum ESTIMATEPRIORITIES {\r\n    AverageRTG = \"AverageRTG\",\r\n    BookedRTG = \"BookedRTG\",\r\n    RollingEstimate = \"RollingEstimate\",\r\n    StationEstimate = \"StationEstimate\",\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { OrderMetrics } from \"@annalib/anna-feature-shared-lib\";\r\nimport dayjs from \"dayjs\";\r\n\r\nimport { StatusConstants } from \"../constants/spot-details.constants\";\r\nimport { ESTIMATEPRIORITIES } from \"../models/generic-spot-details.model\";\r\n\r\n@Injectable({\r\n    providedIn: \"root\",\r\n})\r\nexport class GenericSpotDetailsService {\r\n    static backDate: string;\r\n\r\n    static isBooked(status: string): boolean {\r\n        return [\r\n            StatusConstants.Placed,\r\n            StatusConstants.Displaced,\r\n            StatusConstants.Late,\r\n            StatusConstants.Preempted,\r\n            StatusConstants.PreemptedBonus,\r\n            StatusConstants.PreemptedDR,\r\n            StatusConstants.PreemptedPaidProgram,\r\n            StatusConstants.PreemptedStationUtilized,\r\n            StatusConstants.PreemptedNoCharge,\r\n            StatusConstants.NonSpot,\r\n            StatusConstants.Aired,\r\n        ].includes(status);\r\n    }\r\n\r\n    static isScheduled(airDate: string, status: string): boolean {\r\n        const today = dayjs(GenericSpotDetailsService.backDate, \"YYYY-MM-DD\").format(\"MM/DD/YYYY\");\r\n        return [StatusConstants.Placed].includes(status) && dayjs(airDate, \"MM/DD/YYYY\").isSameOrAfter(today);\r\n    }\r\n\r\n    static isAired(isAired: boolean): boolean {\r\n        return isAired;\r\n    }\r\n    static isLateRunSpot(isLateRunSpot: boolean): boolean {\r\n        return isLateRunSpot;\r\n    }\r\n\r\n    static isPosted(isPosted: boolean): boolean {\r\n        return isPosted;\r\n    }\r\n\r\n    static isDropped(status: string): boolean {\r\n        return [StatusConstants.Credited, StatusConstants.Unresolved, StatusConstants.Removed].includes(status);\r\n    }\r\n\r\n    static isToBeScheduled(status: string): boolean {\r\n        return [\r\n            StatusConstants.Preempted,\r\n            StatusConstants.PreemptedBonus,\r\n            StatusConstants.PreemptedDR,\r\n            StatusConstants.PreemptedPaidProgram,\r\n            StatusConstants.PreemptedStationUtilized,\r\n            StatusConstants.PreemptedNoCharge,\r\n            StatusConstants.Displaced,\r\n        ].includes(status);\r\n    }\r\n\r\n    public static returnEstimateValueBasedOnKey(data: any, key: string, metric: OrderMetrics): string {\r\n        switch (key) {\r\n            case ESTIMATEPRIORITIES.AverageRTG:\r\n                return metric === OrderMetrics.rating ? data.WeeklyAURatings : data.WeeklyAUImpressions;\r\n\r\n            case ESTIMATEPRIORITIES.BookedRTG:\r\n                return metric === OrderMetrics.rating ? data.BookedRating : data.BookedImpression;\r\n\r\n            case ESTIMATEPRIORITIES.RollingEstimate:\r\n                return metric === OrderMetrics.rating ? data.RollingEstimateRating : data.RollingEstimateImpression;\r\n\r\n            case ESTIMATEPRIORITIES.StationEstimate:\r\n                return metric === OrderMetrics.rating ? data.StationEstimateRating : data.StationEstimateImpression;\r\n\r\n            default:\r\n                return null;\r\n        }\r\n    }\r\n\r\n    public static returnEstimatePrioritiesColumnVal(\r\n        estimatePriority: string[],\r\n        data: any,\r\n        metric: OrderMetrics,\r\n    ): string[] {\r\n        const firstAndSecondEstimatePriorities = `${this.returnEstimateValueBasedOnKey(data, estimatePriority[0], metric)} | ${this.returnEstimateValueBasedOnKey(data, estimatePriority[1], metric)}`;\r\n        let thirdAndFourthEstimatePriorities = `${this.returnEstimateValueBasedOnKey(data, estimatePriority[2], metric)}`;\r\n        if (estimatePriority?.length === 4) {\r\n            thirdAndFourthEstimatePriorities += ` | ${this.returnEstimateValueBasedOnKey(data, estimatePriority[3], metric)}`;\r\n        }\r\n        return [firstAndSecondEstimatePriorities, thirdAndFourthEstimatePriorities];\r\n    }\r\n\r\n\r\n}","import { Injectable } from \"@angular/core\";\r\nimport { IGtTableHeader } from \"@annalib/anna-core\";\r\nimport { OrderMetrics } from \"@annalib/anna-feature-shared-lib\";\r\nimport dayjs from \"dayjs\";\r\nimport isSameOrAfter from \"dayjs/plugin/isSameOrAfter\";\r\nimport isSameOrBefore from \"dayjs/plugin/isSameOrBefore\";\r\nimport { BehaviorSubject, Subject } from \"rxjs\";\r\n\r\nimport {\r\n    CustomizableColumnNameConstants,\r\n    EasyFilterConstants,\r\n    TableColumnNameConstants,\r\n} from \"../constants/spot-details.constants\";\r\n// eslint-disable-next-line import/no-cycle\r\nimport {\r\n    ICustomizableColumnsForSpotDetails,\r\n    SPOTDETAILVIEWS,\r\n    SpotTableData,\r\n} from \"../models/spot-details.model\";\r\nimport { GenericSpotDetailsService } from \"./generic-spot-details.service\";\r\n\r\n@Injectable({\r\n    providedIn: \"root\",\r\n})\r\nexport class SpotDetailsService {\r\n    filtersAppliedRouteChange: boolean;\r\n    easyFiltersInSpotDetails: Set<string>;\r\n    public disableEnableSpotReportDownloadBtnSubject = new BehaviorSubject<boolean>(true);\r\n    public SpotReportDownloadBtnClickedSubject = new Subject<\r\n        \"EMAILSPOTSREPORT\" | \"EMAILPOSTINGREPORT\" | \"SCHEDULEPOSTINGREPORT\"\r\n    >();\r\n    postedSpotPresentInSelectedPeriod: boolean;\r\n    isPostingReportEmailScheduled: boolean;\r\n\r\n    easyFilterNamesAndKeyNamesToUseMap: any = {\r\n        BOOKED: \"showIfBookedFilterSelected\",\r\n        //  'BOOKED TO DATE': 'showIfBookedToDateFilterSelected',\r\n        SCHEDULED: \"showIfScheduledFilterSelected\",\r\n        AIRED: \"showIfAiredFilterSelected\",\r\n        POSTED: \"showIfPostedFilterSelected\",\r\n        \"TO BE SCHEDULED\": \"showIfToBeScheduledFilterSelected\",\r\n        DROPPED: \"showIfDroppedFilterSelected\",\r\n        \"LATE RUNS\": \"showIfLateRunsSelected\",\r\n        \"VIOLATED SPOTS\": \"showIfViolatedFilterSelected\",\r\n        // 'GROUPED PEs & MGs': 'showIfBookedFilterSelected',\r\n        \"VIOLATOR SPOTS\": \"showIfViolatingFilterSelected\",\r\n    };\r\n    keyNamesToUseAndEasyFilterNamesMap: any = {\r\n        showIfBookedFilterSelected: \"BOOKED\",\r\n        //  showIfBookedToDateFilterSelected: 'BOOKED TO DATE',\r\n        showIfScheduledFilterSelected: \"SCHEDULED\",\r\n        showIfAiredFilterSelected: \"AIRED\",\r\n        showIfPostedFilterSelected: \"POSTED\",\r\n        showIfToBeScheduledFilterSelected: \"TO BE SCHEDULED\",\r\n        showIfDroppedFilterSelected: \"DROPPED\",\r\n        showIfLateRunsSelected: \"LATE RUNS\",\r\n        showIfViolatedFilterSelected: \"VIOLATED SPOTS\",\r\n        showIfViolatingFilterSelected: \"VIOLATOR SPOTS\",\r\n    };\r\n    easyFiltersKeysInSpotDetails: Set<string>;\r\n\r\n    constructor() {\r\n        dayjs.extend(isSameOrAfter);\r\n        dayjs.extend(isSameOrBefore);\r\n\r\n        const easyFiltersInSpotDetailsArr = [\r\n            EasyFilterConstants.Booked,\r\n            // EasyFilterConstants.BookedToDate,\r\n            // EasyFilterConstants.Removed,\r\n            // EasyFilterConstants.Late,\r\n            EasyFilterConstants.Scheduled,\r\n            EasyFilterConstants.Aired,\r\n            EasyFilterConstants.Posted,\r\n            EasyFilterConstants.Dropped,\r\n            EasyFilterConstants.LateRuns,\r\n            EasyFilterConstants.ToBeScheduled,\r\n            EasyFilterConstants.ViolatedSpot,\r\n            EasyFilterConstants.ViolatingSpot,\r\n            EasyFilterConstants.GroupedPEAndMG,\r\n        ];\r\n        const easyFiltersKeyNamesInSpotDetailsArr = [\r\n            \"showIfBookedFilterSelected\",\r\n            //   'showIfBookedToDateFilterSelected',\r\n            \"showIfScheduledFilterSelected\",\r\n            \"showIfAiredFilterSelected\",\r\n            \"showIfPostedFilterSelected\",\r\n            \"showIfToBeScheduledFilterSelected\",\r\n            \"showIfDroppedFilterSelected\",\r\n            \"showIfLateRunsSelected\",\r\n            \"showIfViolatedFilterSelected\",\r\n            \"showIfViolatingFilterSelected\",\r\n        ];\r\n        this.easyFiltersInSpotDetails = new Set(easyFiltersInSpotDetailsArr);\r\n        this.easyFiltersKeysInSpotDetails = new Set(easyFiltersKeyNamesInSpotDetailsArr);\r\n    }\r\n\r\n    getCustomizableColumnsListForSpotDetails(showAUR: boolean): ICustomizableColumnsForSpotDetails[] {\r\n        const AURColumns = showAUR\r\n            ? [\r\n                {\r\n                    name: CustomizableColumnNameConstants.AUR,\r\n                    objectKey: \"DisplayWeeklyAUR\",\r\n                    isFixed: false,\r\n                    isChecked: false,\r\n                },\r\n                {\r\n                    name: CustomizableColumnNameConstants.AURating,\r\n                    objectKey: \"WeeklyAURatingOrImpressions\",\r\n                    isFixed: false,\r\n                    isChecked: false,\r\n                },\r\n            ]\r\n            : [];\r\n\r\n        const columnsList: ICustomizableColumnsForSpotDetails[] = [\r\n            { name: CustomizableColumnNameConstants.Line, objectKey: \"LineNumber\", isFixed: true, isChecked: true },\r\n            { name: CustomizableColumnNameConstants.Spot, objectKey: \"SpotNumber\", isFixed: true, isChecked: true },\r\n            { name: CustomizableColumnNameConstants.Origin, objectKey: \"Origin\", isFixed: true, isChecked: true },\r\n            { name: CustomizableColumnNameConstants.Status, objectKey: \"Status\", isFixed: true, isChecked: true },\r\n            { name: CustomizableColumnNameConstants.AirStatus, objectKey: \"AirStatus\", isFixed: true, isChecked: true },\r\n            { name: CustomizableColumnNameConstants.Length, objectKey: \"Length\", isFixed: true, isChecked: true },\r\n            {\r\n                name: CustomizableColumnNameConstants.InventoryCode,\r\n                objectKey: \"InventoryCode\",\r\n                isFixed: true,\r\n                isChecked: true,\r\n            },\r\n            { name: CustomizableColumnNameConstants.Rate, objectKey: \"DisplayRate\", isFixed: true, isChecked: true },\r\n            {\r\n                name: CustomizableColumnNameConstants.RatingOrdered,\r\n                objectKey: \"OrderedRatingsOrImpressions\",\r\n                isFixed: true,\r\n                isChecked: true,\r\n            },\r\n            {\r\n                name: CustomizableColumnNameConstants.RatingPosted,\r\n                objectKey: \"PostedRatingsOrImpressions\",\r\n                isFixed: true,\r\n                isChecked: true,\r\n            },\r\n            {\r\n                name: CustomizableColumnNameConstants.AiredDateAndTime,\r\n                objectKey: \"AirDateAndTime\",\r\n                isFixed: true,\r\n                isChecked: true,\r\n            },\r\n            { name: CustomizableColumnNameConstants.SeeMG, objectKey: \"SeeMG\", isFixed: true, isChecked: true },\r\n            { name: CustomizableColumnNameConstants.MGFor, objectKey: \"MGFor\", isFixed: true, isChecked: true },\r\n            { name: CustomizableColumnNameConstants.AdId, objectKey: \"AdId\", isFixed: true, isChecked: true },\r\n            { name: CustomizableColumnNameConstants.Daypart, objectKey: \"Daypart\", isFixed: false, isChecked: false },\r\n            // {name: CustomizableColumnNameConstants.ISCICode, objectKey: \"IsciCode\", isFixed: false, isChecked: false},\r\n            { name: CustomizableColumnNameConstants.Program, objectKey: \"Program\", isFixed: false, isChecked: false },\r\n            {\r\n                name: CustomizableColumnNameConstants.ScheduledWeek,\r\n                objectKey: \"ScheduleFlightWeek\",\r\n                isFixed: false,\r\n                isChecked: false,\r\n            },\r\n            {\r\n                name: CustomizableColumnNameConstants.RevenueClass,\r\n                objectKey: \"RevenueClass\",\r\n                isFixed: false,\r\n                isChecked: false,\r\n            },\r\n            {\r\n                name: CustomizableColumnNameConstants.StartAndEndTime,\r\n                objectKey: \"StartTime\",\r\n                isFixed: false,\r\n                isChecked: false,\r\n            },\r\n            {\r\n                name: CustomizableColumnNameConstants.ScheduledDay,\r\n                objectKey: \"ScheduledDay\",\r\n                isFixed: false,\r\n                isChecked: false,\r\n            },\r\n            {\r\n                name: CustomizableColumnNameConstants.BuyerLine,\r\n                objectKey: \"BuyerLine\",\r\n                isFixed: false,\r\n                isChecked: false,\r\n            },\r\n            {\r\n                name: CustomizableColumnNameConstants.BuyerProgramName,\r\n                objectKey: \"BuyerProgramName\",\r\n                isFixed: false,\r\n                isChecked: false,\r\n            },\r\n            ...AURColumns,\r\n        ];\r\n        return columnsList;\r\n    }\r\n\r\n    getEasyFilterNames(\r\n        showLURVoilatedEasyFilter: boolean,\r\n        isCandidateViolation: boolean,\r\n        selectedView: SPOTDETAILVIEWS,\r\n        isBuyerApplication: boolean,\r\n    ): string[] {\r\n        const easyFilters = [\r\n            EasyFilterConstants.Booked,\r\n            //   EasyFilterConstants.BookedToDate,\r\n            EasyFilterConstants.Aired,\r\n            EasyFilterConstants.Posted,\r\n            // EasyFilterConstants.Removed,\r\n            // EasyFilterConstants.Late,\r\n            EasyFilterConstants.Scheduled,\r\n            EasyFilterConstants.ToBeScheduled,\r\n\r\n            EasyFilterConstants.Dropped,\r\n            // EasyFilterConstants.LURViolations,\r\n            // EasyFilterConstants.GroupedPEAndMG,\r\n        ];\r\n        if (!isBuyerApplication) {\r\n            easyFilters.push(EasyFilterConstants.LateRuns);\r\n        }\r\n        if (selectedView === \"SellerView\" && !isBuyerApplication) {\r\n            easyFilters.push(EasyFilterConstants.GroupedPEAndMG);\r\n        }\r\n        if (showLURVoilatedEasyFilter && isCandidateViolation) {\r\n            easyFilters.push(EasyFilterConstants.ViolatedSpot);\r\n        }\r\n        easyFilters.push(EasyFilterConstants.ViolatingSpot);\r\n        return easyFilters;\r\n    }\r\n\r\n    // static isBookedToDate(spotDate: string, status: string): boolean {\r\n    //     let today = dayjs(SpotDetailsService.backDate, 'YYYY-MM-DD').format('MM/DD/YYYY');\r\n    //     return (\r\n    //         dayjs(spotDate).isSameOrBefore(today) &&\r\n    //         [\r\n    //             StatusConstants.Placed,\r\n    //             StatusConstants.Displaced,\r\n    //             StatusConstants.Late,\r\n    //             StatusConstants.Preempted,\r\n    //             StatusConstants.PreemptedBonus,\r\n    //             StatusConstants.PreemptedDR,\r\n    //             StatusConstants.PreemptedPaidProgram,\r\n    //             StatusConstants.PreemptedStationUtilized,\r\n    //             StatusConstants.PreemptedNoCharge,\r\n    //             StatusConstants.NonSpot,\r\n    //             StatusConstants.Aired,\r\n    //         ].includes(status)\r\n    //     );\r\n    // }\r\n\r\n    filterOnEasyFiltersInSpotDetails(data: SpotTableData[], filterName: string) {\r\n        let updatedData: SpotTableData[] = data;\r\n        switch (filterName) {\r\n            case EasyFilterConstants.Booked:\r\n                updatedData = updatedData.filter((obj) => GenericSpotDetailsService.isBooked(obj.SpotStatus));\r\n                break;\r\n\r\n            // case EasyFilterConstants.BookedToDate:\r\n            //     data = data.filter((obj) => SpotDetailsService.isBookedToDate(obj.SpotDate, obj.SpotStatus));\r\n            //     break;\r\n\r\n            // change late run api key here\r\n            case EasyFilterConstants.LateRuns:\r\n                updatedData = updatedData.filter((obj) => GenericSpotDetailsService.isLateRunSpot(obj.showIfLateRunsSelected));\r\n                break;\r\n            case EasyFilterConstants.Scheduled:\r\n                updatedData = updatedData.filter((obj) => GenericSpotDetailsService.isScheduled(obj.AirDate, obj.SpotStatus));\r\n                break;\r\n\r\n            case EasyFilterConstants.Aired:\r\n                updatedData = updatedData.filter((obj) => GenericSpotDetailsService.isAired(obj.IsAired));\r\n                break;\r\n\r\n            case EasyFilterConstants.Posted:\r\n                updatedData = updatedData.filter((obj) => GenericSpotDetailsService.isAired(obj.IsPosted));\r\n                break;\r\n\r\n            case EasyFilterConstants.ToBeScheduled:\r\n                updatedData = updatedData.filter((obj) => GenericSpotDetailsService.isToBeScheduled(obj.SpotStatus));\r\n                break;\r\n\r\n            case EasyFilterConstants.Dropped:\r\n                updatedData = updatedData.filter((obj) => GenericSpotDetailsService.isDropped(obj.SpotStatus));\r\n                break;\r\n\r\n            case EasyFilterConstants.LURViolations:\r\n                updatedData = updatedData.filter((obj) => obj.IsLURViolated);\r\n                break;\r\n\r\n            case EasyFilterConstants.CandViolation:\r\n                updatedData = updatedData.filter((obj) => obj.IsLURViolated);\r\n                break;\r\n\r\n            case EasyFilterConstants.ViolatedSpot:\r\n                updatedData = updatedData.filter((obj) => obj.IsViolated);\r\n                break;\r\n\r\n            case EasyFilterConstants.ViolatingSpot:\r\n                updatedData = updatedData.filter((obj) => obj.IsViolating);\r\n                break;\r\n            // no default\r\n        }\r\n        return updatedData;\r\n    }\r\n\r\n    returnNormalizationHeader(loading: boolean, metricType: OrderMetrics): IGtTableHeader {\r\n        let normalizedBookedImpsOrRatingName = null;\r\n        let normalizedPostedImpsOrRatingName = null;\r\n\r\n        if (!loading) {\r\n            normalizedBookedImpsOrRatingName =\r\n                metricType === OrderMetrics.imps\r\n                    ? TableColumnNameConstants.NormalizedBookedIMPS\r\n                    : TableColumnNameConstants.NormalizedBookedRating;\r\n            normalizedPostedImpsOrRatingName =\r\n                metricType === OrderMetrics.imps\r\n                    ? TableColumnNameConstants.NormalizedPostedIMPS\r\n                    : TableColumnNameConstants.NormalizedPostedRating;\r\n        }\r\n\r\n        return {\r\n            headerInfo: [\r\n                {\r\n                    name: normalizedBookedImpsOrRatingName,\r\n                    objectKey:\r\n                        metricType === OrderMetrics.imps ? \"NormalizedOrderedImpressions\" : \"NormalizedOrderedRating\",\r\n                    typeOfHeaderData: \"STRING\",\r\n                    typeOfBodyData: \"STRING\",\r\n                    showTooltipIcon: true,\r\n                    isSortRequired: [true, true],\r\n                    isFilterRequired: [true, true],\r\n                    filter: \"SLIDER\",\r\n                    filterSortObjectKeys:\r\n                        metricType === OrderMetrics.imps\r\n                            ? [\"NormalizedOrderedImpressions\", \"NormalizedPostedImpressions\"]\r\n                            : [\"NormalizedOrderedRating\", \"NormalizedPostedRating\"],\r\n                },\r\n                {\r\n                    name: normalizedPostedImpsOrRatingName,\r\n                    objectKey:\r\n                        metricType === OrderMetrics.imps ? \"NormalizedPostedImpressions\" : \"NormalizedPostedRating\",\r\n                    typeOfHeaderData: \"STRING\",\r\n                    typeOfBodyData: \"STRING\",\r\n                    showTooltipIcon: false,\r\n                },\r\n            ],\r\n            visible: true,\r\n            width: \"204px\",\r\n        };\r\n    }\r\n}\r\n","export enum Frequencies {\r\n    weekly = \"Weekly\",\r\n    monthly = \"Monthly\",\r\n    quarterly = \"Quarterly\",\r\n    endOfFlightPeriod = \"End of flight period\",\r\n}\r\n\r\nexport enum PopupTypes {\r\n    View = \"VIEW\",\r\n    Update = \"UPDATE\",\r\n    Schedule = \"SCHEDULE\",\r\n}\r\n\r\nexport enum RolesToSendReportTo {\r\n    AE = \"Account Executive\",\r\n    SA = \"Sales Assistant \",\r\n    TL = \"Team Lead\",\r\n    SM = \"Sales Manager\",\r\n    OGA = \"Ownership Group Admin\",\r\n    SV = \"Station Viewer\",\r\n    OGV = \"Ownership Group Viewer\",\r\n}\r\n\r\nexport type PeriodReport =\r\n    | \"Ongoing week\"\r\n    | \"Ongoing broadcast month\"\r\n    | \"Ongoing fiscal month\"\r\n    | \"Ongoing broadcast quarter\"\r\n    | \"Ongoing fiscal quarter\"\r\n    | \"Entire flight period\";\r\n\r\nexport type FileTypes = \"PDF (.pdf)\" | \"Excel (.xlsx)\";\r\n\r\nexport interface AllowedOptions {\r\n    allowedFrequencies: Frequencies[];\r\n    allowedPeriodForReport: PeriodReport[];\r\n    allowedReportType: FileTypes[];\r\n    allowedRecepients: RolesToSendReportTo[];\r\n    allowedRevenueClasses: string[];\r\n    allowedDayparts: string[];\r\n}\r\n\r\nexport interface SchedulePostingReportPayload {\r\n    StationId: number;\r\n    OrderId: string;\r\n    ScheduledByUserId: number;\r\n    Frequency: Frequencies;\r\n    PeriodForReport: PeriodReport;\r\n    RevenueClassIds: string[];\r\n    UsersForReport: string[];\r\n    ReportType: FileTypes;\r\n    PostingReportScheduleId?: string;\r\n    Day: WeekDays | null;\r\n    DaypartIds: string[];\r\n    RecipientsEmailIds: string[];\r\n}\r\n\r\nexport class SchedulePostingReportResponse {\r\n    AllowedPeriodForReport: PeriodReport[];\r\n    AllowedRecepients: RolesToSendReportTo[];\r\n    AllowedFrequencies: Frequencies[];\r\n    AllowedReportType: FileTypes[];\r\n    AllowedRevenueClasses: string[];\r\n    AllowedDayparts: string[];\r\n    PostingReportScheduleDetails: PostingReportScheduleDetails[];\r\n    AdvertiserName: string;\r\n}\r\n\r\nexport interface PostingReportScheduleDetails {\r\n    PostingReportScheduleId: string;\r\n    StationId: number;\r\n    OrderId: number;\r\n    ScheduledByUserId: number;\r\n    Frequency: Frequencies;\r\n    PeriodForReport: PeriodReport;\r\n    RevenueClasses: string[];\r\n    UsersForReport: RolesToSendReportTo[];\r\n    ReportType: FileTypes;\r\n    IsAllRevenueClassessSelected: boolean;\r\n    SendOn: WeekDays | null;\r\n    Dayparts: string[];\r\n    RecipientsEmailIds: string[];\r\n}\r\n\r\nexport enum WeekDays {\r\n    monday = \"Monday\",\r\n    tuesday = \"Tuesday\",\r\n    wednesday = \"Wednesday\",\r\n    thursday = \"Thursday\",\r\n    friday = \"Friday\",\r\n    saturday = \"Saturday\",\r\n    sunday = \"Sunday\",\r\n}","import { CommonModule } from \"@angular/common\";\r\nimport { HttpErrorResponse, HttpResponse } from \"@angular/common/http\";\r\nimport {\r\n    ChangeDetectionStrategy,\r\n    Component,\r\n    EventEmitter,\r\n    inject,\r\n    Input,\r\n    OnInit,\r\n    Output,\r\n    signal,\r\n    TemplateRef,\r\n    ViewChild,\r\n} from \"@angular/core\";\r\nimport {\r\n    AnnaGlobalConfigService,\r\n    Constants,\r\n    IConfirmationPopupConfig,\r\n    ICustomMultiSelect,\r\n    ICustomSingleSelect,\r\n    ShowEllipsisTextOnHoverDirective,\r\n} from \"@annalib/anna-core\";\r\nimport {\r\n    ConfirmationPopupComponent,\r\n    MultiSelectComponent,\r\n    MultiSelectIdText,\r\n    SingleSelectComponent,\r\n} from \"@annalib/anna-design-components-lib\";\r\nimport { NgbModal, NgbModalOptions, NgbModalRef } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { cloneDeep, isEqual } from \"lodash-es\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\nimport { NgxUiLoaderService } from \"ngx-ui-loader\";\r\n\r\nimport {\r\n    ISpotDetailsBackendService,\r\n    SPOT_DETAILS_PAGE_SERVICE_TOKEN,\r\n} from \"../spot-details/config/spot-details-backend-service.token\";\r\nimport { SpotDetailsService } from \"../spot-details/services/spot-details.service\";\r\nimport {\r\n    AllowedOptions,\r\n    FileTypes,\r\n    Frequencies,\r\n    PeriodReport,\r\n    PopupTypes,\r\n    PostingReportScheduleDetails,\r\n    RolesToSendReportTo,\r\n    SchedulePostingReportPayload,\r\n    SchedulePostingReportResponse,\r\n    WeekDays,\r\n} from \"./Model/schedulePostingReportPopup.model\";\r\n\r\n@Component({\r\n    selector: \"anna-feature-schedule-posting-report-popup\",\r\n    imports: [\r\n        CommonModule,\r\n        SingleSelectComponent,\r\n        MultiSelectComponent,\r\n        ConfirmationPopupComponent,\r\n        ShowEllipsisTextOnHoverDirective,\r\n    ],\r\n    templateUrl: \"./schedule-posting-report-popup.component.html\",\r\n    styleUrls: [\"./schedule-posting-report-popup.component.scss\"],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SchedulePostingReportPopupComponent implements OnInit {\r\n    @Input() orderId: string;\r\n    @Input() stationId: number;\r\n    @Input() popupType: \"VIEW\" | \"SCHEDULE\" | \"UPDATE\";\r\n    @Input() existingSchedules: PostingReportScheduleDetails[] = [];\r\n    @Input() scheduleToEdit: PostingReportScheduleDetails | null = null;\r\n    @Input() allowedOptions: AllowedOptions | null = null;\r\n\r\n    @Output() closePopup = new EventEmitter<boolean>();\r\n\r\n    // eslint-disable-next-line no-unsafe-optional-chaining\r\n    private loggedInUserId: number = +JSON.parse(localStorage.getItem(\"userProfileData\"))?.userId;\r\n\r\n    frequencyOptions: Frequencies[] = [];\r\n    sendDataForOptions: PeriodReport[] = [];\r\n    recipients: MultiSelectIdText[] = [];\r\n    formatOptions: FileTypes[];\r\n    revenueClasses: MultiSelectIdText[] = [];\r\n    dayparts: MultiSelectIdText[] = [];\r\n    \r\n    emailTags = signal<string[]>([]);\r\n    duplicateEmailTag = signal<number | null>(null);\r\n    invalidEmailError = signal<string | null>(null);\r\n    duplicateEmailError = signal<string | null>(null);\r\n    duplicateScheduleMessage = signal<string | null>(null);\r\n    disableScheduleOrUpdatePostingReportMailButton = signal<boolean>(false);\r\n    \r\n    private emailTagColumns = 2;\r\n    private readonly frequencyMessageText =\r\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.\";\r\n\r\n    sendOnOptions: WeekDays[] = [\r\n        WeekDays.monday,\r\n        WeekDays.tuesday,\r\n        WeekDays.wednesday,\r\n        WeekDays.thursday,\r\n        WeekDays.friday,\r\n        WeekDays.saturday,\r\n        WeekDays.sunday,\r\n    ];\r\n\r\n    selectedFrequency: Frequencies;\r\n    selectedSendDataFor: PeriodReport;\r\n    selectedSendOn: WeekDays | null;\r\n    selectedFormat: FileTypes;\r\n    scheduledPostingReportEmailDetails: PostingReportScheduleDetails;\r\n    private scheduledPostingReportEmailDetailsList: PostingReportScheduleDetails[] = [];\r\n\r\n    singleSelectDropdownConfig: ICustomSingleSelect;\r\n    multiSelectDropdownConfig: ICustomMultiSelect;\r\n\r\n    frequencyMessage: string;\r\n    loading: boolean = true;\r\n\r\n    @ViewChild(\"ScheduleOrUpdatePostingReportModal\", { static: true })\r\n    private scheduleOrUpdatePostingReportModal: TemplateRef<any>;\r\n    private scheduleOrUpdatePostingReportModalReference: NgbModalRef;\r\n\r\n    @ViewChild(\"ViewPostingReportScheduleModal\", { static: true })\r\n    private viewPostingReportScheduleModal: TemplateRef<any>;\r\n    private viewPostingReportScheduleModalReference: NgbModalRef;\r\n\r\n    @ViewChild(\"deleteScheduleConfirmationModal\")\r\n    private deleteScheduleConfirmationModal: ConfirmationPopupComponent;\r\n\r\n\r\n    deleteConfirmationPopupConfig: IConfirmationPopupConfig;\r\n\r\n    PopupTypes = PopupTypes;\r\n    WeekDays = WeekDays;\r\n    Frequencies = Frequencies;\r\n\r\n    consumingProjectSpotDetailsBackendService = inject<ISpotDetailsBackendService>(SPOT_DETAILS_PAGE_SERVICE_TOKEN);\r\n    private annaSpotDetailsService = inject(SpotDetailsService);\r\n    private annaGlobalConfig = inject(AnnaGlobalConfigService);\r\n    private toastr = inject(ToastrService);\r\n    private ngxService = inject(NgxUiLoaderService);\r\n    private modalService = inject(NgbModal);\r\n\r\n    ngOnInit() {\r\n        this.singleSelectDropdownConfig = { ...this.annaGlobalConfig.defaultSingleSelectConfig };\r\n        this.multiSelectDropdownConfig = { ...this.annaGlobalConfig.defaultMultiSelectConfig };\r\n        this.openPopup();\r\n        this.setDeleteConfirmationPopupConfig();\r\n        this.fetchData();\r\n    }\r\n\r\n    fetchData() {\r\n        if (\r\n            this.allowedOptions?.allowedFrequencies?.length &&\r\n            this.allowedOptions?.allowedPeriodForReport?.length &&\r\n            this.allowedOptions?.allowedReportType?.length &&\r\n            this.allowedOptions?.allowedRecepients?.length &&\r\n            this.allowedOptions?.allowedRevenueClasses?.length &&\r\n            this.allowedOptions?.allowedDayparts?.length\r\n        ) {\r\n            this.initializeDropdowns(\r\n                this.allowedOptions.allowedFrequencies,\r\n                this.allowedOptions.allowedPeriodForReport,\r\n                this.allowedOptions.allowedReportType,\r\n                this.allowedOptions.allowedRecepients,\r\n                this.allowedOptions.allowedRevenueClasses,\r\n                this.allowedOptions.allowedDayparts,\r\n            );\r\n            return;\r\n        }\r\n\r\n        this.consumingProjectSpotDetailsBackendService\r\n            .getPostingReportEmailSchedule(this.stationId, this.orderId)\r\n            .subscribe({\r\n                next: (response: HttpResponse<SchedulePostingReportResponse>) => {\r\n                    this.scheduledPostingReportEmailDetailsList = cloneDeep(\r\n                        response.body.PostingReportScheduleDetails || [],\r\n                    );\r\n                    if (!this.existingSchedules?.length) {\r\n                        this.existingSchedules = cloneDeep(this.scheduledPostingReportEmailDetailsList);\r\n                    }\r\n                    this.initializeDropdowns(\r\n                        response.body.AllowedFrequencies,\r\n                        response.body.AllowedPeriodForReport,\r\n                        response.body.AllowedReportType,\r\n                        response.body.AllowedRecepients,\r\n                        response.body.AllowedRevenueClasses,\r\n                        response.body.AllowedDayparts,\r\n                    );\r\n                },\r\n                error: (error: HttpErrorResponse) => {\r\n                    this.toastr.error(Constants.SERVER_ERROR_MSG);\r\n                    this.closePopupBasedOnPopupType();\r\n                },\r\n            });\r\n    }\r\n\r\n    private initializeDropdowns(\r\n        frequencies: Frequencies[],\r\n        periods: PeriodReport[],\r\n        reportTypes: FileTypes[],\r\n        recepients: RolesToSendReportTo[],\r\n        revenueClasses: string[],\r\n        dayparts: string[],\r\n    ) {\r\n        if (this.popupType === \"VIEW\") return;\r\n\r\n        this.frequencyOptions = cloneDeep(frequencies);\r\n        this.sendDataForOptions = cloneDeep(periods);\r\n        this.formatOptions = cloneDeep(reportTypes);\r\n        this.recipients = recepients.map((item) => new MultiSelectIdText(item, item, false, false, false));\r\n        this.revenueClasses = revenueClasses.map((item) => new MultiSelectIdText(item, item, true, false, false));\r\n        this.dayparts = dayparts.map((item) => new MultiSelectIdText(item, item, true, false, false));\r\n\r\n        if (this.popupType === \"SCHEDULE\") {\r\n            this.setDefaultOptions();\r\n        } else if (this.popupType === \"UPDATE\") {\r\n            this.setSelectedData();\r\n        }\r\n        this.frequencyMessage = this.selectedFrequency === Frequencies.endOfFlightPeriod\r\n            ? null\r\n            : this.frequencyMessageText;\r\n        this.disableEnableApplyButton();\r\n        this.loading = false;\r\n    }\r\n\r\n    setDefaultOptions() {\r\n        this.selectedFrequency = this.frequencyOptions[0];\r\n        this.selectedSendOn = this.sendOnOptions[0];\r\n        const entireFlightPeriod = this.sendDataForOptions.find((n) => n === \"Entire flight period\");\r\n        this.selectedSendDataFor = entireFlightPeriod || this.sendDataForOptions[0];\r\n        this.selectedFormat = this.formatOptions[0];\r\n        const AE = this.recipients.filter((n) => n.text === RolesToSendReportTo.AE)[0];\r\n        AE.isSelected = true;\r\n\r\n        this.emailTags.set([]);\r\n        this.duplicateEmailTag.set(null);\r\n        this.invalidEmailError.set(null);\r\n        this.duplicateEmailError.set(null);\r\n    }\r\n\r\n    setSelectedData() {\r\n        this.disableScheduleOrUpdatePostingReportMailButton.set(true);\r\n        if (!this.scheduleToEdit) return;\r\n        const scheduleData = this.scheduleToEdit;\r\n\r\n        this.scheduledPostingReportEmailDetails = cloneDeep(scheduleData);\r\n\r\n        const selectedRecipients = scheduleData.UsersForReport || [];\r\n        const recipients = cloneDeep(this.recipients);\r\n        recipients.forEach((n) => {\r\n            n.isSelected = selectedRecipients.includes(n.text as RolesToSendReportTo);\r\n        });\r\n\r\n        const selectedRevenueClasses = scheduleData.RevenueClasses || [];\r\n        const revenueClasses = cloneDeep(this.revenueClasses);\r\n        revenueClasses.forEach((n) => {\r\n            n.isSelected = selectedRevenueClasses.includes(n.text);\r\n        });\r\n\r\n        const selectedDayparts = scheduleData.Dayparts || [];\r\n        const dayparts = cloneDeep(this.dayparts);\r\n        dayparts.forEach((n) => {\r\n            n.isSelected = selectedDayparts.includes(n.text);\r\n        });\r\n\r\n        this.recipients = recipients;\r\n        this.revenueClasses = revenueClasses;\r\n        this.dayparts = dayparts;\r\n        this.selectedFrequency = scheduleData.Frequency;\r\n        this.selectedSendDataFor = scheduleData.PeriodForReport;\r\n        this.selectedFormat = scheduleData.ReportType;\r\n        this.selectedSendOn = scheduleData.SendOn;\r\n\r\n        this.duplicateEmailTag.set(null);\r\n        this.invalidEmailError.set(null);\r\n        this.duplicateEmailError.set(null);\r\n        this.emailTags.set(scheduleData.RecipientsEmailIds || []);\r\n    }\r\n\r\n    openPopup() {\r\n        if (this.popupType === \"VIEW\") {\r\n            this.openViewPostingReportScheduleModal();\r\n        } else {\r\n            this.openScheduleOrUpdatePostingReportModal();\r\n        }\r\n    }\r\n\r\n    closePopupBasedOnPopupType() {\r\n        if (this.popupType === \"VIEW\") {\r\n            this.closeViewPostingReportScheduleModal();\r\n        } else {\r\n            this.closeScheduleOrUpdatePostingReportModal();\r\n        }\r\n    }\r\n\r\n    openScheduleOrUpdatePostingReportModal() {\r\n        const ngbModalOptions: NgbModalOptions = {\r\n            windowClass: \"schedule-posting-report-email-modal\",\r\n        };\r\n        this.scheduleOrUpdatePostingReportModalReference = this.modalService.open(\r\n            this.scheduleOrUpdatePostingReportModal,\r\n            ngbModalOptions,\r\n        );\r\n    }\r\n\r\n    openViewPostingReportScheduleModal() {\r\n        const ngbModalOptions: NgbModalOptions = {\r\n            windowClass: \"schedule-posting-report-email-modal\",\r\n        };\r\n        this.viewPostingReportScheduleModalReference = this.modalService.open(\r\n            this.viewPostingReportScheduleModal,\r\n            ngbModalOptions,\r\n        );\r\n    }\r\n\r\n    frequencySelected(event: any) {\r\n        this.selectedFrequency = event;\r\n        this.duplicateScheduleMessage.set(null);\r\n\r\n        if (this.selectedFrequency === Frequencies.endOfFlightPeriod) {\r\n            this.selectedSendOn = null;\r\n        } else if (!this.selectedSendOn) {\r\n            this.selectedSendOn = this.sendOnOptions[0];\r\n        }\r\n        this.frequencyMessage = this.selectedFrequency === Frequencies.endOfFlightPeriod\r\n            ? null\r\n            : this.frequencyMessageText;\r\n        this.disableEnableApplyButton();\r\n    }\r\n\r\n    sendDataForSelected(event: any) {\r\n        this.selectedSendDataFor = event;\r\n        this.duplicateScheduleMessage.set(null);\r\n        this.disableEnableApplyButton();\r\n    }\r\n\r\n    recipientsSelectionChanged(event: MultiSelectIdText[]) {\r\n        this.recipients = cloneDeep(event);\r\n        this.duplicateScheduleMessage.set(null);\r\n        this.disableEnableApplyButton();\r\n    }\r\n\r\n    daypartsSelectionChanged(event: MultiSelectIdText[]) {\r\n        this.dayparts = cloneDeep(event);\r\n        this.duplicateScheduleMessage.set(null);\r\n        this.disableEnableApplyButton();\r\n    }\r\n\r\n    formatSelected(event: any) {\r\n        this.selectedFormat = event;\r\n        this.duplicateScheduleMessage.set(null);\r\n        this.disableEnableApplyButton();\r\n    }\r\n\r\n    revenueClassesSelectionChanged(event: MultiSelectIdText[]) {\r\n        this.revenueClasses = cloneDeep(event);\r\n        this.duplicateScheduleMessage.set(null);\r\n        this.disableEnableApplyButton();\r\n    }\r\n\r\n    sendOnSelected(event: any) {\r\n        this.selectedSendOn = event;\r\n        this.duplicateScheduleMessage.set(null);\r\n        this.disableEnableApplyButton();\r\n    }\r\n\r\n    disableEnableApplyButton() {\r\n        this.disableScheduleOrUpdatePostingReportMailButton.set(\r\n            this.popupType === PopupTypes.Update\r\n                ? this.disableEnableApplyButtonForUpdate()\r\n                : this.isFormInvalid(),\r\n        );\r\n    }\r\n\r\n    disableEnableApplyButtonForUpdate() {\r\n        if (this.isFormInvalid()) {\r\n            return true;\r\n        }\r\n\r\n        const originalEmails = (this.scheduledPostingReportEmailDetails.RecipientsEmailIds || [])\r\n            .map((e) => e.toLowerCase())\r\n            .sort();\r\n        const currentEmails = this.emailTags()\r\n            .map((e) => e.toLowerCase())\r\n            .sort();\r\n\r\n        const isFrequencyUnchanged =\r\n            this.selectedFrequency === this.scheduledPostingReportEmailDetails.Frequency;\r\n        const isSendOnUnchanged = this.selectedSendOn === this.scheduledPostingReportEmailDetails.SendOn;\r\n        const isPeriodForReportUnchanged =\r\n            this.selectedSendDataFor === this.scheduledPostingReportEmailDetails.PeriodForReport;\r\n        const isReportTypeUnchanged = this.selectedFormat === this.scheduledPostingReportEmailDetails.ReportType;\r\n\r\n        const selectedRecipients = this.recipients.filter((n) => n.isSelected).map((n) => n.id);\r\n        const isRecipientsUnchanged = isEqual(selectedRecipients, this.scheduledPostingReportEmailDetails.UsersForReport);\r\n\r\n        const selectedRevenueClasses = this.revenueClasses.filter((n) => n.isSelected).map((n) => n.id);\r\n        const isRevenueClassesUnchanged = isEqual(\r\n            selectedRevenueClasses,\r\n            this.scheduledPostingReportEmailDetails.RevenueClasses,\r\n        );\r\n\r\n        const selectedDayparts = this.dayparts.filter((n) => n.isSelected).map((n) => n.id);\r\n        const isDaypartsUnchanged = isEqual(selectedDayparts, this.scheduledPostingReportEmailDetails.Dayparts);\r\n\r\n        const isEmailsUnchanged = isEqual(originalEmails, currentEmails);\r\n\r\n        const hasNoChanges =\r\n            isFrequencyUnchanged &&\r\n            isSendOnUnchanged &&\r\n            isPeriodForReportUnchanged &&\r\n            isReportTypeUnchanged &&\r\n            isRecipientsUnchanged &&\r\n            isRevenueClassesUnchanged &&\r\n            isDaypartsUnchanged &&\r\n            isEmailsUnchanged;\r\n\r\n        return hasNoChanges;\r\n    }\r\n\r\n    isFormInvalid(): boolean {\r\n        const hasRevenue = this.revenueClasses.filter((n) => n.isSelected).length > 0;\r\n        const hasRecipients = this.recipients.filter((n) => n.isSelected).length > 0;\r\n        const hasDayparts = this.dayparts.filter((n) => n.isSelected).length > 0;\r\n        return (\r\n            !hasRevenue ||\r\n            !hasDayparts ||\r\n            (!hasRecipients && !this.hasValidEmailTags()) ||\r\n            !!this.duplicateEmailTag() ||\r\n            !!this.invalidEmailError() ||\r\n            !!this.duplicateEmailError()\r\n        );\r\n    }\r\n\r\n    hasValidEmailTags(): boolean {\r\n        return this.emailTags().length && !this.duplicateEmailTag();\r\n    }\r\n\r\n    onEmailKeydown(event: KeyboardEvent) {\r\n        if (event.key === \"Enter\") {\r\n            event.preventDefault();\r\n            const target = event.target as HTMLInputElement;\r\n            if (target?.value) {\r\n                const wasAdded = this.addEmailTag(target.value);\r\n                if (wasAdded) {\r\n                    target.value = \"\";\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    onEmailInput() {\r\n        this.invalidEmailError.set(null);\r\n        this.duplicateEmailError.set(null);\r\n\r\n        this.duplicateEmailTag.set(null);\r\n    }\r\n\r\n    addEmailTag(value: string): boolean {\r\n        const email = value.trim().toLowerCase();\r\n        if (!email) {\r\n            return false;\r\n        }\r\n\r\n        this.invalidEmailError.set(null);\r\n        this.duplicateEmailError.set(null);\r\n        this.duplicateScheduleMessage.set(null);\r\n\r\n        const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\r\n        const isValid = emailRegex.test(email);\r\n\r\n        if (!isValid) {\r\n            this.invalidEmailError.set(\"Invalid email format\");\r\n            this.disableEnableApplyButton();\r\n            return false;\r\n        }\r\n\r\n        const emailTags = this.emailTags();\r\n        const existingIndex = emailTags.indexOf(email);\r\n        const isDuplicate = existingIndex !== -1;\r\n\r\n        if (isDuplicate) {\r\n            this.duplicateEmailError.set(\"This email already exists\");\r\n            this.duplicateEmailTag.set(existingIndex);\r\n            this.disableEnableApplyButton();\r\n            return false;\r\n        }\r\n\r\n        this.emailTags.set([...emailTags, email]);\r\n\r\n        this.disableEnableApplyButton();\r\n        return true;\r\n    }\r\n\r\n    removeEmailTag(index: number) {\r\n        const emailTags = this.emailTags();\r\n        if (index < 0 || index >= emailTags.length) {\r\n            return;\r\n        }\r\n\r\n        this.invalidEmailError.set(null);\r\n        this.duplicateScheduleMessage.set(null);\r\n\r\n        const updatedEmailTags = [...emailTags];\r\n        updatedEmailTags.splice(index, 1);\r\n        this.emailTags.set(updatedEmailTags);\r\n\r\n        this.duplicateEmailTag.update(currentIndex => {\r\n            if (currentIndex === null || currentIndex < index) {\r\n                return currentIndex;\r\n            }\r\n            if (currentIndex === index) {\r\n                return null;\r\n            }\r\n            return currentIndex - 1;\r\n        });\r\n\r\n        if (this.duplicateEmailTag() < 0 || this.duplicateEmailTag() === null) {\r\n            this.duplicateEmailError.set(null);\r\n        }\r\n\r\n        this.disableEnableApplyButton();\r\n    }\r\n\r\n\r\n    isDuplicateSchedule(): boolean {\r\n        if (!this.existingSchedules?.length) return false;\r\n        const currentPayload = this.createPayloadForSetOrUpdateSchedule();\r\n        return this.existingSchedules.some((item) => {\r\n            if (\r\n                currentPayload.PostingReportScheduleId &&\r\n                item.PostingReportScheduleId === currentPayload.PostingReportScheduleId\r\n            ) {\r\n                return false;\r\n            }\r\n            return (\r\n                item.Frequency === currentPayload.Frequency &&\r\n                item.SendOn === currentPayload.Day &&\r\n                item.PeriodForReport === currentPayload.PeriodForReport &&\r\n                isEqual(item.RevenueClasses, currentPayload.RevenueClassIds) &&\r\n                isEqual(item.Dayparts, currentPayload.DaypartIds) &&\r\n                isEqual(item.UsersForReport || [], currentPayload.UsersForReport || []) &&\r\n                isEqual(\r\n                    (item.RecipientsEmailIds || []).map((m) => m.toLowerCase()),\r\n                    (currentPayload.RecipientsEmailIds || []).map((m) => m.toLowerCase()),\r\n                ) &&\r\n                item.ReportType === currentPayload.ReportType\r\n            );\r\n        });\r\n    }\r\n\r\n    schedulePostingReport() {\r\n        if (this.isDuplicateSchedule()) {\r\n            this.duplicateScheduleMessage.set(\"This schedule already exists.\");\r\n            return;\r\n        }\r\n\r\n        this.duplicateScheduleMessage.set(null);\r\n\r\n        this.ngxService.start();\r\n        this.consumingProjectSpotDetailsBackendService\r\n            .setOrUpdatePostingReportEmailSchedule(this.createPayloadForSetOrUpdateSchedule())\r\n            .subscribe({\r\n                next: (response) => {\r\n                    this.ngxService.stop();\r\n                    this.annaSpotDetailsService.isPostingReportEmailScheduled = true;\r\n                    this.toastr.success(\"Posted report email scheduled successfully\");\r\n                    this.closeScheduleOrUpdatePostingReportModal(true);\r\n                },\r\n                error: (error: HttpErrorResponse) => {\r\n                    this.ngxService.stop();\r\n                    this.toastr.error(Constants.SERVER_ERROR_MSG);\r\n                },\r\n            });\r\n    }\r\n\r\n    deleteClicked() {\r\n        this.scheduleOrUpdatePostingReportModalReference.close();\r\n        this.deleteScheduleConfirmationModal.openModal();\r\n    }\r\n\r\n    deletePostingReportSchedule() {\r\n        this.ngxService.start();\r\n        this.consumingProjectSpotDetailsBackendService\r\n            .deletePostingReportEmailSchedule(\r\n                this.stationId,\r\n                this.orderId,\r\n                this.scheduledPostingReportEmailDetails?.PostingReportScheduleId,\r\n                this.loggedInUserId,\r\n            )\r\n            .subscribe({\r\n                next: (response) => {\r\n                    this.ngxService.stop();\r\n                    this.annaSpotDetailsService.isPostingReportEmailScheduled = false;\r\n                    this.toastr.success(\"Posted report email schedule deleted successfully\");\r\n                    this.closeScheduleOrUpdatePostingReportModal(true);\r\n                },\r\n                error: (error: HttpErrorResponse) => {\r\n                    this.ngxService.stop();\r\n                    this.toastr.error(Constants.SERVER_ERROR_MSG);\r\n                },\r\n            });\r\n    }\r\n\r\n    updatePostingReportSchedule() {\r\n        if (this.isDuplicateSchedule()) {\r\n            this.duplicateScheduleMessage.set(\"This schedule already exists.\");\r\n            return;\r\n        }\r\n\r\n        this.duplicateScheduleMessage.set(null);\r\n\r\n        this.ngxService.start();\r\n        this.consumingProjectSpotDetailsBackendService\r\n            .setOrUpdatePostingReportEmailSchedule(this.createPayloadForSetOrUpdateSchedule())\r\n            .subscribe({\r\n                next: (response) => {\r\n                    this.ngxService.stop();\r\n                    this.toastr.success(\"Posted report email schedule updated successfully\");\r\n                    this.closeScheduleOrUpdatePostingReportModal(true);\r\n                },\r\n                error: (error: HttpErrorResponse) => {\r\n                    this.ngxService.stop();\r\n                    this.toastr.error(Constants.SERVER_ERROR_MSG);\r\n                },\r\n            });\r\n    }\r\n\r\n    createPayloadForSetOrUpdateSchedule(): SchedulePostingReportPayload {\r\n        return {\r\n            StationId: this.stationId,\r\n            OrderId: this.orderId,\r\n            ScheduledByUserId: this.loggedInUserId,\r\n            Frequency: this.selectedFrequency,\r\n            Day: this.selectedSendOn,\r\n            PeriodForReport: this.selectedSendDataFor,\r\n            RevenueClassIds: this.revenueClasses.filter((n) => n.isSelected).map((n) => n.id),\r\n            DaypartIds: this.dayparts.filter((n) => n.isSelected).map((n) => n.id),\r\n            UsersForReport: this.recipients.filter((n) => n.isSelected).map((n) => n.id),\r\n            RecipientsEmailIds: [...this.emailTags()],\r\n            ReportType: this.selectedFormat,\r\n            PostingReportScheduleId: this.scheduledPostingReportEmailDetails?.PostingReportScheduleId,\r\n        };\r\n    }\r\n\r\n    setDeleteConfirmationPopupConfig() {\r\n        this.deleteConfirmationPopupConfig = {\r\n            ...this.annaGlobalConfig.defaultConfirmationPopupConfig,\r\n        };\r\n        this.deleteConfirmationPopupConfig.title =\r\n            \"Are you sure you want to delete the scheduled posting report email? Please note that this will stop the emails from being sent.\";\r\n        this.deleteConfirmationPopupConfig.windowClass = \"generic-confirm-modal\";\r\n        this.deleteConfirmationPopupConfig.showCloseIcon = false;\r\n        this.deleteConfirmationPopupConfig.cancelButtonLabel = \"Cancel\";\r\n        this.deleteConfirmationPopupConfig.confirmButtonLabel = \"Delete\";\r\n    }\r\n\r\n    closeViewPostingReportScheduleModal() {\r\n        this.viewPostingReportScheduleModalReference.close();\r\n        this.closePopup.emit(false);\r\n    }\r\n\r\n    closeScheduleOrUpdatePostingReportModal(shouldReload: boolean = false) {\r\n        this.scheduleOrUpdatePostingReportModalReference.close();\r\n        this.closePopup.emit(shouldReload);\r\n    }\r\n\r\n    closeDeleteConfirmModal() {\r\n        this.closePopup.emit(false);\r\n    }\r\n}\r\n","<ng-template\r\n    #ScheduleOrUpdatePostingReportModal\r\n    let-modal\r\n>\r\n    <div class=\"modal-header\">\r\n        <h3 class=\"modal-title\">\r\n            {{\r\n                popupType === PopupTypes.Schedule\r\n                    ? \"Schedule Order Posting Report Email\"\r\n                    : \"Update Posting Report Email Schedule\"\r\n            }}\r\n        </h3>\r\n    </div>\r\n    <div class=\"modal-body\">\r\n        Order#: <b>{{ orderId }}</b> <br />\r\n        <p>Configure the delivery preferences for the posting report email.</p>\r\n\r\n        <div class=\"d-flex dropdowns-container\">\r\n            <div class=\"dropdown-div\">\r\n            <p class=\"drop-down-label\">Frequency</p>\r\n            <anna-design-single-select\r\n                [loading]=\"loading\"\r\n                [items]=\"frequencyOptions\"\r\n                [selectedItem]=\"selectedFrequency\"\r\n                [config]=\"singleSelectDropdownConfig\"\r\n                (valueChanged)=\"frequencySelected($event)\"\r\n            >\r\n            </anna-design-single-select>\r\n        </div>\r\n            @if (selectedFrequency !== Frequencies.endOfFlightPeriod) {\r\n            <div class=\"dropdown-div\">\r\n                <p class=\"drop-down-label\">\r\n                    {{\r\n                        selectedFrequency === Frequencies.monthly\r\n                            ? \"Send On (Last selected day of the month)\"\r\n                            : selectedFrequency === Frequencies.quarterly\r\n                              ? \"Send On (Last selected day of the quarter)\"\r\n                              : \"Send On\"\r\n                    }}\r\n                </p>\r\n                <anna-design-single-select\r\n                    [loading]=\"loading\"\r\n                    [items]=\"sendOnOptions\"\r\n                    [selectedItem]=\"selectedSendOn\"\r\n                    [config]=\"singleSelectDropdownConfig\"\r\n                    (valueChanged)=\"sendOnSelected($event)\"\r\n                >\r\n                </anna-design-single-select>\r\n            </div>\r\n            }\r\n        </div>\r\n        @if (frequencyMessage) {\r\n        <p class=\"frequency-message\">\r\n            {{ frequencyMessage }}\r\n        </p>\r\n        }\r\n        <div class=\"d-flex dropdowns-container\">\r\n            <div class=\"dropdown-div\">\r\n                <p class=\"drop-down-label\">Send data for</p>\r\n                <anna-design-single-select\r\n                    [loading]=\"loading\"\r\n                    [items]=\"sendDataForOptions\"\r\n                    [selectedItem]=\"selectedSendDataFor\"\r\n                    [config]=\"singleSelectDropdownConfig\"\r\n                    (valueChanged)=\"sendDataForSelected($event)\"\r\n                >\r\n                </anna-design-single-select>\r\n            </div>\r\n            <div class=\"dropdown-div\">\r\n                <p class=\"drop-down-label\">Recipient</p>\r\n                <anna-design-multi-select\r\n                    [loading]=\"loading\"\r\n                    [config]=\"multiSelectDropdownConfig\"\r\n                    [items]=\"recipients\"\r\n                    (selectionChangedEmitAllItems)=\"recipientsSelectionChanged($event)\"\r\n                >\r\n                </anna-design-multi-select>\r\n            </div>\r\n        </div>\r\n        <div class=\"email-container\">\r\n            <div class=\"email-label-row\">\r\n                <p class=\"drop-down-label\">Recipient Email</p>\r\n                @if (invalidEmailError() || duplicateEmailError()) {\r\n                <span class=\"email-error-message\">\r\n                    {{ invalidEmailError() || duplicateEmailError() }}\r\n                </span>\r\n                }\r\n            </div>\r\n            <div class=\"email-input-wrapper\">\r\n                <input\r\n                    type=\"text\"\r\n                    class=\"email-input\"\r\n                    placeholder=\"Enter email address...\"\r\n                    (keydown)=\"onEmailKeydown($event)\"\r\n                    (input)=\"onEmailInput()\"\r\n                    [class.error]=\"invalidEmailError() || duplicateEmailError()\"\r\n                />\r\n            </div>\r\n            <div class=\"email-tag-input\">\r\n                @for (email of emailTags(); track email; let i = $index) {\r\n                <span\r\n                    class=\"email-tag\"\r\n                    [class.tag-error]=\"duplicateEmailTag() === i\"\r\n                >\r\n                    <span\r\n                        class=\"email-tag__text\"\r\n                        annaCoreShowEllipsisTextOnHover\r\n                    >\r\n                        {{ email }}\r\n                    </span>\r\n                    <i\r\n                        class=\"mdi mdi-close\"\r\n                        (click)=\"removeEmailTag(i)\"\r\n                    ></i>\r\n                </span>\r\n                }\r\n            </div>\r\n        </div>\r\n        <div class=\"d-flex dropdowns-container\">\r\n            <div class=\"dropdown-div\">\r\n                <p class=\"drop-down-label\">Daypart</p>\r\n                <anna-design-multi-select\r\n                    [loading]=\"loading\"\r\n                    [items]=\"dayparts\"\r\n                    [disabled]=\"dayparts.length === 0\"\r\n                    [config]=\"multiSelectDropdownConfig\"\r\n                    (selectionChangedEmitAllItems)=\"daypartsSelectionChanged($event)\"\r\n                >\r\n                </anna-design-multi-select>\r\n            </div>\r\n            <div class=\"dropdown-div\">\r\n                <p class=\"drop-down-label\">Revenue Class</p>\r\n                <anna-design-multi-select\r\n                    [loading]=\"loading\"\r\n                    [config]=\"multiSelectDropdownConfig\"\r\n                    [items]=\"revenueClasses\"\r\n                    [disabled]=\"revenueClasses.length === 0\"\r\n                    (selectionChangedEmitAllItems)=\"revenueClassesSelectionChanged($event)\"\r\n                >\r\n                </anna-design-multi-select>\r\n            </div>\r\n        </div>\r\n        <div class=\"d-flex dropdowns-container\">\r\n            <div class=\"dropdown-div\">\r\n                <p class=\"drop-down-label\">Format</p>\r\n                <anna-design-single-select\r\n                    [loading]=\"loading\"\r\n                    [items]=\"formatOptions\"\r\n                    [selectedItem]=\"selectedFormat\"\r\n                    [config]=\"singleSelectDropdownConfig\"\r\n                    (valueChanged)=\"formatSelected($event)\"\r\n                >\r\n                </anna-design-single-select>\r\n            </div>\r\n        </div>\r\n\r\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>\r\n        @if (duplicateScheduleMessage()) {\r\n        <p class=\"frequency-message duplicate-message\">\r\n            {{ duplicateScheduleMessage() }}\r\n        </p>\r\n        }\r\n\r\n        @if (popupType === PopupTypes.Schedule) {\r\n        <div class=\"btn-container\">\r\n            <button\r\n                class=\"anna cancel-button\"\r\n                (click)=\"closeScheduleOrUpdatePostingReportModal()\"\r\n            >\r\n                Cancel\r\n            </button>\r\n            <button\r\n                class=\"anna apply-button\"\r\n                [disabled]=\"loading || disableScheduleOrUpdatePostingReportMailButton()\"\r\n                (click)=\"schedulePostingReport()\"\r\n            >\r\n                Schedule Report\r\n            </button>\r\n        </div>\r\n        }\r\n\r\n        @if (popupType === PopupTypes.Update) {\r\n        <div class=\"btn-container\">\r\n            <button\r\n                class=\"anna cancel-button\"\r\n                (click)=\"closeScheduleOrUpdatePostingReportModal()\"\r\n            >\r\n                Cancel\r\n            </button>\r\n            <button\r\n                class=\"anna apply-button\"\r\n                [disabled]=\"loading || disableScheduleOrUpdatePostingReportMailButton()\"\r\n                (click)=\"updatePostingReportSchedule()\"\r\n            >\r\n                Schedule\r\n            </button>\r\n        </div>\r\n        }\r\n    </div>\r\n</ng-template>\r\n\r\n<ng-template\r\n    #ViewPostingReportScheduleModal\r\n    let-modal\r\n>\r\n    <div class=\"modal-header\">\r\n        <h3 class=\"modal-title\">Posting Report Schedule Email Details</h3>\r\n    </div>\r\n    <div class=\"modal-body\">\r\n        <p>\r\n            Order#: <b>{{ orderId }}</b>\r\n        </p>\r\n        <div class=\"view-popup-details\">\r\n            <span\r\n                >Frequency: <b>{{ scheduledPostingReportEmailDetails?.Frequency }}</b></span\r\n            >\r\n            <span\r\n                >Recipient:\r\n                <ng-container\r\n                    [ngTemplateOutlet]=\"commaSeperatedValues\"\r\n                    [ngTemplateOutletContext]=\"{\r\n                        array: scheduledPostingReportEmailDetails?.UsersForReport\r\n                    }\"\r\n                >\r\n                </ng-container>\r\n            </span>\r\n            <span\r\n                >Revenue Class:\r\n                @if (scheduledPostingReportEmailDetails?.IsAllRevenueClassessSelected) {\r\n                    <b>All ({{ scheduledPostingReportEmailDetails?.RevenueClasses?.length }})</b>\r\n                } @else {\r\n                    <ng-container\r\n                        [ngTemplateOutlet]=\"commaSeperatedValues\"\r\n                        [ngTemplateOutletContext]=\"{\r\n                            array: scheduledPostingReportEmailDetails?.RevenueClasses\r\n                        }\"\r\n                    >\r\n                    </ng-container>\r\n                }\r\n            </span>\r\n            <span\r\n                >Send data for: <b>{{ scheduledPostingReportEmailDetails?.PeriodForReport }}</b></span\r\n            >\r\n            <span\r\n                >Format: <b>{{ scheduledPostingReportEmailDetails?.ReportType }}</b></span\r\n            >\r\n        </div>\r\n    </div>\r\n</ng-template>\r\n\r\n<anna-design-confirmation-popup\r\n    #deleteScheduleConfirmationModal\r\n    [config]=\"deleteConfirmationPopupConfig\"\r\n    (confirmClicked)=\"deletePostingReportSchedule()\"\r\n    (cancelClicked)=\"closeDeleteConfirmModal()\"\r\n>\r\n</anna-design-confirmation-popup>\r\n\r\n<ng-template\r\n    #commaSeperatedValues\r\n    let-array=\"array\"\r\n>\r\n    @for (item of array; track item; let last = $last) {\r\n        <b>{{ item }}@if (!last) {, }</b>\r\n    }\r\n</ng-template>\r\n","export class TableHeaderNames {\r\n    static readonly DATE = \"DATE\";\r\n    static readonly TIME = \"TIME\";\r\n    static readonly REVISION_NUMBER = \"REVISION #\";\r\n    static readonly USER = \"USER\";\r\n    static readonly ACTIIVTY = \"ACTIVITY\";\r\n    static readonly DETAILS = \"DETAILS\";\r\n}\r\n\r\nexport class TableColumnKeyConstants {\r\n    static readonly DATE = \"date\";\r\n    static readonly TIME = \"displayTime\";\r\n    static readonly REVISION_NUMBER = \"revisionNumberAndState\";\r\n    static readonly USER = \"userDetails\";\r\n    static readonly ACTIIVTY = \"activityName\";\r\n    static readonly DETAILS = \"description\";\r\n}\r\nexport class OrderTypeConstants {\r\n    static readonly UD_LIABILITY_SET = \"UD (Liability set)\";\r\n}\r\n","import { AnnaDateTimeFormatService } from \"@annalib/anna-core\";\r\n\r\nexport interface OrderHistory {\r\n    name: string;\r\n    userType: string;\r\n    date: string;\r\n    time: string;\r\n    activityName: string;\r\n    description: string;\r\n    navigateTo:\r\n        | \"REVISION\"\r\n        | \"ORDER-BUSINESS\"\r\n        | \"SPOT-APPROVAL\"\r\n        | \"LINE-DETAILS\"\r\n        | \"ORDER-HISTORY-BUSINESS\"\r\n        | \"STATION-BUSINESS-RULES-HISTORY\";\r\n    revisionNumberForDisplay: string;\r\n    revisionNumber: number;\r\n    showViewDetails: boolean;\r\n    revisionState: \"confirmed\" | \"cancelled\" | \"proposed\";\r\n    revisionNumberAndState?: string;\r\n    orderDetailsPopUpData: OrderDetailsUpdate[];\r\n}\r\n\r\nexport interface OrderDetailsUpdate {\r\n    description: string;\r\n    previousData: string;\r\n    updatedData: string;\r\n}\r\nexport interface OrderHistoryResponse {\r\n    historyApplicableDate: string;\r\n    orderHistoryList: OrderHistory[];\r\n}\r\n\r\nexport class OrderHistoryForTable {\r\n    name: string;\r\n    userType: string;\r\n    date: string;\r\n    time: string;\r\n    activityName: string;\r\n    description: string;\r\n    navigateTo:\r\n        | \"REVISION\"\r\n        | \"ORDER-BUSINESS\"\r\n        | \"SPOT-APPROVAL\"\r\n        | \"LINE-DETAILS\"\r\n        | \"ORDER-HISTORY-BUSINESS\"\r\n        | \"STATION-BUSINESS-RULES-HISTORY\";\r\n    revisionNumberForDisplay: string;\r\n    revisionNumber: number;\r\n    showViewDetails: boolean;\r\n    displayTime: string;\r\n    showExpandOrCollapseIcon: boolean;\r\n    isRowExpanded: boolean | null;\r\n    revisionState: \"confirmed\" | \"cancelled\" | \"proposed\";\r\n    backgroundColor: string;\r\n    hideRow: boolean;\r\n    rowType: \"MAIN_ROW\" | \"SUB_ROW\" | \"COMMON_ROW\";\r\n    revisionNumberAndState: string;\r\n    userDetails: string;\r\n    orderDetailsPopUpData: OrderDetailsUpdate[];\r\n    constructor(\r\n        data: OrderHistory,\r\n        lightBluebackground: boolean,\r\n        mainRow: boolean,\r\n        showExpandOrCollapseIcon: boolean,\r\n        orderType: string,\r\n    ) {\r\n        this.name = data.name;\r\n        this.time = data.time;\r\n        this.date = data.date.split(\" \")[0];\r\n        this.userType = data.userType;\r\n        this.revisionNumber = data.revisionNumber;\r\n        this.revisionNumberForDisplay = data.revisionNumberForDisplay;\r\n        this.revisionState = data.revisionState;\r\n        this.showViewDetails = data.showViewDetails;\r\n        this.navigateTo = data.navigateTo;\r\n        this.activityName = data.activityName;\r\n        this.description =\r\n            (data.description === \"\" || !data.description) && !this.showViewDetails ? \"-\" : data.description;\r\n        this.userDetails = this.name + (data.userType ? ` (${data.userType})` : \"\");\r\n        this.isRowExpanded = false;\r\n        this.displayTime = AnnaDateTimeFormatService.formatTwentyFourHourTimeToHHMMAFormat(data.time);\r\n        this.revisionNumberAndState = data.revisionNumberAndState;\r\n        this.orderDetailsPopUpData = data.orderDetailsPopUpData;\r\n\r\n        if (\r\n            !data.revisionNumber ||\r\n            data.revisionState === \"proposed\" ||\r\n            [\"Order onboarded on ANNA from WO Traffic\", \"Setup revision generated\"].includes(data.activityName)\r\n        ) {\r\n            this.hideRow = false;\r\n            this.backgroundColor = data.revisionState === \"proposed\" ? \"#F5F5F5\" : \"#fff\";\r\n            this.showExpandOrCollapseIcon = false;\r\n            this.rowType = \"COMMON_ROW\";\r\n        } else if (\r\n            (data.revisionNumber % 1 === 0 && data.activityName !== \"Sales Manager Review complete\") ||\r\n            (data.revisionNumber % 1 !== 0 && data.revisionState === \"cancelled\" && mainRow)\r\n        ) {\r\n            this.hideRow = false;\r\n            this.backgroundColor = lightBluebackground\r\n                ? ColorCodesForHistotyTable.lightBlue\r\n                : ColorCodesForHistotyTable.darkBlue;\r\n            // this.showExpandOrCollapseIcon = (data.activityName.toLowerCase() == \"new seller user revision generated\" ||\r\n            //     ([\"Non-rep\", \"Rep\", \"WOP\", \"WO Traffic\"].includes(orderType) && data.activityName.toLowerCase() == \"new buyer revision generated\"))\r\n            // ? false : true;\r\n            this.showExpandOrCollapseIcon = showExpandOrCollapseIcon;\r\n            this.revisionNumberAndState =\r\n                this.revisionNumberForDisplay + (this.revisionState ? ` (${this.revisionState})` : \"\");\r\n            this.rowType = \"MAIN_ROW\";\r\n        } else {\r\n            this.hideRow = true;\r\n            this.backgroundColor = \"#F5F5F5\";\r\n            this.showExpandOrCollapseIcon = false;\r\n            this.rowType = \"SUB_ROW\";\r\n        }\r\n        this.isRowExpanded = false;\r\n        this.displayTime = AnnaDateTimeFormatService.formatTwentyFourHourTimeToHHMMAFormat(data.time);\r\n    }\r\n}\r\n\r\nexport enum ColorCodesForHistotyTable {\r\n    lightBlue = \"#EFF6FF\",\r\n    darkBlue = \"#D8EAFF\",\r\n}\r\n\r\nexport interface TableHeader {\r\n    name: string;\r\n    objectKey: string;\r\n    width: string;\r\n    isSortRequired: boolean;\r\n    isFilterRequired: boolean;\r\n    filter?: \"DATE\" | \"TIME\" | \"CHECKBOX\";\r\n    filterSortObjectKeys?: string;\r\n    disableTooltipIcon: boolean;\r\n}\r\n","import { InjectionToken } from \"@angular/core\";\r\nimport { Observable } from \"rxjs\";\r\n\r\nexport const ORDER_HISTORY_PAGE_SERVICE_TOKEN: InjectionToken<IOrderHistoryBackendService> =\r\n    new InjectionToken<IOrderHistoryBackendService>(\"OrderHistoryBackendService token\");\r\n\r\nexport interface IOrderHistoryBackendService {\r\n    getOrderHistory(payload: any): Observable<any>;\r\n    getOrderHistoryPeriodFilterData(payload: any): Observable<any>;\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { TableColumnKeyConstants, TableHeaderNames } from \"../constants/order-hitory.contsant\";\r\nimport { TableHeader } from \"../models/orderHistory.model\";\r\n\r\n@Injectable({\r\n    providedIn: \"root\",\r\n})\r\nexport class OrderHistoryService {\r\n    filtersAppliedRouteChange: boolean = false;\r\n    lastestHistoryTabFilters: string;\r\n\r\n    returnOrderDetailsUpdatePopupTableHeaders(): string[] {\r\n        return [\"DESCRIPTION\", \"PREVIOUS\", \"UPDATED\"];\r\n    }\r\n\r\n    returnHiatusDetailsPopupTableHeaders(): string[] {\r\n        return [\"PREVIOUS\", \"UPDATED\"];\r\n    }\r\n    returnHiatusDetailsPopupTableObjectKeys(): string[] {\r\n        return [\"previousData\", \"updatedData\"];\r\n    }\r\n\r\n    returnOrderDetailsUpdatePopupTableObjectKeys(): string[] {\r\n        return [\"description\", \"previousData\", \"updatedData\"];\r\n    }\r\n\r\n    returnOrderHistoryTableHedaers(): TableHeader[] {\r\n        return [\r\n            {\r\n                name: TableHeaderNames.DATE,\r\n                objectKey: TableColumnKeyConstants.DATE,\r\n                isSortRequired: true,\r\n                isFilterRequired: true,\r\n                disableTooltipIcon: false,\r\n                filter: \"DATE\",\r\n                filterSortObjectKeys: \"date\",\r\n                width: \"8ch\",\r\n            },\r\n            {\r\n                name: TableHeaderNames.TIME,\r\n                objectKey: TableColumnKeyConstants.TIME,\r\n                isSortRequired: true,\r\n                isFilterRequired: true,\r\n                disableTooltipIcon: false,\r\n                filter: \"TIME\",\r\n                filterSortObjectKeys: \"time\",\r\n                width: \"5.3ch\",\r\n            },\r\n            {\r\n                name: TableHeaderNames.REVISION_NUMBER,\r\n                objectKey: TableColumnKeyConstants.REVISION_NUMBER,\r\n                isSortRequired: true,\r\n                isFilterRequired: true,\r\n                disableTooltipIcon: false,\r\n                filter: \"CHECKBOX\",\r\n                filterSortObjectKeys: \"revisionNumberForDisplay\",\r\n                width: \"10ch\",\r\n            },\r\n            {\r\n                name: TableHeaderNames.USER,\r\n                objectKey: TableColumnKeyConstants.USER,\r\n                isSortRequired: true,\r\n                isFilterRequired: true,\r\n                disableTooltipIcon: false,\r\n                filter: \"CHECKBOX\",\r\n                filterSortObjectKeys: \"userDetails\",\r\n                width: \"12ch\",\r\n            },\r\n            {\r\n                name: TableHeaderNames.ACTIIVTY,\r\n                objectKey: TableColumnKeyConstants.ACTIIVTY,\r\n                isSortRequired: true,\r\n                isFilterRequired: true,\r\n                disableTooltipIcon: false,\r\n                filter: \"CHECKBOX\",\r\n                filterSortObjectKeys: \"activityName\",\r\n                width: \"20ch\",\r\n            },\r\n            {\r\n                name: TableHeaderNames.DETAILS,\r\n                objectKey: TableColumnKeyConstants.DETAILS,\r\n                isSortRequired: false,\r\n                isFilterRequired: false,\r\n                disableTooltipIcon: false,\r\n                width: \"40ch\",\r\n            },\r\n        ];\r\n    }\r\n}\r\n","import { NgClass, NgFor, NgIf, NgStyle, NgTemplateOutlet } from \"@angular/common\";\r\nimport { HttpResponse } from \"@angular/common/http\";\r\nimport {\r\n    ChangeDetectionStrategy,\r\n    ChangeDetectorRef,\r\n    Component,\r\n    EventEmitter,\r\n    Inject,\r\n    Input,\r\n    OnChanges,\r\n    OnInit,\r\n    Output,\r\n    SimpleChanges,\r\n    TemplateRef,\r\n    ViewChild,\r\n} from \"@angular/core\";\r\nimport { Router } from \"@angular/router\";\r\nimport {\r\n    AnnaCoreModule,\r\n    AnnaDateTimeFormatService,\r\n    AnnaFilterService,\r\n    AnnaGtHelperService,\r\n    AnnaPersistingFilterService,\r\n    AnnaSortService,\r\n    ErrorCodes,\r\n    RadioButtonModel,\r\n} from \"@annalib/anna-core\";\r\nimport {\r\n    AnnaDesignComponentsLibModule,\r\n    DatepickerService,\r\n    PeriodSelectionPopUp,\r\n    StartDateConsideringFactor,\r\n} from \"@annalib/anna-design-components-lib\";\r\nimport { NgbDate, NgbModal, NgbTooltip } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport dayjs from \"dayjs\";\r\nimport { cloneDeep, groupBy, isEqual, uniq, uniqWith } from \"lodash-es\";\r\nimport { NgxSkeletonLoaderModule } from \"ngx-skeleton-loader\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\n\r\n// eslint-disable-next-line import/no-cycle\r\nimport { PrimaryDetails } from \"../../public-api\";\r\nimport { SchedulePostingReportPopupComponent } from \"../schedule-posting-report-popup/schedule-posting-report-popup.component\";\r\nimport { OrderTypeConstants } from \"./constants/order-hitory.contsant\";\r\nimport { OrderHistory, OrderHistoryForTable, OrderHistoryResponse, TableHeader } from \"./models/orderHistory.model\";\r\nimport { IOrderHistoryBackendService, ORDER_HISTORY_PAGE_SERVICE_TOKEN } from \"./order-history-backend-service.token\";\r\nimport { OrderHistoryService } from \"./services/order-history.service\";\r\n\r\n@Component({\r\n    selector: \"anna-feature-order-history\",\r\n    templateUrl: \"./order-history.component.html\",\r\n    styleUrls: [\"./order-history.component.scss\"],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    imports: [\r\n        NgIf,\r\n        AnnaDesignComponentsLibModule,\r\n        NgxSkeletonLoaderModule,\r\n        NgFor,\r\n        NgClass,\r\n        NgbTooltip,\r\n        AnnaCoreModule,\r\n        NgStyle,\r\n        NgTemplateOutlet,\r\n        SchedulePostingReportPopupComponent,\r\n    ]\r\n})\r\nexport class OrderHistoryComponent implements OnInit, OnChanges {\r\n    @Input() userType: \"SELLER\" | \"BUYER\";\r\n    @Input() primaryOrderData: PrimaryDetails;\r\n    @Input() firstHistorydate: string;\r\n    @Input() lastHistorydate: string;\r\n    @Input() filtersFromRoute: any;\r\n    @Input() queryParams: any;\r\n    @Input() timezone: string;\r\n    @Input() persistingFilterPeriodData: PeriodSelectionPopUp;\r\n\r\n    @Output() goToPage = new EventEmitter<{\r\n        page:\r\n        | \"REVISION\"\r\n        | \"ORDER-BUSINESS\"\r\n        | \"SPOT-APPROVAL\"\r\n        | \"LINE-DETAILS\"\r\n        | \"ORDER-HISTORY-BUSINESS\"\r\n        | \"BUYER-CONTACT-HISTORY\"\r\n        | \"REP-CONTACT-HISTORY\"\r\n        | \"STATION-BUSINESS-RULES-HISTORY\";\r\n        revisionNumber?: number;\r\n    }>();\r\n\r\n    orderHistoryResponse: OrderHistory[];\r\n    historyApplicableDate: string;\r\n    tableHeaders: TableHeader[];\r\n    historyDataReorderedAndGroupedForTable: OrderHistoryForTable[] | any = [];\r\n    historyDataReorderedAndGrouped: OrderHistoryForTable[] = [];\r\n    numberOfSkeletonRow: number[] = Array(10).fill(0);\r\n    historyGroupedBasedOnRevisionNumber: any;\r\n    loading: boolean = true;\r\n    noData: boolean = false;\r\n    disableClearButton: boolean = true;\r\n\r\n    popupTableHeaders: string[];\r\n    popupTableObjectKeys: string[];\r\n    popupTableData: any[];\r\n    popupDate: string;\r\n    popupTime: string;\r\n    popupUserName: string;\r\n    popupTitle: string = \"Order Details Updated\";\r\n    filterAlignment: string = \"auto\";\r\n    popupHeader: string;\r\n    tooltip: any;\r\n    filterTabObjects: any[];\r\n    tooltipRadioTextMap: Map<any, any>;\r\n\r\n    periodModalTitle: string;\r\n    periodModalMessage: string;\r\n    startDateConsideringFactor: StartDateConsideringFactor = StartDateConsideringFactor.FLIGHT_START_DATE;\r\n    flightPeriodData: { statDate: string; endDate: string };\r\n    selectedFilterStartDate: string;\r\n    selectedFilterEndDate: string;\r\n    isFlightPeriodOfSameMonth: boolean;\r\n    EntireRangeSelectionMessage: string;\r\n    disablePeriodSelection: boolean = false;\r\n    orderDetailsUpdateModalReference: any;\r\n    ngbModalOptions: any;\r\n    openschedulePostingReportPopup: boolean;\r\n\r\n    @ViewChild(\"orderDetailsUpdateModal\") orderDetailsUpdateModal: TemplateRef<any>;\r\n\r\n    constructor(\r\n        private cdRef: ChangeDetectorRef,\r\n        private router: Router,\r\n        private toastr: ToastrService,\r\n        public annaFilterService: AnnaFilterService,\r\n        private annaSortService: AnnaSortService,\r\n        private annaGtService: AnnaGtHelperService,\r\n        private orderHistoryService: OrderHistoryService,\r\n        private persistingFilterService: AnnaPersistingFilterService,\r\n        private annaDateTimeFormatService: AnnaDateTimeFormatService,\r\n        private dpService: DatepickerService,\r\n        private modalService: NgbModal,\r\n        @Inject(ORDER_HISTORY_PAGE_SERVICE_TOKEN)\r\n        public consumingProjectOrderHistoryService: IOrderHistoryBackendService,\r\n    ) {\r\n        this.ngbModalOptions = {\r\n            size: \"md\",\r\n            windowClass: \"order-details-modal\",\r\n        };\r\n    }\r\n\r\n    ngOnChanges(changes: SimpleChanges) {\r\n        if (changes.primaryOrderData && changes.primaryOrderData.currentValue) {\r\n            this.disablePeriodSelection =\r\n                this.primaryOrderData.orderInfo.orderType === OrderTypeConstants.UD_LIABILITY_SET;\r\n        }\r\n        if (changes.filtersFromRoute && changes.filtersFromRoute.currentValue) {\r\n            this.initFiltersFromRoute();\r\n            if (this.flightPeriodData) {\r\n                this.initPeriodSelectionVariables();\r\n                this.fetchOrderHistoryData();\r\n            }\r\n        }\r\n        if (changes.firstHistorydate && changes.firstHistorydate.currentValue) {\r\n            this.initPeriodSelectionVariables();\r\n        }\r\n    }\r\n\r\n    ngOnInit(): void {\r\n        this.setFilterAlignmentBasedOnScreenResolution();\r\n        this.setTableHeaders();\r\n    }\r\n\r\n    setFilterAlignmentBasedOnScreenResolution() {\r\n        const viewportHeight = window.innerHeight;\r\n        if (viewportHeight < 740) {\r\n            this.filterAlignment = \"left right\";\r\n        } else {\r\n            this.filterAlignment = \"bottom\";\r\n        }\r\n    }\r\n\r\n    setTableHeaders() {\r\n        this.tableHeaders = this.orderHistoryService.returnOrderHistoryTableHedaers();\r\n        this.setActiveStateObject();\r\n    }\r\n\r\n    applyPeriodSelection(value: any) {\r\n        this.orderHistoryService.filtersAppliedRouteChange = true;\r\n        this.orderHistoryResponse = null;\r\n        this.setSelectedPeriodData(value);\r\n        this.fetchOrderHistoryData();\r\n    }\r\n\r\n    createPayload() {\r\n        return {\r\n            orderId: this.primaryOrderData.orderId,\r\n            stationId: this.primaryOrderData.stationId,\r\n            startDate: dayjs(this.selectedFilterStartDate).format(\"YYYY-MM-DD\"),\r\n            endDate: dayjs(this.selectedFilterEndDate).format(\"YYYY-MM-DD\"),\r\n        };\r\n    }\r\n\r\n    fetchOrderHistoryData() {\r\n        this.loading = true;\r\n        this.consumingProjectOrderHistoryService.getOrderHistory(this.createPayload()).subscribe(\r\n            (response: HttpResponse<OrderHistoryResponse>) => {\r\n                this.historyApplicableDate = response.body.historyApplicableDate;\r\n                this.loading = false;\r\n                if (response.status === ErrorCodes.NO_CONTENT) {\r\n                    this.getAllOrdersErrorHandler();\r\n                } else {\r\n                    this.orderHistoryResponse = response.body.orderHistoryList;\r\n                    this.onSuccessfullyReceivingData();\r\n                }\r\n            },\r\n            (error: any) => {\r\n                this.getAllOrdersErrorHandler();\r\n                this.toastr.error(\"Something went wrong! Please try again.\");\r\n            },\r\n        );\r\n    }\r\n\r\n    getAllOrdersErrorHandler() {\r\n        this.loading = false;\r\n        this.noData = true;\r\n        this.orderHistoryResponse = [];\r\n    }\r\n\r\n    setSelectedPeriodData(value: any) {\r\n        this.selectedFilterStartDate = value.startDate;\r\n        this.selectedFilterEndDate = value.endDate;\r\n    }\r\n\r\n    onSuccessfullyReceivingData(): void {\r\n        let mainOrCommonRowsSortedBasedOnDateAndTime: OrderHistory[] = [];\r\n        this.historyDataReorderedAndGroupedForTable = [];\r\n        const propsedRevisionNumber: number =\r\n            this.orderHistoryResponse.filter((n: OrderHistory) => n.revisionState === \"proposed\").length > 0\r\n                ? this.orderHistoryResponse.filter((n: OrderHistory) => n.revisionState === \"proposed\")[0]\r\n                    .revisionNumber\r\n                : null;\r\n\r\n        this.orderHistoryResponse.forEach((item: OrderHistory) => {\r\n            item.revisionNumberAndState = cloneDeep(item.revisionNumberForDisplay);\r\n        });\r\n        mainOrCommonRowsSortedBasedOnDateAndTime = this.orderHistoryResponse.filter(\r\n            (n: OrderHistory) =>\r\n                !n.revisionNumber ||\r\n                (n.revisionNumber % 1 === 0 && n.activityName !== \"Sales Manager Review complete\") ||\r\n                (propsedRevisionNumber && n.revisionNumber === propsedRevisionNumber) ||\r\n                (n.revisionNumber % 1 !== 0 && n.revisionState === \"cancelled\"),\r\n        );\r\n\r\n        // to filter out same rev group, multiple cancelled items\r\n        mainOrCommonRowsSortedBasedOnDateAndTime = uniqWith(\r\n            mainOrCommonRowsSortedBasedOnDateAndTime,\r\n            (a, b) =>\r\n                a.revisionNumber === b.revisionNumber &&\r\n                a.revisionState === \"cancelled\" &&\r\n                b.revisionState === \"cancelled\",\r\n        );\r\n\r\n        this.historyGroupedBasedOnRevisionNumber = groupBy(this.orderHistoryResponse, \"revisionNumber\");\r\n\r\n        const formattedData: OrderHistory[] = this.formatResponseForTable(mainOrCommonRowsSortedBasedOnDateAndTime);\r\n\r\n        let lightBluebackground: boolean = true;\r\n        formattedData.forEach((item) => {\r\n            const obj: OrderHistoryForTable = new OrderHistoryForTable(\r\n                item,\r\n                lightBluebackground,\r\n                mainOrCommonRowsSortedBasedOnDateAndTime.includes(item),\r\n                this.historyGroupedBasedOnRevisionNumber[item.revisionNumber].length > 1,\r\n                this.primaryOrderData.orderInfo.orderType,\r\n            );\r\n            this.historyDataReorderedAndGroupedForTable.push(obj);\r\n            lightBluebackground =\r\n                item.revisionNumber && obj.rowType === \"MAIN_ROW\" ? !lightBluebackground : lightBluebackground;\r\n        });\r\n\r\n        this.historyDataReorderedAndGrouped = cloneDeep(this.historyDataReorderedAndGroupedForTable);\r\n        this.annaSortService.noSortingAppliedData = cloneDeep(this.historyDataReorderedAndGrouped);\r\n        this.historyGroupedBasedOnRevisionNumber = groupBy(this.historyDataReorderedAndGrouped, \"revisionNumber\");\r\n\r\n        if (this.annaFilterService.appliedFiltersArray.length > 0) {\r\n            this.historyDataReorderedAndGroupedForTable = this.annaFilterService.filterData(\r\n                this.historyDataReorderedAndGroupedForTable,\r\n                \"\",\r\n            );\r\n            this.filterAppliedToTable(this.historyDataReorderedAndGroupedForTable, false);\r\n        } else if (this.annaGtService.isSortingAppliedToTable()) {\r\n            this.historyDataReorderedAndGroupedForTable = this.applySorting(\r\n                this.historyDataReorderedAndGroupedForTable,\r\n                false,\r\n            );\r\n            this.annaFilterService.updateStateOfAllTheKeys(this.annaSortService.columnSortState);\r\n        }\r\n        this.disableEnableEachColumnTooltipIcon();\r\n        this.disableEnableClearAll();\r\n        this.setNoData();\r\n        this.cdRef.detectChanges();\r\n    }\r\n\r\n    formatResponseForTable(\r\n        mainOrCommonRows: OrderHistory[] | OrderHistoryForTable[],\r\n    ): OrderHistoryForTable[] | OrderHistory[] {\r\n        let i: number = 0;\r\n        const orderHistoryForTable: any[] = [];\r\n        while (i < mainOrCommonRows.length) {\r\n            const obj: any = cloneDeep(mainOrCommonRows[i]);\r\n            if (!obj.revisionNumber || obj.revisionState === \"proposed\") {\r\n                if (\r\n                    obj.revisionNumber === 0 ||\r\n                    (obj.revisionState === \"proposed\" &&\r\n                        orderHistoryForTable.filter((n: any) => n.revisionState === \"proposed\").length === 0)\r\n                ) {\r\n                    obj.revisionNumberAndState =\r\n                        obj.revisionNumberForDisplay + (obj.revisionState ? ` (${obj.revisionState})` : \"\");\r\n                }\r\n                orderHistoryForTable.push(obj);\r\n            } else if (obj.revisionNumber % 1 !== 0) {\r\n                const itemsToPush = this.historyGroupedBasedOnRevisionNumber[obj.revisionNumber];\r\n                itemsToPush[0].revisionNumberAndState =\r\n                    itemsToPush[0].revisionNumberForDisplay +\r\n                    (itemsToPush[0].revisionState ? ` (${itemsToPush[0].revisionState})` : \"\");\r\n                orderHistoryForTable.push(...itemsToPush);\r\n            } else {\r\n                const itemsToPush = this.historyGroupedBasedOnRevisionNumber[obj.revisionNumber];\r\n                itemsToPush[0].revisionNumberAndState =\r\n                    itemsToPush[0].revisionNumberForDisplay +\r\n                    (itemsToPush[0].revisionState ? ` (${itemsToPush[0].revisionState})` : \"\");\r\n                orderHistoryForTable.push(...itemsToPush);\r\n                const revisions = this.orderHistoryResponse.filter(\r\n                    (item) =>\r\n                        item.revisionNumber &&\r\n                        item.revisionNumber < obj.revisionNumber &&\r\n                        item.revisionNumber % 1 !== 0 &&\r\n                        this.historyGroupedBasedOnRevisionNumber[obj.revisionNumber].length > 1,\r\n                );\r\n                if (revisions.length > 0) {\r\n                    orderHistoryForTable.push(...this.historyGroupedBasedOnRevisionNumber[revisions[0].revisionNumber]);\r\n                }\r\n            }\r\n            i += 1;\r\n        }\r\n        return orderHistoryForTable;\r\n    }\r\n\r\n    setNoData() {\r\n        this.noData =\r\n            this.historyDataReorderedAndGroupedForTable.length === 0 ||\r\n            this.historyDataReorderedAndGroupedForTable.filter((n: OrderHistoryForTable) => !n.hideRow).length === 0;\r\n    }\r\n\r\n    expandOrCollapseRow(row: OrderHistoryForTable, expand: boolean) {\r\n        if (expand) {\r\n            this.collapseIfAnyRowExpanded();\r\n        }\r\n        row.isRowExpanded = !row.isRowExpanded;\r\n        const i: number =\r\n            this.historyDataReorderedAndGroupedForTable.findIndex((n: any) => n.revisionNumber === row.revisionNumber) +\r\n            1;\r\n        this.setHideRow(i, !expand);\r\n    }\r\n\r\n    collapseIfAnyRowExpanded() {\r\n        const anyOpenRowIndex: number = this.historyDataReorderedAndGroupedForTable.findIndex(\r\n            (n: any) => n.isRowExpanded,\r\n        );\r\n        if (anyOpenRowIndex !== -1) {\r\n            this.historyDataReorderedAndGroupedForTable[anyOpenRowIndex].isRowExpanded = false;\r\n            this.setHideRow(anyOpenRowIndex + 1, true);\r\n        }\r\n    }\r\n\r\n    setHideRow(startIndex: number, setTo: boolean) {\r\n        let start = startIndex;\r\n        while (\r\n            this.historyDataReorderedAndGroupedForTable[start] &&\r\n            this.historyDataReorderedAndGroupedForTable[start].rowType === \"SUB_ROW\"\r\n        ) {\r\n            this.historyDataReorderedAndGroupedForTable[start].hideRow = setTo;\r\n            start += 1;\r\n        }\r\n    }\r\n\r\n    initFiltersFromRoute() {\r\n        this.annaFilterService.appliedFiltersArray = this.filtersFromRoute.appliedFilters\r\n            ? this.filtersFromRoute.appliedFilters\r\n            : [];\r\n        this.annaFilterService.tooltipSelectedMap = this.filtersFromRoute.selectedFilterData\r\n            ? new Map(JSON.parse(this.filtersFromRoute.selectedFilterData))\r\n            : new Map();\r\n        this.annaSortService.columnSortState = this.filtersFromRoute.sortState\r\n            ? new Map(JSON.parse(this.filtersFromRoute.sortState))\r\n            : new Map();\r\n        this.annaFilterService.initialValueMap = new Map();\r\n        if (this.annaFilterService.tooltipSelectedMap.has(\"date\")) {\r\n            const dates = this.annaFilterService.tooltipSelectedMap.get(\"date\");\r\n            dates.fromDate = dayjs(dates.fromDate);\r\n            dates.toDate = dayjs(dates.toDate);\r\n            this.annaFilterService.tooltipSelectedMap.set(\"date\", dates);\r\n        }\r\n    }\r\n\r\n    filterAppliedToTable(tableData: OrderHistoryForTable[], updateNavigationHistory: boolean) {\r\n        this.historyDataReorderedAndGroupedForTable = cloneDeep(tableData);\r\n        if (this.annaFilterService.appliedFiltersArray.length > 0) {\r\n            this.historyDataReorderedAndGroupedForTable.forEach((n: OrderHistoryForTable) => {\r\n                n.hideRow = false;\r\n                n.isRowExpanded = false;\r\n                n.showExpandOrCollapseIcon = false;\r\n            });\r\n        } else {\r\n            this.historyDataReorderedAndGroupedForTable.forEach((n: OrderHistoryForTable) => {\r\n                n.isRowExpanded = false;\r\n                if (n.rowType === \"MAIN_ROW\") {\r\n                    n.showExpandOrCollapseIcon = true;\r\n                } else if (n.rowType === \"SUB_ROW\") {\r\n                    n.hideRow = true;\r\n                }\r\n            });\r\n        }\r\n        this.disableEnableEachColumnTooltipIcon();\r\n        this.annaFilterService.updateStateOfAllTheKeys(this.annaSortService.columnSortState);\r\n        this.disableEnableClearAll();\r\n        if (this.annaGtService.isSortingAppliedToTable()) {\r\n            this.historyDataReorderedAndGroupedForTable = this.applySorting(\r\n                this.historyDataReorderedAndGroupedForTable,\r\n                false,\r\n            );\r\n        }\r\n        this.annaSortService.noSortingAppliedData = cloneDeep(this.historyDataReorderedAndGroupedForTable);\r\n        this.closeTooltip();\r\n        this.setNoData();\r\n        if (updateNavigationHistory) {\r\n            this.updateNavigationHistory();\r\n        }\r\n    }\r\n\r\n    sortingAppliedToTable(sortBy: \"DEFAULT\" | \"ASC\" | \"DESC\", updateNavigationHistory: boolean) {\r\n        this.collapseIfAnyRowExpanded();\r\n\r\n        if (this.annaFilterService.appliedFiltersArray.length === 0) {\r\n            const tableData = this.applySorting(\r\n                this.historyDataReorderedAndGroupedForTable.filter(\r\n                    (n: OrderHistoryForTable) => n.rowType !== \"SUB_ROW\",\r\n                ),\r\n                sortBy === \"DEFAULT\",\r\n            );\r\n            this.historyDataReorderedAndGroupedForTable =\r\n                sortBy === \"DEFAULT\" ? cloneDeep(tableData) : cloneDeep(this.formatResponseForTable(tableData));\r\n        } else {\r\n            this.historyDataReorderedAndGroupedForTable = this.applySorting(\r\n                this.historyDataReorderedAndGroupedForTable,\r\n                sortBy === \"DEFAULT\",\r\n            );\r\n        }\r\n        this.annaFilterService.updateStateOfAllTheKeys(this.annaSortService.columnSortState);\r\n        this.disableEnableClearAll();\r\n        if (updateNavigationHistory) {\r\n            this.updateNavigationHistory();\r\n        }\r\n    }\r\n\r\n    applySorting(data: OrderHistoryForTable[], sortByDefault: boolean): OrderHistoryForTable[] {\r\n        this.closeTooltip();\r\n        let tableData = [];\r\n        if (sortByDefault) {\r\n            tableData = cloneDeep(this.annaSortService.noSortingAppliedData);\r\n        } else if (!this.annaGtService.isSortingAppliedToTable()) {\r\n            tableData = cloneDeep(data);\r\n        } else {\r\n            tableData = this.annaGtService.callSort(data);\r\n        }\r\n        return tableData;\r\n    }\r\n\r\n    viewDetailsClicked(row: OrderHistoryForTable) {\r\n        const activityNamesToCheckForHiatusDates = [\r\n            \"Hiatus dates updated by Seller\",\r\n            \"Hiatus dates updated by Buyer\",\r\n            \"Hiatus dates entered on WO Traffic\",\r\n            \"Hiatus dates approved by Sales Manager\",\r\n            \"Hiatus dates rejected by Sales Manager\",\r\n        ];\r\n        const activityNamesToOpenPostedReportEmailSchedule = [\r\n            \"Order posting report email scheduled\",\r\n            \"Order posting report email schedule updated\",\r\n        ];\r\n        if (row.activityName === \"Order details updated\") {\r\n            // open popup\r\n            this.openOrderDetailsUpdateModal(row);\r\n        } else if (activityNamesToOpenPostedReportEmailSchedule.some((name) => row.activityName?.includes(name))) {\r\n            this.openScheduledPostingReportEmailPopup();\r\n        } else if (activityNamesToCheckForHiatusDates.some((name) => row.activityName?.includes(name))) {\r\n            this.openHiatusDetailsUpdateModal(row);\r\n        } else {\r\n            this.goToPage.emit({\r\n                page: row.navigateTo,\r\n                revisionNumber: row.revisionNumber,\r\n            });\r\n        }\r\n    }\r\n\r\n    bindTheValueToToolTip(tooltip: any, header: TableHeader) {\r\n        if (tooltip === this.tooltip) {\r\n            this.closeTooltip();\r\n        } else {\r\n            this.openTooltip(tooltip, header.filterSortObjectKeys, header);\r\n        }\r\n    }\r\n\r\n    isTooltipActive(header: any[]) {\r\n        return this.annaFilterService.isTooltipActive(header, this.annaSortService.columnSortState);\r\n    }\r\n\r\n    openTooltip(tooltip: any, header: string, columnHeader: TableHeader) {\r\n        this.closeTooltip();\r\n        this.tooltip = tooltip;\r\n        this.tooltip.open();\r\n        this.filterTabObjects = [\r\n            new RadioButtonModel(header, header, columnHeader.isSortRequired, columnHeader.isFilterRequired),\r\n        ];\r\n    }\r\n\r\n    closeTooltip() {\r\n        if (this.tooltip && this.tooltip.isOpen()) {\r\n            this.tooltip.close();\r\n        }\r\n        this.tooltip = null;\r\n    }\r\n\r\n    disableEnableEachColumnTooltipIcon() {\r\n        this.tableHeaders.forEach((item: TableHeader) => {\r\n            if (item.isSortRequired || item.isFilterRequired) {\r\n                let values = [];\r\n                item.disableTooltipIcon = true;\r\n\r\n                const latestFilters: string[] = this.annaFilterService.appliedFiltersArray;\r\n\r\n                if (\r\n                    latestFilters.length > 0 &&\r\n                    item.disableTooltipIcon &&\r\n                    latestFilters[latestFilters.length - 1] === item.filterSortObjectKeys\r\n                ) {\r\n                    item.disableTooltipIcon = false;\r\n                }\r\n\r\n                if (item.disableTooltipIcon) {\r\n                    if (item.filterSortObjectKeys === \"date\") {\r\n                        item.disableTooltipIcon = !(\r\n                            uniq(this.historyDataReorderedAndGroupedForTable.map((u: { [x: string]: any }) => u.date))\r\n                                .length > 1\r\n                        );\r\n                    } else {\r\n                        values = this.historyDataReorderedAndGroupedForTable.map(\r\n                            (u: { [x: string]: any }) => u[item.filterSortObjectKeys],\r\n                        );\r\n                        if (\r\n                            (item.filter === \"CHECKBOX\" && uniq(values).filter((n) => n != null).length > 1) ||\r\n                            (item.filter !== \"CHECKBOX\" &&\r\n                                uniq(values).filter((n) => n != null && n !== \"-\").length > 1)\r\n                        ) {\r\n                            item.disableTooltipIcon = false;\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n        });\r\n        this.cdRef.detectChanges();\r\n    }\r\n\r\n    initPeriodSelectionVariables() {\r\n        this.periodModalTitle = \"Edit Period\";\r\n        this.periodModalMessage = \"Select period for which you want to view the order history.\";\r\n        this.EntireRangeSelectionMessage = \"Show order's entire history\";\r\n\r\n        this.flightPeriodData = {\r\n            statDate: this.firstHistorydate,\r\n            endDate: this.lastHistorydate,\r\n        };\r\n        const ngbFlightStartDate = this.annaDateTimeFormatService.convertToNgbDate(this.firstHistorydate, \"MM-DD-YYYY\");\r\n        const ngbFlightEndDate = this.annaDateTimeFormatService.convertToNgbDate(this.lastHistorydate, \"MM-DD-YYYY\");\r\n\r\n        if (this.primaryOrderData.orderInfo.orderFlightStatus === \"COMPLETED\")\r\n            this.startDateConsideringFactor = StartDateConsideringFactor.FLIGHT_END_DATE;\r\n\r\n        const startDateData = this.dpService.findBroadcastYearAndMonthForDate(NgbDate.from(ngbFlightStartDate));\r\n        const endDateData = this.dpService.findBroadcastYearAndMonthForDate(NgbDate.from(ngbFlightEndDate));\r\n        this.isFlightPeriodOfSameMonth = isEqual(startDateData, endDateData);\r\n\r\n        if (this.isFlightPeriodOfSameMonth) {\r\n            this.persistingFilterPeriodData = {\r\n                isEntireFlightPeriod: true,\r\n                startDate: this.selectedFilterStartDate ? dayjs(this.selectedFilterStartDate).format(\"MM/DD/YYYY\") : dayjs(this.firstHistorydate).format(\"MM/DD/YYYY\"),\r\n                endDate: this.selectedFilterEndDate ? dayjs(this.selectedFilterEndDate).format(\"MM/DD/YYYY\") : dayjs(this.lastHistorydate).format(\"MM/DD/YYYY\"),\r\n                calendarType: \"broadcast\",\r\n                month: \"\",\r\n                year: \"\",\r\n                periodMode: \"\",\r\n                quarter: \"\",\r\n            };\r\n        }\r\n        if (this.primaryOrderData.orderInfo.orderType === OrderTypeConstants.UD_LIABILITY_SET) {\r\n            this.persistingFilterPeriodData = {\r\n                isEntireFlightPeriod: true,\r\n                startDate: dayjs(this.firstHistorydate).format(\"MM/DD/YYYY\"),\r\n                endDate: dayjs(this.lastHistorydate).format(\"MM/DD/YYYY\"),\r\n                calendarType: \"broadcast\",\r\n                month: \"\",\r\n                year: \"\",\r\n                periodMode: \"\",\r\n                quarter: \"\",\r\n            };\r\n            this.selectedFilterStartDate = this.firstHistorydate;\r\n            this.selectedFilterEndDate = this.lastHistorydate;\r\n            this.fetchOrderHistoryData();\r\n        }\r\n    }\r\n\r\n    clearAllFilters() {\r\n        this.annaFilterService.tooltipSelectedMap = new Map();\r\n        this.annaFilterService.selectedRadio = null;\r\n        this.annaFilterService.appliedFiltersArray = [];\r\n        this.annaSortService.columnSortState = new Map();\r\n        this.annaSortService.noSortingAppliedData = cloneDeep(this.historyDataReorderedAndGrouped);\r\n        this.historyDataReorderedAndGroupedForTable = cloneDeep(this.historyDataReorderedAndGrouped);\r\n        this.annaFilterService.updateStateOfAllTheKeys(this.annaSortService.columnSortState);\r\n        this.disableEnableEachColumnTooltipIcon();\r\n        this.disableClearButton = true;\r\n        this.noData = false;\r\n        this.updateNavigationHistory();\r\n    }\r\n\r\n    disableEnableClearAll() {\r\n        this.disableClearButton = this.annaGtService.enableOrDisableClearAllBtn();\r\n    }\r\n\r\n    updateNavigationHistory() {\r\n        this.orderHistoryService.filtersAppliedRouteChange = true;\r\n        const queryParams = this.prepareQueryParamOnFilterApplication();\r\n\r\n        const updatedParentQueryParams = this.queryParams ? cloneDeep(this.queryParams) : {};\r\n\r\n        if (Object.keys(queryParams).length > 0) {\r\n            const hashedQueryParams = this.persistingFilterService.storeKeyValueInLocalStorage(queryParams);\r\n            this.annaGtService.updateQueryParamsFilter(\"filters\", hashedQueryParams, \"ADD\", updatedParentQueryParams);\r\n        } else {\r\n            this.annaGtService.updateQueryParamsFilter(\"filters\", {}, \"DELETE\", updatedParentQueryParams);\r\n        }\r\n\r\n        if (Object.keys(updatedParentQueryParams).length > 0) {\r\n            this.router.navigate([], {\r\n                queryParams: updatedParentQueryParams,\r\n            });\r\n        } else {\r\n            this.orderHistoryService.filtersAppliedRouteChange = true;\r\n            this.router.navigate([]);\r\n        }\r\n    }\r\n\r\n    prepareQueryParamOnFilterApplication() {\r\n        const query: any = {};\r\n\r\n        if (this.annaFilterService.appliedFiltersArray.length > 0) {\r\n            query.appliedFilters = this.annaFilterService.appliedFiltersArray;\r\n            query.selectedFilterData = JSON.stringify(Array.from(this.annaFilterService.tooltipSelectedMap));\r\n        }\r\n\r\n        if (this.annaGtService.isSortingAppliedToTable()) {\r\n            query.sortState = JSON.stringify(Array.from(this.annaSortService.columnSortState));\r\n        }\r\n        this.setLatestFilters(query);\r\n\r\n        return query;\r\n    }\r\n\r\n    setLatestFilters(queryParams: any) {\r\n        this.orderHistoryService.lastestHistoryTabFilters = JSON.stringify(queryParams);\r\n    }\r\n\r\n    setActiveStateObject() {\r\n        this.tableHeaders.forEach((item) => {\r\n            if (item.isSortRequired || item.isFilterRequired) {\r\n                this.annaFilterService.isFilterSortActive[item.filterSortObjectKeys] = false;\r\n            }\r\n        });\r\n        this.annaFilterService.resetFilterSortActiveStatus = true;\r\n    }\r\n\r\n    openOrderDetailsUpdateModal(row: OrderHistoryForTable) {\r\n        this.popupTableHeaders = this.orderHistoryService.returnOrderDetailsUpdatePopupTableHeaders();\r\n        this.popupTableObjectKeys = this.orderHistoryService.returnOrderDetailsUpdatePopupTableObjectKeys();\r\n        this.popupHeader = \"Order Details Updated\";\r\n        this.popupTableData = row.orderDetailsPopUpData;\r\n        this.popupDate = row.date;\r\n        this.popupTime = row.displayTime;\r\n        this.popupUserName = row.userDetails;\r\n\r\n        this.orderDetailsUpdateModalReference = this.modalService.open(\r\n            this.orderDetailsUpdateModal,\r\n            this.ngbModalOptions,\r\n        );\r\n    }\r\n    openHiatusDetailsUpdateModal(row: OrderHistoryForTable) {\r\n        this.popupTableHeaders = this.orderHistoryService.returnHiatusDetailsPopupTableHeaders();\r\n        this.popupTableObjectKeys = this.orderHistoryService.returnHiatusDetailsPopupTableObjectKeys();\r\n        this.popupHeader = \"Hiatus Dates Updated\";\r\n        this.popupTableData = row.orderDetailsPopUpData;\r\n        this.popupDate = row.date;\r\n        this.popupTime = row.displayTime;\r\n        this.popupUserName = row.userDetails;\r\n\r\n        this.orderDetailsUpdateModalReference = this.modalService.open(\r\n            this.orderDetailsUpdateModal,\r\n            this.ngbModalOptions,\r\n        );\r\n    }\r\n\r\n    openScheduledPostingReportEmailPopup() {\r\n        this.openschedulePostingReportPopup = true;\r\n    }\r\n\r\n    closeOrderDetailsUpdateModal() {\r\n        this.orderDetailsUpdateModalReference.close();\r\n    }\r\n}\r\n","<!-- <div *ngIf=\"timezone && userType == 'BUYER'\" class=\"timezone\">\r\n    Timezone: {{timezone}}\r\n</div> -->\r\n<div\r\n    class=\"period-selection-container\"\r\n    *ngIf=\"primaryOrderData && flightPeriodData\"\r\n>\r\n    <anna-design-order-container-filter-modal\r\n        [title]=\"periodModalTitle\"\r\n        [selectedData]=\"persistingFilterPeriodData\"\r\n        [parentQueryParams]=\"queryParams\"\r\n        [disablePeriodSelection]=\"loading || disablePeriodSelection || isFlightPeriodOfSameMonth\"\r\n        [flightPeriod]=\"flightPeriodData\"\r\n        [message]=\"periodModalMessage\"\r\n        [EntireRangeSelectionMessage]=\"EntireRangeSelectionMessage\"\r\n        [startDateConsideringFactor]=\"startDateConsideringFactor\"\r\n        (apply)=\"applyPeriodSelection($event)\"\r\n    >\r\n    </anna-design-order-container-filter-modal>\r\n    <button\r\n        class=\"clear-all-btn\"\r\n        *ngIf=\"!loading\"\r\n        (click)=\"clearAllFilters()\"\r\n        [disabled]=\"disableClearButton\"\r\n    >\r\n        Reset all filters\r\n    </button>\r\n</div>\r\n<div *ngIf=\"!primaryOrderData || !flightPeriodData\">\r\n    <ngx-skeleton-loader\r\n        count=\"1\"\r\n        [theme]=\"{ width: '280px', height: '24px', display: 'block', 'margin-top': '14px' }\"\r\n    >\r\n    </ngx-skeleton-loader>\r\n</div>\r\n\r\n<div class=\"order-history-table-container\">\r\n    <table class=\"order-history-table\">\r\n        <thead>\r\n            <th\r\n                *ngFor=\"let header of tableHeaders\"\r\n                [style.width]=\"header.width\"\r\n            >\r\n                <div>\r\n                    {{ header.name }}\r\n\r\n                    <ng-container *ngIf=\"header.filter === 'CHECKBOX'\">\r\n                        <span\r\n                            class=\"mdi mdi-filter-variant\"\r\n                            tooltipClass=\"non-edit-checkbox-tooltip\"\r\n                            [ngClass]=\"{\r\n                                active:\r\n                                    annaFilterService.isFilterSortActive &&\r\n                                    annaFilterService.isFilterSortActive[header.filterSortObjectKeys],\r\n                                disabled: header.disableTooltipIcon || loading\r\n                            }\"\r\n                            [ngbTooltip]=\"checkboxFilterTooltip\"\r\n                            placement=\"{{ filterAlignment }}\"\r\n                            container=\"body\"\r\n                            [autoClose]=\"'outside'\"\r\n                            triggers=\"manual\"\r\n                            #t1=\"ngbTooltip\"\r\n                            (click)=\"bindTheValueToToolTip(t1, header)\"\r\n                        >\r\n                        </span>\r\n                    </ng-container>\r\n\r\n                    <ng-container *ngIf=\"header.filter === 'DATE'\">\r\n                        <span\r\n                            class=\"mdi mdi-filter-variant\"\r\n                            tooltipClass=\"non-edit-datepicker-tooltip\"\r\n                            [ngClass]=\"{\r\n                                active:\r\n                                    annaFilterService.isFilterSortActive &&\r\n                                    annaFilterService.isFilterSortActive[header.filterSortObjectKeys],\r\n                                disabled: header.disableTooltipIcon || loading\r\n                            }\"\r\n                            [ngbTooltip]=\"dateFilterTooltip\"\r\n                            placement=\"bottom auto\"\r\n                            container=\"body\"\r\n                            [autoClose]=\"'outside'\"\r\n                            triggers=\"manual\"\r\n                            #t2=\"ngbTooltip\"\r\n                            (click)=\"bindTheValueToToolTip(t2, header)\"\r\n                        >\r\n                        </span>\r\n                    </ng-container>\r\n\r\n                    <ng-container *ngIf=\"header.filter === 'TIME'\">\r\n                        <span\r\n                            class=\"mdi mdi-filter-variant\"\r\n                            tooltipClass=\"non-edit-time-tooltip\"\r\n                            [ngClass]=\"{\r\n                                active:\r\n                                    annaFilterService.isFilterSortActive &&\r\n                                    annaFilterService.isFilterSortActive[header.filterSortObjectKeys],\r\n                                disabled: header.disableTooltipIcon || loading\r\n                            }\"\r\n                            [ngbTooltip]=\"timeFilterTooltip\"\r\n                            placement=\"bottom auto\"\r\n                            container=\"body\"\r\n                            [autoClose]=\"'outside'\"\r\n                            triggers=\"manual\"\r\n                            #t3=\"ngbTooltip\"\r\n                            (click)=\"bindTheValueToToolTip(t3, header)\"\r\n                        >\r\n                        </span>\r\n                    </ng-container>\r\n                </div>\r\n            </th>\r\n        </thead>\r\n        <tbody *ngIf=\"(!loading && orderHistoryResponse?.length > 0) || loading\">\r\n            <ng-container *ngIf=\"orderHistoryResponse?.length > 0\">\r\n                <ng-container *ngFor=\"let row of historyDataReorderedAndGroupedForTable\">\r\n                    <tr\r\n                        *ngIf=\"!row.hideRow\"\r\n                        [style.background]=\"row.backgroundColor\"\r\n                    >\r\n                        <ng-container *ngFor=\"let column of tableHeaders\">\r\n                            <td class=\"{{ column.name }}-td\">\r\n                                <span>\r\n                                    <span\r\n                                        annaCoreShowEllipsisTextOnHover\r\n                                        [innerHTML]=\"row[column.objectKey]\"\r\n                                        [ngStyle]=\"{\r\n                                            'padding-right':\r\n                                                !row[column.objectKey] || row[column.objectKey] === '' ? 0 : '8px'\r\n                                        }\"\r\n                                    ></span>\r\n                                    <ng-container *ngIf=\"column.name === 'REVISION #' && row.showExpandOrCollapseIcon\">\r\n                                        <i\r\n                                            class=\"mi mdi-arrow-drop-up\"\r\n                                            *ngIf=\"row.isRowExpanded\"\r\n                                            (click)=\"expandOrCollapseRow(row, false)\"\r\n                                            >s</i\r\n                                        >\r\n                                        <i\r\n                                            class=\"mi mdi-arrow-drop-down\"\r\n                                            *ngIf=\"!row.isRowExpanded\"\r\n                                            (click)=\"expandOrCollapseRow(row, true)\"\r\n                                        ></i>\r\n                                    </ng-container>\r\n                                    <button\r\n                                        *ngIf=\"column.name === 'DETAILS' && row.showViewDetails\"\r\n                                        class=\"view-link\"\r\n                                        (click)=\"viewDetailsClicked(row)\"\r\n                                    >\r\n                                        View Details\r\n                                    </button>\r\n                                </span>\r\n                            </td>\r\n                        </ng-container>\r\n                    </tr>\r\n                </ng-container>\r\n            </ng-container>\r\n            <ng-container\r\n                [ngTemplateOutlet]=\"skeletonLoading\"\r\n                *ngIf=\"loading\"\r\n            ></ng-container>\r\n        </tbody>\r\n    </table>\r\n</div>\r\n\r\n<ng-container\r\n    [ngTemplateOutlet]=\"noDataTemplate\"\r\n    *ngIf=\"!loading\"\r\n></ng-container>\r\n\r\n<ng-template #skeletonLoading>\r\n    <tr></tr>\r\n    <tr\r\n        class=\"loading-rows\"\r\n        *ngFor=\"let row of numberOfSkeletonRow\"\r\n    >\r\n        <td *ngFor=\"let column of tableHeaders\">\r\n            <ngx-skeleton-loader\r\n                count=\"1\"\r\n                [theme]=\"{ width: '90%', height: '1em', display: 'block', 'margin-top': '10px' }\"\r\n            >\r\n            </ngx-skeleton-loader>\r\n        </td>\r\n    </tr>\r\n</ng-template>\r\n\r\n<ng-template #noDataTemplate>\r\n    <div\r\n        class=\"no-data-container\"\r\n        *ngIf=\"noData\"\r\n    >\r\n        <anna-core-no-data-lib> </anna-core-no-data-lib>\r\n    </div>\r\n</ng-template>\r\n\r\n<ng-template #checkboxFilterTooltip>\r\n    <anna-core-anna-column-checkbox-filter\r\n        [tableData]=\"historyDataReorderedAndGroupedForTable\"\r\n        [clonedTableData]=\"historyDataReorderedAndGrouped\"\r\n        [filterTabObjects]=\"filterTabObjects\"\r\n        (filterAppliedToTable)=\"filterAppliedToTable($event, true)\"\r\n        (getSortType)=\"sortingAppliedToTable($event, true)\"\r\n        (closeTooltip)=\"closeTooltip()\"\r\n    >\r\n    </anna-core-anna-column-checkbox-filter>\r\n</ng-template>\r\n\r\n<ng-template #dateFilterTooltip>\r\n    <anna-core-anna-column-date-range-filter\r\n        [tableData]=\"historyDataReorderedAndGroupedForTable\"\r\n        [clonedTableData]=\"historyDataReorderedAndGrouped\"\r\n        [filterTabObjects]=\"filterTabObjects\"\r\n        (filterAppliedToTable)=\"filterAppliedToTable($event, true)\"\r\n        (getSortType)=\"sortingAppliedToTable($event, true)\"\r\n        (closeTooltip)=\"closeTooltip()\"\r\n    >\r\n    </anna-core-anna-column-date-range-filter>\r\n</ng-template>\r\n\r\n<ng-template #timeFilterTooltip>\r\n    <anna-core-anna-column-time-filter\r\n        [tableData]=\"historyDataReorderedAndGroupedForTable\"\r\n        [clonedTableData]=\"historyDataReorderedAndGrouped\"\r\n        [filterTabObjects]=\"filterTabObjects\"\r\n        (filterAppliedToTable)=\"filterAppliedToTable($event, true)\"\r\n        (getSortType)=\"sortingAppliedToTable($event, true)\"\r\n        (closeTooltip)=\"closeTooltip()\"\r\n    >\r\n    </anna-core-anna-column-time-filter>\r\n</ng-template>\r\n\r\n<ng-template\r\n    #orderDetailsUpdateModal\r\n    let-modal\r\n>\r\n    <div class=\"modal-header\">\r\n        <i\r\n            class=\"mi mdi-close-icon mdi-font-md close pull-right\"\r\n            (click)=\"closeOrderDetailsUpdateModal()\"\r\n        ></i>\r\n        <h3 class=\"modal-title\">{{ popupHeader }}</h3>\r\n    </div>\r\n    <div class=\"modal-body\">\r\n        <section class=\"d-flex\">\r\n            <div class=\"popup-date\">Date: {{ popupDate }}</div>\r\n            <div class=\"popup-time\">Time: {{ popupTime }}</div>\r\n            <div>User: {{ popupUserName }}</div>\r\n        </section>\r\n\r\n        <div class=\"pop-up-table-container\">\r\n            <table class=\"order-history-table popup-table\">\r\n                <thead>\r\n                    <th *ngFor=\"let header of popupTableHeaders\">\r\n                        {{ header }}\r\n                    </th>\r\n                </thead>\r\n\r\n                <tbody>\r\n                    <ng-container *ngFor=\"let row of popupTableData\">\r\n                        <tr>\r\n                            <ng-container *ngFor=\"let column of popupTableObjectKeys\">\r\n                                <td>\r\n                                    <div>\r\n                                        <span\r\n                                            annaCoreShowEllipsisTextOnHover\r\n                                            [innerHTML]=\"row[column]\"\r\n                                        ></span>\r\n                                    </div>\r\n                                </td>\r\n                            </ng-container>\r\n                        </tr>\r\n                    </ng-container>\r\n                </tbody>\r\n            </table>\r\n        </div>\r\n    </div>\r\n</ng-template>\r\n\r\n<anna-feature-schedule-posting-report-popup\r\n    *ngIf=\"openschedulePostingReportPopup\"\r\n    [orderId]=\"primaryOrderData?.orderId\"\r\n    [stationId]=\"primaryOrderData?.stationId\"\r\n    [popupType]=\"'VIEW'\"\r\n    (closePopup)=\"openschedulePostingReportPopup = false\"\r\n></anna-feature-schedule-posting-report-popup>\r\n","import { InjectionToken } from \"@angular/core\";\r\n\r\nexport const LOGIN_SERVICE_TOKEN: InjectionToken<ILoginService> = new InjectionToken<ILoginService>(\r\n    \"ILoginService token\",\r\n);\r\n\r\nexport interface ILoginService {\r\n    isStationInSandboxMode(value: any, logic: any): boolean;\r\n}\r\n","import { InjectionToken } from \"@angular/core\";\r\nimport { IGtTableHeader } from \"@annalib/anna-core\";\r\nimport { IdTextForDropdown } from \"@annalib/anna-design-components-lib\";\r\nimport { Observable } from \"rxjs\";\r\n\r\nimport { OrderListingEasyFilter, OrderListingTabsName } from \"./order-listing.model\";\r\n\r\n/** Token to inject the acl service */\r\nexport const ORDER_LISTING_SERVICE_TOKEN: InjectionToken<IOrderListingBackendService> =\r\n    new InjectionToken<IOrderListingBackendService>(\"IOrderListingBackendService token\");\r\n\r\ninterface IstarUnstarOrderPayload {\r\n    marked_as_starred: boolean;\r\n    order_id: string;\r\n    station_id: number;\r\n    user_id: number;\r\n    campaign_id: number;\r\n}\r\n\r\nexport interface IOrderListingBackendService {\r\n    loggedInUserId: number | string;\r\n    orderListingCurrentTabName: OrderListingTabsName;\r\n    isSandboxModeFeaturePresent: boolean;\r\n    showOwnershipGroup: boolean;\r\n    selectedOg: IdTextForDropdown;\r\n    showStation: boolean;\r\n    showMultiSelectionForStation: boolean;\r\n    totalRowEmptyColspan: number;\r\n    totalBlankAndDeletedMessageColspan: number;\r\n    totalRowTVRevenueMessageColspan: number;\r\n    // PFPViewOnlyPurpose: boolean;\r\n    isEOSApplication: boolean;\r\n\r\n    getNormalizedDemoForStation(): Observable<{ Id: number; Name: string }[]>;\r\n    getPrimaryFiltersForDashboard(userId: number): Observable<any>;\r\n    getBlankOrders(param: any): Observable<any>;\r\n    getTvRevenueOrders(param: any): Observable<any>;\r\n    getOtherRevenueOrders(param: any): Observable<any>;\r\n\r\n    getOrderListingHeaders(isEquivalizedToggleOn: boolean): IGtTableHeader[];\r\n    getTvRevenueTabEasyFilters(): any;\r\n    getBlankAndDeletedEasyFilters(): any;\r\n    getLatestFilters(): any;\r\n    setLatestFilters(queryParams: any): any;\r\n    getBlankAndDeletedEasyFilters(): OrderListingEasyFilter[];\r\n    getDeletedOrderTextAndIconHeader(): IGtTableHeader;\r\n    starUnstarOrder(payload: IstarUnstarOrderPayload): any;\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { DashboardIntelliFilter } from \"@annalib/anna-design-components-lib\";\r\n\r\n@Injectable({\r\n    providedIn: \"root\",\r\n})\r\nexport class DashboardAndOrderListingService {\r\n    orderCardViewClicked: boolean = false;\r\n    audPerformanceCardViewClicked: boolean = false;\r\n    dashboardSelectedRegions: string[];\r\n    dashboardSelectedUsersName: string[];\r\n    orderListingIntelliFilterToBeSelected: DashboardIntelliFilter;\r\n    dashboardSelectedProductCategories: string[];\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { OrderListingEasyFilterConstants } from \"../models/order-listing.constant\";\r\n\r\n@Injectable({\r\n    providedIn: \"root\",\r\n})\r\nexport class OrderListingHelperService {\r\n    selectedOrderListingTabName: string;\r\n    isEqivalizedToggleOn: boolean = false;\r\n    orderListingFiltersAlreadyApplied: boolean;\r\n    orderClicked: boolean;\r\n    orderCardViewClicked: boolean;\r\n\r\n    // getOrderListingHeaders(isEquivalizedToggleOn: boolean): IGtTableHeader[] {\r\n    //   let gtTableHeaders: IGtTableHeader[] = [\r\n    //     {\r\n    //       headerInfo: [\r\n    //         {\r\n    //           name: \"\",\r\n    //           objectKey: \"isOrderStarred\",\r\n    //           typeOfHeaderData: \"\",\r\n    //           typeOfBodyData: \"ICON\",\r\n    //           showTooltipIcon: false,\r\n    //         },\r\n    //       ],\r\n    //       visible: true,\r\n    //       width: \"30px\",\r\n    //     },\r\n    //     {\r\n    //       headerInfo: [\r\n    //         {\r\n    //           name: \"\",\r\n    //           objectKey: \"payForPerformance\",\r\n    //           typeOfHeaderData: \"\",\r\n    //           typeOfBodyData: \"SVG_ICON\",\r\n    //           showTooltipIcon: false,\r\n    //         },\r\n    //       ],\r\n    //       visible: true,\r\n    //       width: \"30px\",\r\n    //     },\r\n    //     {\r\n    //       headerInfo: [\r\n    //         {\r\n    //           name: \"\",\r\n    //           objectKey: \"bizRuleStatus\",\r\n    //           typeOfHeaderData: \"\",\r\n    //           typeOfBodyData: \"SVG_ICON\",\r\n    //           showTooltipIcon: false,\r\n    //         },\r\n    //       ],\r\n    //       visible: true,\r\n    //       width: \"30px\",\r\n    //     },\r\n    //     {\r\n    //       headerInfo: [\r\n    //         {\r\n    //           name: OrderListingTableHeaderConstants.STATION,\r\n    //           objectKey: \"station\",\r\n    //           typeOfHeaderData: \"STRING\",\r\n    //           typeOfBodyData: \"STRING\",\r\n    //           showTooltipIcon: true,\r\n    //           isSortRequired: [true],\r\n    //           isFilterRequired: [true],\r\n    //           filter: \"CHECKBOX\",\r\n    //           filterSortObjectKeys: [\"station\"],\r\n    //         }\r\n    //       ],\r\n    //       visible: true,\r\n    //       width: \"110px\",\r\n    //     },\r\n    //     {\r\n    //       headerInfo: [\r\n    //         {\r\n    //           name: \"PRIMARY BUYER\",\r\n    //           objectKey: \"primaryBuyer\",\r\n    //           typeOfHeaderData: \"STRING\",\r\n    //           typeOfBodyData: \"STRING\",\r\n    //           showTooltipIcon: true,\r\n    //           isSortRequired: [true, true],\r\n    //           isFilterRequired: [true, true],\r\n    //           filter: \"CHECKBOX\",\r\n    //           filterSortObjectKeys: [\"primaryBuyer\", \"secondaryBuyer\"],\r\n    //         },\r\n    //         {\r\n    //           name: \"SECONDARY BUYER\",\r\n    //           objectKey: \"secondaryBuyer\",\r\n    //           typeOfHeaderData: \"STRING\",\r\n    //           typeOfBodyData: \"STRING\",\r\n    //           showTooltipIcon: false,\r\n    //           filter: \"CHECKBOX\",\r\n    //         },\r\n    //       ],\r\n    //       visible: true,\r\n    //       width: \"136.4096px\",\r\n    //     },\r\n    //     {\r\n    //       headerInfo: [\r\n    //         {\r\n    //           name: OrderListingTableHeaderConstants.STN_ORDERNO_REV_NO,\r\n    //           objectKey: \"orderNoRevNo\",\r\n    //           typeOfHeaderData: \"STRING\",\r\n    //           typeOfBodyData: \"STRING\",\r\n    //           showTooltipIcon: true,\r\n    //           isSortRequired: [true, true],\r\n    //           isFilterRequired: [true, true],\r\n    //           filter: \"CHECKBOX\",\r\n    //           filterSortObjectKeys: [\"orderNoRevNo\", \"buyerOrderId\"],\r\n    //         },\r\n    //         {\r\n    //           name: OrderListingTableHeaderConstants.ALT_ORDER,\r\n    //           objectKey: \"buyerOrderId\",\r\n    //           typeOfHeaderData: \"STRING\",\r\n    //           typeOfBodyData: \"STRING\",\r\n    //           showTooltipIcon: false,\r\n    //           filter: \"CHECKBOX\",\r\n    //         },\r\n    //       ],\r\n    //       visible: true,\r\n    //       width: this.selectedOrderListingTabName != OrdersConstant.TvRevenue ? \"150.0496px\" : \"136.4096px\",\r\n    //     },\r\n    //     {\r\n    //       headerInfo: [\r\n    //         {\r\n    //           name: OrderListingTableHeaderConstants.PrimaryAE,\r\n    //           objectKey: \"primaryAe\",\r\n    //           typeOfHeaderData: \"STRING\",\r\n    //           typeOfBodyData: \"STRING\",\r\n    //           showTooltipIcon: true,\r\n    //           isSortRequired: [true, true],\r\n    //           isFilterRequired: [true, true],\r\n    //           filter: \"CHECKBOX\",\r\n    //           filterSortObjectKeys: [\"primaryAe\", \"region\"],\r\n    //         },\r\n    //         {\r\n    //           name: OrderListingTableHeaderConstants.Region,\r\n    //           objectKey: \"region\",\r\n    //           typeOfHeaderData: \"STRING\",\r\n    //           typeOfBodyData: \"STRING\",\r\n    //           showTooltipIcon: false,\r\n    //           filter: \"CHECKBOX\",\r\n    //         },\r\n    //       ],\r\n    //       visible: true,\r\n    //       width: \"136.4096px\",\r\n    //     },\r\n    //     {\r\n    //       headerInfo: [\r\n    //         {\r\n    //           name: OrderListingTableHeaderConstants.Agency,\r\n    //           objectKey: \"agency\",\r\n    //           typeOfHeaderData: \"STRING\",\r\n    //           typeOfBodyData: \"STRING\",\r\n    //           showTooltipIcon: true,\r\n    //           isSortRequired: [true, true],\r\n    //           isFilterRequired: [true, true],\r\n    //           filter: \"CHECKBOX\",\r\n    //           filterSortObjectKeys: [\"agency\", \"location\"],\r\n    //         },\r\n    //         {\r\n    //           name: OrderListingTableHeaderConstants.Location,\r\n    //           objectKey: \"location\",\r\n    //           typeOfHeaderData: \"STRING\",\r\n    //           typeOfBodyData: \"STRING\",\r\n    //           showTooltipIcon: false,\r\n    //           filter: \"CHECKBOX\",\r\n    //         },\r\n    //       ],\r\n    //       visible: true,\r\n    //       width: \"136.4096px\",\r\n    //     },\r\n    //     {\r\n    //       headerInfo: [\r\n    //         {\r\n    //           name: OrderListingTableHeaderConstants.Advertiser,\r\n    //           objectKey: \"advertiser\",\r\n    //           typeOfHeaderData: \"STRING\",\r\n    //           typeOfBodyData: \"STRING\",\r\n    //           showTooltipIcon: true,\r\n    //           isSortRequired: [true, true],\r\n    //           isFilterRequired: [true, true],\r\n    //           filter: \"CHECKBOX\",\r\n    //           filterSortObjectKeys: [\"advertiser\", \"productCode\"],\r\n    //         },\r\n    //       ],\r\n    //       visible: true,\r\n    //       width: \"143.2192px\",\r\n    //     },\r\n    //     {\r\n    //       headerInfo: [\r\n    //         {\r\n    //           name: OrderListingTableHeaderConstants.StartDate,\r\n    //           objectKey: \"startDate\",\r\n    //           typeOfHeaderData: \"STRING\",\r\n    //           typeOfBodyData: \"STRING\",\r\n    //           showTooltipIcon: true,\r\n    //           isSortRequired: [true, true],\r\n    //           isFilterRequired: [true, true],\r\n    //           filter: \"DATE\",\r\n    //           filterSortObjectKeys: [\"startDate\", \"endDate\"],\r\n    //         },\r\n    //         {\r\n    //           name: OrderListingTableHeaderConstants.EndDate,\r\n    //           objectKey: \"endDate\",\r\n    //           typeOfHeaderData: \"STRING\",\r\n    //           typeOfBodyData: \"STRING\",\r\n    //           showTooltipIcon: false,\r\n    //           filter: \"CHECKBOX\",\r\n    //         },\r\n    //       ],\r\n    //       visible: true,\r\n    //       width: \"129.5808px\",\r\n    //     },\r\n    //     {\r\n    //       headerInfo: [\r\n    //         {\r\n    //           name: OrderListingTableHeaderConstants.CASH_TRADE,\r\n    //           objectKey: \"cashOrTrade\",\r\n    //           typeOfHeaderData: \"STRING\",\r\n    //           typeOfBodyData: \"STRING\",\r\n    //           showTooltipIcon: true,\r\n    //           isSortRequired: [true, true],\r\n    //           isFilterRequired: [true, true],\r\n    //           filter: \"CHECKBOX\",\r\n    //           filterSortObjectKeys: [\"cashOrTrade\", \"orderSource\"],\r\n    //         },\r\n    //         {\r\n    //           name: OrderListingTableHeaderConstants.ORDER_SOURCE,\r\n    //           objectKey: \"orderSource\",\r\n    //           typeOfHeaderData: \"STRING\",\r\n    //           typeOfBodyData: \"STRING\",\r\n    //           showTooltipIcon: false,\r\n    //           filter: \"CHECKBOX\",\r\n    //         },\r\n    //       ],\r\n    //       visible: true,\r\n    //       width: \"122.7696px\",\r\n    //     },\r\n    //     {\r\n    //       headerInfo: [\r\n    //         {\r\n    //           name: OrderListingTableHeaderConstants.ESTIMATE,\r\n    //           objectKey: \"estimateNo\",\r\n    //           typeOfHeaderData: \"STRING\",\r\n    //           typeOfBodyData: \"STRING\",\r\n    //           showTooltipIcon: true,\r\n    //           isSortRequired: [true, true],\r\n    //           isFilterRequired: [true, true],\r\n    //           filter: \"CHECKBOX\",\r\n    //           filterSortObjectKeys: [\"estimateNo\"],\r\n    //         }\r\n    //       ],\r\n    //       visible: true,\r\n    //       width: \"110\",\r\n    //     },\r\n    //     {\r\n    //       headerInfo: [\r\n    //         {\r\n    //           name: OrderListingTableHeaderConstants.DEMO,\r\n    //           objectKey: \"demo\",\r\n    //           typeOfHeaderData: \"STRING\",\r\n    //           typeOfBodyData: \"STRING\",\r\n    //           showTooltipIcon: true,\r\n    //           isSortRequired: [true, true],\r\n    //           isFilterRequired: [true, true],\r\n    //           filter: \"CHECKBOX\",\r\n    //           filterSortObjectKeys: [\"demo\"],\r\n    //         }\r\n    //       ],\r\n    //       visible: true,\r\n    //       width: \"122.7696px\",\r\n    //     },\r\n    //     {\r\n    //       headerInfo: [\r\n    //         {\r\n    //           name: OrderListingTableHeaderConstants.BOOKED,\r\n    //           objectKey: \"displayBooked\",\r\n    //           typeOfHeaderData: \"STRING\",\r\n    //           typeOfBodyData: \"STRING\",\r\n    //           showTooltipIcon: true,\r\n    //           isSortRequired: [true, true],\r\n    //           isFilterRequired: [true, true],\r\n    //           filter: \"SLIDER\",\r\n    //           filterSortObjectKeys: [\"booked\", \"spots\"],\r\n    //         },\r\n    //         {\r\n    //           name: OrderListingTableHeaderConstants.BookedSpots,\r\n    //           objectKey: \"displaySpots\",\r\n    //           typeOfHeaderData: \"STRING\",\r\n    //           typeOfBodyData: \"STRING\",\r\n    //           tooltip: isEquivalizedToggleOn\r\n    //             ? {\r\n    //               iconPosition: \"left\",\r\n    //               iconClass: \"mi mdi-info-outline spots-info-icon-ol\",\r\n    //               name: \"spotsColumnEquivalizationMessageTooltip\",\r\n    //               tooltipPosition: \"bottom\",\r\n    //               tooltipClass: \"spot-info-tooltip-for-orderlisting-table\",\r\n    //             }\r\n    //             : null,\r\n    //           showTooltipIcon: false,\r\n    //           filter: \"SLIDER\",\r\n    //         },\r\n    //       ],\r\n    //       visible: true,\r\n    //       width: \"102.2992px\",\r\n    //     },\r\n    //     {\r\n    //       headerInfo: [\r\n    //         {\r\n    //           name: OrderListingTableHeaderConstants.GRP,\r\n    //           objectKey: \"displayGrp\",\r\n    //           typeOfHeaderData: \"STRING\",\r\n    //           typeOfBodyData: \"STRING\",\r\n    //           showTooltipIcon: true,\r\n    //           isSortRequired: [true, true],\r\n    //           isFilterRequired: [true, true],\r\n    //           filter: \"SLIDER\",\r\n    //           filterSortObjectKeys: [\"grp\", \"cpp\"],\r\n    //         },\r\n    //         {\r\n    //           name: OrderListingTableHeaderConstants.CPP,\r\n    //           objectKey: \"displaycpp\",\r\n    //           typeOfHeaderData: \"STRING\",\r\n    //           typeOfBodyData: \"STRING\",\r\n    //           showTooltipIcon: false,\r\n    //           filter: \"SLIDER\",\r\n    //         },\r\n    //       ],\r\n    //       visible: true,\r\n    //       width: \"75.0192px\",\r\n    //     },\r\n    //     {\r\n    //       headerInfo: [\r\n    //         {\r\n    //           name: OrderListingTableHeaderConstants.IMPS,\r\n    //           objectKey: \"displayimps\",\r\n    //           typeOfHeaderData: \"STRING\",\r\n    //           typeOfBodyData: \"STRING\",\r\n    //           showTooltipIcon: true,\r\n    //           isSortRequired: [true, true],\r\n    //           isFilterRequired: [true, true],\r\n    //           filter: \"SLIDER\",\r\n    //           filterSortObjectKeys: [\"imps\", \"cpm\"],\r\n    //         },\r\n    //         {\r\n    //           name: OrderListingTableHeaderConstants.CPM,\r\n    //           objectKey: \"displaycpm\",\r\n    //           typeOfHeaderData: \"STRING\",\r\n    //           typeOfBodyData: \"STRING\",\r\n    //           showTooltipIcon: false,\r\n    //           filter: \"SLIDER\",\r\n    //         },\r\n    //       ],\r\n    //       visible: true,\r\n    //       width: \"81.84px\",\r\n    //     },\r\n    //     {\r\n    //       headerInfo: [\r\n    //         {\r\n    //           name: OrderListingTableHeaderConstants.MADEGOOD_PE,\r\n    //           objectKey: \"displayMadegoodPe\",\r\n    //           typeOfHeaderData: \"STRING\",\r\n    //           typeOfBodyData: \"STRING\",\r\n    //           showTooltipIcon: true,\r\n    //           isSortRequired: [true, true],\r\n    //           isFilterRequired: [true, true],\r\n    //           filter: \"SLIDER\",\r\n    //           filterSortObjectKeys: [\"rcvPreempt\", \"osPreempt\"],\r\n    //         },\r\n    //         {\r\n    //           name: OrderListingTableHeaderConstants.OUTSTANDING_PE,\r\n    //           objectKey: \"displayOsPe\",\r\n    //           typeOfHeaderData: \"STRING\",\r\n    //           typeOfBodyData: \"STRING\",\r\n    //           filter: \"SLIDER\",\r\n    //           showTooltipIcon: false,\r\n    //         },\r\n    //       ],\r\n    //       visible: true,\r\n    //       width: \"136.4096px\",\r\n    //     },\r\n    //     {\r\n    //       headerInfo: [\r\n    //         {\r\n    //           name: OrderListingTableHeaderConstants.POSTED_ADUs,\r\n    //           objectKey: \"displayPostedADUs\",\r\n    //           typeOfHeaderData: \"STRING\",\r\n    //           showTooltipIcon: true,\r\n    //           isSortRequired: [true, true],\r\n    //           isFilterRequired: [true, true],\r\n    //           typeOfBodyData: \"STRING\",\r\n    //           filter: \"SLIDER\",\r\n    //           filterSortObjectKeys: [\"postedAdu\", \"scheduledAdu\"],\r\n    //         },\r\n    //         {\r\n    //           name: OrderListingTableHeaderConstants.SCHEDULED_ADUs,\r\n    //           objectKey: \"displayScheduledADUs\",\r\n    //           typeOfHeaderData: \"STRING\",\r\n    //           typeOfBodyData: \"STRING\",\r\n    //           showTooltipIcon: false,\r\n    //           filter: \"SLIDER\",\r\n    //         },\r\n    //       ],\r\n    //       visible: true,\r\n    //       width: \"136.4096px\",\r\n    //     },\r\n    //     {\r\n    //       headerInfo: [\r\n    //         {\r\n    //           name: OrderListingTableHeaderConstants.UD_IMPS,\r\n    //           objectKey: \"underDeliveryImpsDisplay\",\r\n    //           typeOfHeaderData: \"STRING\",\r\n    //           typeOfBodyData: \"STRING\",\r\n    //           showTooltipIcon: true,\r\n    //           isSortRequired: [true, true],\r\n    //           isFilterRequired: [true, true],\r\n    //           filter: \"SLIDER\",\r\n    //           filterSortObjectKeys: [\"UDImps\", \"udImpsPercent\"],\r\n    //         },\r\n    //         {\r\n    //           name: OrderListingTableHeaderConstants.UD_IMPS_PERCENT,\r\n    //           objectKey: \"underDeliveryPercentDisplay\",\r\n    //           typeOfHeaderData: \"STRING\",\r\n    //           typeOfBodyData: \"STRING\",\r\n    //           showTooltipIcon: false,\r\n    //           filter: \"SLIDER\",\r\n    //         },\r\n    //       ],\r\n    //       visible: true,\r\n    //       width: \"81.84px\",\r\n    //     },\r\n    //     {\r\n    //       headerInfo: [\r\n    //         {\r\n    //           name: OrderListingTableHeaderConstants.OD_IMPS,\r\n    //           objectKey: \"overDeliveryImpsDisplay\",\r\n    //           typeOfHeaderData: \"STRING\",\r\n    //           showTooltipIcon: true,\r\n    //           isSortRequired: [true, true],\r\n    //           isFilterRequired: [true, true],\r\n    //           typeOfBodyData: \"STRING\",\r\n    //           filter: \"SLIDER\",\r\n    //           filterSortObjectKeys: [\"ODImps\", \"odImpsPercent\"],\r\n    //         },\r\n    //         {\r\n    //           name: OrderListingTableHeaderConstants.OD_IMPS_PERCENT,\r\n    //           objectKey: \"overDeliveryPercentDisplay\",\r\n    //           typeOfHeaderData: \"STRING\",\r\n    //           typeOfBodyData: \"STRING\",\r\n    //           showTooltipIcon: false,\r\n    //           filter: \"SLIDER\",\r\n    //         },\r\n    //       ],\r\n    //       visible: true,\r\n    //       width: \"81.84px\",\r\n    //     },\r\n    //     {\r\n    //       headerInfo: [\r\n    //         {\r\n    //           name: OrderListingTableHeaderConstants.UD_GRP,\r\n    //           objectKey: \"underDeliveryGrpDisplay\",\r\n    //           typeOfHeaderData: \"STRING\",\r\n    //           showTooltipIcon: true,\r\n    //           isSortRequired: [true, true],\r\n    //           isFilterRequired: [true, true],\r\n    //           typeOfBodyData: \"STRING\",\r\n    //           filter: \"SLIDER\",\r\n    //           filterSortObjectKeys: [\"UDGrp\", \"udGrpPercent\"],\r\n    //         },\r\n    //         {\r\n    //           name: OrderListingTableHeaderConstants.UD_GRP_PERCENT,\r\n    //           objectKey: \"underDeliveryPercentDisplay\",\r\n    //           typeOfHeaderData: \"STRING\",\r\n    //           typeOfBodyData: \"STRING\",\r\n    //           showTooltipIcon: false,\r\n    //           filter: \"SLIDER\",\r\n    //         },\r\n    //       ],\r\n    //       visible: true,\r\n    //       width: \"81.84px\",\r\n    //     },\r\n    //     {\r\n    //       headerInfo: [\r\n    //         {\r\n    //           name: OrderListingTableHeaderConstants.OD_GRP,\r\n    //           objectKey: \"overDeliveryGrpDisplay\",\r\n    //           typeOfHeaderData: \"STRING\",\r\n    //           showTooltipIcon: true,\r\n    //           isSortRequired: [true, true],\r\n    //           isFilterRequired: [true, true],\r\n    //           typeOfBodyData: \"STRING\",\r\n    //           filter: \"SLIDER\",\r\n    //           filterSortObjectKeys: [\"ODGrp\", \"odGrpPercent\"],\r\n    //         },\r\n    //         {\r\n    //           name: OrderListingTableHeaderConstants.OD_GRP_PERCENT,\r\n    //           objectKey: \"overDeliveryPercentDisplay\",\r\n    //           typeOfHeaderData: \"STRING\",\r\n    //           typeOfBodyData: \"STRING\",\r\n    //           showTooltipIcon: false,\r\n    //           filter: \"SLIDER\",\r\n    //         },\r\n    //       ],\r\n    //       visible: true,\r\n    //       width: \"81.84px\",\r\n    //     }\r\n    //   ];\r\n    //   return gtTableHeaders;\r\n    // }\r\n\r\n    getTvRevenueTabEasyFilters() {\r\n        return [\r\n            {\r\n                label: OrderListingEasyFilterConstants.ORDER_FLIGHT_STATUS,\r\n                filters: [\r\n                    {\r\n                        text: OrderListingEasyFilterConstants.IN_FLIGHT,\r\n                        isActive: false,\r\n                        isDisabled: false,\r\n                        iconRequired: false,\r\n                    },\r\n                    {\r\n                        text: OrderListingEasyFilterConstants.UPCOMING,\r\n                        isActive: false,\r\n                        isDisabled: false,\r\n                        iconRequired: false,\r\n                    },\r\n                    {\r\n                        text: OrderListingEasyFilterConstants.COMPLETED,\r\n                        isActive: false,\r\n                        isDisabled: false,\r\n                        iconRequired: false,\r\n                    },\r\n                ],\r\n            },\r\n            {\r\n                label: OrderListingEasyFilterConstants.BUSINESS_RULES_STATUS,\r\n                filters: [\r\n                    {\r\n                        text: OrderListingEasyFilterConstants.NOTIFY,\r\n                        isActive: false,\r\n                        isDisabled: false,\r\n                        iconRequired: true,\r\n                        isSvgIcon: true,\r\n                    },\r\n                    {\r\n                        text: OrderListingEasyFilterConstants.AWAITING_BUYER_APPROVAL,\r\n                        isActive: false,\r\n                        isDisabled: false,\r\n                        iconRequired: true,\r\n                        isSvgIcon: true,\r\n                    },\r\n                    {\r\n                        text: OrderListingEasyFilterConstants.AWAITING_SELLER_CONFIRMATION,\r\n                        isActive: false,\r\n                        isDisabled: false,\r\n                        iconRequired: true,\r\n                        isSvgIcon: true,\r\n                    },\r\n                ],\r\n            },\r\n            // {\r\n            //   label: \"\",\r\n            //   class: \"add-padding-top\",\r\n            //   filters: [\r\n            //     {\r\n            //       text: OrderListingEasyFilterConstants.STARRED,\r\n            //       isActive: false,\r\n            //       isDisabled: false,\r\n            //       iconRequired: true,\r\n            //       isSvgIcon: false,\r\n            //       iconClass: \"mdi mdi-star\",\r\n            //     },\r\n            //   ],\r\n            // },\r\n            {\r\n                label: \"\",\r\n                class: \"add-padding-top\",\r\n                filters: [\r\n                    {\r\n                        text: OrderListingEasyFilterConstants.POD,\r\n                        isActive: false,\r\n                        isDisabled: false,\r\n                        iconRequired: true,\r\n                        isSvgIcon: true,\r\n                    },\r\n                    {\r\n                        text: OrderListingEasyFilterConstants.P4S,\r\n                        isActive: false,\r\n                        isDisabled: false,\r\n                        iconRequired: false,\r\n                    },\r\n                ],\r\n            },\r\n            {\r\n                label: \" \",\r\n                class: \"add-padding-top\",\r\n                filters: [\r\n                    {\r\n                        text: OrderListingEasyFilterConstants.WRITE_ENABLED,\r\n                        isActive: false,\r\n                        isDisabled: false,\r\n                        iconRequired: false,\r\n                    },\r\n                ],\r\n            },\r\n        ];\r\n    }\r\n}\r\n","import { CurrencyPipe, DecimalPipe, NgClass, NgIf } from \"@angular/common\";\r\nimport {\r\n    ChangeDetectorRef,\r\n    Component,\r\n    EventEmitter,\r\n    Inject,\r\n    Input,\r\n    OnDestroy,\r\n    OnInit,\r\n    Output,\r\n    ViewChild,\r\n} from \"@angular/core\";\r\nimport { ActivatedRoute, Params, Router } from \"@angular/router\";\r\nimport {\r\n    AnnaCoreModule,\r\n    AnnaFilterService,\r\n    AnnaGlobalConfigService,\r\n    AnnaGtHelperService,\r\n    AnnaNonEditableGenericTableComponent,\r\n    AnnaPersistingFilterService,\r\n    AnnaSortService,\r\n    IconData,\r\n    IGtGeneralConfig,\r\n    IGtTableHeader,\r\n    ITotalRowInfo,\r\n} from \"@annalib/anna-core\";\r\nimport {\r\n    AnnaDesignComponentsLibModule,\r\n    BreadcrumbsService,\r\n    DashboardFilterSelectionPopUp,\r\n    EasyFilters,\r\n    EasyFiltersComponent,\r\n    EquivalisationOfDataService,\r\n    GenericMessageBoxTheme,\r\n    IBreadcrumb,\r\n    MessageBoxData,\r\n    PersistedDashboardPrimaryFilters,\r\n    PrimaryFiltersData,\r\n    SidebarItemEmittedObj,\r\n    SidebarMenuService,\r\n} from \"@annalib/anna-design-components-lib\";\r\nimport { OrderListingConstants } from \"@annalib/anna-feature-shared-lib\";\r\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport dayjs from \"dayjs\";\r\nimport { cloneDeep, isEqual, sortBy, uniq } from \"lodash-es\";\r\nimport { NgxSkeletonLoaderModule } from \"ngx-skeleton-loader\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\nimport { Subject } from \"rxjs\";\r\nimport { filter, takeUntil } from \"rxjs/operators\";\r\n\r\nimport { ILoginService, LOGIN_SERVICE_TOKEN } from \"../login/login-token.service\";\r\nimport { IOrderListingBackendService, ORDER_LISTING_SERVICE_TOKEN } from \"./models/order-listing-backend-token.service\";\r\nimport {\r\n    OrderListingEasyFilterConstants,\r\n    OrderListingTableHeaderConstants,\r\n    OrdersConstant,\r\n} from \"./models/order-listing.constant\";\r\nimport {\r\n    Filter,\r\n    OrderDetails,\r\n    OrderDetailsGroupedByRevisionStatus,\r\n    OrderListingTotalRow,\r\n} from \"./models/order-listing.model\";\r\nimport { DashboardAndOrderListingService } from \"./services/dashboard-and-order-listing.service\";\r\nimport { OrderListingHelperService } from \"./services/order-listing-helper.service\";\r\n\r\n@Component({\r\n    selector: \"anna-feature-lib-order-listing\",\r\n    templateUrl: \"./order-listing.component.html\",\r\n    styleUrls: [\"./order-listing.component.scss\"],\r\n    imports: [NgIf, AnnaDesignComponentsLibModule, NgClass, AnnaCoreModule, NgxSkeletonLoaderModule],\r\n    providers: [DecimalPipe],\r\n})\r\nexport class OrderListingComponent implements OnInit, OnDestroy {\r\n    @Input() showNoDataToDisplayInsideTable: boolean = true;\r\n    @Input() stationIdsWithValidLicense: number[] = [];\r\n    @Output() onorderRowClicked = new EventEmitter<{\r\n        order: OrderDetails;\r\n        selectedFilter: DashboardFilterSelectionPopUp;\r\n        breadcrumbsToPersist: IBreadcrumb[];\r\n    }>();\r\n\r\n    showTableSkeletonLoader: boolean = true;\r\n    orders: OrderDetails[] = [];\r\n    totalRowInfo: ITotalRowInfo[];\r\n\r\n    disableToggleButton: boolean = false;\r\n    defaultEquivalisedData = false;\r\n    isEquivalized: boolean = false;\r\n    showNoDataToDisplay: boolean = false;\r\n\r\n    // allAEValuesExist: boolean = true;\r\n    // allProductCategoryValuesExist: boolean = true;\r\n    initializeComponent: boolean = true;\r\n    isEquivilizationChanged: boolean = false;\r\n\r\n    constants = OrdersConstant;\r\n    orderListingConstants = OrderListingConstants;\r\n\r\n    tableHeaders: IGtTableHeader[];\r\n    gtDimension = {\r\n        rowHeight: 40,\r\n        headerHeight: 40,\r\n        dataOnTopHeight: 234,\r\n        marginFromBottom: 26,\r\n        tableHeight: \"calc(100vh - 260px)\",\r\n    };\r\n    gtGeneralConfig: IGtGeneralConfig;\r\n\r\n    easyFilters: EasyFilters[];\r\n    selectedEasyFilter: Filter;\r\n    orderListingEasyFilterConstants = OrderListingEasyFilterConstants;\r\n\r\n    filterData: PrimaryFiltersData;\r\n    filterApiError: boolean = false;\r\n    persistingFilterForPopup: PersistedDashboardPrimaryFilters = null;\r\n    selectedFilters: DashboardFilterSelectionPopUp = null;\r\n    breadcrumbsToPersist: IBreadcrumb[];\r\n\r\n    disableClearAllBtn: boolean = true;\r\n\r\n    initialStationAndPeriodFilter: PersistedDashboardPrimaryFilters;\r\n\r\n    protected ngUnsubscribe: Subject<void> = new Subject<void>();\r\n    applyFiltersFromTheUrl: boolean;\r\n    filtersFromRoute: any;\r\n    clonedOrders: OrderDetails[];\r\n    performActionOnQueryParamChange: boolean = true;\r\n    subscriptionForSidebarClick: any;\r\n    messageBoxData: MessageBoxData;\r\n    numberOfEasyFilterLoader: number = 4;\r\n    PeriodOptions: string[] = [\"Quarter\", \"Month\"];\r\n    starredOrderLoading: boolean = false;\r\n    filterToBeUpdatedManually: string = null;\r\n\r\n    @ViewChild(AnnaNonEditableGenericTableComponent) nonEditableGTComponent: AnnaNonEditableGenericTableComponent;\r\n    @ViewChild(\"easyFilterComponent\") easyFilterComponent: EasyFiltersComponent;\r\n\r\n    constructor(\r\n        private router: Router,\r\n        private route: ActivatedRoute,\r\n        private currencyPipe: CurrencyPipe,\r\n        private decimalPipe: DecimalPipe,\r\n        private cdRef: ChangeDetectorRef,\r\n        private toastr: ToastrService,\r\n        public modalService: NgbModal,\r\n        private annaSortService: AnnaSortService,\r\n        private annaGtService: AnnaGtHelperService,\r\n        private annaFilterService: AnnaFilterService,\r\n        private annaGlobalConfig: AnnaGlobalConfigService,\r\n        private breadcrumbService: BreadcrumbsService,\r\n        private persistingFilterService: AnnaPersistingFilterService,\r\n        private equivalisationOfDataService: EquivalisationOfDataService,\r\n        private sidebarMenuService: SidebarMenuService,\r\n        private dashboardAndOrderListingService: DashboardAndOrderListingService,\r\n        private orderListingHelperService: OrderListingHelperService,\r\n        @Inject(ORDER_LISTING_SERVICE_TOKEN) public consumingProjectOrderService: IOrderListingBackendService,\r\n        @Inject(LOGIN_SERVICE_TOKEN) public consumingProjectLoginService: ILoginService,\r\n    ) {}\r\n\r\n    ngOnInit() {\r\n        this.initVariables();\r\n        this.setCurrentTabBasedOnUrl();\r\n        this.setMessageForNoOrders();\r\n        this.setTableHeight();\r\n        this.tableHeaders = this.getTableHeadersForCurrentTab();\r\n        this.easyFilters = this.getEasyFiltersForCurrentTab();\r\n        this.detectUrlChanges();\r\n        this.fetchFiltersAndOrdersData();\r\n        this.setGtGeneralConfig();\r\n        this.sidebarMenuClicked();\r\n        this.initializeComponent = false;\r\n    }\r\n\r\n    setMessageForNoOrders() {\r\n        const msg =\r\n            this.consumingProjectOrderService.orderListingCurrentTabName === OrderListingConstants.Deleted\r\n                ? \"Your orders will appear here if they were deleted on traffic and you had access to them earlier.\"\r\n                : \"Your orders will appear here once the station Account Executive sends you the advertiser business rules for approval.\";\r\n        this.messageBoxData = new MessageBoxData(\r\n            \"\",\r\n            msg,\r\n            \"mdi mdi-information\",\r\n            `${GenericMessageBoxTheme.informationBlue.messageBoxClass} sm`,\r\n        );\r\n    }\r\n\r\n    initVariables() {\r\n        this.applyFiltersFromTheUrl = false;\r\n        this.breadcrumbService.isOrderListingPageOpened = true;\r\n    }\r\n\r\n    sidebarMenuClicked() {\r\n        // When user clicks on the Orders from sidebar\r\n        this.subscriptionForSidebarClick = this.sidebarMenuService.appSidebarClicked$\r\n            .pipe(filter((item: SidebarItemEmittedObj) => item.isClicked && item.itemClicked.name === \"Orders\"))\r\n            .subscribe((val: any) => {\r\n                this.resetFiltersAndSetBreadcrumbs();\r\n            });\r\n    }\r\n\r\n    getTableHeadersForCurrentTab() {\r\n        const allHeaders = this.consumingProjectOrderService.getOrderListingHeaders(this.isEquivalized);\r\n\r\n        if (\r\n            this.consumingProjectOrderService.orderListingCurrentTabName === OrderListingConstants.TvRevenue ||\r\n            this.consumingProjectOrderService.orderListingCurrentTabName === OrderListingConstants.TV\r\n        ) {\r\n            if (this.consumingProjectOrderService.orderListingCurrentTabName === OrderListingConstants.TV) {\r\n                return allHeaders.filter(\r\n                    (header: IGtTableHeader) =>\r\n                        header.headerInfo[0].name !== OrderListingTableHeaderConstants.AUDIENCE_POSTING,\r\n                );\r\n            }\r\n            return allHeaders;\r\n        } else if (\r\n            this.consumingProjectOrderService.orderListingCurrentTabName === OrderListingConstants.OtherRevenue\r\n        ) {\r\n            return allHeaders.filter(\r\n                (header: IGtTableHeader) =>\r\n                    header.headerInfo[0].name !== OrderListingTableHeaderConstants.REVISION_TYPE &&\r\n                    header.headerInfo[0].name !== OrderListingTableHeaderConstants.MADEGOOD_PE &&\r\n                    header.headerInfo[0].name !== OrderListingTableHeaderConstants.POSTED_ADUs &&\r\n                    header.headerInfo[0].name !== OrderListingTableHeaderConstants.UD_IMPS &&\r\n                    header.headerInfo[0].name !== OrderListingTableHeaderConstants.UD_GRP &&\r\n                    header.headerInfo[0].name !== OrderListingTableHeaderConstants.UD_PERCENT &&\r\n                    header.headerInfo[0].name !== OrderListingTableHeaderConstants.UD_VALUE &&\r\n                    header.headerInfo[0].name !== OrderListingTableHeaderConstants.ORDER_TYPE &&\r\n                    header.headerInfo[0].name !== OrderListingTableHeaderConstants.AUDIENCE_POSTING,\r\n            );\r\n        } else if (\r\n            this.consumingProjectOrderService.orderListingCurrentTabName === OrderListingConstants.BlankAndDeleted ||\r\n            this.consumingProjectOrderService.orderListingCurrentTabName === OrderListingConstants.Deleted\r\n        ) {\r\n            const headers = allHeaders.filter(\r\n                (header) =>\r\n                    header.headerInfo[0].name !== OrderListingTableHeaderConstants.REVISION_TYPE &&\r\n                    header.headerInfo[0].name !== OrderListingTableHeaderConstants.MADEGOOD_PE &&\r\n                    header.headerInfo[0].name !== OrderListingTableHeaderConstants.POSTED_ADUs &&\r\n                    header.headerInfo[0].name !== OrderListingTableHeaderConstants.UD_IMPS &&\r\n                    header.headerInfo[0].name !== OrderListingTableHeaderConstants.ORDER_TYPE &&\r\n                    header.headerInfo[0].name !== OrderListingTableHeaderConstants.UD_GRP &&\r\n                    header.headerInfo[0].name !== OrderListingTableHeaderConstants.UD_PERCENT &&\r\n                    header.headerInfo[0].name !== OrderListingTableHeaderConstants.UD_VALUE &&\r\n                    header.headerInfo[0].name !== OrderListingTableHeaderConstants.AUDIENCE_POSTING,\r\n            );\r\n            const deletedOrderText = this.consumingProjectOrderService.getDeletedOrderTextAndIconHeader();\r\n            if (deletedOrderText) {\r\n                const stationOrderColIndex = headers.findIndex(\r\n                    (header) => header.headerInfo[0].name === OrderListingTableHeaderConstants.STN_ORDERNO_REV_NO,\r\n                );\r\n\r\n                if (stationOrderColIndex > -1)\r\n                    headers.splice(\r\n                        stationOrderColIndex,\r\n                        1,\r\n                        this.consumingProjectOrderService.getDeletedOrderTextAndIconHeader(),\r\n                    );\r\n            }\r\n            return headers;\r\n        }\r\n        return null;\r\n    }\r\n\r\n    getEasyFiltersForCurrentTab() {\r\n        const allEasyFilters = this.consumingProjectOrderService.getTvRevenueTabEasyFilters();\r\n        const orderFlightStatusIndex = 0;\r\n        const starredOrderIndex = 1;\r\n        const annOrderEntryIndex = 4;\r\n\r\n        if (\r\n            this.consumingProjectOrderService.orderListingCurrentTabName === OrderListingConstants.TvRevenue ||\r\n            this.consumingProjectOrderService.orderListingCurrentTabName === OrderListingConstants.TV\r\n        ) {\r\n            return allEasyFilters;\r\n        } else if (\r\n            this.consumingProjectOrderService.orderListingCurrentTabName === OrderListingConstants.OtherRevenue\r\n        ) {\r\n            return [\r\n                allEasyFilters[orderFlightStatusIndex],\r\n                allEasyFilters[starredOrderIndex],\r\n                allEasyFilters[annOrderEntryIndex],\r\n            ];\r\n        } else if (\r\n            this.consumingProjectOrderService.orderListingCurrentTabName === OrderListingConstants.BlankAndDeleted ||\r\n            this.consumingProjectOrderService.orderListingCurrentTabName === OrderListingConstants.Deleted\r\n        ) {\r\n            return this.consumingProjectOrderService.getBlankAndDeletedEasyFilters();\r\n        }\r\n        return [];\r\n    }\r\n\r\n    setGtGeneralConfig() {\r\n        this.gtGeneralConfig = { ...this.annaGlobalConfig.defaultGtGeneralConfig };\r\n        this.gtGeneralConfig.totalRow = true;\r\n        this.gtGeneralConfig.component = \"ORDER_LISTING_INFLIGHT\";\r\n        this.gtGeneralConfig.verticalScrollOffsetForFilterTooltip = 200;\r\n    }\r\n\r\n    setCurrentTabBasedOnUrl() {\r\n        this.consumingProjectOrderService.orderListingCurrentTabName = this.getCurrentSelectedTab();\r\n        // this.orderListingHelperService.selectedOrderListingTabName = this.consumingProjectOrderService.orderListingCurrentTabName;\r\n        if (this.consumingProjectOrderService.orderListingCurrentTabName === this.orderListingConstants.OtherRevenue) {\r\n            this.numberOfEasyFilterLoader = 5;\r\n        } else if (\r\n            this.consumingProjectOrderService.orderListingCurrentTabName === this.orderListingConstants.TvRevenue\r\n        ) {\r\n            this.numberOfEasyFilterLoader = 10;\r\n        } else if (this.consumingProjectOrderService.orderListingCurrentTabName === this.orderListingConstants.TV) {\r\n            this.numberOfEasyFilterLoader = 6;\r\n        } else {\r\n            this.numberOfEasyFilterLoader = 3;\r\n        }\r\n    }\r\n\r\n    getCurrentSelectedTab() {\r\n        const url = this.router.url.includes(\"?\") ? this.router.url.split(\"?\")[0] : this.router.url;\r\n        if (url.includes(\"tv-revenue\")) {\r\n            return OrderListingConstants.TvRevenue;\r\n        } else if (url.includes(\"tv\")) {\r\n            return OrderListingConstants.TV;\r\n        } else if (url.includes(\"other-revenue\")) {\r\n            return OrderListingConstants.OtherRevenue;\r\n        } else if (url.includes(\"blank-and-deleted\")) {\r\n            return OrderListingConstants.BlankAndDeleted;\r\n        } else if (url.includes(\"deleted\")) {\r\n            return OrderListingConstants.Deleted;\r\n        }\r\n        return null;\r\n    }\r\n\r\n    detectUrlChanges() {\r\n        this.route.queryParams.subscribe((params: Params) => {\r\n            this.updateLatestFilters(params);\r\n            const newEquivalisedData = this.equivalisationOfDataService.getEquivalisedData(\r\n                params,\r\n                this.defaultEquivalisedData,\r\n            );\r\n            this.orderListingHelperService.isEqivalizedToggleOn = newEquivalisedData;\r\n\r\n            if (this.performActionOnQueryParamChange) {\r\n                if (params.stationId) {\r\n                    this.setPersistingFilterForPrimaryPopupOnMailRedirection(+params.stationId);\r\n                } else {\r\n                    this.setPersistingFilterForPopup(params.popupFilter);\r\n                }\r\n                this.setPersistingVariableForColumnAndEasyFilter(params.filters);\r\n                // this.setPersistingVariableForColumnAndEasyFilterOnMailRedirection(params[\"filterFor\"]);\r\n                this.setPersistedBreadcrumbsVariable(params.breadcrumbs);\r\n                this.setEquivilizationVariableAndFetchOrders(newEquivalisedData);\r\n            }\r\n            this.performActionOnQueryParamChange = true;\r\n        });\r\n    }\r\n\r\n    setPersistingFilterForPrimaryPopupOnMailRedirection(stationId: number) {\r\n        this.persistingFilterForPopup = { stationId };\r\n        this.persistingFilterForPopup.stationIds = [stationId];\r\n    }\r\n\r\n    isEquivalisationToggleChanged(newEquivalisedData: boolean): boolean {\r\n        return this.isEquivalized != null && this.isEquivalized !== newEquivalisedData;\r\n    }\r\n\r\n    setPersistingFilterForPopup(popupFilter: string) {\r\n        this.persistingFilterForPopup =\r\n            popupFilter && this.persistingFilterService.getActualQueryParams(popupFilter)\r\n                ? JSON.parse(this.persistingFilterService.getActualQueryParams(popupFilter))\r\n                : this.persistingFilterForPopup;\r\n    }\r\n\r\n    setPersistingVariableForColumnAndEasyFilter(columnAndEasyFilter: string) {\r\n        this.filtersFromRoute =\r\n            columnAndEasyFilter && this.persistingFilterService.getActualQueryParams(columnAndEasyFilter)\r\n                ? JSON.parse(this.persistingFilterService.getActualQueryParams(columnAndEasyFilter))\r\n                : null;\r\n        this.applyFiltersFromTheUrl = !!this.filtersFromRoute;\r\n    }\r\n\r\n    setPersistingVariableForColumnAndEasyFilterOnMailRedirection(filterOnMailRedirection: string) {\r\n        this.filtersFromRoute = {\r\n            easyFilter: filterOnMailRedirection,\r\n        };\r\n        this.applyFiltersFromTheUrl = true;\r\n    }\r\n\r\n    setPersistedBreadcrumbsVariable(filters: string) {\r\n        this.breadcrumbsToPersist =\r\n            filters && this.persistingFilterService.getActualQueryParams(filters)\r\n                ? JSON.parse(this.persistingFilterService.getActualQueryParams(filters))\r\n                : null;\r\n    }\r\n\r\n    setEquivilizationVariableAndFetchOrders(equiToggleValue: boolean) {\r\n        if (this.isEquivalisationToggleChanged(equiToggleValue)) {\r\n            this.isEquivalized = equiToggleValue;\r\n            this.isEquivilizationChanged = true;\r\n            this.orderListingHelperService.isEqivalizedToggleOn = this.isEquivalized;\r\n            this.modifyQueryParam(\"equivalisedData\", \"ADD\", this.isEquivalized);\r\n            if (!this.initializeComponent) {\r\n                this.createPayloadAndFetchOrders();\r\n            }\r\n        } else {\r\n            this.isEquivalized = equiToggleValue;\r\n        }\r\n    }\r\n\r\n    fetchFiltersAndOrdersData() {\r\n        this.showTableSkeletonLoader = true;\r\n        // this.orderInfo = new orderDetailsInfo();\r\n        // this.consumingProjectOrderService.loggedInUserId = JSON.parse(localStorage.getItem(\"userProfileData\")).userId;\r\n\r\n        this.setBreadcrumbs();\r\n        this.callDashboardFiltersApi();\r\n        if (this.applyFiltersFromTheUrl) {\r\n            this.initPersistedFilters();\r\n        } else {\r\n            this.initFilters();\r\n        }\r\n    }\r\n\r\n    callDashboardFiltersApi() {\r\n        this.consumingProjectOrderService\r\n            .getPrimaryFiltersForDashboard(+this.consumingProjectOrderService.loggedInUserId)\r\n            .subscribe({\r\n                next: (responseData: any) => {\r\n                    if (responseData.data?.length > 0) {\r\n                        this.filterData = new PrimaryFiltersData(\r\n                            responseData.data,\r\n                            this.consumingProjectOrderService.isSandboxModeFeaturePresent,\r\n                            this.consumingProjectOrderService.showStation,\r\n                            this.consumingProjectOrderService.showOwnershipGroup,\r\n                        );\r\n                    } else {\r\n                        this.showNoDataToDisplay = true;\r\n                    }\r\n                },\r\n                error: () => {\r\n                    this.filterApiError = true;\r\n                    this.showNoDataToDisplay = true;\r\n                    this.toastr.error(\"Something went wrong. Please try again\");\r\n                },\r\n            });\r\n    }\r\n\r\n    initPersistedFilters() {\r\n        this.annaFilterService.tooltipSelectedMap = this.filtersFromRoute?.selectedFilterData\r\n            ? new Map(JSON.parse(this.filtersFromRoute.selectedFilterData))\r\n            : new Map();\r\n        this.annaSortService.columnSortState = this.filtersFromRoute?.sortState\r\n            ? new Map(JSON.parse(this.filtersFromRoute.sortState))\r\n            : new Map();\r\n        this.annaFilterService.selectedRadio = null;\r\n        this.annaFilterService.appliedFiltersArray = this.filtersFromRoute?.appliedFilters\r\n            ? cloneDeep(this.filtersFromRoute.appliedFilters)\r\n            : [];\r\n\r\n        if (this.annaFilterService.tooltipSelectedMap.has(\"startDate\")) {\r\n            const selectedDateObj: any = {};\r\n            const startDate = this.annaFilterService.tooltipSelectedMap.get(\"startDate\");\r\n            selectedDateObj.fromDate = dayjs(startDate.fromDate);\r\n            selectedDateObj.toDate = dayjs(startDate.toDate);\r\n            this.annaFilterService.tooltipSelectedMap.set(\"startDate\", selectedDateObj);\r\n        }\r\n\r\n        if (this.annaFilterService.tooltipSelectedMap.has(\"endDate\")) {\r\n            const selectedDateObj: any = {};\r\n            const endDate = this.annaFilterService.tooltipSelectedMap.get(\"endDate\");\r\n            selectedDateObj.fromDate = dayjs(endDate.fromDate);\r\n            selectedDateObj.toDate = dayjs(endDate.toDate);\r\n            this.annaFilterService.tooltipSelectedMap.set(\"endDate\", selectedDateObj);\r\n        }\r\n    }\r\n\r\n    initFilters() {\r\n        this.annaFilterService.tooltipSelectedMap = new Map();\r\n        this.annaFilterService.selectedRadio = null;\r\n        this.annaFilterService.appliedFiltersArray = [];\r\n        this.annaSortService.noSortingAppliedData = [];\r\n    }\r\n\r\n    setBreadcrumbs() {\r\n        // set breadcrumbs only when user does not navigate to this page via breadcrumb click\r\n\r\n        if (!this.breadcrumbService.isBreadcrumbClicked) {\r\n            const name = `Orders (${this.consumingProjectOrderService.orderListingCurrentTabName})`;\r\n            const path = this.router.url;\r\n\r\n            const breadcrumbArr = this.breadcrumbService.getBreadcrumbList();\r\n\r\n            if (\r\n                this.breadcrumbsToPersist &&\r\n                this.breadcrumbsToPersist.length > 0 &&\r\n                !isEqual(this.breadcrumbsToPersist, breadcrumbArr)\r\n            ) {\r\n                if (breadcrumbArr && breadcrumbArr.length > 0) {\r\n                    this.breadcrumbService.popBreadcrumbs(breadcrumbArr.length);\r\n                }\r\n                this.breadcrumbsToPersist.forEach((item) => {\r\n                    this.breadcrumbService.updateBreadcrumbs(item.name, item.path, true);\r\n                });\r\n            }\r\n\r\n            this.breadcrumbService.checkIfAnyRemovableBreadcrumbsExist(false);\r\n            this.breadcrumbService.updateBreadcrumbs(name, path, true);\r\n        } else {\r\n            this.breadcrumbService.isBreadcrumbClicked = false;\r\n        }\r\n    }\r\n\r\n    fetchBlankOrders() {\r\n        this.showTableSkeletonLoader = true;\r\n\r\n        if (this.selectedFilters?.periodData) {\r\n            const params = this.createPayloadToFetchOrders();\r\n\r\n            this.consumingProjectOrderService\r\n                .getBlankOrders(params)\r\n                .pipe(takeUntil(this.ngUnsubscribe))\r\n                .subscribe(\r\n                    (response: any) => {\r\n                        this.orders = [];\r\n                        this.orders = new OrderDetailsGroupedByRevisionStatus(\r\n                            response,\r\n                            this.currencyPipe,\r\n                            this.decimalPipe,\r\n                            this.consumingProjectOrderService.orderListingCurrentTabName,\r\n                        ).orders;\r\n                        this.clonedOrders = cloneDeep(this.orders);\r\n                        this.annaSortService.noSortingAppliedData = cloneDeep(this.clonedOrders);\r\n                        this.disableToggleButton = this.orders.length === 0;\r\n                        this.equivalisationOfDataService.publishIsNoDataStatusData(this.disableToggleButton);\r\n                        this.showTableSkeletonLoader = false;\r\n                        this.handleResponse();\r\n                        this.isEquivilizationChanged = false;\r\n                    },\r\n                    (error: any) => {\r\n                        this.toastr.error(\"Something went wrong! Please try again\", \"\", {\r\n                            toastClass: \"Inventory-custom-width ngx-toastr custom-anna-error\",\r\n                        });\r\n                        this.getOrdersApiErrorHandler();\r\n                    },\r\n                );\r\n        } else {\r\n            this.getOrdersApiErrorHandlerWithSetTimeout();\r\n        }\r\n    }\r\n\r\n    fetchTvRevenueOrders() {\r\n        this.showTableSkeletonLoader = true;\r\n\r\n        if (this.selectedFilters?.periodData) {\r\n            const params = this.createPayloadToFetchOrders();\r\n\r\n            this.consumingProjectOrderService\r\n                .getTvRevenueOrders(params)\r\n                .pipe(takeUntil(this.ngUnsubscribe))\r\n                .subscribe(\r\n                    (response: any) => {\r\n                        this.orders = [];\r\n                        this.orders = new OrderDetailsGroupedByRevisionStatus(\r\n                            response,\r\n                            this.currencyPipe,\r\n                            this.decimalPipe,\r\n                            this.consumingProjectOrderService.orderListingCurrentTabName,\r\n                        ).orders;\r\n                        this.disableToggleButton = this.orders.length === 0;\r\n                        this.clonedOrders = cloneDeep(this.orders);\r\n                        this.annaSortService.noSortingAppliedData = cloneDeep(this.orders);\r\n                        this.showTableSkeletonLoader = false;\r\n                        this.equivalisationOfDataService.publishIsNoDataStatusData(this.disableToggleButton);\r\n                        this.handleResponse();\r\n                    },\r\n                    (error: any) => {\r\n                        this.toastr.error(\"Something went wrong! Please try again\", \"\", {\r\n                            toastClass: \"Inventory-custom-width ngx-toastr custom-anna-error\",\r\n                        });\r\n                        this.getOrdersApiErrorHandler();\r\n                    },\r\n                );\r\n        } else {\r\n            this.getOrdersApiErrorHandlerWithSetTimeout();\r\n        }\r\n    }\r\n\r\n    fetchOtherRevenueOrders() {\r\n        this.showTableSkeletonLoader = true;\r\n\r\n        if (this.selectedFilters?.periodData) {\r\n            const params = this.persistingFilterService.convertObjToQueryString(this.createPayloadToFetchOrders());\r\n\r\n            this.consumingProjectOrderService\r\n                .getOtherRevenueOrders(params)\r\n                .pipe(takeUntil(this.ngUnsubscribe))\r\n                .subscribe(\r\n                    (response: any) => {\r\n                        this.orders = [];\r\n                        this.orders = new OrderDetailsGroupedByRevisionStatus(\r\n                            response,\r\n                            this.currencyPipe,\r\n                            this.decimalPipe,\r\n                            this.consumingProjectOrderService.orderListingCurrentTabName,\r\n                        ).orders;\r\n                        this.disableToggleButton = this.orders.length === 0;\r\n                        this.clonedOrders = cloneDeep(this.orders);\r\n                        this.annaSortService.noSortingAppliedData = cloneDeep(this.orders);\r\n                        this.showTableSkeletonLoader = false;\r\n                        this.equivalisationOfDataService.publishIsNoDataStatusData(this.disableToggleButton);\r\n                        this.handleResponse();\r\n                    },\r\n                    (error: any) => {\r\n                        this.toastr.error(\"Something went wrong! Please try again\", \"\", {\r\n                            toastClass: \"Inventory-custom-width ngx-toastr custom-anna-error\",\r\n                        });\r\n                        this.getOrdersApiErrorHandler();\r\n                    },\r\n                );\r\n        } else {\r\n            this.getOrdersApiErrorHandlerWithSetTimeout();\r\n        }\r\n    }\r\n\r\n    getOrdersApiErrorHandler() {\r\n        this.disableToggleButton = true;\r\n        this.orders = [];\r\n        this.clonedOrders = [];\r\n        this.showTableSkeletonLoader = false;\r\n        this.equivalisationOfDataService.publishIsNoDataStatusData(this.disableToggleButton);\r\n    }\r\n\r\n    getOrdersApiErrorHandlerWithSetTimeout() {\r\n        setTimeout(() => {\r\n            this.getOrdersApiErrorHandler();\r\n        }, 0);\r\n    }\r\n\r\n    createPayloadToFetchOrders() {\r\n        const payload = this.getLatestPayload();\r\n\r\n        return payload;\r\n    }\r\n\r\n    getLatestPayload() {\r\n        let payload: any = {\r\n            LoggedInUserId: this.consumingProjectOrderService.loggedInUserId,\r\n            ogId: this.selectedFilters.og?.id,\r\n            QuarterStartDate: dayjs(this.selectedFilters.periodData.startDate, \"MM/DD/YYYY\").format(\"YYYY-MM-DD\"),\r\n            QuarterEndDate: dayjs(this.selectedFilters.periodData.endDate, \"MM/DD/YYYY\").format(\"YYYY-MM-DD\"),\r\n            CalendarType: this.selectedFilters.periodData.calendarType.toUpperCase(),\r\n        };\r\n\r\n        if (this.consumingProjectOrderService.showMultiSelectionForStation) {\r\n            payload = Object.assign(payload, {\r\n                StationIds: this.selectedFilters.stationIds,\r\n            });\r\n        } else {\r\n            payload = Object.assign(payload, {\r\n                StationId: this.selectedFilters.stationId,\r\n            });\r\n        }\r\n\r\n        if (\r\n            this.consumingProjectOrderService.orderListingCurrentTabName !==\r\n                this.orderListingConstants.BlankAndDeleted &&\r\n            this.consumingProjectOrderService.orderListingCurrentTabName !== this.orderListingConstants.Deleted\r\n        ) {\r\n            const payloadToAdd = {\r\n                IsEquivalized: this.selectedFilters.isEquivalised,\r\n                isNormalized: this.selectedFilters.normalizedData.toggle,\r\n            };\r\n\r\n            if (this.selectedFilters.normalizedData.toggle) {\r\n                payload.demoId = this.selectedFilters.normalizedData.demoId;\r\n            }\r\n\r\n            payload = Object.assign(payload, payloadToAdd);\r\n        }\r\n\r\n        return payload;\r\n    }\r\n\r\n    ngOnDestroy() {\r\n        this.orderListingHelperService.orderListingFiltersAlreadyApplied = false;\r\n        this.subscriptionForSidebarClick.unsubscribe();\r\n        // This aborts all HTTP requests with takeUntil pipe when navigated to some other page.\r\n        this.ngUnsubscribe.next();\r\n        this.ngUnsubscribe.complete();\r\n    }\r\n\r\n    setTableHeight() {\r\n        let dataOnTopHeight = 234;\r\n        if (this.showTableSkeletonLoader) {\r\n            dataOnTopHeight =\r\n                this.consumingProjectOrderService.orderListingCurrentTabName ===\r\n                    OrderListingConstants.BlankAndDeleted ||\r\n                this.consumingProjectOrderService.orderListingCurrentTabName === OrderListingConstants.Deleted\r\n                    ? 223\r\n                    : 243;\r\n        } else {\r\n            dataOnTopHeight =\r\n                this.consumingProjectOrderService.orderListingCurrentTabName ===\r\n                    OrderListingConstants.BlankAndDeleted ||\r\n                this.consumingProjectOrderService.orderListingCurrentTabName === OrderListingConstants.Deleted\r\n                    ? 223\r\n                    : 236;\r\n        }\r\n        this.gtDimension = { ...this.gtDimension, dataOnTopHeight };\r\n    }\r\n\r\n    getTotalRowEmptyColumSpan(currentTab: string) {\r\n        let colspan;\r\n        switch (currentTab) {\r\n            case OrderListingConstants.TvRevenue:\r\n                colspan = 9;\r\n                break;\r\n            case OrderListingConstants.BlankAndDeleted:\r\n                colspan = 6;\r\n                break;\r\n            case OrderListingConstants.Deleted:\r\n                colspan = 3;\r\n                break;\r\n            case OrderListingConstants.TV:\r\n                colspan = 3;\r\n                break;\r\n            default:\r\n                colspan = this.consumingProjectOrderService.totalRowEmptyColspan;\r\n                break;\r\n        }\r\n\r\n        return colspan;\r\n    }\r\n\r\n    createTotalRowData() {\r\n        this.totalRowInfo = [];\r\n        this.orders = this.orders ? this.orders : [];\r\n        const totalRowData = new OrderListingTotalRow(this.orders);\r\n\r\n        const tvTab = this.consumingProjectOrderService.orderListingCurrentTabName === OrderListingConstants.TV;\r\n        const tvRevenueTab =\r\n            this.consumingProjectOrderService.orderListingCurrentTabName === OrderListingConstants.TvRevenue;\r\n\r\n        // if (\r\n        //     this.consumingProjectOrderService.orderListingCurrentTabName !== OrdersConstant.BlankAndDeleted &&\r\n        //     this.consumingProjectOrderService.orderListingCurrentTabName !== OrdersConstant.Deleted\r\n        // ) {\r\n        //     this.totalRowInfo.push({\r\n        //         colspan: 1,\r\n        //         data: ``,\r\n        //         colName: \"total-empty\",\r\n        //     });\r\n        // }\r\n\r\n        this.totalRowInfo.push({\r\n            colspan: 1,\r\n            data: ``,\r\n            colName: \"total-empty\",\r\n        });\r\n\r\n        let colSpan;\r\n        if (tvRevenueTab || tvTab) {\r\n            colSpan = this.consumingProjectOrderService.totalRowTVRevenueMessageColspan;\r\n        } else {\r\n            colSpan =\r\n                this.consumingProjectOrderService.orderListingCurrentTabName === OrderListingConstants.OtherRevenue\r\n                    ? 5\r\n                    : this.consumingProjectOrderService.totalBlankAndDeletedMessageColspan;\r\n        }\r\n        this.totalRowInfo.push({\r\n            colspan: colSpan,\r\n            data: `Total for ${this.orders.length} order(s) listed below`,\r\n            colName: \"total\",\r\n        });\r\n\r\n        this.totalRowInfo.push({\r\n            colspan: this.getTotalRowEmptyColumSpan(this.consumingProjectOrderService.orderListingCurrentTabName),\r\n            data: ``,\r\n            colName: \"total-empty-col\",\r\n        });\r\n\r\n        this.totalRowInfo.push({\r\n            colspan: 1,\r\n            data: totalRowData.displayBookedValue,\r\n            lowerData: `${this.decimalPipe.transform(totalRowData.bookedSpots, \"1.0-2\")}`,\r\n            colName: \"total-bookedAndspots\",\r\n        });\r\n\r\n        const cpp =\r\n            totalRowData.cpp == null\r\n                ? \"-\"\r\n                : `${this.currencyPipe.transform(totalRowData.cpp, \"USD\", \"symbol\", \"1.0-0\")}`;\r\n        this.totalRowInfo.push({\r\n            colspan: 1,\r\n            data: `${this.decimalPipe.transform(totalRowData.bookedGrpWithoutRoundoff, \"1.0-0\")}`,\r\n            lowerData: cpp,\r\n            colName: \"total-grpAndCpp\",\r\n        });\r\n\r\n        const cpm =\r\n            totalRowData.cpm == null\r\n                ? \"-\"\r\n                : `${this.currencyPipe.transform(totalRowData.cpm, \"USD\", \"symbol\", \"1.0-1\")}`;\r\n        this.totalRowInfo.push({\r\n            colspan: 1,\r\n            data: totalRowData.displayImps,\r\n            lowerData: cpm,\r\n            colName: \"total-impAndCpm\",\r\n        });\r\n\r\n        if (\r\n            this.consumingProjectOrderService.orderListingCurrentTabName !== OrderListingConstants.OtherRevenue &&\r\n            this.consumingProjectOrderService.orderListingCurrentTabName !== OrderListingConstants.BlankAndDeleted &&\r\n            this.consumingProjectOrderService.orderListingCurrentTabName !== OrderListingConstants.Deleted\r\n        ) {\r\n            this.totalRowInfo.push({\r\n                colspan: 1,\r\n                data: totalRowData.displayRcvPreempt,\r\n                lowerData: totalRowData.displayOsPreempt,\r\n                colName: \"total-madegoodPEAndOsPE\",\r\n            });\r\n\r\n            this.totalRowInfo.push({\r\n                colspan: 1,\r\n                data: totalRowData.displayPostedAdu,\r\n                lowerData: totalRowData.displayScheduledAdu,\r\n                colName: \"total-postedAduAndScheduledAdu\",\r\n            });\r\n\r\n            this.totalRowInfo.push({\r\n                colspan: 1,\r\n                data: totalRowData.displayUdImps,\r\n                lowerData: totalRowData.displayOdImps,\r\n                colName: \"total-under-delivery-imps\",\r\n            });\r\n\r\n            this.totalRowInfo.push({\r\n                colspan: 1,\r\n                data: totalRowData.displayUdGrp,\r\n                lowerData: totalRowData.displayOdGrp,\r\n                colName: \"total-over-delivery-imps\",\r\n            });\r\n\r\n            this.totalRowInfo.push({\r\n                colspan: 1,\r\n                data: \"-\",\r\n                // totalRowData.underDeliveryPercent === 0\r\n                //     ? \"-\"\r\n                //     : `${this.decimalPipe.transform(totalRowData.underDeliveryPercent, \"1.2-2\")}%`,\r\n                lowerData: \"-\",\r\n                // totalRowData.overDeliveryPercent === 0\r\n                //     ? \"-\"\r\n                //     : `${this.decimalPipe.transform(totalRowData.overDeliveryPercent, \"1.2-2\")}%`,\r\n                colName: \"total-under-delivery-grp\",\r\n            });\r\n\r\n            this.totalRowInfo.push({\r\n                colspan: 1,\r\n                data: totalRowData.displayUdValue,\r\n                lowerData: totalRowData.displayOdValue,\r\n                colName: \"total-over-delivery-grp\",\r\n            });\r\n        }\r\n    }\r\n\r\n    filterAppliedToTable(data: OrderDetails[]) {\r\n        this.orders = cloneDeep(data);\r\n        this.createTotalRowData();\r\n        this.enableDisableClearAllBtn();\r\n        this.updateNavigationHistory();\r\n        this.setTableHeight();\r\n    }\r\n\r\n    sortingAppliedToTable(data: OrderDetails[]) {\r\n        this.orders = cloneDeep(data);\r\n        this.enableDisableClearAllBtn();\r\n        this.updateNavigationHistory();\r\n    }\r\n\r\n    starUnstarOrder(emittedData: IconData) {\r\n        if (this.starredOrderLoading) {\r\n            window.event.stopPropagation();\r\n            return;\r\n        }\r\n\r\n        const order = emittedData.data;\r\n        // as star is part of table row and if we click on the star it will also call the tr method .\r\n        // To stop that.\r\n        window.event.stopPropagation();\r\n        const value = order.orderStarred;\r\n        const payload = {\r\n            marked_as_starred: !value,\r\n            order_id: order.orderId.toString(),\r\n            station_id: order.stationId,\r\n            user_id: +JSON.parse(localStorage.getItem(\"userProfileData\")).userId,\r\n            campaign_id: order.campaignId,\r\n        };\r\n        this.starredOrderLoading = true;\r\n        this.consumingProjectOrderService.starUnstarOrder(payload).subscribe((response: any) => {\r\n            order.orderStarred = !order.orderStarred;\r\n            const tableDataOrder = this.orders.filter((item) => item.orderId === order.orderId)[0];\r\n            tableDataOrder.orderStarred = order.orderStarred;\r\n            const returnedArr = this.clonedOrders.filter((obj) => obj.orderId === order.orderId);\r\n            returnedArr[0].orderStarred = order.orderStarred;\r\n            returnedArr[0].iconClass = order.orderStarred ? \"mdi mdi-star highlight-star\" : \"mdi mdi-star-outline\";\r\n            // const starredOrderIndex: number = this.orders.findIndex((obj) => obj.orderStarred);\r\n            tableDataOrder.iconClass = order.orderStarred ? \"mdi mdi-star highlight-star\" : \"mdi mdi-star-outline\";\r\n            order.iconClass = order.orderStarred ? \"mdi mdi-star highlight-star\" : \"mdi mdi-star-outline\";\r\n            this.clonedOrders = [...this.clonedOrders];\r\n            this.orders = cloneDeep(this.orders);\r\n            this.checkStarOrderStatus();\r\n            this.enableDisableClearAllBtn();\r\n            this.starredOrderLoading = false;\r\n            this.cdRef.detectChanges();\r\n        });\r\n    }\r\n\r\n    updateDataForEasyFilters(tableData: OrderDetails[]) {\r\n        this.orders = [...tableData];\r\n        this.filterToBeUpdatedManually = null;\r\n    }\r\n\r\n    checkStarOrderStatus() {\r\n        this.filterToBeUpdatedManually = OrderListingEasyFilterConstants.STARRED;\r\n    }\r\n\r\n    orderRowClicked(order: OrderDetails) {\r\n        this.onorderRowClicked.emit({\r\n            order,\r\n            selectedFilter: this.selectedFilters,\r\n            breadcrumbsToPersist: this.breadcrumbsToPersist,\r\n        });\r\n    }\r\n\r\n    handleResponse() {\r\n        // !! CHANGE 1\r\n        this.annaSortService.columnSortState = this.filtersFromRoute?.sortState\r\n            ? new Map(JSON.parse(this.filtersFromRoute.sortState))\r\n            : new Map();\r\n\r\n        this.annaFilterService.updateStateOfAllTheKeys(this.annaSortService.columnSortState);\r\n\r\n        if (this.applyFiltersFromTheUrl && !this.dashboardAndOrderListingService.orderCardViewClicked) {\r\n            if (this.dashboardAndOrderListingService.audPerformanceCardViewClicked) {\r\n                this.filterTableRowsIfDashboardAudPerformaceClicked();\r\n            }\r\n            this.orders = this.annaFilterService.filterData(this.clonedOrders, \"\");\r\n            this.annaSortService.noSortingAppliedData = cloneDeep(this.orders);\r\n            this.callSort();\r\n            this.orderListingHelperService.orderListingFiltersAlreadyApplied = false;\r\n        } else if (this.dashboardAndOrderListingService.orderCardViewClicked) {\r\n            this.filterTableRowsIfDashboardViewOrdersClicked();\r\n        }\r\n\r\n        this.setTableHeight();\r\n        this.enableDisableClearAllBtn();\r\n        this.createTotalRowData();\r\n        this.resetDashboardVariables();\r\n        this.isEquivilizationChanged = false;\r\n    }\r\n\r\n    resetDashboardVariables() {\r\n        this.dashboardAndOrderListingService.dashboardSelectedUsersName = null;\r\n        this.dashboardAndOrderListingService.orderCardViewClicked = false;\r\n        this.dashboardAndOrderListingService.audPerformanceCardViewClicked = false;\r\n        this.dashboardAndOrderListingService.orderListingIntelliFilterToBeSelected = null;\r\n    }\r\n\r\n    callSort() {\r\n        this.annaSortService.columnSortState.forEach((value, key) => {\r\n            if (value === \"ASC\") {\r\n                this.orders = this.annaSortService.sortDataForComponentOtherThanLurAndCsrPage(true, this.orders, key);\r\n            } else if (value === \"DESC\") {\r\n                this.orders = this.annaSortService.sortDataForComponentOtherThanLurAndCsrPage(false, this.orders, key);\r\n            }\r\n        });\r\n    }\r\n\r\n    intelliFilterClicked(emittedObj: any) {\r\n        this.nonEditableGTComponent.setScrollToInitialPosition();\r\n        this.orders = emittedObj.filteredData;\r\n        this.createTotalRowData();\r\n\r\n        this.enableDisableClearAllBtn();\r\n        this.updateNavigationHistory();\r\n    }\r\n\r\n    enableDisableClearAllBtn() {\r\n        let isSortApplied = false;\r\n        this.annaSortService.columnSortState.forEach((val, key) => {\r\n            if (val === \"ASC\" || val === \"DESC\") {\r\n                isSortApplied = true;\r\n            }\r\n        });\r\n\r\n        this.disableClearAllBtn = this.annaFilterService.appliedFiltersArray.length === 0 && !isSortApplied;\r\n    }\r\n\r\n    filterTableRowsIfDashboardAudPerformaceClicked() {\r\n        this.setDashboardRegionFilter();\r\n        this.setDashboardAeFilter();\r\n        this.setDashboardProductCategoryFilter();\r\n        this.setDashboardOrderTypeAsPaidAudienceFilter();\r\n        // If there is only easy filters then above function will not call\r\n        // applyFilters func\r\n        if (\r\n            this.annaFilterService.appliedFiltersArray.length >= 1 &&\r\n            this.annaFilterService.appliedFiltersArray[0].includes(\"easy_\")\r\n        ) {\r\n            this.applyFilters();\r\n        }\r\n    }\r\n\r\n    filterTableRowsIfDashboardViewOrdersClicked() {\r\n        this.setDashboardRegionFilter();\r\n        this.setDashboardAeFilter();\r\n        this.setDashboardProductCategoryFilter();\r\n\r\n        // If there is only easy filters then above function will not call\r\n        // applyFilters func\r\n        if (\r\n            this.annaFilterService.appliedFiltersArray.length >= 1 &&\r\n            this.annaFilterService.appliedFiltersArray[0].includes(\"easy_\")\r\n        ) {\r\n            this.applyFilters();\r\n        }\r\n    }\r\n\r\n    setDashboardOrderTypeAsPaidAudienceFilter() {\r\n        const orderTypeOptionOtherThanAudiencePostingRequired = this.orders.find((x) => x.isAudiencePostingRequired);\r\n\r\n        if (orderTypeOptionOtherThanAudiencePostingRequired) {\r\n            this.annaFilterService.selectedRadio = \"isAudiencePostingRequiredText\";\r\n            this.annaFilterService.appliedFiltersArray.push(\"isAudiencePostingRequiredText\");\r\n            this.annaFilterService.tooltipSelectedMap.set(\"isAudiencePostingRequiredText\", [\"Yes\"]);\r\n            this.applyFilters();\r\n        }\r\n    }\r\n\r\n    setDashboardRegionFilter() {\r\n        this.annaFilterService.selectedRadio = \"region\";\r\n        const regionSetForPersistingFilter = sortBy(this.dashboardAndOrderListingService.dashboardSelectedRegions);\r\n        if (regionSetForPersistingFilter.length > 0) {\r\n            const allRegions = sortBy(uniq(this.orders.map((item) => item.region)));\r\n            const anyChangeInFilter =\r\n                regionSetForPersistingFilter.length !== allRegions.length &&\r\n                !this.isSubset(allRegions, regionSetForPersistingFilter);\r\n\r\n            if (anyChangeInFilter) {\r\n                this.annaFilterService.appliedFiltersArray.push(\"region\");\r\n                this.annaFilterService.tooltipSelectedMap.set(\"region\", regionSetForPersistingFilter);\r\n                this.applyFilters();\r\n            }\r\n        }\r\n    }\r\n\r\n    setDashboardAeFilter() {\r\n        this.annaFilterService.selectedRadio = \"primaryAe\";\r\n        const primaryAePersistingFilter = sortBy(this.dashboardAndOrderListingService.dashboardSelectedUsersName);\r\n        if (primaryAePersistingFilter.length > 0) {\r\n            const allPrimaryAeOption = sortBy(uniq(this.orders.map((item) => item.primaryAe)));\r\n            const anyChangeInFilter =\r\n                primaryAePersistingFilter.length !== allPrimaryAeOption.length &&\r\n                !this.isSubset(allPrimaryAeOption, primaryAePersistingFilter);\r\n\r\n            if (anyChangeInFilter) {\r\n                this.annaFilterService.appliedFiltersArray.push(\"primaryAe\");\r\n                this.annaFilterService.tooltipSelectedMap.set(\"primaryAe\", primaryAePersistingFilter);\r\n                this.applyFilters();\r\n            }\r\n        }\r\n    }\r\n\r\n    setDashboardProductCategoryFilter() {\r\n        this.annaFilterService.selectedRadio = \"productCode\";\r\n        const productCategorySetForPersistingFilter = sortBy(\r\n            this.dashboardAndOrderListingService.dashboardSelectedProductCategories,\r\n        );\r\n        if (productCategorySetForPersistingFilter.length > 0) {\r\n            const allProductCategories = sortBy(uniq(this.orders.map((item) => item.productCode)));\r\n            const anyChangeInFilter =\r\n                productCategorySetForPersistingFilter.length !== allProductCategories.length &&\r\n                !this.isSubset(allProductCategories, productCategorySetForPersistingFilter);\r\n\r\n            if (anyChangeInFilter) {\r\n                this.annaFilterService.appliedFiltersArray.push(\"productCode\");\r\n                this.annaFilterService.tooltipSelectedMap.set(\"productCode\", productCategorySetForPersistingFilter);\r\n                this.applyFilters();\r\n            }\r\n        }\r\n    }\r\n\r\n    isSubset(filteredItems: string[], allItems: string[]): boolean {\r\n        return filteredItems.every((item) => allItems.includes(item));\r\n    }\r\n\r\n    applyFilters() {\r\n        this.orders = this.annaFilterService.filterData(this.clonedOrders, \"\");\r\n        this.annaFilterService.updateStateOfTheCurrentFilterTab(new Map());\r\n        this.createTotalRowData();\r\n        this.enableDisableClearAllBtn();\r\n        this.updateNavigationHistory();\r\n        this.setTableHeight();\r\n    }\r\n\r\n    clearAllFilter() {\r\n        this.nonEditableGTComponent?.setScrollToInitialPosition();\r\n        this.annaFilterService.tooltipSelectedMap = new Map();\r\n        this.annaFilterService.selectedRadio = null;\r\n        this.annaFilterService.appliedFiltersArray = [];\r\n        this.selectedEasyFilter = null;\r\n        this.annaSortService.columnSortState = new Map();\r\n        this.enableDisableClearAllBtn();\r\n\r\n        this.orders = cloneDeep(this.clonedOrders);\r\n        this.setTableHeight();\r\n        this.createTotalRowData();\r\n\r\n        this.performActionOnQueryParamChange = false;\r\n        const urlToNavigate = this.getUrlOfCurrentTab();\r\n\r\n        this.modifyQueryParam(\"filters\", \"DELETE\");\r\n        this.modifyQueryParam(\"breadcrumbs\", \"DELETE\");\r\n\r\n        const latestFilter = this.consumingProjectOrderService.getLatestFilters();\r\n\r\n        if (latestFilter) {\r\n            this.router.navigate([`orders/${urlToNavigate}`], {\r\n                queryParams: latestFilter,\r\n            });\r\n        } else {\r\n            this.router.navigate([`orders/${urlToNavigate}`]);\r\n        }\r\n\r\n        this.annaSortService.noSortingAppliedData = cloneDeep(this.clonedOrders);\r\n        this.annaFilterService.updateStateOfAllTheKeys(this.annaSortService.columnSortState);\r\n    }\r\n\r\n    updateNavigationHistory() {\r\n        this.performActionOnQueryParamChange = this.isEquivilizationChanged;\r\n        const queryParams = this.prepareQueryParamOnFilterApplication();\r\n\r\n        const path = this.getUrlOfCurrentTab();\r\n\r\n        if (Object.keys(queryParams).length > 0) {\r\n            this.router.navigate([`orders/${path}`], {\r\n                queryParams,\r\n            });\r\n        } else {\r\n            this.router.navigate([`orders/${path}`]);\r\n        }\r\n    }\r\n\r\n    getUrlOfCurrentTab() {\r\n        if (this.consumingProjectOrderService.orderListingCurrentTabName === OrderListingConstants.OtherRevenue) {\r\n            return \"other-revenue\";\r\n        } else if (this.consumingProjectOrderService.orderListingCurrentTabName === OrderListingConstants.TV) {\r\n            return \"tv\";\r\n        } else if (this.consumingProjectOrderService.orderListingCurrentTabName === OrderListingConstants.TvRevenue) {\r\n            return \"tv-revenue\";\r\n        } else if (\r\n            this.consumingProjectOrderService.orderListingCurrentTabName === OrderListingConstants.BlankAndDeleted\r\n        ) {\r\n            return \"blank-and-deleted\";\r\n        } else if (this.consumingProjectOrderService.orderListingCurrentTabName === OrderListingConstants.Deleted) {\r\n            return \"deleted\";\r\n        }\r\n        return null;\r\n    }\r\n\r\n    prepareQueryParamOnFilterApplication() {\r\n        const filters: any = {};\r\n\r\n        // Column level and easy filter\r\n        if (this.annaFilterService.appliedFiltersArray.length > 0) {\r\n            filters.appliedFilters = this.annaFilterService.appliedFiltersArray;\r\n            filters.selectedFilterData = JSON.stringify(Array.from(this.annaFilterService.tooltipSelectedMap));\r\n        }\r\n\r\n        // Column level sorting\r\n        if (this.annaGtService.isSortingAppliedToTable()) {\r\n            filters.sortState = JSON.stringify(Array.from(this.annaSortService.columnSortState));\r\n        }\r\n\r\n        let latestFilters = this.consumingProjectOrderService.getLatestFilters();\r\n        latestFilters = latestFilters || {};\r\n\r\n        if (latestFilters.stationId) {\r\n            delete latestFilters.stationId;\r\n        }\r\n        if (latestFilters.filterFor) {\r\n            delete latestFilters.filterFor;\r\n        }\r\n        if (Object.keys(filters).length > 0) {\r\n            const hashedQueryParams = this.persistingFilterService.storeKeyValueInLocalStorage(filters);\r\n            latestFilters.filters = hashedQueryParams;\r\n        } else {\r\n            delete latestFilters.filters;\r\n        }\r\n\r\n        this.consumingProjectOrderService.setLatestFilters(latestFilters);\r\n\r\n        return latestFilters;\r\n    }\r\n\r\n    resetSorting() {\r\n        this.annaSortService.columnSortState = new Map();\r\n    }\r\n\r\n    applyOrderListingPopupFilter(filters: DashboardFilterSelectionPopUp) {\r\n        // On clicking apply filters.updateNavigation: true\r\n        if (filters.updateNavigation) {\r\n            const popupFilters: any = {};\r\n            this.modifyQueryParam(\"filters\", \"DELETE\");\r\n\r\n            if (\r\n                !this.consumingProjectOrderService.showMultiSelectionForStation &&\r\n                this.initialStationAndPeriodFilter.stationId !== filters.stationId\r\n            ) {\r\n                popupFilters.stationId = filters.stationId;\r\n            }\r\n\r\n            if (\r\n                this.consumingProjectOrderService.showMultiSelectionForStation &&\r\n                !isEqual(this.initialStationAndPeriodFilter.stationId, filters.stationId)\r\n            ) {\r\n                popupFilters.stationIds = filters.stationIds;\r\n            }\r\n\r\n            if (this.initialStationAndPeriodFilter.og?.id !== filters.og?.id) {\r\n                popupFilters.og = {};\r\n                popupFilters.og.id = filters.og?.id;\r\n            }\r\n\r\n            if (!isEqual(this.initialStationAndPeriodFilter.periodData, filters.periodData)) {\r\n                popupFilters.periodData = filters.periodData;\r\n            }\r\n\r\n            if (this.initialStationAndPeriodFilter.isEquivalised !== filters.isEquivalised) {\r\n                popupFilters.isEquivalised = filters.isEquivalised;\r\n            }\r\n\r\n            if (!isEqual(this.initialStationAndPeriodFilter.normalizedData, filters.normalizedData)) {\r\n                popupFilters.normalizedData = filters.normalizedData;\r\n            }\r\n\r\n            if (Object.keys(popupFilters).length > 0) {\r\n                const hashedQueryParams = this.persistingFilterService.storeKeyValueInLocalStorage(popupFilters);\r\n                this.modifyQueryParam(\"popupFilter\", \"ADD\", hashedQueryParams);\r\n            } else {\r\n                this.persistingFilterForPopup = null;\r\n                this.modifyQueryParam(\"popupFilter\", \"DELETE\", JSON.stringify(popupFilters));\r\n            }\r\n\r\n            const latestFilters = this.consumingProjectOrderService.getLatestFilters();\r\n            this.initFilters();\r\n            this.resetSorting();\r\n            this.annaFilterService.updateStateOfAllTheKeys(new Map());\r\n            this.applyFiltersFromTheUrl = false;\r\n\r\n            if (latestFilters) {\r\n                this.router.navigate([], {\r\n                    relativeTo: this.route,\r\n                    queryParams: latestFilters,\r\n                });\r\n            } else {\r\n                this.router.navigate([], {\r\n                    relativeTo: this.route,\r\n                });\r\n            }\r\n        }\r\n\r\n        this.selectedFilters = filters;\r\n        this.consumingProjectOrderService.selectedOg = cloneDeep(filters.og);\r\n        this.easyFilters = this.getEasyFiltersForCurrentTab();\r\n        // if (this.consumingProjectOrderService.isSandboxModeFeaturePresent) {\r\n        //   // uncomment for SI\r\n        //   let isStationInSandboxMode = this.consumingProjectLoginService.isStationInSandboxMode(this.selectedFilters.stationId, (station: any, value: any) => station.StationId == value);\r\n        //   // let isStationInSandboxMode = isS(this.selectedFilters)\r\n        //   // this.loginService.isStationInSandoxMode(\r\n        //   //   this.selectedFilters.stationId,\r\n        //   //   (station, value) => station.StationId == value\r\n        //   // );\r\n        //   this.removeWriteEnabledEasyFilter(isStationInSandboxMode);\r\n        // }\r\n        // else {\r\n        //   this.removeWriteEnabledEasyFilter(false);\r\n        // }\r\n\r\n        this.createPayloadAndFetchOrders();\r\n    }\r\n\r\n    createPayloadAndFetchOrders() {\r\n        if (\r\n            this.consumingProjectOrderService.orderListingCurrentTabName === OrderListingConstants.TvRevenue ||\r\n            this.consumingProjectOrderService.orderListingCurrentTabName === OrderListingConstants.TV\r\n        ) {\r\n            this.fetchTvRevenueOrders();\r\n        } else if (\r\n            this.consumingProjectOrderService.orderListingCurrentTabName === OrderListingConstants.OtherRevenue\r\n        ) {\r\n            this.fetchOtherRevenueOrders();\r\n        } else if (\r\n            this.consumingProjectOrderService.orderListingCurrentTabName === OrderListingConstants.BlankAndDeleted ||\r\n            this.consumingProjectOrderService.orderListingCurrentTabName === OrderListingConstants.Deleted\r\n        ) {\r\n            this.fetchBlankOrders();\r\n        }\r\n    }\r\n\r\n    // getLatestFilters() {\r\n    //   if (this.consumingProjectOrderService.orderListingCurrentTabName == OrdersConstant.TvRevenue) {\r\n    //     return this.orderDRRListingContainerService.latestTvRevenueTabFilters;\r\n    //   } else if (this.consumingProjectOrderService.orderListingCurrentTabName == OrdersConstant.OtherRevenue) {\r\n    //     return this.orderDRRListingContainerService.latestOtherRevenueTabFilters;\r\n    //   } else if (this.consumingProjectOrderService.orderListingCurrentTabName == OrdersConstant.Blank) {\r\n    //     return this.orderDRRListingContainerService.latestBlankTabFilters;\r\n    //   }\r\n    // }\r\n\r\n    // setLatestFilters(queryParams: any) {\r\n    //   if (this.consumingProjectOrderService.orderListingCurrentTabName == OrdersConstant.Blank) {\r\n    //     this.orderDRRListingContainerService.latestBlankTabFilters = queryParams;\r\n    //   } else if (this.consumingProjectOrderService.orderListingCurrentTabName == OrdersConstant.TvRevenue) {\r\n    //     this.orderDRRListingContainerService.latestTvRevenueTabFilters = queryParams;\r\n    //   } else if (this.consumingProjectOrderService.orderListingCurrentTabName == OrdersConstant.OtherRevenue) {\r\n    //     this.orderDRRListingContainerService.latestOtherRevenueTabFilters = queryParams;\r\n    //   }\r\n    // }\r\n\r\n    resetFiltersAndSetBreadcrumbs() {\r\n        if (\r\n            this.consumingProjectOrderService.orderListingCurrentTabName === OrderListingConstants.TvRevenue ||\r\n            this.consumingProjectOrderService.orderListingCurrentTabName === OrderListingConstants.TV\r\n        ) {\r\n            this.applyFiltersFromTheUrl = false;\r\n            this.setBreadcrumbs();\r\n            this.clearAllFilter();\r\n            this.persistingFilterForPopup = null;\r\n            this.callDashboardFiltersApi();\r\n            if (this.isEquivalized) {\r\n                this.isEquivalized = false;\r\n                this.orderListingHelperService.isEqivalizedToggleOn = false;\r\n                this.createPayloadAndFetchOrders();\r\n            }\r\n        }\r\n    }\r\n\r\n    removeWriteEnabledEasyFilter(isStationInSandboxMode: boolean) {\r\n        if (\r\n            !isStationInSandboxMode &&\r\n            this.easyFilters.length > 0 &&\r\n            (this.consumingProjectOrderService.orderListingCurrentTabName === OrderListingConstants.TvRevenue ||\r\n                this.consumingProjectOrderService.orderListingCurrentTabName === OrderListingConstants.TV)\r\n        ) {\r\n            this.easyFilters.splice(-1);\r\n        }\r\n    }\r\n\r\n    modifyQueryParam(key: string, operation: string, value?: any) {\r\n        // Fetching latest filters\r\n        let latestFilter = this.consumingProjectOrderService.getLatestFilters();\r\n        latestFilter = latestFilter || {};\r\n\r\n        // Perform Operation on the latestFilter\r\n        if (operation === \"ADD\") {\r\n            latestFilter[key] = value;\r\n        } else if (operation === \"DELETE\") {\r\n            delete latestFilter[key];\r\n        }\r\n\r\n        this.consumingProjectOrderService.setLatestFilters(Object.keys(latestFilter).length > 0 ? latestFilter : null);\r\n    }\r\n\r\n    updateLatestFilters(queryParams: any) {\r\n        const latestFilters = this.consumingProjectOrderService.getLatestFilters();\r\n        const updatedQueryParams = Object.keys(queryParams).length === 0 ? null : queryParams;\r\n\r\n        if (!isEqual(updatedQueryParams, latestFilters)) {\r\n            this.consumingProjectOrderService.setLatestFilters(cloneDeep(updatedQueryParams));\r\n        }\r\n    }\r\n\r\n    updateInitialStationAndPeriodFilter(filters: PersistedDashboardPrimaryFilters) {\r\n        this.initialStationAndPeriodFilter = filters;\r\n    }\r\n}\r\n","<div\r\n    class=\"main-container\"\r\n    [ngClass]=\"{\r\n        'deleted-tab':\r\n            consumingProjectOrderService.orderListingCurrentTabName === orderListingConstants.BlankAndDeleted ||\r\n            consumingProjectOrderService.orderListingCurrentTabName === orderListingConstants.Deleted\r\n    }\"\r\n>\r\n    <!-- Container without No data to display -->\r\n    <ng-container *ngIf=\"!showNoDataToDisplay\">\r\n        <div class=\"station-period-row\">\r\n            <anna-design-dashboard-filter-modal\r\n                [filterData]=\"filterData\"\r\n                [headerText]=\"'Edit Filter'\"\r\n                [showOwnershipGroup]=\"consumingProjectOrderService.showOwnershipGroup\"\r\n                [showStation]=\"consumingProjectOrderService.showStation\"\r\n                [showMultiSelectionForStation]=\"consumingProjectOrderService.showMultiSelectionForStation\"\r\n                [showEquivilization]=\"\r\n                    !(\r\n                        consumingProjectOrderService.orderListingCurrentTabName ===\r\n                            orderListingConstants.BlankAndDeleted ||\r\n                        consumingProjectOrderService.orderListingCurrentTabName === orderListingConstants.Deleted\r\n                    )\r\n                \"\r\n                [showNormalization]=\"\r\n                    !(\r\n                        consumingProjectOrderService.orderListingCurrentTabName ===\r\n                            orderListingConstants.BlankAndDeleted ||\r\n                        consumingProjectOrderService.orderListingCurrentTabName === orderListingConstants.Deleted\r\n                    )\r\n                \"\r\n                [error]=\"filterApiError\"\r\n                [handleNavigation]=\"false\"\r\n                [message]=\"'Select data for which you want to view the orders for.'\"\r\n                [toDisable]=\"showTableSkeletonLoader\"\r\n                [persistingFilter]=\"persistingFilterForPopup\"\r\n                [toShowAllPeriodModeSetting]=\"true\"\r\n                [PeriodOptions]=\"PeriodOptions\"\r\n                [stationIdsWithValidLicense]=\"stationIdsWithValidLicense\"\r\n                (getInitialFilter)=\"updateInitialStationAndPeriodFilter($event)\"\r\n                (applyFilter)=\"applyOrderListingPopupFilter($event)\"\r\n            >\r\n            </anna-design-dashboard-filter-modal>\r\n        </div>\r\n\r\n        <div\r\n            class=\"easy-reset-container\"\r\n            *ngIf=\"!showNoDataToDisplayInsideTable && !showTableSkeletonLoader && clonedOrders.length === 0\"\r\n        >\r\n            <anna-design-message-box\r\n                class=\"no-data-info-msg\"\r\n                [messageBoxData]=\"messageBoxData\"\r\n                [hide]=\"false\"\r\n                [headerAsBlockElement]=\"false\"\r\n                [showHyphen]=\"false\"\r\n            >\r\n            </anna-design-message-box>\r\n        </div>\r\n\r\n        <ng-container\r\n            *ngIf=\"\r\n                showTableSkeletonLoader ||\r\n                (!showTableSkeletonLoader && (showNoDataToDisplayInsideTable || clonedOrders.length > 0))\r\n            \"\r\n        >\r\n            <div\r\n                class=\"d-flex easy-reset-container\"\r\n                [ngClass]=\"{\r\n                    'justify-content-between':\r\n                        consumingProjectOrderService.orderListingCurrentTabName !== orderListingConstants.Deleted,\r\n                    'justify-content-end':\r\n                        consumingProjectOrderService.orderListingCurrentTabName === orderListingConstants.Deleted\r\n                }\"\r\n            >\r\n                <anna-design-easy-filters\r\n                    #easyFilterComponent\r\n                    *ngIf=\"consumingProjectOrderService.orderListingCurrentTabName !== orderListingConstants.Deleted\"\r\n                    [showLoader]=\"showTableSkeletonLoader\"\r\n                    [numberOfItemsForLoader]=\"numberOfEasyFilterLoader\"\r\n                    [easyFilters]=\"easyFilters\"\r\n                    [tableData]=\"orders\"\r\n                    [clonedTableData]=\"clonedOrders\"\r\n                    [filterToBeUpdatedManually]=\"filterToBeUpdatedManually\"\r\n                    (getUpdatedDataAfterUserAction)=\"updateDataForEasyFilters($event)\"\r\n                    (easyFilterClickEvent)=\"intelliFilterClicked($event)\"\r\n                >\r\n                </anna-design-easy-filters>\r\n\r\n                <section\r\n                    class=\"reset-container\"\r\n                    *ngIf=\"!showTableSkeletonLoader\"\r\n                >\r\n                    <button\r\n                        class=\"clear-all-btn\"\r\n                        (click)=\"clearAllFilter()\"\r\n                        [disabled]=\"disableClearAllBtn\"\r\n                    >\r\n                        Reset all filters\r\n                    </button>\r\n                </section>\r\n\r\n                <!-- <ngx-skeleton-loader count=\"1\" \r\n            *ngIf=\"showTableSkeletonLoader\" [theme]=\"{ width: '92px', height: '20px', 'margin-right': '0px', 'margin-bottom': '-20px' }\">\r\n            </ngx-skeleton-loader> -->\r\n            </div>\r\n\r\n            <section class=\"order-table-container\">\r\n                <anna-core-non-editable-generic-table-lib\r\n                    class=\"order-listing-generic-table\"\r\n                    [ngClass]=\"{\r\n                        'table-loading': showTableSkeletonLoader,\r\n                        'tv-revenue-table':\r\n                            consumingProjectOrderService.orderListingCurrentTabName ===\r\n                                orderListingConstants.TvRevenue ||\r\n                            consumingProjectOrderService.orderListingCurrentTabName === orderListingConstants.TV,\r\n                        'blank-and-deleted-table':\r\n                            consumingProjectOrderService.orderListingCurrentTabName ===\r\n                                orderListingConstants.BlankAndDeleted ||\r\n                            consumingProjectOrderService.orderListingCurrentTabName === orderListingConstants.Deleted,\r\n                        'other-revenue-table':\r\n                            consumingProjectOrderService.orderListingCurrentTabName ===\r\n                            orderListingConstants.OtherRevenue,\r\n                        'no-data-table': !showTableSkeletonLoader && orders && orders.length === 0\r\n                    }\"\r\n                    [showSkeletonLoading]=\"showTableSkeletonLoader\"\r\n                    [tableHeaders]=\"tableHeaders\"\r\n                    [tableData]=\"orders\"\r\n                    [clonedTableData]=\"clonedOrders\"\r\n                    [gtGeneralConfig]=\"gtGeneralConfig\"\r\n                    [totalRowInfo]=\"totalRowInfo\"\r\n                    [includeBorderInTableHeight]=\"false\"\r\n                    [gtDimension]=\"gtDimension\"\r\n                    [clickableRow]=\"true\"\r\n                    [showOrHideToggleForTotalRow]=\"true\"\r\n                    (filterAppliedToTable)=\"filterAppliedToTable($event)\"\r\n                    (sortingAppliedToTable)=\"sortingAppliedToTable($event)\"\r\n                    (gtIconClicked)=\"starUnstarOrder($event)\"\r\n                    (rowClicked)=\"orderRowClicked($event)\"\r\n                    [tableBorderBottomClassRequired]=\"false\"\r\n                    [starredInProgress]=\"starredOrderLoading\"\r\n                >\r\n                </anna-core-non-editable-generic-table-lib>\r\n            </section>\r\n        </ng-container>\r\n    </ng-container>\r\n    <!-- No data to display Container -->\r\n    <ng-container *ngIf=\"showNoDataToDisplay\">\r\n        <anna-core-no-data-lib width=\"50%\"> </anna-core-no-data-lib>\r\n    </ng-container>\r\n</div>\r\n\r\n<ng-template #rejectedIcon>\r\n    <svg\r\n        width=\"15px\"\r\n        height=\"15px\"\r\n        viewBox=\"0 0 20 20\"\r\n    >\r\n        <g\r\n            id=\"Buyer-rejected-icon\"\r\n            stroke=\"none\"\r\n            stroke-width=\"1\"\r\n            fill=\"none\"\r\n            fill-rule=\"evenodd\"\r\n        >\r\n            <path\r\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\"\r\n                id=\"Shape\"\r\n                fill=\"#4A4A4A\"\r\n                fill-rule=\"nonzero\"\r\n            ></path>\r\n        </g>\r\n    </svg>\r\n</ng-template>\r\n\r\n<ng-template #buyerApprovalIcon>\r\n    <svg\r\n        width=\"15px\"\r\n        height=\"15px\"\r\n        viewBox=\"0 0 20 20\"\r\n    >\r\n        <g\r\n            id=\"Awaiting-Buyer-Approval-icon\"\r\n            stroke=\"none\"\r\n            stroke-width=\"1\"\r\n            fill=\"none\"\r\n            fill-rule=\"evenodd\"\r\n        >\r\n            <g\r\n                id=\"time-left\"\r\n                transform=\"translate(3.000000, 2.000000)\"\r\n                fill=\"#4A4A4A\"\r\n                fill-rule=\"nonzero\"\r\n            >\r\n                <path\r\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\"\r\n                    id=\"Path\"\r\n                ></path>\r\n                <path\r\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\"\r\n                    id=\"Combined-Shape\"\r\n                ></path>\r\n                <path\r\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\"\r\n                    id=\"Path\"\r\n                ></path>\r\n            </g>\r\n        </g>\r\n    </svg>\r\n</ng-template>\r\n\r\n<!-- MODALS -->\r\n\r\n<!-- <ng-template #easyFilterSkeletonLoader>\r\n  <ngx-skeleton-loader\r\n      [count]=\"consumingProjectOrderService.orderListingCurrentTabName == constants.OtherRevenue ? 4 : consumingProjectOrderService.orderListingCurrentTabName == constants.TvRevenue ? 8 : 2\"\r\n      [theme]=\"{\r\n          width: '90px',\r\n          height: '20px',\r\n          display: 'inline-block',\r\n          'margin-right': '10px',\r\n          'margin-left': '0px',\r\n          'margin-top': '27px',\r\n          'margin-bottom': '5px'\r\n      }\"\r\n  >\r\n  </ngx-skeleton-loader>\r\n</ng-template> -->\r\n\r\n<ng-template #dropdownSkeletonLoader>\r\n    <ngx-skeleton-loader\r\n        count=\"1\"\r\n        [theme]=\"{\r\n            width: '108px',\r\n            height: '30px',\r\n            display: 'inline-block',\r\n            'margin-right': '0px',\r\n            'margin-top': '12px',\r\n            'margin-bottom': '5px'\r\n        }\"\r\n    >\r\n    </ngx-skeleton-loader>\r\n</ng-template>\r\n","export class TableHeaderNames {\r\n    static readonly REVISION_NUMBER_HEADER = \"REVISION #\";\r\n    static readonly REVISION_TYPE_HEADER = \"REVISION TYPE\";\r\n    static readonly GENERATED_ON_HEADER = \"GENERATED ON\";\r\n    static readonly VALUE_BOOKED_HEADER = \"$ BOOKED\";\r\n    static readonly SPOTS_HEADER = \"SPOTS\";\r\n    static readonly GRP_HEADER = \"GRP\";\r\n    static readonly RATING_HEADER = \"RATING\";\r\n    static readonly CPP_HEADER = \"CPP\";\r\n    static readonly IMPS_HEADER = \"IMP('000)\";\r\n    static readonly CPM_HEADER = \"CPM\";\r\n    static readonly MG_VALUE_HEADER = \"$ MGs\";\r\n    static readonly ADU_VALUE_HEADER = \"$ ADUs\";\r\n    static readonly CREDITED_VALUE_HEADER = \"$ CREDITED\";\r\n    static readonly USER_UNRESOLVED_VALUE_HEADER = \"$ USER UNRESOLVED\";\r\n    static readonly BUYER_ADDED_VALUE_HEADER = \"$ BUYER ADDED\";\r\n    static readonly BUYER_DELETED_VALUE_HEADER = \"$ BUYER DELETED\";\r\n    static readonly BUYER_CHANGES_HEADER = \"$ BUYER CHANGE\";\r\n    static readonly SELLER_USER_VALUE_CHANGES_HEADER = \"$ SELLER USER CHANGE\";\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { IGtTableHeader } from \"@annalib/anna-core\";\r\n\r\nimport { TableHeaderNames } from \"../constants/order-revisions.constants\";\r\n\r\n@Injectable({\r\n    providedIn: \"root\",\r\n})\r\nexport class OrderRevisionsService {\r\n    filterAppliedRouteChange: boolean;\r\n    filterAppliedRouteChangeInRevisionInfo: boolean;\r\n\r\n    getTableHeaders(): IGtTableHeader[] {\r\n        return [\r\n            {\r\n                headerInfo: [\r\n                    {\r\n                        name: TableHeaderNames.REVISION_NUMBER_HEADER,\r\n                        objectKey: \"RevisionNumber\",\r\n                        actionKey: \"readActionKey\",\r\n                        tooltipKey: \"tooltipData\",\r\n                        typeOfHeaderData: \"STRING\",\r\n                        typeOfBodyData: \"STRING___ICON_OR_TEXT_ACTION\",\r\n                        showTooltipIcon: true,\r\n                        isSortRequired: [true],\r\n                        isFilterRequired: [true],\r\n                        filter: \"CHECKBOX\",\r\n                        filterSortObjectKeys: [\"RevisionNumber\"],\r\n                    },\r\n                ],\r\n                visible: true,\r\n                width: \"11ch\",\r\n            },\r\n            {\r\n                headerInfo: [\r\n                    {\r\n                        name: TableHeaderNames.REVISION_TYPE_HEADER,\r\n                        objectKey: \"RevisionType\",\r\n                        typeOfHeaderData: \"STRING\",\r\n                        typeOfBodyData: \"STRING\",\r\n                        showTooltipIcon: true,\r\n                        isSortRequired: [true],\r\n                        isFilterRequired: [true],\r\n                        filter: \"CHECKBOX\",\r\n                        filterSortObjectKeys: [\"RevisionType\"],\r\n                    },\r\n                ],\r\n                visible: true,\r\n                width: \"13ch\",\r\n            },\r\n            {\r\n                headerInfo: [\r\n                    {\r\n                        name: TableHeaderNames.GENERATED_ON_HEADER,\r\n                        objectKey: \"GeneratedOn\",\r\n                        typeOfHeaderData: \"STRING\",\r\n                        typeOfBodyData: \"STRING\",\r\n                        showTooltipIcon: true,\r\n                        isSortRequired: [true],\r\n                        isFilterRequired: [true],\r\n                        filter: \"DATE\",\r\n                        filterSortObjectKeys: [\"GeneratedOn\"],\r\n                    },\r\n                ],\r\n                visible: true,\r\n                width: \"13ch\",\r\n            },\r\n            {\r\n                headerInfo: [\r\n                    {\r\n                        name: TableHeaderNames.VALUE_BOOKED_HEADER,\r\n                        objectKey: \"BookedValueForDisplay\",\r\n                        typeOfHeaderData: \"STRING\",\r\n                        typeOfBodyData: \"STRING\",\r\n                        showTooltipIcon: true,\r\n                        isSortRequired: [true, true],\r\n                        isFilterRequired: [true, true],\r\n                        filter: \"SLIDER\",\r\n                        filterSortObjectKeys: [\"BookedValue\", \"BookedSpots\"],\r\n                    },\r\n                    {\r\n                        name: TableHeaderNames.SPOTS_HEADER,\r\n                        objectKey: \"DisplayBookedSpots\",\r\n                        typeOfHeaderData: \"STRING\",\r\n                        typeOfBodyData: \"STRING\",\r\n                        showTooltipIcon: false,\r\n                    },\r\n                ],\r\n                visible: true,\r\n                width: \"11ch\",\r\n            },\r\n            {\r\n                headerInfo: [\r\n                    {\r\n                        name: TableHeaderNames.GRP_HEADER,\r\n                        objectKey: \"DisplayBookedGRP\",\r\n                        typeOfHeaderData: \"STRING\",\r\n                        typeOfBodyData: \"STRING\",\r\n                        showTooltipIcon: true,\r\n                        isSortRequired: [true, true],\r\n                        isFilterRequired: [true, true],\r\n                        filter: \"SLIDER\",\r\n                        filterSortObjectKeys: [\"BookedGRP\", \"BookedCPP\"],\r\n                    },\r\n                    {\r\n                        name: TableHeaderNames.CPP_HEADER,\r\n                        objectKey: \"DisplayBookedCPP\",\r\n                        typeOfHeaderData: \"STRING\",\r\n                        typeOfBodyData: \"STRING\",\r\n                        showTooltipIcon: false,\r\n                    },\r\n                ],\r\n                visible: true,\r\n                width: \"11ch\",\r\n            },\r\n            {\r\n                headerInfo: [\r\n                    {\r\n                        name: TableHeaderNames.IMPS_HEADER,\r\n                        objectKey: \"DisplayBookedIMPS\",\r\n                        typeOfHeaderData: \"STRING\",\r\n                        typeOfBodyData: \"STRING\",\r\n                        showTooltipIcon: true,\r\n                        isSortRequired: [true, true],\r\n                        isFilterRequired: [true, true],\r\n                        filter: \"SLIDER\",\r\n                        filterSortObjectKeys: [\"IMPS\", \"BookedCPM\"],\r\n                    },\r\n                    {\r\n                        name: TableHeaderNames.CPM_HEADER,\r\n                        objectKey: \"DisplayBookedCPM\",\r\n                        typeOfHeaderData: \"STRING\",\r\n                        typeOfBodyData: \"STRING\",\r\n                        showTooltipIcon: false,\r\n                    },\r\n                ],\r\n                visible: true,\r\n                width: \"11ch\",\r\n            },\r\n            {\r\n                headerInfo: [\r\n                    {\r\n                        name: TableHeaderNames.MG_VALUE_HEADER,\r\n                        objectKey: \"MGsValueForDisplay\",\r\n                        typeOfHeaderData: \"STRING\",\r\n                        typeOfBodyData: \"STRING\",\r\n                        showTooltipIcon: true,\r\n                        isSortRequired: [true, true],\r\n                        isFilterRequired: [true, true],\r\n                        filter: \"SLIDER\",\r\n                        filterSortObjectKeys: [\"MGsValue\", \"ADUsValue\"],\r\n                    },\r\n                    {\r\n                        name: TableHeaderNames.ADU_VALUE_HEADER,\r\n                        objectKey: \"ADUsValueForDisplay\",\r\n                        typeOfHeaderData: \"STRING\",\r\n                        typeOfBodyData: \"STRING\",\r\n                        showTooltipIcon: false,\r\n                    },\r\n                ],\r\n                visible: true,\r\n                width: \"11ch\",\r\n            },\r\n            {\r\n                headerInfo: [\r\n                    {\r\n                        name: TableHeaderNames.CREDITED_VALUE_HEADER,\r\n                        objectKey: \"CreditedValueForDisplay\",\r\n                        typeOfHeaderData: \"STRING\",\r\n                        typeOfBodyData: \"STRING\",\r\n                        showTooltipIcon: true,\r\n                        isSortRequired: [true, true],\r\n                        isFilterRequired: [true, true],\r\n                        filter: \"SLIDER\",\r\n                        filterSortObjectKeys: [\"CreditedValue\", \"UserUnresolvedValue\"],\r\n                    },\r\n                    {\r\n                        name: TableHeaderNames.USER_UNRESOLVED_VALUE_HEADER,\r\n                        objectKey: \"UserUnresolvedValueForDisplay\",\r\n                        typeOfHeaderData: \"STRING\",\r\n                        typeOfBodyData: \"STRING\",\r\n                        showTooltipIcon: false,\r\n                    },\r\n                ],\r\n                visible: true,\r\n                width: \"17ch\",\r\n            },\r\n            {\r\n                headerInfo: [\r\n                    {\r\n                        name: TableHeaderNames.BUYER_ADDED_VALUE_HEADER,\r\n                        objectKey: \"BuyerAddedValueForDisplay\",\r\n                        typeOfHeaderData: \"STRING\",\r\n                        typeOfBodyData: \"STRING\",\r\n                        showTooltipIcon: true,\r\n                        isSortRequired: [true, true],\r\n                        isFilterRequired: [true, true],\r\n                        filter: \"SLIDER\",\r\n                        filterSortObjectKeys: [\"BuyerAddedValue\", \"BuyerDeletedValue\"],\r\n                    },\r\n                    {\r\n                        name: TableHeaderNames.BUYER_DELETED_VALUE_HEADER,\r\n                        objectKey: \"BuyerDeletedValueForDisplay\",\r\n                        typeOfHeaderData: \"STRING\",\r\n                        typeOfBodyData: \"STRING\",\r\n                        showTooltipIcon: false,\r\n                    },\r\n                ],\r\n                visible: true,\r\n                width: \"15ch\",\r\n            },\r\n            {\r\n                headerInfo: [\r\n                    {\r\n                        name: \"BUYER $ CHANGES\",\r\n                        objectKey: \"BuyerChangesValueForDisplay\",\r\n                        typeOfHeaderData: \"STRING\",\r\n                        typeOfBodyData: \"STRING\",\r\n                        showTooltipIcon: true,\r\n                        isSortRequired: [true, true],\r\n                        isFilterRequired: [true, true],\r\n                        filter: \"SLIDER\",\r\n                        filterSortObjectKeys: [\"BuyerChangesValue\", \"UserChangesValue\"],\r\n                    },\r\n                    {\r\n                        name: \"SELLER $ CHANGES\",\r\n                        objectKey: \"UserChangesValueForDisplay\",\r\n                        typeOfHeaderData: \"STRING\",\r\n                        typeOfBodyData: \"STRING\",\r\n                        showTooltipIcon: false,\r\n                    },\r\n                ],\r\n                visible: true,\r\n                width: \"17ch\",\r\n            },\r\n            {\r\n                headerInfo: [\r\n                    {\r\n                        name: \"BUYER GRP CHANGES\",\r\n                        objectKey: \"buyerGrpChangesValueDisplay\",\r\n                        typeOfHeaderData: \"STRING\",\r\n                        typeOfBodyData: \"STRING\",\r\n                        showTooltipIcon: true,\r\n                        isSortRequired: [true, true],\r\n                        isFilterRequired: [true, true],\r\n                        filter: \"SLIDER\",\r\n                        filterSortObjectKeys: [\"buyerGrpChangesValue\", \"buyerImpChangesValue\"],\r\n                    },\r\n                    {\r\n                        name: \"BUYER IMPS CHANGES\",\r\n                        objectKey: \"buyerImpChangesValueDisplay\",\r\n                        typeOfHeaderData: \"STRING\",\r\n                        typeOfBodyData: \"STRING\",\r\n                        showTooltipIcon: false,\r\n                    },\r\n                ],\r\n                visible: true,\r\n                width: \"138px\",\r\n            },\r\n            {\r\n                headerInfo: [\r\n                    {\r\n                        name: \"BUYER ADDED\",\r\n                        objectKey: \"buyerAddedValueDisplay\",\r\n                        typeOfHeaderData: \"STRING\",\r\n                        typeOfBodyData: \"STRING\",\r\n                        showTooltipIcon: true,\r\n                        isSortRequired: [true, true],\r\n                        isFilterRequired: [true, true],\r\n                        filter: \"SLIDER\",\r\n                        filterSortObjectKeys: [\"buyerAddedValue\", \"buyerDeletedValue\"],\r\n                    },\r\n                    {\r\n                        name: \"BUYER DELETED\",\r\n                        objectKey: \"buyerDeletedValueDisplay\",\r\n                        typeOfHeaderData: \"STRING\",\r\n                        typeOfBodyData: \"STRING\",\r\n                        showTooltipIcon: false,\r\n                    },\r\n                ],\r\n                visible: true,\r\n                width: \"143px\",\r\n            },\r\n        ];\r\n    }\r\n}\r\n","import { AsyncPipe, NgClass, NgIf, NgStyle } from \"@angular/common\";\r\nimport { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges, ViewChild } from \"@angular/core\";\r\nimport { Router } from \"@angular/router\";\r\nimport {\r\n    AnnaCoreModule,\r\n    AnnaFilterService,\r\n    AnnaGlobalConfigService,\r\n    AnnaNonEditableGenericTableComponent,\r\n    AnnaSortService,\r\n    IGtGeneralConfig,\r\n    IGtTableHeader,\r\n} from \"@annalib/anna-core\";\r\nimport { PrimaryOrderPanelService } from \"@annalib/anna-feature-shared-lib\";\r\nimport dayjs from \"dayjs\";\r\nimport { cloneDeep } from \"lodash-es\";\r\n\r\n// eslint-disable-next-line import/no-cycle\r\nimport { PrimaryDetails } from \"../../public-api\";\r\nimport { OrderRevisions } from \"./models/orderRevisionsModel\";\r\nimport { OrderRevisionsService } from \"./services/orderRevisions.service\";\r\n\r\n@Component({\r\n    selector: \"anna-feature-order-revisions\",\r\n    templateUrl: \"./order-revisions.component.html\",\r\n    styleUrls: [\"./order-revisions.component.scss\"],\r\n    imports: [NgIf, AnnaCoreModule, NgClass, NgStyle, AsyncPipe],\r\n})\r\nexport class OrderRevisionsComponent implements OnInit, OnChanges {\r\n    @Input() primaryOrderData: PrimaryDetails;\r\n    @Input() orderRevisionsData: OrderRevisions[];\r\n    @Input() revenueCategory: string;\r\n    @Input() hasOngoingRevision: boolean;\r\n    @Input() ongoingRevisionNumber: number;\r\n    @Input() filtersFromRoute: any;\r\n    @Input() loading: boolean;\r\n    @Input() noData: boolean;\r\n    @Input() userName: string;\r\n    @Input() parentOrderListingTabName: \"TV Revenue\" | \"Other Revenue\";\r\n    @Input() userType: \"BUYER\" | \"SELLER\";\r\n    @Output() filtersApplied = new EventEmitter();\r\n\r\n    orderRevisionsDataForDisplay: OrderRevisions[];\r\n    parentEquivalisedData: any;\r\n    gtDimension = { rowHeight: 40, headerHeight: 40, dataOnTopHeight: 217, marginFromBottom: 20 };\r\n    gtGeneralConfig: IGtGeneralConfig;\r\n    tableHeaders: IGtTableHeader[];\r\n    disableRestAllButton: boolean = true;\r\n    genericTableClass: string = \"order-revision-listing-table\";\r\n    tableHeight: string;\r\n    @ViewChild(AnnaNonEditableGenericTableComponent) nonEditableGTComponent: AnnaNonEditableGenericTableComponent;\r\n\r\n    constructor(\r\n        public router: Router,\r\n        public orderRevisionListingService: OrderRevisionsService,\r\n        private annaGlobalConfig: AnnaGlobalConfigService,\r\n        private annaSortService: AnnaSortService,\r\n        private annaFilterService: AnnaFilterService,\r\n        protected primaryOrderPanelService: PrimaryOrderPanelService,\r\n    ) {}\r\n\r\n    ngOnChanges(changes: SimpleChanges) {\r\n        if (changes.filtersFromRoute) {\r\n            if (this.filtersFromRoute) {\r\n                this.initFiltersFromRoute();\r\n            } else {\r\n                this.initFilters();\r\n            }\r\n        }\r\n\r\n        if (changes.orderRevisionsData && changes.orderRevisionsData.currentValue) {\r\n            this.orderRevisionsDataForDisplay = cloneDeep(this.orderRevisionsData);\r\n            this.annaSortService.noSortingAppliedData = cloneDeep(this.orderRevisionsDataForDisplay);\r\n            if (this.filtersFromRoute) {\r\n                this.annaSortService.columnSortState = this.filtersFromRoute.sortState\r\n                    ? new Map(JSON.parse(this.filtersFromRoute.sortState))\r\n                    : new Map();\r\n                this.orderRevisionsDataForDisplay = this.annaFilterService.filterData(this.orderRevisionsData, \"\");\r\n                this.annaSortService.noSortingAppliedData = cloneDeep(this.orderRevisionsDataForDisplay);\r\n                this.annaFilterService.updateStateOfAllTheKeys(this.annaSortService.columnSortState);\r\n                if (this.filtersFromRoute?.sortState) {\r\n                    this.callSort();\r\n                }\r\n            }\r\n            this.disableEnableClearAll();\r\n        }\r\n        this.setTableHeight();\r\n    }\r\n\r\n    callSort() {\r\n        this.annaSortService.columnSortState.forEach((value, key) => {\r\n            if (value === \"ASC\") {\r\n                this.orderRevisionsDataForDisplay = this.annaSortService.sortDataForComponentOtherThanLurAndCsrPage(\r\n                    true,\r\n                    this.orderRevisionsDataForDisplay,\r\n                    key,\r\n                );\r\n            } else if (value === \"DESC\") {\r\n                this.orderRevisionsDataForDisplay = this.annaSortService.sortDataForComponentOtherThanLurAndCsrPage(\r\n                    false,\r\n                    this.orderRevisionsDataForDisplay,\r\n                    key,\r\n                );\r\n            }\r\n        });\r\n    }\r\n\r\n    ngOnInit(): void {\r\n        this.gtGeneralConfig = { ...this.annaGlobalConfig.defaultGtGeneralConfig };\r\n        this.setTableHeight();\r\n        this.tableHeaders = this.orderRevisionListingService.getTableHeaders();\r\n    }\r\n\r\n    setTableHeight() {\r\n        // this.tableHeight = \"calc(100vh - 281px)\";\r\n        // if (this.loading) {\r\n        //     this.tableHeight = \"calc(100vh - 289px)\";\r\n        // } else if (this.hasOngoingRevision) {\r\n        //     this.tableHeight = \"calc(100vh - 350px)\";\r\n        // }\r\n    }\r\n\r\n    revisionRowClicked(row: OrderRevisions) {\r\n        if (row && row.AllowClick && row.RevisionNumber) {\r\n            const url: string = this.router\r\n                .createUrlTree([`/orders/${this.primaryOrderData.orderId}/revision-report`], {\r\n                    queryParams: this.createQueryparamsForRevisionInfoPage(\r\n                        row.RevisionNumber,\r\n                        this.primaryOrderData.stationId,\r\n                        row.RevisionType,\r\n                    ),\r\n                })\r\n                .toString();\r\n            // this.router.createUrlTree([`/${this.orderInfo.orderId}/${this.orderInfo.stationId}/revision-report`], { queryParams: this.createQueryparamsForRevisionInfoPage(row.RevisionNumber, this.orderInfo.stationId) }).toString()\r\n            const link = document.createElement(\"a\");\r\n            link.target = \"_blank\";\r\n            link.href = `#${url}`;\r\n            link.setAttribute(\"visibility\", \"hidden\");\r\n            link.click();\r\n        }\r\n    }\r\n\r\n    createQueryparamsForRevisionInfoPage(\r\n        revisionNumber: number,\r\n        stationId: number,\r\n        revisionType: \"ANNA\" | \"Seller User\" | \"Buyer\",\r\n    ): {\r\n        loggedInUserName: string;\r\n        stationId: number;\r\n        orderData: string;\r\n        revenueCategory: string;\r\n        revisionType: \"ANNA\" | \"Seller User\" | \"Buyer\";\r\n        parentTab: \"TV Revenue\" | \"Other Revenue\";\r\n    } {\r\n        return {\r\n            loggedInUserName: this.userName,\r\n            stationId: +stationId,\r\n            orderData: JSON.stringify({\r\n                campaignId: this.primaryOrderData.campaignId,\r\n                orderId: this.primaryOrderData.orderId,\r\n                revisionNo: revisionNumber,\r\n                revisionType,\r\n            }),\r\n            revisionType,\r\n            revenueCategory: this.revenueCategory,\r\n            parentTab: this.parentOrderListingTabName,\r\n        };\r\n    }\r\n\r\n    filterAppliedToTable(data: OrderRevisions[]) {\r\n        this.orderRevisionsDataForDisplay = cloneDeep(data);\r\n        this.disableEnableClearAll();\r\n        this.updateNavigationHistory();\r\n    }\r\n\r\n    sortingAppliedToTable(data: OrderRevisions[]) {\r\n        this.orderRevisionsDataForDisplay = cloneDeep(data);\r\n        this.disableEnableClearAll();\r\n        this.updateNavigationHistory();\r\n    }\r\n\r\n    disableEnableClearAll() {\r\n        let isSortApplied = false;\r\n        if (this.annaSortService.columnSortState) {\r\n            this.annaSortService.columnSortState.forEach((value, key) => {\r\n                if (value === \"ASC\" || value === \"DESC\") {\r\n                    isSortApplied = true;\r\n                }\r\n            });\r\n        }\r\n        this.disableRestAllButton = !!(this.annaFilterService.appliedFiltersArray.length === 0 && !isSortApplied);\r\n    }\r\n\r\n    updateNavigationHistory() {\r\n        this.filtersApplied.emit();\r\n    }\r\n\r\n    resetAllFilters() {\r\n        this.nonEditableGTComponent?.setScrollToInitialPosition();\r\n        this.initFilters();\r\n        this.annaSortService.noSortingAppliedData = cloneDeep(this.orderRevisionsData);\r\n        this.orderRevisionsDataForDisplay = cloneDeep(this.orderRevisionsData);\r\n        this.disableRestAllButton = true;\r\n        this.annaFilterService.updateStateOfAllTheKeys(this.annaSortService.columnSortState);\r\n        this.updateNavigationHistory();\r\n    }\r\n\r\n    initFiltersFromRoute() {\r\n        this.annaFilterService.appliedFiltersArray = this.filtersFromRoute.appliedFilters\r\n            ? this.filtersFromRoute.appliedFilters\r\n            : [];\r\n        this.annaFilterService.tooltipSelectedMap = this.filtersFromRoute.selectedFilterData\r\n            ? new Map(JSON.parse(this.filtersFromRoute.selectedFilterData))\r\n            : new Map();\r\n        if (this.annaFilterService.tooltipSelectedMap.has(\"GeneratedOn\")) {\r\n            const selectedDateObj: any = {};\r\n            const startDate = this.annaFilterService.tooltipSelectedMap.get(\"GeneratedOn\");\r\n            selectedDateObj.fromDate = dayjs(startDate.fromDate);\r\n            selectedDateObj.toDate = dayjs(startDate.toDate);\r\n            this.annaFilterService.tooltipSelectedMap.set(\"GeneratedOn\", selectedDateObj);\r\n        }\r\n        this.annaFilterService.initialValueMap = new Map();\r\n    }\r\n\r\n    initFilters() {\r\n        this.annaFilterService.tooltipSelectedMap = new Map();\r\n        this.annaFilterService.initialValueMap = new Map();\r\n        this.annaFilterService.selectedRadio = null;\r\n        this.annaFilterService.appliedFiltersArray = [];\r\n        this.annaSortService.columnSortState = new Map();\r\n    }\r\n}\r\n","<div\r\n    *ngIf=\"noData\"\r\n    class=\"no-rev-info\"\r\n>\r\n    <i class=\"mi mdi-info\"></i>\r\n    This order has not undergone any revisions. You will see the revision details here once this order undergoes a\r\n    revision.\r\n</div>\r\n\r\n<div class=\"reset-all\">\r\n    <button\r\n        class=\"clear-all-btn\"\r\n        [disabled]=\"disableRestAllButton\"\r\n        (click)=\"resetAllFilters()\"\r\n    >\r\n        Reset all filters\r\n    </button>\r\n</div>\r\n<anna-core-non-editable-generic-table-lib\r\n    #revisionListingGenericTable\r\n    class=\"order-revsiions-table\"\r\n    *ngIf=\"loading || !noData\"\r\n    [showSkeletonLoading]=\"loading\"\r\n    [tableClass]=\"genericTableClass\"\r\n    [ngClass]=\"{\r\n        'order-revisions-no-data-table':\r\n            !loading && orderRevisionsDataForDisplay && orderRevisionsDataForDisplay.length === 0,\r\n        'loading-state': loading\r\n    }\"\r\n    [gtGeneralConfig]=\"gtGeneralConfig\"\r\n    [gtDimension]=\"gtDimension\"\r\n    [tableBorderBottomClassRequired]=\"false\"\r\n    [tableHeaders]=\"tableHeaders\"\r\n    [tableData]=\"orderRevisionsDataForDisplay\"\r\n    [clonedTableData]=\"orderRevisionsData\"\r\n    [clickableRow]=\"true\"\r\n    [fixNumberOfRowsForPopup]=\"primaryOrderPanelService.isPrimaryOrderPanelOpen$ | async\"\r\n    (filterAppliedToTable)=\"filterAppliedToTable($event)\"\r\n    (sortingAppliedToTable)=\"sortingAppliedToTable($event)\"\r\n    (rowClicked)=\"revisionRowClicked($event)\"\r\n>\r\n</anna-core-non-editable-generic-table-lib>\r\n","import { InjectionToken } from \"@angular/core\";\r\nimport { Observable } from \"rxjs\";\r\n\r\nimport { SaveHiatusDatesForEntryPayload } from \"../model/hiatus-window-popup.model\";\r\n\r\nexport const HIATUS_WINDOW_SERVICE_TOKEN: InjectionToken<IHiatusWindowBackendService> =\r\n    new InjectionToken<IHiatusWindowBackendService>(\"IHiatusWindowBackendService token\");\r\n\r\nexport interface IHiatusWindowBackendService {\r\n    isEOSApplication: boolean;\r\n    loggedInUserId: number | string;\r\n    sendHiatusDatesForEntry(payload: SaveHiatusDatesForEntryPayload): Observable<any>;\r\n    getHiatusDatesForPopup(stationId: number, orderId: string): Observable<any>;\r\n}\r\n","import { animate, state, style, transition, trigger } from \"@angular/animations\";\r\nimport { NgClass, NgFor, NgIf, NgTemplateOutlet } from \"@angular/common\";\r\nimport { HttpErrorResponse, HttpResponse } from \"@angular/common/http\";\r\nimport {\r\n    ChangeDetectionStrategy,\r\n    ChangeDetectorRef,\r\n    Component,\r\n    EventEmitter,\r\n    Inject,\r\n    Input,\r\n    OnChanges,\r\n    OnInit,\r\n    Output,\r\n    SimpleChanges,\r\n    TemplateRef,\r\n    ViewChild,\r\n} from \"@angular/core\";\r\nimport { MatExpansionModule } from \"@angular/material/expansion\";\r\nimport { AnnaCoreModule, AnnaDateTimeFormatService, ANNAIconNames, ErrorCodes, NgbDateType } from \"@annalib/anna-core\";\r\nimport {\r\n    AnnaDesignComponentsLibModule,\r\n    GenericMessageBoxTheme,\r\n    MessageBoxData,\r\n} from \"@annalib/anna-design-components-lib\";\r\nimport { PrimaryOrderPanelService } from \"@annalib/anna-feature-shared-lib\";\r\nimport { NgbModal, NgbModalOptions, NgbModalRef, NgbTooltip } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport dayjs from \"dayjs\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\nimport { NgxUiLoaderService } from \"ngx-ui-loader\";\r\n\r\nimport { HiatusWindowPopupComponent } from \"../hiatus-window-popup/hiatus-window-popup.component\";\r\nimport { SaveHiatusDatesForEntryPayload } from \"../hiatus-window-popup/model/hiatus-window-popup.model\";\r\nimport {\r\n    HIATUS_WINDOW_SERVICE_TOKEN,\r\n    IHiatusWindowBackendService,\r\n} from \"../hiatus-window-popup/service/hiatus-window-popup-token.service\";\r\nimport { Constants } from \"../notifications/Constants\";\r\nimport {\r\n    CollapseKeyValueInfo,\r\n    Group,\r\n    HiatusDetailsForPopup,\r\n    OrderFlightStatusEnum,\r\n    PrimaryDetails,\r\n    StartEndDate,\r\n} from \"./models/primary-order-panel.model\";\r\n\r\n@Component({\r\n    selector: \"anna-feature-primary-order-panel\",\r\n    templateUrl: \"./primary-order-panel.component.html\",\r\n    styleUrls: [\"./primary-order-panel.component.scss\"],\r\n    animations: [\r\n        trigger(\"openClose\", [\r\n            state(\"true\", style({ transform: \"rotate(180deg)\" })),\r\n            state(\"false\", style({ transform: \"rotate(0deg)\" })),\r\n            transition(\"false <=> true\", [animate(200)]),\r\n        ]),\r\n    ],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    imports: [\r\n        MatExpansionModule,\r\n        NgClass,\r\n        NgIf,\r\n        NgFor,\r\n        NgbTooltip,\r\n        AnnaDesignComponentsLibModule,\r\n        NgTemplateOutlet,\r\n        AnnaCoreModule,\r\n        HiatusWindowPopupComponent,\r\n    ],\r\n})\r\nexport class PrimaryOrderPanelComponent implements OnInit, OnChanges {\r\n    @Input() isOrderStarted: boolean;\r\n    @Input() showSkeletonLoading: boolean;\r\n    @Input() headings: { name: string; class: string }[];\r\n    @Input() orderTabChanged: boolean;\r\n    @Input() disableHiatusPopupLink: boolean = false;\r\n    @Input() aclWritePermission: boolean = true;\r\n    @Input() data: PrimaryDetails;\r\n    @Input() orderInformation: Group[];\r\n    @Input() clientInformation: Group[];\r\n    @Input() revenueInformation: Group[];\r\n    @Input() collapsedOrderInfo: CollapseKeyValueInfo[];\r\n    @Input() grpOrImpsKey: \"grp\" | \"imps\";\r\n    @Input() parentTab: \"Other Revenue\" | \"TV Revenue\" | \"Order\" = \"TV Revenue\";\r\n\r\n    @Output() reloadOrderSummaryApi = new EventEmitter<any>();\r\n    @Output() panelOpenedOrClosed = new EventEmitter<any>();\r\n\r\n    @ViewChild(\"hiatusWindowModal\") private hiatusWindowPopup: TemplateRef<any>;\r\n    hiatusWindowPopupReference: NgbModalRef;\r\n    hiatusPopupOptions: NgbModalOptions;\r\n    length: number;\r\n    accordianDisabled: boolean;\r\n    isOpened: boolean = false;\r\n    showTooltipForCollapsedValue: boolean;\r\n\r\n    ANNAIconNames = ANNAIconNames;\r\n\r\n    currencyUnit = \"USD\";\r\n    hiatusWindowPopupTopInfoMessage: MessageBoxData;\r\n    hiatusWindowPopupHeaderMessage: string;\r\n    calenderStartDateForHiatusPopup: NgbDateType;\r\n    calenderEndDateForHiatusPopup: NgbDateType;\r\n    hiatusWindowDetailsForPopup: HiatusDetailsForPopup;\r\n    constructor(\r\n        private primaryOrderPanelService: PrimaryOrderPanelService,\r\n        private cdr: ChangeDetectorRef,\r\n        private annaDateTimeFormatService: AnnaDateTimeFormatService,\r\n        private modalService: NgbModal,\r\n        private ngxService: NgxUiLoaderService,\r\n        private toastr: ToastrService,\r\n        @Inject(HIATUS_WINDOW_SERVICE_TOKEN) public consumingProjectHiatusWindowService: IHiatusWindowBackendService,\r\n    ) {\r\n        this.hiatusPopupModalConfig();\r\n        this.setDataForHiatusModal();\r\n    }\r\n    ngOnChanges(changes: SimpleChanges) {\r\n        if (changes.data && changes.data.currentValue) {\r\n            if (this.data?.orderInfo) {\r\n                this.setCalenderMinMaxDatesForPopup();\r\n                this.hiatusWindowPopupHeaderMessage = `Hiatus Dates for Order# ${this.data.orderInfo.stationOrderId}`;\r\n            }\r\n        }\r\n    }\r\n    ngOnInit() {\r\n        this.primaryOrderPanelService.parentContainerScrolled.subscribe(() => {\r\n            this.showTooltipForCollapsedValue = false;\r\n            this.cdr.markForCheck();\r\n        });\r\n    }\r\n    onLinkClicked(event: any) {\r\n        // if(!this.isOpened){\r\n        //  this.openClose(true)\r\n        // }\r\n        this.consumingProjectHiatusWindowService\r\n            .getHiatusDatesForPopup(this.data.stationId, this.data.orderInfo.stationOrderId)\r\n            .subscribe(\r\n                (response) => {\r\n                    const disableEdit =\r\n                        this.parentTab === \"Other Revenue\" ||\r\n                        this.data.orderInfo.isDeletedOrder ||\r\n                        this.data.orderInfo.orderFlightStatus === OrderFlightStatusEnum.completed ||\r\n                        !this.aclWritePermission;\r\n                    this.hiatusWindowDetailsForPopup = new HiatusDetailsForPopup(\r\n                        response,\r\n                        disableEdit,\r\n                        this.consumingProjectHiatusWindowService.isEOSApplication,\r\n                    );\r\n                    this.openModalForHiatusWindow();\r\n                },\r\n                (error: any) => {\r\n                    this.toastr.error(Constants.SERVER_ERROR_MSG);\r\n                },\r\n            );\r\n    }\r\n    hiatusPopupModalConfig() {\r\n        this.hiatusPopupOptions = {\r\n            windowClass: \"hiatus-window-popup\",\r\n            centered: true,\r\n        };\r\n    }\r\n    openModalForHiatusWindow() {\r\n        this.hiatusWindowPopupReference = this.modalService.open(this.hiatusWindowPopup, this.hiatusPopupOptions);\r\n    }\r\n    closeModalForHiatusWindow() {\r\n        this.hiatusWindowPopupReference.close();\r\n    }\r\n\r\n    openClose(param: boolean) {\r\n        const elements = document.getElementsByClassName(\"tooltip\");\r\n        while (elements.length > 0) {\r\n            elements[0].remove();\r\n        }\r\n        this.length = this.collapsedOrderInfo.length;\r\n        this.isOpened = param;\r\n        this.panelOpenedOrClosed.emit(this.isOpened);\r\n        this.primaryOrderPanelService.isPrimaryOrderPanelOpen$.next(this.isOpened);\r\n    }\r\n\r\n    disableAccordian(param: boolean) {\r\n        this.accordianDisabled = param;\r\n    }\r\n\r\n    mouseEnteredOnCollapsedValue(id: string, type: \"name\" | \"value\") {\r\n        const element = document.getElementById(`${id}-info-${type}`);\r\n\r\n        if (element?.offsetWidth < element?.scrollWidth) {\r\n            this.showTooltipForCollapsedValue = true;\r\n        } else {\r\n            this.showTooltipForCollapsedValue = false;\r\n        }\r\n    }\r\n    setDataForHiatusModal() {\r\n        const msg =\r\n            \"Please note that the hiatus dates will be entered directly on WO Traffic only after closure of any ongoing revisions.\";\r\n        const iconClass = \"mdi mdi-alert-octagon\";\r\n\r\n        this.hiatusWindowPopupTopInfoMessage = new MessageBoxData(\r\n            null,\r\n            msg,\r\n            iconClass,\r\n            `${GenericMessageBoxTheme.informationBlue.messageBoxClass} sm hiatus-info`,\r\n        );\r\n    }\r\n\r\n    setCalenderMinMaxDatesForPopup() {\r\n        this.calenderStartDateForHiatusPopup = this.annaDateTimeFormatService.convertToNgbDate(\r\n            dayjs(this.data?.orderInfo.flightStartDate, \"MM/DD/YY\").format(\"MM/DD/YYYY\"),\r\n            \"MM/DD/YYYY\",\r\n        );\r\n        this.calenderEndDateForHiatusPopup = this.annaDateTimeFormatService.convertToNgbDate(\r\n            dayjs(this.data?.orderInfo.flightEndDate, \"MM/DD/YY\").format(\"MM/DD/YYYY\"),\r\n            \"MM/DD/YYYY\",\r\n        );\r\n    }\r\n\r\n    sendHiatusDatesForEntry(hiatusDatePopupObj: { hiatusDates: StartEndDate[]; sellerComments?: string }) {\r\n        const buyerId = this.consumingProjectHiatusWindowService.isEOSApplication\r\n            ? this.consumingProjectHiatusWindowService.loggedInUserId\r\n            : null;\r\n        const sellerId = !this.consumingProjectHiatusWindowService.isEOSApplication\r\n            ? this.consumingProjectHiatusWindowService.loggedInUserId\r\n            : null;\r\n        const payload: SaveHiatusDatesForEntryPayload = {\r\n            StationId: this.data.stationId,\r\n            OrderId: this.data.orderInfo.stationOrderId.toString(),\r\n            Comment: hiatusDatePopupObj.sellerComments,\r\n            SellerId: sellerId,\r\n            CentralBuyerId: buyerId,\r\n            HiatusDatesToSave: hiatusDatePopupObj.hiatusDates,\r\n        };\r\n        this.ngxService.start();\r\n        this.consumingProjectHiatusWindowService.sendHiatusDatesForEntry(payload).subscribe(\r\n            (response: HttpResponse<any>) => {\r\n                if (response.status === ErrorCodes.SUCCESS_CODE_POST) {\r\n                    this.ngxService.stop();\r\n                    this.toastr.success(\"The hiatus dates have been successfully marked for entry\", \"\", {\r\n                        toastClass: \"Inventory-custom-width ngx-toastr custom-anna-success\",\r\n                    });\r\n                }\r\n                this.closeModalForHiatusWindow();\r\n                this.reloadOrderSummaryApi.emit(true);\r\n            },\r\n            (err: HttpErrorResponse) => {\r\n                this.ngxService.stop();\r\n                if (err.status === ErrorCodes.under_review) {\r\n                    this.toastr.error(`${err.error}`);\r\n                } else {\r\n                    this.toastr.error(Constants.SERVER_ERROR_MSG);\r\n                }\r\n\r\n                this.closeModalForHiatusWindow();\r\n                this.reloadOrderSummaryApi.emit(true);\r\n            },\r\n        );\r\n    }\r\n}\r\n","<mat-accordion>\r\n    <mat-expansion-panel\r\n        [expanded]=\"isOpened\"\r\n        (afterCollapse)=\"openClose(false)\"\r\n        (afterExpand)=\"openClose(true)\"\r\n        [disabled]=\"accordianDisabled\"\r\n        [hideToggle]=\"true\"\r\n    >\r\n        <mat-expansion-panel-header\r\n            [ngClass]=\"{ 'disabled-accordion': accordianDisabled }\"\r\n            collapsedHeight=\"*\"\r\n            expandedHeight=\"*\"\r\n        >\r\n            <mat-panel-title>\r\n                <div class=\"w-100\">\r\n                    <div\r\n                        class=\"row\"\r\n                        *ngIf=\"isOpened\"\r\n                    >\r\n                        <div\r\n                            *ngFor=\"let heading of headings\"\r\n                            class=\"col-4\"\r\n                            [ngClass]=\"heading.class\"\r\n                        >\r\n                            <span> {{ heading.name }} </span>\r\n                        </div>\r\n                    </div>\r\n                    <div\r\n                        class=\"row collapsed-info-row\"\r\n                        *ngIf=\"!isOpened\"\r\n                    >\r\n                        <ng-container *ngIf=\"!showSkeletonLoading\">\r\n                            <ng-container *ngFor=\"let item of collapsedOrderInfo; let position = index\">\r\n                                <div class=\"item-container\">\r\n                                    <ng-content\r\n                                        *ngIf=\"item.className === 'station-ordernumber-class'\"\r\n                                        select=\".collapsed-pfp-and-aa-icon\"\r\n                                    ></ng-content>\r\n\r\n                                    <ng-content\r\n                                        *ngIf=\"item.className === 'station-ordernumber-class'\"\r\n                                        select=\".deleted-order-icon\"\r\n                                    ></ng-content>\r\n\r\n                                    <div\r\n                                        class=\"text-truncate collapsed-heading\"\r\n                                        ngClass=\"{{ item.className }}\"\r\n                                    >\r\n                                        <span\r\n                                            class=\"font-12 normal-font-weight info-name\"\r\n                                            id=\"{{ item.name }}-info-name\"\r\n                                            ngbTooltip=\"{{ showTooltipForCollapsedValue ? item.name : null }}\"\r\n                                            placement=\"bottom\"\r\n                                            container=\"body\"\r\n                                            (mouseenter)=\"mouseEnteredOnCollapsedValue(item.name, 'name')\"\r\n                                        >\r\n                                            {{ item.name }} </span\r\n                                        ><br />\r\n                                        <span\r\n                                            *ngIf=\"!item.showLink && !item.firstValue\"\r\n                                            class=\"info-value\"\r\n                                            id=\"{{ item.name }}-info-value\"\r\n                                            ngbTooltip=\"{{ showTooltipForCollapsedValue ? item.value : null }}\"\r\n                                            placement=\"bottom\"\r\n                                            container=\"body\"\r\n                                            (mouseenter)=\"mouseEnteredOnCollapsedValue(item.name, 'value')\"\r\n                                        >\r\n                                            {{ item.value ? item.value : \"-\" }}\r\n                                        </span>\r\n                                        <span\r\n                                            *ngIf=\"item.firstValue && item.secondValue && !item.showLink\"\r\n                                            class=\"info-value d-flex\"\r\n                                            id=\"{{ item.name }}-info-value\"\r\n                                            (mouseenter)=\"mouseEnteredOnCollapsedValue(item.name, 'value')\"\r\n                                        >\r\n                                            <span\r\n                                                annaCoreShowEllipsisTextOnHover\r\n                                                class=\"values\"\r\n                                                >{{ item.firstValue }}</span\r\n                                            >\r\n                                            <span class=\"divider\"> | </span>\r\n                                            <span\r\n                                                annaCoreShowEllipsisTextOnHover\r\n                                                class=\"values\"\r\n                                                >{{ item.secondValue }}</span\r\n                                            >\r\n                                        </span>\r\n                                        <span\r\n                                            *ngIf=\"item.showLink && !item.firstValue\"\r\n                                            id=\"{{ item.name }}-info-value\"\r\n                                            [ngClass]=\"{\r\n                                                'disable-hiatus-link': disableHiatusPopupLink,\r\n                                                'enable-hiatus-link': !disableHiatusPopupLink\r\n                                            }\"\r\n                                            class=\"link-value text-link\"\r\n                                            (click)=\"onLinkClicked(item.name)\"\r\n                                        >\r\n                                            {{ item.value }}\r\n                                        </span>\r\n                                    </div>\r\n                                </div>\r\n                            </ng-container>\r\n                        </ng-container>\r\n\r\n                        <anna-design-skt-loader\r\n                            *ngIf=\"showSkeletonLoading\"\r\n                            [count]=\"8\"\r\n                            [theme]=\"{\r\n                                height: '2.5rem',\r\n                                width: '8vw',\r\n                                display: 'inline-block',\r\n                                'margin-right': '1.5rem',\r\n                                'margin-top': '.625rem',\r\n                                'min-width': '110px',\r\n                                'max-width': '200px'\r\n                            }\"\r\n                        ></anna-design-skt-loader>\r\n                    </div>\r\n                </div>\r\n\r\n                <div\r\n                    [@openClose]=\"isOpened ? true : false\"\r\n                    class=\"open-close-container expantion-icon\"\r\n                >\r\n                    <span class=\"mdi mdi-menu-down\"></span>\r\n                    <!-- <span class=\"mat-expansion-indicator\">\r\n          </span> -->\r\n                </div>\r\n            </mat-panel-title>\r\n        </mat-expansion-panel-header>\r\n        <div>\r\n            <div\r\n                class=\"row primary-order-container\"\r\n                *ngIf=\"data && isOpened\"\r\n            >\r\n                <div class=\"col-4 p-0 border-end\">\r\n                    <div class=\"card\">\r\n                        <ng-container\r\n                            [ngTemplateOutlet]=\"tableTemplate\"\r\n                            [ngTemplateOutletContext]=\"{ tableData: orderInformation, section: 'order' }\"\r\n                        >\r\n                        </ng-container>\r\n                    </div>\r\n                </div>\r\n\r\n                <div class=\"col-4 p-0 border-end\">\r\n                    <div class=\"card\">\r\n                        <ng-container\r\n                            [ngTemplateOutlet]=\"tableTemplate\"\r\n                            [ngTemplateOutletContext]=\"{ tableData: clientInformation, section: 'client' }\"\r\n                        >\r\n                        </ng-container>\r\n                    </div>\r\n                </div>\r\n\r\n                <div class=\"col-4 p-0\">\r\n                    <div class=\"card\">\r\n                        <ng-container\r\n                            [ngTemplateOutlet]=\"tableTemplate\"\r\n                            [ngTemplateOutletContext]=\"{ tableData: revenueInformation, section: 'revenue' }\"\r\n                        >\r\n                        </ng-container>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    </mat-expansion-panel>\r\n</mat-accordion>\r\n\r\n<ng-template\r\n    #spotsValueGrpOrImps\r\n    let-name=\"name\"\r\n>\r\n    <span> Spots | Value </span>\r\n    <span *ngIf=\"!data.orderInfo.isDrOrder\">\r\n        |\r\n        {{\r\n            data.orderInfo.orderType === \"UD (Liability set)\"\r\n                ? data.revenueInfo.udLiabilityMetric === \"IMPRESSIONS\"\r\n                    ? \"IMP('000)\"\r\n                    : \"GRP\"\r\n                : data.orderMeasurementType === \"Impressions\"\r\n                  ? \"IMP('000)\"\r\n                  : \"GRP\"\r\n        }}\r\n    </span>\r\n    <ng-container *ngIf=\"name === 'Booked'\">\r\n        <ng-content select=\".ud-liability-tooltip-booked\"></ng-content>\r\n    </ng-container>\r\n    <ng-container *ngIf=\"name === 'Booked to date'\">\r\n        <ng-content select=\".ud-liability-tooltip-booked-to-date\"></ng-content>\r\n    </ng-container>\r\n</ng-template>\r\n\r\n<ng-template\r\n    #revenueInfoData\r\n    let-value=\"value\"\r\n>\r\n    <div class =\"mb-15\"></div>\r\n    <span>{{ value?.spots }} | </span>\r\n    <span>{{ value?.value }} </span>\r\n    <span *ngIf=\"!data.orderInfo.isDrOrder\"> | {{ value[grpOrImpsKey] }}</span>\r\n</ng-template>\r\n\r\n<ng-template\r\n    #tableTemplate\r\n    let-tableData=\"tableData\"\r\n    let-section=\"section\"\r\n>\r\n    <div class=\"card-body\">\r\n        <table>\r\n            <tbody>\r\n                <ng-container *ngFor=\"let rowData of tableData\">\r\n                    <tr\r\n                        *ngFor=\"let item of rowData.group; let last = last; let first = first\"\r\n                        [ngClass]=\"{\r\n                            'first-row': first,\r\n                            'last-row': last,\r\n                            'multiple-values': rowData.group.length > 1,\r\n                            'no-border-btm': item.noBorderBottom\r\n                        }\"\r\n                    >\r\n                        <ng-container *ngIf=\"!item.isSpotGrpValue\">\r\n                            <td\r\n                                annaCoreShowEllipsisTextOnHover\r\n                                class=\"text-start\"\r\n                                *ngIf=\"item.nameColspan\"\r\n                                [colSpan]=\"item.nameColspan\"\r\n                                [ngClass]=\"item.nameClass\"\r\n                            >\r\n                                {{ item.name }}\r\n                            </td>\r\n\r\n                            <!-- VALUE -->\r\n                            <!-- ARRAY handling -->\r\n                            <ng-container\r\n                                *ngIf=\"item.value && (item.value | AnnatypeofData) === 'object'; else valTemplate\"\r\n                            >\r\n                                <div\r\n                                    *ngFor=\"let eachValue of item.value; let first = first\"\r\n                                    [ngClass]=\"{ 'first-div': first }\"\r\n                                >\r\n                                    <td\r\n                                        annaCoreShowEllipsisTextOnHover\r\n                                        class=\"text-end\"\r\n                                        [ngClass]=\"item.valueClass\"\r\n                                    >\r\n                                        {{ eachValue | AnnaConvertZeroOrNullOrUndefined: \"-\" }}\r\n                                    </td>\r\n                                </div>\r\n                            </ng-container>\r\n\r\n                            <!-- STRING handling -->\r\n                            <ng-template #valTemplate>\r\n                                <td\r\n                                    annaCoreShowEllipsisTextOnHover\r\n                                    class=\"text-end\"\r\n                                    *ngIf=\"item.valueColspan && !item.showLink\"\r\n                                    [colSpan]=\"item.valueColspan\"\r\n                                    [ngClass]=\"item.valueClass\"\r\n                                >\r\n                                    <span>{{ item.value | AnnaConvertZeroOrNullOrUndefined: \"-\" }}</span>\r\n\r\n                                    <!-- ICON handling -->\r\n                                    <ng-content select=\".td-icon\"></ng-content>\r\n\r\n                                    <ng-container *ngIf=\"item.name === 'Station Order#'\">\r\n                                        <ng-content select=\".td-pfp-icon\"></ng-content>\r\n                                        <!-- <i\r\n                                            *ngIf=\"data?.orderInfo?.isWriteEnabledOrder && (parentTab === 'TV Revenue' || parentTab === 'Order')\"\r\n                                            class=\"{{ ANNAIconNames.AutomationActivatedIconName }}\"\r\n                                            ngbTooltip=\"Automated\"\r\n                                            placement=\"bottom\"\r\n                                            container=\"body\"\r\n                                        ></i> -->\r\n                                    </ng-container>\r\n                                </td>\r\n                                <td\r\n                                    *ngIf=\"item.showLink\"\r\n                                    [ngClass]=\"item.valueClass\"\r\n                                    class=\"text-end\"\r\n                                    [colSpan]=\"item.valueColspan\"\r\n                                >\r\n                                    <span\r\n                                        class=\"text-link\"\r\n                                        [ngClass]=\"{\r\n                                            'disable-hiatus-link': disableHiatusPopupLink,\r\n                                            'enable-hiatus-link': !disableHiatusPopupLink\r\n                                        }\"\r\n                                        (click)=\"onLinkClicked(item.name)\"\r\n                                    >\r\n                                        {{ item.value }}\r\n                                    </span>\r\n                                </td>\r\n                            </ng-template>\r\n                        </ng-container>\r\n\r\n                        <ng-container *ngIf=\"item.isSpotGrpValue\">\r\n                            <td\r\n                                annaCoreShowEllipsisTextOnHover\r\n                                class=\"text-start\"\r\n                                [ngClass]=\"item.nameClass\"\r\n                            >\r\n                                <span class=\"font-weight-bold\"> {{ item.name }}</span>\r\n                                <i\r\n                                    *ngIf=\"item.tooltipMessageBesideName\"\r\n                                    container=\"body\"\r\n                                    [ngbTooltip]=\"item.tooltipMessageBesideName\"\r\n                                    class=\"mi mdi-info-outline info-tooltip\"\r\n                                    placement=\"bottom\"\r\n                                ></i\r\n                                ><br />\r\n                                <ng-container\r\n                                    [ngTemplateOutlet]=\"spotsValueGrpOrImps\"\r\n                                    [ngTemplateOutletContext]=\"{ name: item.name }\"\r\n                                ></ng-container>\r\n                            </td>\r\n                            <td\r\n                                annaCoreShowEllipsisTextOnHover\r\n                                class=\"text-end\"\r\n                                [ngClass]=\"item.valueClass\"\r\n                            >\r\n                                <ng-container\r\n                                    [ngTemplateOutlet]=\"revenueInfoData\"\r\n                                    [ngTemplateOutletContext]=\"{ value: item.value, name: item.name }\"\r\n                                >\r\n                                </ng-container>\r\n                            </td>\r\n                        </ng-container>\r\n                    </tr>\r\n                </ng-container>\r\n\r\n                <ng-container *ngIf=\"section === 'order'\">\r\n                    <ng-content select=\".extra-order-block-component\"></ng-content>\r\n                </ng-container>\r\n\r\n                <!-- <ng-container *ngIf=\"section === 'client'\">\r\n                    <ng-content select=\".extra-client-block-component\"></ng-content>\r\n                </ng-container> -->\r\n\r\n                <ng-container *ngIf=\"section === 'revenue'\">\r\n                    <ng-content select=\".extra-revenue-block-component\"></ng-content>\r\n                </ng-container>\r\n            </tbody>\r\n        </table>\r\n    </div>\r\n</ng-template>\r\n\r\n<ng-template\r\n    #hiatusWindowModal\r\n    let-modal\r\n>\r\n    <anna-feature-hiatus-window-popup\r\n        [hiatusInfoForPopup]=\"hiatusWindowDetailsForPopup\"\r\n        [hiatusDatesArr]=\"hiatusWindowDetailsForPopup?.hiatusDateRange\"\r\n        [saveButtonText]=\"'Send for Entry'\"\r\n        [editMode]=\"hiatusWindowDetailsForPopup?.enableEdit\"\r\n        [topInfoMessage]=\"hiatusWindowPopupTopInfoMessage\"\r\n        [popupHeaderMessage]=\"hiatusWindowPopupHeaderMessage\"\r\n        [calendarMinEnabledDate]=\"calenderStartDateForHiatusPopup\"\r\n        [calendarMaxEnabledDate]=\"calenderEndDateForHiatusPopup\"\r\n        [showSellerComments]=\"true\"\r\n        (closePopup)=\"closeModalForHiatusWindow()\"\r\n        (hiatusDatesSaved)=\"sendHiatusDatesForEntry($event)\"\r\n    >\r\n    </anna-feature-hiatus-window-popup>\r\n</ng-template>\r\n","import { CurrencyPipe } from \"@angular/common\";\r\nimport { ISvgOrIconTypeInGTTable, SvgOrIconNames, TableClassNameConstant } from \"@annalib/anna-core\";\r\nimport { TypeOfCalendar } from \"@annalib/anna-design-components-lib\";\r\nimport { OrderMetrics } from \"@annalib/anna-feature-shared-lib\";\r\nimport dayjs from \"dayjs\";\r\n\r\n// eslint-disable-next-line import/no-cycle\r\nimport { MeasurementAgencyInOrderSummary } from \"../../primary-order-panel/models/primary-order-panel.model\";\r\nimport { StatusConstants } from \"../constants/spot-details.constants\";\r\nimport { GenericSpotDetailsService } from \"../services/generic-spot-details.service\";\r\n\r\nexport type SPOTDETAILVIEWS = \"SellerView\" | \"BuyerView\";\r\n\r\nexport enum UserTypeEnum {\r\n    BUYER = \"BUYER\",\r\n    SELLER = \"SELLER\",\r\n}\r\nexport class IdText {\r\n    id: number;\r\n    text: string;\r\n    constructor(id: number, text: string) {\r\n        this.id = id;\r\n        this.text = text;\r\n    }\r\n}\r\n\r\nexport class YearQuarterFilterData {\r\n    year: number;\r\n    displayQuarters: IdText[];\r\n    constructor(obj: any) {\r\n        this.year = obj.Year;\r\n        this.displayQuarters = [];\r\n        this.displayQuarters.push(new IdText(1, \"All\"));\r\n        let i = 2;\r\n        obj.Quarters.forEach((element: any) => {\r\n            this.displayQuarters.push(new IdText(i, element.DisplayDate));\r\n            i += 1;\r\n        });\r\n    }\r\n}\r\n\r\nexport interface ISpotDataPerQuarter {\r\n    StartDate: string;\r\n    EndDate: string;\r\n    IsCurrentQuarter: boolean;\r\n    IsAllSpots: boolean;\r\n    Spots: ISpotData[];\r\n    IsPostedSpotsPresent: boolean;\r\n    IsNormalized?: boolean;\r\n    DemoId?: number;\r\n    SelectedView: \"SellerView\" | \"BuyerView\";\r\n}\r\n\r\nexport interface IGroupDataPerQuarter {\r\n    StartDate: string;\r\n    EndDate: string;\r\n    IsCurrentQuarter: boolean;\r\n    IsAllSpots: boolean;\r\n    Groups: IGroupData[];\r\n    IsNormalized?: boolean;\r\n    DemoId?: number;\r\n}\r\n\r\nexport interface IGroupData {\r\n    GroupId: string | null;\r\n    Spots: ISpotData[];\r\n}\r\n\r\nexport interface ICustomizableColumnsForSpotDetails {\r\n    name: string;\r\n    objectKey: string;\r\n    isFixed: boolean;\r\n    isChecked: boolean;\r\n}\r\n\r\nexport class IconActionForBookedRatingColumn {\r\n    id: any = 0;\r\n    data: string;\r\n\r\n    iconClass: string = \"mdi mdi-information-outline\";\r\n    showIcon: boolean = false;\r\n    disabledIcon: boolean = false;\r\n\r\n    linkClass: string;\r\n    showLink: boolean = false;\r\n    disabledLink: boolean = false;\r\n\r\n    showTooltip: boolean = false;\r\n\r\n    typeOfData: \"STRING\" | \"ICON_TEXT_ACTION\";\r\n    additionalTextBeforeLink: string;\r\n    disableTooltip: boolean = false;\r\n    tooltipData: any = {};\r\n    tooltipClass: string;\r\n    constructor(data: any, showRatingTooltip: boolean) {\r\n        this.tooltipClass = \"spot-details-info-tooltip\";\r\n        this.additionalTextBeforeLink = data.OrderedRatings == null ? \"-\" : data.OrderedRatings;\r\n        const tooltipMsgs: string[] = [];\r\n        const bookedRatingsTooltip =\r\n            showRatingTooltip && data.HighlightRatingsOrImpressions\r\n                ? `<span class=\"rate-msg\">Booked RTG is greater than ${data.UpperLimitForBookedRatingOrImpressions}% of the Projected RTG</span>`\r\n                : \"\";\r\n        if (bookedRatingsTooltip) {\r\n            tooltipMsgs.push(bookedRatingsTooltip);\r\n        }\r\n        this.tooltipData.innerHtml = \"\";\r\n        if (tooltipMsgs?.length > 1) {\r\n            tooltipMsgs.forEach((msg) => {\r\n                this.tooltipData.innerHtml += `<li>${msg}</li>`;\r\n            });\r\n        } else {\r\n            this.tooltipData.innerHtml = tooltipMsgs[0];\r\n        }\r\n\r\n        if (showRatingTooltip && data.HighlightRatingsOrImpressions) {\r\n            this.showIcon = true;\r\n            this.showTooltip = true;\r\n            this.tooltipData.tooltipTableBody = true;\r\n        }\r\n    }\r\n}\r\nexport class IconActionForBookedImpsColumn {\r\n    id: any = 0;\r\n    data: string;\r\n\r\n    iconClass: string = \"mdi mdi-information-outline\";\r\n    showIcon: boolean = false;\r\n    disabledIcon: boolean = false;\r\n\r\n    linkClass: string;\r\n    showLink: boolean = false;\r\n    disabledLink: boolean = false;\r\n\r\n    showTooltip: boolean = false;\r\n\r\n    typeOfData: \"STRING\" | \"ICON_TEXT_ACTION\";\r\n    additionalTextBeforeLink: string;\r\n    disableTooltip: boolean = false;\r\n    tooltipData: any = {};\r\n    tooltipClass: string;\r\n    constructor(data: any, showImpsTooltip: boolean) {\r\n        this.tooltipClass = \"spot-details-info-tooltip\";\r\n        this.additionalTextBeforeLink = data.OrderedImpressions == null ? \"-\" : data.OrderedImpressions;\r\n        const tooltipMsgs: string[] = [];\r\n\r\n        const bookedImpsTooltip =\r\n            showImpsTooltip && data.HighlightRatingsOrImpressions\r\n                ? `<span class=\"rate-msg\">Booked IMPS is greater than ${data.UpperLimitForBookedRatingOrImpressions}% of the Projected IMPS</span>`\r\n                : \"\";\r\n\r\n        if (bookedImpsTooltip) {\r\n            tooltipMsgs.push(bookedImpsTooltip);\r\n        }\r\n        this.tooltipData.innerHtml = \"\";\r\n        if (tooltipMsgs?.length > 1) {\r\n            tooltipMsgs.forEach((msg) => {\r\n                this.tooltipData.innerHtml += `<li>${msg}</li>`;\r\n            });\r\n        } else {\r\n            this.tooltipData.innerHtml = tooltipMsgs[0];\r\n        }\r\n\r\n        if (showImpsTooltip && data.HighlightRatingsOrImpressions) {\r\n            this.showIcon = true;\r\n            this.showTooltip = true;\r\n            this.tooltipData.tooltipTableBody = true;\r\n        }\r\n    }\r\n}\r\n\r\nexport class IconActionForBookedRateColumn {\r\n    id: any = 0;\r\n    data: string;\r\n\r\n    iconClass: string = \"mdi mdi-information-outline\";\r\n    showIcon: boolean = false;\r\n    disabledIcon: boolean = false;\r\n\r\n    linkClass: string;\r\n    showLink: boolean = false;\r\n    disabledLink: boolean = false;\r\n\r\n    showTooltip: boolean = false;\r\n\r\n    typeOfData: \"STRING\" | \"ICON_TEXT_ACTION\";\r\n    additionalTextBeforeLink: string;\r\n    disableTooltip: boolean = false;\r\n    tooltipData: any = {};\r\n    tooltipClass: string;\r\n\r\n    // tooltipData: { key: string, value: string}[] | { tooltipTableHeader: string[], tooltipTableBody: string[][], tableHeaderMsg: string[], tableFooterMsg: string[] }\r\n    constructor(data: any, showLURVoilation: boolean, showRateRtgOrImpsTooltip: boolean, metricType: OrderMetrics) {\r\n        this.tooltipClass = \"spot-details-info-tooltip\";\r\n        this.additionalTextBeforeLink = data.DisplayRate;\r\n        const tooltipMsgs: string[] = [];\r\n        let violatedTooltip = \"\";\r\n        let violatingTooltip = \"\";\r\n        if (data.IsViolating || data.IsViolated) {\r\n            if (data.IsViolated) {\r\n                violatedTooltip = data.IsViolated\r\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>`\r\n                    : \"\";\r\n                if (violatedTooltip) tooltipMsgs.push(violatedTooltip);\r\n            }\r\n            if (data.IsViolating) {\r\n                violatingTooltip += data.IsViolating\r\n                    ? `<strong>Violator spot: </strong> ${data.IsViolatingWithRebate ? \"LUR Violations with Rebate\" : \"Other Violations\"}`\r\n                    : \"\";\r\n                if (violatingTooltip) tooltipMsgs.push(violatingTooltip);\r\n            }\r\n        }\r\n        const bookedRatetooltip =\r\n            showRateRtgOrImpsTooltip && data.HighlightRate\r\n                ? `<span class=\"rate-msg\">Booked Rate is less than ${data.LowerLimitForBookedRate}% of the Booked Average Rate</span>`\r\n                : \"\";\r\n        if (bookedRatetooltip) tooltipMsgs.push(bookedRatetooltip);\r\n\r\n        this.tooltipData.innerHtml = \"<ul class='pl-16'> \";\r\n        if (tooltipMsgs?.length > 1) {\r\n            tooltipMsgs.forEach((msg) => {\r\n                this.tooltipData.innerHtml += `<li>${msg}</li>`;\r\n            });\r\n        } else {\r\n            this.tooltipData.innerHtml = tooltipMsgs[0];\r\n        }\r\n\r\n        this.tooltipData.innerHtml += \" </ul>\";\r\n\r\n        if (\r\n            (showLURVoilation && (data.IsViolating || data.IsViolated)) ||\r\n            (showRateRtgOrImpsTooltip && data.HighlightRate)\r\n        ) {\r\n            this.showIcon = true;\r\n            this.showTooltip = true;\r\n            this.tooltipData.tooltipTableBody = true;\r\n        }\r\n    }\r\n}\r\n\r\nexport enum MeasurementAgencyInSpotDetails {\r\n    NielsenMonthlies = \"Nielsen (Sweeps)\",\r\n    NielsenOvernights = \"Nielsen (Overnights)\",\r\n    ComscorePulse = \"Comscore (Pulse)\",\r\n    ComscorePerson = \"Comscore (Persons)\",\r\n}\r\n\r\nexport class SpotTableData {\r\n    SellerLine: number;\r\n    SpotNumber: number;\r\n    Origin: string;\r\n    SpotStatus: string;\r\n    DisplaytSpotStatusBI: string;\r\n    AirStatus: string;\r\n    AiredProgram: string;\r\n    SeeMG: string;\r\n    MGFor: string;\r\n    Length: string;\r\n    DP: string;\r\n    InventoryCode: string;\r\n    SellerProgInvCode: string;\r\n    Program: string;\r\n    WeekNumber: number;\r\n    Week: string;\r\n    ScheduleFlightWeek: string;\r\n    AirDateAndTime: string;\r\n    AirDate: string;\r\n    RevenueClass: string;\r\n    StartTime: string;\r\n    EndTime: string;\r\n    StartTimeForFilter: string;\r\n    EndTimeForFilter: string;\r\n    ScheduledDay: string;\r\n    BookedRate: number | string;\r\n    DisplayRate: string;\r\n    BookedRatingOrImpressions: number | string;\r\n    PostedRatingsOrImpressions: number | string;\r\n    DemoNormalizedOrderedRtgOrImp: string;\r\n    DemoNormalizedPostedRtgOrImp: string;\r\n    SpotId: string;\r\n    Metric: string;\r\n    StatusBeforeMarkingSpot: string;\r\n    IsAired: boolean;\r\n    IsPosted: boolean;\r\n    IsLateRun: boolean;\r\n    IsLURViolated: boolean;\r\n    IsMarkForMakeGood: boolean;\r\n    IsMarkForCredit: boolean;\r\n    IsBuyerRequestedForCredit: boolean;\r\n    IsSellerRequestedForCredit: boolean;\r\n    AllowUserToMarkForMakeGood: boolean;\r\n    AllowUserToMarkForCredit: boolean;\r\n    AllowUserToMarkForMakeGoodBeforeMarkingSpot: boolean;\r\n    AllowUserToMarkForCreditBeforeMarkingSpot: boolean;\r\n    AllowUserToUndoMarkForMakeGood: boolean;\r\n    AllowUserToUndoMarkForCredit: boolean;\r\n    IsPreempted: boolean;\r\n    IsDisabled: boolean;\r\n    iconClass: string;\r\n    IsSelected: boolean;\r\n    GroupId: string | null;\r\n    LastRowOfGroup: boolean;\r\n    gtClass: string;\r\n    AdId: string;\r\n    SpotDate: string;\r\n    buyerProgramName: string;\r\n    SellerProgramName: string;\r\n    BuyerLine: number;\r\n    WeeklyAUR: number | string;\r\n    DisplayWeeklyAUR: string;\r\n    AURTG: number | string;\r\n    AUIMPS: number | string;\r\n    BookedIMPS: any;\r\n    PostedImpressions: any;\r\n    PostedRating: any;\r\n    ActualPostedImpressions: number;\r\n    ActualPostedRatings: number;\r\n    ActualProjectedImpressions: number;\r\n    ActualProjectedRatings: number;\r\n    BookedRTG: number | string;\r\n    ProjectedRtg: string;\r\n    ProjectedImpressions: string;\r\n    NormalizedOrderedRating: string;\r\n    NormalizedOrderedImpressions: string;\r\n    NormalizedPostedRating: string;\r\n    NormalizedPostedImpressions: string;\r\n    StartAndEndTimeForDisplay: string;\r\n    targetLUR: string;\r\n    loweLimitForBookedRateInPercent: string;\r\n    upperLimitForBookedRateInPercent: string;\r\n    displayRateActionKey: IconActionForBookedRateColumn[];\r\n    displayRateTooltipKey: any;\r\n    displayRatingActionKey: IconActionForBookedRateColumn[];\r\n    displayRatingTooltipKey: any;\r\n    displayImpsActionKey: IconActionForBookedRateColumn[];\r\n    displayImpsTooltipKey: any;\r\n    displayGRP: string;\r\n    displayIMPS: string;\r\n    BuyerLineForDisplay: any;\r\n    originActionKey;\r\n    originTooltipKey;\r\n    IsViolating: boolean;\r\n    IsViolated: boolean;\r\n\r\n    // Had to keep pascal case\r\n    WeeklyAURatings: string;\r\n    WeeklyAUImpressions: string;\r\n    BookedRating: string;\r\n    BookedImpression: string;\r\n    RollingEstimateRating: string;\r\n    RollingEstimateImpression: string;\r\n    StationEstimateRating: string;\r\n    StationEstimateImpression: string;\r\n\r\n    estimatePriorityUpperLabelVal: string;\r\n    estimatePriorityLowerLabelVal: string;\r\n\r\n    // new keys for easy filters filtering\r\n    showIfBookedFilterSelected: boolean;\r\n    showIfBookedToDateFilterSelected: boolean;\r\n    showIfAiredFilterSelected: boolean;\r\n    showIfPostedFilterSelected: boolean;\r\n    showIfScheduledFilterSelected: boolean;\r\n    showIfToBeScheduledFilterSelected: boolean;\r\n    showIfDroppedFilterSelected: boolean;\r\n    showIfPoliticalRateViolationsFilterSelected: boolean;\r\n    showIfCandidateToCandidateViolationsFilterSelected: boolean;\r\n    showIfViolatedFilterSelected: boolean;\r\n    showIfViolatingFilterSelected: boolean;\r\n    showIfLateRunsSelected: boolean;\r\n    ActualOrderedRatings: any;\r\n    ActualOrderedImpressions: any;\r\n\r\n    measurementAgency: MeasurementAgencyInSpotDetails;\r\n    postedImpressionsActionKey: ISvgOrIconTypeInGTTable[] = [];\r\n    postedGrpActionKey: ISvgOrIconTypeInGTTable[] = [];\r\n\r\n    constructor(\r\n        estimatePriorityList: string[],\r\n        obj: any,\r\n        currencyPipe: CurrencyPipe,\r\n        showLURVoilation: boolean,\r\n        showRateRtgOrImpsTooltip: boolean,\r\n        metricType: any,\r\n        orderLevelMeasurementAgency: MeasurementAgencyInOrderSummary,\r\n    ) {\r\n        this.SellerLine = obj.LineNumber;\r\n        this.SpotNumber = obj.SpotNumber;\r\n        this.Origin = obj.Origin;\r\n        this.SpotStatus = obj.Status;\r\n        this.DisplaytSpotStatusBI = obj.DisplaytSpotStatusBI ? obj.DisplaytSpotStatusBI : \"\";\r\n        this.AirStatus = obj.AirStatus;\r\n        this.AiredProgram = obj.AiredProgram;\r\n        this.SeeMG = obj.SeeMG == null ? \"-\" : obj.SeeMG;\r\n        this.MGFor = obj.MGFor == null ? \"-\" : obj.MGFor;\r\n        this.Length = obj.Length == null ? \"-\" : obj.Length;\r\n        // this.IsciCode = obj.IsciCode;\r\n        this.DP = obj.Daypart == null ? \"-\" : obj.Daypart;\r\n        this.InventoryCode = obj.InventoryCode;\r\n        this.Program = obj.Program;\r\n        this.WeekNumber = obj.WeekNumber;\r\n        this.ScheduleFlightWeek = obj.WeekStartDate;\r\n        this.Week = dayjs(obj.WeekStartDate, \"MM/DD/YY\").format(\"MM/DD/YYYY\");\r\n        this.SpotDate = obj.SpotDate;\r\n        this.AirDateAndTime = obj.AirDateAndTime == null ? \"-\" : obj.AirDateAndTime;\r\n\r\n        if (obj.AirDateAndTime.indexOf(\"|\") > 0) {\r\n            this.AirDate =\r\n                obj.AirDateAndTime == null ? \"-\" : obj.AirDateAndTime.slice(0, obj.AirDateAndTime.indexOf(\"|\")).trim();\r\n        } else {\r\n            this.AirDate = obj.AirDateAndTime == null ? \"-\" : obj.AirDateAndTime.trim();\r\n        }\r\n\r\n        this.WeeklyAURatings = obj.WeeklyAURatings;\r\n        this.WeeklyAUImpressions = obj.WeeklyAUImpressions;\r\n        this.BookedRating = obj.BookedRating;\r\n        this.BookedImpression = obj.BookedImpression;\r\n        this.RollingEstimateRating = obj.RollingEstimateRating;\r\n        this.RollingEstimateImpression = obj.RollingEstimateImpression;\r\n        this.StationEstimateRating = obj.StationEstimateRating;\r\n        this.StationEstimateImpression = obj.StationEstimateImpression;\r\n\r\n        const estimatePriorityVal = GenericSpotDetailsService.returnEstimatePrioritiesColumnVal(\r\n            estimatePriorityList,\r\n            obj,\r\n            metricType,\r\n        );\r\n        this.estimatePriorityUpperLabelVal = estimatePriorityVal[0];\r\n        this.estimatePriorityLowerLabelVal = estimatePriorityVal[1];\r\n\r\n        this.RevenueClass = obj.RevenueClass == null ? \"-\" : obj.RevenueClass;\r\n        this.StartTime = obj.StartTime == null ? \"-\" : obj.StartTime;\r\n        this.EndTime = obj.EndTime == null ? \"-\" : obj.EndTime;\r\n        this.StartTimeForFilter = obj.StartTime == null ? \"-\" : obj.StartTimeForFilter;\r\n        this.StartAndEndTimeForDisplay = `${this.StartTime} - ${this.EndTime}`;\r\n        this.EndTimeForFilter = obj.EndTime == null ? \"-\" : obj.EndTimeForFilter;\r\n        this.ScheduledDay = obj.ScheduledDay == null ? \"-\" : obj.ScheduledDay;\r\n        this.BookedRate = obj.Rate;\r\n        // this.DisplayRate = currencyPipe.transform(obj.Rate, 'USD', 'symbol', '1.0-0');\r\n        this.DisplayRate = obj.DisplayRate;\r\n        // this.BookedRatingOrImpressions = obj.OrderedRatingsOrImpressions == null ? \"-\" : obj.OrderedRatingsOrImpressions;\r\n        this.BookedRTG = obj.OrderedRatings == null ? \"-\" : obj.OrderedRatings;\r\n        this.BookedIMPS = obj.OrderedImpressions == null ? \"-\" : obj.OrderedImpressions;\r\n        // this.PostedRatingsOrImpressions = obj.PostedRatingsOrImpressions == null ? \"-\" : obj.PostedRatingsOrImpressions;\r\n        this.PostedRating = obj.PostedRatings == null ? \"-\" : obj.PostedRatings;\r\n        this.PostedImpressions = obj.PostedImpressions == null ? \"-\" : obj.PostedImpressions;\r\n        this.ActualOrderedRatings = obj.ActualOrderedRatings === null ? \"-\" : obj.ActualOrderedRatings;\r\n        this.ActualOrderedImpressions = obj.ActualOrderedImpressions === null ? \"-\" : obj.ActualOrderedImpressions;\r\n        this.ActualPostedImpressions = obj.ActualPostedImpressions;\r\n        this.ActualPostedRatings = obj.ActualPostedRatings;\r\n\r\n        this.ActualProjectedImpressions = obj.ActualProjectedImpressions;\r\n        this.ActualProjectedRatings = obj.ActualProjectedRatings;\r\n\r\n        this.ProjectedRtg = obj.ProjectedRatings == null ? \"-\" : obj.ProjectedRatings;\r\n        this.ProjectedImpressions = obj.ProjectedImpressions == null ? \"-\" : obj.ProjectedImpressions;\r\n\r\n        // this.DemoNormalizedOrderedRtgOrImp = obj.DemoNormalizedOrderedRtgOrImp == null ? \"-\" : obj.DemoNormalizedOrderedRtgOrImp;\r\n        this.NormalizedOrderedRating =\r\n            obj.DemoNormalizedOrderedRatings == null ? \"-\" : obj.DemoNormalizedOrderedRatings;\r\n        this.NormalizedOrderedImpressions =\r\n            obj.DemoNormalizedOrderedImpressions == null ? \"-\" : obj.DemoNormalizedOrderedImpressions;\r\n        // this.DemoNormalizedPostedRtgOrImp = obj.DemoNormalizedPostedRtgOrImp == null ? \"-\" : obj.DemoNormalizedPostedRtgOrImp;\r\n        this.NormalizedPostedImpressions =\r\n            obj.DemoNormalizedPostedImpressions == null ? \"-\" : obj.DemoNormalizedPostedImpressions;\r\n        this.NormalizedPostedRating = obj.DemoNormalizedPostedRatings == null ? \"-\" : obj.DemoNormalizedPostedRatings;\r\n        // this.NormalizedPostedRating = this.NormalizedPostedImpressions = cloneDeep(this.DemoNormalizedPostedRtgOrImp);\r\n        // this.NormalizedOrderedRating = this.NormalizedOrderedImpressions = cloneDeep(this.DemoNormalizedOrderedRtgOrImp);\r\n        this.SpotId = obj.SpotId;\r\n        this.Metric = obj.Metric;\r\n        this.StatusBeforeMarkingSpot = \"\";\r\n        this.IsAired = obj.IsAired;\r\n        this.IsLateRun = obj.IsLateRun;\r\n        this.IsPosted = obj.IsPosted;\r\n        this.IsLURViolated = obj.IsLURViolated;\r\n        this.IsMarkForMakeGood = obj.IsMarkForMakeGood;\r\n        this.IsMarkForCredit = obj.IsMarkForCredit;\r\n        this.IsBuyerRequestedForCredit = obj.IsBuyerRequestedForCredit;\r\n        this.IsSellerRequestedForCredit = obj.IsSellerRequestedForCredit;\r\n        this.AllowUserToMarkForMakeGood = obj.AllowUserToMarkForMakeGood;\r\n        this.AllowUserToMarkForCredit = obj.AllowUserToMarkForCredit;\r\n        this.AllowUserToMarkForMakeGoodBeforeMarkingSpot = obj.AllowUserToMarkForMakeGood;\r\n        this.AllowUserToMarkForCreditBeforeMarkingSpot = obj.AllowUserToMarkForCredit;\r\n        this.AllowUserToUndoMarkForMakeGood = false;\r\n        this.AllowUserToUndoMarkForCredit = false;\r\n        this.IsPreempted = obj.IsPreempted;\r\n        this.IsSelected = false;\r\n        this.IsDisabled = false;\r\n        this.LastRowOfGroup = false;\r\n        this.AdId = obj.AdId === \"\" || obj.AdId === null ? \"-\" : obj.AdId;\r\n        this.gtClass = TableClassNameConstant.defaultClass;\r\n        this.BuyerLine = obj.BuyerLine;\r\n        this.BuyerLineForDisplay = obj.BuyerLine == null || obj.BuyerLine === \"\" ? \"-\" : obj.BuyerLine;\r\n        this.buyerProgramName =\r\n            obj.BuyerProgramName == null || obj.BuyerProgramName === \"\" ? \"-\" : obj.BuyerProgramName;\r\n        this.SellerProgramName = obj.SellerProgram == null || obj.SellerProgram === \"\" ? \"-\" : obj.SellerProgram;\r\n        this.SellerProgInvCode = this.InventoryCode ? `${this.SellerProgramName} (${this.InventoryCode})` : \"-\";\r\n        this.WeeklyAUR = obj.WeeklyAUR == null || obj.WeeklyAUR === \"\" ? \"-\" : obj.WeeklyAUR;\r\n        // this.DisplayWeeklyAUR = obj.WeeklyAUR == null || obj.WeeklyAUR == \"\" ? \"-\" : currencyPipe.transform(obj.WeeklyAUR, 'USD', 'symbol', '1.0-2');\r\n        this.DisplayWeeklyAUR = obj.DisplayWeeklyAUR;\r\n        this.AURTG = obj.WeeklyAURatings == null || obj.WeeklyAURatings === \"\" ? \"-\" : obj.WeeklyAURatings;\r\n        this.AUIMPS = obj.WeeklyAUImpressions == null || obj.WeeklyAUImpressions === \"\" ? \"-\" : obj.WeeklyAUImpressions;\r\n        this.displayGRP = this.AURTG.toLocaleString(\"en-us\", { minimumFractionDigits: 0, maximumFractionDigits: 2 });\r\n        this.displayIMPS = this.AUIMPS.toLocaleString(\"en-us\", { minimumFractionDigits: 0, maximumFractionDigits: 2 });\r\n\r\n        this.targetLUR = obj.TargetLUR;\r\n        this.measurementAgency = obj.MeasurementAgencyType;\r\n\r\n        this.postedImpressionsActionKey = [\r\n            {\r\n                showObjectKey: true,\r\n                svgOrIconName:\r\n                    obj.PostedImpressions &&\r\n                    this.showPulseOrOvernightIcon(this.measurementAgency, orderLevelMeasurementAgency).iconName,\r\n                svgOrIconTooltipMsg: this.showPulseOrOvernightIcon(this.measurementAgency, orderLevelMeasurementAgency)\r\n                    .tooltipText,\r\n            },\r\n        ];\r\n        this.postedGrpActionKey = [\r\n            {\r\n                showObjectKey: true,\r\n                svgOrIconName:\r\n                    obj.PostedRatings &&\r\n                    this.showPulseOrOvernightIcon(this.measurementAgency, orderLevelMeasurementAgency).iconName,\r\n                svgOrIconTooltipMsg: this.showPulseOrOvernightIcon(this.measurementAgency, orderLevelMeasurementAgency)\r\n                    .tooltipText,\r\n            },\r\n        ];\r\n\r\n        if (this.IsBuyerRequestedForCredit) {\r\n            this.iconClass = \"mi mdi-warning\";\r\n            this.gtClass = this.gtClass.concat(TableClassNameConstant.redColorStatus);\r\n        }\r\n\r\n        if ((obj.IsViolated || obj.IsViolating) && showLURVoilation) {\r\n            this.gtClass = this.gtClass.concat(TableClassNameConstant.redColorCellBorder);\r\n        }\r\n        if (obj.HighlightRate && showRateRtgOrImpsTooltip) {\r\n            this.gtClass = this.gtClass.concat(TableClassNameConstant.redColorCellBorder);\r\n        }\r\n        if (obj.HighlightRatingsOrImpressions && showRateRtgOrImpsTooltip) {\r\n            this.gtClass = this.gtClass.concat(TableClassNameConstant.orangeColorCellBorder);\r\n        }\r\n\r\n        const booledRateIconWithTooltip = new IconActionForBookedRateColumn(\r\n            obj,\r\n            showLURVoilation,\r\n            showRateRtgOrImpsTooltip,\r\n            metricType,\r\n        );\r\n        this.displayRateActionKey = [booledRateIconWithTooltip];\r\n        this.displayRateTooltipKey = this.displayRateActionKey[0].tooltipData;\r\n\r\n        const bookedRatingIconWithTooltip = new IconActionForBookedRatingColumn(obj, showRateRtgOrImpsTooltip);\r\n        this.displayRatingActionKey = [bookedRatingIconWithTooltip];\r\n        this.displayRatingTooltipKey = this.displayRatingActionKey[0].tooltipData;\r\n\r\n        const bookedImpIconWithTooltip = new IconActionForBookedImpsColumn(obj, showRateRtgOrImpsTooltip);\r\n        this.displayImpsActionKey = [bookedImpIconWithTooltip];\r\n        this.displayImpsTooltipKey = this.displayImpsActionKey[0].tooltipData;\r\n        this.IsViolating = obj.IsViolating;\r\n        this.IsViolated = obj.IsViolated;\r\n\r\n        const originActionKey = new IconAction(\r\n            obj.Origin,\r\n            obj.ExcludeFromFutureOffers\r\n                ? \"This preemption has been excluded from further attempts for MakeGoods\"\r\n                : null,\r\n            \"mdi mdi-cancel\",\r\n        );\r\n        this.originActionKey = [originActionKey];\r\n        this.originTooltipKey = this.originActionKey[0].tooltipData;\r\n\r\n        // keys for easy filters fitering\r\n        this.showIfBookedFilterSelected = GenericSpotDetailsService.isBooked(this.SpotStatus);\r\n        // this.showIfBookedToDateFilterSelected = GenericSpotDetailsService.isBookedToDate(this.AirDate, this.SpotStatus);\r\n        // change late runs here\r\n        this.showIfLateRunsSelected = GenericSpotDetailsService.isLateRunSpot(this.IsLateRun);\r\n        this.showIfAiredFilterSelected = GenericSpotDetailsService.isAired(this.IsAired);\r\n        this.showIfPostedFilterSelected = GenericSpotDetailsService.isPosted(this.IsPosted);\r\n        this.showIfScheduledFilterSelected = GenericSpotDetailsService.isScheduled(this.AirDate, this.SpotStatus);\r\n        this.showIfToBeScheduledFilterSelected = GenericSpotDetailsService.isToBeScheduled(this.SpotStatus);\r\n        this.showIfDroppedFilterSelected = GenericSpotDetailsService.isDropped(this.SpotStatus);\r\n        this.showIfPoliticalRateViolationsFilterSelected = this.IsLURViolated;\r\n        this.showIfCandidateToCandidateViolationsFilterSelected = this.IsLURViolated;\r\n        this.showIfViolatedFilterSelected = this.IsViolated;\r\n        this.showIfViolatingFilterSelected = this.IsViolating;\r\n    }\r\n\r\n    showPulseOrOvernightIcon(\r\n        measurementAgency: MeasurementAgencyInSpotDetails,\r\n        orderLevelMeasurementAgency: MeasurementAgencyInOrderSummary,\r\n    ) {\r\n        if (\r\n            orderLevelMeasurementAgency === MeasurementAgencyInOrderSummary.Comscore &&\r\n            measurementAgency === MeasurementAgencyInSpotDetails.ComscorePulse\r\n        ) {\r\n            return {\r\n                iconName: SvgOrIconNames.COM_SCORE_PULSE,\r\n                tooltipText: \"Pulse data\",\r\n            };\r\n        }\r\n        if (\r\n            orderLevelMeasurementAgency === MeasurementAgencyInOrderSummary.NielsenSweeps &&\r\n            measurementAgency === MeasurementAgencyInSpotDetails.NielsenOvernights\r\n        ) {\r\n            return {\r\n                iconName: SvgOrIconNames.NIELSEN_OVERNIGHTS,\r\n                tooltipText: \"HH Overnights\",\r\n            };\r\n        }\r\n        return {\r\n            iconName: null,\r\n            tooltipText: null,\r\n        };\r\n    }\r\n}\r\n\r\nexport class IconAction {\r\n    id: any = 0;\r\n    data: string;\r\n    iconClass: string = \"mdi mdi-information-outline\";\r\n    showIcon: boolean = false;\r\n    disabledIcon: boolean = false;\r\n    linkClass: string;\r\n    showLink: boolean = false;\r\n    disabledLink: boolean = false;\r\n    showTooltip: boolean = false;\r\n    typeOfData: \"STRING\" | \"ICON_TEXT_ACTION\";\r\n    additionalTextBeforeLink: string;\r\n    disableTooltip: boolean = false;\r\n    tooltipData: any = null;\r\n    tooltipClass: string;\r\n    constructor(data: number | string, tooltiptext: string, iconClass: string) {\r\n        this.tooltipClass = \"spot-details-info-tooltip\";\r\n        this.iconClass = iconClass;\r\n        this.additionalTextBeforeLink = `${data}`;\r\n        if (tooltiptext) {\r\n            this.showIcon = true;\r\n            this.showTooltip = true;\r\n            this.tooltipData = [\r\n                {\r\n                    key: tooltiptext,\r\n                    value: null,\r\n                },\r\n            ];\r\n        }\r\n    }\r\n}\r\n\r\nexport class TotalRowForSpotDetails {\r\n    totalSpots: number;\r\n    totalBookedRate: number | string;\r\n    totalAUR: number | string = 0;\r\n\r\n    totalRtgOrdered: number | string;\r\n    totalImpOrdered: number | string;\r\n\r\n    totalRtgPosted: number | string;\r\n    totalImpPosted: number | string;\r\n\r\n    totalRtgProjected: number | string;\r\n    totalImpsProjected: number | string;\r\n\r\n    totalClearedSpots: number | string;\r\n    clearedSpotRate: string;\r\n    clearedSpotPercentage: string;\r\n\r\n    totalNormalizedImpressionsBooked: number;\r\n    totalNormalizedRTGBooked: number;\r\n    totalNormalizedRTGPosted: number;\r\n    totalNormalizedImpressionsPosted: number;\r\n\r\n    constructor(data: SpotTableData[], currecyPipe: CurrencyPipe) {\r\n        let totalNullRate: number = 0;\r\n        let totalNullRtgOrdered: number = 0;\r\n        let totalNullImpOrdered: number = 0;\r\n        let totalNullRtgPosted: number = 0;\r\n        let totalNullImpPosted: number = 0;\r\n        let totalNullAUR: number = 0;\r\n        let totalNullRtgProjected: number = 0;\r\n        let totalNullImpsProjected: number = 0;\r\n\r\n        this.totalSpots = 0;\r\n        this.totalBookedRate = 0;\r\n        this.totalRtgOrdered = 0;\r\n        this.totalImpOrdered = 0;\r\n        this.totalRtgPosted = 0;\r\n        this.totalImpPosted = 0;\r\n        this.totalRtgProjected = 0;\r\n        this.totalImpsProjected = 0;\r\n\r\n        totalNullRtgOrdered = 0;\r\n        totalNullImpOrdered = 0;\r\n        totalNullRtgPosted = 0;\r\n        totalNullImpPosted = 0;\r\n        totalNullRate = 0;\r\n\r\n        this.totalNormalizedRTGBooked = 0;\r\n        this.totalNormalizedImpressionsBooked = 0;\r\n        this.totalNormalizedRTGPosted = 0;\r\n        this.totalNormalizedImpressionsPosted = 0;\r\n\r\n        data.forEach((row: any) => {\r\n            this.totalSpots += 1;\r\n\r\n            if (row.BookedRate === \"-\") {\r\n                totalNullRate += 1;\r\n            } else {\r\n                this.totalBookedRate += row.BookedRate;\r\n            }\r\n\r\n            if (row.WeeklyAUR === \"-\") {\r\n                totalNullAUR += 1;\r\n            } else {\r\n                this.totalAUR += row.WeeklyAUR;\r\n            }\r\n            // row.AURTG == \"-\" ? totalNullAURTG++ : (totalAURTG += row.AURTG);\r\n            // row.AUIMPS == \"-\" ? totalNullAUIMPS++ : (totalAUIMPS += row.AUIMPS);\r\n            // row.BookedRate == \"-\"\r\n            //     ? this.totalNullRtgOrdered++\r\n            //     : (this.totalRate += row.BookedRate);\r\n            if (row.ActualOrderedRatings === \"-\") {\r\n                totalNullRtgOrdered += 1;\r\n            } else {\r\n                this.totalRtgOrdered += row.ActualOrderedRatings;\r\n            }\r\n\r\n            if (row.ActualOrderedImpressions === \"-\") {\r\n                totalNullImpOrdered += 1;\r\n            } else {\r\n                this.totalImpOrdered += row.ActualOrderedImpressions;\r\n            }\r\n\r\n            if (row.PostedRating === \"-\") {\r\n                totalNullRtgPosted += 1;\r\n            } else {\r\n                this.totalRtgPosted += row.ActualPostedRatings;\r\n            }\r\n\r\n            if (row.PostedImpressions === \"-\") {\r\n                totalNullImpPosted += 1;\r\n            } else {\r\n                this.totalImpPosted += row.ActualPostedImpressions;\r\n            }\r\n\r\n            if (row.ProjectedRtg === \"-\") {\r\n                totalNullRtgProjected += 1;\r\n            } else {\r\n                this.totalRtgProjected += row.ActualProjectedRatings;\r\n            }\r\n\r\n            if (row.ProjectedImpressions === \"-\") {\r\n                totalNullImpsProjected += 1;\r\n            } else {\r\n                this.totalImpsProjected += row.ActualProjectedImpressions;\r\n            }\r\n\r\n            if (row.NormalizedOrderedRating && row.NormalizedOrderedRating !== \"-\") {\r\n                this.totalNormalizedRTGBooked += +row.NormalizedOrderedRating;\r\n            }\r\n\r\n            if (row.NormalizedOrderedImpressions && row.NormalizedOrderedImpressions !== \"-\") {\r\n                this.totalNormalizedImpressionsBooked += +row.NormalizedOrderedImpressions;\r\n            }\r\n\r\n            if (row.NormalizedPostedRating && row.NormalizedPostedRating !== \"-\") {\r\n                this.totalNormalizedRTGPosted += +row.NormalizedPostedRating;\r\n            }\r\n\r\n            if (row.NormalizedPostedImpressions && row.NormalizedPostedImpressions !== \"-\") {\r\n                this.totalNormalizedImpressionsPosted += +row.NormalizedPostedImpressions;\r\n            }\r\n        });\r\n\r\n        this.totalBookedRate =\r\n            totalNullRate === this.totalSpots\r\n                ? \"-\"\r\n                : currecyPipe.transform(Math.round(this.totalBookedRate * 100) / 100, \"USD\", \"symbol\", \"1.0-2\");\r\n\r\n        this.totalAUR =\r\n            totalNullAUR === this.totalSpots\r\n                ? \"-\"\r\n                : currecyPipe.transform(Math.round((+this.totalAUR * 100) / 100), \"USD\", \"symbol\", \"1.0-2\");\r\n        // totalAURTG = totalNullAURTG == this.totalSpots ? \"-\" : (Math.round(+totalAURTG * 100) / 100).toLocaleString('en-us', { minimumFractionDigits: 0, maximumFractionDigits: 2 });\r\n        // totalAUIMPS = totalNullAUIMPS == this.totalSpots ? \"-\" : (Math.round(+totalAUIMPS * 100) / 100).toLocaleString('en-us', { minimumFractionDigits: 0, maximumFractionDigits: 2 });\r\n\r\n        this.totalRtgOrdered =\r\n            totalNullRtgOrdered === this.totalSpots\r\n                ? \"-\"\r\n                : (Math.round(this.totalRtgOrdered * 100) / 100).toLocaleString(\"en-us\", {\r\n                      minimumFractionDigits: 0,\r\n                      maximumFractionDigits: 2,\r\n                  });\r\n        this.totalImpOrdered =\r\n            totalNullImpOrdered === this.totalSpots\r\n                ? \"-\"\r\n                : (Math.round(this.totalImpOrdered * 100) / 100).toLocaleString(\"en-us\", {\r\n                      minimumFractionDigits: 0,\r\n                      maximumFractionDigits: 1,\r\n                  });\r\n\r\n        this.totalRtgPosted =\r\n            totalNullRtgPosted === this.totalSpots\r\n                ? \"-\"\r\n                : (Math.round(this.totalRtgPosted * 100) / 100).toLocaleString(\"en-us\", {\r\n                      minimumFractionDigits: 0,\r\n                      maximumFractionDigits: 2,\r\n                  });\r\n        this.totalImpPosted =\r\n            totalNullImpPosted === this.totalSpots\r\n                ? \"-\"\r\n                : (Math.round(this.totalImpPosted * 100) / 100).toLocaleString(\"en-us\", {\r\n                      minimumFractionDigits: 0,\r\n                      maximumFractionDigits: 1,\r\n                  });\r\n\r\n        this.totalRtgProjected =\r\n            totalNullRtgProjected === this.totalSpots\r\n                ? \"-\"\r\n                : (Math.round(this.totalRtgProjected * 100) / 100).toLocaleString(\"en-us\", {\r\n                      minimumFractionDigits: 0,\r\n                      maximumFractionDigits: 2,\r\n                  });\r\n        this.totalImpsProjected =\r\n            totalNullImpsProjected === this.totalSpots\r\n                ? \"-\"\r\n                : (Math.round(this.totalImpsProjected * 100) / 100).toLocaleString(\"en-us\", {\r\n                      minimumFractionDigits: 0,\r\n                      maximumFractionDigits: 1,\r\n                  });\r\n\r\n        this.totalClearedSpots = (\r\n            data.filter((x: any) => x.SpotStatus.includes(StatusConstants.Aired)).length +\r\n            data.filter((x: any) => x.SpotStatus.includes(StatusConstants.Late)).length +\r\n            data.filter((x: any) => x.SpotStatus.includes(StatusConstants.Placed)).length\r\n        ).toLocaleString(\"en-us\");\r\n\r\n        const clearedSpotRate = data\r\n            .filter(\r\n                (x: any) =>\r\n                    x.SpotStatus === StatusConstants.Aired ||\r\n                    x.SpotStatus === StatusConstants.Placed ||\r\n                    x.SpotStatus === StatusConstants.Late,\r\n            )\r\n            .map((x: any) => x.BookedRate)\r\n            .reduce((a: any, b: any) => a + b, 0);\r\n\r\n        const bookedSpotRate = data\r\n            .filter((x: any) =>\r\n                [\r\n                    StatusConstants.Placed,\r\n                    StatusConstants.Displaced,\r\n                    StatusConstants.Late,\r\n                    StatusConstants.Preempted,\r\n                    StatusConstants.PreemptedBonus,\r\n                    StatusConstants.PreemptedDR,\r\n                    StatusConstants.PreemptedPaidProgram,\r\n                    StatusConstants.PreemptedStationUtilized,\r\n                    StatusConstants.PreemptedNoCharge,\r\n                    StatusConstants.NonSpot,\r\n                    StatusConstants.Aired,\r\n                ].includes(x.SpotStatus),\r\n            )\r\n            .map((x: any) => x.BookedRate)\r\n            .reduce((a: any, b: any) => a + b, 0);\r\n\r\n        this.clearedSpotRate = ` ${currecyPipe.transform(clearedSpotRate, \"USD\", \"symbol\", \"1.0-2\")} `;\r\n        const clearedPercentageVal = bookedSpotRate === 0 ? \"-\" : Math.round((clearedSpotRate / bookedSpotRate) * 100);\r\n        this.clearedSpotPercentage = ` (${clearedPercentageVal}%) `;\r\n    }\r\n}\r\n\r\nexport class TotalRowForSpotDetailsForGroupedData {\r\n    totalSpots: number;\r\n    totalRate: number | string;\r\n    totalNullRate: number;\r\n    totalRTGOrdered: number | string;\r\n    totalIMPSOrdered: number | string;\r\n    totalNullRTGOrdered: number;\r\n    totalNullIMPSOrdered: number;\r\n    totalRTGPosted: number | string;\r\n    totalNullRTGPosted: number;\r\n    totalIMPSPosted: number | string;\r\n    totalNullIMPSPosted: number;\r\n    totalAUR: number | string;\r\n    totalAURTG: number | string;\r\n    totalAUIMPS: number | string;\r\n    totalNullAUR: number;\r\n    totalNullAURTG: number;\r\n    totalNullAUIMPS: number;\r\n    totalNormalizedRTGBooked: number;\r\n    totalNormalizedIMPSBooked: number;\r\n    totalNormalizedRTGPosted: number;\r\n    totalNormalizedIMPSPosted: number;\r\n    totalRtgProjected: number | string;\r\n    totalImpsProjected: number | string;\r\n    constructor(data: any, currencyPipe: CurrencyPipe) {\r\n        this.totalSpots = 0;\r\n        this.totalRate = 0;\r\n        this.totalRTGOrdered = 0;\r\n        this.totalIMPSOrdered = 0;\r\n        this.totalRTGPosted = 0;\r\n        this.totalIMPSPosted = 0;\r\n        this.totalNormalizedRTGBooked = 0;\r\n        this.totalNormalizedIMPSBooked = 0;\r\n        this.totalNullRTGOrdered = 0;\r\n        this.totalNullRTGPosted = 0;\r\n        this.totalNullRate = 0;\r\n        this.totalNormalizedRTGPosted = 0;\r\n        this.totalNullIMPSOrdered = 0;\r\n        this.totalNullIMPSPosted = 0;\r\n        this.totalNormalizedIMPSPosted = 0;\r\n        this.totalAUR = 0;\r\n        this.totalAURTG = 0;\r\n        this.totalAUIMPS = 0;\r\n        this.totalRtgProjected = 0;\r\n        this.totalImpsProjected = 0;\r\n\r\n        let totalNullRtgProjected: number = 0;\r\n        let totalNullImpsProjected: number = 0;\r\n\r\n        data.forEach((group: any) => {\r\n            group.Spots.forEach((row: any) => {\r\n                if (row.IsPreempted) {\r\n                    this.totalSpots += 1;\r\n                    if (row.Rate == null || row.Rate === \"-\") {\r\n                        this.totalNullRate += 1;\r\n                    } else {\r\n                        this.totalRate += row.Rate;\r\n                    }\r\n                    if (row.ActualOrderedRatings == null || row.ActualOrderedRatings === \"-\") {\r\n                        this.totalNullRTGOrdered += 1;\r\n                    } else {\r\n                        this.totalRTGOrdered += row.ActualOrderedRatings;\r\n                    }\r\n                    if (row.ActualOrderedImpressions == null || row.ActualOrderedImpressions === \"-\") {\r\n                        this.totalNullIMPSOrdered += 1;\r\n                    } else {\r\n                        this.totalIMPSOrdered += row.ActualOrderedImpressions;\r\n                    }\r\n                    if (row.ActualPostedRatings == null || row.ActualPostedRatings === \"-\") {\r\n                        this.totalNullRTGPosted += 1;\r\n                    } else {\r\n                        this.totalRTGPosted += row.ActualPostedRatings;\r\n                    }\r\n                    if (row.ActualPostedImpressions == null || row.ActualPostedImpressions === \"-\") {\r\n                        this.totalNullIMPSPosted += 1;\r\n                    } else {\r\n                        this.totalIMPSPosted += row.ActualPostedImpressions;\r\n                    }\r\n                    this.totalImpsProjected =\r\n                        row.ActualProjectedImpressions === \"-\"\r\n                            ? this.totalImpsProjected\r\n                            : this.totalImpsProjected + row.ActualProjectedImpressions;\r\n                    this.totalRtgProjected =\r\n                        row.ActualProjectedRatings === \"-\"\r\n                            ? this.totalRtgProjected\r\n                            : this.totalRtgProjected + row.ActualProjectedRatings;\r\n\r\n                    if (row.ProjectedRatings === \"-\") {\r\n                        totalNullRtgProjected += 1;\r\n                    } else {\r\n                        this.totalRtgProjected += row.ProjectedRatings;\r\n                    }\r\n\r\n                    if (row.ProjectedImpressions === \"-\") {\r\n                        totalNullImpsProjected += 1;\r\n                    } else {\r\n                        this.totalImpsProjected += row.ProjectedImpressions;\r\n                    }\r\n\r\n                    if (row.WeeklyAUR === \"-\") {\r\n                        this.totalNullAUR += 1;\r\n                    } else {\r\n                        this.totalAUR += row.WeeklyAUR;\r\n                    }\r\n\r\n                    if (row.WeeklyAURatings === \"-\") {\r\n                        this.totalNullAURTG += 1;\r\n                    } else {\r\n                        this.totalAURTG += row.WeeklyAURatings;\r\n                    }\r\n\r\n                    if (row.WeeklyAUImpressions === \"-\") {\r\n                        this.totalNullAUIMPS += 1;\r\n                    } else {\r\n                        this.totalAUIMPS += row.WeeklyAUImpressions;\r\n                    }\r\n\r\n                    if (row.DemoNormalizedOrderedRatings && row.DemoNormalizedOrderedRatings !== \"-\") {\r\n                        this.totalNormalizedRTGBooked += +row.DemoNormalizedOrderedRatings;\r\n                    }\r\n\r\n                    if (row.DemoNormalizedOrderedImpressions && row.DemoNormalizedOrderedImpressions !== \"-\") {\r\n                        this.totalNormalizedIMPSBooked += +row.DemoNormalizedOrderedImpressions;\r\n                    }\r\n\r\n                    if (row.DemoNormalizedPostedRatings && row.DemoNormalizedPostedRatings !== \"-\") {\r\n                        this.totalNormalizedRTGPosted += row.DemoNormalizedPostedRatings;\r\n                    }\r\n\r\n                    if (row.DemoNormalizedPostedImpressions && row.DemoNormalizedPostedImpressions !== \"-\") {\r\n                        this.totalNormalizedIMPSPosted += row.DemoNormalizedPostedImpressions;\r\n                    }\r\n                }\r\n            });\r\n        });\r\n\r\n        this.totalRate =\r\n            this.totalNullRate === this.totalSpots\r\n                ? \"-\"\r\n                : currencyPipe.transform(Math.round(this.totalRate * 100) / 100, \"USD\", \"symbol\", \"1.0-2\");\r\n        this.totalRTGOrdered =\r\n            this.totalNullRTGOrdered === this.totalSpots\r\n                ? \"-\"\r\n                : (Math.round(this.totalRTGOrdered * 100) / 100).toLocaleString(\"en-us\", {\r\n                      minimumFractionDigits: 0,\r\n                      maximumFractionDigits: 2,\r\n                  });\r\n        this.totalIMPSOrdered =\r\n            this.totalNullIMPSOrdered === this.totalSpots\r\n                ? \"-\"\r\n                : (Math.round(this.totalIMPSOrdered * 100) / 100).toLocaleString(\"en-us\", {\r\n                      minimumFractionDigits: 0,\r\n                      maximumFractionDigits: 1,\r\n                  });\r\n        this.totalRTGPosted =\r\n            this.totalNullRTGPosted === this.totalSpots\r\n                ? \"-\"\r\n                : (Math.round(this.totalRTGPosted * 100) / 100).toLocaleString(\"en-us\", {\r\n                      minimumFractionDigits: 0,\r\n                      maximumFractionDigits: 2,\r\n                  });\r\n        this.totalIMPSPosted =\r\n            this.totalNullIMPSPosted === this.totalSpots\r\n                ? \"-\"\r\n                : (Math.round(this.totalIMPSPosted * 100) / 100).toLocaleString(\"en-us\", {\r\n                      minimumFractionDigits: 0,\r\n                      maximumFractionDigits: 1,\r\n                  });\r\n        this.totalAUR =\r\n            this.totalNullAUR === this.totalSpots\r\n                ? \"-\"\r\n                : currencyPipe.transform(Math.round(+this.totalAUR * 100) / 100, \"USD\", \"symbol\", \"1.0-2\");\r\n        this.totalAURTG =\r\n            this.totalNullAURTG === this.totalSpots\r\n                ? \"-\"\r\n                : (Math.round(+this.totalAURTG * 100) / 100).toLocaleString(\"en-us\", {\r\n                      minimumFractionDigits: 0,\r\n                      maximumFractionDigits: 2,\r\n                  });\r\n        this.totalAUIMPS =\r\n            this.totalNullAUIMPS === this.totalSpots\r\n                ? \"-\"\r\n                : (Math.round(+this.totalAUIMPS * 100) / 100).toLocaleString(\"en-us\", {\r\n                      minimumFractionDigits: 0,\r\n                      maximumFractionDigits: 1,\r\n                  });\r\n\r\n        this.totalRtgProjected =\r\n            totalNullRtgProjected === this.totalSpots\r\n                ? \"-\"\r\n                : (Math.round(this.totalRtgProjected * 100) / 100).toLocaleString(\"en-us\", {\r\n                      minimumFractionDigits: 0,\r\n                      maximumFractionDigits: 2,\r\n                  });\r\n        this.totalImpsProjected =\r\n            totalNullImpsProjected === this.totalSpots\r\n                ? \"-\"\r\n                : (Math.round(this.totalImpsProjected * 100) / 100).toLocaleString(\"en-us\", {\r\n                      minimumFractionDigits: 0,\r\n                      maximumFractionDigits: 2,\r\n                  });\r\n    }\r\n}\r\n\r\nexport interface ISpotData {\r\n    SpotId: string;\r\n    LineNumber: number;\r\n    SpotNumber: number;\r\n    Origin: string;\r\n    Status: string;\r\n    AirStatus: string;\r\n    AirDate: string;\r\n    AiredProgram: string;\r\n    SeeMG: string;\r\n    MGFor: string;\r\n    Length: string;\r\n    IsciCode: string;\r\n    Daypart: string;\r\n    InventoryCode: string;\r\n    Program: string;\r\n    WeekNumber: number;\r\n    WeekStartDate: string;\r\n    SpotDate: string;\r\n    AirDateAndTime: string;\r\n    ScheduledDay: string;\r\n    Rate: number;\r\n    RevenueClass: string;\r\n    StartTime: string;\r\n    EndTime: string;\r\n    StartTimeForFilter: string;\r\n    EndTimeForFilter: string;\r\n    Metric: string;\r\n    OrderedRatingsOrImpressions: number;\r\n    PostedRatingsOrImpressions: number;\r\n    BuyerProgramName: string;\r\n    BuyerLine: number;\r\n    WeeklyAUR: number;\r\n    WeeklyAURatingOrImpressions: number;\r\n    IsAired: boolean;\r\n    IsPosted: boolean;\r\n    IsLURViolated: boolean;\r\n    IsMarkForMakeGood: boolean;\r\n    IsMarkForCredit: boolean;\r\n    IsBuyerRequestedForCredit: boolean;\r\n    IsSellerRequestedForCredit: boolean;\r\n    AllowUserToMarkForMakeGood: boolean;\r\n    AllowUserToMarkForCredit: boolean;\r\n    AllowUserToMarkForMakeGoodBeforeMarkingSpot: boolean;\r\n    AllowUserToMarkForCreditBeforeMarkingSpot: boolean;\r\n    AllowUserToUndoMarkForMakeGood: boolean;\r\n    AllowUserToUndoMarkForCredit: boolean;\r\n    StatusBeforeMarkingSpot: string;\r\n    IsPreempted: boolean;\r\n    DisplaytSpotStatusBI?: string;\r\n}\r\n\r\nexport interface IMarkForCreditOrMgRequest {\r\n    OrderId: string;\r\n    StationId: number;\r\n    Spots: string[];\r\n}\r\n\r\nexport interface ISpotQuarterFilter {\r\n    IsAllSpotsSelected: boolean;\r\n    StartDate: string;\r\n    EndDate: string;\r\n    SelectedCalendarType: TypeOfCalendar;\r\n}\r\nexport interface ISpotsRequest {\r\n    OrderId: string;\r\n    StationId: number;\r\n    IsAllSpotsSelected: boolean;\r\n    IsCurrentQuarterSelected: boolean;\r\n    IsNormalized?: boolean;\r\n    StartDate: string;\r\n    EndDate: string;\r\n    StandardDemoId?: number;\r\n}\r\n\r\nexport interface OrderInfoForSpotDetails {\r\n    campaignStartDate: string;\r\n    campaignEndDate: string;\r\n    is_DR_order?: boolean;\r\n    orderId: string;\r\n    channelId: string;\r\n    orderFlightStatus: string;\r\n    orderType: string;\r\n}\r\n\r\nexport type QuarterFilter = { startDate: string; endDate: string; isAll: boolean };\r\nexport type MgCreditType = \"Credit\" | \"MakeGood\";\r\n","// Angular import statements\r\nimport { AsyncPipe, CurrencyPipe, NgClass, NgFor, NgIf } from \"@angular/common\";\r\nimport {\r\n    ChangeDetectionStrategy,\r\n    ChangeDetectorRef,\r\n    Component,\r\n    EventEmitter,\r\n    Inject,\r\n    Input,\r\n    OnChanges,\r\n    OnDestroy,\r\n    Output,\r\n    SimpleChanges,\r\n    TemplateRef,\r\n    ViewChild,\r\n} from \"@angular/core\";\r\nimport { Router } from \"@angular/router\";\r\nimport {\r\n    AnnaCoreModule,\r\n    AnnaFilterService,\r\n    AnnaGlobalConfigService,\r\n    AnnaGtHelperService,\r\n    AnnaNonEditableGenericTableComponent,\r\n    AnnaPersistingFilterService,\r\n    AnnaSortService,\r\n    ButtonToggleComponent,\r\n    ButtonToggleOptions,\r\n    ICustomSingleSelect,\r\n    IGtGeneralConfig,\r\n    IGtTableHeader,\r\n    INgSelectSettings,\r\n    ITotalRowInfo,\r\n    TableClassNameConstant,\r\n} from \"@annalib/anna-core\";\r\nimport {\r\n    AnnaDesignComponentsLibModule,\r\n    CalendarQuarterYearFilterService,\r\n    IdTextForSingleSelect,\r\n    NormalizedData,\r\n    OrderContainerFilterModal,\r\n    PeriodSelectionPopUp,\r\n    StartDateConsideringFactor,\r\n    TypeOfCalendar,\r\n} from \"@annalib/anna-design-components-lib\";\r\nimport { OrderMetrics, PrimaryOrderPanelService } from \"@annalib/anna-feature-shared-lib\";\r\n// Third party import statements\r\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport dayjs from \"dayjs\";\r\nimport { cloneDeep, isEqual, sortBy } from \"lodash-es\";\r\nimport { NgxSkeletonLoaderModule } from \"ngx-skeleton-loader\";\r\nimport { Subject } from \"rxjs\";\r\n\r\nimport { DateAndAllKeyType } from \"../audience-performance/models/audiencePerformance.model\";\r\nimport {\r\n    MeasurementAgencyInOrderSummary,\r\n    PrimaryDetails,\r\n} from \"../primary-order-panel/models/primary-order-panel.model\";\r\nimport {\r\n    ISpotDetailsBackendService,\r\n    SPOT_DETAILS_PAGE_SERVICE_TOKEN,\r\n} from \"./config/spot-details-backend-service.token\";\r\n// User defined import statements\r\nimport { EasyFilterConstants, StatusConstants } from \"./constants/spot-details.constants\";\r\nimport { ESTIMATEPRIORITIES } from \"./models/generic-spot-details.model\";\r\nimport {\r\n    ICustomizableColumnsForSpotDetails,\r\n    IGroupData,\r\n    IGroupDataPerQuarter,\r\n    IMarkForCreditOrMgRequest,\r\n    ISpotData,\r\n    ISpotDataPerQuarter,\r\n    ISpotQuarterFilter,\r\n    MgCreditType,\r\n    SPOTDETAILVIEWS,\r\n    SpotTableData,\r\n    TotalRowForSpotDetails,\r\n    TotalRowForSpotDetailsForGroupedData,\r\n    UserTypeEnum,\r\n} from \"./models/spot-details.model\";\r\nimport { GenericSpotDetailsService } from \"./services/generic-spot-details.service\";\r\nimport { SpotDetailsService } from \"./services/spot-details.service\";\r\n\r\n@Component({\r\n    selector: \"anna-feature-lib-spot-details\",\r\n    templateUrl: \"./spot-details.component.html\",\r\n    styleUrls: [\"./spot-details.component.scss\"],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    imports: [\r\n        NgIf,\r\n        AnnaDesignComponentsLibModule,\r\n        NgFor,\r\n        NgClass,\r\n        AnnaCoreModule,\r\n        NgxSkeletonLoaderModule,\r\n        ButtonToggleComponent,\r\n        AsyncPipe,\r\n    ],\r\n})\r\nexport class SpotDetailsComponent implements OnChanges, OnDestroy {\r\n    @Input() showNormalizationToggle: boolean;\r\n    @Input() primaryOrderData: PrimaryDetails;\r\n    @Input() spotData: ISpotData[] = [];\r\n    @Input() groupedData: IGroupData[] = [];\r\n    @Input() tableHeaders: IGtTableHeader[];\r\n    @Input() showMarkForCreditBtn: boolean;\r\n    @Input() showMarkForMakegoodBtn: boolean;\r\n    @Input() showCheckboxColumn: boolean = true;\r\n    @Input() showAUR: boolean = false;\r\n    @Input() showSkeletonLoading: boolean;\r\n    @Input() filtersAreAlreadyApplied: boolean;\r\n    @Input() filtersFromRoute: any;\r\n    @Input() persistingFilterPeriodData: PeriodSelectionPopUp;\r\n    @Input() gtGeneralConfig: IGtGeneralConfig;\r\n    @Input() queryParams: any;\r\n    @Input() normalizationDemographics: IdTextForSingleSelect[];\r\n    @Input() selectedNormalization: NormalizedData;\r\n    @Input() backdate: string;\r\n    @Input() showCleaerdSpotsAndAmount: boolean = true;\r\n    @Input() showLURVoilationInfo: boolean = true;\r\n    @Input() isCandidateViolation: boolean = true;\r\n    @Input() showRateRtgOrImpsTooltip: boolean = true;\r\n    @Input() APIFailed: boolean = false;\r\n    @Input() orderDefaultMetricType: OrderMetrics = null;\r\n    @Input() estimatePriorities: string[] = [];\r\n    @Input() showSellerViewToggle: boolean = false;\r\n    @Input() showBuyerViewToggle: boolean = false;\r\n    @Input() defaultView: SPOTDETAILVIEWS;\r\n    @Input() selectedView: SPOTDETAILVIEWS;\r\n    @Input() userType: UserTypeEnum = UserTypeEnum.SELLER;\r\n\r\n    @Output() viewToggled = new EventEmitter<SPOTDETAILVIEWS>();\r\n    @Output() fetchDataFromBackend = new EventEmitter<ISpotQuarterFilter>();\r\n    @Output() periodSelectionChanged = new EventEmitter<ISpotQuarterFilter>();\r\n    @Output() anyFilterAppliedToTable = new EventEmitter<ISpotQuarterFilter>();\r\n    @Output() resetFilterOutput = new EventEmitter<ISpotQuarterFilter>();\r\n    @Output() normalizationToggledOrDemoSelectionChanged = new EventEmitter<NormalizedData>();\r\n    @Output() metricTypeDropdownChanged = new EventEmitter<string>();\r\n    @Output() initialQuarterStartEndDateEmitter = new EventEmitter();\r\n\r\n    // orderId: string;\r\n    // stationId: string;\r\n    gtDimension: {\r\n        rowHeight: number;\r\n        headerHeight: number;\r\n        dataOnTopHeight: number;\r\n        marginFromBottom: number;\r\n    } = { rowHeight: 40, headerHeight: 40, dataOnTopHeight: null, marginFromBottom: 0 };\r\n\r\n    selectedMetric: { id: number; text: OrderMetrics } = null;\r\n    orderMetricsListForDropdown: { id: number; text: OrderMetrics }[];\r\n    metricDropdownConfig: ICustomSingleSelect;\r\n\r\n    ngbModalOptions: any;\r\n    // confirmationCreditOrMgModalReference: any;\r\n    customizeColumnsModalReference: any;\r\n\r\n    selectedFilterStartDate: string;\r\n    selectedFilterEndDate: string;\r\n    loggedInUserEmail: string;\r\n    periodModalTitle: string;\r\n    selectedStartDate: string;\r\n    selectedEndDate: string;\r\n    periodModalMessage: string;\r\n    initialAppliedEasyFilter: string;\r\n    // mgOrCredit: MgCreditType;\r\n    undoSpotId: string;\r\n    disablePeriodSelection: boolean = false;\r\n    flightPeriodData: { statDate: string; endDate: string };\r\n\r\n    isUndo: boolean;\r\n    // undoCreditedSpots: boolean;\r\n    // undoMgSpots: boolean;\r\n    isRevertCustomizedColumns: boolean;\r\n    disableCustomizeColumnsBtn: boolean;\r\n    selectedFilterIsAllSpot: boolean;\r\n    buyerRequestedSpotExists: boolean;\r\n    isNoData: boolean = false;\r\n    disableClearAllBtn: boolean = true;\r\n    // spotsSelectedToMarkForMg: boolean = false;\r\n    // spotsSelectedToMarkForCredit: boolean = false;\r\n\r\n    spotDataCache: ISpotDataPerQuarter[] = [];\r\n    groupedSpotsDataCache: IGroupDataPerQuarter[] = [];\r\n\r\n    totalRowInfo: ITotalRowInfo[];\r\n    tableData: SpotTableData[] = [];\r\n    tableDataCloned: SpotTableData[] = [];\r\n    tableHeadersCloned: IGtTableHeader[];\r\n    easyFilterNames: string[];\r\n    groupedTableData: any[];\r\n\r\n    noDataWidth: string = \"55%\";\r\n    ngSelectConfig: INgSelectSettings;\r\n\r\n    easyFilterMap: Map<string, { active: boolean; disabled: boolean }>;\r\n    customizableColumnsList: ICustomizableColumnsForSpotDetails[];\r\n    customizableColumnsListCloned: ICustomizableColumnsForSpotDetails[];\r\n    quarterFilterConstant = OrderContainerFilterModal;\r\n    startDateConsideringFactor: StartDateConsideringFactor;\r\n    enabledFiltersCount: number;\r\n    genericTableClass: string = \"spot-details-table\";\r\n    easyFilterConstants = EasyFilterConstants;\r\n\r\n    // @ViewChild('confirmationCreditOrMgModal') confirmationCreditOrMgModal: TemplateRef<any>;\r\n    @ViewChild(\"customizeColumnsModal\") customizeColumnsModal: TemplateRef<any>;\r\n    @ViewChild(AnnaNonEditableGenericTableComponent) nonEditableGTComponent: AnnaNonEditableGenericTableComponent;\r\n    protected ngUnsubscribe: Subject<void> = new Subject<void>();\r\n    initialNormalizationVal: NormalizedData;\r\n    selectedCalendarType: TypeOfCalendar;\r\n    showLateRunsEasyFilter: boolean = false;\r\n    buttonToggleOptions: ButtonToggleOptions[] = [];\r\n    measurementAgency: MeasurementAgencyInOrderSummary;\r\n\r\n    constructor(\r\n        private router: Router,\r\n        private modalService: NgbModal,\r\n        private cdRef: ChangeDetectorRef,\r\n        private annaSortService: AnnaSortService,\r\n        public annaFilterService: AnnaFilterService,\r\n        private annaGlobalConfig: AnnaGlobalConfigService,\r\n        private quarterFilterService: CalendarQuarterYearFilterService,\r\n        private annaSpotDetailsService: SpotDetailsService,\r\n        private annaGtService: AnnaGtHelperService,\r\n        protected primaryOrderPanelService: PrimaryOrderPanelService,\r\n        @Inject(SPOT_DETAILS_PAGE_SERVICE_TOKEN)\r\n        public consumingProjectSpotDetailsBackendService: ISpotDetailsBackendService,\r\n        private persistingFilterService: AnnaPersistingFilterService,\r\n        private currencyPipe: CurrencyPipe,\r\n    ) {\r\n        this.setMetricDropdownConfig();\r\n        this.settingConfig();\r\n    }\r\n\r\n    ngOnChanges(changes: SimpleChanges) {\r\n        if (\r\n            (changes.orderDefaultMetricType?.currentValue || changes.filtersFromRoute?.currentValue) &&\r\n            !this.annaSpotDetailsService.filtersAppliedRouteChange\r\n        ) {\r\n            const metricTypeToApply = this.filtersFromRoute?.metricType\r\n                ? JSON.parse(this.filtersFromRoute?.metricType)\r\n                : this.orderDefaultMetricType;\r\n            if (metricTypeToApply) {\r\n                this.selectedMetric =\r\n                    metricTypeToApply === OrderMetrics.imps\r\n                        ? this.orderMetricsListForDropdown[1]\r\n                        : this.orderMetricsListForDropdown[0];\r\n                this.metricTypeDropdownChanged.emit(this.selectedMetric?.text);\r\n                this.resetTableHeadersBasedOnNormalizationValue(\r\n                    this.selectedNormalization && this.selectedNormalization.toggle,\r\n                );\r\n            }\r\n        }\r\n\r\n        this.annaSpotDetailsService.filtersAppliedRouteChange = false;\r\n        if (changes.tableHeaders && changes.tableHeaders.currentValue) {\r\n            this.tableHeadersCloned = cloneDeep(this.tableHeaders);\r\n        }\r\n        if (\r\n            changes.backdate &&\r\n            changes.backdate.currentValue &&\r\n            changes.backdate.currentValue !== changes.backdate.previousValue &&\r\n            this.tableData\r\n        ) {\r\n            this.enableOrDisableEasyFilters(this.tableData, true);\r\n        }\r\n        if (changes.spotData && changes.spotData.currentValue && changes.spotData.currentValue.length) {\r\n            const spotsRequestPayload = this.getFilterPaylod();\r\n            this.processSpotAndGroupedSpotData(spotsRequestPayload);\r\n            this.metricTypeDropdownChanged.emit(this.selectedMetric?.text);\r\n            this.resetTableHeadersBasedOnNormalizationValue(\r\n                this.selectedNormalization && this.selectedNormalization.toggle,\r\n            );\r\n        }\r\n        if (!this.showSkeletonLoading && !this.spotData.length) {\r\n            this.noDataCase();\r\n        }\r\n        if (changes.primaryOrderData && changes.primaryOrderData.currentValue) {\r\n            this.intialiseData();\r\n            this.disablePeriodSelection = this.primaryOrderData.orderInfo.orderType === \"UD (Liability set)\";\r\n            this.showLateRunsEasyFilter =\r\n                this.primaryOrderData.orderInfo.orderCategory === \"TV Revenue\" && this.userType === UserTypeEnum.SELLER;\r\n            this.measurementAgency = this.primaryOrderData.orderInfo.measurementAgency;\r\n        }\r\n        if (!this.showSkeletonLoading && !this.spotData.length) {\r\n            this.noDataCase();\r\n        }\r\n        if (changes.selectedNormalization && changes.selectedNormalization.currentValue) {\r\n            this.resetTableHeadersBasedOnNormalizationValue(\r\n                this.selectedNormalization && this.selectedNormalization.toggle,\r\n            );\r\n        }\r\n        // if (changes['isCandidateViolation'] && changes['isCandidateViolation'].currentValue) {\r\n        //   this.initializeEasyFilterMap(this.tableData);\r\n        // }\r\n        if (this.showSellerViewToggle) {\r\n            const sellerViewIndex = this.buttonToggleOptions.findIndex((option) => option.value === \"SellerView\");\r\n            if (sellerViewIndex === -1) {\r\n                this.buttonToggleOptions.push({\r\n                    label: \"Seller View\",\r\n                    value: \"SellerView\",\r\n                    disabled: false,\r\n                });\r\n            }\r\n\r\n            // check if this should be disabled if !showBuyerLine\r\n        }\r\n\r\n        if (this.showBuyerViewToggle) {\r\n            const buyerViewIndex = this.buttonToggleOptions.findIndex((option) => option.value === \"BuyerView\");\r\n            if (buyerViewIndex === -1) {\r\n                this.buttonToggleOptions.push({ label: \"Buyer View\", value: \"BuyerView\", disabled: false });\r\n            }\r\n        }\r\n    }\r\n\r\n    // setGTDimensions() {\r\n    //   this.gtDimension = {\r\n    //     ...this.gtDimension,\r\n    //     rowHeight: 50,\r\n    //     dataOnTopHeight: 200\r\n    //   };\r\n    // }\r\n\r\n    intialiseData() {\r\n        // this.annaFilterService.resetFilterSortActiveStatus = false;\r\n        this.flightPeriodData = {\r\n            statDate: this.primaryOrderData.campaignStartDate,\r\n            endDate: this.primaryOrderData.campaignEndDate,\r\n        };\r\n        // this.undoMgSpots = this.undoCreditedSpots = this.spotsSelectedToMarkForCredit = this.spotsSelectedToMarkForMg = false;\r\n        this.startDateConsideringFactor =\r\n            this.primaryOrderData.orderInfo.orderFlightStatus === \"COMPLETED\"\r\n                ? StartDateConsideringFactor.FLIGHT_END_DATE\r\n                : StartDateConsideringFactor.FLIGHT_START_DATE;\r\n        this.initialNormalizationVal = {\r\n            toggle: false,\r\n            demoId: null,\r\n        };\r\n    }\r\n\r\n    processSpotAndGroupedSpotData(spotsRequestPayload: ISpotQuarterFilter) {\r\n        this.processGroupedSpotsDataResponse(spotsRequestPayload);\r\n        this.processSpotDataResponse(spotsRequestPayload);\r\n\r\n        if (this.filtersAreAlreadyApplied) {\r\n            if (this.annaFilterService.tooltipSelectedMap.has(EasyFilterConstants.GroupedPEAndMG)) {\r\n                this.filterGroupData();\r\n            } else {\r\n                const easyBtnFilteredData = this.getEasyBtnFilteredData(this.tableDataCloned, \"\");\r\n                let keyToSkip = \"\";\r\n                this.annaFilterService.tooltipSelectedMap.forEach((value, key) => {\r\n                    if (\r\n                        this.annaSpotDetailsService.easyFiltersInSpotDetails.has(key) ||\r\n                        this.annaSpotDetailsService.easyFiltersKeysInSpotDetails.has(key)\r\n                    ) {\r\n                        keyToSkip = key;\r\n                    }\r\n                });\r\n\r\n                this.tableData =\r\n                    easyBtnFilteredData != null\r\n                        ? cloneDeep(this.annaFilterService.filterData(easyBtnFilteredData, keyToSkip))\r\n                        : cloneDeep(this.annaFilterService.filterData(this.tableDataCloned, \"\"));\r\n                this.annaSortService.noSortingAppliedData = cloneDeep(this.tableData);\r\n                setTimeout(() => {\r\n                    this.annaSortService.columnSortState = this.filtersFromRoute?.sortState\r\n                        ? new Map(JSON.parse(this.filtersFromRoute?.sortState))\r\n                        : new Map();\r\n                    this.callSort();\r\n                    this.annaFilterService.updateStateOfAllTheKeys(this.annaSortService.columnSortState);\r\n                    this.nonEditableGTComponent.detectChanges();\r\n                }, 0);\r\n                if (\r\n                    !this.primaryOrderData.orderInfo?.isDrOrder &&\r\n                    !this.easyFilterMap.get(EasyFilterConstants.Booked).disabled &&\r\n                    this.filtersFromRoute?.easyFilters !== EasyFilterConstants.UnSelectedBooked\r\n                ) {\r\n                    this.initialAppliedEasyFilter = EasyFilterConstants.Booked;\r\n                }\r\n                // if(this.filtersFromRoute?.easyFilters === EasyFilterConstants.UnSelectedBooked){\r\n                //     this.easyFilterClicked(EasyFilterConstants.Booked);\r\n                // }\r\n                // this.tableData = this.annaSortService.callSort(this.tableData);\r\n                this.enableOrDisableUndoAllMarkForCreditAndMg();\r\n                this.enableOrDisableMarkForCreditAndMg();\r\n                this.enableOrDisableHeaderCheckbox();\r\n                this.enableOrDisableClearAllBtn();\r\n                this.createTotalRow(this.tableData);\r\n                this.cdRef.detectChanges();\r\n            }\r\n        }\r\n    }\r\n    initializePeriodFilter(startEndDateObj: { startDate: string; endDate: string }) {\r\n        this.initialQuarterStartEndDateEmitter.emit(startEndDateObj);\r\n    }\r\n    setSelectedFilterValue(value: DateAndAllKeyType) {\r\n        this.selectedFilterIsAllSpot = value.isEntireFlightPeriod;\r\n        this.selectedFilterStartDate = value.startDate;\r\n        this.selectedFilterEndDate = value.endDate;\r\n        this.selectedCalendarType = value.selectedCalendarType;\r\n    }\r\n\r\n    getFilterPaylod(): ISpotQuarterFilter {\r\n        return {\r\n            StartDate: this.selectedFilterStartDate,\r\n            EndDate: this.selectedFilterEndDate,\r\n            IsAllSpotsSelected: this.selectedFilterIsAllSpot,\r\n            SelectedCalendarType: this.selectedCalendarType,\r\n        };\r\n    }\r\n\r\n    initializeVariables() {\r\n        // this.orderId = this.orderInfo.orderId;\r\n        // this.stationId = this.orderInfo.channelId;\r\n        // this.undoMgSpots = this.undoCreditedSpots = this.spotsSelectedToMarkForCredit = this.spotsSelectedToMarkForMg = false;\r\n        this.spotDataCache = [];\r\n        this.groupedSpotsDataCache = [];\r\n        this.isNoData = false;\r\n    }\r\n\r\n    setGtGeneralConfig() {\r\n        this.gtGeneralConfig.totalRow = true;\r\n        this.gtGeneralConfig.component = \"SPOTDETAILS\";\r\n        this.gtGeneralConfig.verticalScrollOffsetForFilterTooltip = 230;\r\n\r\n        this.gtGeneralConfig.multiWeekPickerConfig = { ...this.annaGlobalConfig.defaultWeekCalendarConfig };\r\n        this.gtGeneralConfig.multiWeekPickerConfig.numberOfMonthsToEnableInPast = 6;\r\n        this.gtGeneralConfig.multiWeekPickerConfig.selectMultipleWeeks = true;\r\n        this.gtGeneralConfig.multiWeekPickerConfig.maxWeeksToShowWithRemainingCount = 3;\r\n        this.gtGeneralConfig.multiWeekPickerConfig.maxWeeksToSelect = 13;\r\n        this.gtGeneralConfig.multiWeekPickerConfig.showAsDropdown = false;\r\n        // disable table header checkbox if no spot is selectable\r\n        this.enableOrDisableHeaderCheckbox();\r\n\r\n        // change header to IMP\r\n        // if (this.tableData[0].Metric === \"CPM\") {\r\n        //   let changedTableHeaders = cloneDeep(this.tableHeaders);\r\n        //   let i = changedTableHeaders.findIndex(obj => obj.headerInfo[0].name === TableColumnNameConstants.BookedRating);\r\n        //   if (i !== -1) {\r\n        //     changedTableHeaders[i].headerInfo[0].name = TableColumnNameConstants.BookedIMPS;\r\n        //     i = changedTableHeaders.findIndex(obj => obj.headerInfo[0].name === TableColumnNameConstants.PostedRating);\r\n        //     changedTableHeaders[i].headerInfo[0].name = TableColumnNameConstants.PostedIMPS;\r\n\r\n        //     this.tableHeaders = cloneDeep(changedTableHeaders);\r\n        //   }\r\n        //   // i = this.customizableColumnsList.findIndex(obj => obj.objectKey === \"OrderedRatingsOrImpressions\");\r\n        //   // if (i !== -1) {\r\n        //   //   this.customizableColumnsList[i].name = CustomizableColumnNameConstants.ImpressionsOrdered;\r\n        //   //   i = this.customizableColumnsList.findIndex(obj => obj.objectKey === \"PostedRatingsOrImpressions\");\r\n        //   //   this.customizableColumnsList[i].name = CustomizableColumnNameConstants.ImpressionsPosted;\r\n        //   // }\r\n        //   // i = this.customizableColumnsList.findIndex(obj => obj.name === CustomizableColumnNameConstants.AURating);\r\n        //   // if (i !== -1) {\r\n        //   //   this.customizableColumnsList[i].name = CustomizableColumnNameConstants.AUImpression;\r\n        //   // }\r\n\r\n        //   // // this.tableHeadersCloned = cloneDeep(this.tableHeaders);\r\n        //   // this.customizableColumnsListCloned = cloneDeep(this.customizableColumnsList);\r\n        // }\r\n        // else {\r\n        // this.tableHeadersCloned = cloneDeep(this.tableHeaders);\r\n        // this.customizableColumnsListCloned = this.annaSpotDetailsService.getCustomizableColumnsListForSpotDetails(this.showAUR);\r\n        // }\r\n    }\r\n\r\n    enableOrDisableHeaderCheckbox() {\r\n        this.gtGeneralConfig.disableHeaderCheckbox =\r\n            this.tableData.findIndex(\r\n                (obj) =>\r\n                    obj.SpotStatus !== StatusConstants.MarkedForCredit &&\r\n                    obj.SpotStatus !== StatusConstants.MarkedForMG &&\r\n                    (obj.AllowUserToMarkForCredit || obj.AllowUserToMarkForMakeGood),\r\n            ) === -1;\r\n    }\r\n\r\n    initializeCustomizeColumns() {\r\n        // if (this.filtersAreAlreadyApplied) {\r\n        //   this.customizableColumnsList = this.filtersFromRoute.selectedColumns;\r\n        // }\r\n        // else {\r\n        this.customizableColumnsList = this.annaSpotDetailsService.getCustomizableColumnsListForSpotDetails(\r\n            this.showAUR,\r\n        );\r\n        this.customizableColumnsListCloned = this.annaSpotDetailsService.getCustomizableColumnsListForSpotDetails(\r\n            this.showAUR,\r\n        );\r\n        // }\r\n        this.tableHeaders = cloneDeep(this.tableHeaders);\r\n        this.customizableColumnsList.forEach((column) => {\r\n            if (!column.isFixed && column.isChecked) {\r\n                const i = this.tableHeaders.findIndex((obj) => obj.headerInfo[0].objectKey === column.objectKey);\r\n                this.tableHeaders[i].visible = true;\r\n            }\r\n        });\r\n    }\r\n\r\n    initializeEasyFilterMap(tableData: SpotTableData[]) {\r\n        this.easyFilterNames = this.annaSpotDetailsService.getEasyFilterNames(\r\n            this.showLURVoilationInfo,\r\n            this.isCandidateViolation,\r\n            this.selectedView,\r\n            this.userType === UserTypeEnum.BUYER,\r\n        );\r\n        this.enableOrDisableEasyFilters(tableData, true);\r\n\r\n        if (\r\n            this.filtersAreAlreadyApplied &&\r\n            this.filtersFromRoute &&\r\n            this.filtersFromRoute.easyFilters &&\r\n            this.filtersFromRoute.easyFilters !== EasyFilterConstants.UnSelectedBooked\r\n        ) {\r\n            const val = this.easyFilterMap.get(this.filtersFromRoute.easyFilters);\r\n            val.active = true;\r\n            this.easyFilterMap.set(this.filtersFromRoute.easyFilters, val);\r\n        }\r\n    }\r\n\r\n    enableOrDisableEasyFilters(tableData: SpotTableData[], newMap: boolean) {\r\n        this.easyFilterNames = this.annaSpotDetailsService.getEasyFilterNames(\r\n            this.showLURVoilationInfo,\r\n            this.isCandidateViolation,\r\n            this.selectedView,\r\n            this.userType === UserTypeEnum.BUYER,\r\n        );\r\n\r\n        if (newMap) {\r\n            this.easyFilterMap = new Map();\r\n        }\r\n\r\n        const today = dayjs(GenericSpotDetailsService.backDate, \"YYYY-MM-DD\").format(\"MM/DD/YYYY\");\r\n        let isActive: boolean = false;\r\n        const easyFiltersEnabledMap: Map<string, boolean> = new Map();\r\n        const easyFiltersActiveMap: Map<string, boolean> = new Map();\r\n        let easyFiltersEnabledValues: Set<boolean> = new Set();\r\n        // disabling all inactive filters by default\r\n        this.easyFilterNames.forEach((filter) => {\r\n            if (filter !== EasyFilterConstants.GroupedPEAndMG) {\r\n                easyFiltersEnabledMap.set(filter, false);\r\n            }\r\n            if (newMap) {\r\n                isActive = false;\r\n            } else {\r\n                isActive = this.easyFilterMap.has(filter) ? this.easyFilterMap.get(filter).active : false;\r\n            }\r\n            if (!isActive) {\r\n                this.easyFilterMap.set(filter, { active: isActive, disabled: true });\r\n            } else {\r\n                this.easyFilterMap.set(filter, { active: isActive, disabled: false });\r\n            }\r\n            easyFiltersActiveMap.set(filter, isActive);\r\n        });\r\n        // enabling filters if data for it is present\r\n        tableData.forEach((data) => {\r\n            easyFiltersEnabledValues = new Set(easyFiltersEnabledMap.values());\r\n            if (!easyFiltersEnabledValues.has(false)) {\r\n                return;\r\n            }\r\n\r\n            if (\r\n                [\r\n                    StatusConstants.Placed,\r\n                    StatusConstants.Displaced,\r\n                    StatusConstants.Late,\r\n                    StatusConstants.Preempted,\r\n                    StatusConstants.PreemptedBonus,\r\n                    StatusConstants.PreemptedDR,\r\n                    StatusConstants.PreemptedPaidProgram,\r\n                    StatusConstants.PreemptedStationUtilized,\r\n                    StatusConstants.PreemptedNoCharge,\r\n                    StatusConstants.NonSpot,\r\n                    StatusConstants.Aired,\r\n                ].includes(data.SpotStatus)\r\n            ) {\r\n                this.easyFilterMap.set(EasyFilterConstants.Booked, {\r\n                    active: easyFiltersActiveMap.get(EasyFilterConstants.Booked),\r\n                    disabled: false,\r\n                });\r\n                easyFiltersEnabledMap.set(EasyFilterConstants.Booked, true);\r\n            }\r\n            // if (\r\n            //     dayjs(data.AirDate, 'MM/DD/YYYY').isBefore(today) &&\r\n            //     !this.easyFilterMap.get(EasyFilterConstants.Booked).disabled\r\n            // ) {\r\n            //     this.easyFilterMap.set(EasyFilterConstants.BookedToDate, {\r\n            //         active: easyFiltersActiveMap.get(EasyFilterConstants.BookedToDate),\r\n            //         disabled: false,\r\n            //     });\r\n            //     easyFiltersEnabledMap.set(EasyFilterConstants.BookedToDate, true);\r\n            // }\r\n            // if ([StatusConstants.PreemptedAndMadeGood, StatusConstants.Credited,\r\n            //   StatusConstants.Unresolved, StatusConstants.Removed].includes(data.Status)) {\r\n            //     this.easyFilterMap.set(EasyFilterConstants.Removed, { active: easyFiltersActiveMap.get(EasyFilterConstants.Removed), disabled: false });\r\n            //     easyFiltersEnabledMap.set(EasyFilterConstants.Removed, true);\r\n            // }\r\n            // if (data.Status === StatusConstants.Late) {\r\n            //   this.easyFilterMap.set(EasyFilterConstants.Late, { active: easyFiltersActiveMap.get(EasyFilterConstants.Late), disabled: false });\r\n            //   easyFiltersEnabledMap.set(EasyFilterConstants.Late, true);\r\n            // }\r\n            if (\r\n                [StatusConstants.Placed].includes(data.SpotStatus) &&\r\n                dayjs(data.AirDate, \"MM/DD/YYYY\").isSameOrAfter(today)\r\n            ) {\r\n                this.easyFilterMap.set(EasyFilterConstants.Scheduled, {\r\n                    active: easyFiltersActiveMap.get(EasyFilterConstants.Scheduled),\r\n                    disabled: false,\r\n                });\r\n                easyFiltersEnabledMap.set(EasyFilterConstants.Scheduled, true);\r\n            }\r\n            if (data.IsAired) {\r\n                this.easyFilterMap.set(EasyFilterConstants.Aired, {\r\n                    active: easyFiltersActiveMap.get(EasyFilterConstants.Aired),\r\n                    disabled: false,\r\n                });\r\n                easyFiltersEnabledMap.set(EasyFilterConstants.Aired, true);\r\n            }\r\n            if (data.IsLateRun) {\r\n                this.easyFilterMap.set(EasyFilterConstants.LateRuns, {\r\n                    active: easyFiltersActiveMap.get(EasyFilterConstants.LateRuns),\r\n                    disabled: false,\r\n                });\r\n                easyFiltersEnabledMap.set(EasyFilterConstants.LateRuns, true);\r\n            }\r\n            if (data.IsPosted) {\r\n                this.easyFilterMap.set(EasyFilterConstants.Posted, {\r\n                    active: easyFiltersActiveMap.get(EasyFilterConstants.Posted),\r\n                    disabled: false,\r\n                });\r\n                easyFiltersEnabledMap.set(EasyFilterConstants.Posted, true);\r\n            }\r\n            if (data.IsViolated) {\r\n                this.easyFilterMap.set(EasyFilterConstants.ViolatedSpot, {\r\n                    active: easyFiltersActiveMap.get(EasyFilterConstants.ViolatedSpot),\r\n                    disabled: false,\r\n                });\r\n                easyFiltersEnabledMap.set(EasyFilterConstants.ViolatedSpot, true);\r\n            }\r\n            if (data.IsViolating) {\r\n                this.easyFilterMap.set(EasyFilterConstants.ViolatingSpot, {\r\n                    active: easyFiltersActiveMap.get(EasyFilterConstants.ViolatingSpot),\r\n                    disabled: false,\r\n                });\r\n                easyFiltersEnabledMap.set(EasyFilterConstants.ViolatingSpot, true);\r\n            }\r\n            if (\r\n                [\r\n                    StatusConstants.Preempted,\r\n                    StatusConstants.PreemptedBonus,\r\n                    StatusConstants.PreemptedDR,\r\n                    StatusConstants.PreemptedPaidProgram,\r\n                    StatusConstants.PreemptedStationUtilized,\r\n                    StatusConstants.PreemptedNoCharge,\r\n                    StatusConstants.Displaced,\r\n                ].includes(data.SpotStatus)\r\n            ) {\r\n                this.easyFilterMap.set(EasyFilterConstants.ToBeScheduled, {\r\n                    active: easyFiltersActiveMap.get(EasyFilterConstants.ToBeScheduled),\r\n                    disabled: false,\r\n                });\r\n                easyFiltersEnabledMap.set(EasyFilterConstants.ToBeScheduled, true);\r\n            }\r\n            if (\r\n                [StatusConstants.Credited, StatusConstants.Unresolved, StatusConstants.Removed].includes(\r\n                    data.SpotStatus,\r\n                )\r\n            ) {\r\n                this.easyFilterMap.set(EasyFilterConstants.Dropped, {\r\n                    active: easyFiltersActiveMap.get(EasyFilterConstants.Dropped),\r\n                    disabled: false,\r\n                });\r\n                easyFiltersEnabledMap.set(EasyFilterConstants.Dropped, true);\r\n            }\r\n        });\r\n\r\n        // Check if group data exists\r\n        if (this.groupedData && this.groupedData.length > 0) {\r\n            this.easyFilterMap.set(EasyFilterConstants.GroupedPEAndMG, {\r\n                active: easyFiltersActiveMap.get(EasyFilterConstants.GroupedPEAndMG),\r\n                disabled: false,\r\n            });\r\n        }\r\n        this.setEnabledFiltersCount();\r\n    }\r\n\r\n    setEnabledFiltersCount() {\r\n        this.enabledFiltersCount = 0;\r\n        this.easyFilterNames.forEach((item) => {\r\n            if (!this.easyFilterMap.get(item).disabled) {\r\n                this.enabledFiltersCount += 1;\r\n            }\r\n        });\r\n    }\r\n\r\n    // check if cache has data\r\n    checkForCacheDataOtherwiseCallAPI(\r\n        isAllSpots: boolean,\r\n        startDate: string,\r\n        endDate: string,\r\n        resetEasyFilter: boolean,\r\n        viewtoggled: boolean = false,\r\n    ) {\r\n        if (isAllSpots) {\r\n            let allSpotsIndex = -1;\r\n            if (this.spotDataCache && this.spotDataCache.length) {\r\n                allSpotsIndex = this.spotDataCache.findIndex(\r\n                    (obj) =>\r\n                        obj.IsAllSpots &&\r\n                        obj.SelectedView === this.selectedView &&\r\n                        (!this.showNormalizationToggle ||\r\n                            (this.showNormalizationToggle &&\r\n                                this.selectedNormalization.toggle &&\r\n                                obj.DemoId === this.selectedNormalization.demoId) ||\r\n                            (!this.selectedNormalization.toggle && !obj.IsNormalized)),\r\n                );\r\n            }\r\n            if (allSpotsIndex !== -1) {\r\n                this.spotData = this.spotDataCache[allSpotsIndex].Spots;\r\n                this.groupedData = this.groupedSpotsDataCache[allSpotsIndex].Groups;\r\n                this.annaSpotDetailsService.postedSpotPresentInSelectedPeriod = cloneDeep(\r\n                    this.spotDataCache[allSpotsIndex].IsPostedSpotsPresent,\r\n                );\r\n                this.getTableData();\r\n                this.setGroupedTableData();\r\n                this.setGtGeneralConfig();\r\n\r\n                if (resetEasyFilter) {\r\n                    this.enableOrDisableEasyFilters(this.tableData, true);\r\n                }\r\n\r\n                if (!this.primaryOrderData.orderInfo.isDrOrder && resetEasyFilter) {\r\n                    this.setFilterAsDefault(EasyFilterConstants.Booked);\r\n                }\r\n                this.enableOrDisableClearAllBtn();\r\n            } else {\r\n                this.tableData = [];\r\n                this.setDisableEnableSpotReportDownloadBtnValue();\r\n                const quarterFilter = this.getFilterPaylod();\r\n                this.fetchDataFromBackend.emit(quarterFilter);\r\n            }\r\n        } else {\r\n            let spotsIndex = -1;\r\n            if (this.spotDataCache && this.spotDataCache.length) {\r\n                spotsIndex = this.spotDataCache.findIndex(\r\n                    (obj) =>\r\n                        obj.StartDate === startDate &&\r\n                        obj.EndDate === endDate &&\r\n                        obj.SelectedView === this.selectedView &&\r\n                        (!this.showNormalizationToggle ||\r\n                            (this.showNormalizationToggle &&\r\n                                ((this.selectedNormalization.toggle &&\r\n                                    obj.DemoId === this.selectedNormalization.demoId) ||\r\n                                    (!this.selectedNormalization.toggle && !obj.IsNormalized)))),\r\n                );\r\n            }\r\n            if (spotsIndex !== -1) {\r\n                this.spotData = this.spotDataCache[spotsIndex].Spots;\r\n                this.groupedData = this.groupedSpotsDataCache[spotsIndex].Groups;\r\n                this.annaSpotDetailsService.postedSpotPresentInSelectedPeriod = cloneDeep(\r\n                    this.spotDataCache[spotsIndex].IsPostedSpotsPresent,\r\n                );\r\n                this.getTableData();\r\n                this.setGroupedTableData();\r\n                this.setGtGeneralConfig();\r\n\r\n                if (resetEasyFilter) {\r\n                    this.enableOrDisableEasyFilters(this.tableData, true);\r\n                }\r\n                if (\r\n                    !this.primaryOrderData.orderInfo.isDrOrder &&\r\n                    this.filtersFromRoute?.easyFilters !== EasyFilterConstants.UnSelectedBooked &&\r\n                    resetEasyFilter\r\n                ) {\r\n                    this.setFilterAsDefault(EasyFilterConstants.Booked);\r\n                }\r\n                this.enableOrDisableClearAllBtn();\r\n            } else {\r\n                this.tableData = [];\r\n                this.setDisableEnableSpotReportDownloadBtnValue();\r\n                const quarterFilter = this.getFilterPaylod();\r\n                this.fetchDataFromBackend.emit(quarterFilter);\r\n            }\r\n        }\r\n    }\r\n\r\n    processGroupedSpotsDataResponse(spotsRequestPayload: ISpotQuarterFilter) {\r\n        // this.initializeCustomizeColumns();\r\n        this.setGroupedTableData();\r\n        this.updateGroupedSpotsCacheData(spotsRequestPayload);\r\n    }\r\n\r\n    processSpotDataResponse(spotsRequestPayload: ISpotQuarterFilter) {\r\n        this.getTableData();\r\n        this.updateSpotsCacheData(spotsRequestPayload);\r\n        // this.initializeCustomizeColumns();\r\n        this.setGtGeneralConfig();\r\n        this.initializeEasyFilterMap(this.tableData);\r\n\r\n        if (\r\n            !this.primaryOrderData.orderInfo?.isDrOrder &&\r\n            this.filtersFromRoute?.easyFilters !== EasyFilterConstants.UnSelectedBooked\r\n        ) {\r\n            this.setFilterAsDefault(EasyFilterConstants.Booked);\r\n        }\r\n        this.enableOrDisableClearAllBtn();\r\n    }\r\n\r\n    callSort() {\r\n        this.annaSortService.columnSortState.forEach((value, key) => {\r\n            if (value === \"ASC\") {\r\n                this.tableData = this.annaSortService.sortDataForComponentOtherThanLurAndCsrPage(\r\n                    true,\r\n                    this.tableData,\r\n                    key,\r\n                );\r\n            } else if (value === \"DESC\") {\r\n                this.tableData = this.annaSortService.sortDataForComponentOtherThanLurAndCsrPage(\r\n                    false,\r\n                    this.tableData,\r\n                    key,\r\n                );\r\n            }\r\n        });\r\n        this.enableOrDisableClearAllBtn();\r\n    }\r\n\r\n    updateSpotsCacheData(spotsRequestPayload: ISpotQuarterFilter) {\r\n        const newQuarterInfo: ISpotDataPerQuarter = {} as ISpotDataPerQuarter;\r\n        if (spotsRequestPayload.IsAllSpotsSelected) {\r\n            newQuarterInfo.IsAllSpots = true;\r\n            newQuarterInfo.Spots = this.spotData;\r\n        } else {\r\n            newQuarterInfo.StartDate = spotsRequestPayload.StartDate;\r\n            newQuarterInfo.EndDate = spotsRequestPayload.EndDate;\r\n            newQuarterInfo.Spots = this.spotData;\r\n        }\r\n        if (this.showNormalizationToggle && this.selectedNormalization) {\r\n            newQuarterInfo.IsNormalized = this.selectedNormalization.toggle;\r\n            newQuarterInfo.DemoId = this.selectedNormalization.demoId;\r\n        }\r\n        newQuarterInfo.SelectedView = this.selectedView;\r\n        newQuarterInfo.IsPostedSpotsPresent = cloneDeep(this.annaSpotDetailsService.postedSpotPresentInSelectedPeriod);\r\n        this.spotDataCache.push(newQuarterInfo);\r\n    }\r\n\r\n    updateGroupedSpotsCacheData(spotsRequestPayload: ISpotQuarterFilter) {\r\n        const newQuarterInfo: IGroupDataPerQuarter = {} as IGroupDataPerQuarter;\r\n        if (spotsRequestPayload.IsAllSpotsSelected) {\r\n            newQuarterInfo.IsAllSpots = true;\r\n        } else {\r\n            newQuarterInfo.StartDate = spotsRequestPayload.StartDate;\r\n            newQuarterInfo.EndDate = spotsRequestPayload.EndDate;\r\n        }\r\n        if (this.showNormalizationToggle && this.selectedNormalization) {\r\n            newQuarterInfo.IsNormalized = this.selectedNormalization.toggle;\r\n            newQuarterInfo.DemoId = this.selectedNormalization.demoId;\r\n        }\r\n        newQuarterInfo.Groups = this.groupedData;\r\n        this.groupedSpotsDataCache.push(newQuarterInfo);\r\n    }\r\n\r\n    setGroupedTableData() {\r\n        // generate grouped table data wrapper\r\n        if (this.groupedData.length > 0) {\r\n            // initial sorting of Spots by LineNumber and SpotNumber\r\n            const tempGroupedData: any[] = [];\r\n            this.groupedData.forEach((group) => {\r\n                const spotsInGroup: ISpotData[] = group.Spots;\r\n                let preemptSpots: ISpotData[] = [];\r\n                let mgSpots: ISpotData[] = [];\r\n                spotsInGroup.forEach((spot) => {\r\n                    if (spot.IsPreempted) {\r\n                        preemptSpots.push(spot);\r\n                    } else {\r\n                        mgSpots.push(spot);\r\n                    }\r\n                });\r\n                preemptSpots = sortBy(preemptSpots, [\"LineNumber\", \"SpotNumber\"]);\r\n                mgSpots = sortBy(mgSpots, [\"LineNumber\", \"SpotNumber\"]);\r\n                tempGroupedData.push({\r\n                    GroupId: group.GroupId,\r\n                    Spots: [...preemptSpots, ...mgSpots],\r\n                });\r\n            });\r\n            this.groupedData = cloneDeep(tempGroupedData);\r\n            const finalGroupedData: any[] = [];\r\n            this.groupedData.forEach((group) => {\r\n                const groupId = group.GroupId;\r\n                let estimatePriorities = cloneDeep(this.estimatePriorities);\r\n                if (this.userType === UserTypeEnum.BUYER) {\r\n                    estimatePriorities = estimatePriorities.filter((n) => n !== ESTIMATEPRIORITIES.AverageRTG);\r\n                }\r\n                group.Spots.forEach((obj, index, array) => {\r\n                    const spotObject: SpotTableData = new SpotTableData(\r\n                        estimatePriorities,\r\n                        obj,\r\n                        this.currencyPipe,\r\n                        this.showLURVoilationInfo,\r\n                        this.showRateRtgOrImpsTooltip,\r\n                        this.selectedMetric?.text,\r\n                        this.primaryOrderData?.orderInfo?.measurementAgency,\r\n                    );\r\n                    spotObject.GroupId = groupId;\r\n                    spotObject.IsDisabled = true; // grouped table checkbox will be always disabled\r\n                    if (index === array.length - 1) {\r\n                        spotObject.LastRowOfGroup = true;\r\n                    }\r\n                    let cellBorderColor = \"\";\r\n\r\n                    if (spotObject.gtClass.includes(TableClassNameConstant.greenColorCellBorder)) {\r\n                        cellBorderColor = TableClassNameConstant.greenColorCellBorder;\r\n                    } else if (spotObject.gtClass.includes(TableClassNameConstant.redColorCellBorder)) {\r\n                        cellBorderColor = TableClassNameConstant.redColorCellBorder;\r\n                    } else if (spotObject.gtClass.includes(TableClassNameConstant.orangeColorCellBorder)) {\r\n                        cellBorderColor = TableClassNameConstant.orangeColorCellBorder;\r\n                    }\r\n\r\n                    spotObject.gtClass = null;\r\n                    spotObject.gtClass = TableClassNameConstant.defaultClass;\r\n                    spotObject.gtClass = `${spotObject.gtClass} ${cellBorderColor}`;\r\n                    this.appendOrRemoveClassName(\r\n                        spotObject.LastRowOfGroup,\r\n                        spotObject,\r\n                        TableClassNameConstant.lastRowOfGroup,\r\n                    );\r\n                    this.appendOrRemoveClassName(!spotObject.IsPreempted, spotObject, TableClassNameConstant.mgRow);\r\n                    finalGroupedData.push(spotObject);\r\n                });\r\n            });\r\n\r\n            this.groupedTableData = finalGroupedData;\r\n        }\r\n    }\r\n\r\n    getTableData() {\r\n        const tableData: SpotTableData[] = [];\r\n        this.buyerRequestedSpotExists = false;\r\n\r\n        // initial data sort by LineNumber and SpotNumber\r\n        this.spotData = sortBy(this.spotData, [\"LineNumber\", \"SpotNumber\"]);\r\n        let estimatePriorities = cloneDeep(this.estimatePriorities);\r\n        if (this.userType === UserTypeEnum.BUYER) {\r\n            estimatePriorities = estimatePriorities.filter((n) => n !== ESTIMATEPRIORITIES.AverageRTG);\r\n        }\r\n        this.spotData.forEach((spot) => {\r\n            const tableRow = new SpotTableData(\r\n                estimatePriorities,\r\n                spot,\r\n                this.currencyPipe,\r\n                this.showLURVoilationInfo,\r\n                this.showRateRtgOrImpsTooltip,\r\n                this.selectedMetric?.text,\r\n                this.primaryOrderData?.orderInfo?.measurementAgency,\r\n            );\r\n            if (spot.IsBuyerRequestedForCredit) {\r\n                this.buyerRequestedSpotExists = true;\r\n            }\r\n            // disable row checkboxes\r\n            if (\r\n                tableRow.SpotStatus === StatusConstants.MarkedForCredit ||\r\n                tableRow.SpotStatus === StatusConstants.MarkedForMG ||\r\n                tableRow.SpotStatus === StatusConstants.Unresolved ||\r\n                (!tableRow.AllowUserToMarkForCredit && !tableRow.AllowUserToMarkForMakeGood)\r\n            ) {\r\n                tableRow.IsDisabled = true;\r\n            }\r\n            this.appendOrRemoveClassName(!tableRow.IsDisabled, tableRow, TableClassNameConstant.selectableRow);\r\n            tableData.push(tableRow);\r\n        });\r\n\r\n        this.tableData = tableData;\r\n        this.setDisableEnableSpotReportDownloadBtnValue();\r\n        this.enableOrDisableUndoAllMarkForCreditAndMg();\r\n        if (!this.gtGeneralConfig.isGrouped) {\r\n            this.createTotalRow(this.tableData);\r\n        } else {\r\n            this.createTotalRowForGroupedData(this.groupedData);\r\n        }\r\n        this.tableDataCloned = cloneDeep(this.tableData);\r\n        this.disableCustomizeColumnsBtn = this.tableDataCloned.length === 0;\r\n        this.annaSortService.noSortingAppliedData = cloneDeep(this.tableDataCloned);\r\n    }\r\n\r\n    checkIfBuyerRequestedSpotExists(): boolean {\r\n        return this.tableData.some((item) => item.IsBuyerRequestedForCredit);\r\n    }\r\n\r\n    enableOrDisableUndoAllMarkForCreditAndMg() {\r\n        // this.undoCreditedSpots = this.tableData.findIndex(obj => obj.AllowUserToUndoMarkForCredit\r\n        //   && obj.SpotStatus == StatusConstants.MarkedForCredit) !== -1;\r\n        // this.undoMgSpots = this.tableData.findIndex(obj => obj.AllowUserToUndoMarkForMakeGood\r\n        //   && obj.SpotStatus == StatusConstants.MarkedForMG) !== -1;\r\n    }\r\n\r\n    createTotalRow(data: SpotTableData[]) {\r\n        const totalRowData = new TotalRowForSpotDetails(data, this.currencyPipe);\r\n        const tempTotalRowInfo: ITotalRowInfo[] = [];\r\n        tempTotalRowInfo.push({ colspan: 1, data: \"\", colName: \"total-icon\" });\r\n        if (this.showCheckboxColumn) {\r\n            tempTotalRowInfo.push({ colspan: 1, data: \"\", colName: \"total-checkobx\" });\r\n        }\r\n        const totalMessageColspan = 5;\r\n\r\n        this.annaFilterService.appliedFiltersArray = [...new Set(this.annaFilterService.appliedFiltersArray)];\r\n        if (\r\n            (this.annaFilterService.appliedFiltersArray.includes(EasyFilterConstants.Booked) ||\r\n                this.annaFilterService.appliedFiltersArray.includes(\"showIfBookedFilterSelected\")) &&\r\n            this.annaFilterService.appliedFiltersArray.length === 1 &&\r\n            this.showCleaerdSpotsAndAmount\r\n        ) {\r\n            tempTotalRowInfo.push({\r\n                colspan: totalMessageColspan,\r\n                data: `Booked spots: ${totalRowData.totalSpots.toLocaleString(\r\n                    \"en-us\",\r\n                )} | Cleared spots: ${totalRowData.totalClearedSpots.toLocaleString(\"en-us\")} | Cleared amount(%): ${\r\n                    totalRowData.clearedSpotRate\r\n                }${totalRowData.clearedSpotPercentage}`,\r\n                colName: \"total-count\",\r\n                tooltipMessage: \"The cleared spots includes Aired or Placed spots\",\r\n                tooltipIconClass: \"mi mdi-info-outline info-label\",\r\n            });\r\n        } else {\r\n            tempTotalRowInfo.push({\r\n                colspan: totalMessageColspan,\r\n                data: `Total ${totalRowData.totalSpots} spot(s) listed below`,\r\n                colName: \"total-count\",\r\n            });\r\n        }\r\n\r\n        tempTotalRowInfo.push({\r\n            colspan: 1,\r\n            data: totalRowData.totalBookedRate === \"-\" ? \"-\" : totalRowData.totalBookedRate.toString(),\r\n            lowerData: this.showAUR ? totalRowData.totalAUR.toString() : null,\r\n            colName: \"total-rate\",\r\n        });\r\n\r\n        const isNormalizedHeaderPresent =\r\n            this.tableHeaders?.filter((n) => n.headerInfo[0]?.name?.includes(\"NORMALIZED\"))?.length !== 0;\r\n\r\n        if (this.selectedMetric?.text === OrderMetrics.imps) {\r\n            tempTotalRowInfo.push({\r\n                colspan: 1,\r\n                data: totalRowData.totalImpOrdered === \"-\" ? \"-\" : totalRowData.totalImpOrdered.toString(),\r\n                colName: \"total-booked-imp\",\r\n            });\r\n            if (this.userType === UserTypeEnum.SELLER) {\r\n                tempTotalRowInfo.push({\r\n                    colspan: 1,\r\n                    data: \"\",\r\n                    colName: \"total-row-estimates-col-empty\",\r\n                });\r\n            }\r\n            tempTotalRowInfo.push({\r\n                colspan: 1,\r\n                data: totalRowData.totalImpPosted === \"-\" ? \"-\" : totalRowData.totalImpPosted.toString(),\r\n                lowerData: totalRowData.totalImpsProjected === \"-\" ? \"-\" : totalRowData.totalImpsProjected.toString(),\r\n                colName: \"total-projected-imp\",\r\n            });\r\n            if (isNormalizedHeaderPresent) {\r\n                tempTotalRowInfo.push({\r\n                    colspan: 1,\r\n                    data: (+totalRowData.totalNormalizedImpressionsBooked.toFixed(2)).toString(),\r\n                    lowerData: (+totalRowData.totalNormalizedImpressionsPosted.toFixed(2)).toString(),\r\n                    colName: \"total-normalized-imp-posted\",\r\n                });\r\n            }\r\n        } else {\r\n            tempTotalRowInfo.push({\r\n                colspan: 1,\r\n                data: totalRowData.totalRtgOrdered === \"-\" ? \"-\" : totalRowData.totalRtgOrdered.toString(),\r\n                colName: \"total-booked-rtg\",\r\n            });\r\n            if (this.userType === UserTypeEnum.SELLER) {\r\n                tempTotalRowInfo.push({\r\n                    colspan: 1,\r\n                    data: \"\",\r\n                    colName: \"total-estimates-col-icon\",\r\n                });\r\n            }\r\n            tempTotalRowInfo.push({\r\n                colspan: 1,\r\n                data: totalRowData.totalRtgPosted === \"-\" ? \"-\" : totalRowData.totalRtgPosted.toString(),\r\n                lowerData: totalRowData.totalRtgProjected === \"-\" ? \"-\" : totalRowData.totalRtgProjected.toString(),\r\n                colName: \"total-projected-rtg\",\r\n            });\r\n            if (isNormalizedHeaderPresent) {\r\n                tempTotalRowInfo.push({\r\n                    colspan: 1,\r\n                    data: (+totalRowData.totalNormalizedRTGBooked.toFixed(2)).toString(),\r\n                    lowerData: (+totalRowData.totalNormalizedRTGPosted.toFixed(2)).toString(),\r\n                    colName: \"total-normalized-rtg-posted\",\r\n                });\r\n            }\r\n        }\r\n\r\n        tempTotalRowInfo.push({ colspan: 7, data: \"\", colName: \"total-end-col-space\" });\r\n        this.totalRowInfo = tempTotalRowInfo;\r\n    }\r\n\r\n    createTotalRowForGroupedData(data: any[]) {\r\n        const totalRowData = new TotalRowForSpotDetailsForGroupedData(data, this.currencyPipe);\r\n        const tempTotalRowInfo: ITotalRowInfo[] = [];\r\n        tempTotalRowInfo.push({ colspan: 1, data: \"\", colName: \"total-row-icon\" });\r\n        if (this.showCheckboxColumn) {\r\n            tempTotalRowInfo.push({ colspan: 1, data: \"\", colName: \"total-row-checkobx\" });\r\n        }\r\n\r\n        tempTotalRowInfo.push({\r\n            colspan: 5,\r\n            data: `Total for ${totalRowData.totalSpots} MadeGood Preemptions`,\r\n            colName: \"total-row-made-good-preemption\",\r\n        });\r\n\r\n        tempTotalRowInfo.push({\r\n            colspan: 1,\r\n            data: totalRowData.totalRate === \"-\" ? \"-\" : totalRowData.totalRate.toString(),\r\n            lowerData: this.showAUR ? totalRowData.totalAUR.toString() : null,\r\n            colName: \"total-row-rate\",\r\n        });\r\n        if (this.selectedMetric?.text === OrderMetrics.imps) {\r\n            tempTotalRowInfo.push({\r\n                colspan: 1,\r\n                data: totalRowData.totalIMPSOrdered === \"-\" ? \"-\" : totalRowData.totalIMPSOrdered.toString(),\r\n                colName: \"total-row-booked-rtg-imp\",\r\n            });\r\n            if (this.userType === UserTypeEnum.SELLER) {\r\n                tempTotalRowInfo.push({\r\n                    colspan: 1,\r\n                    data: \"\",\r\n                    colName: \"total-row-empty-space-1-estimates-col\",\r\n                });\r\n            }\r\n            tempTotalRowInfo.push({\r\n                colspan: 1,\r\n                data: totalRowData.totalIMPSPosted === \"-\" ? \"-\" : totalRowData.totalIMPSPosted.toString(),\r\n                lowerData: totalRowData.totalImpsProjected === \"-\" ? \"-\" : totalRowData.totalImpsProjected.toString(),\r\n                colName: \"total-projected-rtg\",\r\n            });\r\n            if (this.tableHeaders?.filter((n) => n.headerInfo[0]?.name?.includes(\"NORMALIZED\"))?.length !== 0) {\r\n                tempTotalRowInfo.push({\r\n                    colspan: 1,\r\n                    data: (+totalRowData.totalNormalizedIMPSBooked.toFixed(1)).toString(),\r\n                    lowerData: (+totalRowData.totalNormalizedIMPSPosted.toFixed(1)).toString(),\r\n                    colName: \"total-normalized-imp-posted\",\r\n                });\r\n            }\r\n        } else {\r\n            tempTotalRowInfo.push({\r\n                colspan: 1,\r\n                data: totalRowData.totalRTGOrdered === \"-\" ? \"-\" : totalRowData.totalRTGOrdered.toString(),\r\n                colName: \"total-row-booked-rtg-imp\",\r\n            });\r\n            if (this.userType === UserTypeEnum.SELLER) {\r\n                tempTotalRowInfo.push({\r\n                    colspan: 1,\r\n                    data: \"\",\r\n                    colName: \"total-row-empty-space-1-estimates-col\",\r\n                });\r\n            }\r\n            tempTotalRowInfo.push({\r\n                colspan: 1,\r\n                data: totalRowData.totalRTGPosted === \"-\" ? \"-\" : totalRowData.totalRTGPosted.toString(),\r\n                lowerData: totalRowData.totalRtgProjected === \"-\" ? \"-\" : totalRowData.totalRtgProjected.toString(),\r\n                colName: \"total-projected-rtg\",\r\n            });\r\n            if (this.tableHeaders?.filter((n) => n.headerInfo[0]?.name?.includes(\"NORMALIZED\"))?.length !== 0) {\r\n                tempTotalRowInfo.push({\r\n                    colspan: 1,\r\n                    data: (+totalRowData.totalNormalizedRTGBooked.toFixed(1)).toString(),\r\n                    lowerData: (+totalRowData.totalNormalizedRTGPosted.toFixed(1)).toString(),\r\n                    colName: \"total-normalized-imp-posted\",\r\n                });\r\n            }\r\n        }\r\n        tempTotalRowInfo.push({\r\n            colspan: 7,\r\n            data: \"\",\r\n            colName: \"total-row-empty-space-2\",\r\n        });\r\n\r\n        this.totalRowInfo = tempTotalRowInfo;\r\n    }\r\n\r\n    toggleCheckbox(event: any) {\r\n        const rowIndex = this.tableData.findIndex((obj) => obj.SpotId === event.rowData.SpotId);\r\n        this.tableData[rowIndex].IsSelected = !this.tableData[rowIndex].IsSelected;\r\n        this.appendOrRemoveClassName(\r\n            this.tableData[rowIndex].IsSelected,\r\n            this.tableData[rowIndex],\r\n            TableClassNameConstant.selectedRow,\r\n        );\r\n        this.verifyHeaderCheckbox();\r\n        this.enableOrDisableMarkForCreditAndMg();\r\n    }\r\n\r\n    toggleHeaderCheckbox() {\r\n        this.gtGeneralConfig.isHeaderChecked = !this.gtGeneralConfig.isHeaderChecked;\r\n        this.verifyRowCheckbox();\r\n        this.enableOrDisableMarkForCreditAndMg();\r\n    }\r\n\r\n    verifyRowCheckbox() {\r\n        const isChecked = this.gtGeneralConfig.isHeaderChecked;\r\n        this.tableData.forEach((data) => {\r\n            if (!data.IsDisabled) {\r\n                data.IsSelected = isChecked;\r\n            }\r\n        });\r\n        this.tableData = [...this.tableData];\r\n    }\r\n\r\n    verifyHeaderCheckbox() {\r\n        let allCheckboxes = 0;\r\n        let selectedCheckboxes = 0;\r\n        this.tableData.forEach((data) => {\r\n            if (!data.IsDisabled) {\r\n                if (data.IsSelected) {\r\n                    selectedCheckboxes += 1;\r\n                }\r\n                allCheckboxes += 1;\r\n            }\r\n        });\r\n        this.gtGeneralConfig.isHeaderChecked = allCheckboxes === selectedCheckboxes;\r\n    }\r\n\r\n    enableOrDisableMarkForCreditAndMg() {\r\n        //   let selectedRows = this.tableData.filter(obj => obj.IsSelected);\r\n        //   let onlyMg = 0, onlyCredit = 0, bothMgAndCredit = 0;\r\n        //   this.spotsSelectedToMarkForCredit = false;\r\n        //   this.spotsSelectedToMarkForMg = false;\r\n        //   selectedRows.forEach(data => {\r\n        //     if (data.AllowUserToMarkForMakeGood && !data.AllowUserToMarkForCredit) {\r\n        //       onlyMg++;\r\n        //     }\r\n        //     else if (!data.AllowUserToMarkForMakeGood && data.AllowUserToMarkForCredit) {\r\n        //       onlyCredit++;\r\n        //     }\r\n        //     else if (data.AllowUserToMarkForMakeGood && data.AllowUserToMarkForCredit) {\r\n        //       bothMgAndCredit++;\r\n        //     }\r\n        //   })\r\n        //   if (onlyMg > 0 && onlyCredit === 0 && bothMgAndCredit === 0) {\r\n        //     this.spotsSelectedToMarkForMg = true;\r\n        //     this.spotsSelectedToMarkForCredit = false;\r\n        //   }\r\n        //   else if (onlyCredit > 0 && onlyMg === 0 && bothMgAndCredit === 0) {\r\n        //     this.spotsSelectedToMarkForCredit = true;\r\n        //     this.spotsSelectedToMarkForMg = false;\r\n        //   }\r\n        //   else if (bothMgAndCredit > 0) {\r\n        //     if (onlyCredit === 0 && onlyMg === 0) {\r\n        //       this.spotsSelectedToMarkForMg = true;\r\n        //       this.spotsSelectedToMarkForCredit = true;\r\n        //     }\r\n        //     else if (onlyCredit > 0) {\r\n        //       this.spotsSelectedToMarkForCredit = true;\r\n        //       this.spotsSelectedToMarkForMg = false;\r\n        //     }\r\n        //     else if (onlyMg > 0) {\r\n        //       this.spotsSelectedToMarkForMg = true;\r\n        //       this.spotsSelectedToMarkForCredit = false;\r\n        //     }\r\n        //   }\r\n    }\r\n\r\n    openConfirmationModal(mgOrCredit: MgCreditType) {\r\n        //   this.isUndo = false;\r\n        //   this.mgOrCredit = mgOrCredit;\r\n        //   this.confirmationCreditOrMgModalReference = this.modalService.open(this.confirmationCreditOrMgModal, this.ngbModalOptions);\r\n    }\r\n\r\n    preparePayloadAndSendSelectedSpots(mgOrCredit: MgCreditType) {\r\n        //   let selectedSpots: string[] = this.tableData.filter(obj => obj.IsSelected)\r\n        //     .map(obj => obj.SpotId);\r\n        //   let selectedSpotsLength = selectedSpots.length;\r\n        //   let isAllSpots = this.gtGeneralConfig.isHeaderChecked;\r\n        //   let requestPayload: IMarkForCreditOrMgRequest = {\r\n        //     OrderId: this.orderInfo.orderId,\r\n        //     StationId: +this.orderInfo.channelId,\r\n        //     Spots: selectedSpots\r\n        //   }\r\n        //   if (mgOrCredit === \"MakeGood\") {\r\n        //     this.sendSpotsForMakegood(requestPayload, selectedSpotsLength, isAllSpots);\r\n        //   }\r\n        //   else {\r\n        //     this.sendSpotsForCredit(requestPayload, selectedSpotsLength, isAllSpots);\r\n        //   }\r\n    }\r\n\r\n    preparePayloadAndSendSelectedSpotForUndo(mgOrCredit: MgCreditType) {\r\n        //   let selectedSpot: string[] = [this.undoSpotId];\r\n        //   let requestPayload: IMarkForCreditOrMgRequest = {\r\n        //     OrderId: this.orderInfo.orderId,\r\n        //     StationId: +this.orderInfo.channelId,\r\n        //     Spots: selectedSpot\r\n        //   }\r\n        //   let allSpots = false;\r\n        //   if (mgOrCredit === \"MakeGood\") {\r\n        //     this.sendSpotsForUndoMakegood(requestPayload, allSpots);\r\n        //   }\r\n        //   else {\r\n        //     this.sendSpotsForUndoCredit(requestPayload, allSpots);\r\n        //   }\r\n    }\r\n\r\n    sendSpotsForCredit(requestPayload: IMarkForCreditOrMgRequest, selectedSpotsLength: number, isAllSpots: boolean) {\r\n        //   this.showSkeletonLoading = true;\r\n        //   this.setDisableEnableSpotReportDownloadBtnValue();\r\n        //   this.consumingProjectSpotDetailsBackendService.markForCredit(requestPayload).subscribe(\r\n        //     {\r\n        //       next: (response: HttpResponse<any>) => {\r\n        //         if (response.status === ErrorCodes.SUCCESS_CODE_GET) {\r\n        //           this.toastr.success(\r\n        //             (isAllSpots ? 'All spots ' : (selectedSpotsLength + ' spot') + (selectedSpotsLength > 1 ? 's' : ''))\r\n        //             + ' marked for Credit');\r\n        //           //mark spots as credited\r\n        //           let spotIds = requestPayload.Spots;\r\n        //           let spotPosition: number, spotQuarterPosition: number;\r\n        //           spotIds.forEach((spotId) => {\r\n        //             spotPosition = -1;\r\n        //             for (var i = 0; i < this.spotDataCache.length; i++) {\r\n        //               if (!this.spotDataCache[i].IsAllSpots) {\r\n        //                 spotPosition = this.spotDataCache[i].Spots.findIndex(obj => obj.SpotId === spotId);\r\n        //                 if (spotPosition !== -1) {\r\n        //                   spotQuarterPosition = i;\r\n        //                   break;\r\n        //                 }\r\n        //               }\r\n        //             }\r\n        //             if (spotPosition !== -1) {\r\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].IsMarkForCredit = true;\r\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToMarkForCreditBeforeMarkingSpot =\r\n        //                 this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToMarkForCredit;\r\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToMarkForMakeGoodBeforeMarkingSpot =\r\n        //                 this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToMarkForMakeGood;\r\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToMarkForCredit = false;\r\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToMarkForMakeGood = false;\r\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToUndoMarkForCredit = true;\r\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].StatusBeforeMarkingSpot = this.spotDataCache[spotQuarterPosition].Spots[spotPosition].Status;\r\n        //               if (this.spotDataCache[spotQuarterPosition].Spots[spotPosition].Status === StatusConstants.BuyerCreditRequested) {\r\n        //                 this.spotDataCache[spotQuarterPosition].Spots[spotPosition].IsBuyerRequestedForCredit = false;\r\n        //               }\r\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].Status = StatusConstants.MarkedForCredit;\r\n        //               if (!this.selectedFilterIsAllSpot) {\r\n        //                 spotPosition = this.tableData.findIndex(obj => obj.SpotId === spotId);\r\n        //                 this.tableData[spotPosition].IsMarkForCredit = true;\r\n        //                 this.tableData[spotPosition].AllowUserToMarkForCreditBeforeMarkingSpot =\r\n        //                   this.tableData[spotPosition].AllowUserToMarkForCredit;\r\n        //                 this.tableData[spotPosition].AllowUserToMarkForMakeGoodBeforeMarkingSpot =\r\n        //                   this.tableData[spotPosition].AllowUserToMarkForMakeGood;\r\n        //                 this.tableData[spotPosition].AllowUserToMarkForCredit = false;\r\n        //                 this.tableData[spotPosition].AllowUserToMarkForMakeGood = false;\r\n        //                 this.tableData[spotPosition].AllowUserToUndoMarkForCredit = true;\r\n        //                 this.tableData[spotPosition].IsSelected = false;\r\n        //                 this.tableData[spotPosition].IsDisabled = true;\r\n        //                 if (this.tableData[spotPosition].SpotStatus === StatusConstants.BuyerCreditRequested) {\r\n        //                   this.tableData[spotPosition].IsBuyerRequestedForCredit = false;\r\n        //                 }\r\n        //                 this.tableData[spotPosition].SpotStatus = StatusConstants.MarkedForCredit;\r\n        //                 spotPosition = this.tableDataCloned.findIndex(obj => obj.SpotId === spotId);\r\n        //                 this.tableDataCloned[spotPosition].IsMarkForCredit = true;\r\n        //                 this.tableDataCloned[spotPosition].AllowUserToMarkForCreditBeforeMarkingSpot =\r\n        //                   this.tableDataCloned[spotPosition].AllowUserToMarkForCredit;\r\n        //                 this.tableDataCloned[spotPosition].AllowUserToMarkForMakeGoodBeforeMarkingSpot =\r\n        //                   this.tableDataCloned[spotPosition].AllowUserToMarkForMakeGood;\r\n        //                 this.tableDataCloned[spotPosition].AllowUserToMarkForCredit = false;\r\n        //                 this.tableDataCloned[spotPosition].AllowUserToMarkForMakeGood = false;\r\n        //                 this.tableDataCloned[spotPosition].AllowUserToUndoMarkForCredit = true;\r\n        //                 this.tableDataCloned[spotPosition].IsSelected = false;\r\n        //                 this.tableDataCloned[spotPosition].IsDisabled = true;\r\n        //                 if (this.tableDataCloned[spotPosition].SpotStatus === StatusConstants.BuyerCreditRequested) {\r\n        //                   this.tableDataCloned[spotPosition].IsBuyerRequestedForCredit = false;\r\n        //                 }\r\n        //                 this.tableDataCloned[spotPosition].SpotStatus = StatusConstants.MarkedForCredit;\r\n        //               }\r\n        //             }\r\n        //           })\r\n        //           //Update All spots cached data\r\n        //           spotIds.forEach((spotId) => {\r\n        //             spotPosition = -1;\r\n        //             for (var i = 0; i < this.spotDataCache.length; i++) {\r\n        //               if (this.spotDataCache[i].IsAllSpots) {\r\n        //                 spotPosition = this.spotDataCache[i].Spots.findIndex(obj => obj.SpotId === spotId);\r\n        //                 if (spotPosition !== -1) {\r\n        //                   spotQuarterPosition = i;\r\n        //                   break;\r\n        //                 }\r\n        //                 break;\r\n        //               }\r\n        //             }\r\n        //             if (spotPosition !== -1) {\r\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].IsMarkForCredit = true;\r\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToMarkForCreditBeforeMarkingSpot =\r\n        //                 this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToMarkForCredit;\r\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToMarkForMakeGoodBeforeMarkingSpot =\r\n        //                 this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToMarkForMakeGood;\r\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToMarkForCredit = false;\r\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToMarkForMakeGood = false;\r\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToUndoMarkForCredit = true;\r\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].StatusBeforeMarkingSpot = this.spotDataCache[spotQuarterPosition].Spots[spotPosition].Status;\r\n        //               if (this.spotDataCache[spotQuarterPosition].Spots[spotPosition].Status === StatusConstants.BuyerCreditRequested) {\r\n        //                 this.spotDataCache[spotQuarterPosition].Spots[spotPosition].IsBuyerRequestedForCredit = false;\r\n        //               }\r\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].Status = StatusConstants.MarkedForCredit;\r\n        //               if (this.selectedFilterIsAllSpot) {\r\n        //                 spotPosition = this.tableData.findIndex(obj => obj.SpotId === spotId);\r\n        //                 this.tableData[spotPosition].IsMarkForCredit = true;\r\n        //                 this.tableData[spotPosition].AllowUserToMarkForCreditBeforeMarkingSpot =\r\n        //                   this.tableData[spotPosition].AllowUserToMarkForCredit;\r\n        //                 this.tableData[spotPosition].AllowUserToMarkForMakeGoodBeforeMarkingSpot =\r\n        //                   this.tableData[spotPosition].AllowUserToMarkForMakeGood;\r\n        //                 this.tableData[spotPosition].AllowUserToMarkForCredit = false;\r\n        //                 this.tableData[spotPosition].AllowUserToMarkForMakeGood = false;\r\n        //                 this.tableData[spotPosition].AllowUserToUndoMarkForCredit = true;\r\n        //                 this.tableData[spotPosition].IsSelected = false;\r\n        //                 this.tableData[spotPosition].IsDisabled = true;\r\n        //                 if (this.tableData[spotPosition].SpotStatus === StatusConstants.BuyerCreditRequested) {\r\n        //                   this.tableData[spotPosition].IsBuyerRequestedForCredit = false;\r\n        //                 }\r\n        //                 this.tableData[spotPosition].SpotStatus = StatusConstants.MarkedForCredit;\r\n        //                 spotPosition = this.tableDataCloned.findIndex(obj => obj.SpotId === spotId);\r\n        //                 this.tableDataCloned[spotPosition].IsMarkForCredit = true;\r\n        //                 this.tableDataCloned[spotPosition].AllowUserToMarkForCreditBeforeMarkingSpot =\r\n        //                   this.tableDataCloned[spotPosition].AllowUserToMarkForCredit;\r\n        //                 this.tableDataCloned[spotPosition].AllowUserToMarkForMakeGoodBeforeMarkingSpot =\r\n        //                   this.tableDataCloned[spotPosition].AllowUserToMarkForMakeGood;\r\n        //                 this.tableDataCloned[spotPosition].AllowUserToMarkForCredit = false;\r\n        //                 this.tableDataCloned[spotPosition].AllowUserToMarkForMakeGood = false;\r\n        //                 this.tableDataCloned[spotPosition].AllowUserToUndoMarkForCredit = true;\r\n        //                 this.tableDataCloned[spotPosition].IsSelected = false;\r\n        //                 this.tableDataCloned[spotPosition].IsDisabled = true;\r\n        //                 if (this.tableDataCloned[spotPosition].SpotStatus === StatusConstants.BuyerCreditRequested) {\r\n        //                   this.tableDataCloned[spotPosition].IsBuyerRequestedForCredit = false;\r\n        //                 }\r\n        //                 this.tableDataCloned[spotPosition].SpotStatus = StatusConstants.MarkedForCredit;\r\n        //               }\r\n        //             }\r\n        //           })\r\n        //           this.buyerRequestedSpotExists = this.checkIfBuyerRequestedSpotExists();\r\n        //           this.gtGeneralConfig.isHeaderChecked = false;\r\n        //           this.clearAllFilter();\r\n        //         }\r\n        //         this.showSkeletonLoading = false;\r\n        //         this.setDisableEnableSpotReportDownloadBtnValue();\r\n        //       },\r\n        //       error: (error: any) => {\r\n        //         if (error.status === ErrorCodes.BAD_REQUEST) {\r\n        //           this.toastr.error(\"Invalid spots requested\");\r\n        //         }\r\n        //         else {\r\n        //           this.toastr.error(\"Some error occurred, please try again\");\r\n        //         }\r\n        //         this.showSkeletonLoading = false;\r\n        //         this.setDisableEnableSpotReportDownloadBtnValue();\r\n        //       }\r\n        //     }\r\n        //   )\r\n    }\r\n\r\n    sendSpotsForMakegood(requestPayload: IMarkForCreditOrMgRequest, selectedSpotsLength: number, isAllSpots: boolean) {\r\n        //   this.showSkeletonLoading = true;\r\n        //   this.setDisableEnableSpotReportDownloadBtnValue();\r\n        //   this.consumingProjectSpotDetailsBackendService.markForMakegood(requestPayload).subscribe(\r\n        //     {\r\n        //       next: (response: HttpResponse<any>) => {\r\n        //         if (response.status === ErrorCodes.SUCCESS_CODE_GET) {\r\n        //           this.toastr.success(\r\n        //             (isAllSpots ? 'All spots ' : (selectedSpotsLength + ' spot') + (selectedSpotsLength > 1 ? 's' : ''))\r\n        //             + ' marked for MakeGood');\r\n        //           //mark spots as marked for make good\r\n        //           let spotIds = requestPayload.Spots;\r\n        //           let spotPosition: number, spotQuarterPosition: number;\r\n        //           spotIds.forEach((spotId) => {\r\n        //             spotPosition = -1;\r\n        //             for (var i = 0; i < this.spotDataCache.length; i++) {\r\n        //               if (!this.spotDataCache[i].IsAllSpots) {\r\n        //                 spotPosition = this.spotDataCache[i].Spots.findIndex(obj => obj.SpotId === spotId);\r\n        //                 if (spotPosition !== -1) {\r\n        //                   spotQuarterPosition = i;\r\n        //                   break;\r\n        //                 }\r\n        //               }\r\n        //             }\r\n        //             if (spotPosition !== -1) {\r\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].IsMarkForMakeGood = true;\r\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToMarkForCreditBeforeMarkingSpot =\r\n        //                 this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToMarkForCredit;\r\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToMarkForMakeGoodBeforeMarkingSpot =\r\n        //                 this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToMarkForMakeGood;\r\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToMarkForCredit = false;\r\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToMarkForMakeGood = false;\r\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToUndoMarkForMakeGood = true;\r\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].StatusBeforeMarkingSpot = this.spotDataCache[spotQuarterPosition].Spots[spotPosition].Status;\r\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].Status = StatusConstants.MarkedForMG;\r\n        //               if (!this.selectedFilterIsAllSpot) {\r\n        //                 spotPosition = this.tableData.findIndex(obj => obj.SpotId === spotId);\r\n        //                 this.tableData[spotPosition].IsMarkForMakeGood = true;\r\n        //                 this.tableData[spotPosition].AllowUserToMarkForCreditBeforeMarkingSpot =\r\n        //                   this.tableData[spotPosition].AllowUserToMarkForCredit;\r\n        //                 this.tableData[spotPosition].AllowUserToMarkForMakeGoodBeforeMarkingSpot =\r\n        //                   this.tableData[spotPosition].AllowUserToMarkForMakeGood;\r\n        //                 this.tableData[spotPosition].AllowUserToMarkForCredit = false;\r\n        //                 this.tableData[spotPosition].AllowUserToMarkForMakeGood = false;\r\n        //                 this.tableData[spotPosition].AllowUserToUndoMarkForMakeGood = true;\r\n        //                 this.tableData[spotPosition].IsSelected = false;\r\n        //                 this.tableData[spotPosition].IsDisabled = true;\r\n        //                 this.tableData[spotPosition].SpotStatus = StatusConstants.MarkedForMG;\r\n        //                 spotPosition = this.tableDataCloned.findIndex(obj => obj.SpotId === spotId);\r\n        //                 this.tableDataCloned[spotPosition].IsMarkForMakeGood = true;\r\n        //                 this.tableDataCloned[spotPosition].AllowUserToMarkForCreditBeforeMarkingSpot =\r\n        //                   this.tableDataCloned[spotPosition].AllowUserToMarkForCredit;\r\n        //                 this.tableDataCloned[spotPosition].AllowUserToMarkForMakeGoodBeforeMarkingSpot =\r\n        //                   this.tableDataCloned[spotPosition].AllowUserToMarkForMakeGood;\r\n        //                 this.tableDataCloned[spotPosition].AllowUserToMarkForCredit = false;\r\n        //                 this.tableDataCloned[spotPosition].AllowUserToMarkForMakeGood = false;\r\n        //                 this.tableDataCloned[spotPosition].AllowUserToUndoMarkForMakeGood = true;\r\n        //                 this.tableDataCloned[spotPosition].IsSelected = false;\r\n        //                 this.tableDataCloned[spotPosition].IsDisabled = true;\r\n        //                 this.tableDataCloned[spotPosition].SpotStatus = StatusConstants.MarkedForMG;\r\n        //               }\r\n        //             }\r\n        //           })\r\n        //           //Update All Spots cached data\r\n        //           spotIds.forEach((spotId) => {\r\n        //             spotPosition = -1;\r\n        //             for (var i = 0; i < this.spotDataCache.length; i++) {\r\n        //               if (this.spotDataCache[i].IsAllSpots) {\r\n        //                 spotPosition = this.spotDataCache[i].Spots.findIndex(obj => obj.SpotId === spotId);\r\n        //                 if (spotPosition !== -1) {\r\n        //                   spotQuarterPosition = i;\r\n        //                   break;\r\n        //                 }\r\n        //                 break;\r\n        //               }\r\n        //             }\r\n        //             if (spotPosition !== -1) {\r\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].IsMarkForMakeGood = true;\r\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToMarkForCreditBeforeMarkingSpot =\r\n        //                 this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToMarkForCredit;\r\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToMarkForMakeGoodBeforeMarkingSpot =\r\n        //                 this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToMarkForMakeGood;\r\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToMarkForCredit = false;\r\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToMarkForMakeGood = false;\r\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToUndoMarkForMakeGood = true;\r\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].StatusBeforeMarkingSpot = this.spotDataCache[spotQuarterPosition].Spots[spotPosition].Status;\r\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].Status = StatusConstants.MarkedForMG;\r\n        //               if (this.selectedFilterIsAllSpot) {\r\n        //                 spotPosition = this.tableData.findIndex(obj => obj.SpotId === spotId);\r\n        //                 this.tableData[spotPosition].IsMarkForMakeGood = true;\r\n        //                 this.tableData[spotPosition].AllowUserToMarkForCreditBeforeMarkingSpot =\r\n        //                   this.tableData[spotPosition].AllowUserToMarkForCredit;\r\n        //                 this.tableData[spotPosition].AllowUserToMarkForMakeGoodBeforeMarkingSpot =\r\n        //                   this.tableData[spotPosition].AllowUserToMarkForMakeGood;\r\n        //                 this.tableData[spotPosition].AllowUserToMarkForCredit = false;\r\n        //                 this.tableData[spotPosition].AllowUserToMarkForMakeGood = false;\r\n        //                 this.tableData[spotPosition].AllowUserToUndoMarkForMakeGood = true;\r\n        //                 this.tableData[spotPosition].IsSelected = false;\r\n        //                 this.tableData[spotPosition].IsDisabled = true;\r\n        //                 this.tableData[spotPosition].SpotStatus = StatusConstants.MarkedForMG;\r\n        //                 spotPosition = this.tableDataCloned.findIndex(obj => obj.SpotId === spotId);\r\n        //                 this.tableDataCloned[spotPosition].IsMarkForMakeGood = true;\r\n        //                 this.tableDataCloned[spotPosition].AllowUserToMarkForCreditBeforeMarkingSpot =\r\n        //                   this.tableDataCloned[spotPosition].AllowUserToMarkForCredit;\r\n        //                 this.tableDataCloned[spotPosition].AllowUserToMarkForMakeGoodBeforeMarkingSpot =\r\n        //                   this.tableDataCloned[spotPosition].AllowUserToMarkForMakeGood;\r\n        //                 this.tableDataCloned[spotPosition].AllowUserToMarkForCredit = false;\r\n        //                 this.tableDataCloned[spotPosition].AllowUserToMarkForMakeGood = false;\r\n        //                 this.tableDataCloned[spotPosition].AllowUserToUndoMarkForMakeGood = true;\r\n        //                 this.tableDataCloned[spotPosition].IsSelected = false;\r\n        //                 this.tableDataCloned[spotPosition].IsDisabled = true;\r\n        //                 this.tableDataCloned[spotPosition].SpotStatus = StatusConstants.MarkedForMG;\r\n        //               }\r\n        //             }\r\n        //           })\r\n        //           this.gtGeneralConfig.isHeaderChecked = false;\r\n        //           this.clearAllFilter();\r\n        //         }\r\n        //         this.showSkeletonLoading = false;\r\n        //         this.setDisableEnableSpotReportDownloadBtnValue();\r\n        //       },\r\n        //       error: (error: any) => {\r\n        //         if (error.status === ErrorCodes.BAD_REQUEST) {\r\n        //           this.toastr.error(\"Invalid spots requested\");\r\n        //         }\r\n        //         else {\r\n        //           this.toastr.error(\"Some error occurred, please try again\");\r\n        //         }\r\n        //         this.showSkeletonLoading = false;\r\n        //       }\r\n        //     }\r\n        //   );\r\n    }\r\n\r\n    sendSpotsForUndoCredit(requestPayload: IMarkForCreditOrMgRequest, allSpots: boolean) {\r\n        //   this.showSkeletonLoading = true;\r\n        //   this.setDisableEnableSpotReportDownloadBtnValue();\r\n        //   this.consumingProjectSpotDetailsBackendService.undoCreditedSpots(requestPayload).subscribe(\r\n        //     {\r\n        //       next: (response: HttpResponse<any>) => {\r\n        //         if (response.status === ErrorCodes.SUCCESS_CODE) {\r\n        //           this.toastr.success((allSpots ? \"All Spots\" : \"Spot\") + \" successfully unmarked\");\r\n        //           //unmark spots for credit\r\n        //           let spotIds = requestPayload.Spots;\r\n        //           let spotPosition: number, spotQuarterPosition: number;\r\n        //           let previousStatus: string;\r\n        //           spotIds.forEach((spotId) => {\r\n        //             spotPosition = -1;\r\n        //             for (var i = 0; i < this.spotDataCache.length; i++) {\r\n        //               if (!this.spotDataCache[i].IsAllSpots) {\r\n        //                 spotPosition = this.spotDataCache[i].Spots.findIndex(obj => obj.SpotId === spotId);\r\n        //                 if (spotPosition !== -1) {\r\n        //                   spotQuarterPosition = i;\r\n        //                   break;\r\n        //                 }\r\n        //               }\r\n        //             }\r\n        //             if (spotPosition !== -1) {\r\n        //               previousStatus = this.spotDataCache[spotQuarterPosition].Spots[spotPosition].StatusBeforeMarkingSpot;\r\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].IsMarkForCredit = false;\r\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToMarkForCredit = true;\r\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToMarkForMakeGood =\r\n        //                 this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToMarkForMakeGoodBeforeMarkingSpot;\r\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToUndoMarkForCredit = false;\r\n        //               if (previousStatus === StatusConstants.BuyerCreditRequested) {\r\n        //                 this.spotDataCache[spotQuarterPosition].Spots[spotPosition].IsBuyerRequestedForCredit = true;\r\n        //               }\r\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].Status = previousStatus;\r\n        //               if (!this.selectedFilterIsAllSpot) {\r\n        //                 spotPosition = this.tableData.findIndex(obj => obj.SpotId === spotId);\r\n        //                 this.tableData[spotPosition].IsMarkForCredit = false;\r\n        //                 this.tableData[spotPosition].AllowUserToMarkForCredit = true;\r\n        //                 this.tableData[spotPosition].AllowUserToMarkForMakeGood =\r\n        //                   this.tableData[spotPosition].AllowUserToMarkForMakeGoodBeforeMarkingSpot;\r\n        //                 this.tableData[spotPosition].AllowUserToUndoMarkForCredit = false;\r\n        //                 this.tableData[spotPosition].IsDisabled = false;\r\n        //                 if (previousStatus === StatusConstants.BuyerCreditRequested) {\r\n        //                   this.tableData[spotPosition].IsBuyerRequestedForCredit = true;\r\n        //                 }\r\n        //                 this.tableData[spotPosition].SpotStatus = previousStatus;\r\n        //                 spotPosition = this.tableDataCloned.findIndex(obj => obj.SpotId === spotId);\r\n        //                 this.tableDataCloned[spotPosition].IsMarkForCredit = false;\r\n        //                 this.tableDataCloned[spotPosition].AllowUserToMarkForCredit = true;\r\n        //                 this.tableDataCloned[spotPosition].AllowUserToMarkForMakeGood =\r\n        //                   this.tableDataCloned[spotPosition].AllowUserToMarkForMakeGoodBeforeMarkingSpot;\r\n        //                 this.tableDataCloned[spotPosition].AllowUserToUndoMarkForCredit = false;\r\n        //                 this.tableDataCloned[spotPosition].IsDisabled = false;\r\n        //                 if (previousStatus === StatusConstants.BuyerCreditRequested) {\r\n        //                   this.tableDataCloned[spotPosition].IsBuyerRequestedForCredit = true;\r\n        //                 }\r\n        //                 this.tableDataCloned[spotPosition].SpotStatus = previousStatus;\r\n        //               }\r\n        //             }\r\n        //           })\r\n        //           //Update all spots cached data\r\n        //           spotIds.forEach((spotId) => {\r\n        //             spotPosition = -1;\r\n        //             for (var i = 0; i < this.spotDataCache.length; i++) {\r\n        //               if (this.spotDataCache[i].IsAllSpots) {\r\n        //                 spotPosition = this.spotDataCache[i].Spots.findIndex(obj => obj.SpotId === spotId);\r\n        //                 if (spotPosition !== -1) {\r\n        //                   spotQuarterPosition = i;\r\n        //                   break;\r\n        //                 }\r\n        //                 break;\r\n        //               }\r\n        //             }\r\n        //             if (spotPosition !== -1) {\r\n        //               previousStatus = this.spotDataCache[spotQuarterPosition].Spots[spotPosition].StatusBeforeMarkingSpot;\r\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].IsMarkForCredit = false;\r\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToMarkForCredit = true;\r\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToMarkForMakeGood =\r\n        //                 this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToMarkForMakeGoodBeforeMarkingSpot;\r\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToUndoMarkForCredit = false;\r\n        //               if (previousStatus === StatusConstants.BuyerCreditRequested) {\r\n        //                 this.spotDataCache[spotQuarterPosition].Spots[spotPosition].IsBuyerRequestedForCredit = true;\r\n        //               }\r\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].Status = previousStatus;\r\n        //               if (this.selectedFilterIsAllSpot) {\r\n        //                 spotPosition = this.tableData.findIndex(obj => obj.SpotId === spotId);\r\n        //                 this.tableData[spotPosition].IsMarkForCredit = false;\r\n        //                 this.tableData[spotPosition].AllowUserToMarkForCredit = true;\r\n        //                 this.tableData[spotPosition].AllowUserToMarkForMakeGood =\r\n        //                   this.tableData[spotPosition].AllowUserToMarkForMakeGoodBeforeMarkingSpot;\r\n        //                 this.tableData[spotPosition].AllowUserToUndoMarkForCredit = false;\r\n        //                 this.tableData[spotPosition].IsDisabled = false;\r\n        //                 if (previousStatus === StatusConstants.BuyerCreditRequested) {\r\n        //                   this.tableData[spotPosition].IsBuyerRequestedForCredit = true;\r\n        //                 }\r\n        //                 this.tableData[spotPosition].SpotStatus = previousStatus;\r\n        //                 spotPosition = this.tableDataCloned.findIndex(obj => obj.SpotId === spotId);\r\n        //                 this.tableDataCloned[spotPosition].IsMarkForCredit = false;\r\n        //                 this.tableDataCloned[spotPosition].AllowUserToMarkForCredit = true;\r\n        //                 this.tableDataCloned[spotPosition].AllowUserToMarkForMakeGood =\r\n        //                   this.tableDataCloned[spotPosition].AllowUserToMarkForMakeGoodBeforeMarkingSpot;\r\n        //                 this.tableDataCloned[spotPosition].AllowUserToUndoMarkForCredit = false;\r\n        //                 this.tableDataCloned[spotPosition].IsDisabled = false;\r\n        //                 if (previousStatus === StatusConstants.BuyerCreditRequested) {\r\n        //                   this.tableDataCloned[spotPosition].IsBuyerRequestedForCredit = true;\r\n        //                 }\r\n        //                 this.tableDataCloned[spotPosition].SpotStatus = previousStatus;\r\n        //               }\r\n        //             }\r\n        //           })\r\n        //           this.buyerRequestedSpotExists = this.checkIfBuyerRequestedSpotExists();\r\n        //           this.gtGeneralConfig.isHeaderChecked = false;\r\n        //           this.clearAllFilter();\r\n        //         }\r\n        //         this.showSkeletonLoading = false;\r\n        //         this.setDisableEnableSpotReportDownloadBtnValue();\r\n        //       },\r\n        //       error: (error: any) => {\r\n        //         if (error.status === ErrorCodes.BAD_REQUEST) {\r\n        //           this.toastr.error(\"Invalid spots requested\");\r\n        //         }\r\n        //         else {\r\n        //           this.toastr.error(\"Some error occurred, please try again\");\r\n        //         }\r\n        //         this.showSkeletonLoading = false;\r\n        //       }\r\n        //     }\r\n        //   );\r\n    }\r\n\r\n    sendSpotsForUndoMakegood(requestPayload: IMarkForCreditOrMgRequest, allSpots: boolean) {\r\n        //   this.showSkeletonLoading = true;\r\n        //   this.setDisableEnableSpotReportDownloadBtnValue();\r\n        //   this.consumingProjectSpotDetailsBackendService.undoMakegoodSpots(requestPayload).subscribe(\r\n        //     {\r\n        //       next: (response: HttpResponse<any>) => {\r\n        //         if (response.status === ErrorCodes.SUCCESS_CODE) {\r\n        //           this.toastr.success((allSpots ? \"All Spots\" : \"Spot\") + \" successfully unmarked\");\r\n        //           //unmark spots for make good\r\n        //           let spotIds = requestPayload.Spots;\r\n        //           let spotPosition: number, spotQuarterPosition: number;\r\n        //           let previousStatus: string;\r\n        //           spotIds.forEach((spotId) => {\r\n        //             spotPosition = -1;\r\n        //             for (var i = 0; i < this.spotDataCache.length; i++) {\r\n        //               if (!this.spotDataCache[i].IsAllSpots) {\r\n        //                 spotPosition = this.spotDataCache[i].Spots.findIndex(obj => obj.SpotId === spotId);\r\n        //                 if (spotPosition !== -1) {\r\n        //                   spotQuarterPosition = i;\r\n        //                   break;\r\n        //                 }\r\n        //               }\r\n        //             }\r\n        //             if (spotPosition !== -1) {\r\n        //               previousStatus = this.spotDataCache[spotQuarterPosition].Spots[spotPosition].StatusBeforeMarkingSpot;\r\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].IsMarkForMakeGood = false;\r\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToMarkForMakeGood = true;\r\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToMarkForCredit =\r\n        //                 this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToMarkForCreditBeforeMarkingSpot;\r\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToUndoMarkForMakeGood = false;\r\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].Status = previousStatus;\r\n        //               if (!this.selectedFilterIsAllSpot) {\r\n        //                 spotPosition = this.tableData.findIndex(obj => obj.SpotId === spotId);\r\n        //                 this.tableData[spotPosition].IsMarkForMakeGood = false;\r\n        //                 this.tableData[spotPosition].AllowUserToMarkForMakeGood = true;\r\n        //                 this.tableData[spotPosition].AllowUserToMarkForCredit =\r\n        //                   this.tableData[spotPosition].AllowUserToMarkForCreditBeforeMarkingSpot;\r\n        //                 this.tableData[spotPosition].AllowUserToUndoMarkForMakeGood = false;\r\n        //                 this.tableData[spotPosition].IsDisabled = false;\r\n        //                 this.tableData[spotPosition].SpotStatus = previousStatus;\r\n        //                 spotPosition = this.tableDataCloned.findIndex(obj => obj.SpotId === spotId);\r\n        //                 this.tableDataCloned[spotPosition].IsMarkForMakeGood = false;\r\n        //                 this.tableDataCloned[spotPosition].AllowUserToMarkForMakeGood = true;\r\n        //                 this.tableDataCloned[spotPosition].AllowUserToMarkForCredit =\r\n        //                   this.tableDataCloned[spotPosition].AllowUserToMarkForCreditBeforeMarkingSpot;\r\n        //                 this.tableDataCloned[spotPosition].AllowUserToUndoMarkForMakeGood = false;\r\n        //                 this.tableDataCloned[spotPosition].IsDisabled = false;\r\n        //                 this.tableDataCloned[spotPosition].SpotStatus = previousStatus;\r\n        //               }\r\n        //             }\r\n        //           })\r\n        //           //Update all spots cached data\r\n        //           spotIds.forEach((spotId) => {\r\n        //             spotPosition = -1;\r\n        //             for (var i = 0; i < this.spotDataCache.length; i++) {\r\n        //               if (this.spotDataCache[i].IsAllSpots) {\r\n        //                 spotPosition = this.spotDataCache[i].Spots.findIndex(obj => obj.SpotId === spotId);\r\n        //                 if (spotPosition !== -1) {\r\n        //                   spotQuarterPosition = i;\r\n        //                   break;\r\n        //                 }\r\n        //                 break;\r\n        //               }\r\n        //             }\r\n        //             if (spotPosition !== -1) {\r\n        //               previousStatus = this.spotDataCache[spotQuarterPosition].Spots[spotPosition].StatusBeforeMarkingSpot;\r\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].IsMarkForMakeGood = false;\r\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToMarkForMakeGood = true;\r\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToMarkForCredit =\r\n        //                 this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToMarkForCreditBeforeMarkingSpot;\r\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].AllowUserToUndoMarkForMakeGood = false;\r\n        //               this.spotDataCache[spotQuarterPosition].Spots[spotPosition].Status = previousStatus;\r\n        //               if (this.selectedFilterIsAllSpot) {\r\n        //                 spotPosition = this.tableData.findIndex(obj => obj.SpotId === spotId);\r\n        //                 this.tableData[spotPosition].IsMarkForMakeGood = false;\r\n        //                 this.tableData[spotPosition].AllowUserToMarkForMakeGood = true;\r\n        //                 this.tableData[spotPosition].AllowUserToMarkForCredit =\r\n        //                   this.tableData[spotPosition].AllowUserToMarkForCreditBeforeMarkingSpot;\r\n        //                 this.tableData[spotPosition].AllowUserToUndoMarkForMakeGood = false;\r\n        //                 this.tableData[spotPosition].IsDisabled = false;\r\n        //                 this.tableData[spotPosition].SpotStatus = previousStatus;\r\n        //                 spotPosition = this.tableDataCloned.findIndex(obj => obj.SpotId === spotId);\r\n        //                 this.tableDataCloned[spotPosition].IsMarkForMakeGood = false;\r\n        //                 this.tableDataCloned[spotPosition].AllowUserToMarkForMakeGood = true;\r\n        //                 this.tableDataCloned[spotPosition].AllowUserToMarkForCredit =\r\n        //                   this.tableDataCloned[spotPosition].AllowUserToMarkForCreditBeforeMarkingSpot;\r\n        //                 this.tableDataCloned[spotPosition].AllowUserToUndoMarkForMakeGood = false;\r\n        //                 this.tableDataCloned[spotPosition].IsDisabled = false;\r\n        //                 this.tableDataCloned[spotPosition].SpotStatus = previousStatus;\r\n        //               }\r\n        //             }\r\n        //           })\r\n        //           this.gtGeneralConfig.isHeaderChecked = false;\r\n        //           this.clearAllFilter();\r\n        //         }\r\n        //         this.showSkeletonLoading = false;\r\n        //         this.setDisableEnableSpotReportDownloadBtnValue();\r\n        //       },\r\n        //       error: (error: any) => {\r\n        //         if (error.status === ErrorCodes.BAD_REQUEST) {\r\n        //           this.toastr.error(\"Invalid spots requested, please try again\");\r\n        //         }\r\n        //         else {\r\n        //           this.toastr.error(\"Some error occurred, please try again\");\r\n        //         }\r\n        //         this.showSkeletonLoading = false;\r\n        //       }\r\n        //     }\r\n        //   );\r\n    }\r\n\r\n    undoAllCreditedSpots() {\r\n        //   let allCreditedSpots: string[] = this.tableData.filter(obj => obj.AllowUserToUndoMarkForCredit\r\n        //     && obj.SpotStatus == StatusConstants.MarkedForCredit).map(obj => obj.SpotId);\r\n        //   let requestPayload: IMarkForCreditOrMgRequest = {\r\n        //     OrderId: this.orderInfo.orderId,\r\n        //     StationId: +this.orderInfo.channelId,\r\n        //     Spots: allCreditedSpots\r\n        //   }\r\n        //   let allSpots = true;\r\n        //   this.sendSpotsForUndoCredit(requestPayload, allSpots);\r\n    }\r\n\r\n    undoAllMgSpots() {\r\n        //   let allMgSpots: string[] = this.tableData.filter(obj => obj.AllowUserToUndoMarkForMakeGood\r\n        //     && obj.SpotStatus == StatusConstants.MarkedForMG).map(obj => obj.SpotId);\r\n        //   let requestPayload: IMarkForCreditOrMgRequest = {\r\n        //     OrderId: this.orderInfo.orderId,\r\n        //     StationId: +this.orderInfo.channelId,\r\n        //     Spots: allMgSpots\r\n        //   }\r\n        //   let allSpots = true;\r\n        //   this.sendSpotsForUndoMakegood(requestPayload, allSpots);\r\n    }\r\n\r\n    undoIconClicked(event: any) {\r\n        // this.undoSpotId = event.data.SpotId;\r\n        // this.isUndo = true;\r\n        // this.mgOrCredit = event.mgOrCredit;\r\n        // this.confirmationCreditOrMgModalReference = this.modalService.open(this.confirmationCreditOrMgModal, this.ngbModalOptions);\r\n    }\r\n\r\n    filterAppliedToTable(tableData: SpotTableData[]) {\r\n        const easyBtnFilteredData = this.getEasyBtnFilteredData(tableData, \"\");\r\n        const data =\r\n            easyBtnFilteredData != null ? easyBtnFilteredData : this.annaFilterService.filterData(tableData, \"\");\r\n        this.annaFilterService.resetFilterSortActiveStatus = false;\r\n\r\n        this.tableData = cloneDeep(data);\r\n        this.enableOrDisableUndoAllMarkForCreditAndMg();\r\n        this.enableOrDisableMarkForCreditAndMg();\r\n        this.enableOrDisableHeaderCheckbox();\r\n        this.enableOrDisableClearAllBtn();\r\n        this.enableOrDisableEasyFilters(data, false);\r\n        this.createTotalRow(data);\r\n        this.updateNavigationHistory();\r\n        this.cdRef.detectChanges();\r\n    }\r\n\r\n    sortingAppliedToTable(data: SpotTableData[]) {\r\n        this.tableData = cloneDeep(data);\r\n        this.enableOrDisableClearAllBtn();\r\n        this.updateNavigationHistory();\r\n        this.annaFilterService.resetFilterSortActiveStatus = false;\r\n    }\r\n\r\n    resetAllFiltervariables() {\r\n        this.initFilters();\r\n        this.annaSortService.columnSortState = new Map();\r\n\r\n        this.gtGeneralConfig.isGrouped = false;\r\n        this.gtGeneralConfig.showAllColumnFilter = true;\r\n        this.gtGeneralConfig.totalRow = true;\r\n        this.gtGeneralConfig.isHeaderChecked = false;\r\n    }\r\n\r\n    clearAllFilter() {\r\n        this.nonEditableGTComponent?.setScrollToInitialPosition();\r\n        // this.initSorting();\r\n        this.resetAllFiltervariables();\r\n\r\n        this.tableData = cloneDeep(this.tableDataCloned);\r\n        // this.checkIfSortingIsApplied();\r\n        this.enableOrDisableEasyFilters(this.tableData, true);\r\n\r\n        // if (this.initialAppliedEasyFilter) {\r\n        //     this.setFilterAsDefault(this.initialAppliedEasyFilter);\r\n        // }\r\n\r\n        this.initialAppliedEasyFilter = EasyFilterConstants.Booked;\r\n        this.setFilterAsDefault(this.initialAppliedEasyFilter);\r\n\r\n        this.enableOrDisableUndoAllMarkForCreditAndMg();\r\n        this.enableOrDisableMarkForCreditAndMg();\r\n        this.enableOrDisableHeaderCheckbox();\r\n        this.enableOrDisableClearAllBtn();\r\n        this.createTotalRow(this.tableData);\r\n        this.annaFilterService.updateStateOfAllTheKeys(this.annaSortService.columnSortState);\r\n        this.updateNavigationHistory();\r\n        this.resetFilterOutput.emit();\r\n    }\r\n\r\n    initFilters() {\r\n        this.annaFilterService.tooltipSelectedMap = new Map();\r\n        this.annaFilterService.selectedRadio = null;\r\n        this.annaFilterService.appliedFiltersArray = [];\r\n    }\r\n\r\n    enableOrDisableClearAllBtn() {\r\n        let isFilterApplied = false;\r\n        if (this.initialAppliedEasyFilter) {\r\n            const filterSet = new Set(this.annaFilterService.appliedFiltersArray);\r\n            const initialAppliedEasyFilter = this.annaSpotDetailsService.easyFilterNamesAndKeyNamesToUseMap[\r\n                this.initialAppliedEasyFilter\r\n            ]\r\n                ? this.annaSpotDetailsService.easyFilterNamesAndKeyNamesToUseMap[this.initialAppliedEasyFilter]\r\n                : this.initialAppliedEasyFilter;\r\n            isFilterApplied =\r\n                (filterSet.has(initialAppliedEasyFilter) && filterSet.size > 1) ||\r\n                !filterSet.has(initialAppliedEasyFilter);\r\n        } else {\r\n            const anyEasyFilterActive = this.getSelectedEasyFilter();\r\n            const anyAppliedFilter =\r\n                !this.annaFilterService.appliedFiltersArray.includes(\"showIfBookedFilterSelected\") &&\r\n                this.annaFilterService.appliedFiltersArray.length > 0;\r\n            isFilterApplied = anyEasyFilterActive === EasyFilterConstants.UnSelectedBooked || anyAppliedFilter;\r\n        }\r\n\r\n        let isSortApplied = false;\r\n        this.annaSortService.columnSortState.forEach((value, key) => {\r\n            if (value === \"ASC\" || value === \"DESC\") {\r\n                isSortApplied = true;\r\n            }\r\n        });\r\n\r\n        this.disableClearAllBtn = !(isFilterApplied || isSortApplied);\r\n        this.cdRef.detectChanges();\r\n    }\r\n\r\n    markSpots(yes: boolean) {\r\n        // if (yes) {\r\n        //   if (!this.isUndo) {\r\n        //     this.preparePayloadAndSendSelectedSpots(this.mgOrCredit);\r\n        //   }\r\n        //   else {\r\n        //     this.preparePayloadAndSendSelectedSpotForUndo(this.mgOrCredit);\r\n        //   }\r\n        // }\r\n        // this.closeCreditOrMgConfirmationModal();\r\n    }\r\n\r\n    closeCreditOrMgConfirmationModal() {\r\n        // this.confirmationCreditOrMgModalReference.close();\r\n    }\r\n\r\n    openCustomizeColumnsModal() {\r\n        // obtain checkbox state consistent with table columns visible\r\n        const visibleColumns: string[] = [];\r\n        this.tableHeaders.forEach((column) => {\r\n            if (column.visible) {\r\n                visibleColumns.push(column.headerInfo[0].objectKey);\r\n            }\r\n        });\r\n        this.customizableColumnsList = cloneDeep(this.customizableColumnsListCloned);\r\n        this.isRevertCustomizedColumns = false;\r\n        this.customizableColumnsList.forEach((column) => {\r\n            if (!column.isFixed && visibleColumns.includes(column.objectKey)) {\r\n                column.isChecked = true;\r\n                this.isRevertCustomizedColumns = true;\r\n            }\r\n        });\r\n        this.customizeColumnsModalReference = this.modalService.open(this.customizeColumnsModal, this.ngbModalOptions);\r\n    }\r\n\r\n    selectUnselectCustomizeColumns(column: ICustomizableColumnsForSpotDetails) {\r\n        const columnIndex = this.customizableColumnsList.findIndex((obj) => obj.objectKey === column.objectKey);\r\n        this.customizableColumnsList[columnIndex].isChecked = !this.customizableColumnsList[columnIndex].isChecked;\r\n        this.isRevertCustomizedColumns =\r\n            this.customizableColumnsList.findIndex((obj) => !obj.isFixed && obj.isChecked) !== -1;\r\n    }\r\n\r\n    revertCustomizedColumns() {\r\n        this.isRevertCustomizedColumns = false;\r\n        this.customizableColumnsList.forEach((column) => {\r\n            if (!column.isFixed) {\r\n                column.isChecked = false;\r\n            }\r\n        });\r\n    }\r\n\r\n    customizeColumns(customize: boolean) {\r\n        if (customize) {\r\n            const selectedColumnsList: string[] = [];\r\n            this.annaFilterService.resetFilterSortActiveStatus = false;\r\n            this.customizableColumnsList.forEach((column) => {\r\n                if (!column.isFixed && column.isChecked) {\r\n                    selectedColumnsList.push(column.objectKey);\r\n                }\r\n            });\r\n            if (selectedColumnsList.length > 0) {\r\n                const changedTableHeaders = cloneDeep(this.tableHeadersCloned);\r\n                selectedColumnsList.forEach((selectedColumn) => {\r\n                    changedTableHeaders.forEach((column) => {\r\n                        const isSelected =\r\n                            column.headerInfo.findIndex((obj) => obj.objectKey === selectedColumn) !== -1;\r\n                        if (isSelected) {\r\n                            column.visible = true;\r\n                        }\r\n                    });\r\n                });\r\n                this.tableHeaders = cloneDeep(changedTableHeaders);\r\n            } else {\r\n                // revert to default\r\n                this.tableHeaders = cloneDeep(this.tableHeadersCloned);\r\n            }\r\n            this.setGroupedTableData();\r\n            if (!this.gtGeneralConfig.isGrouped) {\r\n                this.createTotalRow(this.tableData);\r\n            } else {\r\n                this.createTotalRowForGroupedData(this.groupedData);\r\n            }\r\n            this.updateNavigationHistory();\r\n        }\r\n        this.closeCustomizeColumnsModal();\r\n    }\r\n\r\n    closeCustomizeColumnsModal() {\r\n        this.customizeColumnsModalReference.close();\r\n    }\r\n\r\n    checkIfOtherEasyFilterIsApplied() {\r\n        const appliedFiltersSet = new Set(this.annaFilterService.appliedFiltersArray);\r\n        this.easyFilterNames.forEach((name) => {\r\n            if (this.easyFilterMap.get(name).active) {\r\n                this.easyFilterMap.set(name, { active: false, disabled: this.easyFilterMap.get(name).disabled });\r\n                const nameToUse = this.annaSpotDetailsService.easyFilterNamesAndKeyNamesToUseMap[name];\r\n                this.annaFilterService.tooltipSelectedMap.delete(nameToUse || name);\r\n\r\n                if (nameToUse && appliedFiltersSet.has(nameToUse)) {\r\n                    appliedFiltersSet.delete(nameToUse);\r\n                }\r\n\r\n                if (name && appliedFiltersSet.has(name)) {\r\n                    appliedFiltersSet.delete(name);\r\n                }\r\n            }\r\n        });\r\n        this.annaFilterService.appliedFiltersArray = [...appliedFiltersSet];\r\n    }\r\n\r\n    easyFilterClicked(btnName: string) {\r\n        const filterName = btnName;\r\n        this.nonEditableGTComponent?.setScrollToInitialPosition();\r\n        if (this.easyFilterMap.get(filterName).active) {\r\n            this.checkIfOtherEasyFilterIsApplied();\r\n            this.enableOrDisableClearAllBtn();\r\n\r\n            const easyBtnFilteredData = this.getEasyBtnFilteredData(this.tableDataCloned, \"\");\r\n            this.tableData =\r\n                easyBtnFilteredData != null\r\n                    ? easyBtnFilteredData\r\n                    : this.annaFilterService.filterData(this.tableDataCloned, \"\");\r\n\r\n            this.enableOrDisableEasyFilters(this.tableData, false);\r\n            this.enableOrDisableUndoAllMarkForCreditAndMg();\r\n            this.enableOrDisableMarkForCreditAndMg();\r\n            this.enableOrDisableHeaderCheckbox();\r\n            this.createTotalRow(this.tableData);\r\n            if (this.gtGeneralConfig.isGrouped) {\r\n                this.gtGeneralConfig.isGrouped = false;\r\n                this.gtGeneralConfig.totalRow = true;\r\n                this.gtGeneralConfig.tableContainerName = null;\r\n                this.gtGeneralConfig.showAllColumnFilter = true;\r\n            }\r\n        } else {\r\n            this.checkIfOtherEasyFilterIsApplied();\r\n            const nameToUse = this.annaSpotDetailsService.easyFilterNamesAndKeyNamesToUseMap[filterName];\r\n\r\n            this.annaFilterService.appliedFiltersArray.push(nameToUse || filterName);\r\n            this.annaFilterService.tooltipSelectedMap.set(nameToUse || filterName, [true]);\r\n            this.easyFilterMap.set(filterName, { active: true, disabled: false });\r\n            if (filterName === EasyFilterConstants.GroupedPEAndMG) {\r\n                this.filterGroupData();\r\n            } else {\r\n                if (this.gtGeneralConfig.isGrouped) {\r\n                    this.gtGeneralConfig.isGrouped = false;\r\n                }\r\n                const easyBtnFilteredData = this.getEasyBtnFilteredData(this.tableDataCloned, \"\");\r\n                this.tableData =\r\n                    easyBtnFilteredData != null\r\n                        ? easyBtnFilteredData\r\n                        : this.annaFilterService.filterData(this.tableDataCloned, \"\");\r\n                this.tableData = this.annaFilterService.filterData(this.tableData, \"\");\r\n                this.enableOrDisableUndoAllMarkForCreditAndMg();\r\n                this.enableOrDisableMarkForCreditAndMg();\r\n                this.enableOrDisableHeaderCheckbox();\r\n                this.createTotalRow(this.tableData);\r\n            }\r\n            this.enableOrDisableClearAllBtn();\r\n        }\r\n        this.updateNavigationHistory();\r\n    }\r\n\r\n    filterGroupData() {\r\n        // disable other easy filters\r\n        this.easyFilterMap.forEach((value, key) => {\r\n            if (key !== EasyFilterConstants.GroupedPEAndMG) {\r\n                this.easyFilterMap.set(key, { active: false, disabled: true });\r\n            }\r\n        });\r\n        this.gtGeneralConfig.isGrouped = true;\r\n        this.gtGeneralConfig.totalRow = true;\r\n        this.gtGeneralConfig.showAllColumnFilter = false;\r\n        this.gtGeneralConfig.tableContainerName = TableClassNameConstant.groupedTableClass;\r\n        this.gtGeneralConfig.disableHeaderCheckbox = true;\r\n        this.tableData = this.groupedTableData;\r\n        this.setDisableEnableSpotReportDownloadBtnValue();\r\n        this.gtGeneralConfig = { ...this.gtGeneralConfig };\r\n        // this.undoMgSpots = this.undoCreditedSpots = this.spotsSelectedToMarkForCredit = this.spotsSelectedToMarkForMg = false;\r\n        this.createTotalRowForGroupedData(this.groupedData);\r\n    }\r\n\r\n    updateNavigationHistory() {\r\n        this.annaSpotDetailsService.filtersAppliedRouteChange = true;\r\n        const queryParams = this.prepareQueryParamOnFilterApplication();\r\n        const updatedParentQueryParams = this.queryParams ? cloneDeep(this.queryParams) : {};\r\n\r\n        if (Object.keys(queryParams).length > 0) {\r\n            const hashedQueryParams = this.persistingFilterService.storeKeyValueInLocalStorage(queryParams);\r\n            this.annaGtService.updateQueryParamsFilter(\"filters\", hashedQueryParams, \"ADD\", updatedParentQueryParams);\r\n        } else {\r\n            this.annaGtService.updateQueryParamsFilter(\"filters\", {}, \"DELETE\", updatedParentQueryParams);\r\n        }\r\n\r\n        if (Object.keys(updatedParentQueryParams).length > 0) {\r\n            this.router.navigate([], {\r\n                queryParams: updatedParentQueryParams,\r\n            });\r\n        } else {\r\n            this.router.navigate([]);\r\n        }\r\n\r\n        this.anyFilterAppliedToTable.emit();\r\n        this.setDisableEnableSpotReportDownloadBtnValue();\r\n    }\r\n\r\n    setDisableEnableSpotReportDownloadBtnValue() {\r\n        const disable = !!(this.showSkeletonLoading || (this.tableData && !(this.tableData.length > 0)));\r\n        this.annaSpotDetailsService.disableEnableSpotReportDownloadBtnSubject.next(disable);\r\n    }\r\n\r\n    setSortComponentDataProperty(sortComponent: any) {\r\n        sortComponent.data = this.tableData;\r\n        sortComponent.clonedData = cloneDeep(this.tableData);\r\n    }\r\n\r\n    prepareQueryParamOnFilterApplication() {\r\n        const selectedEasyFilter = this.getSelectedEasyFilter();\r\n        const query: any = {};\r\n\r\n        if (\r\n            this.annaFilterService.appliedFiltersArray.length > 0 &&\r\n            !(\r\n                this.annaFilterService.appliedFiltersArray.length === 1 &&\r\n                selectedEasyFilter === this.initialAppliedEasyFilter\r\n            )\r\n        ) {\r\n            query.appliedFilters = this.annaFilterService.appliedFiltersArray;\r\n            query.selectedFilterData = JSON.stringify(Array.from(this.annaFilterService.tooltipSelectedMap));\r\n            query.easyFilters = selectedEasyFilter;\r\n        }\r\n\r\n        if (selectedEasyFilter === EasyFilterConstants.UnSelectedBooked) {\r\n            query.easyFilters = selectedEasyFilter;\r\n        }\r\n\r\n        if (this.annaGtService.isSortingAppliedToTable()) {\r\n            query.sortState = JSON.stringify(Array.from(this.annaSortService.columnSortState));\r\n        }\r\n\r\n        if (!isEqual(this.initialNormalizationVal, this.selectedNormalization) && this.showNormalizationToggle) {\r\n            query.normalizedData = JSON.stringify(this.selectedNormalization);\r\n        }\r\n\r\n        if (this.defaultView !== this.selectedView) {\r\n            query.selectedView = this.selectedView;\r\n        }\r\n\r\n        if (this.selectedMetric?.text !== this.orderDefaultMetricType) {\r\n            query.metricType = JSON.stringify(this.selectedMetric?.text);\r\n        }\r\n\r\n        return query;\r\n    }\r\n\r\n    getSelectedEasyFilter() {\r\n        let easyFilterIndex = -1;\r\n        let index = 0;\r\n        this.easyFilterMap.forEach((value, key) => {\r\n            if (value.active) {\r\n                easyFilterIndex = index;\r\n            }\r\n            index += 1;\r\n        });\r\n\r\n        // if BOOKED Easy filter is not active, then that's consider a change in filter\r\n        if (\r\n            easyFilterIndex === -1 &&\r\n            !this.easyFilterMap.get(EasyFilterConstants.Booked).active &&\r\n            !this.easyFilterMap.get(EasyFilterConstants.Booked).disabled\r\n        ) {\r\n            return EasyFilterConstants.UnSelectedBooked;\r\n        }\r\n        return easyFilterIndex === -1 ? null : this.easyFilterNames[easyFilterIndex];\r\n    }\r\n\r\n    initSorting() {\r\n        // this.annaSortService.columnSortState = new Map();\r\n        // this.annaSortService.noSortingAppliedData = [];\r\n    }\r\n\r\n    appendOrRemoveClassName(condition: boolean, propertyName: any, className: string) {\r\n        if (condition) {\r\n            propertyName.gtClass = propertyName.gtClass.includes(className)\r\n                ? propertyName.gtClass\r\n                : propertyName.gtClass.concat(className);\r\n        } else {\r\n            propertyName.gtClass = propertyName.gtClass.includes(className)\r\n                ? propertyName.gtClass.replace(className, \" \")\r\n                : propertyName.gtClass;\r\n        }\r\n    }\r\n\r\n    noDataCase() {\r\n        this.tableData = [];\r\n        this.tableDataCloned = [];\r\n        this.totalRowInfo = [];\r\n        this.disableCustomizeColumnsBtn = true;\r\n        this.gtGeneralConfig.totalRow = false;\r\n        this.enableOrDisableEasyFilters([], true);\r\n        this.initializeCustomizeColumns();\r\n        this.setDisableEnableSpotReportDownloadBtnValue();\r\n    }\r\n\r\n    setFilterAsDefault(filterName: string) {\r\n        let isAlreadyEasyFilterApplied = false;\r\n        this.easyFilterNames.forEach((name) => {\r\n            if (this.easyFilterMap.get(name).active) {\r\n                isAlreadyEasyFilterApplied = true;\r\n                if (\r\n                    !this.annaFilterService.appliedFiltersArray ||\r\n                    this.annaFilterService.appliedFiltersArray.length === 0\r\n                ) {\r\n                    const nameToUse = this.annaSpotDetailsService.easyFilterNamesAndKeyNamesToUseMap[name];\r\n\r\n                    this.annaFilterService.appliedFiltersArray.push(nameToUse || name);\r\n                    this.annaFilterService.tooltipSelectedMap.set(nameToUse || name, [true]);\r\n                }\r\n            }\r\n        });\r\n\r\n        // set default filter if already any easy filter is NOT applied\r\n        if (!isAlreadyEasyFilterApplied) {\r\n            this.enableOrDisableEasyFilters(this.tableData, true);\r\n            if (!this.easyFilterMap.get(filterName).disabled) {\r\n                this.initialAppliedEasyFilter = filterName;\r\n                const nameToUse = this.annaSpotDetailsService.easyFilterNamesAndKeyNamesToUseMap[filterName];\r\n\r\n                this.annaFilterService.appliedFiltersArray.push(nameToUse || filterName);\r\n                this.annaFilterService.tooltipSelectedMap.set(nameToUse || filterName, [true]);\r\n                this.easyFilterMap.set(filterName, { active: true, disabled: false });\r\n                const easyBtnFilteredData = this.getEasyBtnFilteredData(this.tableDataCloned, \"\");\r\n                this.tableData =\r\n                    easyBtnFilteredData != null\r\n                        ? easyBtnFilteredData\r\n                        : this.annaFilterService.filterData(this.tableDataCloned, \"\");\r\n                this.setDisableEnableSpotReportDownloadBtnValue();\r\n\r\n                this.createTotalRow(this.tableData);\r\n            }\r\n        }\r\n    }\r\n\r\n    applyPeriodSelection(value: DateAndAllKeyType) {\r\n        this.setSelectedFilterValue(value);\r\n\r\n        this.annaSpotDetailsService.filtersAppliedRouteChange = true;\r\n\r\n        const objToEmit: any = {\r\n            selectedPeriodData: this.getFilterPaylod(),\r\n            resetColumnFilters: this.tableDataCloned && this.tableDataCloned.length > 0,\r\n        };\r\n\r\n        if (objToEmit.resetColumnFilters) {\r\n            this.initFilters();\r\n            this.annaSortService.columnSortState = new Map();\r\n            this.annaFilterService.updateStateOfAllTheKeys(this.annaSortService.columnSortState);\r\n        }\r\n\r\n        this.gtGeneralConfig.isGrouped = false;\r\n        this.gtGeneralConfig.showAllColumnFilter = true;\r\n        this.gtGeneralConfig = { ...this.gtGeneralConfig };\r\n\r\n        this.periodSelectionChanged.emit(objToEmit);\r\n        this.checkForCacheDataOtherwiseCallAPI(\r\n            this.selectedFilterIsAllSpot,\r\n            this.selectedFilterStartDate,\r\n            this.selectedFilterEndDate,\r\n            true,\r\n        );\r\n    }\r\n\r\n    getEasyBtnFilteredData(originalData: SpotTableData[], keyToSkip: string): null | any[] {\r\n        const filteredData = originalData;\r\n        let result = null;\r\n\r\n        this.annaFilterService.tooltipSelectedMap.forEach((value, key) => {\r\n            if (\r\n                (key !== keyToSkip && this.annaSpotDetailsService.easyFiltersInSpotDetails.has(key)) ||\r\n                this.annaSpotDetailsService.easyFiltersKeysInSpotDetails.has(key)\r\n            ) {\r\n                result = this.annaSpotDetailsService.filterOnEasyFiltersInSpotDetails(\r\n                    filteredData,\r\n                    this.annaSpotDetailsService.keyNamesToUseAndEasyFilterNamesMap[key]\r\n                        ? this.annaSpotDetailsService.keyNamesToUseAndEasyFilterNamesMap[key]\r\n                        : key,\r\n                );\r\n            }\r\n        });\r\n        return result;\r\n    }\r\n\r\n    settingConfig() {\r\n        this.ngbModalOptions = {\r\n            size: \"lg\",\r\n        };\r\n        this.ngSelectConfig = { ...this.annaGlobalConfig.defaultNgSelectSettings };\r\n        this.gtGeneralConfig = { ...this.annaGlobalConfig.defaultGtGeneralConfig };\r\n        this.periodModalTitle = this.quarterFilterConstant.SpotDetailsPeriodModalTitle;\r\n        this.periodModalMessage = this.quarterFilterConstant.SpotDetailsPeriodModalMessage;\r\n    }\r\n\r\n    ngOnDestroy() {\r\n        this.quarterFilterService.onDropdownChanged = false;\r\n        this.annaSpotDetailsService.filtersAppliedRouteChange = undefined;\r\n        this.ngUnsubscribe.next();\r\n        this.ngUnsubscribe.complete();\r\n    }\r\n\r\n    updateNormalizationValue(val: NormalizedData) {\r\n        this.selectedNormalization = val;\r\n        this.annaSpotDetailsService.filtersAppliedRouteChange = true;\r\n        this.normalizationToggledOrDemoSelectionChanged.emit(val);\r\n        this.resetTableHeadersBasedOnNormalizationValue(val.toggle);\r\n        this.resetAllFiltervariables();\r\n\r\n        this.enableOrDisableEasyFilters(this.tableData, true);\r\n\r\n        if (this.initialAppliedEasyFilter) {\r\n            this.setFilterAsDefault(this.initialAppliedEasyFilter);\r\n        }\r\n        this.updateNavigationHistory();\r\n        this.checkForCacheDataOtherwiseCallAPI(\r\n            this.selectedFilterIsAllSpot,\r\n            this.selectedFilterStartDate,\r\n            this.selectedFilterEndDate,\r\n            true,\r\n        );\r\n    }\r\n\r\n    resetTableHeadersBasedOnNormalizationValue(isNormalized: boolean) {\r\n        if (this.showNormalizationToggle && this.tableHeaders) {\r\n            const tableHeaders = cloneDeep(this.tableHeaders);\r\n            const normalizedColumnIndex: number = tableHeaders?.findIndex((n) =>\r\n                n.headerInfo[0]?.objectKey?.includes(\"Normalized\"),\r\n            );\r\n\r\n            if (!isNormalized) {\r\n                if (normalizedColumnIndex !== -1) {\r\n                    tableHeaders.splice(normalizedColumnIndex, 1);\r\n                }\r\n            } else if (normalizedColumnIndex === -1) {\r\n                const normalizationHedaer = this.annaSpotDetailsService.returnNormalizationHeader(\r\n                    this.showSkeletonLoading,\r\n                    this.selectedMetric.text,\r\n                );\r\n                const daypartColumnIndex: number = tableHeaders?.findIndex((n) =>\r\n                    n.headerInfo[0]?.objectKey?.includes(\"DP\"),\r\n                );\r\n                tableHeaders.splice(daypartColumnIndex, 0, normalizationHedaer);\r\n            }\r\n\r\n            this.tableHeaders = cloneDeep(tableHeaders);\r\n        }\r\n        this.cdRef.detectChanges();\r\n    }\r\n\r\n    onOrderMetricChanged(metric: IdTextForSingleSelect) {\r\n        this.selectedMetric = metric as { id: number; text: OrderMetrics };\r\n\r\n        this.tableData.forEach((spot: SpotTableData) => {\r\n            const estimatePriorityValByMetric = GenericSpotDetailsService.returnEstimatePrioritiesColumnVal(\r\n                this.estimatePriorities,\r\n                spot,\r\n                this.selectedMetric?.text,\r\n            );\r\n            spot.estimatePriorityUpperLabelVal = estimatePriorityValByMetric[0];\r\n            spot.estimatePriorityLowerLabelVal = estimatePriorityValByMetric[1];\r\n        });\r\n\r\n        this.createTotalRow(this.tableData);\r\n        this.clearAllFilter();\r\n        this.metricTypeDropdownChanged.emit(metric.text);\r\n        this.annaSpotDetailsService.filtersAppliedRouteChange = true;\r\n        this.updateNavigationHistory();\r\n    }\r\n\r\n    setMetricDropdownConfig() {\r\n        this.orderMetricsListForDropdown = this.primaryOrderPanelService.getOrderMetricsDropdownValues();\r\n        this.metricDropdownConfig = { ...this.annaGlobalConfig.defaultSingleSelectConfig };\r\n        this.metricDropdownConfig.placeholder = \"No data found\";\r\n    }\r\n\r\n    viewChanged(selectedView: any) {\r\n        this.selectedView = selectedView as SPOTDETAILVIEWS;\r\n        this.selectedNormalization = { demoId: null, toggle: false };\r\n        this.selectedMetric =\r\n            this.orderDefaultMetricType === OrderMetrics.imps\r\n                ? this.orderMetricsListForDropdown[1]\r\n                : this.orderMetricsListForDropdown[0];\r\n        this.resetTableHeadersBasedOnNormalizationValue(false);\r\n        this.viewToggled.emit(this.selectedView);\r\n        this.normalizationToggledOrDemoSelectionChanged.emit(this.selectedNormalization);\r\n        this.metricTypeDropdownChanged.emit(this.selectedMetric.text);\r\n        this.annaSpotDetailsService.filtersAppliedRouteChange = true;\r\n        this.resetAllFiltervariables();\r\n        this.updateNavigationHistory();\r\n        this.checkForCacheDataOtherwiseCallAPI(\r\n            this.selectedFilterIsAllSpot,\r\n            this.selectedFilterStartDate,\r\n            this.selectedFilterEndDate,\r\n            true,\r\n            true,\r\n        );\r\n    }\r\n}\r\n","<div\r\n    class=\"warning-error\"\r\n    *ngIf=\"!showSkeletonLoading && buyerRequestedSpotExists\"\r\n>\r\n    <i class=\"mi mdi-warning\"></i>\r\n    <span>\r\n        One or more spots have been requested for credit by the buyer. Please mark them for either credit or MakeGood,\r\n        at the earliest.\r\n    </span>\r\n</div>\r\n\r\n<section class=\"quarter-filters\">\r\n    <anna-design-order-container-filter-modal\r\n        class=\"pr-10\"\r\n        *ngIf=\"flightPeriodData\"\r\n        [title]=\"periodModalTitle\"\r\n        [selectedData]=\"persistingFilterPeriodData\"\r\n        [disablePeriodSelection]=\"showSkeletonLoading || disablePeriodSelection\"\r\n        [flightPeriod]=\"flightPeriodData\"\r\n        [message]=\"periodModalMessage\"\r\n        [parentQueryParams]=\"queryParams\"\r\n        [startDateConsideringFactor]=\"startDateConsideringFactor\"\r\n        (apply)=\"applyPeriodSelection($event)\"\r\n        (initialQuarterStartEndDateEmitter)=\"initializePeriodFilter($event)\"\r\n    >\r\n    </anna-design-order-container-filter-modal>\r\n\r\n    <ng-container *ngIf=\"!flightPeriodData\">\r\n        <div class=\"d-flex flex-column\">\r\n            <span class=\"header\">Period</span>\r\n            <ngx-skeleton-loader\r\n                count=\"1\"\r\n                [theme]=\"{ width: '280px', height: '25px', 'background-color': '#D8D8D8', 'border-radius': 0 }\"\r\n            ></ngx-skeleton-loader>\r\n        </div>\r\n    </ng-container>\r\n\r\n    <ng-container *ngIf=\"showSkeletonLoading\">\r\n        <anna-design-skt-loader\r\n            [count]=\"1\"\r\n            *ngIf=\"showSellerViewToggle\"\r\n            [theme]=\"{ height: '30px', width: '110px', float: 'left', 'margin-left': '20px', 'margin-bottom': '0px' }\"\r\n        >\r\n        </anna-design-skt-loader>\r\n        <anna-design-skt-loader\r\n            [count]=\"1\"\r\n            *ngIf=\"showBuyerViewToggle\"\r\n            [theme]=\"{ height: '30px', width: '110px', float: 'left', 'margin-bottom': '0px' }\"\r\n        >\r\n        </anna-design-skt-loader>\r\n    </ng-container>\r\n    <anna-core-button-toggle\r\n        *ngIf=\"(showSellerViewToggle || showBuyerViewToggle) && !showSkeletonLoading\"\r\n        [isPageViewToggle]=\"true\"\r\n        [options]=\"buttonToggleOptions\"\r\n        [selectedValue]=\"selectedView\"\r\n        [disabled]=\"tableDataCloned?.length === 0\"\r\n        (valueChange)=\"viewChanged($event)\"\r\n    >\r\n    </anna-core-button-toggle>\r\n    <!-- <mat-button-toggle-group\r\n        *ngIf=\"(showSellerViewToggle || showBuyerViewToggle) && !showSkeletonLoading\"\r\n        class=\"anna-button-toggle\"\r\n        [value]=\"selectedView\"\r\n        (change)=\"viewChanged($event.value)\"\r\n        [disabled]=\"tableDataCloned?.length === 0\"\r\n    >\r\n        <mat-button-toggle\r\n            *ngIf=\"showSellerViewToggle\"\r\n            [disabled]=\"!showBuyerViewToggle\"\r\n            value=\"SellerView\"\r\n            >Seller View</mat-button-toggle\r\n        >\r\n        <mat-button-toggle\r\n            *ngIf=\"showBuyerViewToggle\"\r\n            value=\"BuyerView\"\r\n            >Buyer View</mat-button-toggle\r\n        >\r\n    </mat-button-toggle-group> -->\r\n\r\n    <ng-container *ngIf=\"normalizationDemographics\">\r\n        <div\r\n            *ngIf=\"showNormalizationToggle\"\r\n            class=\"spot-details-normalization\"\r\n        >\r\n            <anna-design-demo-normalization\r\n                [dropdownData]=\"normalizationDemographics\"\r\n                [selectedFilters]=\"selectedNormalization\"\r\n                [normalizationTooltipClass]=\"'drr-summary-normalization-tooltip normalization-tooltip'\"\r\n                (normalizationChange)=\"updateNormalizationValue($event)\"\r\n                [isDisabled]=\"showSkeletonLoading || (tableData.length === 0 && !APIFailed)\"\r\n            ></anna-design-demo-normalization>\r\n            <div\r\n                *ngIf=\"showNormalizationToggle\"\r\n                class=\"divider-line\"\r\n            ></div>\r\n        </div>\r\n\r\n        <anna-design-single-select\r\n            [items]=\"orderMetricsListForDropdown\"\r\n            class=\"order-metrics-dropdown\"\r\n            [selectedItem]=\"selectedMetric\"\r\n            [config]=\"metricDropdownConfig\"\r\n            (valueChanged)=\"onOrderMetricChanged($event)\"\r\n            [disabled]=\"showSkeletonLoading || (tableData?.length === 0 && !APIFailed)\"\r\n        >\r\n        </anna-design-single-select>\r\n    </ng-container>\r\n\r\n    <div class=\"d-flex\">\r\n        <div class=\"mark-for-credit-mg-btns-container\">\r\n            <!-- <ng-container *ngIf=\"!showSkeletonLoading\">\r\n        <button\r\n          *ngIf=\"showMarkForCreditBtn\"\r\n          class=\"btn-regular btn-action-blue reporting-buttons border-none\"\r\n          [disabled]=\"!spotsSelectedToMarkForCredit\"\r\n          (click)=\"openConfirmationModal('Credit')\"\r\n        >\r\n          Mark for Credit\r\n        </button>\r\n        <button\r\n          *ngIf=\"showMarkForMakegoodBtn\"\r\n          class=\"btn-regular btn-action-blue reporting-buttons border-none\"\r\n          [disabled]=\"!spotsSelectedToMarkForMg\"\r\n          (click)=\"openConfirmationModal('MakeGood')\"\r\n        >\r\n          Mark for MakeGood\r\n        </button>\r\n        <button\r\n          class=\"blue-btn border-none\"\r\n          [disabled]=\"disableCustomizeColumnsBtn\"\r\n          (click)=\"openCustomizeColumnsModal()\"\r\n        >\r\n          Customize Columns\r\n        </button>\r\n      </ng-container> -->\r\n\r\n            <!-- <ng-container *ngIf=\"showSkeletonLoading\">\r\n        <anna-design-skt-loader\r\n          *ngIf=\"showMarkForCreditBtn\"\r\n          [count]=\"1\"\r\n          [theme]=\"{ height: '30px', width: '160px', 'margin-right': '10px' }\"\r\n        >\r\n        </anna-design-skt-loader>\r\n        <anna-design-skt-loader\r\n          *ngIf=\"showMarkForMakegoodBtn\"\r\n          [count]=\"1\"\r\n          [theme]=\"{\r\n            height: '30px',\r\n            width: '160px',\r\n            'margin-top': '12px',\r\n            'margin-right': '10px'\r\n          }\"\r\n        >\r\n        </anna-design-skt-loader>\r\n        <anna-design-skt-loader\r\n          [count]=\"1\"\r\n          [theme]=\"{ height: '30px', width: '160px' }\"\r\n        >\r\n        </anna-design-skt-loader>\r\n      </ng-container> -->\r\n        </div>\r\n    </div>\r\n</section>\r\n\r\n<section\r\n    class=\"easy-filters\"\r\n    [ngClass]=\"{ 'easy-filters-loading': showSkeletonLoading }\"\r\n>\r\n    <ng-container *ngIf=\"!showSkeletonLoading\">\r\n        <div>\r\n            <ng-container\r\n                class=\"d-flex\"\r\n                *ngFor=\"let btnName of easyFilterNames; let i = index; let last = last\"\r\n            >\r\n                <button\r\n                    *ngIf=\"\r\n                        btnName !== easyFilterConstants.GroupedPEAndMG &&\r\n                        btnName !== easyFilterConstants.ViolatedSpot &&\r\n                        btnName !== easyFilterConstants.ViolatingSpot &&\r\n                        btnName !== easyFilterConstants.LateRuns\r\n                    \"\r\n                    class=\"intelli-filter\"\r\n                    [disabled]=\"this.easyFilterMap.get(btnName).disabled\"\r\n                    [ngClass]=\"{\r\n                        active: this.easyFilterMap.get(btnName).active,\r\n                        'only-enabled-button': enabledFiltersCount === 1 && easyFilterMap.get(btnName).active\r\n                    }\"\r\n                    (click)=\"easyFilterClicked(btnName)\"\r\n                >\r\n                    {{ btnName }}\r\n                </button>\r\n                <button\r\n                    *ngIf=\"btnName === easyFilterConstants.LateRuns && showLateRunsEasyFilter\"\r\n                    class=\"intelli-filter\"\r\n                    [disabled]=\"this.easyFilterMap.get(btnName).disabled\"\r\n                    [ngClass]=\"{\r\n                        active: this.easyFilterMap.get(btnName).active,\r\n                        'only-enabled-button': enabledFiltersCount === 1 && easyFilterMap.get(btnName).active\r\n                    }\"\r\n                    (click)=\"easyFilterClicked(btnName)\"\r\n                >\r\n                    {{ btnName }}\r\n                </button>\r\n                <ng-container\r\n                    *ngIf=\"\r\n                        btnName === easyFilterConstants.GroupedPEAndMG ||\r\n                        (showLURVoilationInfo &&\r\n                            (btnName === easyFilterConstants.ViolatedSpot ||\r\n                                btnName === easyFilterConstants.ViolatingSpot))\r\n                    \"\r\n                >\r\n                    <div\r\n                        class=\"filter-divider\"\r\n                        *ngIf=\"\r\n                            btnName === easyFilterConstants.GroupedPEAndMG ||\r\n                            (showLURVoilationInfo &&\r\n                                (btnName === easyFilterConstants.ViolatedSpot ||\r\n                                    (btnName === easyFilterConstants.ViolatingSpot && !isCandidateViolation)))\r\n                        \"\r\n                    ></div>\r\n                    <div\r\n                        class=\"filter-label\"\r\n                        *ngIf=\"\r\n                            showLURVoilationInfo &&\r\n                            (btnName === easyFilterConstants.ViolatedSpot ||\r\n                                (btnName === easyFilterConstants.ViolatingSpot && !isCandidateViolation))\r\n                        \"\r\n                    >\r\n                        <span>Political Violations</span>\r\n                    </div>\r\n                    <button\r\n                        class=\"intelli-filter\"\r\n                        [disabled]=\"this.easyFilterMap.get(btnName).disabled\"\r\n                        [ngClass]=\"{\r\n                            active: this.easyFilterMap.get(btnName).active,\r\n                            'only-enabled-button': enabledFiltersCount === 1 && easyFilterMap.get(btnName).active\r\n                        }\"\r\n                        (click)=\"easyFilterClicked(btnName)\"\r\n                    >\r\n                        {{ btnName }}\r\n                    </button>\r\n                </ng-container>\r\n            </ng-container>\r\n        </div>\r\n        <button\r\n            *ngIf=\"!showSkeletonLoading\"\r\n            class=\"clear-all-btn\"\r\n            (click)=\"clearAllFilter()\"\r\n            [disabled]=\"disableClearAllBtn\"\r\n        >\r\n            Reset all filters\r\n        </button>\r\n    </ng-container>\r\n\r\n    <ng-container *ngIf=\"showSkeletonLoading\">\r\n        <anna-design-skt-loader\r\n            [count]=\"\r\n                showLURVoilationInfo\r\n                    ? selectedView === 'SellerView'\r\n                        ? showLateRunsEasyFilter\r\n                            ? 9\r\n                            : 8\r\n                        : showLateRunsEasyFilter\r\n                          ? 8\r\n                          : 7\r\n                    : selectedView === 'SellerView'\r\n                      ? showLateRunsEasyFilter\r\n                          ? 8\r\n                          : 7\r\n                      : showLateRunsEasyFilter\r\n                        ? 7\r\n                        : 6\r\n            \"\r\n            [theme]=\"{\r\n                height: '20px',\r\n                width: '100px',\r\n                display: 'inline-block',\r\n                'margin-right': '10px',\r\n                'border-radius': '12px',\r\n                'margin-bottom': '0px'\r\n            }\"\r\n        ></anna-design-skt-loader>\r\n    </ng-container>\r\n</section>\r\n<section>\r\n    <anna-core-non-editable-generic-table-lib\r\n        [showSkeletonLoading]=\"showSkeletonLoading\"\r\n        [ngClass]=\"{\r\n            'spot-detail-no-data-table': !showSkeletonLoading && tableData && tableData.length === 0,\r\n            'demo-normalisation-set': selectedNormalization?.toggle,\r\n            default: !selectedNormalization?.toggle,\r\n            'seller-view-table': selectedView === 'SellerView',\r\n            'buyer-view-table': selectedView === 'BuyerView'\r\n        }\"\r\n        [tableHeaders]=\"tableHeaders\"\r\n        [tableData]=\"tableData\"\r\n        [clonedTableData]=\"tableDataCloned\"\r\n        [tableClass]=\"genericTableClass\"\r\n        [includeBorderInTableHeight]=\"false\"\r\n        [gtGeneralConfig]=\"gtGeneralConfig\"\r\n        [totalRowInfo]=\"totalRowInfo\"\r\n        [gtDimension]=\"gtDimension\"\r\n        [fixNumberOfRowsForPopup]=\"primaryOrderPanelService.isPrimaryOrderPanelOpen$ | async\"\r\n        [showOrHideToggleForTotalRow]=\"true\"\r\n        (filterAppliedToTable)=\"filterAppliedToTable($event)\"\r\n        (sortingAppliedToTable)=\"sortingAppliedToTable($event)\"\r\n        (toggleCheckbox)=\"toggleCheckbox($event)\"\r\n        (toggleHeaderCheckbox)=\"toggleHeaderCheckbox()\"\r\n        (undoIconClicked)=\"undoIconClicked($event)\"\r\n    >\r\n    </anna-core-non-editable-generic-table-lib>\r\n</section>\r\n\r\n<!-- <ng-template #confirmationCreditOrMgModal let-modal>\r\n  <div class=\"modal-header confirm-modal-header\">\r\n    <i class=\"mdi mdi-close mdi-font-md close pull-right\" style=\"cursor: pointer\"\r\n      (click)=\"closeCreditOrMgConfirmationModal()\"></i>\r\n    <h4 *ngIf=\"!isUndo\">\r\n      Are you sure you want to mark the selected spots for {{ mgOrCredit }}?\r\n    </h4>\r\n\r\n    <div class=\"mg-credit-info-message\" *ngIf=\"!isUndo && mgOrCredit !== 'MakeGood'\">\r\n      Please note that these spots will only be credited in the traffic system\r\n      during the next revision window.\r\n    </div>\r\n\r\n    <div class=\"mg-credit-info-message\" *ngIf=\"!isUndo && mgOrCredit === 'MakeGood'\">\r\n      Kindly note that based on the Business Rules set for this order, this\r\n      action has no effect on any selected no-charge and/or paid preemptions.\r\n      Buyer credit requested spots, if selected, will be marked as preempted and\r\n      No-charge preemptions, if selected, will be marked for MG. All of these\r\n      spots will be picked up for MakeGood in the upcoming revision cycle.\r\n    </div>\r\n    <div class=\"mg-credit-info-message\" *ngIf=\"!isUndo && mgOrCredit === 'MakeGood'\">\r\n      Also note that Unresolved, DR-Preempted and Paid-Preempted spots cannot be\r\n      marked for MakeGood. You can choose to mark them for credit.\r\n    </div>\r\n\r\n    <div class=\"d-flex justify-content-around mark-spot-button-group\">\r\n      <div>\r\n        <button class=\"btn btn-primary mark-spot-yes\" (click)=\"markSpots(true)\">\r\n          Yes\r\n        </button>\r\n      </div>\r\n      <div>\r\n        <button class=\"btn btn-primary mark-spot-no\" (click)=\"markSpots(false)\">\r\n          No\r\n        </button>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</ng-template> -->\r\n\r\n<!-- <ng-template #customizeColumnsModal let-modal>\r\n  <div class=\"modal-header\">\r\n    <i\r\n      class=\"mdi mdi-close mdi-font-md close pull-right\"\r\n      style=\"cursor: pointer\"\r\n      (click)=\"closeCustomizeColumnsModal()\"\r\n    ></i>\r\n    <h4>Customize Columns</h4>\r\n  </div>\r\n  <div class=\"modal-body customize-columns-modal-body\">\r\n    <p>Choose columns to be included in table</p>\r\n\r\n    <div class=\"customize-columns-btns-container\">\r\n      <button\r\n        *ngFor=\"let column of customizableColumnsList\"\r\n        class=\"customize-columns-btns\"\r\n        [disabled]=\"column.isFixed\"\r\n        [ngClass]=\"{ 'customize-column-btn-active': column.isChecked }\"\r\n        (click)=\"selectUnselectCustomizeColumns(column)\"\r\n      >\r\n        <div>\r\n          <span\r\n            *ngIf=\"column.isChecked\"\r\n            class=\"material-icons custom-column-checkbox\"\r\n          >\r\n            check_box\r\n          </span>\r\n          <span\r\n            *ngIf=\"!column.isChecked\"\r\n            class=\"material-icons custom-column-checkbox\"\r\n          >\r\n            check_box_outline_blank\r\n          </span>\r\n          <span>{{ column.name }}</span>\r\n        </div>\r\n      </button>\r\n    </div>\r\n    <div class=\"customize-columns-footer\">\r\n      <div class=\"d-flex align-items-center\">\r\n        <button\r\n          class=\"revert-to-default-btn\"\r\n          (click)=\"revertCustomizedColumns()\"\r\n          [disabled]=\"!isRevertCustomizedColumns\"\r\n        >\r\n          Revert back to default\r\n        </button>\r\n      </div>\r\n      <div>\r\n        <button\r\n          class=\"btn-regular btn-action-blue reporting-buttons border-none\"\r\n          (click)=\"customizeColumns(false)\"\r\n          style=\"margin-right: 8px\"\r\n        >\r\n          Cancel\r\n        </button>\r\n        <button class=\"blue-btn border-none\" (click)=\"customizeColumns(true)\">\r\n          Customize\r\n        </button>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</ng-template> -->\r\n","import { DragDropModule } from \"@angular/cdk/drag-drop\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { MatExpansionModule } from \"@angular/material/expansion\";\r\nimport { MatIconModule } from \"@angular/material/icon\";\r\nimport { MatInputModule } from \"@angular/material/input\";\r\nimport { MatMenuModule } from \"@angular/material/menu\";\r\nimport { MatTableModule } from \"@angular/material/table\";\r\nimport { RouterModule } from \"@angular/router\";\r\nimport { AnnaConvertArrayToCommaSeperatedValue, AnnaCoreModule, AnnaDateFormatterPipe } from \"@annalib/anna-core\";\r\nimport { AnnaDesignComponentsLibModule } from \"@annalib/anna-design-components-lib\";\r\nimport { NgbModule } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { NgxSkeletonLoaderModule } from \"ngx-skeleton-loader\";\r\nimport { ToastrModule } from \"ngx-toastr\";\r\n\r\nimport { AnnaFeatureReadOnlyDirective } from \"./acl-directives/anna-feature-read-only.directive\";\r\nimport { AudiencePerformanceComponent } from \"./audience-performance/audience-performance.component\";\r\nimport { BillingDetailsTableComponent } from \"./billing-details-table/billing-details-table.component\";\r\nimport { BillingReportTableComponent } from \"./billing-report-table/billing-report-table.component\";\r\nimport { GlobalOrderSearchHeaderComponent } from \"./global-order-search-header/global-order-search-header.component\";\r\nimport { HiatusWindowPopupComponent } from \"./hiatus-window-popup/hiatus-window-popup.component\";\r\nimport { LiabilityModalComponent } from \"./liability-modal/liability-modal.component\";\r\n// eslint-disable-next-line import/no-cycle\r\nimport { LineDetailsComponent } from \"./line-details/line-details.component\";\r\nimport { NotificationHeaderComponent } from \"./notifications/app-notification-header/app-notification-header.component\";\r\nimport { NotificationPageComponent } from \"./notifications/notification-page/notification-page.component\";\r\nimport { OrderHistoryComponent } from \"./order-history/order-history.component\";\r\nimport { OrderListingComponent } from \"./order-listing/order-listing.component\";\r\nimport { OrderRevisionsComponent } from \"./order-revisions/order-revisions.component\";\r\nimport { PrimaryOrderPanelComponent } from \"./primary-order-panel/primary-order-panel.component\";\r\nimport { SchedulePostingReportPopupComponent } from \"./schedule-posting-report-popup/schedule-posting-report-popup.component\";\r\nimport { SpotDetailsComponent } from \"./spot-details/spot-details.component\";\r\n\r\n@NgModule({\r\n    imports: [\r\n        FormsModule,\r\n        NgbModule,\r\n        CommonModule,\r\n        DragDropModule,\r\n        NgxSkeletonLoaderModule,\r\n        AnnaDesignComponentsLibModule,\r\n        AnnaCoreModule,\r\n        RouterModule,\r\n        MatExpansionModule,\r\n        ReactiveFormsModule,\r\n        MatMenuModule,\r\n        MatIconModule,\r\n        MatTableModule,\r\n        MatIconModule,\r\n        MatInputModule,\r\n        ToastrModule.forRoot({\r\n            positionClass: \"toast-bottom-right\",\r\n        }),\r\n        AudiencePerformanceComponent,\r\n        BillingReportTableComponent,\r\n        BillingDetailsTableComponent,\r\n        SpotDetailsComponent,\r\n        PrimaryOrderPanelComponent,\r\n        OrderRevisionsComponent,\r\n        LineDetailsComponent,\r\n        OrderHistoryComponent,\r\n        NotificationHeaderComponent,\r\n        NotificationPageComponent,\r\n        OrderListingComponent,\r\n        GlobalOrderSearchHeaderComponent,\r\n        AnnaFeatureReadOnlyDirective,\r\n        LiabilityModalComponent,\r\n        HiatusWindowPopupComponent,\r\n        SchedulePostingReportPopupComponent,\r\n    ],\r\n    exports: [\r\n        AudiencePerformanceComponent,\r\n        BillingReportTableComponent,\r\n        BillingDetailsTableComponent,\r\n        SpotDetailsComponent,\r\n        PrimaryOrderPanelComponent,\r\n        OrderRevisionsComponent,\r\n        LineDetailsComponent,\r\n        OrderHistoryComponent,\r\n        NotificationHeaderComponent,\r\n        NotificationPageComponent,\r\n        OrderListingComponent,\r\n        GlobalOrderSearchHeaderComponent,\r\n        AnnaFeatureReadOnlyDirective,\r\n        HiatusWindowPopupComponent,\r\n        SchedulePostingReportPopupComponent,\r\n    ],\r\n    providers: [AnnaDateFormatterPipe, AnnaConvertArrayToCommaSeperatedValue],\r\n})\r\nexport class AnnaFeatureLibModule { }\r\n","/* eslint-disable func-names */\r\nimport {\r\n    AnnaPersistingFilterService,\r\n    ClickableItem,\r\n    IActionItemTypeWithStringIconOrTextAction,\r\n} from \"@annalib/anna-core\";\r\nimport dayjs from \"dayjs\";\r\nimport { cloneDeep } from \"lodash-es\";\r\n\r\nconst colorsClasses = [\r\n    \"station-E120A7\",\r\n    \"station-208BE1\",\r\n    \"station-F3BD18\",\r\n    \"station-F31818\",\r\n    \"station-18D869\",\r\n    \"station-1834D8\",\r\n    \"station-BD18F3\",\r\n    \"station-F36618\",\r\n];\r\nconst stationColourMap = new Map<string, string>();\r\nconst notificationsTypeMap = new Map<string, string>([\r\n    [\"OTHERS\", \"Others\"],\r\n    [\"DAILY_UPDATES\", \"Daily Updates\"],\r\n]);\r\nconst urlMapForView = new Map<string, { url: string; filters: any; filterKey: string }>([\r\n    [\r\n        \"TODAYS_ANNA_REVISIONS_ASA\",\r\n        {\r\n            url: \"orders/todays-anna-offers\",\r\n            filterKey: \"\",\r\n            filters: {\r\n                appliedFilters: [\r\n                    \"easy_automationActivatedGroup_isWriteEnabledOrder\",\r\n                    \"easy_revisionStatusGroup_orderRevisionStatusForEasyFilter\",\r\n                ],\r\n                selectedFilterData:\r\n                    '[[\"isWriteEnabledOrder\",[true]],[\"orderRevisionStatusForEasyFilter\",[\"Seller Pending\"]]]',\r\n            },\r\n        },\r\n    ],\r\n    [\r\n        \"TODAYS_ANNA_REVISIONS_RG\",\r\n        {\r\n            url: \"orders/todays-anna-offers\",\r\n            filterKey: \"\",\r\n            filters: {\r\n                appliedFilters: [\"orderRevisionStatus\"],\r\n                selectedFilterData: '[[\"orderRevisionStatus\",[\"REV GENERATED\"]]]',\r\n                easyFilter: \"REV GENERATED\",\r\n            },\r\n        },\r\n    ],\r\n    [\"TODAYS_USER_REVISIONS\", { url: \"orders/todays-user-revisions\", filterKey: \"\", filters: null }],\r\n    [\"TODAYS_USER_REVISIONS\", { url: \"orders/todays-user-revisions\", filterKey: \"\", filters: null }],\r\n    [\"ORDER_BIZ_RULES_PAGE\", { url: \"order-business-rules\", filterKey: \"\", filters: null }],\r\n    [\"ADVERTISER_BIZ_RULES_PAGE\", { url: \"business-rules/advertiser\", filterKey: \"\", filters: null }],\r\n    [\"USERS_AWAITING_ACTION_PAGE\", { url: \"users/users-awaiting-action\", filterKey: \"\", filters: null }],\r\n    [\"LINE_DETAILS\", { url: \"line-details\", filterKey: \"\", filters: null }],\r\n    [\"BULK_COPY_STATUS_POPUP\", { url: \"BULK_COPY_STATUS_POPUP\", filterKey: \"\", filters: null }],\r\n    [\"EC_ORDER\", { url: \"orders/ec-orders\", filterKey: \"\", filters: null }],\r\n]);\r\n\r\nenum TypeOfActionLinkForGtEnumNotifications {\r\n    MARK_AS_READ = \"MARK_AS_READ\",\r\n}\r\n\r\nexport class NotificationList {\r\n    notifications: Notification[] = [];\r\n    unreadCount: number = 0;\r\n    constructor(notificationList: any, persistingFilterService: AnnaPersistingFilterService) {\r\n        notificationList.forEach((notif: any) => {\r\n            if (!notif.isRead) {\r\n                this.unreadCount += 1;\r\n            }\r\n            this.notifications.push(new Notification(notif, persistingFilterService));\r\n        });\r\n    }\r\n}\r\n\r\nexport class CollapseableData {\r\n    text: string;\r\n    label: string;\r\n    isExpanded: boolean;\r\n    title: string;\r\n    constructor(data: any) {\r\n        this.text = data.Body.length > 186 ? `${data.Body.slice(0, 186)}...` : data.Body;\r\n        this.title = data.Body.length > 186 ? data.Body : \"\";\r\n        this.isExpanded = false;\r\n        this.label = data.Title;\r\n    }\r\n    expandClicked() {\r\n        this.isExpanded = !this.isExpanded;\r\n    }\r\n}\r\n\r\nexport class Buttons {\r\n    text: string;\r\n    action: string;\r\n    constructor(data: any) {\r\n        this.text = data.Name;\r\n        this.action = data.Url;\r\n    }\r\n}\r\n\r\nexport class AdditionalDataForLink {\r\n    orderId?: string;\r\n    stationId?: string;\r\n    flightStartDate?: string;\r\n    flightEndDate?: string;\r\n    advertiserId?: string;\r\n    campaignId?: string;\r\n    advertiserName?: string;\r\n    emailId?: string;\r\n    transactionId?: string;\r\n    userName?: string; // name of the user not the usercode\r\n    constructor(obj: any) {\r\n        const data: any = obj && obj !== \"\" ? JSON.parse(obj) : null;\r\n        this.orderId = data?.OrderId;\r\n        this.transactionId = data?.TransactionId;\r\n        this.stationId = data?.StationId;\r\n        this.flightStartDate = data?.FlightStartDate;\r\n        this.flightEndDate = data?.FlightEndDate;\r\n        this.advertiserId = data?.AdvertiserId;\r\n        this.campaignId = data?.CampaignId;\r\n        this.advertiserName = data?.AdvertiserName;\r\n        this.emailId = data?.UserEmail;\r\n        this.userName = data?.UserName;\r\n    }\r\n}\r\n\r\nexport class ClickableLink {\r\n    label: string;\r\n    pageUrl: string;\r\n    queryParams: any;\r\n    additionalDataForLink: AdditionalDataForLink;\r\n    constructor(data: any) {\r\n        this.label = data.Name;\r\n        this.pageUrl = urlMapForView.get(data?.Url).url;\r\n        this.queryParams = urlMapForView.get(data.Url).filterKey;\r\n        this.additionalDataForLink = new AdditionalDataForLink(data.AdditionalData);\r\n    }\r\n}\r\n\r\nconst getLinkHTML = function (\r\n    data: { Name: string; Url: string }[],\r\n    persistingFilterService: AnnaPersistingFilterService,\r\n) {\r\n    if (!data || data?.length === 0) return \"\";\r\n    let html = \"\";\r\n    data.forEach((link: { Name: string; Url: string }) => {\r\n        if (urlMapForView.has(link.Url)) {\r\n            const urlAndFilters = urlMapForView.get(link.Url);\r\n            const filterkey: string = !urlAndFilters.filterKey\r\n                ? persistingFilterService.storeKeyValueInLocalStorage(urlAndFilters.filters, true)\r\n                : urlAndFilters.filterKey;\r\n            urlAndFilters.filterKey = filterkey;\r\n            urlMapForView.set(link.Url, cloneDeep(urlAndFilters));\r\n            html += ` <a class='view-link ${urlAndFilters.url}'>${link.Name}</a>`;\r\n            // html += \" <a class='view-link' href='/#/\" + urlAndFilters.url + (filterkey ? '?filters=' + filterkey : '') + \"'>\" + link.Name + '</a>';\r\n        }\r\n    });\r\n    return html;\r\n};\r\n\r\nexport class Notification {\r\n    station: string;\r\n    id: string;\r\n    date: string;\r\n    time: string;\r\n    message: string;\r\n    timezone: string;\r\n    displayDate: string;\r\n    displayTime: string;\r\n\r\n    isRead: boolean;\r\n    hover: boolean;\r\n    showTooltip: boolean;\r\n    gtClass: string;\r\n    icon: string;\r\n    nameActionKey: ClickableItem[] = [];\r\n    userActivityTooltipKey: { key: string; value: string }[] = [];\r\n    tooltipData: { key: string; value: string }[] = [];\r\n    readActionKey: IActionItemTypeWithStringIconOrTextAction[] = [];\r\n    collapseableData: CollapseableData;\r\n    buttons: { text: string; action: string }[] = [];\r\n    displayType: string;\r\n    type: string;\r\n    stationColorClass: string;\r\n    tableMessages: string;\r\n    isCurrentDailyRevision: boolean;\r\n    clickableItems: ClickableLink[] = [];\r\n\r\n    constructor(data: any, persistingFilterService: AnnaPersistingFilterService) {\r\n        this.id = data.NotificationId;\r\n        this.station = data.StationName ? data.StationName : \"-\";\r\n        // station name display color\r\n        if (stationColourMap.has(this.station)) this.stationColorClass = stationColourMap.get(this.station);\r\n        else {\r\n            stationColourMap.set(this.station, colorsClasses[stationColourMap.size % 8]);\r\n            this.stationColorClass = stationColourMap.get(this.station);\r\n        }\r\n        this.date = data.DisplayDate;\r\n        this.time = data.Time;\r\n        this.displayTime = data.DisplayTime;\r\n        this.displayDate = dayjs(data.DisplayDate).format(\"MM/DD/YY\");\r\n        this.timezone = data.Timezone;\r\n        this.message = data.Message;\r\n        const messageWithLink = `<div class='message-text'>${data.Message}${getLinkHTML(data.Links, persistingFilterService)}</div>`;\r\n        // if (this.station == null) this.message = messageWithLink;\r\n        // else\r\n        //   this.message =\r\n        //     messageWithLink +\r\n        //     ' <span class=\"station-display ' +\r\n        //     this.stationColorClass +\r\n        //     '\">' +\r\n        //     this.station +\r\n        //     '</span>';\r\n\r\n        this.collapseableData = data.CollapsibleInfo?.length > 0 ? new CollapseableData(data.CollapsibleInfo[0]) : null;\r\n        data.Buttons?.forEach((button: any) => this.buttons.push(new Buttons(button)));\r\n        this.tableMessages = messageWithLink;\r\n        if (this.collapseableData) {\r\n            this.tableMessages += getCollapsibleHTML(this.collapseableData);\r\n        } else if (this.buttons?.length > 0) {\r\n            this.tableMessages += getButtonsHTML(this.buttons);\r\n        }\r\n        this.tooltipData.push({ key: \"read\", value: \"Mark as Read\" });\r\n        this.isRead = data.IsRead;\r\n        this.clickableItems = data.Links?.map((link: any) => new ClickableLink(link));\r\n        this.gtClass = this.isRead ? \"read\" : \"unread\";\r\n        this.readActionKey.push(\r\n            new IconActionForRead(TypeOfActionLinkForGtEnumNotifications.MARK_AS_READ, this.tooltipData, this.isRead),\r\n        );\r\n        this.type = data.Tab;\r\n        this.displayType = notificationsTypeMap.get(data.Tab);\r\n        this.isCurrentDailyRevision = data.IsCurrentDailyRevision;\r\n    }\r\n}\r\n\r\nclass IconActionForRead {\r\n    id: string;\r\n    data: string;\r\n    iconClass: string;\r\n    showIcon: boolean = false;\r\n    disabledIcon: boolean = false;\r\n    linkClass: string;\r\n    showLink: boolean = false;\r\n    disabledLink: boolean = false;\r\n    showTooltip: boolean = false;\r\n    enableTooltipForAdditionalText: boolean = true;\r\n    typeOfData: \"STRING\" | \"ICON_TEXT_ACTION\";\r\n    additionalTextBeforeLink: string;\r\n    tooltipData: { key: string; value: string }[];\r\n    tooltipPlacement: string;\r\n    tooltipClass: string;\r\n    constructor(\r\n        typeOfActionLinkForGt: TypeOfActionLinkForGtEnumNotifications,\r\n        tooltipData: { key: string; value: string }[],\r\n        isRead: boolean,\r\n    ) {\r\n        this.id = typeOfActionLinkForGt;\r\n        this.tooltipData = tooltipData;\r\n        this.typeOfData = \"ICON_TEXT_ACTION\";\r\n        this.showIcon = !isRead;\r\n        this.showTooltip = true;\r\n        this.disabledIcon = false;\r\n        this.showLink = false;\r\n        this.iconClass = isRead ? \"\" : \"mdi mdi-checkbox-blank-circle unread-mark  on-hover\";\r\n        this.enableTooltipForAdditionalText = true;\r\n        this.tooltipClass = \"notification-tooltip\";\r\n    }\r\n}\r\n\r\nexport interface INotificationTab {\r\n    id: number;\r\n    name: string;\r\n    key: string;\r\n    notificationCount: number;\r\n}\r\n\r\nlet getCollapsibleHTML = function (data: CollapseableData) {\r\n    const orders = data.title ? data.title : data.text;\r\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>`;\r\n};\r\n\r\nlet getButtonsHTML = function (data: Buttons[]) {\r\n    let html = '<div class=\"notification-button\">';\r\n    data.forEach((btn) => {\r\n        html += `<span><a class=\"download-button\" href=\"${btn.action}\" target=\"_blank\">${btn.text}</a></span>`;\r\n    });\r\n    return `${html}</div>`;\r\n};\r\n\r\nexport interface MarkAsReadPayload {\r\n    UserId: number;\r\n    NotificationIds: string[];\r\n}\r\n","import { CurrencyPipe } from \"@angular/common\";\r\nimport { GTTableRelatedCommonFunctionsService, IActionItemTypeWithStringIconOrTextAction } from \"@annalib/anna-core\";\r\n\r\nexport class OrderRevisions {\r\n    RevisionNumber: number;\r\n    RevisionType: \"ANNA\" | \"Seller User\" | \"Buyer\";\r\n    GeneratedOn: string;\r\n    BookedValue: string;\r\n    BookedSpots: number;\r\n    BookedGRP: number;\r\n    BookedIMPS: number;\r\n    IMPS: number;\r\n    BookedCPP: number;\r\n    BookedCPM: number;\r\n    DisplayBookedGRP: string;\r\n    DisplayBookedIMPS: string;\r\n    DisplayBookedCPP: string;\r\n    DisplayBookedCPM: string;\r\n    DisplayBookedSpots: string;\r\n    MGsValue: number;\r\n    ADUsValue: number;\r\n    BuyerChangesValue: number;\r\n    UserChangesValue: number;\r\n    CreditedValue: number;\r\n    UserUnresolvedValue: number;\r\n    BuyerAddedValue: number;\r\n    BuyerDeletedValue: number;\r\n\r\n    BookedValueForDisplay: string | number;\r\n    MGsValueForDisplay: string | number;\r\n    ADUsValueForDisplay: string | number;\r\n    CreditedValueForDisplay: string | number;\r\n    UserUnresolvedValueForDisplay: string | number;\r\n    BuyerAddedValueForDisplay: string | number;\r\n    BuyerDeletedValueForDisplay: string | number;\r\n    BuyerChangesValueForDisplay: string | number;\r\n    UserChangesValueForDisplay: string | number;\r\n    backgroundColor: string;\r\n    rowClass: string;\r\n    AllowClick: boolean;\r\n\r\n    buyerGrpChangesValue: number;\r\n    buyerImpChangesValue: number;\r\n    buyerGrpChangesValueDisplay: string;\r\n    buyerImpChangesValueDisplay: string;\r\n\r\n    tooltipData: { key: string; value: string }[] = [];\r\n    readActionKey: IActionItemTypeWithStringIconOrTextAction[] = [];\r\n    buyerAddedValueDisplay: string;\r\n    buyerDeletedValueDisplay: string;\r\n\r\n    constructor(data: any, currencyPipe: CurrencyPipe) {\r\n        this.RevisionNumber = data.RevisionNumber;\r\n        this.RevisionType = data.RevisionType;\r\n        this.GeneratedOn = data.GeneratedOn;\r\n        this.BookedSpots = data.BookedSpots;\r\n        this.BookedValue = data.BookedValue;\r\n        this.MGsValue = data.MGValue === \"-\" ? null : +data.MGValue;\r\n        this.ADUsValue = data.ADUValue === \"-\" ? null : +data.ADUValue;\r\n        this.BuyerChangesValue = data.BuyerChangesValue === \"-\" ? null : +data.BuyerChangesValue;\r\n        this.UserChangesValue = data.UserChangesValue === \"-\" ? null : +data.UserChangesValue;\r\n        this.UserUnresolvedValue = data.UserUnresolvedValue === \"-\" ? null : +data.UserUnresolvedValue;\r\n        this.CreditedValue = data.CreditedValue === \"-\" ? null : +data.CreditedValue;\r\n        this.BuyerAddedValue = data.BuyerAddedValue === \"-\" ? null : +data.BuyerAddedValue;\r\n        this.BuyerDeletedValue = data.BuyerDeletedValue === \"-\" ? null : +data.BuyerDeletedValue;\r\n        this.BuyerDeletedValue = data.BuyerDeletedValue === \"-\" ? null : +data.BuyerDeletedValue;\r\n        this.BookedGRP = data.BookedGRP;\r\n        this.BookedIMPS = data.BookedIMPS;\r\n        this.IMPS = data.BookedIMPS;\r\n\r\n        this.buyerGrpChangesValue = data.BuyerGrpChangesValue;\r\n        this.buyerImpChangesValue = data.BuyerImpChangesValue;\r\n\r\n        this.buyerGrpChangesValueDisplay =\r\n            data.BuyerGrpChangesValue !== \"-\"\r\n                ? GTTableRelatedCommonFunctionsService.GetGrpOrImpsRoundedValue(data.BuyerGrpChangesValue, 2)\r\n                : \"-\";\r\n        this.buyerImpChangesValueDisplay =\r\n            data.BuyerGrpChangesValue !== \"-\"\r\n                ? GTTableRelatedCommonFunctionsService.GetGrpOrImpsRoundedValue(data.BuyerImpChangesValue, 1)\r\n                : \"-\";\r\n\r\n        this.buyerAddedValueDisplay =\r\n            data.BuyerAddedValue !== \"-\" ? currencyPipe.transform(data.BuyerAddedValue, \"USD\", \"symbol\", \"1.0-2\") : \"-\";\r\n\r\n        this.buyerDeletedValueDisplay =\r\n            data.BuyerDeletedValue !== \"-\"\r\n                ? currencyPipe.transform(data.BuyerDeletedValue, \"USD\", \"symbol\", \"1.0-2\")\r\n                : \"-\";\r\n\r\n        this.DisplayBookedGRP = this.BookedGRP.toLocaleString(\"en-us\", {\r\n            minimumFractionDigits: 0,\r\n            maximumFractionDigits: 2,\r\n        });\r\n        this.DisplayBookedIMPS = this.BookedIMPS.toLocaleString(\"en-us\", {\r\n            minimumFractionDigits: 0,\r\n            maximumFractionDigits: 2,\r\n        });\r\n\r\n        this.BookedCPP = data.BookedCPP;\r\n        this.BookedCPM = data.BookedCPM;\r\n        this.DisplayBookedCPP = currencyPipe.transform(data.BookedCPP, \"USD\", \"symbol\", \"1.0-0\");\r\n        this.DisplayBookedCPM = currencyPipe.transform(data.BookedCPM, \"USD\", \"symbol\", \"1.0-0\");\r\n\r\n        this.DisplayBookedSpots = data.BookedSpots.toLocaleString(\"en-us\");\r\n        this.BookedValueForDisplay =\r\n            data.BookedValue && data.BookedValue !== \"-\"\r\n                ? currencyPipe.transform(data.BookedValue, \"USD\", \"symbol\", \"1.0-2\")\r\n                : data.BookedValue;\r\n        this.MGsValueForDisplay =\r\n            data.MGValue && data.MGValue !== \"-\"\r\n                ? currencyPipe.transform(data.MGValue, \"USD\", \"symbol\", \"1.0-0\")\r\n                : data.MGValue;\r\n        this.ADUsValueForDisplay =\r\n            data.ADUValue && data.ADUValue !== \"-\"\r\n                ? currencyPipe.transform(data.ADUValue, \"USD\", \"symbol\", \"1.0-0\")\r\n                : data.ADUValue;\r\n        this.CreditedValueForDisplay =\r\n            data.CreditedValue && data.CreditedValue !== \"-\"\r\n                ? currencyPipe.transform(data.CreditedValue, \"USD\", \"symbol\", \"1.0-0\")\r\n                : data.CreditedValue;\r\n        this.UserUnresolvedValueForDisplay =\r\n            data.UserUnresolvedValue && data.UserUnresolvedValue !== \"-\"\r\n                ? currencyPipe.transform(data.UserUnresolvedValue, \"USD\", \"symbol\", \"1.0-0\")\r\n                : data.UserUnresolvedValue;\r\n        this.BuyerAddedValueForDisplay =\r\n            data.BuyerAddedValue && data.BuyerAddedValue !== \"-\"\r\n                ? currencyPipe.transform(data.BuyerAddedValue, \"USD\", \"symbol\", \"1.0-0\")\r\n                : data.BuyerAddedValue;\r\n        this.BuyerDeletedValueForDisplay =\r\n            data.BuyerDeletedValue && data.BuyerDeletedValue !== \"-\"\r\n                ? currencyPipe.transform(data.BuyerDeletedValue, \"USD\", \"symbol\", \"1.0-0\")\r\n                : data.BuyerDeletedValue;\r\n        this.BuyerChangesValueForDisplay =\r\n            data.BuyerChangesValue && data.BuyerChangesValue !== \"-\"\r\n                ? currencyPipe.transform(data.BuyerChangesValue, \"USD\", \"symbol\", \"1.0-0\")\r\n                : data.BuyerChangesValue;\r\n        this.UserChangesValueForDisplay =\r\n            data.UserChangesValue && data.UserChangesValue !== \"-\"\r\n                ? currencyPipe.transform(data.UserChangesValue, \"USD\", \"symbol\", \"1.0-0\")\r\n                : data.UserChangesValue;\r\n\r\n        this.AllowClick = data.AllowClick;\r\n        this.backgroundColor = !this.AllowClick ? \"#DEDEDE\" : \"#FFFFFF\";\r\n        this.rowClass = !this.AllowClick ? \"non-clickable-row\" : \"\";\r\n\r\n        this.tooltipData.push({ key: data.ToolTipMessage, value: null });\r\n        this.readActionKey.push(\r\n            new IconActionForRead(data.ToolTipMessage !== \"\", this.tooltipData, this.RevisionNumber),\r\n        );\r\n    }\r\n}\r\n\r\nexport interface IOrderRevisionPayload {\r\n    orderId: number;\r\n    stationId: number;\r\n    equivalisation: boolean;\r\n}\r\n\r\nexport interface RevisionInfoForRoute {\r\n    selectedRevisionNumber: number;\r\n}\r\n\r\nexport class IconActionForRead {\r\n    id: string;\r\n    data: string;\r\n    iconClass: string;\r\n    showIcon: boolean = false;\r\n    disabledIcon: boolean = false;\r\n    linkClass: string;\r\n    showLink: boolean = false;\r\n    disabledLink: boolean = false;\r\n    showTooltip: boolean = false;\r\n    enableTooltipForAdditionalText: boolean = true;\r\n    typeOfData: \"STRING\" | \"ICON_TEXT_ACTION\";\r\n    additionalTextBeforeLink: string;\r\n    tooltipData: { key: string; value: string }[];\r\n    tooltipPlacement: string;\r\n\r\n    constructor(isToolTipNeeded: boolean, tooltipData: { key: string; value: string }[], revNumber: number) {\r\n        if (isToolTipNeeded) {\r\n            this.tooltipData = tooltipData;\r\n            this.tooltipPlacement = \"right\";\r\n            this.typeOfData = \"STRING\";\r\n            this.data = revNumber.toString();\r\n            this.showIcon = true;\r\n            this.showTooltip = true;\r\n            this.disabledIcon = false;\r\n            this.showLink = false;\r\n            this.iconClass = \"mi mdi-info-outline\";\r\n            this.enableTooltipForAdditionalText = true;\r\n        } else {\r\n            this.tooltipData = tooltipData;\r\n            this.typeOfData = \"STRING\";\r\n            this.data = revNumber.toString();\r\n            this.showIcon = false;\r\n            this.showTooltip = false;\r\n            this.disabledIcon = true;\r\n            this.showLink = false;\r\n        }\r\n    }\r\n}\r\n","import { BizRuleStatus } from \"@annalib/anna-feature-shared-lib\";\r\n\r\nimport { OrderType } from \"../../order-listing/models/order-listing.model\";\r\n\r\nexport interface IOrder {\r\n    StationId: number; // coming from backend equivalent to channel Id\r\n    BuyerOrderId: string; // coming from backend equivalent to orderId and displayOrderId\r\n    CampaignId: string; // coming from backend equivalent to campaign Id\r\n    FlightStartDate?: string; // coming from backend equivalent to campaignStartDate\r\n    FlightEndDate?: string; // coming from backend equivalent to campaignEndDate\r\n    AdvertiserId?: number; // coming from backend quivalent to advertiserId\r\n    StationName?: string; // coming from backend equivalent to station\r\n    BizRuleStatus?: BizRuleStatus; // coming from backend [\"NOTIFY\",\"ACCEPTED\",\"REJECTED\",\"AWAITING_APPROVAL\"]\r\n    RevenueType?: \"TV Revenue\" | \"Other Revenue\";\r\n    RedirectTo: \"line-details\" | \"order-business-rules\" | \"audience-performance\";\r\n    OrderType?: OrderType;\r\n    DisplayOrderId: string;\r\n    AltOrderId: string; // coming from backend might be null or empty\r\n    // used to redirect from search bar.\r\n    // If \"NOTIFY\" redirect to 'business rule' else to 'audience performance'.\r\n}\r\n\r\nexport interface IOrderSearch {\r\n    channelId: number;\r\n    orderId: string;\r\n    displayOrderId: string;\r\n    currentTab: string;\r\n    campaignId: string;\r\n    campaignStartDate: string;\r\n    campaignEndDate: string;\r\n    advertiserId: number;\r\n    navigateTo: string;\r\n    searchRedirected: boolean;\r\n    stationName?: string;\r\n    orderType?: string;\r\n    isPaidOrder?: boolean;\r\n}\r\nexport interface IOrderArray {\r\n    Orders: IOrder[];\r\n}\r\n\r\nexport enum BizRulesEnum {\r\n    notify = 0,\r\n    awaiting_approval = 1,\r\n    rejected = 2,\r\n    accepted = 3,\r\n}\r\n","/* eslint-disable import/no-cycle */\r\n/*\r\n * Public API Surface of anna-feature-lib\r\n */\r\n\r\nexport * from \"./lib/anna-feature-lib.module\";\r\n\r\n// COMPONENT\r\nexport * from \"./lib/audience-performance/audience-performance.component\";\r\nexport * from \"./lib/billing-details-table/billing-details-table.component\";\r\nexport * from \"./lib/billing-report-table/billing-report-table.component\";\r\nexport * from \"./lib/hiatus-window-popup/hiatus-window-popup.component\";\r\nexport * from \"./lib/line-details/line-details.component\";\r\nexport * from \"./lib/notifications/app-notification-header/app-notification-header.component\";\r\nexport * from \"./lib/notifications/notification-page/notification-page.component\";\r\nexport * from \"./lib/order-history/order-history.component\";\r\nexport * from \"./lib/order-listing/order-listing.component\";\r\nexport * from \"./lib/order-revisions/order-revisions.component\";\r\nexport * from \"./lib/primary-order-panel/primary-order-panel.component\";\r\nexport * from \"./lib/schedule-posting-report-popup/schedule-posting-report-popup.component\";\r\nexport * from \"./lib/spot-details/spot-details.component\";\r\n\r\n// MODELS\r\nexport * from \"./lib/audience-performance/models/audiencePerformance.model\";\r\nexport * from \"./lib/billing-report-table/models/billing-report-table.model\";\r\nexport * from \"./lib/hiatus-window-popup/model/hiatus-window-popup.model\";\r\nexport * from \"./lib/line-details/models/line-details.model\";\r\nexport * from \"./lib/notifications/models/notifications.model\";\r\nexport * from \"./lib/order-history/models/orderHistory.model\";\r\nexport * from \"./lib/order-listing/models/order-listing.model\";\r\nexport * from \"./lib/order-listing/models/order-listing-backend-token.service\";\r\nexport * from \"./lib/order-revisions/models/orderRevisionsModel\";\r\nexport * from \"./lib/primary-order-panel/models/primary-order-panel.model\";\r\nexport * from \"./lib/spot-details/models/generic-spot-details.model\";\r\nexport * from \"./lib/spot-details/models/spot-details.model\";\r\n\r\n// CONSTANTS\r\nexport * from \"./lib/audience-performance/constants/audiencePerformance.constant\";\r\nexport * from \"./lib/order-listing/models/order-listing.constant\";\r\nexport * from \"./lib/order-revisions/constants/order-revisions.constants\";\r\nexport * from \"./lib/schedule-posting-report-popup/Model/schedulePostingReportPopup.model\";\r\nexport * from \"./lib/spot-details/constants/spot-details.constants\";\r\n\r\n// SERVICES\r\nexport * from \"./lib/billing-report-table/services/billing-report-table.service\";\r\nexport * from \"./lib/global-order-search-header/global-order-search-header.component\";\r\nexport * from \"./lib/global-order-search-header/models/global-order-search-header.model\";\r\nexport * from \"./lib/line-details/config/line-details-service.token\";\r\nexport * from \"./lib/login/login-token.service\";\r\nexport * from \"./lib/notifications/mass-copy-status-popup/services/mass-copy-status-backend.service\"\r\nexport * from \"./lib/notifications/services/notifications.service\";\r\nexport * from \"./lib/order-history/order-history-backend-service.token\";\r\nexport * from \"./lib/order-history/services/order-history.service\";\r\nexport * from \"./lib/order-listing/services/dashboard-and-order-listing.service\";\r\nexport * from \"./lib/order-listing/services/order-listing-helper.service\";\r\nexport * from \"./lib/order-revisions/services/orderRevisions.service\";\r\nexport * from \"./lib/spot-details/config/spot-details-backend-service.token\";\r\nexport * from \"./lib/spot-details/services/generic-spot-details.service\";\r\nexport * from \"./lib/spot-details/services/spot-details.service\";\r\n// Directives\r\nexport * from \"./lib/acl-directives/anna-feature-read-only.directive\";\r\nexport * from \"./lib/hiatus-window-popup/service/hiatus-window-popup-token.service\";\r\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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"}