@annalib/anna-feature-spots-approval 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +63 -0
- package/anna-feature-shared-lib/index.d.ts +5 -0
- package/anna-feature-shared-lib/public-api.d.ts +16 -0
- package/anna-feature-shared-lib/src/biz-rules/constants/generic-business-rule-page.constants.d.ts +5 -0
- package/anna-feature-shared-lib/src/biz-rules/models/generic-business-rule-history-popup.model.d.ts +10 -0
- package/anna-feature-shared-lib/src/biz-rules/services/generic-business-rule-common-SI-BI-logic.service.d.ts +20 -0
- package/anna-feature-shared-lib/src/constants/generic-feature-related-constants.d.ts +3 -0
- package/anna-feature-shared-lib/src/daily-revision-listing/components/action-comments-popup/action-comments-popup.component.d.ts +35 -0
- package/anna-feature-shared-lib/src/daily-revision-listing/components/offer-rejection-popup/offer-rejection-popup.component.d.ts +44 -0
- package/anna-feature-shared-lib/src/daily-revision-listing/models/generic-daily-revision-listing.model.d.ts +64 -0
- package/anna-feature-shared-lib/src/daily-revision-listing/models/generic-offers-awaiting-approval.model.d.ts +36 -0
- package/anna-feature-shared-lib/src/daily-revision-listing/models/generic-todays-anna-offers-listing.model.d.ts +34 -0
- package/anna-feature-shared-lib/src/daily-revision-listing/models/generic-todays-user-offers-listing.model.d.ts +39 -0
- package/anna-feature-shared-lib/src/daily-revision-listing/models/spot-approval-generic.model.d.ts +12 -0
- package/anna-feature-shared-lib/src/daily-revision-listing/services/generic-daily-revision-listing.service.d.ts +12 -0
- package/anna-feature-shared-lib/src/generic-primary-order-panel/models/generic-primary-order-panel.model.d.ts +5 -0
- package/anna-feature-shared-lib/src/generic-primary-order-panel/services/generic-primary-order-panel.service.d.ts +13 -0
- package/anna-feature-shared-lib/src/order-listing/constants/generic-order-listing.constant.d.ts +18 -0
- package/anna-feature-shared-lib/src/spot-approval/models/spot-approval-generic-in-feature-shared-lib.model.d.ts +7 -0
- package/anna-feature-shared-lib/src/spot-approval/services/spot-approval-generic-in-feature-shared-lib.service.d.ts +14 -0
- package/drr-listing/index.d.ts +5 -0
- package/drr-listing/public-api.d.ts +8 -0
- package/drr-listing/src/daily-revision-filter-modal/config/daily-revision-listing-backend-service.token.d.ts +10 -0
- package/drr-listing/src/daily-revision-filter-modal/daily-revision-filter-modal.component.d.ts +89 -0
- package/drr-listing/src/daily-revision-filter-modal/models/daily-revision-filter-modal.model.d.ts +41 -0
- package/drr-listing/src/daily-revision-listing/config/daily-revision-listing-backend-service.token.d.ts +18 -0
- package/drr-listing/src/daily-revision-listing/constants/daily-revision-listing.constant.d.ts +80 -0
- package/drr-listing/src/daily-revision-listing/constants/orders.constant.d.ts +69 -0
- package/drr-listing/src/daily-revision-listing/daily-revision-listing.component.d.ts +154 -0
- package/drr-listing/src/daily-revision-listing/models/daily-revision-listing.model.d.ts +33 -0
- package/drr-listing/src/daily-revision-listing/services/daily-revision-listing.service.d.ts +25 -0
- package/fesm2022/annalib-anna-feature-spots-approval-anna-feature-shared-lib.mjs +670 -0
- package/fesm2022/annalib-anna-feature-spots-approval-anna-feature-shared-lib.mjs.map +1 -0
- package/fesm2022/annalib-anna-feature-spots-approval-drr-listing.mjs +2844 -0
- package/fesm2022/annalib-anna-feature-spots-approval-drr-listing.mjs.map +1 -0
- package/fesm2022/annalib-anna-feature-spots-approval-spot-approval-shared-lib.mjs +112 -0
- package/fesm2022/annalib-anna-feature-spots-approval-spot-approval-shared-lib.mjs.map +1 -0
- package/fesm2022/annalib-anna-feature-spots-approval-spots-approval.mjs +12115 -0
- package/fesm2022/annalib-anna-feature-spots-approval-spots-approval.mjs.map +1 -0
- package/fesm2022/annalib-anna-feature-spots-approval-src-lib-all-offers-listing.mjs +1369 -0
- package/fesm2022/annalib-anna-feature-spots-approval-src-lib-all-offers-listing.mjs.map +1 -0
- package/fesm2022/annalib-anna-feature-spots-approval-src-lib-spot-approval-seller-or-buyer-revision.mjs +1223 -0
- package/fesm2022/annalib-anna-feature-spots-approval-src-lib-spot-approval-seller-or-buyer-revision.mjs.map +1 -0
- package/fesm2022/annalib-anna-feature-spots-approval.mjs +88 -0
- package/fesm2022/annalib-anna-feature-spots-approval.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/anna-feature-spots-approval.module.d.ts +20 -0
- package/package.json +57 -0
- package/public-api.d.ts +1 -0
- package/spot-approval-shared-lib/index.d.ts +5 -0
- package/spot-approval-shared-lib/public-api.d.ts +2 -0
- package/spot-approval-shared-lib/src/revision-offer-status-progress-view/revision-offer-status-progress-view.component.d.ts +19 -0
- package/spot-approval-shared-lib/src/revision-summary-panel/revision-summary-panel.component.d.ts +21 -0
- package/spots-approval/index.d.ts +5 -0
- package/spots-approval/public-api.d.ts +21 -0
- package/spots-approval/src/add-os-spots-popup/add-os-spots-popup.component.d.ts +59 -0
- package/spots-approval/src/anna-revision/anna-revision.component.d.ts +551 -0
- package/spots-approval/src/badly-behaved-spot-details-popup/badly-behaved-spot-details-popup.component.d.ts +38 -0
- package/spots-approval/src/badly-behaved-spot-details-popup/models/badly-behaved-spot-details-popup.model.d.ts +15 -0
- package/spots-approval/src/badly-behaved-spot-details-popup/services/badly-behaved-spot-details-popup.service.d.ts +7 -0
- package/spots-approval/src/cancel-offers-popup/cancel-offers-popup.component.d.ts +36 -0
- package/spots-approval/src/config/spots-approval-backend-service.token.d.ts +30 -0
- package/spots-approval/src/constants/create-or-edit-offers.constant.d.ts +44 -0
- package/spots-approval/src/constants/spots-approval.constant.d.ts +129 -0
- package/spots-approval/src/create-or-edit-adu-or-bonus/create-or-edit-adu-or-bonus.component.d.ts +214 -0
- package/spots-approval/src/create-or-edit-offers-popup/create-or-edit-offers-popup.component.d.ts +333 -0
- package/spots-approval/src/credit-confirmation-table-popup/credit-confirmation-table-popup.component.d.ts +72 -0
- package/spots-approval/src/models/anna-revisions-backend.model.d.ts +325 -0
- package/spots-approval/src/models/anna-revisions-enums.model.d.ts +53 -0
- package/spots-approval/src/models/anna-revisions-response.model.d.ts +355 -0
- package/spots-approval/src/models/anna-revisions-total-rows.model.d.ts +124 -0
- package/spots-approval/src/models/create-or-edit-offer-total-rows.model.d.ts +73 -0
- package/spots-approval/src/models/create-or-edit-offers-popup.model.d.ts +384 -0
- package/spots-approval/src/models/order-revision-detail.model.d.ts +156 -0
- package/spots-approval/src/offered-mg-edit-table/offered-mg-edit-table.component.d.ts +74 -0
- package/spots-approval/src/other-spots-edit-table/other-spots-edit-table.component.d.ts +44 -0
- package/spots-approval/src/political-rate-warning-popup/political-rate-warning-popup.component.d.ts +26 -0
- package/spots-approval/src/revision-header/revision-header.component.d.ts +21 -0
- package/spots-approval/src/revision-summary/revision-summary.component.d.ts +22 -0
- package/spots-approval/src/select-spot-length-popup/select-spot-length-popup.component.d.ts +37 -0
- package/spots-approval/src/services/create-or-edit-offers-popup.service.d.ts +25 -0
- package/spots-approval/src/services/generic-spots-approval.service.d.ts +99 -0
- package/spots-approval/src/services/spots-approval.service.d.ts +81 -0
- package/spots-approval/src/spot-details-popup/spot-details-popup.component.d.ts +57 -0
- package/src/lib/all-offers-listing/index.d.ts +5 -0
- package/src/lib/all-offers-listing/public-api.d.ts +6 -0
- package/src/lib/all-offers-listing/src/all-offers-listing.component.d.ts +162 -0
- package/src/lib/all-offers-listing/src/configs/all-offers-listing-backend.token.d.ts +11 -0
- package/src/lib/all-offers-listing/src/models/all-offers-filter.model.d.ts +12 -0
- package/src/lib/all-offers-listing/src/models/all-offers-listing-backend.model.d.ts +88 -0
- package/src/lib/all-offers-listing/src/models/all-offers-listing.constant.d.ts +84 -0
- package/src/lib/all-offers-listing/src/models/all-offers-listing.model.d.ts +95 -0
- package/src/lib/all-offers-listing/src/services/all-offers-listing.service.d.ts +25 -0
- package/src/lib/spot-approval-seller-or-buyer-revision/index.d.ts +5 -0
- package/src/lib/spot-approval-seller-or-buyer-revision/public-api.d.ts +6 -0
- package/src/lib/spot-approval-seller-or-buyer-revision/src/seller-or-buyer-revision/models/seller-or-buyer-revision-additional-data.model.d.ts +73 -0
- package/src/lib/spot-approval-seller-or-buyer-revision/src/seller-or-buyer-revision/models/seller-or-buyer-revision-backend.model.d.ts +57 -0
- package/src/lib/spot-approval-seller-or-buyer-revision/src/seller-or-buyer-revision/models/seller-or-buyer-revision-response.model.d.ts +117 -0
- package/src/lib/spot-approval-seller-or-buyer-revision/src/seller-or-buyer-revision/models/seller-or-buyer-revision-total-row.model.d.ts +29 -0
- package/src/lib/spot-approval-seller-or-buyer-revision/src/seller-or-buyer-revision/models/seller-or-buyer-revision.constant.d.ts +13 -0
- package/src/lib/spot-approval-seller-or-buyer-revision/src/seller-or-buyer-revision/models/seller-or-buyer-revision.token.d.ts +14 -0
- package/src/lib/spot-approval-seller-or-buyer-revision/src/seller-or-buyer-revision/seller-or-buyer-revision.component.d.ts +128 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"annalib-anna-feature-spots-approval-spots-approval.mjs","sources":["../../../projects/anna-feature-spots-approval/spots-approval/src/constants/spots-approval.constant.ts","../../../projects/anna-feature-spots-approval/spots-approval/src/constants/create-or-edit-offers.constant.ts","../../../projects/anna-feature-spots-approval/spots-approval/src/services/generic-spots-approval.service.ts","../../../projects/anna-feature-spots-approval/spots-approval/src/models/create-or-edit-offers-popup.model.ts","../../../projects/anna-feature-spots-approval/spots-approval/src/services/create-or-edit-offers-popup.service.ts","../../../projects/anna-feature-spots-approval/spots-approval/src/add-os-spots-popup/add-os-spots-popup.component.ts","../../../projects/anna-feature-spots-approval/spots-approval/src/add-os-spots-popup/add-os-spots-popup.component.html","../../../projects/anna-feature-spots-approval/spots-approval/src/config/spots-approval-backend-service.token.ts","../../../projects/anna-feature-spots-approval/spots-approval/src/badly-behaved-spot-details-popup/services/badly-behaved-spot-details-popup.service.ts","../../../projects/anna-feature-spots-approval/spots-approval/src/badly-behaved-spot-details-popup/badly-behaved-spot-details-popup.component.ts","../../../projects/anna-feature-spots-approval/spots-approval/src/badly-behaved-spot-details-popup/badly-behaved-spot-details-popup.component.html","../../../projects/anna-feature-spots-approval/spots-approval/src/cancel-offers-popup/cancel-offers-popup.component.ts","../../../projects/anna-feature-spots-approval/spots-approval/src/cancel-offers-popup/cancel-offers-popup.component.html","../../../projects/anna-feature-spots-approval/spots-approval/src/models/anna-revisions-enums.model.ts","../../../projects/anna-feature-spots-approval/spots-approval/src/models/anna-revisions-response.model.ts","../../../projects/anna-feature-spots-approval/spots-approval/src/models/create-or-edit-offer-total-rows.model.ts","../../../projects/anna-feature-spots-approval/spots-approval/src/other-spots-edit-table/other-spots-edit-table.component.ts","../../../projects/anna-feature-spots-approval/spots-approval/src/other-spots-edit-table/other-spots-edit-table.component.html","../../../projects/anna-feature-spots-approval/spots-approval/src/spot-details-popup/spot-details-popup.component.ts","../../../projects/anna-feature-spots-approval/spots-approval/src/spot-details-popup/spot-details-popup.component.html","../../../projects/anna-feature-spots-approval/spots-approval/src/create-or-edit-adu-or-bonus/create-or-edit-adu-or-bonus.component.ts","../../../projects/anna-feature-spots-approval/spots-approval/src/create-or-edit-adu-or-bonus/create-or-edit-adu-or-bonus.component.html","../../../projects/anna-feature-spots-approval/spots-approval/src/offered-mg-edit-table/offered-mg-edit-table.component.ts","../../../projects/anna-feature-spots-approval/spots-approval/src/offered-mg-edit-table/offered-mg-edit-table.component.html","../../../projects/anna-feature-spots-approval/spots-approval/src/political-rate-warning-popup/political-rate-warning-popup.component.ts","../../../projects/anna-feature-spots-approval/spots-approval/src/political-rate-warning-popup/political-rate-warning-popup.component.html","../../../projects/anna-feature-spots-approval/spots-approval/src/create-or-edit-offers-popup/create-or-edit-offers-popup.component.ts","../../../projects/anna-feature-spots-approval/spots-approval/src/create-or-edit-offers-popup/create-or-edit-offers-popup.component.html","../../../projects/anna-feature-spots-approval/spots-approval/src/services/spots-approval.service.ts","../../../projects/anna-feature-spots-approval/spots-approval/src/credit-confirmation-table-popup/credit-confirmation-table-popup.component.ts","../../../projects/anna-feature-spots-approval/spots-approval/src/credit-confirmation-table-popup/credit-confirmation-table-popup.component.html","../../../projects/anna-feature-spots-approval/spots-approval/src/models/anna-revisions-total-rows.model.ts","../../../projects/anna-feature-spots-approval/spots-approval/src/models/order-revision-detail.model.ts","../../../projects/anna-feature-spots-approval/spots-approval/src/revision-header/revision-header.component.ts","../../../projects/anna-feature-spots-approval/spots-approval/src/revision-header/revision-header.component.html","../../../projects/anna-feature-spots-approval/spots-approval/src/revision-summary/revision-summary.component.ts","../../../projects/anna-feature-spots-approval/spots-approval/src/revision-summary/revision-summary.component.html","../../../projects/anna-feature-spots-approval/spots-approval/src/select-spot-length-popup/select-spot-length-popup.component.ts","../../../projects/anna-feature-spots-approval/spots-approval/src/select-spot-length-popup/select-spot-length-popup.component.html","../../../projects/anna-feature-spots-approval/spots-approval/src/anna-revision/anna-revision.component.ts","../../../projects/anna-feature-spots-approval/spots-approval/src/anna-revision/anna-revision.component.html","../../../projects/anna-feature-spots-approval/spots-approval/annalib-anna-feature-spots-approval-spots-approval.ts"],"sourcesContent":["export class IntelliFilterConstant {\n static readonly OUTSTANDING_SPOTS = \"O/S SPOTS\";\n static readonly BUYER_REJECTED = \"BUYER REJECTED\";\n static readonly MGs = \"MGs\";\n static readonly ADUs = \"ADUs\";\n static readonly BOOKED_ADUs = \"BOOKED ADUs\";\n static readonly CREDITS = \"CREDITS\";\n static readonly BONUS = \"BONUS\";\n static readonly BADLY_BEHAVED_SPOTS = \"BADLY BEHAVED SPOTS\";\n}\n\nexport class RevisionTableHeaderConstants {\n // static readonly STATUS_HEADER = \"STATUS\";\n static readonly BIZ_RULE_HEADER = \"BIZ RULE\";\n static readonly LINE_HEADER = \"LINE\";\n static readonly SELLER_LINE_HEADER = \"SELLER LINE\";\n static readonly BUYER_LINE_HEADER = \"BUY LINE\";\n static readonly SPOT_HEADER = \"SPOT\";\n static readonly WEEK_HEADER = \"WEEK\";\n static readonly LENGTH_HEADER = \"LEN\";\n static readonly INVENTORY_CODE_HEADER = \"INVENTORY CODE\";\n static readonly BUYER_PROGRAM_NAME = \"BUYER PROGRAM\";\n static readonly BUYER_PROGRAM = \"BUYER PROGRAM\";\n static readonly SELLER_PROGRAM = \"SELLER PROGRAM\";\n static readonly RATE_HEADER = \"RATE\";\n static readonly RATING_ORDERED_HEADER = \"RTG\";\n static readonly ACTION_HEADER = \"ACTION\";\n static readonly DAYPART_HEADER = \"DP\";\n static readonly IMPRESSIONS = \"IMP('000)\";\n static readonly AU_RATE_HEADER = \"AVG RATE\";\n static readonly AU_RATING_HEADER = \"BOOKED AVG. RTG\";\n static readonly AU_IMPS_HEADER = \"BOOKED AVG. IMP('000)\";\n static readonly ACTION_ICONS_OBJECT_KEY = \"editUndoReofferOrCancelColumn\";\n static readonly TOTAL_AMOUNT_KEY = \"displayTotalAmount\";\n}\n\nexport class RevisionTypeConstants {\n static readonly ANNA = \"ANNA\";\n static readonly USER = \"USER\";\n static readonly SELLER_USER = \"SELLER USER\";\n static readonly BUYER = \"BUYER\";\n}\n\nexport class PreemptionStatus {\n static readonly PREEMPTION = \"Preemption\";\n static readonly OUTSTANDING_PREEMPTION = \"Outstanding PE\";\n static readonly MADEGOOD_PREEMPTION = \"MadeGood Preemption\";\n static readonly BUYER_CREDIT_PREEMPTION = \"Buyer Credit Requested\";\n static readonly CREDITED_PREEMPTION = \"Preemption: Marked for Credit\";\n static readonly OUTSTANDING_PREEMPTION_CREDITED = \"Outstanding PE: Marked for Credit\";\n}\n\nexport class SpotStatusFromBackend {\n static readonly PREEMPTION = \"Preemption\";\n static readonly PREEMPTION_REQUESTED_FOR_CREDIT_BY_BUYER = \"Buyer Credit Requested\";\n static readonly PREEMPTION_SELLER_MARKED_FOR_CREDIT = \"Preemption: Marked for Credit\";\n\n static readonly MAKEGOOD_OFFERED = \"Offered MG\";\n static readonly MAKEGOOD_APPROVED = \"Added MG\";\n static readonly MAKEGOOD_REJECTED = \"Rejected MG\";\n static readonly MAKEGOOD_AUTO_APPROVED = \"Offered MG: Auto-approved\";\n\n static readonly ADU_OFFERED = \"Offered ADU\";\n static readonly ADU_APPROVED = \"Added ADU\";\n static readonly ADU_REJECTED = \"Rejected ADU\";\n static readonly ADU_AUTO_APPROVED = \"Offered ADU: Auto-approved\";\n\n static readonly OUTSTANDING_NO_ACTION = \"Outstanding PE\";\n static readonly OUTSTANDING_MARKED_FOR_CREDIT = \"Outstanding PE\";\n static readonly OUTSTANDING_MARKED_FOR_MAKEGOOD = \"Outstanding PE\";\n static readonly OUTSTANDING_MARKED_FOR_CREDIT_2 = \"Outstanding PE: Marked for Credit\";\n\n static readonly USER_PREEMPTION = \"MadeGood Preemption\";\n static readonly USER_MAKEGOOD = \"User MG\";\n static readonly USER_ADU = \"User ADU\";\n static readonly BUYER_ADDED = \"Buyer Added\";\n static readonly BUYER_DELETED = \"Buyer Deleted\";\n static readonly USER_CREDITED = \"User Credited\";\n static readonly USER_UNRESOLVED = \"User Unresolved\";\n\n static readonly UNDEFINED = \"Undefined\";\n\n static readonly REP_ENTRY_FAILED_RETRYING = \"Rep Entry Failed (retrying)\";\n static readonly BUYER_REP_PENDING = \"Buyer (Rep) Pending\";\n static readonly BUYER_AGY_PENDING = \"Buyer (Agy) Pending\";\n static readonly BUYER_TIMEDOUT_LOG_CLOSED = \"Buyer Timedout (Log Closed)\";\n static readonly WOT_ENTRY_FAILED_RETRYING = \"WOT Entry Failed (retrying)\";\n}\n\nexport class OfferedSpotStatus {\n static readonly OFFERED_FOR_APPROVAL = \"Offered MG\";\n static readonly AUTO_APPROVED_OFFERED_MAKEGOOD = \"Offered MG: Auto-approved\";\n static readonly REJECTED_OFFERED_SPOTS = \"Rejected MG\";\n static readonly USER_OFFERED_FOR_APPROVAL = \"User MG\";\n}\n\nexport class RevisionTableKeyConstants {\n static readonly STATUS_KEY = \"status\";\n static readonly BIZ_RULE_KEY = \"businessRules\";\n static readonly LINE_NUMBER_KEY = \"lineNumber\";\n static readonly BUYER_LINE_NUMBER_KEY = \"buyerLine\";\n static readonly SPOT_NUMBER_KEY = \"spotNumber\";\n static readonly WEEK_START_DATE_KEY = \"weekStartDate\";\n static readonly LENGTH_KEY = \"length\";\n static readonly INVENTORY_CODE_KEY = \"inventoryCode\";\n static readonly BUYER_PROGRAM_NAME_KEY = \"buyerProgramName\";\n static readonly RATE_KEY = \"displayRate\";\n static readonly ORDERED_RATING_KEY = \"displayRating\";\n static readonly ORDERED_IMPRESSION_KEY = \"displayImpressions\";\n static readonly ACTION_KEY = \"action\";\n static readonly DAYPART_KEY = \"daypart\";\n static readonly AUR_KEY = \"displayWeeklyAUR\";\n static readonly AU_RTG_KEY = \"displayWeeklyAURatings\";\n static readonly AU_IMPS_KEY = \"displayWeeklyAUImpressions\";\n static readonly OFFER_NUMBER_KEY = \"makeGoodsOfferNumber\";\n static readonly EDITED_OR_ADDED_KEY = \"editedOrAddedBy\";\n static readonly DAY_KEY = \"weekDay\";\n static readonly TIME_KEY = \"time\";\n static readonly REVENUE_CLASS_KEY = \"revenueClass\";\n static readonly TOTAL_GRP_KEY = \"displayTotalGrp\";\n static readonly TOTAL_IMPS_KEY = \"displayTotalImps\";\n}\n\nexport class RevisionTypes {\n static readonly ANNA = \"ANNA\";\n static readonly SELLER = \"Seller\";\n static readonly BUYER = \"Buyer\";\n}\n\nexport class ProxyMessage {\n static readonly notWriteEnabledOrderToastrMessage =\n \"No approval action can be taken for this order since it is not automation-activated.\";\n static readonly ProxyOrderToasteTextPartOne = \"This is an order that belongs to \";\n static readonly ProxyOrderToasteTextPartTwo = \". You are acting as proxy user for this order from \";\n static readonly writeEnabledOrderToastrMessage =\n \"This order is Automated. All approved spots will be fed into the traffic system.\";\n}\n\nexport class RevisionToastrMessage {\n static readonly OngoingTemporaryRevisionMessage =\n \"This is an ongoing temporary revision. Any new revision will henceforth be for the live order.\";\n}\n\nexport class SpotsApprovalConfigCatKeys {\n static readonly ConfigCatKeyForSpotsApproval = \"NewSpotFlow\";\n}\n\nexport class SpotsApprovalTableTotalRowColNames {\n static readonly TOTAL_RADIO_ACTION_COL_NAME = \"total-radio-action-col\";\n}","export class OfferedMGOrADUTableHeaders {\n static readonly STATUS_HEADER = \"STATUS\";\n static readonly WEEK_HEADER = \"WEEK\";\n static readonly DAY_HEADER = \"DAY\";\n static readonly LENGTH_HEADER = \"LEN\";\n static readonly INVENTORY_CODE_HEADER = \"INVENTORY CODE\";\n static readonly SELLER_PROGRAM = \"SELLER PROGRAM\";\n static readonly BUYER_PROGRAM = \"BUYER PROGRAM\";\n static readonly TIME_HEADER = \"TIME\";\n static readonly OFFERED_RATE_HEADER = \"OFFERED RATE\";\n static readonly BOOKED_AVERAGE_RATE_HEADER = \"BOOKED AVG. RATE\";\n static readonly OFFERED_RATING_HEADER = \"OFFERED RTG\";\n static readonly OFFERED_IMPS_HEADER = \"OFFERED IMP('000)\";\n static readonly STATION_EST_RATING_HEADER = \"STN EST RTG\";\n static readonly ANNA_EST_RATING_HEADER = \"ANNA EST RTG\";\n static readonly BUYER_RATING_HEADER = \"BUYER RTG\";\n static readonly BOOKED_AVG_RATING_HEADER = \"BOOKED AVG. RTG\";\n static readonly STATION_EST_IMPS_HEADER = \"STN EST IMP('000)\";\n static readonly ANNA_EST_IMPS_HEADER = \"ANNA EST IMP('000)\";\n static readonly BUYER_IMPS_HEADER = \"BUYER IMP('000)\";\n static readonly BOOKED_AVG_IMPS_HEADER = \"BOOKED AVG. IMP('000)\";\n static readonly DAYPART_HEADER = \"DP\";\n static readonly MEETS_BIZ_RULES_HEADER = \"MEETS BIZ RULES\";\n static readonly INVENTORY_HEADER = \"INVENTORY\";\n static readonly REV_CLASS_HEADER = \"REV CLASS\";\n static readonly SPOT_COUNT_HEADER = \"# BOOKED SPOTS\";\n static readonly ACTION_HEADER = \"ACTION\";\n}\nexport class OtherAvailableSpotsTableKeys {\n static readonly OTHER_AVAILABLE_SPOTS_KEY = \"OtherAvailableSpotsTable\";\n}\n\nexport class OfferedMGOrADUTableKeys {\n static readonly BUYER_PROGRAM_KEY = \"BuyerProgramNameColumn\";\n static readonly OFFERED_RATING_OR_IMPS_KEY = \"OfferedRatingOrImpressionsColumn\";\n static readonly OFFERED_RATING_KEY = \"ActualRatings\";\n static readonly OFFERED_IMPS_KEY = \"ActualImpressions\";\n static readonly OFFERED_RATE_KEY = \"OfferedRateForInputBoxColumn\";\n}\n\nexport class ValidationResults {\n static readonly VALIDATION_SUCCESS_MESSAGE = \"All errors have been fixed. Please proceed and save the changes.\";\n static readonly SUCCESS_MESSAGE = \"Please proceed and save the changes.\";\n static readonly ERROR_MESSAGE =\n // eslint-disable-next-line max-len\n \"There are some business rules violations that need correction. Please validate and save for the results to get reflected.\";\n static readonly ERROR_MESSAGE_FOR_LUR_VIOLATION =\n \"There are few rate violations that need correction. Please validate and save for the results to get reflected.\";\n}\n","import { Injectable } from \"@angular/core\";\n\nimport { OfferedMGOrADUTableHeaders } from \"../constants/create-or-edit-offers.constant\";\nimport { ISpotInformationResponse } from \"../models/anna-revisions-backend.model\";\nimport { ESTIMATEPRIORITIES } from \"../models/anna-revisions-enums.model\";\n\nexport class OffersStatusFromBE {\n static readonly OS_SPOTS = \"O/S Spots\";\n static readonly SELLER_PENDING = \"Seller Pending\";\n static readonly SELLER_APPROVED = \"Seller Approved\";\n static readonly SELLER_REJECTED = \"Seller Rejected\";\n static readonly SELLER_TIMEDOUT = \"Seller Timedout\";\n static readonly SELLER_CANCELLED = \"Seller Cancelled\";\n\n static readonly REP_ENTRY_IN_PROGRESS = \"Rep Entry In Progress\";\n static readonly REP_ENTRY_FAILED = \"Rep Entry Failed\";\n\n static readonly BUYER_PENDING = \"Buyer Pending\";\n static readonly SELLER_RECONFIRM = \"Seller Reconfirm\";\n static readonly SELLER_RECONFIRMED = \"Seller Reconfirmed\";\n static readonly SELLER_RECONFIRM_TIMEDOUT = \"Seller Reconfirm Timedout\";\n\n static readonly BUYER_APPROVED = \"Buyer Approved\";\n static readonly BUYER_REJECTED = \"Buyer Rejected\";\n static readonly BUYER_TIMEDOUT = \"Buyer Timedout\";\n\n static readonly WOT_ENTRY_IN_PROGRESS = \"WOT Entry In Progress\";\n static readonly WOT_ENTRY_FAILED = \"WOT Entry Failed\";\n static readonly SM_PENDING = \"SM Pending\";\n static readonly SM_APPROVED = \"SM Approved\";\n static readonly SM_REJECTED = \"SM Rejected\";\n\n static readonly CONFIRM_IN_PROGRESS = \"Confirm In Progress\";\n static readonly CANCEL_IN_PROGRESS = \"Cancel In Progress\";\n static readonly RECALL_IN_PROGRESS = \"Recall In Progress\";\n static readonly CONFIRMED = \"Confirmed\";\n static readonly CANCELLED = \"Cancelled\";\n static readonly RECALLED = \"Recalled\";\n\n static readonly REP_ENTRY_FAILED_RETRYING = \"Rep Entry Failed (retrying)\";\n static readonly BUYER_REP_PENDING = \"Buyer (Rep) Pending\";\n static readonly BUYER_AGY_PENDING = \"Buyer (Agy) Pending\";\n static readonly BUYER_TIMEDOUT_LOG_CLOSED = \"Buyer Timedout (Log Closed)\";\n static readonly WOT_ENTRY_FAILED_RETRYING = \"WOT Entry Failed (retrying)\";\n\n static readonly AUTO_CANCELLED_LOG_CLOSURE = \"Auto-Cancelled (Log Closure)\";\n static readonly CANCEL_IN_PROGRESS_LOG_CLOSURE = \"Cancel in progress (Log Closure)\";\n static readonly CANCEL_FAILED_LOG_CLOSURE = \"Cancel Failed (Log Closure)\";\n static readonly AUTO_REJECTED_LOG_CLOSURE = \"Auto-rejected (Log Closure)\";\n\n static readonly USER_CONFIRMED = \"User Confirmed\";\n static readonly USER_CANCELLED = \"User Cancelled\";\n static readonly USER_EDITED_AND_CONFIRMED = \"User edited & Confirmed\";\n static readonly USER_EDITED_AND_CANCELLED = \"User edited & Cancelled\";\n static readonly USER_EDITED = \"User edited\";\n static readonly USER_STN_CANCELLED = \"User Stn Cancelled\";\n\n // static readonly CONFIRMED = \"Confirmed\";\n // static readonly CANCELLED = \"Cancelled\";\n // static readonly SM_APPROVED = \"SM Approved\";\n // static readonly SM_REJECTED = \"SM Rejected\";\n // static readonly BUYER_TIMEDOUT = \"Buyer Timedout\";\n // static readonly BUYER_REJECTED = \"Buyer Rejected\";\n // static readonly SELLER_REJECTED = \"Seller Rejected\";\n\n static readonly REV_TYPE_ANNA = \"ANNA\";\n static readonly REV_TYPE_SELLER = \"SELLER\";\n static readonly REV_TYPE_BUYER = \"BUYER\";\n}\n@Injectable({\n providedIn: \"root\",\n})\nexport class GenericSpotsApprovalService {\n static reinitialseFilter: boolean = true; // only when we come from edit page to spot approval will set as false.\n static charactersToRestrictInBuyerProgramNameColumn: any[] = [\"'\"];\n estimatePriorityKeyColumnNameMapForRTGMetric = {\n RollingEstimate: OfferedMGOrADUTableHeaders.ANNA_EST_RATING_HEADER,\n StationEstimate: OfferedMGOrADUTableHeaders.STATION_EST_RATING_HEADER,\n BookedRTG: OfferedMGOrADUTableHeaders.BUYER_RATING_HEADER,\n AverageRTG: OfferedMGOrADUTableHeaders.BOOKED_AVG_RATING_HEADER,\n };\n estimatePriorityKeyColumnNameMapForIMPSMetric = {\n RollingEstimate: OfferedMGOrADUTableHeaders.ANNA_EST_IMPS_HEADER,\n StationEstimate: OfferedMGOrADUTableHeaders.STATION_EST_IMPS_HEADER,\n BookedRTG: OfferedMGOrADUTableHeaders.BUYER_IMPS_HEADER,\n AverageRTG: OfferedMGOrADUTableHeaders.BOOKED_AVG_IMPS_HEADER,\n };\n public static returnTooltipAndIconForSolvedType(\n solvedType: string,\n metric: string,\n valueToUse: number,\n ): { tooltipData: string; iconClass: string } {\n let dataToReturn: { tooltipData: string; iconClass: string } | any = {};\n switch (solvedType) {\n case \"LINE\":\n dataToReturn = {\n tooltipData: `The booked ${metric} for this spot is calculated based on the booked ${metric} (${valueToUse}) of the inventory code of the spot.`,\n iconClass: \"ALPHA_B_CIRCLE\",\n };\n break;\n\n case \"ROLLING_ESTIMATES\":\n dataToReturn = {\n tooltipData: `The booked ${metric} for this spot is calculated based on the ANNA Estimate value (${valueToUse}) of the program.`,\n iconClass: \"ALPHA_R_CIRCLE\",\n };\n break;\n\n case \"ESTIMATES\":\n dataToReturn = {\n tooltipData: `The booked ${metric} for this spot is calculated based on the station’s estimated ${metric} (${valueToUse}) of the program.`,\n iconClass: \"ALPHA_E_CIRCLE\",\n };\n break;\n\n case \"AVERAGE\":\n dataToReturn = {\n tooltipData: `The booked ${metric} for this spot is calculated based on the average booked ${metric} (${valueToUse}).`,\n iconClass: \"ALPHA_A_CIRCLE\",\n };\n break;\n\n // case 'MODIFIED':\n // dataToReturn.tooltipData = [{\n // key: `The booked ${metric} for this spot was edited manually by the user.`,\n // value: null\n // }];\n // dataToReturn.iconClass = \"mdi mdi-alpha-m-circle-outline\";\n // break;\n\n default:\n dataToReturn.tooltipData = \"\";\n dataToReturn.iconClass = \"\";\n break;\n }\n return dataToReturn;\n }\n\n public static forEditOfferPageReturnTooltipAndIconForSolvedType(\n solvedType: string,\n metric: string,\n valueToUse: number,\n ): { tooltipData: { key: string; value: any }[] | string; iconClass: string } {\n const dataToReturn: { tooltipData: { key: string; value: any }[] | string; iconClass: string } | any = {};\n switch (solvedType) {\n case \"LINE\":\n dataToReturn.tooltipData = [\n {\n key: `The booked ${metric} for this spot is calculated based on the booked ${metric} (${valueToUse}) of the inventory code of the spot.`,\n value: null,\n },\n ];\n dataToReturn.iconClass = \"mdi mdi-alpha-b-circle-outline float-right\";\n break;\n\n case \"ROLLING_ESTIMATES\":\n dataToReturn.tooltipData = [\n {\n key: `The booked ${metric} for this spot is calculated based on the ANNA Estimate value (${valueToUse}) of the program.`,\n value: null,\n },\n ];\n dataToReturn.iconClass = \"mdi mdi-alpha-r-circle-outline\";\n break;\n\n case \"ESTIMATES\":\n dataToReturn.tooltipData = [\n {\n key: `The booked ${metric} for this spot is calculated based on the station’s estimated ${metric} (${valueToUse}) of the program.`,\n value: null,\n },\n ];\n dataToReturn.iconClass = \"mdi mdi-alpha-e-box-outline float-right\";\n break;\n\n case \"AVERAGE\":\n dataToReturn.tooltipData = [\n {\n key: `The booked ${metric} for this spot is calculated based on the average booked ${metric} (${valueToUse}).`,\n value: null,\n },\n ];\n dataToReturn.iconClass = \"mdi mdi-alpha-a-circle float-right\";\n break;\n\n // case 'MODIFIED':\n // dataToReturn.tooltipData = [{\n // key: `The booked ${metric} for this spot was edited manually by the user.`,\n // value: null\n // }];\n // dataToReturn.iconClass = \"mdi mdi-alpha-m-circle-outline\";\n // break;\n\n default:\n dataToReturn.tooltipData = \"\";\n dataToReturn.iconClass = \"\";\n break;\n }\n return dataToReturn;\n }\n\n public static returnEstimatePriorities(\n data: ISpotInformationResponse,\n estimatePriority: ESTIMATEPRIORITIES[],\n ): string[] {\n const firstAndSecondEstimatePrioritiesForRTGMetric = `${this.returnEstimateValueBasedOnKeyForRTGMetric(\n data,\n estimatePriority[0],\n )} | ${this.returnEstimateValueBasedOnKeyForRTGMetric(data, estimatePriority[1])}`;\n\n const thirdAndFourthEstimatePrioritiesForRTGMetric = `${this.returnEstimateValueBasedOnKeyForRTGMetric(\n data,\n estimatePriority[2],\n )} | ${this.returnEstimateValueBasedOnKeyForRTGMetric(data, estimatePriority[3])}`;\n\n const firstAndSecondEstimatePrioritiesForIMPSMetric = `${this.returnEstimateValueBasedOnKeyForIMPSMetric(\n data,\n estimatePriority[0],\n )} | ${this.returnEstimateValueBasedOnKeyForIMPSMetric(data, estimatePriority[1])}`;\n\n const thirdAndFourthEstimatePrioritiesForIMPSGMetric = `${this.returnEstimateValueBasedOnKeyForIMPSMetric(\n data,\n estimatePriority[2],\n )} | ${this.returnEstimateValueBasedOnKeyForIMPSMetric(data, estimatePriority[3])}`;\n return [\n firstAndSecondEstimatePrioritiesForRTGMetric,\n thirdAndFourthEstimatePrioritiesForRTGMetric,\n firstAndSecondEstimatePrioritiesForIMPSMetric,\n thirdAndFourthEstimatePrioritiesForIMPSGMetric,\n ];\n }\n\n public static returnEstimateValueBasedOnKeyForRTGMetric(\n data: ISpotInformationResponse,\n key: ESTIMATEPRIORITIES,\n ): number | string {\n switch (key) {\n case \"AverageRTG\":\n return data.WeeklyAURatings !== null ? data.WeeklyAURatings : \"-\";\n\n case \"BookedRTG\":\n return data.BookedRating !== null ? data.BookedRating : \"-\";\n\n case \"RollingEstimate\":\n return data.RollingEstimateRating === 0 ? \"-\" : data.RollingEstimateRating;\n\n case \"StationEstimate\":\n return data.StationEstimateRating === 0 ? \"-\" : data.StationEstimateRating;\n // no default\n }\n\n return \"-\";\n }\n\n public static returnEstimateValueBasedOnKeyForIMPSMetric(\n data: ISpotInformationResponse,\n key: ESTIMATEPRIORITIES,\n ): number | string {\n switch (key) {\n case \"AverageRTG\":\n return data.WeeklyAUImpressions !== null ? data.WeeklyAUImpressions : \"-\";\n\n case \"BookedRTG\":\n return data.BookedImpression !== null ? data.BookedImpression : \"-\";\n\n case \"RollingEstimate\":\n return data.RollingEstimateImpression === 0 ? \"-\" : data.RollingEstimateImpression;\n\n case \"StationEstimate\":\n return data.StationEstimateImpression === 0 ? \"-\" : data.StationEstimateImpression;\n // no default\n }\n\n return \"-\";\n }\n\n public static returnEstimatePrioritiesForTotals(\n data: { ANNAEstimate: number, stnEstimate: number, buyerEstimate: number, bookedAvgEstimate: number },\n estimatePriority: ESTIMATEPRIORITIES[],\n ): string[] {\n const firstAndSecondEstimatePriorities = `${this.returnEstimateValueBasedOnKeyForTotals(\n data,\n estimatePriority[0],\n )} | ${this.returnEstimateValueBasedOnKeyForTotals(data, estimatePriority[1])}`;\n\n const thirdAndFourthEstimatePriorities = `${this.returnEstimateValueBasedOnKeyForTotals(\n data,\n estimatePriority[2],\n )} | ${this.returnEstimateValueBasedOnKeyForTotals(data, estimatePriority[3])}`;\n\n\n return [\n firstAndSecondEstimatePriorities,\n thirdAndFourthEstimatePriorities,\n ];\n }\n\n public static returnEstimateValueBasedOnKeyForTotals(\n data: { ANNAEstimate: number, stnEstimate: number, buyerEstimate: number, bookedAvgEstimate: number },\n key: ESTIMATEPRIORITIES,\n ): number | string {\n switch (key) {\n case \"AverageRTG\":\n return data.bookedAvgEstimate !== null ? data.bookedAvgEstimate : \"-\";\n\n case \"BookedRTG\":\n return data.buyerEstimate !== null ? data.buyerEstimate : \"-\";\n\n case \"RollingEstimate\":\n return data.ANNAEstimate === 0 ? \"-\" : data.ANNAEstimate;\n\n case \"StationEstimate\":\n return data.stnEstimate === 0 ? \"-\" : data.stnEstimate;\n // no default\n }\n\n return \"-\";\n }\n public static GetRoundedValueWithoutUnitsWithMathRound(inputValue: number, digitsToRoundDecimalPoint = 2) {\n let value = inputValue;\n value = Math.round(+value * 10 ** digitsToRoundDecimalPoint) / 10 ** digitsToRoundDecimalPoint;\n if (inputValue < 0) {\n value *= -1;\n }\n return value.toLocaleString(\"en-IN\");\n }\n\n public static GetRoundedValueWithUnitsWithMathRound(inputValue: number, digitsToRoundDecimalPoint = 2) {\n const valueUnitArr = GenericSpotsApprovalService.GetValueInUnits(Math.abs(inputValue));\n let value = valueUnitArr[0];\n const unit = valueUnitArr[1];\n value = Math.round(+value * 10 ** digitsToRoundDecimalPoint) / 10 ** digitsToRoundDecimalPoint;\n if (inputValue < 0) {\n value *= -1;\n }\n return value.toString() + unit;\n }\n public static GetValueInUnits(inputValue: number) {\n let unit = \"\";\n const thousand = 1000;\n const million = 1000000;\n const billion = 1000000000;\n\n let updatedInputValue = inputValue;\n if (inputValue >= thousand && inputValue < million) {\n updatedInputValue = inputValue / thousand;\n unit = \"K\";\n } else if (inputValue >= million && inputValue < billion) {\n updatedInputValue = inputValue / million;\n unit = \"M\";\n } else if (inputValue >= billion) {\n updatedInputValue = inputValue / billion;\n unit = \"B\";\n }\n\n return [updatedInputValue, unit];\n }\n\n static getClassNameFromOffersStatus(offersStatus: OffersStatusFromBE): string {\n switch (offersStatus) {\n case OffersStatusFromBE.OS_SPOTS:\n return \"os-spots\";\n case OffersStatusFromBE.SM_PENDING:\n return \"sm-pending\";\n case OffersStatusFromBE.SELLER_PENDING:\n return \"seller-pending\";\n case OffersStatusFromBE.SELLER_APPROVED:\n return \"seller-approved\";\n case OffersStatusFromBE.SELLER_CANCELLED:\n return \"seller-cancelled\";\n case OffersStatusFromBE.SELLER_REJECTED:\n return \"seller-rejected\";\n case OffersStatusFromBE.SELLER_TIMEDOUT:\n return \"seller-reconfirm-timedout\";\n case OffersStatusFromBE.REP_ENTRY_IN_PROGRESS:\n return \"rep-entry-in-progress\";\n case OffersStatusFromBE.REP_ENTRY_FAILED:\n return \"rep-entry-failed\";\n case OffersStatusFromBE.BUYER_PENDING:\n return \"buyer-pending\";\n case OffersStatusFromBE.SELLER_RECONFIRM:\n return \"seller-reconfirm\";\n case OffersStatusFromBE.SELLER_RECONFIRMED:\n return \"seller-reconfirmed\";\n case OffersStatusFromBE.SELLER_RECONFIRM_TIMEDOUT:\n return \"seller-reconfirm-timedout\";\n case OffersStatusFromBE.BUYER_APPROVED:\n return \"buyer-approved\";\n case OffersStatusFromBE.BUYER_REJECTED:\n return \"buyer-rejected\";\n case OffersStatusFromBE.BUYER_TIMEDOUT:\n return \"buyer-timedout\";\n case OffersStatusFromBE.WOT_ENTRY_IN_PROGRESS:\n return \"wot-entry-in-progress\";\n case OffersStatusFromBE.WOT_ENTRY_FAILED:\n return \"wot-entry-failed\";\n case OffersStatusFromBE.SM_APPROVED:\n return \"sm-approved\";\n case OffersStatusFromBE.SM_REJECTED:\n return \"sm-rejected\";\n case OffersStatusFromBE.CONFIRM_IN_PROGRESS:\n return \"confirm-in-progress\";\n case OffersStatusFromBE.CANCEL_IN_PROGRESS:\n return \"cancel-in-progress\";\n case OffersStatusFromBE.RECALL_IN_PROGRESS:\n return \"recall-in-progress\";\n case OffersStatusFromBE.CONFIRMED:\n return \"confirmed\";\n case OffersStatusFromBE.CANCELLED:\n return \"cancelled\";\n case OffersStatusFromBE.RECALLED:\n return \"recalled\";\n case OffersStatusFromBE.REP_ENTRY_FAILED_RETRYING:\n return \"rep-entry-failed-retrying\";\n case OffersStatusFromBE.BUYER_REP_PENDING:\n return \"buyer-rep-pending\";\n case OffersStatusFromBE.BUYER_AGY_PENDING:\n return \"buyer-agy-pending\";\n case OffersStatusFromBE.BUYER_TIMEDOUT_LOG_CLOSED:\n return \"buyer-timedout-log-closed\";\n case OffersStatusFromBE.WOT_ENTRY_FAILED_RETRYING:\n return \"wot-entry-failed-retrying\";\n case OffersStatusFromBE.AUTO_CANCELLED_LOG_CLOSURE:\n return \"auto-cancelled-log-closure\";\n case OffersStatusFromBE.CANCEL_IN_PROGRESS_LOG_CLOSURE:\n return \"cancel-in-progress-log-closure\";\n case OffersStatusFromBE.CANCEL_FAILED_LOG_CLOSURE:\n return \"cancel-failed-log-closure\";\n case OffersStatusFromBE.AUTO_REJECTED_LOG_CLOSURE:\n return \"auto-rejected-log-closure\";\n case OffersStatusFromBE.USER_CANCELLED:\n return \"user-cancelled\";\n case OffersStatusFromBE.USER_EDITED_AND_CANCELLED:\n return \"user-edited-and-cancelled\";\n case OffersStatusFromBE.USER_STN_CANCELLED:\n return \"user-stn-cancelled\";\n case OffersStatusFromBE.USER_CONFIRMED:\n return \"user-confirmed\";\n case OffersStatusFromBE.USER_EDITED_AND_CONFIRMED:\n return \"user-edited-and-confirmed\";\n case OffersStatusFromBE.USER_EDITED:\n return \"user-edited\";\n default:\n return null;\n }\n }\n\n static returnTooltipsAsList(svgOrIconTooltipMsgs: string[]): string {\n let textToRetutn: string = `<ul>`;\n svgOrIconTooltipMsgs.forEach((item) => {\n textToRetutn += `<li>${item}</li>`;\n });\n textToRetutn += `</ul>`;\n return textToRetutn;\n }\n\n\n public static formatArrayAsRanges(arr: number[]): string {\n if (arr.length === 0) return \"-\";\n\n arr.sort((a, b) => a - b); // Ensure the array is sorted\n const result: string[] = [];\n let start = arr[0];\n let end = arr[0];\n\n for (let i = 1; i < arr.length; i++) {\n if (arr[i] === end + 1) {\n end = arr[i]; // Extend the range\n } else {\n result.push(start === end ? `${start}` : `${start}-${end}`);\n start = arr[i];\n end = arr[i];\n }\n }\n // Push the last range\n result.push(start === end ? `${start}` : `${start}-${end}`);\n\n return result.join(\", \");\n }\n}\n","import { CurrencyPipe } from \"@angular/common\";\nimport {\n ClickableItem,\n IActionItemTypeWithStringIconOrTextAction,\n IconCellActionKey,\n ICustomSingleSelect,\n IDropdownConfigForGT,\n ISvgOrIconTypeInGTTable,\n ITimeInputData,\n} from \"@annalib/anna-core\";\nimport { SingleSelectIdText } from \"@annalib/anna-design-components-lib\";\nimport { cloneDeep } from \"lodash-es\";\n\nimport { SpotStatusFromBackend } from \"../constants/spots-approval.constant\";\nimport { GenericSpotsApprovalService } from \"../services/generic-spots-approval.service\";\nimport { ISpotInformationResponse } from \"./anna-revisions-backend.model\";\nimport { ESTIMATEPRIORITIES } from \"./anna-revisions-enums.model\";\n\nexport interface IRevenueClassList {\n id: number;\n stationId: number;\n code: string;\n description: string;\n display: string;\n placerPriority: number;\n isRequiredForPoliticalRate: boolean;\n}\n\nexport interface IAdditionalInformationForSpot extends ISpotInformationResponse {\n DisplayRate: string;\n firstTwoEstimatePrioritiesForIMPSMetric: string;\n lastTwoEstimatePrioritiesForIMPSMetric: string;\n firstTwoEstimatePrioritiesForRTGMetric: string;\n lastTwoEstimatePrioritiesForRTGMetric: string;\n}\n\nexport class ClickableItemForOSSpotsTableActionColumn extends ClickableItem {\n public override name: \"Remove\";\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\n constructor(\n typeOfActionLinkForGt: any,\n name: \"Remove\",\n className: string,\n showTooltip: boolean,\n tooltipData: { key: string; value: string },\n ) {\n super(typeOfActionLinkForGt, name, className, showTooltip, tooltipData);\n }\n}\nexport interface IPreemptionSpotInformationForEdit extends IAdditionalInformationForSpot {\n SellerAndBuyerLine: string;\n SpotTypeActionKey: ISvgOrIconTypeInGTTable[];\n ActionKeyForEdit?: ClickableItemForOSSpotsTableActionColumn[];\n}\n\nexport class CheckBoxName {\n static checkedCheckBox = \"mi mdi-check-box check-box\";\n static blankCheckBox = \"mi mdi-check-box-outline-blank check-box\";\n static intermediateCheckBox = \"mi mdi-minus-box\";\n}\nexport interface IOSPESpotsData extends IPreemptionSpotInformationForEdit {\n IsSelected: boolean;\n}\nexport interface IMakeGoodSpotInformationForEdit extends IAdditionalInformationForSpot {\n TimeInputData: ITimeInputData;\n OriginalRating: number;\n OriginalBuyerProgramName: string;\n OriginalImpressions: number;\n DisplayStatusActionKey: StatusColumnIconActionForSpotsApprovalEdit[];\n ActionKeyForEdit: ClickableItemForMGTableActionColumn[];\n DisplayStatusTooltipKey: any;\n // DisplayRateActionKey: IconActionForSpotsApprovalEdit[];\n // DisplayRateTooltipKey: any;\n OfferedRatingOrImpressionsColumn: IEditableInput;\n OfferedRatingOrImpressionsColumnIcons: any[];\n OfferedRateForInputBoxColumn: IEditableInput;\n OfferedRateColumnErrorIcons: {\n id: string;\n showIcon?: boolean;\n showSvgIcon?: boolean;\n iconClass?: string;\n iconTooltip?: string;\n tooltipMessage?: string;\n showLink?: boolean;\n linkText?: string;\n linkClass?: string;\n }[];\n ChangedNewRate: number;\n DisplayStatus: \"Offered\" | any;\n BuyerProgramNameColumn: IEditableInput;\n gtClass: string;\n MeetsBizRules: \"Yes\" | \"No\";\n ICActionKey: IconCellActionKey[];\n ICTooltipKey: string;\n PoliticalrateViolationInfo: {\n TargetLur: string;\n InventoryCode: string;\n PoliticalWindowName: string;\n OfferedRate: string;\n } | null;\n RevenueClassSelectedByUser: string;\n readonly OriginalRevenueClassForComparision: string;\n readonly OriginalRateForComparision: number;\n readonly OriginalStartTimeForComparision: string;\n readonly OriginalEndTimeForComparision: string;\n RevenueClassDropdownConfigForGT: IDropdownConfigForGT[];\n AutoAssignablePriorityCodeFromBE: { id: number; text: string };\n}\n\nexport class ClickableItemForMGTableActionColumn extends ClickableItem {\n public override name: \"Undo\" | \"Remove\";\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\n constructor(\n typeOfActionLinkForGt: any,\n name: \"Undo\" | \"Remove\",\n className: string,\n showTooltip: boolean,\n tooltipData: { key: string; value: string },\n ) {\n super(typeOfActionLinkForGt, name, className, showTooltip, tooltipData);\n }\n}\n\nexport class ClickableItemForAvailableTableActionColumn extends ClickableItem {\n public override name: \"Add\";\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\n constructor(\n typeOfActionLinkForGt: any,\n name: \"Add\",\n className: string,\n showTooltip: boolean,\n tooltipData: { key: string; value: string },\n ) {\n super(typeOfActionLinkForGt, name, className, showTooltip, tooltipData);\n }\n}\n\nexport interface IADUSpotInformationForEdit extends IAdditionalInformationForSpot {\n index: number;\n ActionKeyForEdit: ClickableItemForMGTableActionColumn[];\n BuyerProgramNameColumn: IEditableInput;\n DisplayStatus: \"Offered\" | \"Added\" | \"Removed\" | \"Created\";\n hideDisplayStatusTd: boolean;\n DisplayStatusRowspan: number;\n}\n\nexport interface IAvailableSpotInformationForEdit extends IAdditionalInformationForSpot {\n ActionKeyForEdit: ClickableItemForAvailableTableActionColumn[];\n}\n\nexport interface IAdditionInformationForRotators extends IAvailableSpotInformationForEdit {\n InventoryAvailability: \"Booked\" | \"Available\";\n ShowBookedSpotLink: boolean;\n IsFreeFlowGroup: boolean;\n}\n\nexport interface IAdditionInformationForFreeFlowSpot extends IAdditionInformationForRotators {\n InventoryActionKey: IActionItemTypeWithStringIconOrTextAction;\n}\n\nexport enum TypeOfActionLinkForGtEnumSpotsApprovalEdit {\n ACTION_COLUMN_CLICK = \"ACTION_COLUMN_CLICK\",\n}\n\nexport interface IEditableInput {\n type: \"INPUT\" | \"STRING\";\n value: string;\n disabled?: boolean;\n className?: string;\n hasError?: boolean;\n placeholder?: string;\n showIcon?: boolean;\n iconClass?: string;\n iconTooltip?: string;\n charactersToRestrict: any[];\n}\n\nexport class EditGroupPayload {\n GroupTableId: number[];\n Duration: number;\n TrafficOrderId: string;\n StationId: number;\n}\n\nexport interface IValidateEditedOffersPayload {\n PreemptionSpots: IPreemptionSpotInformationForEdit[];\n MakeGoodSpots: IMakeGoodSpotInformationForEdit[];\n ModifiedSpots: IMakeGoodSpotInformationForEdit[];\n NewOffers: IMakeGoodSpotInformationForEdit[];\n BizRulesFromDb: any; // Only for BE purpose\n IsCpm: boolean;\n OrderId: string;\n StationId: number;\n SpDayparts: string[];\n IsFreeFlowGroup: boolean;\n BroadCastTime: string;\n}\n\nexport interface IValidateEditedOffersResponse {\n RateViolation: { IsGreater: boolean; IsLesser: boolean };\n RatingViolation: { IsGreater: boolean; IsLesser: boolean };\n MaxMGSpotViolation: { IsViolated: boolean; MaxCount: number };\n MinGrpPerSpotViolation: { SpotId: string; Rate: number; TargetLur: number; MinimumRating: number }[];\n LurViolated: {\n SpotId: string;\n Rate: number;\n TargetLur: number;\n InventoryCode: string;\n PoliticalWindowName: string;\n AutoAssignablePriority: string;\n }[];\n TimeViolation: string[];\n SpotsWithNewCost: { SpotId: string; Rate: number; TargetLur: number }[];\n InventoryViolation: string[];\n MaxSpotPerDayStripViolation: string[];\n MaxSpotPerWeekStripViolation: string[];\n}\n\nexport interface ISaveEditedOffersPayload {\n PreemptionSpots: IPreemptionSpotInformationForEdit[];\n ModifiedSpots: IMakeGoodSpotInformationForEdit[];\n RemovedSpots: IMakeGoodSpotInformationForEdit[];\n ANNANewOffers: IMakeGoodSpotInformationForEdit[];\n FreeFlowOffers: IMakeGoodSpotInformationForEdit[];\n UndoSpots: IMakeGoodSpotInformationForEdit[];\n ProgramChangeSpots: IMakeGoodSpotInformationForEdit[];\n UnmodifiedSpots: IMakeGoodSpotInformationForEdit[];\n ReofferComment: string;\n IsFreeFlowGroup: boolean;\n IsNoRevision: boolean;\n StationId: number;\n BuyerOrderId: string;\n EditedBy: string;\n IsCpm: boolean;\n TgId: number;\n IsReoffer: boolean;\n IsBadlyBehavedGroup: boolean;\n}\n\nexport interface FreeFlowSpotsPayload {\n OrderId: string;\n StationId: number;\n StartDate: string;\n EndDate: string;\n Duration: number;\n TgId: number;\n}\n\nexport interface EditMakeGoodGroupNewPayload {\n GroupId: string;\n Duration: number;\n StationId: number;\n TrafficOrderId: string;\n}\n\nexport class IconActionForSpotsApprovalEdit implements IActionItemTypeWithStringIconOrTextAction {\n id: any = 0;\n data: string;\n iconClass: string = \"mdi mdi-alert-octagon\";\n showIcon: boolean = false;\n disabledIcon: boolean = false;\n showTooltip: boolean = false;\n typeOfData: \"STRING\" | \"ICON_TEXT_ACTION\";\n additionalTextBeforeLink: string;\n disableTooltip: boolean = false;\n tooltipData: any = null;\n tooltipClass: string;\n additionalTextClass: string;\n showLink?: boolean = false;\n constructor(\n text: string,\n tooltipMessage: string,\n additionalTextClass: string,\n id: string,\n showLink: boolean = false,\n linkText?: string,\n ) {\n this.additionalTextBeforeLink = text;\n this.id = id;\n this.additionalTextClass = additionalTextClass || \"\";\n if (tooltipMessage) {\n this.showIcon = true;\n this.showTooltip = true;\n this.tooltipData = [\n {\n key: tooltipMessage,\n value: null,\n },\n ];\n }\n this.showLink = showLink;\n this.data = linkText;\n }\n}\n\nexport type MGTableStatusTypes = \"Offered\" | \"Added\" | \"Removed\";\nexport type MGTableActionTypes = \"Remove\" | \"Undo\" | \"Add\";\n\nexport class TotalRowForOfferedmadeGoodEditTable {\n totalRTG: number = 0;\n totalIMPS: number = 0;\n totalOfferedRateForDisplay: string;\n message: string;\n constructor(data: IMakeGoodSpotInformationForEdit[]) {\n let totalOfferedMGRowCount: number = 0;\n let totalRate: number = 0;\n data.forEach((row: IMakeGoodSpotInformationForEdit) => {\n if (row.DisplayStatusActionKey[0].additionalTextBeforeLink !== \"Removed\") {\n totalOfferedMGRowCount += 1;\n // totalRate += +row.ChangedNewRate ? +row.ChangedNewRate : 0;\n const offeredRatingOrImpressionValue = row.OfferedRatingOrImpressionsColumn\n ? +row.OfferedRatingOrImpressionsColumn.value\n : 0;\n const offeredRate =\n row?.OfferedRateForInputBoxColumn?.value &&\n row.OfferedRateForInputBoxColumn.value !== \"-\" &&\n row?.OfferedRateForInputBoxColumn?.value !== \"\"\n ? +row.OfferedRateForInputBoxColumn.value\n : 0;\n totalRate += offeredRate;\n this.totalRTG += offeredRatingOrImpressionValue;\n this.totalIMPS += offeredRatingOrImpressionValue;\n }\n });\n this.totalOfferedRateForDisplay = `$${GenericSpotsApprovalService.GetRoundedValueWithUnitsWithMathRound(totalRate)}`;\n this.message = `TOTAL OFFERED MAKEGOODS: ${totalOfferedMGRowCount}`;\n }\n}\n\nexport class StatusColumnIconActionForSpotsApprovalEdit extends IconActionForSpotsApprovalEdit {\n constructor(text: MGTableStatusTypes, toolipMessage: string, additionaltextClass: string) {\n super(text, toolipMessage, additionaltextClass, \"offeredMGStatusAction\");\n }\n}\n\nexport class MakeGoodSpotInformationForEdit {\n OriginalRating: number;\n OriginalImpressions: number;\n OriginalBuyerProgramName: string;\n ActionKeyForEdit: ClickableItemForMGTableActionColumn[];\n DisplayStatus: \"Removed\" | \"Added\" | \"Offered\" | any;\n DisplayStatusActionKey: StatusColumnIconActionForSpotsApprovalEdit[];\n DisplayStatusTooltipKey: any;\n // DisplayRateActionKey: IconActionForSpotsApprovalEdit[];\n // DisplayRateTooltipKey: any;\n OfferedRatingOrImpressionsColumn: IEditableInput;\n OfferedRatingOrImpressionsColumnIcons: any[];\n\n OfferedRateForInputBoxColumn: IEditableInput;\n OfferedRateColumnErrorIcons: {\n id: string;\n showIcon?: boolean;\n showSvgIcon?: boolean;\n iconClass?: string;\n iconTooltip?: string;\n tooltipMessage?: string;\n showLink?: boolean;\n linkText?: string;\n }[];\n\n BuyerProgramNameColumn: IEditableInput;\n ChangedNewRate: number;\n gtClass: string;\n MeetsBizRules: \"Yes\" | \"No\";\n ICActionKey: IconCellActionKey[];\n ICTooltipKey: string;\n PoliticalrateViolationInfo: {\n TargetLur: string;\n InventoryCode: string;\n PoliticalWindowName: string;\n OfferedRate: string;\n } | null;\n RevenueClassSelectedByUser: string;\n readonly OriginalRevenueClassForComparision: string;\n readonly OriginalRateForComparision: number;\n readonly OriginalStartTimeForComparision: string;\n readonly OriginalEndTimeForComparision: string;\n RevenueClassDropdownConfigForGT: IDropdownConfigForGT[] = [];\n AutoAssignablePriorityCodeFromBE: { id: number; text: string } = null;\n TimeInputData: ITimeInputData;\n\n constructor(\n data: IAdditionalInformationForSpot,\n showImpression: boolean,\n currencyPipe: CurrencyPipe,\n revenueClassList: IRevenueClassList[],\n decimalPlacesCountAllowedInRatesMgTable: number = 0\n ) {\n this.OriginalBuyerProgramName = cloneDeep(data.BuyerProgramName);\n this.OriginalImpressions = cloneDeep(data.Impressions);\n this.OriginalRating = cloneDeep(data.Ratings);\n this.MeetsBizRules = data.IsFreeFlowGroup ? \"No\" : \"Yes\";\n this.BuyerProgramNameColumn = new EditableInput(data.BuyerProgramName, \"INPUT\", \"Add Buyer Program Name\");\n\n this.ICActionKey = [new IconCellActionKey(\"IC\", false, null, true, false)];\n this.ICTooltipKey = \"\";\n\n this.OfferedRateForInputBoxColumn = new EditableInput(\n data?.Rate?.toString() ?? \"-\",\n \"INPUT\",\n \"\",\n false,\n \"rate-input-box\",\n false,\n decimalPlacesCountAllowedInRatesMgTable,\n true,\n decimalPlacesCountAllowedInRatesMgTable === 0 ? [\".\", \"`\"] : [\"`\"],\n );\n this.OfferedRateColumnErrorIcons = [];\n\n const iconAndTooltips: any[] = new IconActionForOfferedRTGOrIMPSColumn(data, showImpression ? \"CPM\" : \"CPP\")\n .tooltipObjList;\n\n this.OfferedRatingOrImpressionsColumn = new EditableInput(\n showImpression ? data.Impressions.toString() : data.Ratings.toString(),\n \"INPUT\",\n \"\",\n false,\n iconAndTooltips && iconAndTooltips?.length > 0 ? \"less-wide-input\" : \"\",\n false,\n showImpression ? 1 : 2,\n true,\n [\"`\"],\n );\n\n this.OfferedRatingOrImpressionsColumnIcons = new IconsAndTooltips(iconAndTooltips).iconsAndTooltips;\n\n let status: \"Removed\" | \"Added\" | \"Offered\";\n if (data.IsRemovedFromGroup) {\n status = \"Removed\";\n } else if (data.IsAddedInGroup) {\n status = \"Added\";\n } else {\n status = \"Offered\";\n }\n this.DisplayStatusActionKey = [new StatusColumnIconActionForSpotsApprovalEdit(status, null, \"\")];\n this.DisplayStatusTooltipKey = this.DisplayStatusActionKey[0]?.tooltipData;\n this.DisplayStatus = this.DisplayStatusActionKey[0]?.additionalTextBeforeLink;\n\n this.ChangedNewRate = null;\n // let DisplayRate = data.Rate ? (currencyPipe.transform(data.Rate, 'USD', 'symbol', '1.0-0')) : '-';\n // const { DisplayRate } = data;\n\n // this.DisplayRateActionKey = [new IconActionForSpotsApprovalEdit(DisplayRate, null, \"\", \"LURViolationView\")];\n // this.DisplayRateTooltipKey = this.DisplayRateActionKey[0]?.tooltipData;\n\n this.ActionKeyForEdit = [];\n const actionText: \"Remove\" | \"Undo\" = data.IsRemovedFromGroup ? \"Undo\" : \"Remove\";\n this.ActionKeyForEdit.push(\n new ClickableItemForMGTableActionColumn(\n TypeOfActionLinkForGtEnumSpotsApprovalEdit.ACTION_COLUMN_CLICK,\n actionText,\n \"action-link\",\n false,\n null,\n ),\n );\n this.gtClass = data.IsRemovedFromGroup ? \"removed-row\" : \"\";\n this.RevenueClassDropdownConfigForGT.push(\n new RevenueClassDropdownConfigForGT(revenueClassList, data.RevenueClass),\n );\n this.RevenueClassSelectedByUser = this.RevenueClassDropdownConfigForGT[0].selectedItem.text;\n this.OriginalRevenueClassForComparision = cloneDeep(this.RevenueClassSelectedByUser);\n this.OriginalRateForComparision = cloneDeep(data.Rate);\n this.OriginalStartTimeForComparision = cloneDeep(data.StartTime);\n this.OriginalEndTimeForComparision = cloneDeep(data.EndTime);\n this.AutoAssignablePriorityCodeFromBE = null;\n this.TimeInputData = {\n id: data.UniqueId,\n startTime: data.StartTime,\n endTime: data.EndTime,\n showAsInput: data.AllowTimeEdit,\n disableInput: false,\n selectedTimeAsAString: data.Time,\n }\n }\n}\n\nexport class RevenueClassDropdownConfigForGT {\n itemList: SingleSelectIdText[] = [];\n selectedItem: SingleSelectIdText = null;\n dropdownConfig: ICustomSingleSelect = null;\n constructor(revClassList: { id: number; code: string }[], selectedRevClass: string) {\n revClassList.forEach((revClass: { id: number; code: string }) => {\n this.itemList.push({\n id: revClass.id,\n text: revClass.code,\n });\n });\n\n const selectedRevClassId = this.itemList.find(\n (x) => x.text.toLowerCase() === selectedRevClass?.toLowerCase(),\n )?.id;\n this.selectedItem = { id: selectedRevClassId, text: selectedRevClass };\n this.dropdownConfig = {\n showSearchBar: false,\n placeholder: \"Select Rev class\",\n classes: \"\",\n position: \"BOTTOM\",\n maxHeightOfList: 180,\n minHeightOfList: 30,\n };\n }\n}\n\nexport class IconActionForOfferedRTGOrIMPSColumn {\n tooltipObjList: {\n showIcon: boolean;\n showSvgIcon: boolean;\n iconClass?: string;\n iconTooltip?: string;\n svgOrIconName?: string;\n svgOrIconTooltipMsg?: string;\n }[] = null;\n\n constructor(data: IAdditionalInformationForSpot, orderMetric: \"CPP\" | \"CPM\") {\n const badSpotTooltipCondition = data.HighlightRatingOrImpressions;\n\n const metricForTooltip = orderMetric === \"CPP\" ? \"RTG\" : \"IMPS\";\n const projectedRtgOrImps = orderMetric === \"CPP\" ? data.ProjectedRatings : data.ProjectedImpressions;\n let badSpotTooltipMsgForRtg = \"\";\n if (badSpotTooltipCondition) {\n badSpotTooltipMsgForRtg = `The Booked ${metricForTooltip} is greater than 120% of the Projected ${metricForTooltip} value of ${projectedRtgOrImps}`;\n }\n if (badSpotTooltipCondition && data.IsRatingImpressionBumped) {\n badSpotTooltipMsgForRtg += \" <br/> \";\n }\n if (data.IsRatingImpressionBumped) {\n badSpotTooltipMsgForRtg += ` The ${metricForTooltip} of the offer has been bumped for this Program Change`;\n }\n\n const isMgOrAduStatus =\n data.DisplaySpotType === SpotStatusFromBackend.MAKEGOOD_OFFERED ||\n data.DisplaySpotType === SpotStatusFromBackend.MAKEGOOD_REJECTED ||\n data.DisplaySpotType === SpotStatusFromBackend.MAKEGOOD_AUTO_APPROVED ||\n data.DisplaySpotType === SpotStatusFromBackend.ADU_OFFERED ||\n data.DisplaySpotType === SpotStatusFromBackend.ADU_REJECTED ||\n data.DisplaySpotType === SpotStatusFromBackend.ADU_AUTO_APPROVED;\n\n const metric: \"rating\" | \"IMPS\" = orderMetric === \"CPP\" ? \"rating\" : \"IMPS\";\n const valueToUse: number = metric === \"IMPS\" ? data.ImpressionUsedToSolve : data.RatingUsedToSolve;\n\n const solvedTypeIconMsgObjForRtg = GenericSpotsApprovalService.returnTooltipAndIconForSolvedType(\n data.SolvedType,\n metric,\n valueToUse,\n );\n\n this.tooltipObjList = [\n {\n showIcon: false,\n showSvgIcon: true,\n svgOrIconName: badSpotTooltipCondition ? \"INFORMATION_OUTLINE_ICON\" : null,\n svgOrIconTooltipMsg: badSpotTooltipCondition ? badSpotTooltipMsgForRtg : null,\n },\n {\n showIcon: false,\n showSvgIcon: true,\n svgOrIconName: isMgOrAduStatus ? solvedTypeIconMsgObjForRtg.iconClass : null,\n svgOrIconTooltipMsg: isMgOrAduStatus ? solvedTypeIconMsgObjForRtg.tooltipData : null,\n },\n ];\n }\n}\n\nexport class AdditionalInformationForSpot {\n DisplayRate: string;\n DisplayWeeklyAUR: string;\n DisplayLength: string;\n DisplayRevenueClass: string;\n firstTwoEstimatePrioritiesForIMPSMetric: string;\n lastTwoEstimatePrioritiesForIMPSMetric: string;\n firstTwoEstimatePrioritiesForRTGMetric: string;\n lastTwoEstimatePrioritiesForRTGMetric: string;\n\n constructor(\n data: IMakeGoodSpotInformationForEdit | IADUSpotInformationForEdit | ISpotInformationResponse,\n estimatePriorities: ESTIMATEPRIORITIES[],\n currencyPipe?: CurrencyPipe,\n ) {\n this.DisplayRate = data.DisplayRate;\n this.DisplayLength = data.Length ? data.Length : \"-\";\n this.DisplayWeeklyAUR = data.DisplayWeeklyAUR;\n this.DisplayRevenueClass = data.RevenueClass ? data.RevenueClass : \"-\";\n\n const estimatePrioritiesData: string[] = GenericSpotsApprovalService.returnEstimatePriorities(\n data,\n estimatePriorities,\n );\n this.firstTwoEstimatePrioritiesForRTGMetric = estimatePrioritiesData[0];\n this.lastTwoEstimatePrioritiesForRTGMetric = estimatePrioritiesData[1];\n this.firstTwoEstimatePrioritiesForIMPSMetric = estimatePrioritiesData[2];\n this.lastTwoEstimatePrioritiesForIMPSMetric = estimatePrioritiesData[3];\n }\n}\n\nexport class ADUSpotInformationForEdit {\n ActionKeyForEdit: ClickableItemForMGTableActionColumn[];\n BuyerProgramNameColumn: IEditableInput;\n DisplayStatus: \"Offered\" | \"Added\" | \"Removed\" | \"Created\";\n gtClass: string;\n hideDisplayStatusTd: boolean = false;\n DisplayStatusRowspan: number = 1;\n constructor(BuyerProgramName: string,\n action: \"Remove\" | \"Undo\",\n actionColumnClass: string,\n status: \"Offered\" | \"Added\" | \"Removed\" | \"Created\",\n hideDisplayStatusTd: boolean = false,\n DisplayStatusRowspan: number = 1\n ) {\n this.ActionKeyForEdit = [];\n this.ActionKeyForEdit.push(\n new ClickableItemForMGTableActionColumn(\n TypeOfActionLinkForGtEnumSpotsApprovalEdit.ACTION_COLUMN_CLICK,\n action,\n actionColumnClass,\n false,\n null,\n ),\n );\n this.BuyerProgramNameColumn = new EditableInput(BuyerProgramName, \"INPUT\", \"Add Buyer Program Name\");\n this.DisplayStatus = status;\n this.hideDisplayStatusTd = hideDisplayStatusTd;\n this.DisplayStatusRowspan = DisplayStatusRowspan;\n }\n}\n\nexport class EditableInput {\n type: \"INPUT\" | \"STRING\" = \"STRING\";\n value: string;\n disabled?: boolean;\n className?: string;\n hasError?: boolean;\n placeholder?: string;\n allowSpecialCharacters: boolean = true;\n maxDecimalPointsAllowed: number = 2;\n isDecimalPointCheckRequired: boolean = false;\n charactersToRestrict: any[];\n\n constructor(\n value: string,\n type: \"INPUT\" | \"STRING\",\n placeholder: string,\n disabled: boolean = false,\n className: string = \"\",\n allowSpecialCharacters = true,\n maxDecimalPointsAllowed = 2,\n isDecimalPointCheckRequired = false,\n charactersToRestrict: string[] = null,\n ) {\n this.type = type;\n this.allowSpecialCharacters = allowSpecialCharacters;\n this.maxDecimalPointsAllowed = maxDecimalPointsAllowed;\n this.isDecimalPointCheckRequired = isDecimalPointCheckRequired;\n this.value = value;\n this.hasError = value === \"\";\n this.placeholder = placeholder;\n this.disabled = disabled;\n this.className = className;\n this.disabled = disabled;\n this.charactersToRestrict =\n charactersToRestrict || GenericSpotsApprovalService.charactersToRestrictInBuyerProgramNameColumn;\n }\n}\n\nexport class IconsAndTooltips {\n iconsAndTooltips: {\n showIcon: boolean;\n showSvgIcon: boolean;\n iconClass?: string;\n iconTooltip?: string;\n svgOrIconName?: string;\n svgOrIconTooltipMsg?: string;\n }[];\n constructor(\n iconsAndTooltips: {\n showIcon: boolean;\n showSvgIcon: boolean;\n iconClass?: string;\n iconTooltip?: string;\n svgOrIconName?: string;\n svgOrIconTooltipMsg?: string;\n }[] = null,\n ) {\n this.iconsAndTooltips = cloneDeep(iconsAndTooltips);\n }\n}\n\nexport interface SpotDetailsForOtherSpotsTablePopup {\n OrderId: string;\n AdvertiserName: string;\n Spot: string;\n Rate: string;\n ActualRate: number;\n Rating: number;\n Impressions: number;\n AirDateTime: string;\n AirDate: string;\n Length: string;\n ActualLength: number;\n SpotStatus: string;\n}\n","import { Injectable } from \"@angular/core\";\nimport { IGtTableHeader } from \"@annalib/anna-core\";\n\nimport { OfferedMGOrADUTableKeys } from \"../constants/create-or-edit-offers.constant\";\nimport { ESTIMATEPRIORITIES } from \"../models/anna-revisions-enums.model\";\nimport { GenericSpotsApprovalService } from \"./generic-spots-approval.service\";\n\n@Injectable({\n providedIn: \"root\",\n})\nexport class CreateOrEditOffersService {\n estimatePriorityAndGuidelinesTextMap = {\n RollingEstimate: \"Anna Estimate\",\n StationEstimate: \"Station Estimate\",\n BookedRTG: \"Buyer\",\n AverageRTG: \"Booked Avg\",\n };\n\n constructor(private spotsApprovalService: GenericSpotsApprovalService) { }\n\n getPreemptionTableHeaders(showImpressions: boolean, estimatePriority: ESTIMATEPRIORITIES[]): IGtTableHeader[] {\n return [\n {\n headerInfo: [\n {\n name: \"STATUS\",\n objectKey: \"DisplaySpotType\",\n typeOfHeaderData: \"STRING\",\n showTooltipIcon: false,\n actionKey: \"SpotTypeActionKey\",\n typeOfBodyData: \"SVG_ICON\",\n },\n {\n name: \"SELL LINE / BUY LINE\",\n objectKey: \"SellerAndBuyerLine\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n ],\n visible: true,\n width: \"160px\",\n },\n {\n headerInfo: [\n {\n name: \"WEEK\",\n objectKey: \"WeekStartDate\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n {\n name: \"DAY\",\n objectKey: \"WeekDay\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n ],\n visible: true,\n width: \"82px\",\n },\n {\n headerInfo: [\n {\n name: \"LEN\",\n objectKey: \"Length\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n ],\n visible: true,\n width: \"52px\",\n },\n {\n headerInfo: [\n {\n name: \"BUYER PROGRAM\",\n objectKey: \"BuyerProgramName\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n {\n name: \"INVENTORY CODE\",\n objectKey: \"InventoryCode\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n ],\n visible: true,\n width: \"148px\",\n },\n {\n headerInfo: [\n {\n name: \"SELLER PROGRAM\",\n objectKey: \"SellerProgramName\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n ],\n visible: true,\n width: \"130px\",\n },\n {\n headerInfo: [\n {\n name: \"TIME\",\n objectKey: \"Time\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n ],\n visible: true,\n width: \"80px\",\n },\n {\n headerInfo: [\n {\n name: \"BOOKED RATE\",\n objectKey: \"DisplayRate\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n ],\n visible: true,\n width: \"148px\",\n },\n {\n headerInfo: [\n {\n name: showImpressions ? \"BOOKED IMP('000)\" : \"BOOKED RTG\",\n objectKey: showImpressions ? \"Impressions\" : \"Ratings\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n // {\n // name: showImpressions ? PreemptionTableHeaders.BOOKED_AVERAGE_IMPS_HEADER : PreemptionTableHeaders.BOOKED_AVERAGE_RATING_HEADER,\n // objectKey: showImpressions ? \"WeeklyAUImpressions\" : \"WeeklyAURatings\",\n // typeOfHeaderData: 'STRING',\n // typeOfBodyData: 'STRING',\n // showTooltipIcon: false,\n // },\n ],\n visible: true,\n width: \"148px\",\n },\n {\n headerInfo: [\n {\n name: showImpressions\n ? `${this.spotsApprovalService.estimatePriorityKeyColumnNameMapForIMPSMetric[\n estimatePriority[0]\n ]\n } | ${this.spotsApprovalService.estimatePriorityKeyColumnNameMapForIMPSMetric[\n estimatePriority[1]\n ]\n }`\n : `${this.spotsApprovalService.estimatePriorityKeyColumnNameMapForRTGMetric[\n estimatePriority[0]\n ]\n } | ${this.spotsApprovalService.estimatePriorityKeyColumnNameMapForRTGMetric[\n estimatePriority[1]\n ]\n }`,\n objectKey: showImpressions\n ? \"firstTwoEstimatePrioritiesForIMPSMetric\"\n : \"firstTwoEstimatePrioritiesForRTGMetric\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n {\n name: showImpressions\n ? `${this.spotsApprovalService.estimatePriorityKeyColumnNameMapForIMPSMetric[\n estimatePriority[2]\n ]\n } | ${this.spotsApprovalService.estimatePriorityKeyColumnNameMapForIMPSMetric[\n estimatePriority[3]\n ]\n }`\n : `${this.spotsApprovalService.estimatePriorityKeyColumnNameMapForRTGMetric[\n estimatePriority[2]\n ]\n } | ${this.spotsApprovalService.estimatePriorityKeyColumnNameMapForRTGMetric[\n estimatePriority[3]\n ]\n }`,\n objectKey: showImpressions\n ? \"lastTwoEstimatePrioritiesForIMPSMetric\"\n : \"lastTwoEstimatePrioritiesForRTGMetric\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n ],\n visible: true,\n width: \"270px\",\n },\n {\n headerInfo: [\n {\n name: \"DP\",\n objectKey: \"Daypart\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n {\n name: \"REV CLASS\",\n objectKey: \"RevenueClass\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n ],\n visible: true,\n width: \"74px\",\n },\n ];\n }\n\n getOSPETableHeaders(showImpressions: boolean, estimatePriority: ESTIMATEPRIORITIES[]): IGtTableHeader[] {\n const tableHeaders = this.getPreemptionTableHeaders(showImpressions, estimatePriority);\n tableHeaders.push({\n headerInfo: [\n {\n name: \"ACTION\",\n objectKey: \"ActionForEdit\",\n typeOfHeaderData: \"STRING\",\n actionKey: \"ActionKeyForEdit\",\n typeOfBodyData: \"CLICKABLE_DATA\",\n showTooltipIcon: false,\n },\n ],\n visible: true,\n width: \"82px\",\n });\n return tableHeaders;\n }\n\n getOfferedMakegoodsTableHeaders(\n showImpressions: boolean,\n estimatePriority: ESTIMATEPRIORITIES[],\n enableRevenueClassEdit: boolean,\n ): IGtTableHeader[] {\n return [\n {\n headerInfo: [\n {\n name: \"STATUS\",\n objectKey: \"DisplayStatus\",\n typeOfHeaderData: \"STRING\",\n actionKey: \"DisplayStatusActionKey\",\n tooltipKey: \"DisplayStatusTooltipKey\",\n typeOfBodyData: \"STRING___ICON_OR_TEXT_ACTION\",\n showTooltipIcon: true,\n isSortRequired: [true],\n isFilterRequired: [true],\n filter: \"CHECKBOX\",\n filterSortObjectKeys: [\"DisplayStatus\"],\n },\n ],\n visible: true,\n width: \"70px\",\n },\n {\n headerInfo: [\n {\n name: \"WEEK\",\n objectKey: \"WeekStartDate\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n {\n name: \"DAY\",\n objectKey: \"WeekDay\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n ],\n visible: true,\n width: \"70px\",\n },\n {\n headerInfo: [\n {\n name: \"LEN\",\n objectKey: \"DisplayLength\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n ],\n visible: true,\n width: \"54px\",\n },\n {\n headerInfo: [\n {\n name: \"BUYER PROGRAM\",\n objectKey: OfferedMGOrADUTableKeys.BUYER_PROGRAM_KEY,\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING_OR_INPUT\",\n showTooltipIcon: false,\n },\n {\n name: \"INVENTORY CODE\",\n objectKey: \"InventoryCode\",\n typeOfHeaderData: \"STRING\",\n actionKey: \"ICActionKey\",\n tooltipKey: \"ICTooltipKey\",\n typeOfBodyData: \"ICON_CELL\",\n showTooltipIcon: false,\n },\n ],\n visible: true,\n width: \"220px\",\n },\n {\n headerInfo: [\n {\n name: \"SELLER PROGRAM\",\n objectKey: \"SellerProgramName\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n ],\n visible: true,\n width: \"150px\",\n },\n {\n headerInfo: [\n {\n name: \"TIME\",\n objectKey: \"TimeInputData\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"TIME_INPUT\",\n showTooltipIcon: false,\n },\n ],\n visible: true,\n width: \"110px\",\n },\n {\n headerInfo: [\n // {\n // name: \"OFFERED RATE\",\n // objectKey: \"Rate\",\n // typeOfHeaderData: \"STRING\",\n // actionKey: \"DisplayRateActionKey\",\n // tooltipKey: \"DisplayRateTooltipKey\",\n // typeOfBodyData: \"STRING___ICON_OR_TEXT_ACTION\",\n // showTooltipIcon: false,\n // },\n {\n name: \"OFFERED RATE\",\n objectKey: OfferedMGOrADUTableKeys.OFFERED_RATE_KEY,\n typeOfHeaderData: \"STRING\",\n actionKey: \"OfferedRateColumnErrorIcons\",\n typeOfBodyData: \"STRING_OR_INPUT\",\n showTooltipIcon: false,\n },\n {\n name: \"BOOKED AVG. RATE\",\n objectKey: \"DisplayWeeklyAUR\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n ],\n visible: true,\n width: \"150px\",\n },\n {\n headerInfo: [\n {\n name: showImpressions ? \"OFFERED IMP('000)\" : \"OFFERED RTG\",\n objectKey: OfferedMGOrADUTableKeys.OFFERED_RATING_OR_IMPS_KEY,\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING_OR_INPUT\",\n actionKey: \"OfferedRatingOrImpressionsColumnIcons\",\n showTooltipIcon: false,\n },\n ],\n visible: true,\n width: showImpressions ? \"150px\" : \"130px\",\n },\n {\n headerInfo: [\n {\n name: showImpressions\n ? `${this.spotsApprovalService.estimatePriorityKeyColumnNameMapForIMPSMetric[\n estimatePriority[0]\n ]\n } | ${this.spotsApprovalService.estimatePriorityKeyColumnNameMapForIMPSMetric[\n estimatePriority[1]\n ]\n }`\n : `${this.spotsApprovalService.estimatePriorityKeyColumnNameMapForRTGMetric[\n estimatePriority[0]\n ]\n } | ${this.spotsApprovalService.estimatePriorityKeyColumnNameMapForRTGMetric[\n estimatePriority[1]\n ]\n }`,\n objectKey: showImpressions\n ? \"firstTwoEstimatePrioritiesForIMPSMetric\"\n : \"firstTwoEstimatePrioritiesForRTGMetric\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n {\n name: showImpressions\n ? `${this.spotsApprovalService.estimatePriorityKeyColumnNameMapForIMPSMetric[\n estimatePriority[2]\n ]\n } | ${this.spotsApprovalService.estimatePriorityKeyColumnNameMapForIMPSMetric[\n estimatePriority[3]\n ]\n }`\n : `${this.spotsApprovalService.estimatePriorityKeyColumnNameMapForRTGMetric[\n estimatePriority[2]\n ]\n } | ${this.spotsApprovalService.estimatePriorityKeyColumnNameMapForRTGMetric[\n estimatePriority[3]\n ]\n }`,\n objectKey: showImpressions\n ? \"lastTwoEstimatePrioritiesForIMPSMetric\"\n : \"lastTwoEstimatePrioritiesForRTGMetric\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n ],\n visible: true,\n width: \"230px\",\n },\n {\n headerInfo: [\n {\n name: \"DP\",\n objectKey: \"Daypart\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n {\n name: \"REV CLASS\",\n objectKey: \"RevenueClassSelectedByUser\",\n actionKey: \"RevenueClassDropdownConfigForGT\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: enableRevenueClassEdit ? \"SINGLE_SELECT_DROPDOWN\" : \"STRING\",\n showTooltipIcon: false,\n },\n ],\n visible: true,\n width: \"155px\",\n },\n {\n headerInfo: [\n {\n name: \"MEETS BIZ RULES\",\n objectKey: \"BusinessRules\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n ],\n visible: true,\n width: \"110px\",\n },\n {\n headerInfo: [\n {\n name: \"ACTION\",\n objectKey: \"ActionForEdit\",\n typeOfHeaderData: \"STRING\",\n actionKey: \"ActionKeyForEdit\",\n typeOfBodyData: \"CLICKABLE_DATA\",\n showTooltipIcon: false,\n },\n ],\n visible: true,\n width: \"82px\",\n },\n ];\n }\n\n getOtherSpotsMeetingBizRulesTableHeaders(\n showImpressions: boolean,\n estimatePriority: ESTIMATEPRIORITIES[],\n ): IGtTableHeader[] {\n return [\n {\n headerInfo: [\n {\n name: \"WEEK\",\n objectKey: \"WeekStartDate\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: true,\n isSortRequired: [true],\n isFilterRequired: [true],\n filter: \"DATE\",\n filterSortObjectKeys: [\"ActualWeekStartDate\"],\n },\n {\n name: \"DAY\",\n objectKey: \"WeekDay\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: true,\n isSortRequired: [true],\n isFilterRequired: [true],\n filter: \"CHECKBOX\",\n filterSortObjectKeys: [\"WeekDay\"],\n },\n ],\n visible: true,\n width: \"82px\",\n },\n {\n headerInfo: [\n {\n name: \"LEN\",\n objectKey: \"DisplayLength\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: true,\n isSortRequired: [true],\n isFilterRequired: [true],\n filter: \"CHECKBOX\",\n filterSortObjectKeys: [\"DisplayLength\"],\n },\n ],\n visible: true,\n width: \"52px\",\n },\n {\n headerInfo: [\n {\n name: \"BUYER PROGRAM\",\n objectKey: \"BuyerProgramName\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: true,\n isSortRequired: [true, true],\n isFilterRequired: [true, true],\n filter: \"CHECKBOX\",\n filterSortObjectKeys: [\"BuyerProgramName\", \"InventoryCode\"],\n },\n {\n name: \"INVENTORY CODE\",\n objectKey: \"InventoryCode\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n ],\n visible: true,\n width: \"280px\",\n },\n {\n headerInfo: [\n {\n name: \"SELLER PROGRAM\",\n objectKey: \"SellerProgramName\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: true,\n isSortRequired: [true],\n isFilterRequired: [true],\n filter: \"CHECKBOX\",\n filterSortObjectKeys: [\"SellerProgramName\"],\n },\n ],\n visible: true,\n width: \"130px\",\n },\n {\n headerInfo: [\n {\n name: \"TIME\",\n objectKey: \"Time\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: true,\n isSortRequired: [true, true],\n isFilterRequired: [true, true],\n filter: \"TIME\",\n filterSortObjectKeys: [\"StartTime\", \"EndTime\"],\n },\n ],\n visible: true,\n width: \"80px\",\n },\n {\n headerInfo: [\n {\n name: \"BOOKED AVG. RATE\",\n objectKey: \"DisplayWeeklyAUR\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: true,\n isSortRequired: [true],\n isFilterRequired: [true],\n filter: \"SLIDER\",\n filterSortObjectKeys: [\"WeeklyAUR\"],\n },\n ],\n visible: true,\n width: \"140px\",\n },\n {\n headerInfo: [\n {\n name: showImpressions\n ? `${this.spotsApprovalService.estimatePriorityKeyColumnNameMapForIMPSMetric[\n estimatePriority[0]\n ]\n } | ${this.spotsApprovalService.estimatePriorityKeyColumnNameMapForIMPSMetric[\n estimatePriority[1]\n ]\n }`\n : `${this.spotsApprovalService.estimatePriorityKeyColumnNameMapForRTGMetric[\n estimatePriority[0]\n ]\n } | ${this.spotsApprovalService.estimatePriorityKeyColumnNameMapForRTGMetric[\n estimatePriority[1]\n ]\n }`,\n objectKey: showImpressions\n ? \"firstTwoEstimatePrioritiesForIMPSMetric\"\n : \"firstTwoEstimatePrioritiesForRTGMetric\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n {\n name: showImpressions\n ? `${this.spotsApprovalService.estimatePriorityKeyColumnNameMapForIMPSMetric[\n estimatePriority[2]\n ]\n } | ${this.spotsApprovalService.estimatePriorityKeyColumnNameMapForIMPSMetric[\n estimatePriority[3]\n ]\n }`\n : `${this.spotsApprovalService.estimatePriorityKeyColumnNameMapForRTGMetric[\n estimatePriority[2]\n ]\n } | ${this.spotsApprovalService.estimatePriorityKeyColumnNameMapForRTGMetric[\n estimatePriority[3]\n ]\n }`,\n objectKey: showImpressions\n ? \"lastTwoEstimatePrioritiesForIMPSMetric\"\n : \"lastTwoEstimatePrioritiesForRTGMetric\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n ],\n visible: true,\n width: \"270px\",\n },\n {\n headerInfo: [\n {\n name: \"DP\",\n objectKey: \"Daypart\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: true,\n isSortRequired: [true, true],\n isFilterRequired: [true, true],\n filter: \"CHECKBOX\",\n filterSortObjectKeys: [\"Daypart\", \"DisplayRevenueClass\"],\n },\n {\n name: \"REV CLASS\",\n objectKey: \"DisplayRevenueClass\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n ],\n visible: true,\n width: \"92px\",\n },\n {\n headerInfo: [\n {\n name: \"# BOOKED SPOTS\",\n objectKey: \"SpotCount\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: true,\n isSortRequired: [true],\n isFilterRequired: [false],\n filter: \"SLIDER\",\n filterSortObjectKeys: [\"SpotCount\"],\n tooltip: {\n iconPosition: \"right\",\n iconClass: \"mi mdi-info-outline edit-offer-header-info-icon\",\n name: \"\",\n tooltipPosition: \"bottom auto\",\n tooltipClass: \"Tooltip\",\n tooltipMessage:\n \"The #Booked Spots count refers to the spots that have been booked for the same week, time, and program, in this order.\",\n },\n },\n ],\n visible: true,\n width: \"130px\",\n },\n {\n headerInfo: [\n {\n name: \"ACTION\",\n objectKey: \"ActionForEdit\",\n typeOfHeaderData: \"STRING\",\n actionKey: \"ActionKeyForEdit\",\n typeOfBodyData: \"CLICKABLE_DATA\",\n showTooltipIcon: false,\n },\n ],\n visible: true,\n width: \"82px\",\n },\n ];\n }\n\n getOtherAvailableSpotsTableHeaders(\n showImpressions: boolean,\n estimatePriority: ESTIMATEPRIORITIES[],\n ): IGtTableHeader[] {\n return [\n {\n headerInfo: [\n {\n name: \"WEEK\",\n objectKey: \"WeekStartDate\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: true,\n isSortRequired: [true],\n isFilterRequired: [true],\n filter: \"DATE\",\n filterSortObjectKeys: [\"ActualWeekStartDate\"],\n },\n {\n name: \"DAY\",\n objectKey: \"WeekDay\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: true,\n isSortRequired: [true],\n isFilterRequired: [true],\n filter: \"CHECKBOX\",\n filterSortObjectKeys: [\"WeekDay\"],\n },\n ],\n visible: true,\n width: \"82px\",\n },\n {\n headerInfo: [\n {\n name: \"LEN\",\n objectKey: \"DisplayLength\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: true,\n isSortRequired: [true],\n isFilterRequired: [true],\n filter: \"CHECKBOX\",\n filterSortObjectKeys: [\"DisplayLength\"],\n },\n ],\n visible: true,\n width: \"52px\",\n },\n {\n headerInfo: [\n {\n name: \"BUYER PROGRAM\",\n objectKey: \"BuyerProgramName\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: true,\n isSortRequired: [true, true],\n isFilterRequired: [true, true],\n filter: \"CHECKBOX\",\n filterSortObjectKeys: [\"BuyerProgramName\", \"InventoryCode\"],\n },\n {\n name: \"INVENTORY CODE\",\n objectKey: \"InventoryCode\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n ],\n visible: true,\n width: \"280px\",\n },\n {\n headerInfo: [\n {\n name: \"SELLER PROGRAM\",\n objectKey: \"SellerProgramName\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: true,\n isSortRequired: [true],\n isFilterRequired: [true],\n filter: \"CHECKBOX\",\n filterSortObjectKeys: [\"SellerProgramName\"],\n },\n ],\n visible: true,\n width: \"130px\",\n },\n {\n headerInfo: [\n {\n name: \"TIME\",\n objectKey: \"Time\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: true,\n isSortRequired: [true, true],\n isFilterRequired: [true, true],\n filter: \"TIME\",\n filterSortObjectKeys: [\"StartTime\", \"EndTime\"],\n },\n ],\n visible: true,\n width: \"80px\",\n },\n {\n headerInfo: [\n {\n name: \"BOOKED AVG. RATE\",\n objectKey: \"DisplayWeeklyAUR\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: true,\n isSortRequired: [true],\n isFilterRequired: [true],\n filter: \"SLIDER\",\n filterSortObjectKeys: [\"WeeklyAUR\"],\n },\n ],\n visible: true,\n width: \"140px\",\n },\n {\n headerInfo: [\n {\n name: showImpressions\n ? `${this.spotsApprovalService.estimatePriorityKeyColumnNameMapForIMPSMetric[\n estimatePriority[0]\n ]\n } | ${this.spotsApprovalService.estimatePriorityKeyColumnNameMapForIMPSMetric[\n estimatePriority[1]\n ]\n }`\n : `${this.spotsApprovalService.estimatePriorityKeyColumnNameMapForRTGMetric[\n estimatePriority[0]\n ]\n } | ${this.spotsApprovalService.estimatePriorityKeyColumnNameMapForRTGMetric[\n estimatePriority[1]\n ]\n }`,\n objectKey: showImpressions\n ? \"firstTwoEstimatePrioritiesForIMPSMetric\"\n : \"firstTwoEstimatePrioritiesForRTGMetric\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n {\n name: showImpressions\n ? `${this.spotsApprovalService.estimatePriorityKeyColumnNameMapForIMPSMetric[\n estimatePriority[2]\n ]\n } | ${this.spotsApprovalService.estimatePriorityKeyColumnNameMapForIMPSMetric[\n estimatePriority[3]\n ]\n }`\n : `${this.spotsApprovalService.estimatePriorityKeyColumnNameMapForRTGMetric[\n estimatePriority[2]\n ]\n } | ${this.spotsApprovalService.estimatePriorityKeyColumnNameMapForRTGMetric[\n estimatePriority[3]\n ]\n }`,\n objectKey: showImpressions\n ? \"lastTwoEstimatePrioritiesForIMPSMetric\"\n : \"lastTwoEstimatePrioritiesForRTGMetric\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n ],\n visible: true,\n width: \"270px\",\n },\n {\n headerInfo: [\n {\n name: \"DP\",\n objectKey: \"Daypart\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: true,\n isSortRequired: [true, true],\n isFilterRequired: [true, true],\n filter: \"CHECKBOX\",\n filterSortObjectKeys: [\"Daypart\", \"DisplayRevenueClass\"],\n },\n {\n name: \"REV CLASS\",\n objectKey: \"DisplayRevenueClass\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n ],\n visible: true,\n width: \"92px\",\n },\n {\n headerInfo: [\n {\n name: \"INVENTORY\",\n objectKey: \"InventoryAvailability\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING___ICON_OR_TEXT_ACTION\",\n actionKey: \"InventoryActionKey\",\n showTooltipIcon: true,\n isSortRequired: [true],\n isFilterRequired: [true],\n filter: \"CHECKBOX\",\n filterSortObjectKeys: [\"InventoryAvailability\"],\n },\n ],\n visible: true,\n width: \"125px\",\n },\n {\n headerInfo: [\n {\n name: \"ACTION\",\n objectKey: \"ActionForEdit\",\n typeOfHeaderData: \"STRING\",\n actionKey: \"ActionKeyForEdit\",\n typeOfBodyData: \"CLICKABLE_DATA\",\n showTooltipIcon: false,\n },\n ],\n visible: true,\n width: \"82px\",\n },\n ];\n }\n\n getRotatorsTableHeaders(showImpressions: boolean, estimatePriority: ESTIMATEPRIORITIES[]): IGtTableHeader[] {\n return [\n {\n headerInfo: [\n {\n name: \"WEEK\",\n objectKey: \"WeekStartDate\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: true,\n isSortRequired: [true],\n isFilterRequired: [true],\n filter: \"DATE\",\n filterSortObjectKeys: [\"ActualWeekStartDate\"],\n },\n {\n name: \"DAY\",\n objectKey: \"WeekDay\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: true,\n isSortRequired: [true],\n isFilterRequired: [true],\n filter: \"CHECKBOX\",\n filterSortObjectKeys: [\"WeekDay\"],\n },\n ],\n visible: true,\n width: \"82px\",\n },\n {\n headerInfo: [\n {\n name: \"LEN\",\n objectKey: \"DisplayLength\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: true,\n isSortRequired: [true],\n isFilterRequired: [true],\n filter: \"CHECKBOX\",\n filterSortObjectKeys: [\"DisplayLength\"],\n },\n ],\n visible: true,\n width: \"52px\",\n },\n {\n headerInfo: [\n {\n name: \"BUYER PROGRAM\",\n objectKey: \"BuyerProgramName\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: true,\n isSortRequired: [true, true],\n isFilterRequired: [true, true],\n filter: \"CHECKBOX\",\n filterSortObjectKeys: [\"BuyerProgramName\", \"InventoryCode\"],\n },\n {\n name: \"INVENTORY CODE\",\n objectKey: \"InventoryCode\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n ],\n visible: true,\n width: \"280px\",\n },\n {\n headerInfo: [\n {\n name: \"SELLER PROGRAM\",\n objectKey: \"SellerProgramName\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: true,\n isSortRequired: [true],\n isFilterRequired: [true],\n filter: \"CHECKBOX\",\n filterSortObjectKeys: [\"SellerProgramName\"],\n },\n ],\n visible: true,\n width: \"130px\",\n },\n {\n headerInfo: [\n {\n name: \"TIME\",\n objectKey: \"Time\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: true,\n isSortRequired: [true, true],\n isFilterRequired: [true, true],\n filter: \"TIME\",\n filterSortObjectKeys: [\"StartTime\", \"EndTime\"],\n },\n ],\n visible: true,\n width: \"80px\",\n },\n {\n headerInfo: [\n {\n name: \"BOOKED AVG. RATE\",\n objectKey: \"DisplayWeeklyAUR\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: true,\n isSortRequired: [true],\n isFilterRequired: [true],\n filter: \"SLIDER\",\n filterSortObjectKeys: [\"WeeklyAUR\"],\n },\n ],\n visible: true,\n width: \"140px\",\n },\n {\n headerInfo: [\n {\n name: showImpressions\n ? `${this.spotsApprovalService.estimatePriorityKeyColumnNameMapForIMPSMetric[\n estimatePriority[0]\n ]\n } | ${this.spotsApprovalService.estimatePriorityKeyColumnNameMapForIMPSMetric[\n estimatePriority[1]\n ]\n }`\n : `${this.spotsApprovalService.estimatePriorityKeyColumnNameMapForRTGMetric[\n estimatePriority[0]\n ]\n } | ${this.spotsApprovalService.estimatePriorityKeyColumnNameMapForRTGMetric[\n estimatePriority[1]\n ]\n }`,\n objectKey: showImpressions\n ? \"firstTwoEstimatePrioritiesForIMPSMetric\"\n : \"firstTwoEstimatePrioritiesForRTGMetric\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n {\n name: showImpressions\n ? `${this.spotsApprovalService.estimatePriorityKeyColumnNameMapForIMPSMetric[\n estimatePriority[2]\n ]\n } | ${this.spotsApprovalService.estimatePriorityKeyColumnNameMapForIMPSMetric[\n estimatePriority[3]\n ]\n }`\n : `${this.spotsApprovalService.estimatePriorityKeyColumnNameMapForRTGMetric[\n estimatePriority[2]\n ]\n } | ${this.spotsApprovalService.estimatePriorityKeyColumnNameMapForRTGMetric[\n estimatePriority[3]\n ]\n }`,\n objectKey: showImpressions\n ? \"lastTwoEstimatePrioritiesForIMPSMetric\"\n : \"lastTwoEstimatePrioritiesForRTGMetric\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n ],\n visible: true,\n width: \"270px\",\n },\n {\n headerInfo: [\n {\n name: \"DP\",\n objectKey: \"Daypart\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: true,\n isSortRequired: [true, true],\n isFilterRequired: [true, true],\n filter: \"CHECKBOX\",\n filterSortObjectKeys: [\"Daypart\", \"DisplayRevenueClass\"],\n },\n {\n name: \"REV CLASS\",\n objectKey: \"DisplayRevenueClass\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n ],\n visible: true,\n width: \"92px\",\n },\n {\n headerInfo: [\n {\n name: \"ACTION\",\n objectKey: \"ActionForEdit\",\n typeOfHeaderData: \"STRING\",\n actionKey: \"ActionKeyForEdit\",\n typeOfBodyData: \"CLICKABLE_DATA\",\n showTooltipIcon: false,\n },\n ],\n visible: true,\n width: \"82px\",\n },\n ];\n }\n\n getOfferedADUTableHeaders(showImpressions: boolean, estimatePriority: ESTIMATEPRIORITIES[]): IGtTableHeader[] {\n return [\n {\n headerInfo: [\n {\n name: \"STATUS\",\n objectKey: \"DisplayStatus\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n ],\n visible: true,\n width: \"120px\",\n },\n {\n headerInfo: [\n {\n name: \"WEEK\",\n objectKey: \"WeekStartDate\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n {\n name: \"DAY\",\n objectKey: \"WeekDay\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n ],\n visible: true,\n width: \"82px\",\n },\n {\n headerInfo: [\n {\n name: \"LEN\",\n objectKey: \"Length\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n ],\n visible: true,\n width: \"52px\",\n },\n {\n headerInfo: [\n {\n name: \"BUYER PROGRAM\",\n objectKey: OfferedMGOrADUTableKeys.BUYER_PROGRAM_KEY,\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING_OR_INPUT\",\n showTooltipIcon: false,\n },\n {\n name: \"INVENTORY CODE\",\n objectKey: \"InventoryCode\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n ],\n visible: true,\n width: \"180px\",\n },\n {\n headerInfo: [\n {\n name: \"SELLER PROGRAM\",\n objectKey: \"SellerProgramName\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n ],\n visible: true,\n width: \"130px\",\n },\n {\n headerInfo: [\n {\n name: \"TIME\",\n objectKey: \"Time\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n ],\n visible: true,\n width: \"80px\",\n },\n {\n headerInfo: [\n {\n name: \"OFFERED RATE\",\n objectKey: \"DisplayRate\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n {\n name: \"BOOKED AVG. RATE\",\n objectKey: \"DisplayWeeklyAUR\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n ],\n visible: true,\n width: \"118px\",\n },\n {\n headerInfo: [\n {\n name: showImpressions ? \"OFFERED IMP('000)\" : \"OFFERED RTG\",\n objectKey: showImpressions ? \"Impressions\" : \"Ratings\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n ],\n visible: true,\n width: showImpressions ? \"130px\" : \"90px\",\n },\n {\n headerInfo: [\n {\n name: showImpressions\n ? `${this.spotsApprovalService.estimatePriorityKeyColumnNameMapForIMPSMetric[\n estimatePriority[0]\n ]\n } | ${this.spotsApprovalService.estimatePriorityKeyColumnNameMapForIMPSMetric[\n estimatePriority[1]\n ]\n }`\n : `${this.spotsApprovalService.estimatePriorityKeyColumnNameMapForRTGMetric[\n estimatePriority[0]\n ]\n } | ${this.spotsApprovalService.estimatePriorityKeyColumnNameMapForRTGMetric[\n estimatePriority[1]\n ]\n }`,\n objectKey: showImpressions\n ? \"firstTwoEstimatePrioritiesForIMPSMetric\"\n : \"firstTwoEstimatePrioritiesForRTGMetric\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n {\n name: showImpressions\n ? `${this.spotsApprovalService.estimatePriorityKeyColumnNameMapForIMPSMetric[\n estimatePriority[2]\n ]\n } | ${this.spotsApprovalService.estimatePriorityKeyColumnNameMapForIMPSMetric[\n estimatePriority[3]\n ]\n }`\n : `${this.spotsApprovalService.estimatePriorityKeyColumnNameMapForRTGMetric[\n estimatePriority[2]\n ]\n } | ${this.spotsApprovalService.estimatePriorityKeyColumnNameMapForRTGMetric[\n estimatePriority[3]\n ]\n }`,\n objectKey: showImpressions\n ? \"lastTwoEstimatePrioritiesForIMPSMetric\"\n : \"lastTwoEstimatePrioritiesForRTGMetric\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n ],\n visible: true,\n width: \"270px\",\n },\n {\n headerInfo: [\n {\n name: \"DP\",\n objectKey: \"Daypart\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n {\n name: \"REV CLASS\",\n objectKey: \"DisplayRevenueClass\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n ],\n visible: true,\n width: \"92px\",\n },\n {\n headerInfo: [\n {\n name: \"ACTION\",\n objectKey: \"ActionForEdit\",\n typeOfHeaderData: \"STRING\",\n actionKey: \"ActionKeyForEdit\",\n typeOfBodyData: \"CLICKABLE_DATA\",\n showTooltipIcon: false,\n },\n ],\n visible: true,\n width: \"82px\",\n }\n ];\n }\n\n getViewSpotsPopupTableHeaders(): IGtTableHeader[] {\n return [\n {\n headerInfo: [\n {\n name: \"ORDER#\",\n objectKey: \"OrderId\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: true,\n isSortRequired: [true],\n isFilterRequired: [true],\n filter: \"CHECKBOX\",\n filterSortObjectKeys: [\"OrderId\"],\n },\n ],\n visible: true,\n width: \"12ch\",\n },\n {\n headerInfo: [\n {\n name: \"ADVERTISER\",\n objectKey: \"AdvertiserName\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: true,\n isSortRequired: [true],\n isFilterRequired: [true],\n filter: \"CHECKBOX\",\n filterSortObjectKeys: [\"AdvertiserName\"],\n },\n ],\n visible: true,\n width: \"20ch\",\n },\n {\n headerInfo: [\n {\n name: \"LINE.SPOT\",\n objectKey: \"Spot\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: true,\n isSortRequired: [true],\n isFilterRequired: [true],\n filter: \"CHECKBOX\",\n filterSortObjectKeys: [\"Spot\"],\n },\n ],\n visible: true,\n width: \"12ch\",\n },\n {\n headerInfo: [\n {\n name: \"LEN\",\n objectKey: \"Length\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: true,\n isSortRequired: [true],\n isFilterRequired: [true],\n filter: \"CHECKBOX\",\n filterSortObjectKeys: [\"Length\"],\n },\n ],\n visible: true,\n width: \"10ch\",\n },\n {\n headerInfo: [\n {\n name: \"SPOT STATUS\",\n objectKey: \"SpotStatus\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: true,\n isSortRequired: [true],\n isFilterRequired: [true],\n filter: \"CHECKBOX\",\n filterSortObjectKeys: [\"SpotStatus\"],\n },\n ],\n visible: true,\n width: \"14ch\",\n },\n {\n headerInfo: [\n {\n name: \"RATE\",\n objectKey: \"Rate\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: true,\n isSortRequired: [true],\n isFilterRequired: [true],\n filter: \"SLIDER\",\n filterSortObjectKeys: [\"ActualRate\"],\n },\n ],\n visible: true,\n width: \"10ch\",\n },\n {\n headerInfo: [\n {\n name: \"RTG\",\n objectKey: \"Rating\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: true,\n isSortRequired: [true],\n isFilterRequired: [true],\n filter: \"SLIDER\",\n filterSortObjectKeys: [\"Rating\"],\n },\n ],\n visible: true,\n width: \"10ch\",\n },\n {\n headerInfo: [\n {\n name: \"IMPS\",\n objectKey: \"Impressions\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: true,\n isSortRequired: [true],\n isFilterRequired: [true],\n filter: \"SLIDER\",\n filterSortObjectKeys: [\"Impressions\"],\n },\n ],\n visible: true,\n width: \"10ch\",\n },\n {\n headerInfo: [\n {\n name: \"AIR DATE | TIME\",\n objectKey: \"AirDateTime\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: true,\n isSortRequired: [true],\n isFilterRequired: [true],\n filter: \"DATE\",\n filterSortObjectKeys: [\"AirDate\"],\n },\n ],\n visible: true,\n width: \"18ch\",\n },\n ];\n }\n\n getOtherOSSpotsPopupTableHeaders(showImpressions: boolean): IGtTableHeader[] {\n return [\n {\n headerInfo: [\n {\n name: \"\",\n objectKey: \"IsSelected\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"CHECKBOX\",\n showTooltipIcon: false,\n },\n ],\n visible: true,\n width: \"4ch\",\n },\n {\n headerInfo: [\n {\n name: \"SPOT TYPE\",\n objectKey: \"DisplaySpotType\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n {\n name: \"SELL LINE/BUY LINE\",\n objectKey: \"SellerAndBuyerLine\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n ],\n visible: true,\n width: \"16ch\",\n },\n {\n headerInfo: [\n {\n name: \"WEEK\",\n objectKey: \"WeekStartDate\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n {\n name: \"DAY\",\n objectKey: \"WeekDay\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n ],\n visible: true,\n width: \"10ch\",\n },\n {\n headerInfo: [\n {\n name: \"LEN\",\n objectKey: \"Length\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n ],\n visible: true,\n width: \"8ch\",\n },\n {\n headerInfo: [\n {\n name: \"INVENTORY CODE\",\n objectKey: \"InventoryCode\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n {\n name: \"BUYER PROGRAM NAME\",\n objectKey: \"BuyerProgramName\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n ],\n visible: true,\n width: \"18ch\",\n },\n {\n headerInfo: [\n {\n name: \"OFFERED RATE\",\n objectKey: \"DisplayRate\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n {\n name: \"BOOKED AVG. RATE\",\n objectKey: \"DisplayWeeklyAUR\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n ],\n visible: true,\n width: \"15ch\",\n },\n {\n headerInfo: [\n {\n name: \"OFFERED RTG\",\n objectKey: \"Ratings\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n ],\n visible: !showImpressions,\n width: \"15ch\",\n },\n {\n headerInfo: [\n {\n name: \"OFFERED IMP('000)\",\n objectKey: \"Impressions\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n ],\n visible: showImpressions,\n width: \"15ch\",\n },\n ];\n }\n}\n","\nimport { CommonModule } from \"@angular/common\";\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n EventEmitter,\n Input,\n OnInit,\n Output,\n signal,\n TemplateRef,\n ViewChild,\n} from \"@angular/core\";\nimport {\n AnnaCoreModule,\n AnnaGlobalConfigService,\n IGtGeneralConfig,\n IGtTableHeader,\n ITotalRowInfo,\n} from \"@annalib/anna-core\";\nimport { NgbModal, NgbModalOptions, NgbModalRef } from \"@ng-bootstrap/ng-bootstrap\";\nimport { cloneDeep } from \"lodash-es\";\n\nimport {\n CheckBoxName,\n IOSPESpotsData,\n IPreemptionSpotInformationForEdit,\n} from \"../models/create-or-edit-offers-popup.model\";\nimport { CreateOrEditOffersService } from \"../services/create-or-edit-offers-popup.service\";\n\n// Event interfaces for better type safety\ninterface SpotSelectionEvent {\n rowData: IOSPESpotsData;\n columnKeys: string;\n isCheckboxSelected: boolean;\n}\n\n// Configuration constants\nconst COMPONENT_CONFIG = {\n modal: {\n backdrop: \"static\",\n keyboard: false,\n windowClass: \"add-os-spots-modal\",\n } as NgbModalOptions,\n table: {\n dimensions: {\n rowHeight: 40,\n headerHeight: 40,\n dataOnTopHeight: 422,\n marginFromBottom: 26,\n },\n configOverrides: {\n component: undefined,\n bufferSize: 100,\n totalRow: true,\n tableContainerName: \"add-os-spots-table-container\",\n showAllColumnFilter: true,\n } as Partial<IGtGeneralConfig>,\n },\n} as const;\n\n@Component({\n selector: \"anna-feature-add-os-spots-popup\",\n standalone: true,\n imports: [CommonModule, AnnaCoreModule],\n templateUrl: \"./add-os-spots-popup.component.html\",\n styleUrls: [\"./add-os-spots-popup.component.scss\"],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AddOsSpotsPopupComponent implements OnInit {\n @Input() data: IPreemptionSpotInformationForEdit[] = [];\n @Input() showImpressions = false;\n\n @Output() apply = new EventEmitter<IOSPESpotsData[]>();\n @Output() closed = new EventEmitter<void>();\n\n // Public properties\n readonly gtDimension = COMPONENT_CONFIG.table.dimensions;\n\n // Private properties\n private addOSSpotsModalRef: NgbModalRef | null = null;\n gtGeneralConfig!: IGtGeneralConfig;\n\n readonly tableHeadersSignal = signal<IGtTableHeader[]>([]);\n readonly tableDataSignal = signal<IOSPESpotsData[]>([]);\n readonly totalRowInfoSignal = signal<ITotalRowInfo[]>([]);\n readonly disableApplySignal = signal<boolean>(true);\n\n // Computed signals for derived state\n readonly selectedSpotsCount = computed(\n () => this.tableDataSignal().filter((item: IOSPESpotsData) => item.IsSelected).length,\n );\n\n readonly areAllRowsSelected = computed(() => this.selectedSpotsCount() === this.tableDataSignal().length);\n readonly areAnyRowsSelected = computed(() => this.selectedSpotsCount() > 0);\n readonly selectedSpots = computed(() => this.tableDataSignal().filter((item: IOSPESpotsData) => item.IsSelected));\n\n // ViewChild references\n @ViewChild(\"addOSSpotsModal\", { static: true })\n private addOSSpotsModal!: TemplateRef<unknown>;\n\n constructor(\n private readonly createOrEditOffersService: CreateOrEditOffersService,\n private readonly modalService: NgbModal,\n private readonly annaGlobalConfig: AnnaGlobalConfigService,\n ) {\n this.initializeGtConfig();\n }\n\n ngOnInit(): void {\n this.initializeComponent();\n }\n\n // Public methods\n selectUnselectAll(): void {\n const shouldSelectAll = !this.areAllRowsSelected();\n this.updateTotalRowCheckbox(shouldSelectAll);\n this.updateAllRowsSelection(shouldSelectAll);\n this.updateApplyButtonState();\n }\n\n selectUnselectSpot(event: SpotSelectionEvent): void {\n const rowIndex = this.findRowIndex(event.rowData.UniqueId);\n if (rowIndex !== -1) {\n this.updateRowSelection(rowIndex, event.rowData.IsSelected);\n this.updateTotalRowCheckboxIcon();\n this.updateApplyButtonState();\n }\n }\n\n applyClicked(): void {\n const selectedSpots = this.selectedSpots();\n this.closeModal();\n this.apply.emit(selectedSpots);\n }\n\n cancel(): void {\n this.closeModal();\n this.closed.emit();\n }\n\n // Private initialization methods\n private initializeGtConfig(): void {\n const baseConfig = { ...this.annaGlobalConfig.defaultGtGeneralConfig };\n this.gtGeneralConfig = cloneDeep({\n ...baseConfig,\n ...COMPONENT_CONFIG.table.configOverrides,\n });\n }\n\n private initializeComponent(): void {\n const headers = this.createOrEditOffersService.getOtherOSSpotsPopupTableHeaders(this.showImpressions);\n this.tableHeadersSignal.set(headers);\n this.initializeTableData();\n this.createTotalRow();\n this.openModal();\n }\n\n private initializeTableData(): void {\n const clonedData = cloneDeep(this.data as IOSPESpotsData[]);\n clonedData.forEach((item) => {\n item.IsSelected = false;\n item.SellerAndBuyerLine = `${item.SellerLine} / ${item.BuyerLine}`;\n });\n this.tableDataSignal.set(clonedData);\n }\n\n private openModal(): void {\n this.addOSSpotsModalRef = this.modalService.open(this.addOSSpotsModal, COMPONENT_CONFIG.modal);\n }\n\n private closeModal(): void {\n if (this.addOSSpotsModalRef) {\n this.addOSSpotsModalRef.close();\n this.addOSSpotsModalRef = null;\n }\n }\n\n // Private table management methods\n private createTotalRow(): void {\n const totalRowInfo = [\n {\n colspan: 1,\n data: \"\",\n isIconColumn: true,\n iconData: {\n class: this.getTotalRowCheckboxIconClass(),\n disabled: false,\n },\n colName: \"checkbox\",\n },\n {\n colspan: 4,\n data: `TOTAL ${this.tableDataSignal().length} O/S SPOTS`,\n colName: \"total-spots-message\",\n },\n {\n colspan: 1,\n data: \"\",\n colName: \"total-rate\",\n },\n {\n colspan: 1,\n data: \"\",\n colName: \"total-rtg-or-imps\",\n },\n ];\n this.totalRowInfoSignal.set(totalRowInfo);\n }\n\n private updateTotalRowCheckbox(shouldSelectAll: boolean): void {\n const [first, ...rest] = this.totalRowInfoSignal();\n if (!first) return;\n this.totalRowInfoSignal.set([\n {\n ...first,\n iconData: {\n ...first.iconData,\n class: shouldSelectAll ? CheckBoxName.checkedCheckBox : CheckBoxName.blankCheckBox,\n },\n },\n ...rest,\n ]);\n }\n\n private updateAllRowsSelection(shouldSelectAll: boolean): void {\n const currentTableData = this.tableDataSignal();\n const updatedTableData = currentTableData.map((item: IOSPESpotsData) => ({\n ...item,\n IsSelected: shouldSelectAll,\n }));\n this.tableDataSignal.set(updatedTableData);\n }\n\n // read about it, wrt performance\n private updateRowSelection(rowIndex: number, isSelected: boolean): void {\n const data = this.tableDataSignal();\n if (rowIndex < 0 || rowIndex >= data.length) return;\n this.tableDataSignal.set([\n ...data.slice(0, rowIndex),\n { ...data[rowIndex], IsSelected: isSelected },\n ...data.slice(rowIndex + 1),\n ]);\n }\n\n private updateTotalRowCheckboxIcon(): void {\n const currentTotalRowInfo = this.totalRowInfoSignal();\n if (currentTotalRowInfo.length > 0) {\n const updatedTotalRowInfo = [...currentTotalRowInfo];\n updatedTotalRowInfo[0] = {\n ...updatedTotalRowInfo[0],\n iconData: {\n ...updatedTotalRowInfo[0].iconData,\n class: this.getTotalRowCheckboxIconClass(),\n },\n };\n this.totalRowInfoSignal.set(updatedTotalRowInfo);\n }\n }\n\n // Private utility methods\n private getTotalRowCheckboxIconClass(): string {\n if (this.areAllRowsSelected()) {\n return CheckBoxName.checkedCheckBox;\n }\n if (this.areAnyRowsSelected()) {\n return CheckBoxName.intermediateCheckBox;\n }\n return CheckBoxName.blankCheckBox;\n }\n\n private findRowIndex(uniqueId: string | number): number {\n return this.tableDataSignal().findIndex((item) => item.UniqueId === uniqueId);\n }\n\n private updateApplyButtonState(): void {\n this.disableApplySignal.set(this.selectedSpotsCount() === 0);\n }\n}\n","<ng-template\n #addOSSpotsModal\n let-modal\n>\n <header class=\"modal-header\">\n <h3\n class=\"modal-title\"\n id=\"add-os-spots-modal-title\"\n >\n Other Outstanding Spots\n </h3>\n </header>\n <div class=\"modal-body\">\n <anna-core-non-editable-generic-table-lib\n class=\"other-os-spots-table\"\n [tableHeaders]=\"tableHeadersSignal()\"\n [tableData]=\"tableDataSignal()\"\n [clonedTableData]=\"tableDataSignal()\"\n [gtGeneralConfig]=\"gtGeneralConfig\"\n [totalRowInfo]=\"totalRowInfoSignal()\"\n [fixNumberOfRowsForPopup]=\"true\"\n [gtDimension]=\"gtDimension\"\n [tableBorderBottomClassRequired]=\"false\"\n (totalRowIconClicked)=\"selectUnselectAll()\"\n (toggleCheckbox)=\"selectUnselectSpot($event)\"\n >\n </anna-core-non-editable-generic-table-lib>\n <div class=\"button-container-modal\">\n <button\n type=\"button\"\n class=\"anna cancel-button\"\n (click)=\"cancel()\"\n >\n Cancel\n </button>\n <button\n type=\"button\"\n [disabled]=\"disableApplySignal()\"\n class=\"anna apply-button\"\n (click)=\"applyClicked()\"\n >\n Apply\n </button>\n </div>\n </div>\n</ng-template>\n","import { InjectionToken } from \"@angular/core\";\nimport { Observable } from \"rxjs\";\n\nimport { RevisionDataPayload } from \"../models/order-revision-detail.model\";\n\nexport const SPOTS_APPROVAL_PAGE_SERVICE_TOKEN: InjectionToken<ISpotsApprovalBackendService> =\n new InjectionToken<ISpotsApprovalBackendService>(\"SpotsApprovalBackendService token\");\n\nexport interface ISpotsApprovalBackendService {\n storeConnectionDataInCacheFuncName: string;\n releaseSpotsApprovalLockFuncName: string;\n resetTTLForSpotsApprovalLockFuncName: string;\n getOrderRevisionDetails(requestPayload: RevisionDataPayload): Observable<any>;\n getTenantAddress(ogName: string): Observable<any>;\n submit(requestPayload: any): Observable<any>;\n submitOSPEMarkedForMakegoodSpots(requestPayload: any): Observable<any>;\n submitOSPEMarkedForCreditSpots(requestPayload: any): Observable<any>;\n submitSellerActionForOSPE(requestPayload: any): Observable<any>;\n submitSellerActionForBuyerRequest(requestPayload: any): Observable<any>;\n getEditGroupData(requestPayload: any): Observable<any>;\n getFreeFlowOffers(requestPayload: any): Observable<any>;\n getRotators(requestPayload: any): Observable<any>;\n validateEditedOffers(requestPayload: any): Observable<any>;\n generateOffersReport(requestPayload: any): Observable<any>;\n saveEditedOffers(requestPayload: any): Observable<any>;\n saveAduEdits(requestPayload: any): Observable<any>;\n getSpotDetails(stationId: number, inventoryCodeId: number, date: string): Observable<any>;\n getSpotsApprovalHubConnection(): any;\n undoOffers(requestPayload: any): Observable<any>;\n reOffers(requestPayload: any): Observable<any>;\n cancelOffers(requestPayload: any): Observable<any>;\n getRevenueClassList(stationId: number): Observable<any>;\n getBadlyBehavedSpotDetails(stationId: number, groupId: string): Observable<any>;\n}\n","import { Injectable } from \"@angular/core\";\nimport { IGtTableHeader } from \"@annalib/anna-core\";\n\n@Injectable({\n providedIn: \"root\",\n})\nexport class BadlyBehavedSpotDetailsPopupService {\n\n getBadlyBehavedSpotDetailsPopupTableTableHeaders (showImpressions: boolean) : IGtTableHeader[] {\n return [\n {\n headerInfo: [\n {\n name: \"STN ORDER#\",\n objectKey: \"OrderId\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n {\n name: \"ALT/REP ORDER#\",\n objectKey: \"AltOrderId\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n ],\n visible: true,\n width: \"150px\",\n },\n {\n headerInfo: [\n {\n name: \"SELLER PROGRAM\",\n objectKey: \"SellerProgram\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n { \n name: \"INVENTORY CODE\",\n objectKey: \"InventoryCode\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n }\n ],\n visible: true,\n width: \"121px\",\n },\n {\n headerInfo: [\n {\n name: \"Sch. DATE\",\n objectKey: \"Date\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n {\n name: \"Sch. DAY\",\n objectKey: \"Day\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n ],\n visible: true,\n width: \"90px\",\n },\n {\n headerInfo: [\n {\n name: \"LEN\",\n objectKey: \"Length\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n {\n name: \"DEMO\",\n objectKey: \"Demo\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n ],\n visible: true,\n width: \"90px\",\n },\n {\n headerInfo: [\n {\n name: \"AGENCY\",\n objectKey: \"Agency\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n {\n name: \"ADVERTISER\",\n objectKey: \"Advertiser\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n ],\n visible: true,\n width: \"90px\",\n },\n {\n headerInfo: [\n {\n name: \"$RATE IMPACT\",\n objectKey: \"RateImpactValue\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n {\n name: showImpressions ? \"$IMPS IMPACT\" : \"$RTG IMPACT\",\n objectKey: showImpressions ? \"IMPSImpactValue\" : \"RatingImpactValue\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n ],\n visible: true,\n width: \"90px\",\n }\n ]\n }\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Inject, Input, OnInit, Output, TemplateRef, ViewChild } from '@angular/core';\nimport { AnnaCoreModule, AnnaGlobalConfigService, ErrorCodes, IGtGeneralConfig, IGtTableHeader } from '@annalib/anna-core';\nimport { NgbModal, NgbModalOptions, NgbModalRef } from '@ng-bootstrap/ng-bootstrap';\nimport { cloneDeep } from 'lodash-es';\n\nimport { ISpotsApprovalBackendService, SPOTS_APPROVAL_PAGE_SERVICE_TOKEN } from '../config/spots-approval-backend-service.token';\nimport { BadlyBehavedSpotDetails } from './models/badly-behaved-spot-details-popup.model';\nimport { BadlyBehavedSpotDetailsPopupService } from './services/badly-behaved-spot-details-popup.service';\n\n\n// Configuration constants\nconst COMPONENT_CONFIG = {\n modal: {\n backdrop: \"static\",\n keyboard: false,\n windowClass: \"badly-behaved-spot-details-modal\",\n } as NgbModalOptions,\n table: {\n dimensions: {\n rowHeight: 40,\n headerHeight: 40,\n dataOnTopHeight: 422,\n marginFromBottom: 26,\n },\n configOverrides: {\n bufferSize: 100,\n tableContainerName: \"badly-behaved-spot-details-table-container\",\n } as Partial<IGtGeneralConfig>,\n },\n} as const;\n\n@Component({\n selector: 'anna-feature-badly-behaved-spot-details-popup',\n imports: [AnnaCoreModule,\n ],\n templateUrl: './badly-behaved-spot-details-popup.component.html',\n styleUrl: './badly-behaved-spot-details-popup.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\n\nexport class BadlyBehavedSpotDetailsPopupComponent implements OnInit {\n @Input() stationId: number;\n @Input() groupId: string;\n @Input() showImpressions: boolean;\n @Output() closed = new EventEmitter<void>();\n\n badlyBehavedSpotDetailsModalRef: NgbModalRef | null = null;\n gtGeneralConfig!: IGtGeneralConfig;\n tableData: BadlyBehavedSpotDetails[];\n\n @ViewChild(\"badlyBehavedSpotDetailsModal\", { static: true })\n private badlyBehavedSpotDetailsModal!: TemplateRef<unknown>;\n tableHeaders: IGtTableHeader[];\n loading: boolean;\n\n readonly gtDimension = COMPONENT_CONFIG.table.dimensions;\n\n constructor(\n private readonly modalService: NgbModal,\n private readonly annaGlobalConfig: AnnaGlobalConfigService,\n private badlyBehavedSpotDetailsPopupService: BadlyBehavedSpotDetailsPopupService,\n @Inject(SPOTS_APPROVAL_PAGE_SERVICE_TOKEN)\n public consumingProjectSpotsApprovalBackendService: ISpotsApprovalBackendService,\n ) {\n this.initializeGtConfig();\n }\n\n ngOnInit(): void {\n this.initializeComponent();\n }\n\n // Private initialization methods\n private initializeGtConfig(): void {\n const baseConfig = { ...this.annaGlobalConfig.defaultGtGeneralConfig };\n this.gtGeneralConfig = cloneDeep({\n ...baseConfig,\n ...COMPONENT_CONFIG.table.configOverrides,\n });\n }\n\n private initializeComponent(): void {\n this.tableHeaders = this.badlyBehavedSpotDetailsPopupService.getBadlyBehavedSpotDetailsPopupTableTableHeaders(this.showImpressions);\n this.fetchBadlyBehavedSpotDetails();\n this.openModal();\n }\n\n fetchBadlyBehavedSpotDetails() {\n this.loading = true;\n this.consumingProjectSpotsApprovalBackendService\n .getBadlyBehavedSpotDetails(\n this.stationId, this.groupId\n )\n .subscribe({\n next: (response: any) => {\n if (response.status === ErrorCodes.NO_CONTENT) {\n this.tableData = [];\n this.loading = false;\n } else {\n this.tableData = [];\n this.tableData.push(response.body);\n this.loading = false;\n }\n },\n error: (error: any) => {\n this.tableData = [];\n this.loading = false;\n },\n });\n }\n\n private openModal(): void {\n this.badlyBehavedSpotDetailsModalRef = this.modalService.open(this.badlyBehavedSpotDetailsModal, COMPONENT_CONFIG.modal);\n }\n\n closeModal(): void {\n if (this.badlyBehavedSpotDetailsModalRef) {\n this.badlyBehavedSpotDetailsModalRef.close();\n this.badlyBehavedSpotDetailsModalRef = null;\n this.closed.emit();\n }\n }\n}\n","<ng-template\n #badlyBehavedSpotDetailsModal\n let-modal\n>\n <header class=\"modal-header\">\n <h3\n class=\"modal-title\"\n id=\"add-os-spots-modal-title\"\n >\n Spot Details\n </h3>\n <i\n (click)=\"closeModal()\"\n class=\"mi mdi-close-icon mdi-font-md bbs-popup-close\"\n ></i>\n </header>\n <div class=\"modal-body\">\n <anna-core-non-editable-generic-table-lib\n class=\"badly-behaved-spot-details-table\"\n [showSkeletonLoading]=\"loading\"\n [tableHeaders]=\"tableHeaders\"\n [tableData]=\"tableData\"\n [clonedTableData]=\"tableData\"\n [gtGeneralConfig]=\"gtGeneralConfig\"\n [fixNumberOfRowsForPopup]=\"true\"\n [gtDimension]=\"gtDimension\"\n [tableBorderBottomClassRequired]=\"false\"\n >\n </anna-core-non-editable-generic-table-lib>\n </div>\n</ng-template>\n","import { CommonModule } from \"@angular/common\";\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Inject,\n Input,\n OnInit,\n Output,\n TemplateRef,\n ViewChild,\n} from \"@angular/core\";\nimport { FormsModule } from \"@angular/forms\";\nimport {\n AnnaDesignComponentsLibModule,\n GenericMessageBoxTheme,\n MessageBoxData,\n} from \"@annalib/anna-design-components-lib\";\nimport { NgbModal, NgbModalOptions } from \"@ng-bootstrap/ng-bootstrap\";\nimport { flatten, groupBy, map } from \"lodash-es\";\n\n@Component({\n selector: \"anna-feature-cancel-offers-popup\",\n imports: [CommonModule, FormsModule, AnnaDesignComponentsLibModule],\n templateUrl: \"./cancel-offers-popup.component.html\",\n styleUrls: [\"./cancel-offers-popup.component.scss\"],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CancelOffersPopupComponent implements OnInit {\n @Input() allCancelEligibleMakegoodOfferNumbers: { offerNumber: string; uniqueId: string }[];\n @Output() apply = new EventEmitter<{ selectedOffersToCancel: string[]; comment: string }>();\n @Output() userActed = new EventEmitter<void>();\n\n offerNumbersAndItsUniqueId: { offerNumber: string; uniqueId: string[]; isSelected: boolean }[] = [];\n infoMessage: MessageBoxData;\n disableApply: boolean;\n comment: string = null;\n\n @ViewChild(\"cancelOffersModal\", { static: true })\n private cancelOffersModal: TemplateRef<any>;\n cancelOffersModalRef: any;\n\n constructor(@Inject(NgbModal) private modalService: NgbModal) { }\n\n ngOnInit() {\n this.infoMessage = new MessageBoxData(\n null,\n \"The selected offer(s) will be cancelled on the rep platform (if applicable) and rejected on ANNA. Please enter reason for cancellation.\",\n \"mdi mdi-information\",\n `${GenericMessageBoxTheme.informationBlue.messageBoxClass} cancel-offers-message-box`,\n );\n }\n\n openModal() {\n const ngbModalOptions: NgbModalOptions = {\n windowClass: \"cancel-offers-modal\",\n };\n\n this.offerNumbersAndItsUniqueId = [];\n const groupByOfferNumber = groupBy(this.allCancelEligibleMakegoodOfferNumbers, \"offerNumber\");\n this.offerNumbersAndItsUniqueId = map(groupByOfferNumber, (offerAndUniqueObj, offerNumber) => ({\n offerNumber,\n isSelected: false,\n uniqueId: offerAndUniqueObj.map((x) => x.uniqueId),\n }));\n this.comment = null;\n this.disableApply = true;\n this.cancelOffersModalRef = this.modalService.open(this.cancelOffersModal, ngbModalOptions);\n }\n\n itemClicked(index: number) {\n this.offerNumbersAndItsUniqueId[index].isSelected = !this.offerNumbersAndItsUniqueId[index].isSelected;\n this.enableDisableApply();\n }\n\n applyClicked() {\n const uniqueIds = this.offerNumbersAndItsUniqueId.filter((n) => n.isSelected).map((n) => n.uniqueId);\n const flatListOfUniqueId = flatten(uniqueIds);\n const trimmedComment = this.comment ? this.comment.trim() : null;\n const objToEmit = {\n selectedOffersToCancel: flatListOfUniqueId,\n comment: trimmedComment,\n };\n this.apply.emit(objToEmit);\n this.cancelOffersModalRef.close();\n }\n\n cancel() {\n this.comment = null;\n this.cancelOffersModalRef.close();\n }\n\n commentChange() {\n this.enableDisableApply();\n this.userActed.emit();\n }\n\n enableDisableApply() {\n const noOfferSelected = this.offerNumbersAndItsUniqueId.filter((n) => n.isSelected)?.length === 0;\n const trimmedComment = this.comment ? this.comment.trim() : null;\n const isCommentEmpty = !trimmedComment || trimmedComment === \"\";\n this.disableApply = isCommentEmpty || noOfferSelected;\n }\n}\n","<ng-template\n #cancelOffersModal\n let-modal\n>\n <div class=\"modal-header\">\n <h3 class=\"modal-title\">Cancel Offers</h3>\n </div>\n <div class=\"modal-body\">\n <anna-design-message-box [messageBoxData]=\"infoMessage\"></anna-design-message-box>\n\n <p class=\"msg-label\">Select offer ids:</p>\n <ul>\n <label\n *ngFor=\"let item of offerNumbersAndItsUniqueId; let i = index\"\n (click)=\"itemClicked(i)\"\n >\n <i\n class=\"mi mdi-check-box\"\n *ngIf=\"item.isSelected\"\n ></i>\n <i\n class=\"mi mdi-check-box-outline-blank\"\n *ngIf=\"!item.isSelected\"\n ></i>\n <span>{{ item.offerNumber }}</span>\n </label>\n </ul>\n\n <textarea\n [(ngModel)]=\"comment\"\n spellcheck=\"false\"\n (ngModelChange)=\"commentChange()\"\n ></textarea>\n\n <div class=\"button-container-modal\">\n <button\n class=\"anna cancel-button\"\n (click)=\"cancel()\"\n >\n Cancel\n </button>\n <button\n [disabled]=\"disableApply\"\n class=\"anna apply-button\"\n (click)=\"applyClicked()\"\n >\n Apply\n </button>\n </div>\n </div>\n</ng-template>\n","import { IRadioButton } from \"@annalib/anna-core\";\n\nexport type ESTIMATEPRIORITIES = \"RollingEstimate\" | \"StationEstimate\" | \"BookedRTG\" | \"AverageRTG\";\n\nexport interface SpotaApprovalIRadioButton extends IRadioButton {\n label: \"Reject\" | \"Approve\" | \"Mark for Credit\" | \"No Action\" | \"Credit\";\n value: \"approve\" | \"resubmit\" | \"credit\" | \"rejectCreditRequest\" | \"noAction\" | \"credit\";\n icons?: { class: string; name?: string }[];\n tooltipMessage?: string;\n}\n\nexport type SpotTypeCategoryFromBE = \"CREDIT\" | \"PREEMPTION\" | \"UNRESOLVED\" | \"MAKEGOOD\" | \"ADU\" | \"CREDIT_ADU\" | \"BONUS\" | \"PREEMPTED\";\n\nexport type DisplaySpotTypeFromBE =\n | \"Preemption\"\n | \"Unresolved\"\n | \"Preemption: Marked for Credit\"\n | \"Preemption: Program Change\"\n | \"Offered MG\"\n | \"Added MG\"\n | \"Rejected MG\"\n | \"Offered MG: Auto-approved\"\n | \"Offered ADU\"\n | \"Rejected ADU\"\n | \"Offered ADU: Auto-approved\"\n | \"Outstanding PE\"\n | \"Outstanding PE: Program Change\"\n | \"Outstanding PE: Marked for Credit\"\n | \"MadeGood Preemption\"\n | \"User MG\"\n | \"User ADU\"\n | \"Buyer Added\"\n | \"Buyer Deleted\"\n | \"Rate Change\"\n | \"Rating/IMPS Change\"\n | \"Rate & Rating/IMPS Change\"\n | \"User Credited\"\n | \"User Unresolved\"\n | \"Added MG\"\n | \"Booked ADU\"\n | \"Booked ADU: Marked for Credit\"\n | \"Created ADU\"\n | \"Created Bonus\"\n ;\n\nexport type TotalRowActionColumnPossibleValues = \"custom\" | \"approve\" | \"resubmit\" | \"noAction\" | \"credit\";\n\nexport type TotalRowActionColumnPossibleLabels = \"Approve All\" | \"Reject All\" | \"Custom\" | \"Credit All\" | \"No Action\";\n\nexport enum RevisionStatus {\n BuyerPending = \"Buyer Pending\",\n SellerPending = \"Seller Pending\",\n SellerReconfirm = \"Seller Reconfirm\",\n SMPending = \"SM Pending\",\n RevGenerated = \"Rev Generated\",\n RevDiscarded = \"Rev Discarded\",\n OutstandingSpots = \"O/S Spots\",\n OutstandingUD = \"O/S UD\",\n}\n\n\nexport type REVISIONTYPES = \"ANNA\" | \"USER\" | \"BUYER\";\n\nexport type SPOTCATEGORIES =\n | \"UserMGsAndADUs\"\n | \"UserCredited\"\n | \"UserUnresolved\"\n | \"AllBuyerChanges\"\n | \"OfferedMGsAndADUs\"\n | \"OutstandingSpots\"\n | \"BadlyBehavedInfo\"\n// | \"BuyerAdded\"\n// | \"BuyerDeleted\"\n// | \"BuyerRateAndRtgImpChanges\";\n\nexport enum UndoOrReofferOrCancelAction {\n UNDO_OFFER = \"undo\",\n DISABLED_UNDO_OFFER = \"disableUndo\",\n REOFFER = \"reoffer\",\n CANCEL_OFFER = \"cancel\",\n DISABLED_REOFFER_OFFER = \"disableReoffer\",\n EDIT_OFFER = \"edit\",\n}\n\nexport enum SpotsApprovalGeneraicTableActions {\n SELLER_LINE_COLUMN_BBS_DETAILS = \"SellerLineBBSDetails\",\n}\n\nexport type ANNAREVISIONSTAGES =\n | \"Seller Pending\"\n | \"Buyer Pending\"\n | \"Seller Reconfirm\"\n | \"SM Pending\"\n | \"Rev Generated\"\n | \"Rev Discarded\"\n | \"O/S Spots\"\n | \"O/S UD\";\n\nexport type OfferStatusFromBE =\n \"-\"\n | \"Seller Pending\"\n | \"Seller Approved\"\n | \"Seller Rejected\"\n | \"Seller Timedout\"\n | \"Seller Cancelled\"\n | \"Rep Entry In Progress\"\n | \"Rep Entry Failed\"\n | \"Buyer Pending\"\n | \"Seller Reconfirm\"\n | \"Seller Reconfirmed\"\n | \"Seller Reconfirm Timedout\"\n | \"Buyer Approved\"\n | \"Buyer Rejected\"\n | \"Buyer Timedout\"\n | \"WOT Entry In Progress\"\n | \"WOT Entry Failed\"\n | \"SM Pending\"\n | \"SM Approved\"\n | \"SM Rejected\"\n | \"Confirm In Progress\"\n | \"Cancel In Progress\"\n | \"Recall In Progress\"\n | \"Confirmed\"\n | \"Cancelled\"\n | \"Recalled\";\n\nexport interface IntelliFilter {\n text: string;\n isActive: boolean;\n isDisabled: boolean;\n isShown: boolean;\n}\n\nexport interface ITotalRowRadioButtonData {\n value: TotalRowActionColumnPossibleValues;\n label: TotalRowActionColumnPossibleLabels;\n class: string;\n disabled: boolean;\n iconClass: string[];\n}","import { IActionItemTypeWithStringIconOrTextAction, ISvgOrIconTypeInGTTable, SvgOrIconNames } from \"@annalib/anna-core\";\nimport { BizHistoryType, OrderRoute } from \"@annalib/anna-feature-lib/anna-feature-shared-lib\";\nimport { cloneDeep } from \"lodash-es\";\n\nimport { RevisionTypeConstants } from \"../constants/spots-approval.constant\";\nimport { GenericSpotsApprovalService } from \"../services/generic-spots-approval.service\";\nimport { IANNARevisionBEResponse, IBadlyBehavedSpotAdditionalInfo } from \"./anna-revisions-backend.model\";\nimport { ANNAREVISIONSTAGES, DisplaySpotTypeFromBE, ESTIMATEPRIORITIES, OfferStatusFromBE, REVISIONTYPES, SpotaApprovalIRadioButton, SPOTCATEGORIES, SpotTypeCategoryFromBE, UndoOrReofferOrCancelAction } from \"./anna-revisions-enums.model\";\n\nexport class ANNARevisionSpotsApprovalResponse {\n braodcastTime: string;\n enableRevenueClassEdit: boolean;\n orderInfo: OrderInfoForANNARevision;\n revisionSummary: ANNARevisionSummary;\n offeredMGsAndADUs: AdditionalSpotInformation[] = [];\n outstandingSpots: AdditionalSpotInformation[] = [];\n badlyBehavedSpots: AdditionalSpotInformation[] = [];\n offerCreationDropDown: { Name: string, RevenueClass: string, IsAdu: boolean }[];\n constructor(\n data: IANNARevisionBEResponse,\n showBadlyBehavedSpotsTooltipCellLevel: boolean,\n showAUR: boolean,\n revisionType: REVISIONTYPES,\n ) {\n this.braodcastTime = data.BroadcastTime;\n this.enableRevenueClassEdit = data.EnableRevenueClassEdit;\n this.orderInfo = new OrderInfoForANNARevision(data.OrderInfo);\n this.revisionSummary = new ANNARevisionSummary(data.RevisionSummary);\n this.offerCreationDropDown = (data.OfferCreationDropDown);\n\n const badlyBehavedSpotsGroupIds: string[] = data.BadlyBehavedInfo.map(n => n.GroupId);\n data.OfferedMGsAndADUs.filter((n: any) => !n.IsRemovedFromGroup)\n .forEach((item: any) => {\n if (badlyBehavedSpotsGroupIds.includes(item.NewGroupId)) {\n const bbSpot = { ...item, ...data.BadlyBehavedInfo?.filter((n: IBadlyBehavedSpotAdditionalInfo) => n.SpotId === item.NewSpotId)[0] }\n this.badlyBehavedSpots.push(\n new AdditionalSpotInformation(\n bbSpot,\n this.orderInfo,\n \"BadlyBehavedInfo\",\n \"badlyBehavedSpots\",\n showBadlyBehavedSpotsTooltipCellLevel,\n showAUR,\n revisionType,\n ),\n );\n } else {\n this.offeredMGsAndADUs.push(\n new AdditionalSpotInformation(\n item,\n this.orderInfo,\n \"OfferedMGsAndADUs\",\n \"offeredMGsAndADUs\",\n showBadlyBehavedSpotsTooltipCellLevel,\n showAUR,\n revisionType,\n ),\n );\n }\n });\n data.OutstandingSpots.forEach((item: any) => {\n this.outstandingSpots.push(\n new AdditionalSpotInformation(\n item,\n this.orderInfo,\n \"OutstandingSpots\",\n \"outstandingSpots\",\n showBadlyBehavedSpotsTooltipCellLevel,\n showAUR,\n revisionType,\n ),\n );\n });\n }\n}\n\nexport class BaseRevisionSummary {\n equivalisation: boolean;\n tgName: string;\n advertiser: string;\n agency: string;\n isDeletedAtTraffic: boolean;\n booked: CPPCPMCostRTGIMPS;\n tgId: number;\n\n constructor(data: any) {\n this.booked = data.Booked;\n this.equivalisation = data.Equivalisation;\n this.tgName = data.TgName;\n this.advertiser = data.Advertiser;\n this.agency = data.Agency;\n this.tgId = data.TgId;\n this.isDeletedAtTraffic = data.IsDeletedAtTraffic;\n }\n}\n\nexport class ANNARevisionSummary extends BaseRevisionSummary {\n offeredMakegoods: CPPCPMCostRTGIMPS;\n offeredADUs: CPPCPMCostRTGIMPS;\n OutstandingSpots: CPPCPMCostRTGIMPS;\n ANNACredited: CPPCPMCostRTGIMPS;\n UDProjection: CPPCPMCostRTGIMPS;\n UD: CPPCPMCostRTGIMPS;\n BusinessRuleADUPostingBasedOn: \"PROJECTED\" | \"POSTED\" | \"DISABLED/NOT_SELECTED\";\n\n constructor(data: any) {\n super(data);\n this.offeredMakegoods = data.OfferedMakegoods;\n this.offeredADUs = data.OfferedADUs;\n this.OutstandingSpots = data.OutstandingSpots;\n this.ANNACredited = data.ANNACredited;\n this.UD = data.UD;\n this.UDProjection = data.UDProjection;\n }\n}\n\nexport interface CPPCPMCostRTGIMPS {\n CPP?: string;\n CPM?: string;\n Cost: string;\n Ratings: string;\n Impressions: string;\n}\n\nexport class OrderInfoForANNARevision {\n station: string;\n orderId: string;\n revisionNumber: number;\n revisedOn: string;\n timeZone: string;\n orderType: OrderRoute;\n isRepOrder: boolean;\n aeName: string;\n metric: \"Ratings\" | \"Impressions\";\n showWriteEnabledPopup: boolean;\n isPayForPerformanceOrder: boolean;\n orderBizRuleStatus: null | string;\n inheritedLevel: BizHistoryType;\n approvedByBuyerName: null | string;\n businessRuleApprovedDate: null | string;\n businessRuleApprovedTime: null | string;\n isOrderLevelBusinessRuleSet: boolean;\n revisionType: REVISIONTYPES;\n alternateOrderId: string;\n isOngoingTemporaryRevisionAfterTransition: boolean;\n universeSize: number;\n isDeletedAtTraffic: boolean;\n businessHistoryId: null | string;\n advertiserName: null | string;\n advertiserId: number;\n spDayparts: string[];\n aeEmailId: string;\n salesSupportEmail: string;\n disableOffersReportDownloadIcon: boolean;\n lastEditedBy: string | null;\n lastEditedAt: string | null;\n estimatePriority: ESTIMATEPRIORITIES[];\n flightStartDate: string;\n flightEndDate: string;\n hiatusPeriod: { StartDate: string; EndDate: string }[];\n firstBookedSpotDate: string;\n lastBookedSpotDate: string;\n placedWeeks: string[];\n\n durations: { DisplayDuration: string, Duration: number, SpotTypeId: number }[];\n showOverDeliveryWarning: boolean;\n overDeliveryValue: number;\n isReadMode: boolean;\n status: {\n IsCurrent: boolean;\n Status: ANNAREVISIONSTAGES;\n OffersRequiringAttentionCount: number;\n OffersRequiringActionCount: number;\n ShowNeedsAttentionIcon: boolean;\n Action: \"ShowTime\" | \"NoAction\" | \"ShowTimeout\" | \"AutoRejected\" | \"Skipped\";\n }[];\n sellerActionForOfferedMgAduTakenBy: string;\n sellerActionForOsPeTakenBy: string;\n sellerApprovalTimeForOsPe: string;\n sellerApprovalTime: string;\n sellerApprovalTimeout: string;\n sellerReviewTime: string;\n sellerReviewTimeout: string;\n buyerApprovalTime: string;\n buyerApprovalTimeout: string;\n buyerActionTakenBy: string;\n reasonForNoRevision: null | string;\n orderDiscrepancyExists: boolean;\n intermediateOrderStatus: { Message: null | string; ShowMessageAfterStatus: null | ANNAREVISIONSTAGES };\n pendingEcOrderStatus: string;\n enableSubmitForMGADUFilter: boolean;\n enableSubmitForOSPEFilter: boolean;\n showSubmitButton: boolean;\n anyActionsAllowed: boolean;\n showUnmappedBuyerLineWarningMessage: boolean;\n isSellerReconfirmationNeeded: boolean;\n\n constructor(data: any) {\n\n this.station = data.Station;\n this.orderId = data.OrderId;\n this.spDayparts = data.SpDayparts;\n this.revisionNumber = data.RevisionNumber;\n this.revisedOn = data.RevisedOn;\n this.timeZone = data.TimeZone;\n this.orderType = data.OrderType;\n this.isRepOrder = data.IsRepOrder;\n this.aeName = data.AEName;\n this.aeEmailId = data.AEEmailId;\n this.metric = data.Metric;\n this.showWriteEnabledPopup = data.IsAutomated;\n this.isPayForPerformanceOrder = data.IsPayForPerformanceOrder;\n this.orderBizRuleStatus = data.OrderBizRuleStatus;\n this.inheritedLevel = data.InheritedLevel;\n this.approvedByBuyerName = data.ApprovedByBuyerName;\n this.businessRuleApprovedDate = data.BusinessRuleApprovedDate;\n this.businessRuleApprovedTime = data.BusinessRuleApprovedTime;\n this.isOrderLevelBusinessRuleSet = data.IsOrderLevelBusinessRuleSet;\n this.revisionType = data.RevisionType;\n this.alternateOrderId = data.AlternateOrderId;\n this.isOngoingTemporaryRevisionAfterTransition = data.IsOngoingTemporaryRevisionAfterTransition;\n this.universeSize = data.UniverseSize;\n this.isDeletedAtTraffic = data.IsDeletedAtTraffic;\n this.businessHistoryId = data.BusinessHistoryId;\n this.advertiserName = data.AdvertiserName;\n this.salesSupportEmail = data.SalesSupportEmailId;\n this.disableOffersReportDownloadIcon = data.DisableOffersReportDownloadIcon;\n this.lastEditedBy = data.LastEditedBy;\n this.lastEditedAt = data.LastEditedAt;\n this.estimatePriority = data.EstimatePriority;\n this.flightStartDate = data.FlightStartDate;\n this.flightEndDate = data.FlightEndDate;\n this.firstBookedSpotDate = data.FirstBookedSpotDate;\n this.hiatusPeriod = data.HiatusPeriod;\n this.lastBookedSpotDate = data.LastBookedSpotDate;\n this.placedWeeks = data.PlacedWeeks;\n\n this.durations = data.Durations;\n this.showOverDeliveryWarning = data.ShowOverDeliveryWarning;\n this.overDeliveryValue = data.OverDeliveryValue;\n this.isReadMode = data.IsReadMode;\n this.enableSubmitForMGADUFilter = data.EnableSubmitForMGADUFilter;\n this.enableSubmitForOSPEFilter = data.EnableSubmitForOSPEFilter;\n this.showUnmappedBuyerLineWarningMessage = data.ShowUnmappedBuyerLineWarning;\n\n this.showSubmitButton = data.ShowSubmitButton;\n\n this.intermediateOrderStatus = data.IntermediateOrderStatus;\n this.sellerActionForOfferedMgAduTakenBy = data.SellerActionForOfferedMgAduTakenBy;\n this.sellerActionForOsPeTakenBy = data.SellerActionForOsPeTakenBy;\n this.sellerApprovalTimeForOsPe = data.SellerApprovalTimeForOsPe;\n this.sellerApprovalTime = data.SellerApprovalTime;\n this.sellerApprovalTimeout = data.SellerApprovalTimeout;\n this.sellerReviewTime = data.SellerReviewTime;\n this.sellerReviewTimeout = data.SellerReviewTimeout;\n this.buyerApprovalTime = data.BuyerApprovalTime;\n this.buyerApprovalTimeout = data.BuyerApprovalTimeout;\n this.buyerActionTakenBy = data.BuyerActionTakenBy;\n this.advertiserId = data.AdvertiserId;\n this.reasonForNoRevision = data.ReasonForNoRevision;\n this.orderDiscrepancyExists = data.OrderDiscrepancyExists;\n this.status = data.Status;\n this.pendingEcOrderStatus = data.OrderStatus;\n this.anyActionsAllowed = data.AnyActionsAllowed;\n this.isSellerReconfirmationNeeded = data.IsSellerReconfirmationNeeded;\n }\n}\n\nexport class SpotInformation {\n ProgramId: string;\n ProgramScheduleId: string;\n sellerLine: number;\n spotId: string;\n uniqueId: string;\n groupableId: string;\n offerStatus: OfferStatusFromBE;\n spotTypeCategory: SpotTypeCategoryFromBE;\n displaySpotType: DisplaySpotTypeFromBE;\n origin: null;\n lineNumber: string;\n weekStartDate: string;\n actualWeekStartDate: string;\n length: string;\n daypart: string;\n inventoryCode: string;\n rate: number;\n actualRate: number;\n ratings: number;\n impressions: number;\n actualRatings: number;\n actualImpressions: number;\n groupId: string | \"00000000-0000-0000-0000-000000000000\";\n allowedActions: any;\n enableAllowedActions: boolean;\n spotInsertionRevisionNumber: number;\n spotRemovedRevisionNumber: number;\n remarks: string;\n preemptMessages: string;\n trafficActionBy: string;\n isMappedWithRep: boolean;\n buyerLine: string;\n buyerProgramName: string;\n sellerProgramName: string;\n isBuyerProgramNameEditable: boolean;\n restrictedStartTime: string;\n restrictedEndTime: string;\n weekDay: string;\n weeklyAUR: number;\n weeklyAURatings: number;\n weeklyAUImpressions: number;\n highlightRates: boolean;\n highlightRtgOrImps: boolean;\n projectedImps: number;\n projectedRtg: number;\n solvedType: null;\n ratingUsedToSolve: number;\n impressionUsedToSolve: number;\n approveOfferComment: string;\n rejectOfferComments: string[];\n markForCreditComment: string;\n sellerCancellationComment: string;\n reOfferComment: string;\n excludeFromFutureOffers: boolean;\n offerNumber: null | string;\n revenueClass: string;\n time: string;\n date: string;\n days: string;\n adBreakId: number;\n duration: number;\n inventoryCodeId: number;\n daypartId: number;\n priorityCodeId: number;\n bookedImpression: number;\n bookedRating: number;\n rollingEstimateImpression: number;\n rollingEstimateRating: number;\n stationEstimateImpression: number;\n stationEstimateRating: number;\n makeGoodsOfferNumber: string;\n startTime: string;\n endTime: string;\n isGroupModified: boolean;\n groupModifiedBy: null | string;\n isAddedInGroup: boolean;\n isRemovedFromGroup: boolean;\n groupTableId: number | null;\n newOfferId: number;\n isRatingImpressionBumped: boolean;\n bizRules: {\n MaxSpotsPerPremption: number | null;\n MinimumGrp: number | null;\n MaxSpotsAllowedInOTO: {\n PerHalfHour: number | null;\n HalfHourToOneHour: number | null;\n OneHourToTwoHours: number | null;\n TwoHoursToThreeHours: number | null;\n ThreeHoursPlus: number | null;\n };\n MaxSpotsAllowedInStripDaily: {\n PerHalfHour: number | null;\n HalfHourToOneHour: number | null;\n OneHourToTwoHours: number | null;\n TwoHoursPlus: number | null;\n };\n MaxSpotsAllowedInStripWeekly: {\n PerHalfHour: number | null;\n HalfHourToOneHour: number | null;\n OneHourToTwoHours: number | null;\n TwoHoursPlus: number | null;\n };\n };\n\n daypartTooltipForSportsDP: { key: string }[] = [];\n daypartActionKeyForIcon: {\n dataToDisplay: string;\n tooltipIconClass: string;\n disableTooltip: boolean;\n tooltipPosition: string;\n showTooltip: boolean;\n }[] = [];\n isFreeFlowGroup: boolean;\n\n allowEdit: boolean;\n allowUndo: boolean;\n showUndo: boolean;\n disableUndo: boolean;\n allowReOffer: boolean;\n allowCancel: boolean;\n undoBy: string;\n reofferBy: string;\n cancelledBy: string;\n cancellationStatus: string;\n showNoReOfferToolTip: boolean;\n\n offerIdWithStatusTagText: ISvgOrIconTypeInGTTable[] = [];\n spotTypeActionKey: ISvgOrIconTypeInGTTable[] = [];\n sellerAttentionIcon: ISvgOrIconTypeInGTTable[] = [];\n lastEditedOrAddedBy: string = \"\";\n lastUpdatedOn: string;\n\n sellerLineActionKey: IActionItemTypeWithStringIconOrTextAction[] = [];\n sellerLineTooltipKey: { key: string; value: string }[] = [];\n\n unmappedBuyerLineWarningIcon: ISvgOrIconTypeInGTTable[] = [];\n\n allowActionInRejectionPopup: boolean;\n showActionInRejectionPopup: boolean;\n rejectionHeader: string;\n\n totalAmount: number;\n displayTotalAmount: string;\n\n totalGrp: number;\n displayTotalGrp: string;\n\n totalImps: number;\n displayTotalImps: string;\n\n previousActualRate: number;\n previousActualRatings: number;\n previousActualImpressions: number;\n\n badlyBehavedSpotOrderId?: string;\n badlyBehavedSpotRateImpactToolTipMessage?: string;\n rateImpactValue?: string;\n\n constructor(data: any, orderInfo: OrderInfoForANNARevision, key: SPOTCATEGORIES) {\n this.spotId = data.NewSpotId;\n this.sellerLine = data.SellerLine;\n this.uniqueId = data.UniqueId;\n this.groupableId = data.GroupableId;\n this.offerStatus = data.OfferStatus;\n this.origin = data.Origin;\n this.lineNumber = data.LineNumber;\n this.isRatingImpressionBumped = data.IsRatingImpressionBumped;\n this.weekStartDate = data.WeekStartDate;\n this.actualWeekStartDate = data.ActualWeekStartDate;\n this.length = data.Length;\n this.daypart = data.Daypart;\n this.lastUpdatedOn = data.LastUpdatedOn ? `Last updated: ${data.LastUpdatedOn}` : null;\n const needSellerAttention = data?.NeedSellerAttentionForOffer ? data?.NeedSellerAttentionForOffer : false;\n\n this.sellerAttentionIcon = [\n {\n showObjectKey: false,\n svgOrIconName: needSellerAttention ? SvgOrIconNames.WARNING_ICON : null,\n svgOrIconTooltipMsg: needSellerAttention ? \"Need seller attention\" : null,\n },\n ];\n const showUnMappedBuyerLineWarningIcon = data?.ShowUnmappedBuyerLineWarning || false;\n this.unmappedBuyerLineWarningIcon = [\n {\n showObjectKey: false,\n svgOrIconName: showUnMappedBuyerLineWarningIcon ? SvgOrIconNames.WARNING_ICON : null,\n },\n ];\n const showTooltipForSportsDP = key === \"OfferedMGsAndADUs\" && orderInfo.spDayparts.includes(this.daypart);\n this.daypartActionKeyForIcon = [\n {\n dataToDisplay: this.daypart,\n tooltipIconClass: \"mdi mdi-information-outline ml-4\",\n showTooltip: showTooltipForSportsDP,\n disableTooltip: !showTooltipForSportsDP,\n tooltipPosition: \"auto\",\n },\n ];\n if (showTooltipForSportsDP) {\n this.daypartTooltipForSportsDP = [\n {\n key: \"Approval is always required for all offers with Daypart as ‘SP’.\",\n },\n ];\n }\n this.inventoryCode = data.InventoryCode;\n this.rate = data.Rate;\n this.actualRate = data.ActualRate;\n this.ratings = data.Ratings;\n this.impressions = data.Impressions;\n this.actualRatings = data.ActualRatings;\n this.actualImpressions = data.ActualImpressions;\n this.groupId = data.NewGroupId;\n this.spotTypeCategory = data.SpotType;\n this.allowedActions = data.AllowedActions;\n this.enableAllowedActions = data.EnableAllowedActions;\n this.spotInsertionRevisionNumber = data.SpotInsertionRevisionNumber;\n this.spotRemovedRevisionNumber = data.SpotRemovedRevisionNumber;\n this.remarks = data.Remarks;\n this.trafficActionBy = data.TrafficActionBy;\n this.isMappedWithRep = data.IsMappedWithRep;\n this.buyerLine = data.BuyerLine;\n this.buyerProgramName = data.BuyerProgramName;\n this.sellerProgramName = data.SellerProgramName;\n this.isBuyerProgramNameEditable = data.IsBuyerProgramNameEditable;\n this.restrictedStartTime = data.RestrictedStartTime;\n this.restrictedEndTime = data.RestrictedEndTime;\n this.weekDay = data.Time ? `${data.WeekDay} & ${data.Time}` : `${data.WeekDay}`;\n this.weeklyAUR = data.WeeklyAUR;\n this.weeklyAURatings = data.WeeklyAURatings;\n this.weeklyAUImpressions = data.WeeklyAUImpressions;\n this.highlightRates = data.HighlightRate;\n this.highlightRtgOrImps = data.HighlightRatingOrImpressions;\n this.projectedRtg = data.ProjectedRatings;\n this.projectedImps = data.ProjectedImpressions;\n this.solvedType = data.SolvedType;\n this.ratingUsedToSolve = data.RatingUsedToSolve;\n this.impressionUsedToSolve = data.ImpressionUsedToSolve;\n\n this.approveOfferComment = data.ApproveOfferComment;\n this.markForCreditComment = data.MarkForCreditComment;\n this.rejectOfferComments = data.RejectOfferComments;\n this.reOfferComment = data.ReofferComment;\n this.sellerCancellationComment = data.SellerCancellationComment;\n\n this.excludeFromFutureOffers = data.ExcludeFromFutureOffers;\n this.offerNumber = data.OfferNumber;\n this.makeGoodsOfferNumber = \"\";\n if (data.OfferNumber) {\n this.makeGoodsOfferNumber = `Offer: ${data.OfferNumber}`;\n }\n this.revenueClass = data.RevenueClass;\n this.time = data.Time;\n this.revenueClass = data.RevenueClass;\n this.date = data.Date;\n this.days = data.Days;\n this.adBreakId = data.AdBreakId;\n this.duration = data.Duration;\n this.inventoryCodeId = data.InventoryCodeId;\n this.daypartId = data.DaypartId;\n this.priorityCodeId = data.PriorityCodeId;\n this.bookedImpression = data.BookedImpression;\n this.bookedRating = data.BookedRating;\n this.rollingEstimateImpression = data.RollingEstimateImpression;\n this.rollingEstimateRating = data.RollingEstimateRating;\n this.stationEstimateImpression = data.StationEstimateImpression;\n this.stationEstimateRating = data.StationEstimateRating;\n this.startTime = data.StartTime;\n this.endTime = data.EndTime;\n this.isGroupModified = data.IsGroupModified;\n this.groupModifiedBy = data.GroupModifiedBy;\n this.isAddedInGroup = data.IsAddedInGroup;\n this.isRemovedFromGroup = data.IsRemovedFromGroup;\n this.groupTableId = data.GroupTableId;\n this.newOfferId = data.NewOfferGuId;\n this.offerIdWithStatusTagText = [\n {\n showObjectKey: false,\n additionalText: data.OfferNumber,\n additionalTextClass: \"\",\n },\n {\n showObjectKey: false,\n additionalText: this.offerStatus,\n additionalTextClass: this.offerStatus === \"-\" ? \"\" : `status-tag ${GenericSpotsApprovalService.getClassNameFromOffersStatus(data.OfferStatus)}`,\n },\n ];\n\n this.preemptMessages = data.PreemptMessages;\n const isPESpotExcludedFromFuture =\n data.ExcludeFromFutureOffers &&\n (this.spotTypeCategory === \"PREEMPTION\" || this.spotTypeCategory === \"UNRESOLVED\");\n const isPESpotExcludedFromFutureMsg = \"This preemption has been excluded from further attempts for MakeGoods\";\n\n this.displaySpotType = data.DisplaySpotType;\n this.spotTypeActionKey = [\n {\n showObjectKey: false,\n additionalText: this.displaySpotType,\n },\n {\n showObjectKey: false,\n svgOrIconName:\n GenericSpotsApprovalService.reinitialseFilter && isPESpotExcludedFromFuture\n ? SvgOrIconNames.CANCEL_ICON\n : null,\n svgOrIconTooltipMsg: GenericSpotsApprovalService.reinitialseFilter\n ? isPESpotExcludedFromFutureMsg\n : null,\n },\n {\n showObjectKey: false,\n svgOrIconName: data.Remarks ? SvgOrIconNames.INFORMATION_OUTLINE_ICON : null,\n svgOrIconTooltipMsg: data.Remarks,\n },\n {\n showObjectKey: false,\n svgOrIconName:\n // eslint-disable-next-line no-nested-ternary\n data.PreemptMessages\n ? key === \"OutstandingSpots\"\n ? SvgOrIconNames.ALERT_OCTAGON_ICON\n : SvgOrIconNames.INFORMATION_OUTLINE_ICON\n : null,\n svgOrIconTooltipMsg: data.PreemptMessages,\n },\n {\n showObjectKey: false,\n svgOrIconName: data.SpotTypeToolTipMessage ? SvgOrIconNames.INFORMATION_OUTLINE_ICON : null,\n svgOrIconTooltipMsg: data.SpotTypeToolTipMessage,\n },\n ];\n\n this.sellerLineActionKey = [\n {\n id: \"SellerLineBBSDetails\",\n additionalTextBeforeLink: `${data.SellerLine} ${data.BbsOrderId ? ` (` : ''}`,\n typeOfData: null,\n showLink: data.BbsOrderId,\n linkClass: \"anna-link\",\n additionalTextAfterLink: data.BbsOrderId ? `)` : '',\n data: data.BbsOrderId,\n showIcon: false,\n showTooltip: false,\n linkTooltip: \"click here to see the details of the badly behaved spot\"\n },\n ];\n this.bizRules = data.BizRules;\n this.isFreeFlowGroup = data.IsFreeFlowGroup;\n this.allowCancel = data.AllowCancel;\n this.allowUndo = data?.AllowUndo;\n this.showUndo = data.ShowUndo;\n this.disableUndo = data.DisableUndo;\n this.allowReOffer = data.AllowReoffer;\n this.allowEdit = data.AllowEdit;\n this.showNoReOfferToolTip = data?.ShowNoReOfferToolTip;\n\n this.undoBy = data.undoBy ? data.undoBy : null;\n this.reofferBy = data.ReofferBy ? data.ReofferBy : null;\n this.cancelledBy = data.CancelledBy ? data.CancelledBy : null;\n this.cancellationStatus = data.CancellationStatus;\n this.allowActionInRejectionPopup = data.AllowActionInRejectionPopup;\n this.showActionInRejectionPopup = data.ShowActionInRejectionPopup;\n this.rejectionHeader = data.RejectionHeader;\n\n this.totalAmount = data.Amount;\n this.displayTotalAmount = data.DisplayAmount;\n this.totalGrp = data.Grp;\n this.displayTotalGrp = data.DisplayGrp;\n this.totalImps = data.Gi;\n this.displayTotalImps = data.DisplayGi;\n\n this.previousActualRate = data.PreviousActualRate;\n this.previousActualRatings = data.PreviousActualRatings;\n this.previousActualImpressions = data.PreviousActualImpressions;\n this.badlyBehavedSpotOrderId = data.BbsOrderId;\n this.badlyBehavedSpotRateImpactToolTipMessage = data.RateImpactToolTipMessage;\n this.rateImpactValue = data.RateImpactValue;\n }\n}\n\nexport class AdditionalSpotInformation extends SpotInformation {\n // extra keys added at UI\n displayRateTdClass: string;\n spotNumbers: string;\n totalSpotsCount: number;\n displayRate: string;\n displayWeeklyAUR: string;\n displayRating: string;\n displayImpressions: string;\n displayWeeklyAUImpressions: string;\n displayWeeklyAURatings: string;\n\n businessRules: \"Standard\" | \"Relaxed\" | \"-\" | \"Free Flow\";\n\n action: \"resubmit\" | \"approve\" | \"credit\" | \"noAction\";\n actionType: any;\n RadioButtonConfig: SpotaApprovalIRadioButton[];\n gtClass: string = \"\";\n displayRateActionKey: ISvgOrIconTypeInGTTable[];\n displayRateTooltipKey: any;\n bookedRTGActionKey: any;\n bookedRTGTooltipKey: any;\n bookedIMPSActionKey: any;\n bookedIMPSTooltipKey: any;\n statusActionKey: any;\n statusTooltipKey: any;\n editedOrAddedBy: string;\n\n hideactionTd: boolean = false;\n hidebusinessRulesTd: boolean = false;\n hideinventoryCodeTd: boolean = false;\n hidelengthTd: boolean = false;\n hidetimeTd: boolean = false;\n hideofferIdTd: boolean = false;\n hideeditUndoReofferOrCancelColumnTd: boolean = false;\n\n hidedisplaySpotTypeTd: boolean = false;\n hidedaypartTd: boolean = false;\n businessRulesRowspan: number = 1;\n offerIdRowspan: number = 1;\n editUndoReofferOrCancelColumnRowspan: number = 1;\n actionRowspan: number = 1;\n hideunmappedBuyerLineWarningIconTd: boolean = false;\n unmappedBuyerLineWarningIconRowspan: number = 1;\n lengthRowspan: number = 1;\n inventoryCodeRowspan: number = 1;\n daypartRowspan: number = 1;\n timeRowspan: number = 1;\n displaySpotTypeRowspan: number = 1;\n\n editUndoReofferOrCancelColumn: any[] = [];\n\n firstTwoEstimatePrioritiesForIMPSMetric: string;\n lastTwoEstimatePrioritiesForIMPSMetric: string;\n firstTwoEstimatePrioritiesForRTGMetric: string;\n lastTwoEstimatePrioritiesForRTGMetric: string;\n spotCategoryKeyForEasyFilters: \"offeredMGsAndADUs\" | \"outstandingSpots\" | \"badlyBehavedSpots\";\n\n approveActionLocalComment: string = null;\n rejectActionComment: string[] = null;\n creditActionComment: string = null;\n spotBelongsTo: SPOTCATEGORIES;\n showUnmappedBuyerLineWarningIcon: boolean = false;\n actualRateInNumber: any;\n actualWeeklyAUR: any;\n enableCommentEdit: boolean;\n\n constructor(\n data: any,\n orderInfo: OrderInfoForANNARevision,\n key: SPOTCATEGORIES,\n keyName:\n \"offeredMGsAndADUs\"\n | \"outstandingSpots\"\n | \"badlyBehavedSpots\",\n showBadlyBehavedSpotsTooltipCellLevel: boolean,\n showAUR: boolean,\n revisionType: RevisionTypeConstants,\n ) {\n super(data, orderInfo, key);\n this.spotNumbers = GenericSpotsApprovalService.formatArrayAsRanges(data.SpotNumbers);\n\n if (Array.isArray(data.SpotNumbers) && data.SpotNumbers?.length) {\n this.spotNumbers = data.SpotNumbers.join(\", \");\n } else {\n this.spotNumbers = \"-\";\n }\n this.showUnmappedBuyerLineWarningIcon = data.ShowUnmappedBuyerLineWarning;\n this.totalSpotsCount = data.SpotNumbers?.length;\n\n this.spotBelongsTo = cloneDeep(key);\n this.spotCategoryKeyForEasyFilters = cloneDeep(keyName);\n const estimatePrioritiesData: string[] = GenericSpotsApprovalService.returnEstimatePriorities(\n data,\n orderInfo.estimatePriority,\n );\n this.firstTwoEstimatePrioritiesForRTGMetric = estimatePrioritiesData[0];\n this.lastTwoEstimatePrioritiesForRTGMetric = estimatePrioritiesData[1];\n this.firstTwoEstimatePrioritiesForIMPSMetric = estimatePrioritiesData[2];\n this.lastTwoEstimatePrioritiesForIMPSMetric = estimatePrioritiesData[3];\n if (data.EnableAllowedActions && data.SpotType !== \"CREDIT_ADU\") {\n let editOrCreateOfferTooltip = \"Edit offer\";\n if (\n this.displaySpotType.includes(\"Outstanding PE\") ||\n (this.spotTypeCategory === \"UNRESOLVED\" && this.spotBelongsTo === \"OutstandingSpots\")\n ) {\n editOrCreateOfferTooltip = \"Create offer\";\n }\n\n const undoOffer = {\n id: UndoOrReofferOrCancelAction.EDIT_OFFER,\n showIcon: true,\n iconClass: \"mdi mdi-pencil\",\n showObjectKey: false,\n showTooltip: true,\n tooltipData: editOrCreateOfferTooltip,\n };\n this.editUndoReofferOrCancelColumn.push(undoOffer);\n }\n\n if (this.allowUndo || this.showUndo) {\n let tooltipData;\n let iconClass;\n let id;\n if (this.disableUndo) {\n id = UndoOrReofferOrCancelAction.DISABLED_UNDO_OFFER;\n iconClass = \"mdi mdi-undo disabled-icon\";\n tooltipData = \"You can not undo this offer.\";\n } else {\n id = UndoOrReofferOrCancelAction.UNDO_OFFER;\n iconClass = \"mdi mdi-undo\";\n tooltipData = \"Undo offer\";\n }\n const undoOffer = {\n id,\n showIcon: true,\n iconClass,\n showObjectKey: false,\n showTooltip: true,\n tooltipData,\n };\n this.editUndoReofferOrCancelColumn.push(undoOffer);\n }\n\n if (this.allowReOffer || this.showNoReOfferToolTip) {\n let tooltipData;\n let iconClass;\n let id;\n if (this.showNoReOfferToolTip) {\n id = UndoOrReofferOrCancelAction.DISABLED_REOFFER_OFFER;\n iconClass = \"mdi mdi-history disabled-icon\";\n tooltipData = \"You can not reoffer.\";\n } else {\n id = UndoOrReofferOrCancelAction.REOFFER;\n iconClass = \"mdi mdi-history\";\n tooltipData = \"Reoffer\";\n }\n const reoffer = {\n id,\n showIcon: true,\n iconClass,\n showObjectKey: false,\n showTooltip: true,\n tooltipData,\n };\n this.editUndoReofferOrCancelColumn.push(reoffer);\n }\n\n if (this.allowCancel) {\n const cancel = {\n id: UndoOrReofferOrCancelAction.CANCEL_OFFER,\n showIcon: true,\n iconClass: \"mdi mdi-close\",\n showObjectKey: false,\n showTooltip: true,\n tooltipData: \"Cancel offer\"\n };\n this.editUndoReofferOrCancelColumn.push(cancel);\n }\n\n this.businessRules = data.BusinessRules;\n this.displayRate = data.DisplayRate;\n this.displayWeeklyAUR = data.DisplayWeeklyAUR;\n this.actualRateInNumber = data.ActualRate;\n this.actualWeeklyAUR = data.WeeklyAUR;\n this.displayRating = this.actualRatings\n ? this.actualRatings.toLocaleString(\"en-us\", {\n minimumFractionDigits: 0,\n maximumFractionDigits: 2,\n })\n : \"-\";\n this.displayImpressions = this.actualImpressions\n ? this.actualImpressions.toLocaleString(\"en-us\", {\n minimumFractionDigits: 0,\n maximumFractionDigits: 1,\n })\n : \"-\";\n this.displayWeeklyAUImpressions = this.weeklyAUImpressions\n ? this.weeklyAUImpressions.toLocaleString(\"en-us\", {\n minimumFractionDigits: 0,\n maximumFractionDigits: 1,\n })\n : \"-\";\n this.displayWeeklyAURatings = this.weeklyAURatings\n ? this.weeklyAURatings.toLocaleString(\"en-us\", {\n minimumFractionDigits: 0,\n maximumFractionDigits: 2,\n })\n : \"-\";\n this.displayRateActionKey = new DisplayRate(\n data,\n showBadlyBehavedSpotsTooltipCellLevel,\n showAUR,\n revisionType,\n ).arrayToReturn;\n this.enableCommentEdit = cloneDeep(this.enableAllowedActions);\n }\n}\n\nexport interface AcquireLockResponse {\n orderId: string;\n lockAcquired: true;\n timeoutInSeconds: 600;\n lockAcquiredByUserId: number | null;\n lockAcquiredByUserName: string;\n}\n\nexport class DisplayRate {\n arrayToReturn: any[] = [];\n\n constructor(\n data: any,\n showBadlyBehavedSpotsTooltipCellLevel: boolean,\n showAUR: boolean,\n revisionType: RevisionTypeConstants,\n ) {\n this.arrayToReturn = [\n {\n showObjectKey: true,\n },\n ];\n\n let svgOrIconTooltipMsg: string | string[] = [];\n if (showAUR && showBadlyBehavedSpotsTooltipCellLevel && data.HighlightRate) {\n svgOrIconTooltipMsg.push(\n `<span class=\"rate-msg\">Booked Rate is less than ${data.LowerLimitForBookedRate}% of the Booked Average Rate</span>`,\n );\n }\n\n if (\n revisionType === RevisionTypeConstants.BUYER &&\n data.previousActualRate !== data.actualRate &&\n (data.displaySpotType === \"Rate Change\" ||\n data.displaySpotType === \"Rating/IMPS Change\" ||\n data.displaySpotType === \"Rate & Rating/IMPS Change\")\n ) {\n svgOrIconTooltipMsg.push(\n `The Booked Rate has been modified from $${data.previousActualRate} to $${data.actualRate}`,\n );\n }\n if (svgOrIconTooltipMsg.length > 0) {\n svgOrIconTooltipMsg =\n svgOrIconTooltipMsg.length === 1\n ? svgOrIconTooltipMsg[0]\n : GenericSpotsApprovalService.returnTooltipsAsList(svgOrIconTooltipMsg);\n }\n\n if (svgOrIconTooltipMsg.length > 0) {\n this.arrayToReturn.push({\n showObjectKey: false,\n svgOrIconName: SvgOrIconNames.INFORMATION_OUTLINE_ICON,\n svgOrIconTooltipMsg,\n });\n }\n }\n}\n","import { GenericSpotsApprovalService } from \"../services/generic-spots-approval.service\";\nimport { ESTIMATEPRIORITIES, SpotTypeCategoryFromBE } from \"./anna-revisions-enums.model\";\nimport { IADUSpotInformationForEdit, IPreemptionSpotInformationForEdit } from \"./create-or-edit-offers-popup.model\";\n\nexport interface ITotalRowForEditOrCreateOfferedADUs {\n totalRowsCount: number;\n totalMessage: string;\n totalBookedAvgRate: number;\n totalOfferedIMPSOrRtg: number;\n // totalFirstTwoEstimatePriorities: string;\n // totalLastTwoEstimatePriorities: string;\n totalOfferedRateForDisplay: string;\n totalBookedAvgRateForDisplay: string;\n totalRowAction: string;\n}\n\nexport class TotalRowForEditOfferedADUsForIMPSOrder implements ITotalRowForEditOrCreateOfferedADUs {\n totalMessage: string;\n totalRowsCount: number = 0;\n totalBookedAvgRate: number = 0;\n totalOfferedIMPSOrRtg: number = 0;\n\n // totalFirstTwoEstimatePriorities: string;\n // totalLastTwoEstimatePriorities: string;\n totalOfferedRateForDisplay: string;\n totalBookedAvgRateForDisplay: string;\n totalRowAction: string;\n\n constructor(\n data: IADUSpotInformationForEdit[],\n estimatePriorities: ESTIMATEPRIORITIES[],\n spotType: SpotTypeCategoryFromBE,\n ) {\n const dataToUseForTotalCalculation: IADUSpotInformationForEdit[] = data.filter(\n (n) => n.DisplayStatus !== \"Removed\",\n );\n const totalOfferedADUs = dataToUseForTotalCalculation.length;\n\n this.totalRowsCount = totalOfferedADUs;\n let totalOfferedRate: number = 0;\n // let totalANNAEstImps: number = 0;\n // let totalStnEstImps: number = 0;\n // let totalBuyerImps: number = 0;\n // let totalBookedAvgImps: number = 0;\n\n totalOfferedRate = dataToUseForTotalCalculation.reduce((acc, item) => acc + (item.ActualRate || 0), 0);\n this.totalBookedAvgRate = dataToUseForTotalCalculation.reduce((acc, item) => acc + (item.WeeklyAUR || 0), 0);\n this.totalOfferedIMPSOrRtg = dataToUseForTotalCalculation.reduce(\n (acc, item) => acc + (item.ActualImpressions || 0),\n 0,\n );\n // totalANNAEstImps = dataToUseForTotalCalculation.reduce((acc, item) => acc + (item.RollingEstimateImpression || 0), 0);\n // totalStnEstImps = dataToUseForTotalCalculation.reduce((acc, item) => acc + (item.StationEstimateImpression || 0), 0);\n // totalBuyerImps = dataToUseForTotalCalculation.reduce((acc, item) => acc + (item.BookedImpression || 0), 0);\n // totalBookedAvgImps = dataToUseForTotalCalculation.reduce((acc, item) => acc + (item.WeeklyAUImpressions || 0), 0);\n\n // const estimatePrioritiesData: TotalEstimatePriorites = new TotalEstimatePriorites(\n // {\n // ANNAEst: +GenericSpotsApprovalService.GetRoundedValueWithoutUnitsWithMathRound(totalANNAEstImps),\n // stationEst: +GenericSpotsApprovalService.GetRoundedValueWithoutUnitsWithMathRound(totalStnEstImps, 1),\n // buyerRtg: +GenericSpotsApprovalService.GetRoundedValueWithoutUnitsWithMathRound(totalBuyerImps,1),\n // bookedAvgRtg: +GenericSpotsApprovalService.GetRoundedValueWithoutUnitsWithMathRound(totalBookedAvgImps,1)\n // },\n // estimatePriorities);\n // this.totalFirstTwoEstimatePriorities = estimatePrioritiesData.totalFirstTwoEstimatePriorities;\n // this.totalLastTwoEstimatePriorities = estimatePrioritiesData.totalLastTwoEstimatePriorities;\n\n this.totalMessage = `Total for ${totalOfferedADUs} ${spotType === \"ADU\" ? \"Offered ADUs\" : \"Bonus Spots\"}`;\n this.totalOfferedRateForDisplay = `$${totalOfferedRate}`;\n this.totalBookedAvgRateForDisplay = `$${this.totalBookedAvgRate}`;\n }\n}\n\nexport class TotalRowForEditOfferedADUsForRtgOrder implements ITotalRowForEditOrCreateOfferedADUs {\n totalMessage: string;\n totalRowsCount: number = 0;\n totalBookedAvgRate: number = 0;\n totalOfferedIMPSOrRtg: number = 0;\n // totalFirstTwoEstimatePriorities: string;\n // totalLastTwoEstimatePriorities: string;\n totalOfferedRateForDisplay: string;\n totalBookedAvgRateForDisplay: string;\n totalRowAction: string;\n\n constructor(\n data: IADUSpotInformationForEdit[],\n estimatePriorities: ESTIMATEPRIORITIES[],\n spotType: SpotTypeCategoryFromBE,\n ) {\n const dataToUseForTotalCalculation: IADUSpotInformationForEdit[] = data.filter(\n (n) => n.DisplayStatus !== \"Removed\",\n );\n const totalOfferedADUs = dataToUseForTotalCalculation.length;\n this.totalRowsCount = totalOfferedADUs;\n\n let totalOfferedRate: number = 0;\n // let totalANNAEstRtg: number = 0;\n // let totalStnEstRtg: number = 0;\n // let totalBuyerRtg: number = 0;\n // let totalBookedAvgRtg: number = 0;\n\n totalOfferedRate = dataToUseForTotalCalculation.reduce((acc, item) => acc + (item.ActualRate || 0), 0);\n this.totalBookedAvgRate = dataToUseForTotalCalculation.reduce((acc, item) => acc + (item.WeeklyAUR || 0), 0);\n this.totalOfferedIMPSOrRtg = dataToUseForTotalCalculation.reduce(\n (acc, item) => acc + (item.ActualRatings || 0),\n 0,\n );\n // totalANNAEstRtg = dataToUseForTotalCalculation.reduce(\n // (acc, item) => acc + (item.RollingEstimateRating || 0),\n // 0,\n // );\n // totalStnEstRtg = dataToUseForTotalCalculation.reduce((acc, item) => acc + (item.StationEstimateRating || 0), 0);\n // totalBuyerRtg = dataToUseForTotalCalculation.reduce((acc, item) => acc + (item.BookedRating || 0), 0);\n // totalBookedAvgRtg = dataToUseForTotalCalculation.reduce((acc, item) => acc + (item.WeeklyAURatings || 0), 0);\n\n // const estimatePrioritiesData: TotalEstimatePriorites = new TotalEstimatePriorites(\n // {\n // ANNAEst: +GenericSpotsApprovalService.GetRoundedValueWithoutUnitsWithMathRound(totalANNAEstRtg, 2),\n // stationEst: +GenericSpotsApprovalService.GetRoundedValueWithoutUnitsWithMathRound(totalStnEstRtg, 2),\n // buyerRtg: +GenericSpotsApprovalService.GetRoundedValueWithoutUnitsWithMathRound(totalBuyerRtg, 2),\n // bookedAvgRtg: +GenericSpotsApprovalService.GetRoundedValueWithoutUnitsWithMathRound(\n // totalBookedAvgRtg,\n // 2,\n // ),\n // },\n // estimatePriorities,\n // );\n // this.totalFirstTwoEstimatePriorities = estimatePrioritiesData.totalFirstTwoEstimatePriorities;\n // this.totalLastTwoEstimatePriorities = estimatePrioritiesData.totalLastTwoEstimatePriorities;\n\n this.totalMessage = `Total for ${totalOfferedADUs} ${spotType === \"ADU\" ? \"Offered ADUs\" : \"Bonus Spots\"}`;\n this.totalOfferedRateForDisplay = `$${totalOfferedRate}`;\n this.totalBookedAvgRateForDisplay = `$${this.totalBookedAvgRate}`;\n }\n}\n\nexport class TotalRowForCreateADUsForIMPSOrder implements ITotalRowForEditOrCreateOfferedADUs {\n totalMessage: string;\n totalRowsCount: number = 0;\n totalBookedAvgRate: number = 0;\n totalOfferedIMPSOrRtg: number = 0;\n\n // totalFirstTwoEstimatePriorities: string;\n // totalLastTwoEstimatePriorities: string;\n totalOfferedRateForDisplay: string;\n totalBookedAvgRateForDisplay: string;\n totalRowAction: string;\n\n constructor(\n data: IADUSpotInformationForEdit[],\n estimatePriorities: ESTIMATEPRIORITIES[],\n spotType: SpotTypeCategoryFromBE,\n ) {\n this.totalRowsCount = data.length;\n\n let totalOfferedRate: number = 0;\n // let totalANNAEstImps: number = 0;\n // let totalStnEstImps: number = 0;\n // let totalBuyerImps: number = 0;\n // let totalBookedAvgImps: number = 0;\n\n totalOfferedRate = data.reduce((acc, item) => acc + (item.ActualRate || 0), 0);\n this.totalBookedAvgRate = data.reduce((acc, item) => acc + (item.WeeklyAUR || 0), 0);\n this.totalOfferedIMPSOrRtg = data.reduce((acc, item) => acc + (item.ActualImpressions || 0), 0);\n // totalANNAEstImps = data.reduce((acc, item) => acc + (item.RollingEstimateImpression || 0), 0);\n // totalStnEstImps = data.reduce((acc, item) => acc + (item.StationEstimateImpression || 0), 0);\n // totalBuyerImps = data.reduce((acc, item) => acc + (item.BookedImpression || 0), 0);\n // totalBookedAvgImps = data.reduce((acc, item) => acc + (item.WeeklyAUImpressions || 0), 0);\n\n // const estimatePrioritiesData: TotalEstimatePriorites = new TotalEstimatePriorites(\n // {\n // ANNAEst: +GenericSpotsApprovalService.GetRoundedValueWithoutUnitsWithMathRound(totalANNAEstImps),\n // stationEst: +GenericSpotsApprovalService.GetRoundedValueWithoutUnitsWithMathRound(totalStnEstImps, 1),\n // buyerRtg: +GenericSpotsApprovalService.GetRoundedValueWithoutUnitsWithMathRound(totalBuyerImps, 1),\n // bookedAvgRtg: +GenericSpotsApprovalService.GetRoundedValueWithoutUnitsWithMathRound(\n // totalBookedAvgImps,\n // 1,\n // ),\n // },\n // estimatePriorities,\n // );\n // this.totalFirstTwoEstimatePriorities = estimatePrioritiesData.totalFirstTwoEstimatePriorities;\n // this.totalLastTwoEstimatePriorities = estimatePrioritiesData.totalLastTwoEstimatePriorities;\n\n this.totalMessage = `Total for ${data.length} ${spotType === \"ADU\" ? \"ADUs\" : \"Bonus Spots\"}`;\n this.totalOfferedRateForDisplay = `$${totalOfferedRate}`;\n this.totalBookedAvgRateForDisplay = `$${this.totalBookedAvgRate}`;\n }\n}\n\nexport class TotalRowForCreateADUsForRtgOrder implements ITotalRowForEditOrCreateOfferedADUs {\n totalMessage: string;\n totalRowsCount: number = 0;\n totalBookedAvgRate: number = 0;\n totalOfferedIMPSOrRtg: number = 0;\n // totalFirstTwoEstimatePriorities: string;\n // totalLastTwoEstimatePriorities: string;\n totalOfferedRateForDisplay: string;\n totalBookedAvgRateForDisplay: string;\n totalRowAction: string;\n\n constructor(\n data: IADUSpotInformationForEdit[],\n estimatePriorities: ESTIMATEPRIORITIES[],\n spotType: SpotTypeCategoryFromBE,\n ) {\n let totalOfferedRate: number = 0;\n // let totalANNAEstRtg: number = 0;\n // let totalStnEstRtg: number = 0;\n // let totalBuyerRtg: number = 0;\n // let totalBookedAvgRtg: number = 0;\n\n this.totalRowsCount = data.length;\n\n totalOfferedRate = data.reduce((acc, item) => acc + (item.ActualRate || 0), 0);\n this.totalBookedAvgRate = data.reduce((acc, item) => acc + (item.WeeklyAUR || 0), 0);\n this.totalOfferedIMPSOrRtg = data.reduce((acc, item) => acc + (item.ActualRatings || 0), 0);\n // totalANNAEstRtg = data.reduce((acc, item) => acc + (item.RollingEstimateRating || 0), 0);\n // totalStnEstRtg = data.reduce((acc, item) => acc + (item.StationEstimateRating || 0), 0);\n // totalBuyerRtg = data.reduce((acc, item) => acc + (item.BookedRating || 0), 0);\n // totalBookedAvgRtg = data.reduce((acc, item) => acc + (item.WeeklyAURatings || 0), 0);\n\n // const estimatePrioritiesData: TotalEstimatePriorites = new TotalEstimatePriorites(\n // {\n // ANNAEst: +GenericSpotsApprovalService.GetRoundedValueWithoutUnitsWithMathRound(totalANNAEstRtg, 2),\n // stationEst: +GenericSpotsApprovalService.GetRoundedValueWithoutUnitsWithMathRound(totalStnEstRtg, 2),\n // buyerRtg: +GenericSpotsApprovalService.GetRoundedValueWithoutUnitsWithMathRound(totalBuyerRtg, 2),\n // bookedAvgRtg: +GenericSpotsApprovalService.GetRoundedValueWithoutUnitsWithMathRound(\n // totalBookedAvgRtg,\n // 2,\n // ),\n // },\n // estimatePriorities,\n // );\n // this.totalFirstTwoEstimatePriorities = estimatePrioritiesData.totalFirstTwoEstimatePriorities;\n // this.totalLastTwoEstimatePriorities = estimatePrioritiesData.totalLastTwoEstimatePriorities;\n\n this.totalMessage = `Total for ${data.length} ${spotType === \"ADU\" ? \"ADUs\" : \"Bonus Spots\"}`;\n this.totalOfferedRateForDisplay = `$${totalOfferedRate}`;\n this.totalBookedAvgRateForDisplay = `$${this.totalBookedAvgRate}`;\n }\n}\n\nexport class TotalRowForPreemptionsForRTGOrder {\n totalBookedRate: number = 0;\n totalBookedRtgOrIMPS: number = 0;\n // totalFirstTwoEstimatePriorities: string;\n // totalLastTwoEstimatePriorities: string;\n totalBookedRateForDisplay: string;\n\n constructor(data: IPreemptionSpotInformationForEdit[], estimatePriorities: ESTIMATEPRIORITIES[]) {\n // let totalANNAEstRtg: number = 0;\n // let totalStnEstRtg: number = 0;\n // let totalBuyerRtg: number = 0;\n // let totalBookedAvgRtg: number = 0;\n\n this.totalBookedRate = data.reduce((acc, item) => acc + (item.ActualRate || 0), 0);\n this.totalBookedRtgOrIMPS = +data.reduce((acc, item) => acc + (item.ActualRatings || 0), 0).toFixed(2);\n // totalANNAEstRtg = data.reduce((acc, item) => acc + (item.RollingEstimateRating || 0), 0);\n // totalStnEstRtg = data.reduce((acc, item) => acc + (item.StationEstimateRating || 0), 0);\n // totalBuyerRtg = data.reduce((acc, item) => acc + (item.BookedRating || 0), 0);\n // totalBookedAvgRtg = data.reduce((acc, item) => acc + (item.WeeklyAURatings || 0), 0);\n\n // const estimatePrioritiesData: TotalEstimatePriorites = new TotalEstimatePriorites(\n // {\n // ANNAEst: +GenericSpotsApprovalService.GetRoundedValueWithoutUnitsWithMathRound(totalANNAEstRtg, 2),\n // stationEst: +GenericSpotsApprovalService.GetRoundedValueWithoutUnitsWithMathRound(totalStnEstRtg, 2),\n // buyerRtg: +GenericSpotsApprovalService.GetRoundedValueWithoutUnitsWithMathRound(totalBuyerRtg, 2),\n // bookedAvgRtg: +GenericSpotsApprovalService.GetRoundedValueWithoutUnitsWithMathRound(\n // totalBookedAvgRtg,\n // 2,\n // ),\n // },\n // estimatePriorities,\n // );\n // this.totalFirstTwoEstimatePriorities = estimatePrioritiesData.totalFirstTwoEstimatePriorities;\n // this.totalLastTwoEstimatePriorities = estimatePrioritiesData.totalLastTwoEstimatePriorities;\n this.totalBookedRateForDisplay = `$${this.totalBookedRate}`;\n }\n}\n\nexport class TotalRowForPreemptionsForIMPSOrder {\n totalBookedRate: number = 0;\n totalBookedRtgOrIMPS: number = 0;\n // totalFirstTwoEstimatePriorities: string;\n // totalLastTwoEstimatePriorities: string;\n totalBookedRateForDisplay: string;\n\n constructor(data: IPreemptionSpotInformationForEdit[], estimatePriorities: ESTIMATEPRIORITIES[]) {\n // let totalANNAEstImps: number = 0;\n // let totalStnEstImps: number = 0;\n // let totalBuyerImps: number = 0;\n // let totalBookedAvgImps: number = 0;\n\n this.totalBookedRate = data.reduce((acc, item) => acc + (item.ActualRate || 0), 0);\n this.totalBookedRtgOrIMPS = +data.reduce((acc, item) => acc + (item.ActualImpressions || 0), 0).toFixed(1);\n // totalANNAEstImps = data.reduce((acc, item) => acc + (item.RollingEstimateImpression || 0), 0);\n // totalStnEstImps = data.reduce((acc, item) => acc + (item.StationEstimateImpression || 0), 0);\n // totalBuyerImps = data.reduce((acc, item) => acc + (item.BookedImpression || 0), 0);\n // totalBookedAvgImps = data.reduce((acc, item) => acc + (item.WeeklyAUImpressions || 0), 0);\n\n // const estimatePrioritiesData: TotalEstimatePriorites = new TotalEstimatePriorites(\n // {\n // ANNAEst: +GenericSpotsApprovalService.GetRoundedValueWithoutUnitsWithMathRound(totalANNAEstImps, 1),\n // stationEst: +GenericSpotsApprovalService.GetRoundedValueWithoutUnitsWithMathRound(totalStnEstImps, 1),\n // buyerRtg: +GenericSpotsApprovalService.GetRoundedValueWithoutUnitsWithMathRound(totalBuyerImps, 1),\n // bookedAvgRtg: +GenericSpotsApprovalService.GetRoundedValueWithoutUnitsWithMathRound(\n // totalBookedAvgImps,\n // 1,\n // ),\n // },\n // estimatePriorities,\n // );\n // this.totalFirstTwoEstimatePriorities = estimatePrioritiesData.totalFirstTwoEstimatePriorities;\n // this.totalLastTwoEstimatePriorities = estimatePrioritiesData.totalLastTwoEstimatePriorities;\n this.totalBookedRateForDisplay = `$${this.totalBookedRate}`;\n }\n}\n\nexport class TotalEstimatePriorites {\n totalFirstTwoEstimatePriorities: string;\n totalLastTwoEstimatePriorities: string;\n constructor(\n data: {\n ANNAEst: number;\n stationEst: number;\n buyerRtg: number;\n bookedAvgRtg: number;\n },\n estimatePriorities: ESTIMATEPRIORITIES[],\n ) {\n const estimatePrioritiesData = GenericSpotsApprovalService.returnEstimatePrioritiesForTotals(\n {\n ANNAEstimate: data.ANNAEst,\n stnEstimate: data.stationEst,\n buyerEstimate: data.buyerRtg,\n bookedAvgEstimate: data.bookedAvgRtg,\n },\n estimatePriorities,\n );\n this.totalFirstTwoEstimatePriorities = estimatePrioritiesData[0];\n this.totalLastTwoEstimatePriorities = estimatePrioritiesData[1];\n }\n}\n","import { NgIf } from \"@angular/common\";\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild,\n} from \"@angular/core\";\nimport {\n AnnaCoreModule,\n AnnaFilterService,\n AnnaGlobalConfigService,\n AnnaGtHelperService,\n AnnaNonEditableGenericTableComponent,\n AnnaSortService,\n IGtGeneralConfig,\n IGtTableHeader,\n} from \"@annalib/anna-core\";\nimport { cloneDeep } from \"lodash-es\";\n\nimport { IAvailableSpotInformationForEdit } from \"../models/create-or-edit-offers-popup.model\";\n\n@Component({\n selector: \"anna-feature-other-spots-edit-table\",\n templateUrl: \"./other-spots-edit-table.component.html\",\n styleUrls: [\"./other-spots-edit-table.component.scss\"],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AnnaCoreModule, NgIf],\n providers: [AnnaFilterService, AnnaSortService, AnnaGtHelperService]\n})\nexport class OtherSpotsEditTableComponent implements OnInit, OnChanges {\n @Input() title: string;\n @Input() tableHeaders: IGtTableHeader[];\n @Input() spots: IAvailableSpotInformationForEdit[] = [];\n @Input() spotsForDisplay: IAvailableSpotInformationForEdit[] = [];\n @Input() showTableSkeletonLoader: boolean;\n @Input() revisedOnDate: string;\n @Input() resetFiltersAndSorting: boolean;\n @Input() applyFiltersAndSorting: boolean;\n @Input() gtClass: string;\n\n @Output() spotsActionClicked = new EventEmitter();\n @Output() filterSortingApplied = new EventEmitter();\n\n gtDimension = {\n rowHeight: 40,\n headerHeight: 40,\n dataOnTopHeight: 422,\n marginFromBottom: 26,\n };\n gtGeneralConfig: IGtGeneralConfig;\n disableResetAllAvailableSpotsFilters: boolean = true;\n @ViewChild(AnnaNonEditableGenericTableComponent) nonEditableGTComponent: AnnaNonEditableGenericTableComponent;\n\n constructor(\n private annaGlobalConfig: AnnaGlobalConfigService,\n private annaSortService: AnnaSortService,\n private annaFilterService: AnnaFilterService,\n private annaGtService: AnnaGtHelperService,\n ) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.applyFiltersAndSorting && changes.applyFiltersAndSorting.currentValue) {\n this.spotsForDisplay = this.annaFilterService.filterData(this.spots, \"\");\n this.annaSortService.noSortingAppliedData = cloneDeep(this.spotsForDisplay);\n this.spotsForDisplay = this.annaGtService.isSortingAppliedToTable()\n ? this.annaGtService.callSort(this.spotsForDisplay)\n : this.spotsForDisplay;\n this.annaFilterService.updateStateOfAllTheKeys(this.annaSortService.columnSortState);\n this.filterSortingApplied.emit(this.spotsForDisplay);\n }\n\n if (\n changes.showTableSkeletonLoader &&\n changes.showTableSkeletonLoader.currentValue !== undefined &&\n !changes.showTableSkeletonLoader.currentValue\n ) {\n this.annaGtService.initColumnFilterAndSorting();\n this.annaSortService.noSortingAppliedData = cloneDeep(this.spots);\n }\n\n if (changes.resetFiltersAndSorting) {\n this.resetFiltersAndSorting = false;\n this.disableResetAllAvailableSpotsFilters = true;\n this.annaGtService.initColumnFilterAndSorting();\n this.annaSortService.noSortingAppliedData = cloneDeep(this.spots);\n this.annaFilterService.updateStateOfAllTheKeys(this.annaSortService.columnSortState);\n }\n }\n\n ngOnInit(): void {\n this.setGtTableConfig();\n }\n\n setGtTableConfig() {\n this.gtGeneralConfig = { ...this.annaGlobalConfig.defaultGtGeneralConfig };\n this.gtGeneralConfig.bufferSize = 100;\n this.gtGeneralConfig.tableContainerName = \"spot-approval-edit-table-container\";\n }\n\n availableSpotsActionClicked(event: { data: IAvailableSpotInformationForEdit; id: any }) {\n this.spotsActionClicked.emit(event);\n }\n\n resetAllAvailableSpotsFilters() {\n this.nonEditableGTComponent?.setScrollToInitialPosition();\n this.annaGtService.initColumnFilterAndSorting();\n this.disableResetAllAvailableSpotsFilters = true;\n this.annaSortService.noSortingAppliedData = cloneDeep(this.spots);\n this.annaFilterService.updateStateOfAllTheKeys(this.annaSortService.columnSortState);\n this.spotsForDisplay = cloneDeep(this.spots);\n this.filterSortingApplied.emit(this.spotsForDisplay);\n }\n\n filterApplied(tableData: IAvailableSpotInformationForEdit[]) {\n this.spotsForDisplay = tableData;\n this.filterSortingApplied.emit(tableData);\n this.enableDisableResetAllAvailableSpotsFilters();\n }\n\n sortingApplied(tableData: IAvailableSpotInformationForEdit[]) {\n this.spotsForDisplay = tableData;\n this.filterSortingApplied.emit(tableData);\n this.enableDisableResetAllAvailableSpotsFilters();\n }\n\n enableDisableResetAllAvailableSpotsFilters() {\n let isSortingApplied: boolean = false;\n\n this.annaSortService.columnSortState.forEach((value, key) => {\n if (value === \"ASC\" || value === \"DESC\") {\n isSortingApplied = true;\n }\n });\n\n this.disableResetAllAvailableSpotsFilters =\n this.annaFilterService.appliedFiltersArray.length === 0 && !isSortingApplied;\n }\n}\n","<label\n *ngIf=\"title\"\n class=\"title-labels\"\n>\n <span>{{ title }}</span>\n <span class=\"grey-line\"></span>\n</label>\n<ng-container *ngIf=\"!revisedOnDate\">\n <button\n class=\"text-filter mt-n8\"\n [disabled]=\"disableResetAllAvailableSpotsFilters\"\n (click)=\"resetAllAvailableSpotsFilters()\"\n >\n Reset all filters\n </button>\n</ng-container>\n<ng-container *ngIf=\"revisedOnDate\">\n <span class=\"additional-message-for-edit\"\n ><i>The spots are listed as of {{ revisedOnDate }}.</i>\n <button\n class=\"text-filter align-to-msg\"\n [disabled]=\"disableResetAllAvailableSpotsFilters\"\n (click)=\"resetAllAvailableSpotsFilters()\"\n >\n Reset all filters\n </button>\n </span>\n</ng-container>\n\n<anna-core-non-editable-generic-table-lib\n [showSkeletonLoading]=\"showTableSkeletonLoader\"\n class=\"spot-approval-edit-gt {{ gtClass }}\"\n [tableHeaders]=\"tableHeaders\"\n [tableData]=\"spotsForDisplay\"\n [clonedTableData]=\"spots\"\n [gtGeneralConfig]=\"gtGeneralConfig\"\n [fixNumberOfRowsForPopup]=\"true\"\n [gtDimension]=\"gtDimension\"\n [clickableRow]=\"false\"\n (clickableDataClicked)=\"availableSpotsActionClicked($event)\"\n (gtTextActionClicked)=\"availableSpotsActionClicked($event)\"\n (filterAppliedToTable)=\"filterApplied($event)\"\n (sortingAppliedToTable)=\"sortingApplied($event)\"\n>\n</anna-core-non-editable-generic-table-lib>\n","import { CommonModule, NgIf } from \"@angular/common\";\nimport { HttpResponse } from \"@angular/common/http\";\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Inject,\n Input,\n Output,\n TemplateRef,\n ViewChild,\n} from \"@angular/core\";\nimport {\n AnnaCoreModule,\n AnnaFilterService,\n AnnaGtHelperService,\n AnnaSortService,\n ErrorCodes,\n IGtGeneralConfig,\n IGtTableHeader,\n} from \"@annalib/anna-core\";\nimport { NgbModal, NgbModalOptions, NgbModalRef } from \"@ng-bootstrap/ng-bootstrap\";\nimport { cloneDeep } from \"lodash-es\";\nimport { NgxUiLoaderService } from \"ngx-ui-loader\";\n\nimport {\n ISpotsApprovalBackendService,\n SPOTS_APPROVAL_PAGE_SERVICE_TOKEN,\n} from \"../config/spots-approval-backend-service.token\";\nimport { SpotDetailsForOtherSpotsTablePopup } from \"../models/create-or-edit-offers-popup.model\";\nimport { CreateOrEditOffersService } from \"../services/create-or-edit-offers-popup.service\";\n\n@Component({\n selector: \"anna-feature-spot-details-popup\",\n imports: [CommonModule, NgIf, AnnaCoreModule],\n templateUrl: \"./spot-details-popup.component.html\",\n styleUrls: [\"./spot-details-popup.component.scss\"],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SpotDetailsPopupComponent {\n @Input() stationId: number;\n @Input() gtGeneralConfig: IGtGeneralConfig;\n @Output() closed = new EventEmitter();\n\n viewSpotsPopupTableHeaders: IGtTableHeader[];\n spotDetailsForPopup: SpotDetailsForOtherSpotsTablePopup[];\n spotDetailsForPopupForDisplay: SpotDetailsForOtherSpotsTablePopup[];\n showLoaderInSpotDetailsForPopup: boolean;\n spotDetailsSkeletonColumnsCount: number[] = Array(7).fill(0);\n spotDetailsSkeletonRowsCount: number[] = Array(4).fill(0);\n @ViewChild(\"spotDetailsModal\")\n private spotDetailsModal: TemplateRef<any>;\n spotDetailsModalReference: NgbModalRef;\n rowDataForViewingSpots: { inventoryCodeId: number; inventoryCode: string; weekStartDate: string; date: string };\n disableResetAllInViewDetailsPopup: boolean = true;\n gtDimensionForViewSpotsPopup = {\n rowHeight: 40,\n headerHeight: 40,\n dataOnTopHeight: 422,\n marginFromBottom: 26,\n };\n\n constructor(\n private modalService: NgbModal,\n private ngxService: NgxUiLoaderService,\n private annaSortService: AnnaSortService,\n private annaFilterService: AnnaFilterService,\n private annaGtService: AnnaGtHelperService,\n private createOrEditOffersService: CreateOrEditOffersService,\n @Inject(SPOTS_APPROVAL_PAGE_SERVICE_TOKEN)\n public consumingProjectSpotsApprovalBackendService: ISpotsApprovalBackendService,\n ) {}\n\n openSpotDetailsModal(rowDataForViewingSpots: {\n inventoryCodeId: number;\n inventoryCode: string;\n weekStartDate: string;\n date: string;\n }) {\n this.ngxService.start();\n this.viewSpotsPopupTableHeaders = this.createOrEditOffersService.getViewSpotsPopupTableHeaders();\n this.rowDataForViewingSpots = cloneDeep(rowDataForViewingSpots);\n this.getSpotDetails();\n }\n\n closeSpotDetailsModal() {\n this.spotDetailsModalReference.close();\n this.closed.emit();\n }\n\n getSpotDetails() {\n this.showLoaderInSpotDetailsForPopup = true;\n this.consumingProjectSpotsApprovalBackendService\n .getSpotDetails(\n this.stationId,\n this.rowDataForViewingSpots?.inventoryCodeId,\n this.rowDataForViewingSpots?.date,\n )\n .subscribe({\n next: (response: HttpResponse<SpotDetailsForOtherSpotsTablePopup[]>) => {\n if (response.status === ErrorCodes.NO_CONTENT) {\n this.spotDetailsForPopup = [];\n this.spotDetailsForPopupForDisplay = [];\n this.showLoaderInSpotDetailsForPopup = false;\n } else {\n this.spotDetailsForPopup = response.body;\n this.spotDetailsForPopupForDisplay = cloneDeep(this.spotDetailsForPopup);\n this.showLoaderInSpotDetailsForPopup = false;\n }\n this.openModal();\n },\n error: (error: any) => {\n this.spotDetailsForPopup = [];\n this.spotDetailsForPopupForDisplay = [];\n this.showLoaderInSpotDetailsForPopup = false;\n this.openModal();\n },\n });\n }\n\n openModal() {\n this.ngxService.stop();\n const ngbModalOptions: NgbModalOptions = {\n centered: true,\n windowClass: \"spot-details-modal-window\",\n modalDialogClass: \"spot-details-modal-dialog\",\n };\n this.spotDetailsModalReference = this.modalService.open(this.spotDetailsModal, ngbModalOptions);\n }\n resetAllInViewDetailsPopup() {\n this.annaGtService.initColumnFilterAndSorting();\n this.disableResetAllInViewDetailsPopup = true;\n this.annaSortService.noSortingAppliedData = cloneDeep(this.spotDetailsForPopup);\n this.annaFilterService.updateStateOfAllTheKeys(this.annaSortService.columnSortState);\n this.spotDetailsForPopupForDisplay = cloneDeep(this.spotDetailsForPopup);\n }\n\n filterAppliedInViewDetailsPopup(tableData: SpotDetailsForOtherSpotsTablePopup[]) {\n this.spotDetailsForPopupForDisplay = tableData;\n this.enableDisableResetAllInViewDetailsPopup();\n }\n\n sortingAppliedInViewDetailsPopup(tableData: SpotDetailsForOtherSpotsTablePopup[]) {\n this.spotDetailsForPopupForDisplay = tableData;\n this.enableDisableResetAllInViewDetailsPopup();\n }\n\n enableDisableResetAllInViewDetailsPopup() {\n let isSortingApplied: boolean = false;\n\n this.annaSortService.columnSortState.forEach((value, key) => {\n if (value === \"ASC\" || value === \"DESC\") {\n isSortingApplied = true;\n }\n });\n\n this.disableResetAllInViewDetailsPopup =\n this.annaFilterService.appliedFiltersArray.length === 0 && !isSortingApplied;\n }\n}\n","<ng-template\n #spotDetailsModal\n let-modal\n>\n <div class=\"modal-header p-24\">\n <i\n class=\"mi mdi-close-icon\"\n (click)=\"closeSpotDetailsModal()\"\n ></i>\n <h3 class=\"modal-title\">Spot Details</h3>\n </div>\n\n <div class=\"modal-body\">\n <p>\n <span\n >Inventory Code: <b>{{ rowDataForViewingSpots?.inventoryCode }}</b>\n </span>\n <span\n >Week: <b>{{ rowDataForViewingSpots?.weekStartDate }}</b>\n </span>\n <button\n class=\"text-filter\"\n [disabled]=\"disableResetAllInViewDetailsPopup\"\n (click)=\"resetAllInViewDetailsPopup()\"\n >\n Reset all filters\n </button>\n </p>\n <div>\n <anna-core-non-editable-generic-table-lib\n [showSkeletonLoading]=\"showLoaderInSpotDetailsForPopup\"\n [tableHeaders]=\"viewSpotsPopupTableHeaders\"\n [tableData]=\"spotDetailsForPopupForDisplay\"\n [clonedTableData]=\"spotDetailsForPopup\"\n [gtGeneralConfig]=\"gtGeneralConfig\"\n [fixNumberOfRowsForPopup]=\"true\"\n [gtDimension]=\"gtDimensionForViewSpotsPopup\"\n (filterAppliedToTable)=\"filterAppliedInViewDetailsPopup($event)\"\n (sortingAppliedToTable)=\"sortingAppliedInViewDetailsPopup($event)\"\n >\n </anna-core-non-editable-generic-table-lib>\n </div>\n </div>\n</ng-template>\n","import { CurrencyPipe, DatePipe, JsonPipe, NgClass, NgFor, NgIf, NgOptimizedImage } from \"@angular/common\";\nimport { HttpResponse } from \"@angular/common/http\";\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Inject,\n Input,\n OnInit,\n Output,\n TemplateRef,\n ViewChild,\n} from \"@angular/core\";\nimport {\n AnnaCoreModule,\n AnnaDateTimeFormatService,\n AnnaGlobalConfigService,\n ErrorCodes,\n IConfirmationPopupConfig,\n IGtGeneralConfig,\n IGtTableHeader,\n ITotalRowInfo,\n IWeekCalendar,\n} from \"@annalib/anna-core\";\nimport {\n AnnaDesignComponentsLibModule,\n ConfirmationPopupComponent,\n TimerComponent,\n WeekCalendarService,\n} from \"@annalib/anna-design-components-lib\";\nimport { NgbDate, NgbDateStruct, NgbModal, NgbModalOptions, NgbModalRef, NgbTooltip } from \"@ng-bootstrap/ng-bootstrap\";\nimport dayjs from \"dayjs\";\nimport isSameOrAfter from \"dayjs/plugin/isSameOrAfter\";\nimport { cloneDeep } from \"lodash-es\";\nimport { NgxSkeletonLoaderModule } from \"ngx-skeleton-loader\";\nimport { ToastrService } from \"ngx-toastr\";\nimport { NgxUiLoaderService } from \"ngx-ui-loader\";\n\nimport {\n ISpotsApprovalBackendService,\n SPOTS_APPROVAL_PAGE_SERVICE_TOKEN,\n} from \"../config/spots-approval-backend-service.token\";\nimport { OfferedMGOrADUTableKeys } from \"../constants/create-or-edit-offers.constant\";\nimport { IGuideLines, ISpotInformationResponse } from \"../models/anna-revisions-backend.model\";\nimport { SpotTypeCategoryFromBE } from \"../models/anna-revisions-enums.model\";\nimport { OrderInfoForANNARevision } from \"../models/anna-revisions-response.model\";\nimport {\n ITotalRowForEditOrCreateOfferedADUs,\n TotalRowForCreateADUsForIMPSOrder,\n TotalRowForCreateADUsForRtgOrder,\n TotalRowForEditOfferedADUsForIMPSOrder,\n TotalRowForEditOfferedADUsForRtgOrder,\n} from \"../models/create-or-edit-offer-total-rows.model\";\nimport {\n AdditionalInformationForSpot,\n ADUSpotInformationForEdit,\n ClickableItemForAvailableTableActionColumn,\n ClickableItemForMGTableActionColumn,\n FreeFlowSpotsPayload,\n IAdditionInformationForFreeFlowSpot,\n IAdditionInformationForRotators,\n IADUSpotInformationForEdit,\n IAvailableSpotInformationForEdit,\n IconActionForSpotsApprovalEdit,\n TypeOfActionLinkForGtEnumSpotsApprovalEdit,\n} from \"../models/create-or-edit-offers-popup.model\";\nimport { OtherSpotsEditTableComponent } from \"../other-spots-edit-table/other-spots-edit-table.component\";\nimport { CreateOrEditOffersService } from \"../services/create-or-edit-offers-popup.service\";\nimport { GenericSpotsApprovalService } from \"../services/generic-spots-approval.service\";\nimport { SpotDetailsPopupComponent } from \"../spot-details-popup/spot-details-popup.component\";\n\n// ===== TYPES AND INTERFACES =====\ninterface CreateADUOrBonusSpotsData {\n duration: number;\n displayDuration: string;\n revenueClass: string;\n spotTypeId: number;\n}\n\ninterface OrderRelatedExtraInfo {\n orderId: string;\n stationId: number;\n tgId: number;\n timezone: string;\n showImpressions: boolean;\n spotType: SpotTypeCategoryFromBE;\n}\n\ninterface SpotDetailsModalData {\n inventoryCodeId: number;\n inventoryCode: string;\n weekStartDate: string;\n date: string;\n}\n\ninterface WeekDateRange {\n selectedWeekStartDate: string;\n selectedWeekEndDate: string;\n}\n\n@Component({\n selector: \"anna-feature-create-or-edit-adu-or-bonus\",\n imports: [\n NgOptimizedImage,\n NgClass,\n NgIf,\n NgxSkeletonLoaderModule,\n NgbTooltip,\n AnnaCoreModule,\n NgFor,\n DatePipe,\n AnnaDesignComponentsLibModule,\n OtherSpotsEditTableComponent,\n SpotDetailsPopupComponent,\n JsonPipe,\n ],\n templateUrl: \"./create-or-edit-adu-or-bonus.component.html\",\n styleUrl: \"./create-or-edit-adu-or-bonus.component.scss\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CreateOrEditAduOrBonusComponent implements OnInit {\n // ===== INPUT PROPERTIES =====\n @Input() isADUOrBonusCreate: boolean;\n @Input() createADUOrBonusSpotsData: CreateADUOrBonusSpotsData;\n @Input() ADUOrBonusOfferType: \"ADU offers\" | \"Bonus Spots\";\n @Input() originalOfferedADUs: ISpotInformationResponse[] = [];\n @Input() loggedInUser: any;\n @Input() orderRelatedExtraInfo: OrderRelatedExtraInfo;\n @Input() orderData: OrderInfoForANNARevision;\n @Input() isNoRevision: boolean;\n @Input() guideLinesAdditionalSpots: IGuideLines;\n\n // ===== OUTPUT PROPERTIES =====\n @Output() editSaved = new EventEmitter<{ spots: { spotId: string; groupId: string }[], closePopup: boolean }>();\n @Output() closeEditPopup = new EventEmitter();\n @Output() cancelButtonClicked = new EventEmitter();\n @Output() resetTimerAfterUserAction = new EventEmitter();\n @Output() lockTimedOutEmit = new EventEmitter();\n\n // ===== VIEW CHILDREN =====\n @ViewChild(\"createOrEditADUOrBonusModal\", { static: true }) private createOrEditADUOrBonusModal: TemplateRef<any>;\n @ViewChild(\"spotDetailsPopup\") spotDetailsPopup: SpotDetailsPopupComponent;\n @ViewChild(\"overDelConfirmation\") private overDelConfirmationModal: ConfirmationPopupComponent;\n @ViewChild(\"timerComponent\") private timerComponent: TimerComponent;\n\n // ===== COMPONENT STATE =====\n ogLogoUrl: string = JSON.parse(localStorage.getItem(\"userProfileData\")).networkLogoUrl;\n disableSave: boolean = true;\n pageTitle: string;\n tableName: \"Created ADUs\" | \"Created Bonus\" | \"Offered ADUs\" | \"Offered Bonus\";\n\n // ===== TABLE CONFIGURATIONS =====\n offeredADUsTableHeaders: IGtTableHeader[];\n totalRowInfoForOfferedADUs: ITotalRowInfo[];\n allOtherAvailableSpots: IAdditionInformationForFreeFlowSpot[];\n allRotators: IAdditionInformationForRotators[];\n otherSpotsTableHeaders: IGtTableHeader[];\n offeredADUs: IADUSpotInformationForEdit[] = [];\n otherSpots: IAdditionInformationForFreeFlowSpot[] = [];\n otherSpotsForDisplay: IAdditionInformationForFreeFlowSpot[] = [];\n rotatorsTableHeaders: IGtTableHeader[];\n rotators: IAdditionInformationForRotators[] = [];\n rotatorsForDisplay: IAdditionInformationForRotators[] = [];\n\n // ===== GT TABLE CONFIGURATIONS =====\n readonly gtDimensionForADUTable = {\n rowHeight: 47,\n headerHeight: 40,\n dataOnTopHeight: 185,\n marginFromBottom: 26,\n };\n gtGeneralConfigForADU: IGtGeneralConfig;\n gtGeneralConfig: IGtGeneralConfig;\n\n // ===== MODAL REFERENCES =====\n private createOrEditADUOrBonusModalRef: NgbModalRef;\n\n // ===== FILTERING AND SORTING STATE =====\n applyFilteringAndSortingForOtherSpotsTable: boolean = false;\n resetFiltersForOtherSpotsTable: boolean = false;\n applyFilteringAndSortingForRotatorsTable: boolean = false;\n resetFiltersForRotatorsTable: boolean = false;\n\n // ===== WEEK CALENDAR CONFIGURATION =====\n weekcalendarConfig: IWeekCalendar;\n weekcalendarConfigForRotatorsTable: IWeekCalendar;\n fromDate: NgbDateStruct;\n toDate: NgbDateStruct;\n fromDateForFetchingRotators: NgbDateStruct;\n toDateForFetchingRotators: NgbDateStruct;\n noOfMonthsQuarterYearToEnableInPast: number;\n noOfMonthsQuarterYearToEnableInFuture: number;\n minDate: NgbDate;\n maxDate: NgbDate;\n\n // ===== SPOT DETAILS STATE =====\n inventoryCodeSelectedForViewingSpots: string;\n openSpotDetailsPopup: boolean;\n newlyAddedSpotsIdForPersistingActionInUI: { spotId: string; groupId: string }[] = [];\n\n // ===== OVER DELIVERY CONFIRMATION STATE =====\n overDeliveryConfirmationConfig: IConfirmationPopupConfig;\n openOverDeliveryConfirmationPopup: boolean;\n\n // ===== LOADING STATES =====\n showTableSkeletonLoader: boolean;\n showSkeletonLoaderInOtherSpotsTable: boolean;\n showSkeletonLoaderInRotatorsTable: boolean = true;\n\n constructor(\n private cdr: ChangeDetectorRef,\n private modalService: NgbModal,\n private currencyPipe: CurrencyPipe,\n private toastr: ToastrService,\n private ngxService: NgxUiLoaderService,\n private annaGlobalConfig: AnnaGlobalConfigService,\n private dateTimeFormatService: AnnaDateTimeFormatService,\n private weekCalendarService: WeekCalendarService,\n private createOrEditOffersService: CreateOrEditOffersService,\n @Inject(SPOTS_APPROVAL_PAGE_SERVICE_TOKEN)\n public consumingProjectSpotsApprovalBackendService: ISpotsApprovalBackendService,\n ) {\n this.initializeDayjs();\n this.initializeGtConfigurations();\n }\n\n // ===== LIFECYCLE METHODS =====\n ngOnInit(): void {\n this.setWeekcalendarConfig();\n this.initializeTableHeaders();\n this.initializeComponentState();\n this.openModal();\n }\n\n // ===== INITIALIZATION METHODS =====\n private initializeDayjs(): void {\n dayjs.extend(isSameOrAfter);\n }\n\n private initializeGtConfigurations(): void {\n const gtGeneralConfig = { ...this.annaGlobalConfig.defaultGtGeneralConfig };\n gtGeneralConfig.bufferSize = 100;\n gtGeneralConfig.tableContainerName = \"spot-approval-edit-table-container\";\n\n this.gtGeneralConfig = cloneDeep(gtGeneralConfig);\n this.gtGeneralConfigForADU = cloneDeep({ ...gtGeneralConfig, totalRow: true });\n }\n\n private initializeTableHeaders(): void {\n this.offeredADUsTableHeaders = this.createOrEditOffersService.getOfferedADUTableHeaders(\n this.orderRelatedExtraInfo.showImpressions,\n this.orderData.estimatePriority,\n );\n this.otherSpotsTableHeaders = this.createOrEditOffersService.getOtherAvailableSpotsTableHeaders(\n this.orderRelatedExtraInfo.showImpressions,\n this.orderData.estimatePriority,\n );\n this.rotatorsTableHeaders = this.createOrEditOffersService.getRotatorsTableHeaders(\n this.orderRelatedExtraInfo?.showImpressions,\n this.orderData.estimatePriority,\n );\n }\n\n private initializeComponentState(): void {\n this.offeredADUs = cloneDeep(this.originalOfferedADUs as IADUSpotInformationForEdit[]);\n if (this.isADUOrBonusCreate) {\n this.initializeCreateMode();\n } else {\n this.initializeEditMode();\n }\n }\n\n private initializeCreateMode(): void {\n this.pageTitle = `Create ${this.ADUOrBonusOfferType}`;\n this.tableName = this.orderRelatedExtraInfo.spotType === \"ADU\" ? \"Created ADUs\" : \"Created Bonus\";\n this.showTableSkeletonLoader = false;\n this.offeredADUs = [];\n }\n\n private initializeEditMode(): void {\n this.formatDataForADU();\n this.pageTitle = \"Edit Offered ADU\";\n this.tableName = this.orderRelatedExtraInfo.spotType === \"ADU\" ? \"Offered ADUs\" : \"Offered Bonus\";\n }\n\n // ===== WEEK CALENDAR METHODS =====\n private setWeekcalendarConfig(): void {\n this.setMinMaxDates();\n this.calculateWeekCalendarDates();\n this.configureWeekCalendar();\n }\n\n private setMinMaxDates(): void {\n let minDateEnabled = this.weekCalendarService.setCurrentDate(this.orderRelatedExtraInfo.timezone)?.today;\n const maxDateEnabled = NgbDate.from(\n this.dateTimeFormatService.convertToNgbDate(dayjs(this.orderData.flightEndDate), \"MM/DD/YYYY\"),\n );\n\n const minDateEnabledDateMoment = this.dateTimeFormatService.convertNgbDateToMoment(minDateEnabled);\n const maxDateEnabledDateMoment = this.dateTimeFormatService.convertNgbDateToMoment(maxDateEnabled);\n\n if (dayjs(minDateEnabledDateMoment).isAfter(maxDateEnabledDateMoment)) {\n minDateEnabled = cloneDeep(maxDateEnabled);\n }\n\n this.minDate = cloneDeep(minDateEnabled);\n this.maxDate = cloneDeep(maxDateEnabled);\n }\n\n private calculateWeekCalendarDates(): void {\n const selectedWeekDate = this.minDate;\n const selectedWeekNgbDate = this.dateTimeFormatService.convertNgbDateToMoment(selectedWeekDate);\n\n this.noOfMonthsQuarterYearToEnableInPast = Math.abs(\n +dayjs(this.dateTimeFormatService.convertNgbDateToMoment(this.minDate)).diff(selectedWeekNgbDate, \"days\"),\n );\n this.noOfMonthsQuarterYearToEnableInFuture = Math.abs(\n +dayjs(this.dateTimeFormatService.convertNgbDateToMoment(this.maxDate)).diff(selectedWeekNgbDate, \"days\"),\n );\n\n const dates = this.weekCalendarService.getBroadcastWeek(selectedWeekNgbDate);\n this.fromDate = this.dateTimeFormatService.convertToNgbDate(dates.start, \"YYYY-MM-DD\");\n this.toDate = this.dateTimeFormatService.convertToNgbDate(dates.end, \"YYYY-MM-DD\");\n this.fromDateForFetchingRotators = cloneDeep(this.fromDate);\n this.toDateForFetchingRotators = cloneDeep(this.toDate);\n }\n\n private configureWeekCalendar(): void {\n this.weekcalendarConfig = { ...this.annaGlobalConfig.defaultWeekCalendarConfig };\n this.weekcalendarConfig.numberOfMonthsToEnableInPast = 0;\n this.weekcalendarConfig.emitInitialSelection = true;\n this.weekcalendarConfig.selectCurrentWeek = true;\n this.weekcalendarConfigForRotatorsTable = cloneDeep(this.weekcalendarConfig);\n }\n\n // ===== MODAL MANAGEMENT METHODS =====\n private openModal(): void {\n const ngbModalOptions: NgbModalOptions = {\n windowClass: \"spots-approval-edit-modal\",\n };\n this.createOrEditADUOrBonusModalRef = this.modalService.open(this.createOrEditADUOrBonusModal, ngbModalOptions);\n }\n\n closeModal(): void {\n this.closeOverDelPopup();\n this.createOrEditADUOrBonusModalRef.close();\n this.closeEditPopup.emit();\n }\n\n private formatDataForADU(): void {\n const offeredADUs = cloneDeep(this.offeredADUs);\n this.offeredADUs = [];\n\n // is index automatically getting updated\n offeredADUs.forEach((item: ISpotInformationResponse, index: number) => {\n const responseData: ISpotInformationResponse = cloneDeep(item);\n const generalAdditionalDataForADUTableEdit = new AdditionalInformationForSpot(\n item,\n this.orderData.estimatePriority,\n this.currencyPipe,\n );\n const specificAdditionalDataForADUTableEdit = new ADUSpotInformationForEdit(\n item.BuyerProgramName,\n \"Remove\",\n offeredADUs?.length > 0 ? \"action-link\" : \"disabled-action-link\",\n this.getDisplayStatus(item),\n );\n\n this.offeredADUs.push({\n ...responseData,\n ...generalAdditionalDataForADUTableEdit,\n ...specificAdditionalDataForADUTableEdit,\n index,\n });\n });\n\n this.createTotalRowForADUTable();\n this.showTableSkeletonLoader = false;\n }\n\n // ===== TOTAL ROW CREATION METHODS =====\n private createTotalRowForADUTable(): void {\n const totalRowInfo = this.isADUOrBonusCreate\n ? this.createTotalRowForCreateADUTable()\n : this.createTotalRowForEditADUTable();\n\n this.buildTotalRowInfoArray(totalRowInfo);\n this.handleSpecialDisplayLogic();\n }\n\n private buildTotalRowInfoArray(totalRowInfo: ITotalRowForEditOrCreateOfferedADUs): void {\n this.totalRowInfoForOfferedADUs = [\n {\n colspan: 6,\n data: totalRowInfo.totalMessage,\n colName: \"total\",\n },\n {\n colspan: 1,\n data: totalRowInfo.totalOfferedRateForDisplay,\n // lowerData: totalRowInfo.totalBookedAvgRateForDisplay,\n colName: \"total-rate\",\n },\n {\n colspan: 1,\n data: totalRowInfo.totalOfferedIMPSOrRtg.toString(),\n colName: \"total-rtgOrImps\",\n },\n {\n colspan: 1,\n data: '',\n colName: \"total-est\",\n },\n {\n colspan: 1,\n data: \"\",\n colName: \"total-blank\",\n },\n {\n colspan: 1,\n data: \"\",\n isActionColumn: true,\n actionData: [\n {\n id: \"total-action\",\n name: \"Remove All\",\n class:\n this.offeredADUs.filter(n => n.ActionKeyForEdit[0].class === \"action-link\" && n.DisplayStatus !== \"Removed\")?.length === 0\n ? \"disabled-action-link\"\n : \"action-link\",\n isDisabled: totalRowInfo.totalRowsCount === 0,\n showTooltip: false,\n tooltipData: null,\n enableTooltipForAdditionalText: false,\n },\n ],\n colName: \"total-action\",\n },\n ];\n }\n\n private handleSpecialDisplayLogic(): void {\n if (this.isADUOrBonusCreate && this.offeredADUs.length > 1) {\n this.offeredADUs[0].gtClass = \" status-align-top\";\n }\n }\n\n private createTotalRowForCreateADUTable(): ITotalRowForEditOrCreateOfferedADUs {\n return this.orderRelatedExtraInfo.showImpressions\n ? new TotalRowForCreateADUsForIMPSOrder(this.offeredADUs, this.orderData.estimatePriority, this.orderRelatedExtraInfo.spotType)\n : new TotalRowForCreateADUsForRtgOrder(this.offeredADUs, this.orderData.estimatePriority, this.orderRelatedExtraInfo.spotType);\n }\n\n private createTotalRowForEditADUTable(): ITotalRowForEditOrCreateOfferedADUs {\n return this.orderRelatedExtraInfo.showImpressions\n ? new TotalRowForEditOfferedADUsForIMPSOrder(this.offeredADUs, this.orderData.estimatePriority, this.orderRelatedExtraInfo.spotType)\n : new TotalRowForEditOfferedADUsForRtgOrder(this.offeredADUs, this.orderData.estimatePriority, this.orderRelatedExtraInfo.spotType);\n }\n\n // ===== FREE FLOW SPOTS FETCHING =====\n fetchOtherFreeFlowSpots(): void {\n this.showSkeletonLoaderInOtherSpotsTable = true;\n this.otherSpots = [];\n\n this.consumingProjectSpotsApprovalBackendService.getFreeFlowOffers(this.getFreeFlowSpotsPayload()).subscribe({\n next: (response: HttpResponse<any>) => this.handleFreeFlowSpotsResponse(response),\n error: (error: any) => this.handleFreeFlowSpotsError(error),\n });\n }\n\n private handleFreeFlowSpotsResponse(response: HttpResponse<any>): void {\n if (response.status === ErrorCodes.NO_CONTENT) {\n this.handleNoFreeFlowSpots();\n } else {\n this.processFreeFlowSpotsResponse(response.body);\n }\n this.showSkeletonLoaderInOtherSpotsTable = false;\n }\n\n private handleNoFreeFlowSpots(): void {\n this.otherSpotsForDisplay = [];\n this.allOtherAvailableSpots = [];\n }\n\n private processFreeFlowSpotsResponse(spotsData: ISpotInformationResponse[]): void {\n spotsData.forEach((item: ISpotInformationResponse) => {\n const processedSpot = this.processIndividualFreeFlowSpot(item);\n this.otherSpots.push(processedSpot);\n });\n\n this.otherSpotsForDisplay = cloneDeep(this.otherSpots);\n this.allOtherAvailableSpots = cloneDeep(this.otherSpots);\n }\n\n private processIndividualFreeFlowSpot(item: ISpotInformationResponse): IAdditionInformationForFreeFlowSpot {\n if (this.isADUOrBonusCreate) {\n item.Length = this.createADUOrBonusSpotsData?.displayDuration;\n item.RevenueClass = this.createADUOrBonusSpotsData?.revenueClass;\n } else {\n item.Length = this.offeredADUs[0]?.Length;\n item.RevenueClass = this.offeredADUs[0]?.RevenueClass;\n }\n\n const generalAdditionalDataForMGTableEdit = new AdditionalInformationForSpot(\n item,\n this.orderData.estimatePriority,\n this.currencyPipe,\n );\n\n this.addActionKeysToSpot(item);\n item.IsFreeFlowGroup = true;\n\n return {\n ...item,\n ...generalAdditionalDataForMGTableEdit,\n } as unknown as IAdditionInformationForFreeFlowSpot;\n }\n\n private addActionKeysToSpot(item: any): void {\n item.ActionKeyForEdit = [\n new ClickableItemForAvailableTableActionColumn(\n TypeOfActionLinkForGtEnumSpotsApprovalEdit.ACTION_COLUMN_CLICK,\n \"Add\",\n \"action-link\",\n false,\n null,\n ),\n ];\n\n item.InventoryActionKey = [\n new IconActionForSpotsApprovalEdit(\n item.InventoryAvailability,\n null,\n \"ml-8\",\n \"OtherSpotsInventoryColumn\",\n item.ShowBookedSpotLink,\n item.ShowBookedSpotLink ? \"View Spots\" : \"\",\n ),\n ];\n }\n\n private handleFreeFlowSpotsError(error: any): void {\n this.otherSpotsForDisplay = [];\n this.allOtherAvailableSpots = [];\n this.toastr.error(\"Something went wrong! Please try again.\");\n this.showSkeletonLoaderInOtherSpotsTable = false;\n }\n\n fetchRotators() {\n this.showSkeletonLoaderInRotatorsTable = true;\n this.consumingProjectSpotsApprovalBackendService.getRotators(this.getRotatorsPayload()).subscribe({\n next: (response: HttpResponse<any>) => {\n if (response.status === ErrorCodes.NO_CONTENT) {\n this.allRotators = [];\n this.rotatorsForDisplay = [];\n this.showSkeletonLoaderInRotatorsTable = false;\n } else {\n response.body.forEach((item: ISpotInformationResponse | any) => {\n if (this.isADUOrBonusCreate) {\n item.Length = this.createADUOrBonusSpotsData?.displayDuration;\n item.RevenueClass = this.createADUOrBonusSpotsData?.revenueClass;\n } else {\n item.Length = this.offeredADUs[0]?.Length;\n item.RevenueClass = this.offeredADUs[0]?.RevenueClass;\n }\n const generalAdditionalDataForMGTableEdit: AdditionalInformationForSpot =\n new AdditionalInformationForSpot(item, this.orderData.estimatePriority, this.currencyPipe);\n item.ActionKeyForEdit = [];\n item.ActionKeyForEdit.push(\n new ClickableItemForAvailableTableActionColumn(\n TypeOfActionLinkForGtEnumSpotsApprovalEdit.ACTION_COLUMN_CLICK,\n \"Add\",\n \"action-link\",\n false,\n null,\n ),\n );\n\n item.IsFreeFlowGroup = true;\n const updatedItem = {\n ...item,\n ...generalAdditionalDataForMGTableEdit,\n };\n this.rotators.push(updatedItem);\n });\n this.rotatorsForDisplay = cloneDeep(this.rotators);\n this.allRotators = cloneDeep(this.rotators);\n this.showSkeletonLoaderInRotatorsTable = false;\n }\n },\n error: (error: any) => {\n this.rotatorsForDisplay = [];\n this.allRotators = [];\n this.toastr.error(\"Something went wrong! Please try again.\");\n this.showSkeletonLoaderInRotatorsTable = false;\n },\n });\n }\n\n // ===== PAYLOAD CREATION METHODS =====\n private getFreeFlowSpotsPayload(): FreeFlowSpotsPayload {\n const dates = this.getStartAndEndDates(this.fromDate, this.toDate);\n return {\n Duration: this.isADUOrBonusCreate ? this.createADUOrBonusSpotsData?.duration : this.offeredADUs[0].Duration,\n StationId: this.orderRelatedExtraInfo.stationId,\n OrderId: this.orderRelatedExtraInfo.orderId,\n StartDate: dates.selectedWeekStartDate,\n EndDate: dates.selectedWeekEndDate,\n TgId: this.orderRelatedExtraInfo.tgId,\n };\n }\n\n getRotatorsPayload(): FreeFlowSpotsPayload {\n const dates = this.getStartAndEndDates(this.fromDateForFetchingRotators, this.toDateForFetchingRotators);\n return {\n Duration: this.isADUOrBonusCreate ? this.createADUOrBonusSpotsData?.duration : this.offeredADUs[0].Duration,\n StationId: this.orderRelatedExtraInfo.stationId,\n OrderId: this.orderRelatedExtraInfo.orderId,\n StartDate: dates.selectedWeekStartDate,\n EndDate: dates.selectedWeekEndDate,\n TgId: this.orderRelatedExtraInfo.tgId,\n };\n }\n\n private createPayloadSaveADUEditOrCreate(): {\n StationId: number;\n BuyerOrderId: string;\n IsNoRevision: boolean;\n IsAdu: boolean;\n EditedBy: string;\n Duration: number;\n DisplayDuration: string;\n SpotType: number;\n RevenueClass: string;\n NewSpots: IADUSpotInformationForEdit[];\n RemovedSpots: IADUSpotInformationForEdit[];\n ModifiedSpots: IADUSpotInformationForEdit[];\n } {\n const modifiedADUs = this.returnModifiedADUSpots(this.offeredADUs);\n const ADUs: IADUSpotInformationForEdit[] = cloneDeep(this.offeredADUs);\n\n this.newlyAddedSpotsIdForPersistingActionInUI = this.returnNewlyAddedADUSpotsForPersistingActionInUI(\n this.offeredADUs,\n );\n\n ADUs.forEach((n) => {\n n.BuyerProgramName = cloneDeep(n.BuyerProgramNameColumn.value);\n delete n.BuyerProgramNameColumn;\n });\n\n return {\n StationId: this.orderRelatedExtraInfo.stationId,\n BuyerOrderId: this.orderRelatedExtraInfo.orderId,\n IsNoRevision: this.isNoRevision,\n IsAdu: this.orderRelatedExtraInfo.spotType === \"ADU\",\n EditedBy: this.loggedInUser?.userName,\n Duration: this.isADUOrBonusCreate ? this.createADUOrBonusSpotsData.duration : this.offeredADUs[0].Duration,\n DisplayDuration: this.isADUOrBonusCreate\n ? this.createADUOrBonusSpotsData.displayDuration\n : this.offeredADUs[0].Length,\n SpotType: this.isADUOrBonusCreate\n ? this.createADUOrBonusSpotsData.spotTypeId\n : +this.offeredADUs[0].SpotTypeId,\n RevenueClass: this.isADUOrBonusCreate\n ? this.createADUOrBonusSpotsData.revenueClass\n : this.offeredADUs[0].RevenueClass,\n NewSpots: this.isADUOrBonusCreate ? ADUs : this.returnNewlyAddedADUSpots(ADUs),\n RemovedSpots: this.isADUOrBonusCreate ? [] : this.returnRemovedADUSpots(ADUs),\n ModifiedSpots: this.isADUOrBonusCreate ? [] : modifiedADUs,\n };\n }\n\n // ===== SPOT FILTERING METHODS =====\n returnNewlyAddedADUSpots(data: IADUSpotInformationForEdit[]): IADUSpotInformationForEdit[] {\n return data.filter((n) => n.DisplayStatus === \"Added\" && !n.IsAddedInGroup);\n }\n\n returnRemovedADUSpots(data: IADUSpotInformationForEdit[]): IADUSpotInformationForEdit[] {\n return data.filter((n) => n.DisplayStatus === \"Removed\");\n }\n\n returnModifiedADUSpots(data: IADUSpotInformationForEdit[]): IADUSpotInformationForEdit[] {\n const dataToReturn = cloneDeep(\n data.filter(\n (n) =>\n (n.DisplayStatus === \"Offered\" || (n.DisplayStatus === \"Added\" && n.IsAddedInGroup)) &&\n n.BuyerProgramName !== n.BuyerProgramNameColumn.value,\n ),\n );\n\n dataToReturn.forEach((n) => {\n n.BuyerProgramName = n.BuyerProgramNameColumn.value;\n delete n.BuyerProgramNameColumn;\n });\n\n return dataToReturn;\n }\n\n returnNewlyAddedADUSpotsForPersistingActionInUI(\n data: IADUSpotInformationForEdit[],\n ): { spotId: string; groupId: string }[] {\n const addedSpots = data.filter((n) => n.DisplayStatus === \"Added\" && !n.IsAddedInGroup);\n\n return addedSpots.map((n: IADUSpotInformationForEdit) => ({\n spotId: n.NewSpotId,\n groupId: n.NewOfferGuId?.toString(),\n }));\n }\n\n // ===== SAVE OPERATIONS =====\n saveADUEdit(): void {\n this.ngxService.start();\n\n this.consumingProjectSpotsApprovalBackendService\n .saveAduEdits(this.createPayloadSaveADUEditOrCreate())\n .subscribe({\n next: (response: HttpResponse<any>) => this.handleSaveSuccess(response),\n error: (error: any) => this.handleSaveError(error),\n });\n }\n\n private handleSaveSuccess(response: HttpResponse<any>): void {\n this.ngxService.stop();\n this.disableSave = true;\n if (this.isADUOrBonusCreate && this.orderData.showOverDeliveryWarning) {\n this.openOverDeliveryWarningPopup();\n } else {\n this.createOrEditADUOrBonusModalRef.close();\n }\n\n this.editSaved.emit({\n spots: this.newlyAddedSpotsIdForPersistingActionInUI,\n closePopup: !this.openOverDeliveryConfirmationPopup\n });\n }\n\n private handleSaveError(error: any): void {\n this.ngxService.stop();\n this.toastr.error(\"Something went wrong! Please try again.\");\n }\n\n // ===== OVER DELIVERY WARNING METHODS =====\n private openOverDeliveryWarningPopup(): void {\n this.closeOverDelPopup();\n this.openOverDeliveryConfirmationPopup = true;\n this.setOverDelConfirmationPopupConfig();\n setTimeout(() => {\n this.overDelConfirmationModal.openModal();\n }, 0);\n }\n\n closeOverDelPopup() {\n this.openOverDeliveryConfirmationPopup = false;\n }\n\n private setOverDelConfirmationPopupConfig(): void {\n this.overDeliveryConfirmationConfig = {\n ...this.annaGlobalConfig.defaultConfirmationPopupConfig,\n };\n\n const overDeliveryUnit = this.orderRelatedExtraInfo.showImpressions ? \"IMPS\" : \"RTG\";\n\n this.overDeliveryConfirmationConfig.title = `This order is already estimated to over-deliver by ${this.orderData.overDeliveryValue} ${overDeliveryUnit}. Are you sure you want to provide these ADU/Bonus Spots?`;\n\n this.overDeliveryConfirmationConfig.windowClass = \"submit-spots-popup over-del-popup\";\n this.overDeliveryConfirmationConfig.showCloseIcon = false;\n this.overDeliveryConfirmationConfig.cancelButtonLabel = \"No\";\n this.overDeliveryConfirmationConfig.confirmButtonLabel = \"Yes\";\n }\n\n // ===== SAVE BUTTON STATE MANAGEMENT =====\n private enableDisableSaveForADUEditOrCreate(): void {\n const modifiedADUs = this.offeredADUs.filter(\n (n) =>\n (n.DisplayStatus === \"Offered\" || (n.DisplayStatus === \"Added\" && n.IsAddedInGroup)) &&\n n.BuyerProgramName !== n.BuyerProgramNameColumn.value,\n );\n\n const removedSpots = this.offeredADUs.filter((n) => (n.DisplayStatus === \"Removed\"));\n\n const offeredOrAddedADUs = this.offeredADUs.filter((n) => n.DisplayStatus !== \"Removed\");\n const newlyAddedSpots = this.offeredADUs.filter((n) => n.DisplayStatus === \"Added\" && !n.IsAddedInGroup);\n\n if (this.isADUOrBonusCreate) {\n this.disableSave =\n this.offeredADUs.length === 0 ||\n this.offeredADUs.filter((n) => n.BuyerProgramNameColumn.value === \"\").length > 0;\n } else {\n this.disableSave =\n this.offeredADUs.length === 0 ||\n this.offeredADUs.filter((n) => n.BuyerProgramNameColumn.value === \"\").length > 0 ||\n offeredOrAddedADUs.length === 0 ||\n (offeredOrAddedADUs.length > 0 && newlyAddedSpots.length === 0 && modifiedADUs.length === 0 && removedSpots.length === 0);\n }\n }\n\n // ===== TABLE FILTERING AND SORTING =====\n resetFiltersInOtherSpotsTable(): void {\n this.otherSpotsForDisplay = cloneDeep(this.otherSpots);\n this.resetFiltersForOtherSpotsTable = !this.resetFiltersForOtherSpotsTable;\n }\n\n resetFiltersInRotatorsTable() {\n this.rotatorsForDisplay = cloneDeep(this.rotators);\n this.resetFiltersForRotatorsTable = !this.resetFiltersForRotatorsTable;\n }\n\n filterSortingAppliedToOtherSpotsTable(tableData: IAdditionInformationForFreeFlowSpot[]): void {\n this.otherSpotsForDisplay = tableData;\n this.applyFilteringAndSortingForOtherSpotsTable = false;\n }\n\n filterSortingAppliedToRotatorsTable(tableData: IAdditionInformationForFreeFlowSpot[]) {\n this.rotatorsForDisplay = tableData;\n this.applyFilteringAndSortingForRotatorsTable = false;\n }\n\n // ===== WEEK SELECTION HANDLING =====\n applyWeekSelection(event: { startDate: string; endDate: string }[]): void {\n const shouldFetchNewData = this.shouldFetchNewDataForWeekSelection(event);\n\n if (shouldFetchNewData) {\n this.updateWeekDates(event);\n this.resetFiltersInOtherSpotsTable();\n this.fetchOtherFreeFlowSpots();\n }\n\n this.weekcalendarConfig.emitInitialSelection = false;\n }\n\n applyWeekSelectionForRotators(event: { startDate: string; endDate: string }[]) {\n if (\n !this.allRotators ||\n event[0]?.startDate !==\n this.dateTimeFormatService.convertNgbDateToMomentInSpecificFormat(\n this.fromDateForFetchingRotators,\n \"YYYY-MM-DD\",\n ) ||\n event[0].endDate !==\n this.dateTimeFormatService.convertNgbDateToMomentInSpecificFormat(\n this.toDateForFetchingRotators,\n \"YYYY-MM-DD\",\n )\n ) {\n this.fromDateForFetchingRotators = this.dateTimeFormatService.convertToNgbDate(\n event[0].startDate,\n \"YYYY-MM-DD\",\n );\n this.toDateForFetchingRotators = this.dateTimeFormatService.convertToNgbDate(\n event[0].endDate,\n \"YYYY-MM-DD\",\n );\n\n this.resetFiltersInRotatorsTable();\n this.fetchRotators();\n }\n this.weekcalendarConfigForRotatorsTable.emitInitialSelection = false;\n }\n\n private shouldFetchNewDataForWeekSelection(event: { startDate: string; endDate: string }[]): boolean {\n return (\n !this.allOtherAvailableSpots ||\n event[0].startDate !==\n this.dateTimeFormatService.convertNgbDateToMomentInSpecificFormat(this.fromDate, \"YYYY-MM-DD\") ||\n event[0].endDate !==\n this.dateTimeFormatService.convertNgbDateToMomentInSpecificFormat(this.toDate, \"YYYY-MM-DD\")\n );\n }\n\n private updateWeekDates(event: { startDate: string; endDate: string }[]): void {\n this.fromDate = this.dateTimeFormatService.convertToNgbDate(event[0].startDate, \"YYYY-MM-DD\");\n this.toDate = this.dateTimeFormatService.convertToNgbDate(event[0].endDate, \"YYYY-MM-DD\");\n }\n\n // ===== SPOT DETAILS MODAL =====\n private openSpotDetailsModal(object: SpotDetailsModalData): void {\n this.openSpotDetailsPopup = true;\n setTimeout(() => {\n this.spotDetailsPopup.openSpotDetailsModal(object);\n }, 0);\n }\n\n // ===== ADD ROW TO ADU TABLE =====\n private addRowToADUTable(data: IAvailableSpotInformationForEdit): void {\n const generalAdditionalDataForADUTableEdit = new AdditionalInformationForSpot(\n data,\n this.orderData.estimatePriority,\n this.currencyPipe,\n );\n\n const specificAdditionalDataForADUTableEdit = new ADUSpotInformationForEdit(\n data.BuyerProgramName,\n \"Remove\",\n this.offeredADUs?.length > 0 ? \"action-link\" : \"disabled-action-link\",\n this.isADUOrBonusCreate ? \"Created\" : \"Added\",\n );\n\n data.DisplayRate = data.Rate !== null ? this.currencyPipe.transform(data.Rate, \"USD\", \"symbol\", \"1.0-0\") : \"-\";\n\n this.offeredADUs = [\n ...this.offeredADUs,\n ...[\n {\n ...data,\n ...generalAdditionalDataForADUTableEdit,\n ...specificAdditionalDataForADUTableEdit,\n index: this.offeredADUs.length + 1,\n },\n ],\n ];\n\n this.updateTableIndexes();\n this.createTotalRowForADUTable();\n this.enableDisableSaveForADUEditOrCreate();\n }\n\n private updateTableIndexes(): void {\n let index: number = 0;\n // why we are updating index here?\n this.offeredADUs.forEach((item) => {\n if (this.isADUOrBonusCreate) {\n item.hideDisplayStatusTd = true;\n }\n item.index = cloneDeep(index);\n index += 1;\n });\n\n if (this.isADUOrBonusCreate) {\n this.offeredADUs[0].hideDisplayStatusTd = false;\n this.offeredADUs[0].DisplayStatusRowspan = this.offeredADUs.length;\n }\n }\n\n // ===== DATE UTILITY METHODS =====\n private getStartAndEndDates(\n startDateInNgbDateFormat: NgbDateStruct,\n endDateInNgbDateFormat: NgbDateStruct,\n ): WeekDateRange {\n const startDate = this.dateTimeFormatService.convertNgbDateToMomentInSpecificFormat(\n startDateInNgbDateFormat,\n \"YYYY-MM-DD\",\n );\n const startDateMoment = this.dateTimeFormatService.convertNgbDateToMoment(startDateInNgbDateFormat);\n const mindateInMoment: string = this.dateTimeFormatService.convertNgbDateToMoment(this.minDate);\n\n const selectedWeekStartDate = dayjs(startDateMoment).isSameOrAfter(mindateInMoment)\n ? cloneDeep(startDate)\n : cloneDeep(mindateInMoment);\n\n const endDate = this.dateTimeFormatService.convertNgbDateToMomentInSpecificFormat(\n endDateInNgbDateFormat,\n \"YYYY-MM-DD\",\n );\n const endDateMoment = this.dateTimeFormatService.convertNgbDateToMoment(endDateInNgbDateFormat);\n const maxDateInMoment: string = this.dateTimeFormatService.convertNgbDateToMoment(this.maxDate);\n\n const selectedWeekEndDate = dayjs(endDateMoment).isAfter(maxDateInMoment)\n ? cloneDeep(maxDateInMoment)\n : cloneDeep(endDate);\n\n return {\n selectedWeekStartDate,\n selectedWeekEndDate,\n };\n }\n\n // ===== ACTION HANDLING METHODS =====\n cancelClicked(): void {\n this.createOrEditADUOrBonusModalRef?.close();\n this.cancelButtonClicked.emit();\n }\n\n inputEditedInADUOrBonusTable(event: { row: any; value: string; keyEdited: string }): void {\n this.resetTimerAfterUserAction.emit();\n\n if (event.keyEdited === OfferedMGOrADUTableKeys.BUYER_PROGRAM_KEY) {\n this.buyerProgramNameEdited(event);\n }\n }\n\n private buyerProgramNameEdited(event: { row: any; value: string; keyEdited: string }): void {\n const buyerProgramNameColumn: any = {\n type: \"INPUT\",\n hasError: event.value === \"\",\n placeholder: \"Add Buyer Program Name\",\n value: event.value,\n disabled: false,\n allowSpecialCharacters: true,\n isDecimalPointCheckRequired: false,\n charactersToRestrict: GenericSpotsApprovalService.charactersToRestrictInBuyerProgramNameColumn,\n className: event.row.BuyerProgramNameColumn.disabled ? \"td-input\" : \"td-disabled-input\",\n };\n\n this.offeredADUs[event.row.index].BuyerProgramNameColumn = cloneDeep(buyerProgramNameColumn);\n this.enableDisableSaveForADUEditOrCreate();\n }\n\n otherSpotsTableActionClicked(event: { data: IAvailableSpotInformationForEdit; id: any }): void {\n if (event.id === \"OtherSpotsInventoryColumn\") {\n this.handleInventoryColumnClick(event.data);\n } else {\n this.resetTimerAfterUserAction.emit();\n this.addRowToADUTable(event.data);\n }\n this.checkIfSingleOfferPresent();\n }\n\n private handleInventoryColumnClick(data: IAvailableSpotInformationForEdit): void {\n this.inventoryCodeSelectedForViewingSpots = cloneDeep(data.InventoryCode);\n const modalData: SpotDetailsModalData = {\n inventoryCodeId: data.InventoryCodeId,\n inventoryCode: data.InventoryCode,\n weekStartDate: data.WeekStartDate,\n date: data.Date,\n };\n this.openSpotDetailsModal(modalData);\n }\n\n rotatorsActionClicked(event: { data: IAvailableSpotInformationForEdit; id: any }) {\n this.resetTimerAfterUserAction.emit();\n this.addRowToADUTable(event.data);\n this.checkIfSingleOfferPresent();\n }\n\n actionClickedInADUOrBonusTable(event: { data: IADUSpotInformationForEdit; id: any; isIconClicked: boolean }): void {\n if (event.id === \"total-action\") {\n this.removeAllClickedInADUTableTotalRow();\n } else {\n this.handleIndividualRowAction(event);\n }\n\n this.createTotalRowForADUTable();\n this.enableDisableSaveForADUEditOrCreate();\n }\n\n private handleIndividualRowAction(event: {\n data: IADUSpotInformationForEdit;\n id: any;\n isIconClicked: boolean;\n }): void {\n if (\n !this.isADUOrBonusCreate &&\n this.otherSpots.filter((n) => n.UniqueId === event.data.UniqueId)?.length === 0\n ) {\n this.handleEditModeRowAction(event);\n } else {\n this.removeRowFromTable(event.data);\n }\n\n this.updateTableIndexes();\n this.checkIfSingleOfferPresent();\n this.enableDisableSaveForADUEditOrCreate();\n }\n\n private handleEditModeRowAction(event: {\n data: IADUSpotInformationForEdit;\n id: any;\n isIconClicked: boolean;\n }): void {\n if (event.data.ActionKeyForEdit[0].name === \"Remove\") {\n this.handleRemoveAction(event.data);\n } else {\n this.handleUndoAction(event.data);\n }\n }\n\n private handleRemoveAction(data: IADUSpotInformationForEdit): void {\n this.offeredADUs.splice(data.index, 1);\n data.ActionKeyForEdit = [\n new ClickableItemForMGTableActionColumn(\n TypeOfActionLinkForGtEnumSpotsApprovalEdit.ACTION_COLUMN_CLICK,\n \"Undo\",\n \"action-link\",\n false,\n null,\n ),\n ];\n data.gtClass = \"removed-row\";\n data.DisplayStatus = \"Removed\";\n this.offeredADUs = [...this.offeredADUs, ...[data]];\n }\n\n private handleUndoAction(data: IADUSpotInformationForEdit): void {\n const obj = cloneDeep(data);\n obj.ActionKeyForEdit = [\n new ClickableItemForMGTableActionColumn(\n TypeOfActionLinkForGtEnumSpotsApprovalEdit.ACTION_COLUMN_CLICK,\n \"Remove\",\n \"action-link\",\n false,\n null,\n ),\n ];\n obj.DisplayStatus = obj.IsAddedInGroup ? \"Added\" : \"Offered\";\n obj.gtClass = \"\";\n this.offeredADUs.splice(data.index, 1, obj);\n this.createTotalRowForADUTable();\n }\n\n private removeRowFromTable(data: IADUSpotInformationForEdit): void {\n this.offeredADUs.splice(data.index, 1);\n this.createTotalRowForADUTable();\n }\n\n private removeAllClickedInADUTableTotalRow(): void {\n if (this.isADUOrBonusCreate) {\n this.offeredADUs = [];\n } else {\n this.handleEditModeRemoveAll();\n }\n\n this.createTotalRowForADUTable();\n this.enableDisableSaveForADUEditOrCreate();\n }\n\n private checkIfSingleOfferPresent() {\n const activeOffers: IADUSpotInformationForEdit[] = this.offeredADUs.filter(\n (n) => n.ActionKeyForEdit[0].name === \"Remove\",\n );\n const singleOfferLeft: boolean = activeOffers.length === 1;\n\n if (singleOfferLeft) {\n if (this.offeredADUs.filter((n) => n.ActionKeyForEdit[0].name === \"Remove\").length > 0) {\n this.offeredADUs.filter(\n (n) => n.ActionKeyForEdit[0].name === \"Remove\",\n )[0].ActionKeyForEdit[0].class = \"disabled-action-link\";\n }\n } else {\n this.offeredADUs.forEach((item) => {\n item.ActionKeyForEdit[0].class = \"action-link\";\n });\n }\n }\n\n private handleEditModeRemoveAll(): void {\n let offeredADUs: IADUSpotInformationForEdit[] = cloneDeep(this.offeredADUs);\n offeredADUs = offeredADUs.filter(\n (n) =>\n n.DisplayStatus === \"Removed\" ||\n n.DisplayStatus === \"Offered\" ||\n (n.DisplayStatus === \"Added\" && n.IsAddedInGroup),\n );\n\n offeredADUs.forEach((item) => {\n item.ActionKeyForEdit = [\n new ClickableItemForMGTableActionColumn(\n TypeOfActionLinkForGtEnumSpotsApprovalEdit.ACTION_COLUMN_CLICK,\n \"Undo\",\n \"action-link\",\n false,\n null,\n ),\n ];\n item.DisplayStatus = \"Removed\";\n item.gtClass = \"removed-row\";\n });\n\n this.offeredADUs = [...offeredADUs];\n }\n\n // ===== UTILITY METHODS =====\n private getDisplayStatus(item: any): \"Offered\" | \"Added\" | \"Removed\" | \"Created\" {\n if (item.IsRemovedFromGroup) return \"Removed\";\n if (item.IsAddedInGroup) return \"Added\";\n return \"Offered\";\n }\n\n detectChanges(): void {\n this.cdr.detectChanges();\n }\n\n removeTooltipOnScroll(e: any): void {\n const elements = document.getElementsByClassName(\"tooltip\");\n while (elements && elements.length > 0) {\n elements[0].remove();\n }\n }\n\n lockTimedOut() {\n this.lockTimedOutEmit.emit();\n }\n\n resetTimer() {\n this.timerComponent?.reset();\n }\n}","<ng-template\n #createOrEditADUOrBonusModal\n let-modal\n>\n <header class=\"modal-header\">\n <img\n *ngIf=\"ogLogoUrl && ogLogoUrl !== ''\"\n class=\"channel-logo\"\n src=\"{{ ogLogoUrl }}\"\n height=\"33\"\n alt=\"Channel Logo\"\n />\n <img\n class=\"anna-logo\"\n src=\"../../../../assets/images/Anna-Logo-No shadow-White.png\"\n alt=\"Anna Logo\"\n />\n </header>\n\n <main\n class=\"modal-body\"\n (scroll)=\"removeTooltipOnScroll($event)\"\n >\n <anna-design-timer\n class=\"spots-approval-timer edit-page-timer\"\n #timerComponent\n [outerStrokeColor]=\"'#d8d8d8'\"\n [innerStrokeColor]=\"'#f44336'\"\n [duration]=\"600\"\n [top]=\"'40px'\"\n [timerTextLeftValue]=\"'calc(100% - 90px)'\"\n [timerCircleLeftValue]=\"'calc(100% - 98px)'\"\n (timedOut)=\"lockTimedOut()\"\n ></anna-design-timer>\n <section class=\"header-and-buttons\">\n <h3 class=\"page-title\">{{ pageTitle }} for Order# {{ orderRelatedExtraInfo?.orderId }}</h3>\n <span\n *ngIf=\"orderRelatedExtraInfo.spotType === 'ADU'\"\n class=\"guidelines\"\n [ngbTooltip]=\"guidelines\"\n placement=\"bottom left\"\n container=\"body\"\n tooltipClass=\"guidelines-tooltip\"\n #t=\"ngbTooltip\"\n >Guidelines\n <i class=\"mdi mdi-format-list-checkbox\"></i>\n </span>\n </section>\n\n <div class=\"buttons-container\">\n <section class=\"order-info\">\n <div class=\"info-item w-20\">\n <span class=\"info-label\">Flight Dates</span>\n <span\n class=\"info-value\"\n annaCoreShowEllipsisTextOnHover\n >\n <strong\n >{{ orderData.flightStartDate | date: \"MM/dd/yy\" }} -\n {{ orderData.flightEndDate | date: \"MM/dd/yy\" }}</strong\n >\n </span>\n </div>\n\n <div class=\"info-item w-30\">\n <span class=\"info-label\">Hiatus Dates</span>\n <span\n class=\"info-value\"\n annaCoreShowEllipsisTextOnHover\n >\n <ng-container *ngIf=\"orderData.hiatusPeriod?.length === 0; else hiatusData\">\n <strong>-</strong>\n </ng-container>\n <ng-template #hiatusData>\n <strong>\n <ng-container *ngFor=\"let item of orderData.hiatusPeriod; let last = last\">\n {{ item?.StartDate }} - {{ item?.EndDate }}\n <ng-container *ngIf=\"!last\">, </ng-container>\n </ng-container>\n </strong>\n </ng-template>\n </span>\n </div>\n\n <div class=\"info-item w-20\">\n <span class=\"info-label\">Spot Dates</span>\n <span class=\"info-value\">\n <strong>{{ orderData.firstBookedSpotDate }} - {{ orderData.lastBookedSpotDate }}</strong>\n </span>\n </div>\n\n <div class=\"info-item placed-weeks\">\n <span class=\"info-label\">Placed Weeks</span>\n <span\n class=\"info-value\"\n annaCoreShowEllipsisTextOnHover\n >\n <ng-container *ngIf=\"orderData.placedWeeks?.length === 0; else placedWeekData\">\n <strong>-</strong>\n </ng-container>\n <ng-template #placedWeekData>\n <strong>\n <ng-container *ngFor=\"let item of orderData.placedWeeks; let last = last\">\n {{ item }}\n <ng-container *ngIf=\"!last\">, </ng-container>\n </ng-container>\n </strong>\n </ng-template>\n </span>\n </div>\n </section>\n\n <div class=\"d-flex\">\n <button\n class=\"anna cancel-button\"\n (click)=\"cancelClicked()\"\n >\n Cancel\n </button>\n <button\n class=\"anna apply-button\"\n [disabled]=\"disableSave\"\n (click)=\"saveADUEdit()\"\n >\n Save\n </button>\n </div>\n </div>\n\n <main class=\"main-content\">\n <section class=\"table-section\">\n <header class=\"title-labels\">\n <span class=\"section-title\">{{ tableName }}</span>\n <span class=\"grey-line\"></span>\n </header>\n <div class=\"grey-line\"></div>\n\n <anna-core-non-editable-generic-table-lib\n class=\"spot-approval-edit-gt adu-edit-table\"\n [showSkeletonLoading]=\"showTableSkeletonLoader\"\n [tableHeaders]=\"offeredADUsTableHeaders\"\n [tableData]=\"offeredADUs\"\n [clonedTableData]=\"offeredADUs\"\n [tdsHaveRowSpan]=\"isADUOrBonusCreate\"\n [hideSomeTds]=\"isADUOrBonusCreate\"\n [gtGeneralConfig]=\"gtGeneralConfigForADU\"\n [fixNumberOfRowsForPopup]=\"true\"\n [totalRowInfo]=\"totalRowInfoForOfferedADUs\"\n [gtDimension]=\"gtDimensionForADUTable\"\n [clickableRow]=\"false\"\n (editableInputEdited)=\"inputEditedInADUOrBonusTable($event)\"\n (clickableDataClicked)=\"actionClickedInADUOrBonusTable($event)\"\n >\n </anna-core-non-editable-generic-table-lib>\n </section>\n\n <section class=\"other-spots-section\">\n <header class=\"title-labels\">\n <span class=\"section-title\">Other Spots</span>\n <span class=\"grey-line\"></span>\n </header>\n\n <div\n class=\"dropdown-container-week\"\n [ngClass]=\"{ 'pointer-events-none': showSkeletonLoaderInOtherSpotsTable }\"\n >\n <anna-design-week-calendar\n *ngIf=\"weekcalendarConfig\"\n [config]=\"weekcalendarConfig\"\n class=\"edit-or-create-offer-week-calendar\"\n [selectedFromDate]=\"fromDate\"\n [selectedEndDate]=\"toDate\"\n [timezone]=\"orderRelatedExtraInfo?.timezone\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n [noOfMonthsQuarterYearToEnableInPast]=\"noOfMonthsQuarterYearToEnableInPast\"\n [noOfMonthsQuarterYearToEnableInFuture]=\"noOfMonthsQuarterYearToEnableInFuture\"\n [unitToEnableForMinDate]=\"'days'\"\n [unitToEnableForMaxDate]=\"'days'\"\n (applyWeekCalendarChanges)=\"applyWeekSelection($event)\"\n >\n </anna-design-week-calendar>\n </div>\n\n <anna-feature-other-spots-edit-table\n class=\"other-spots-table-section\"\n [tableHeaders]=\"otherSpotsTableHeaders\"\n [spots]=\"otherSpots\"\n [gtClass]=\"'other-spot-approval-available-list-table'\"\n [applyFiltersAndSorting]=\"applyFilteringAndSortingForOtherSpotsTable\"\n [resetFiltersAndSorting]=\"resetFiltersForOtherSpotsTable\"\n [spotsForDisplay]=\"otherSpotsForDisplay\"\n [showTableSkeletonLoader]=\"showSkeletonLoaderInOtherSpotsTable\"\n (spotsActionClicked)=\"otherSpotsTableActionClicked($event)\"\n (filterSortingApplied)=\"filterSortingAppliedToOtherSpotsTable($event)\"\n >\n </anna-feature-other-spots-edit-table>\n </section>\n\n <section>\n <label class=\"title-labels\">\n <span>Rotators</span>\n <span class=\"grey-line\"></span>\n </label>\n <div\n class=\"dropdown-container-week\"\n [ngClass]=\"{ 'pointer-events-none': showSkeletonLoaderInRotatorsTable }\"\n >\n <anna-design-week-calendar\n *ngIf=\"weekcalendarConfigForRotatorsTable\"\n [config]=\"weekcalendarConfigForRotatorsTable\"\n class=\"edit-or-create-offer-week-calendar\"\n [selectedFromDate]=\"fromDateForFetchingRotators\"\n [selectedEndDate]=\"toDateForFetchingRotators\"\n [timezone]=\"orderRelatedExtraInfo?.timezone\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n [noOfMonthsQuarterYearToEnableInPast]=\"noOfMonthsQuarterYearToEnableInPast\"\n [noOfMonthsQuarterYearToEnableInFuture]=\"noOfMonthsQuarterYearToEnableInFuture\"\n [unitToEnableForMinDate]=\"'days'\"\n [unitToEnableForMaxDate]=\"'days'\"\n (applyWeekCalendarChanges)=\"applyWeekSelectionForRotators($event)\"\n ></anna-design-week-calendar>\n </div>\n <anna-feature-other-spots-edit-table\n class=\"other-spots-table-section\"\n [tableHeaders]=\"rotatorsTableHeaders\"\n [spots]=\"rotators\"\n [gtClass]=\"'other-spot-approval-available-list-table rotators-table'\"\n [applyFiltersAndSorting]=\"applyFilteringAndSortingForRotatorsTable\"\n [resetFiltersAndSorting]=\"resetFiltersForRotatorsTable\"\n [spotsForDisplay]=\"rotatorsForDisplay\"\n [showTableSkeletonLoader]=\"showSkeletonLoaderInRotatorsTable\"\n (spotsActionClicked)=\"rotatorsActionClicked($event)\"\n (filterSortingApplied)=\"filterSortingAppliedToRotatorsTable($event)\"\n >\n </anna-feature-other-spots-edit-table>\n </section>\n </main>\n </main>\n</ng-template>\n\n<anna-feature-spot-details-popup\n #spotDetailsPopup\n *ngIf=\"openSpotDetailsPopup\"\n [stationId]=\"orderRelatedExtraInfo?.stationId\"\n [gtGeneralConfig]=\"gtGeneralConfig\"\n (closed)=\"openSpotDetailsPopup = false\"\n>\n</anna-feature-spot-details-popup>\n\n<anna-design-confirmation-popup\n *ngIf=\"openOverDeliveryConfirmationPopup\"\n #overDelConfirmation\n [config]=\"overDeliveryConfirmationConfig\"\n (confirmClicked)=\"closeModal()\"\n (cancelClicked)=\"closeOverDelPopup()\"\n>\n</anna-design-confirmation-popup>\n\n<ng-template #guidelines>\n <ul>\n <li>\n Provide ADUs based on:\n {{ guideLinesAdditionalSpots?.IsProjectionUsed ? \"Postings & Projections\" : \"Postings Only\" }}\n </li>\n <li>\n Minimum {{ orderRelatedExtraInfo.showImpressions ? \"IMPS\" : \"GRP\" }} expected to be achieved:\n {{ guideLinesAdditionalSpots?.MinimumThreshold }}%\n </li>\n <li>Allowed Inventory : {{ guideLinesAdditionalSpots?.Alternative }}</li>\n <li>\n Max spots allowed per OTO Program for the following durations\n <br />\n <span class=\"tooltip-grey-text\">\n >> 30 min <b>{{ guideLinesAdditionalSpots?.MaxSpotsAllowedInOTO.PerHalfHour }}</b> | 30 min - 1 hour:\n <b>{{ guideLinesAdditionalSpots?.MaxSpotsAllowedInOTO.HalfHourToOneHour }}</b> | 1 hour - 2 hours:\n <b>{{ guideLinesAdditionalSpots?.MaxSpotsAllowedInOTO.OneHourToTwoHours }}</b> | 2 hours - 3 hours:\n <b>{{ guideLinesAdditionalSpots?.MaxSpotsAllowedInOTO.TwoHoursToThreeHours }}</b> | 3+ hrs:\n <b>{{ guideLinesAdditionalSpots?.MaxSpotsAllowedInOTO.ThreeHoursPlus }}</b>\n </span>\n </li>\n <li>\n Max spots allowed per Strip Program for the following durations\n <br />\n <span class=\"tooltip-grey-text\">\n >> 30 min: Daily: <b>{{ guideLinesAdditionalSpots?.MaxSpotsAllowedInStripDaily.PerHalfHour }}</b\n >, Weekly: <b>{{ guideLinesAdditionalSpots?.MaxSpotsAllowedInStripWeekly.PerHalfHour }}</b> | 30 min - 1\n hour: Daily: <b>{{ guideLinesAdditionalSpots?.MaxSpotsAllowedInStripDaily.HalfHourToOneHour }}</b\n >, Weekly: <b>{{ guideLinesAdditionalSpots?.MaxSpotsAllowedInStripWeekly.HalfHourToOneHour }}</b> | 1\n hour - 2 hours: Daily:\n <!-- <b>{{ guideLinesAdditionalSpots?.MaxSpotsAllowedInStripDaily.OneHourToTwoHours }}</b\n >, Weekly: <b>{{ guideLinesAdditionalSpots?.MaxSpotsAllowedInStripWeekly.OneHourToTwoHours }}</b> | 2+\n hrs: Daily: <b>{{ guideLinesAdditionalSpots?.MaxSpotsAllowedInStripDaily.TwoHoursPlus }}</b\n >, Weekly: <b>{{ guideLinesAdditionalSpots?.MaxSpotsAllowedInStripWeekly.TwoHoursPlus }}</b> -->\n </span>\n </li>\n </ul>\n</ng-template>","import { NgIf } from \"@angular/common\";\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n} from \"@angular/core\";\nimport {\n AnnaCoreModule,\n AnnaFilterService,\n AnnaGlobalConfigService,\n AnnaGtHelperService,\n AnnaSortService,\n IGtGeneralConfig,\n IGtTableHeader,\n ITotalRowInfo,\n} from \"@annalib/anna-core\";\nimport { AnnaDesignComponentsLibModule, MessageBoxData } from \"@annalib/anna-design-components-lib\";\nimport { cloneDeep } from \"lodash-es\";\n\nimport { IMakeGoodSpotInformationForEdit } from \"../models/create-or-edit-offers-popup.model\";\n\n@Component({\n selector: \"anna-feature-offered-mg-edit-table\",\n templateUrl: \"./offered-mg-edit-table.component.html\",\n styleUrls: [\"./offered-mg-edit-table.component.scss\"],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AnnaCoreModule, AnnaDesignComponentsLibModule, NgIf],\n providers: [AnnaFilterService, AnnaSortService, AnnaGtHelperService]\n})\nexport class OfferedMgEditTableComponent implements OnInit, OnChanges {\n @Input() offeredMGsTableHeaders: IGtTableHeader[];\n @Input() messageBoxData: MessageBoxData;\n @Input() showMakegoodTableSkeletonLoader: boolean;\n @Input() offeredMakegoods: IMakeGoodSpotInformationForEdit[];\n @Input() offeredMakeGoodsForDisplay: IMakeGoodSpotInformationForEdit[];\n @Input() totalRowInfoForOfferedMakeGoods: ITotalRowInfo[];\n @Input() applyFiltersAndSorting: boolean;\n @Input() resetFiltersAndSorting: boolean;\n @Input() title: string;\n\n @Output() offeredMgActionClicked = new EventEmitter();\n @Output() inputEdited = new EventEmitter();\n @Output() timeSelectedInTableRow = new EventEmitter();\n @Output() sotingApplied = new EventEmitter();\n @Output() filtered = new EventEmitter();\n @Output() reArrangeAndCalculateTotalRow = new EventEmitter();\n @Output() revenueClassEditedEmit = new EventEmitter<{\n selectedItem: { id: number; text: string };\n row: IMakeGoodSpotInformationForEdit;\n dropdownIndex: number;\n }>();\n\n gtGeneralConfigForOfferedMG: IGtGeneralConfig;\n gtDimensionForMGTable = {\n rowHeight: 55,\n headerHeight: 40,\n dataOnTopHeight: 150,\n marginFromBottom: 300,\n };\n\n constructor(\n private annaGlobalConfig: AnnaGlobalConfigService,\n private annaSortService: AnnaSortService,\n private annaFilterService: AnnaFilterService,\n private annaGtService: AnnaGtHelperService,\n ) { }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.applyFiltersAndSorting && changes.applyFiltersAndSorting.currentValue) {\n this.offeredMakeGoodsForDisplay = this.annaFilterService.filterData(this.offeredMakegoods, \"\");\n this.annaSortService.noSortingAppliedData = cloneDeep(this.offeredMakeGoodsForDisplay);\n this.offeredMakeGoodsForDisplay = this.annaGtService.isSortingAppliedToTable()\n ? this.annaGtService.callSort(this.offeredMakeGoodsForDisplay)\n : this.offeredMakeGoodsForDisplay;\n this.reArrangeAndCalculateTotalRow.emit(this.offeredMakeGoodsForDisplay);\n }\n\n if (changes.resetFiltersAndSorting && changes.resetFiltersAndSorting.currentValue) {\n this.resetFiltersAndSorting = false;\n this.annaGtService.initColumnFilterAndSorting();\n this.annaSortService.noSortingAppliedData = cloneDeep(this.offeredMakegoods);\n this.annaFilterService.updateStateOfAllTheKeys(this.annaSortService.columnSortState);\n }\n }\n\n ngOnInit(): void {\n this.setTableConfig();\n this.annaGtService.initColumnFilterAndSorting();\n this.annaSortService.noSortingAppliedData = cloneDeep(this.offeredMakegoods);\n }\n\n revenueClassEdited(event: {\n selectedItem: { id: number; text: string };\n row: IMakeGoodSpotInformationForEdit;\n dropdownIndex: number;\n }) {\n this.revenueClassEditedEmit.emit(event);\n }\n\n setTableConfig() {\n this.gtGeneralConfigForOfferedMG = { ...this.annaGlobalConfig.defaultGtGeneralConfig };\n this.gtGeneralConfigForOfferedMG.component = \"DRR\";\n this.gtGeneralConfigForOfferedMG.bufferSize = 100;\n this.gtGeneralConfigForOfferedMG.totalRow = true;\n this.gtGeneralConfigForOfferedMG.tableContainerName =\n \"spot-approval-edit-table-container spot-approval-edit-offeredMG-table-container\";\n }\n\n filterApplied(tableData: IMakeGoodSpotInformationForEdit[]) {\n this.offeredMakeGoodsForDisplay = tableData;\n this.filtered.emit(tableData);\n }\n\n sortingApplied(tableData: IMakeGoodSpotInformationForEdit[]) {\n this.offeredMakeGoodsForDisplay = tableData;\n this.sotingApplied.emit(tableData);\n }\n\n offeredMGTableActionClicked(event: { data: IMakeGoodSpotInformationForEdit; id: any }) {\n this.offeredMgActionClicked.emit(event);\n }\n\n editableInputEdited(event: { row: any; value: string; keyEdited: string }) {\n this.inputEdited.emit(event);\n }\n\n timeSelected(obj: { selectedTime: string[][]; selectedTimeConverted: { startTime: string; endTime: string; }; rowData: any; }) {\n this.timeSelectedInTableRow.emit(obj);\n }\n}\n","<label class=\"title-labels\">\n <span>{{ title }}</span>\n <span class=\"grey-line\"></span>\n</label>\n<span class=\"additional-message-for-edit\"\n ><i>Utilize the </i><b>Available spots table </b><i>at the bottom to edit the offered MG set</i></span\n>\n<anna-design-message-box\n *ngIf=\"messageBoxData\"\n [messageBoxData]=\"messageBoxData\"\n [headerAsBlockElement]=\"true\"\n [showHyphen]=\"false\"\n></anna-design-message-box>\n\n<anna-core-non-editable-generic-table-lib\n [showSkeletonLoading]=\"showMakegoodTableSkeletonLoader\"\n class=\"spot-approval-edit-gt spot-approval-edit-table spot-approval-edit-gt-offered-MG\"\n [tableHeaders]=\"offeredMGsTableHeaders\"\n [tableData]=\"offeredMakeGoodsForDisplay\"\n [clonedTableData]=\"offeredMakegoods\"\n [gtGeneralConfig]=\"gtGeneralConfigForOfferedMG\"\n [gtDimension]=\"gtDimensionForMGTable\"\n [clickableRow]=\"false\"\n [totalRowInfo]=\"totalRowInfoForOfferedMakeGoods\"\n [fixNumberOfRowsForPopup]=\"true\"\n (gtTextActionClicked)=\"offeredMGTableActionClicked($event)\"\n (clickableDataClicked)=\"offeredMGTableActionClicked($event)\"\n (editableInputEdited)=\"editableInputEdited($event)\"\n (filterAppliedToTable)=\"filterApplied($event)\"\n (sortingAppliedToTable)=\"sortingApplied($event)\"\n (singleSelectDropdownValueEmit)=\"revenueClassEdited($event)\"\n (timeSelected)=\"timeSelected($event)\"\n>\n</anna-core-non-editable-generic-table-lib>\n","import { NgFor, NgIf } from \"@angular/common\";\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n TemplateRef,\n ViewChild,\n} from \"@angular/core\";\nimport { AnnaDesignComponentsLibModule } from \"@annalib/anna-design-components-lib\";\nimport { NgbModal, NgbModalRef } from \"@ng-bootstrap/ng-bootstrap\";\n\n@Component({\n selector: \"anna-feature-political-rate-warning-popup\",\n templateUrl: \"./political-rate-warning-popup.component.html\",\n styleUrls: [\"./political-rate-warning-popup.component.scss\"],\n imports: [NgIf, NgFor, AnnaDesignComponentsLibModule],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PoliticalRateWarningPopupComponent implements OnInit {\n @Input() data: { key: string; value: string }[];\n @Input() autoAssignablePriorityCode: { id: number; text: string } = null;\n @Output() closed = new EventEmitter();\n @Output() autoAssignPriorityCodeForGivenLURViolation = new EventEmitter();\n\n @ViewChild(\"politicalRateWarningModal\", { static: true })\n private politicalRateWarningModal: TemplateRef<any>;\n politicalRateWarningModalReference: NgbModalRef;\n politicalRate: string;\n\n constructor(private modalService: NgbModal) {}\n\n ngOnInit() {\n this.openModal();\n this.politicalRate = this.data.filter((n) => n.key === \"Section Rate\")[0]?.value;\n }\n\n openModal() {\n this.politicalRateWarningModalReference = this.modalService.open(this.politicalRateWarningModal);\n }\n\n closeModal() {\n this.politicalRateWarningModalReference.close();\n this.closed.emit();\n }\n\n autoAssignPriorityCode() {\n this.autoAssignPriorityCodeForGivenLURViolation.emit();\n this.closeModal();\n }\n}\n","<ng-template\n #politicalRateWarningModal\n let-modal\n>\n <div class=\"modal-header p-24\">\n <i\n class=\"mi mdi-close-icon mdi-font-md close\"\n (click)=\"closeModal()\"\n ></i>\n <h3 class=\"modal-title\">Section Rate Warning</h3>\n </div>\n\n <div class=\"modal-body logout-modal\">\n <section *ngFor=\"let obj of data\">\n <div>\n <b>{{ obj.key }}:</b> {{ obj.value }}\n </div>\n </section>\n <section>\n <div class=\"info-message\">\n The offered rate falls below the station's section rate, potentially causing a violation and rebate. You\n can:\n </div>\n <ul>\n <li>\n Adjust the rating/impressions to ensure the offered rate meets or exceeds\n {{ politicalRate }} for compliance.\n </li>\n <li>\n Adjust the revenue class to ensure there is no violation.\n <ng-container *ngIf=\"autoAssignablePriorityCode\">\n <a\n class=\"auto-assign-priorty-code\"\n (click)=\"autoAssignPriorityCode()\"\n >Click here\n </a>\n for ANNA to auto-assign the revenue class.\n </ng-container>\n </li>\n <li>\n Alternatively, you can save the offer with the current rate, but be aware of the potential\n violation.\n </li>\n </ul>\n </section>\n </div>\n</ng-template>\n","import { CurrencyPipe, DatePipe, JsonPipe, NgClass, NgFor, NgIf, NgOptimizedImage } from \"@angular/common\";\nimport { HttpResponse } from \"@angular/common/http\";\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Inject,\n Input,\n OnInit,\n Output,\n TemplateRef,\n ViewChild,\n} from \"@angular/core\";\nimport { MatExpansionModule } from \"@angular/material/expansion\";\nimport {\n AnnaCoreModule,\n AnnaDateTimeFormatService,\n AnnaGlobalConfigService,\n ErrorCodes,\n IconCellActionKey,\n IGtGeneralConfig,\n IGtTableHeader,\n ITotalRowInfo,\n IWeekCalendar,\n SvgOrIconNames,\n} from \"@annalib/anna-core\";\nimport {\n AnnaDesignComponentsLibModule,\n GenericMessageBoxTheme,\n MessageBoxData,\n TimerComponent,\n WeekCalendarService,\n} from \"@annalib/anna-design-components-lib\";\nimport { datadogRum } from \"@datadog/browser-rum\";\nimport { NgbDate, NgbDateStruct, NgbModal, NgbModalOptions, NgbModalRef, NgbTooltip } from \"@ng-bootstrap/ng-bootstrap\";\nimport dayjs from \"dayjs\";\nimport isSameOrAfter from \"dayjs/plugin/isSameOrAfter\";\nimport { cloneDeep, isEqual, sortBy } from \"lodash-es\";\nimport { NgxSkeletonLoaderModule } from \"ngx-skeleton-loader\";\nimport { ToastrService } from \"ngx-toastr\";\nimport { NgxUiLoaderService } from \"ngx-ui-loader\";\nimport { forkJoin } from \"rxjs\";\n\nimport { AddOsSpotsPopupComponent } from \"../add-os-spots-popup/add-os-spots-popup.component\";\nimport {\n ISpotsApprovalBackendService,\n SPOTS_APPROVAL_PAGE_SERVICE_TOKEN,\n} from \"../config/spots-approval-backend-service.token\";\nimport { OfferedMGOrADUTableKeys, ValidationResults } from \"../constants/create-or-edit-offers.constant\";\nimport { IBizRulesForSpotsApproval, ISpotInformationResponse } from \"../models/anna-revisions-backend.model\";\nimport { DisplaySpotTypeFromBE } from \"../models/anna-revisions-enums.model\";\nimport { OrderInfoForANNARevision } from \"../models/anna-revisions-response.model\";\nimport { TotalRowForPreemptionsForIMPSOrder, TotalRowForPreemptionsForRTGOrder } from \"../models/create-or-edit-offer-total-rows.model\";\nimport {\n AdditionalInformationForSpot,\n ClickableItemForAvailableTableActionColumn,\n ClickableItemForMGTableActionColumn,\n ClickableItemForOSSpotsTableActionColumn,\n EditableInput,\n EditGroupPayload,\n EditMakeGoodGroupNewPayload,\n FreeFlowSpotsPayload,\n IAdditionInformationForFreeFlowSpot,\n IAdditionInformationForRotators,\n IAvailableSpotInformationForEdit,\n IconActionForOfferedRTGOrIMPSColumn,\n IconActionForSpotsApprovalEdit,\n IconsAndTooltips,\n IMakeGoodSpotInformationForEdit,\n IOSPESpotsData,\n IPreemptionSpotInformationForEdit,\n IRevenueClassList,\n ISaveEditedOffersPayload,\n IValidateEditedOffersPayload,\n IValidateEditedOffersResponse,\n MakeGoodSpotInformationForEdit,\n MGTableStatusTypes,\n StatusColumnIconActionForSpotsApprovalEdit,\n TotalRowForOfferedmadeGoodEditTable,\n TypeOfActionLinkForGtEnumSpotsApprovalEdit,\n} from \"../models/create-or-edit-offers-popup.model\";\nimport { OfferedMgEditTableComponent } from \"../offered-mg-edit-table/offered-mg-edit-table.component\";\nimport { OtherSpotsEditTableComponent } from \"../other-spots-edit-table/other-spots-edit-table.component\";\nimport { PoliticalRateWarningPopupComponent } from \"../political-rate-warning-popup/political-rate-warning-popup.component\";\nimport { CreateOrEditOffersService } from \"../services/create-or-edit-offers-popup.service\";\nimport { GenericSpotsApprovalService } from \"../services/generic-spots-approval.service\";\nimport { SpotDetailsPopupComponent } from \"../spot-details-popup/spot-details-popup.component\";\n\n@Component({\n selector: \"anna-feature-create-or-edit-offers-popup\",\n templateUrl: \"./create-or-edit-offers-popup.component.html\",\n styleUrls: [\"./create-or-edit-offers-popup.component.scss\"],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NgOptimizedImage,\n NgClass,\n NgIf,\n NgxSkeletonLoaderModule,\n NgbTooltip,\n AnnaCoreModule,\n MatExpansionModule,\n NgFor,\n DatePipe,\n AnnaDesignComponentsLibModule,\n OfferedMgEditTableComponent,\n OtherSpotsEditTableComponent,\n PoliticalRateWarningPopupComponent,\n SpotDetailsPopupComponent,\n AddOsSpotsPopupComponent,\n JsonPipe,\n ],\n})\nexport class CreateOrEditOffersPopupComponent implements OnInit {\n @Input() enableRevenueClassEdit: boolean = false;\n @Input() reofferComment: string = null;\n @Input() showImpressions: boolean;\n @Input() originalPreemptedSpots: ISpotInformationResponse[] = [];\n @Input() originalOfferedMakegoods: ISpotInformationResponse[];\n @Input() originalGroupableOutstandingSpots: ISpotInformationResponse[];\n @Input() stationId: number;\n @Input() bizRulesFromDb: any = null;\n @Input() buyerOrderId: string;\n @Input() spDayparts: string[];\n @Input() broadcastTime: string;\n @Input() loggedInUser: any;\n @Input() isCreateOffer: boolean;\n @Input() isNoRevision: boolean;\n @Input() timezone: string;\n @Input() tgId: number;\n @Input() isReofferFlow: boolean = false;\n @Input() IsBadlyBehavedGroup: boolean = false;\n @Input() orderData: OrderInfoForANNARevision;\n\n @Output() editSaved = new EventEmitter<\n { spots: { spotId: string; groupId: string }[], closePopup: boolean }\n >();\n @Output() cancelButtonClicked = new EventEmitter();\n @Output() resetTimerAfterUserAction = new EventEmitter();\n @Output() lockTimedOutEmit = new EventEmitter();\n\n ogLogoUrl: string = JSON.parse(localStorage.getItem(\"userProfileData\")).networkLogoUrl;\n\n preemptedSpots: IPreemptionSpotInformationForEdit[] = [];\n offeredMakegoods: IMakeGoodSpotInformationForEdit[];\n groupableOutstandingSpots: IPreemptionSpotInformationForEdit[];\n\n estimatePrioritiesForGuidelines: string[] = [];\n bizRules: IBizRulesForSpotsApproval;\n\n disableValidate: boolean = false;\n disableSave: boolean = true;\n showValidate: boolean = false;\n\n showMakegoodTableSkeletonLoader: boolean = true;\n showTableSkeletonLoader: boolean = true;\n showSkeletonLoaderInSpotsMeetingBizRulesTable: boolean = true;\n showSkeletonLoaderInOtherSpotsTable: boolean = true;\n showSkeletonLoaderInRotatorsTable: boolean = true;\n\n preemptionTableHeaders: IGtTableHeader[];\n\n offeredMGsTableHeaders: IGtTableHeader[];\n offeredMakeGoodsForDisplay: IMakeGoodSpotInformationForEdit[];\n offeredMakeGoodsOriginalData: IMakeGoodSpotInformationForEdit[] = [];\n totalRowInfoForOfferedMakeGoods: ITotalRowInfo[];\n\n // original data, won't change based on user add/remove actions\n savedOfferedMakeGoods: IMakeGoodSpotInformationForEdit[];\n allSpotsMeetingBizRules: IAvailableSpotInformationForEdit[] = [];\n allOtherAvailableSpots: IAdditionInformationForFreeFlowSpot[];\n allRotators: IAdditionInformationForRotators[];\n\n spotsMeetingBizRulesTableHeaders: IGtTableHeader[];\n spotsMeetingBizRules: IAvailableSpotInformationForEdit[] = [];\n spotsMeetingBizRulesForDisplay: IAvailableSpotInformationForEdit[] = [];\n\n otherSpotsTableHeaders: IGtTableHeader[];\n otherSpots: IAdditionInformationForFreeFlowSpot[] = [];\n otherSpotsForDisplay: IAdditionInformationForFreeFlowSpot[] = [];\n\n rotatorsTableHeaders: IGtTableHeader[];\n rotators: IAdditionInformationForRotators[] = [];\n rotatorsForDisplay: IAdditionInformationForRotators[] = [];\n\n gtDimension = {\n rowHeight: 40,\n headerHeight: 40,\n dataOnTopHeight: 422,\n marginFromBottom: 26,\n };\n\n gtDimensionForViewSpotsPopup = {\n rowHeight: 40,\n headerHeight: 40,\n dataOnTopHeight: 422,\n marginFromBottom: 26,\n };\n gtDimensionForMGTable = {\n rowHeight: 47,\n headerHeight: 40,\n dataOnTopHeight: 150,\n marginFromBottom: 300,\n };\n gtGeneralConfig: IGtGeneralConfig;\n gtGeneralConfigForOfferedMG: IGtGeneralConfig;\n gtGeneralConfigForPreemptions: IGtGeneralConfig;\n\n @ViewChild(\"spotsApprovalEditModal\", { static: true }) private spotsApprovalEditModal: TemplateRef<any>;\n private spotsApprovalEditModalRef: NgbModalRef;\n\n title: string;\n MGTableTitle: string;\n validationResponse: IValidateEditedOffersResponse;\n totalBookedRatingOfPE: number;\n totalBookedRateOfPE: number = null;\n messageBoxData: MessageBoxData;\n validatedNotSavedYetData: IMakeGoodSpotInformationForEdit[] = [];\n validatedNotSavedYetPreemptionTableData: IPreemptionSpotInformationForEdit[] = [];\n numberOftimesValidationFailed: number = 0;\n\n disableResetAllAvailableSpotsFilters: boolean = true;\n\n applyFilteringAndSortingForSpotsMeetingBizRulesTable: boolean = false;\n applyFilteringAndSortingForOtherSpotsTable: boolean = false;\n applyFilteringAndSortingForOfferedSpotsTable: boolean = false;\n applyFilteringAndSortingForRotatorsTable: boolean = false;\n\n resetFiltersForOfferedTable: boolean = false;\n resetFiltersForOtherSpotsTable: boolean = false;\n resetFiltersForRotatorsTable: boolean = false;\n\n weekcalendarConfig: IWeekCalendar;\n weekcalendarConfigForRotatorsTable: IWeekCalendar;\n fromDate: NgbDateStruct;\n toDate: NgbDateStruct;\n selectWeekForDate: NgbDate;\n noOfMonthsQuarterYearToEnableInPast: number;\n noOfMonthsQuarterYearToEnableInFuture: number;\n\n fromDateForFetchingRotators: NgbDateStruct;\n toDateForFetchingRotators: NgbDateStruct;\n selectedDateForFetchingRotators: NgbDate;\n\n @ViewChild(\"confirmPoliticalRateviolationsAndSaveModal\")\n private confirmPoliticalRateviolationsAndSaveModal: TemplateRef<any>;\n confirmPoliticalRateviolationsAndSaveModalReference: NgbModalRef;\n openPoliticalRateViolationViewPopup: boolean;\n politicalViolationData: { key: string; value: string }[];\n minDate: NgbDate;\n maxDate: NgbDate;\n\n inventoryCodeSelectedForViewingSpots: string;\n\n @ViewChild(\"spotDetailsPopup\") spotDetailsPopup: SpotDetailsPopupComponent;\n openSpotDetailsPopup: boolean;\n revenueClassList: IRevenueClassList[] = [];\n rowClickedForPoliticalRateViolation: IMakeGoodSpotInformationForEdit;\n newlyAddedSpotsIdForPersistingActionInUI: {\n spotId: string;\n groupId: string;\n }[] = [];\n showSkeletonLoaderInPreemptionTable: boolean = true;\n openAddOtherOSSpotsPopup: boolean;\n unselectedGroupableOutstandingSpots: IPreemptionSpotInformationForEdit[];\n totalRowInfoForPreemptionTable: ITotalRowInfo[];\n decimalPlacesCountAllowedInRatesMgTable: number = 2;\n @ViewChild(\"timerComponent\") private timerComponent: TimerComponent;\n\n constructor(\n private cdr: ChangeDetectorRef,\n private modalService: NgbModal,\n private currencyPipe: CurrencyPipe,\n private toastr: ToastrService,\n private ngxService: NgxUiLoaderService,\n private annaGlobalConfig: AnnaGlobalConfigService,\n private dateTimeFormatService: AnnaDateTimeFormatService,\n private weekCalendarService: WeekCalendarService,\n private createOrEditOffersService: CreateOrEditOffersService,\n @Inject(SPOTS_APPROVAL_PAGE_SERVICE_TOKEN)\n public consumingProjectSpotsApprovalBackendService: ISpotsApprovalBackendService,\n ) {\n dayjs.extend(isSameOrAfter);\n const gtGeneralConfig = { ...this.annaGlobalConfig.defaultGtGeneralConfig };\n gtGeneralConfig.bufferSize = 100;\n gtGeneralConfig.tableContainerName = \"spot-approval-edit-table-container\";\n\n this.gtGeneralConfig = cloneDeep(gtGeneralConfig);\n this.gtGeneralConfigForPreemptions = cloneDeep({ ...gtGeneralConfig, ...{ totalRow: true } });\n }\n\n setWeekcalendarConfig(selectCurrentWeek: boolean) {\n this.setMinMaxDates();\n const selectedWeekDate = selectCurrentWeek ? this.minDate : this.selectWeekForDate;\n const selectedWeekNgbDate = this.dateTimeFormatService.convertNgbDateToMoment(selectedWeekDate);\n this.noOfMonthsQuarterYearToEnableInPast = Math.abs(\n +dayjs(this.dateTimeFormatService.convertNgbDateToMoment(this.minDate)).diff(selectedWeekNgbDate, \"days\"),\n );\n this.noOfMonthsQuarterYearToEnableInFuture = Math.abs(\n +dayjs(this.dateTimeFormatService.convertNgbDateToMoment(this.maxDate)).diff(selectedWeekNgbDate, \"days\"),\n );\n\n const dates = this.weekCalendarService.getBroadcastWeek(selectedWeekNgbDate);\n this.fromDate = this.dateTimeFormatService.convertToNgbDate(dates.start, \"YYYY-MM-DD\");\n this.toDate = this.dateTimeFormatService.convertToNgbDate(dates.end, \"YYYY-MM-DD\");\n\n this.fromDateForFetchingRotators = this.dateTimeFormatService.convertToNgbDate(dates.start, \"YYYY-MM-DD\");\n this.toDateForFetchingRotators = this.dateTimeFormatService.convertToNgbDate(dates.end, \"YYYY-MM-DD\");\n\n this.weekcalendarConfig = { ...this.annaGlobalConfig.defaultWeekCalendarConfig };\n this.weekcalendarConfig.numberOfMonthsToEnableInPast = 0;\n this.weekcalendarConfig.emitInitialSelection = true;\n this.weekcalendarConfig.selectCurrentWeek = selectCurrentWeek;\n\n this.weekcalendarConfigForRotatorsTable = cloneDeep(this.weekcalendarConfig);\n }\n\n detectChanges() {\n this.cdr.detectChanges();\n }\n\n ngOnInit() {\n this.preemptedSpots = cloneDeep(this.originalPreemptedSpots as IPreemptionSpotInformationForEdit[]);\n this.offeredMakegoods = cloneDeep(this.originalOfferedMakegoods as IMakeGoodSpotInformationForEdit[]);\n this.groupableOutstandingSpots = cloneDeep(this.originalGroupableOutstandingSpots as IPreemptionSpotInformationForEdit[]);\n this.offeredMakeGoodsOriginalData = this.offeredMakegoods ? cloneDeep(this.offeredMakegoods) : [];\n this.unselectedGroupableOutstandingSpots = cloneDeep(this.groupableOutstandingSpots?.filter(n => n.UniqueId !== this.preemptedSpots[0]?.UniqueId));\n this.createEstimatePriorityListForGuidelines();\n if (this.isCreateOffer) {\n this.formatDataForOSPE();\n this.title = \"Create MakeGood Set\";\n this.MGTableTitle = \"User Added MakeGood\";\n this.bizRules = this.preemptedSpots[0]?.BizRules;\n } else {\n this.setWeekcalendarConfig(true);\n this.bizRules = this.offeredMakegoods[0]?.BizRules;\n // this.formatDataForTable();\n this.setTableHeaders();\n this.fetchAllSpotsMeetingBizRulesAndRevClassData();\n this.title = \"Edit Offered MakeGood Set\";\n this.MGTableTitle = \"Offered MakeGoods\";\n // this.cdr.detectChanges();\n }\n this.openModal();\n }\n\n createEstimatePriorityListForGuidelines() {\n this.estimatePrioritiesForGuidelines.push(\n `i. ${this.createOrEditOffersService.estimatePriorityAndGuidelinesTextMap[this.orderData.estimatePriority[0]]}`,\n );\n this.estimatePrioritiesForGuidelines.push(\n `ii. ${this.createOrEditOffersService.estimatePriorityAndGuidelinesTextMap[this.orderData.estimatePriority[1]]}`,\n );\n this.estimatePrioritiesForGuidelines.push(\n `iii. ${this.createOrEditOffersService.estimatePriorityAndGuidelinesTextMap[this.orderData.estimatePriority[2]]}`,\n );\n this.estimatePrioritiesForGuidelines.push(\n `iv. ${this.createOrEditOffersService.estimatePriorityAndGuidelinesTextMap[this.orderData.estimatePriority[3]]}`,\n );\n }\n\n openModal() {\n const ngbModalOptions: NgbModalOptions = {\n windowClass: \"spots-approval-edit-modal\",\n };\n this.spotsApprovalEditModalRef = this.modalService.open(this.spotsApprovalEditModal, ngbModalOptions);\n }\n\n closeModal() {\n this.spotsApprovalEditModalRef.close();\n }\n\n formatDataForOSPE() {\n this.fetchAllSpotsMeetingBizRulesAndRevClassData();\n this.setSelectedWeekForOSPE();\n this.setTableHeaders();\n this.preemptedSpots[0].DisplaySpotType = this.preemptedSpots[0].DisplaySpotType.replace(\n \"Outstanding PE\",\n \"Preemption\",\n ) as DisplaySpotTypeFromBE;\n\n this.preemptedSpots[0].SpotTypeActionKey = [\n {\n showObjectKey: false,\n additionalText: this.preemptedSpots[0].DisplaySpotType,\n },\n {\n showObjectKey: false,\n svgOrIconName:\n this.preemptedSpots[0].PreemptMessages\n ? SvgOrIconNames.ALERT_OCTAGON_ICON\n : null,\n svgOrIconTooltipMsg: this.preemptedSpots[0].PreemptMessages\n },\n ];\n this.preemptedSpots[0].ActionKeyForEdit = [\n new ClickableItemForOSSpotsTableActionColumn(\n TypeOfActionLinkForGtEnumSpotsApprovalEdit.ACTION_COLUMN_CLICK,\n \"Remove\",\n \"disabled-action-link\",\n false,\n null,\n )];\n this.prepareDataForPreemptionTable();\n this.offeredMakegoods = [];\n this.offeredMakeGoodsForDisplay = [];\n this.showMakegoodTableSkeletonLoader = false;\n this.validatedNotSavedYetData = [];\n this.validatedNotSavedYetPreemptionTableData = cloneDeep(this.preemptedSpots);\n this.savedOfferedMakeGoods = [];\n // this.cdr.detectChanges();\n this.createTotalRowForPreemptionTable();\n }\n\n setMinMaxDates() {\n const flightStartDate = NgbDate.from(\n this.dateTimeFormatService.convertToNgbDate(dayjs(this.orderData.flightStartDate), \"MM/DD/YYYY\"),\n );\n \n let minDateEnabled = this.weekCalendarService.setCurrentDate(this.timezone)?.today;\n const flightStartDateEnabledDateMoment = this.dateTimeFormatService.convertNgbDateToMoment(flightStartDate);\n const minDateEnabledDateMoment = this.dateTimeFormatService.convertNgbDateToMoment(minDateEnabled);\n\n if (dayjs(flightStartDateEnabledDateMoment).isAfter(minDateEnabledDateMoment)) {\n minDateEnabled = cloneDeep(flightStartDate);\n }\n const maxDateEnabled = NgbDate.from(\n this.dateTimeFormatService.convertToNgbDate(dayjs(this.orderData.flightEndDate), \"MM/DD/YYYY\"),\n );\n const maxDateEnabledDateMoment = this.dateTimeFormatService.convertNgbDateToMoment(maxDateEnabled);\n\n if (dayjs(minDateEnabledDateMoment).isAfter(maxDateEnabledDateMoment)) {\n minDateEnabled = cloneDeep(maxDateEnabled);\n }\n\n this.minDate = cloneDeep(minDateEnabled);\n this.maxDate = cloneDeep(maxDateEnabled);\n }\n\n setSelectedWeekForOSPE() {\n this.setMinMaxDates();\n const preemptionWeekStartDate = NgbDate.from(\n this.dateTimeFormatService.convertToNgbDate(dayjs(this.preemptedSpots[0].WeekStartDate), \"MM/DD/YYYY\"),\n );\n const preemptionWeekStartDateMoment =\n this.dateTimeFormatService.convertNgbDateToMoment(preemptionWeekStartDate);\n if (\n dayjs(preemptionWeekStartDateMoment).isSameOrAfter(\n this.dateTimeFormatService.convertNgbDateToMoment(this.minDate),\n )\n ) {\n this.selectWeekForDate = cloneDeep(preemptionWeekStartDate);\n this.selectedDateForFetchingRotators = cloneDeep(preemptionWeekStartDate);\n this.setWeekcalendarConfig(false);\n } else {\n this.setWeekcalendarConfig(true);\n }\n }\n\n setTableHeaders() {\n this.preemptionTableHeaders = this.isCreateOffer ? this.createOrEditOffersService.getOSPETableHeaders(\n this.showImpressions,\n this.orderData.estimatePriority,\n ) : this.createOrEditOffersService.getPreemptionTableHeaders(\n this.showImpressions,\n this.orderData.estimatePriority,\n );\n this.offeredMGsTableHeaders = this.createOrEditOffersService.getOfferedMakegoodsTableHeaders(\n this.showImpressions,\n this.orderData.estimatePriority,\n this.enableRevenueClassEdit,\n );\n this.spotsMeetingBizRulesTableHeaders = this.createOrEditOffersService.getOtherSpotsMeetingBizRulesTableHeaders(\n this.showImpressions,\n this.orderData.estimatePriority,\n );\n this.otherSpotsTableHeaders = this.createOrEditOffersService.getOtherAvailableSpotsTableHeaders(\n this.showImpressions,\n this.orderData.estimatePriority,\n );\n this.rotatorsTableHeaders = this.createOrEditOffersService.getRotatorsTableHeaders(\n this.showImpressions,\n this.orderData.estimatePriority,\n );\n }\n\n formatDataForTable() {\n // this.setTableHeaders();\n this.prepareDataForPreemptionTable();\n this.prepareDataForMGTable();\n this.offeredMakegoods = this.rearrangeRemovedSpotsToBottom(this.offeredMakegoods);\n this.offeredMakeGoodsForDisplay = cloneDeep(this.offeredMakegoods);\n this.checkIfSingleOfferPresent();\n this.createTotalRowForOfferedMGTable();\n this.validatedNotSavedYetData = cloneDeep(this.offeredMakegoods);\n this.savedOfferedMakeGoods = cloneDeep(this.offeredMakegoods);\n\n this.showMakegoodTableSkeletonLoader = false;\n // this.cdr.detectChanges();\n }\n\n prepareDataForPreemptionTable() {\n if (!this.isCreateOffer) {\n this.preemptedSpots[0].SpotTypeActionKey = [\n {\n showObjectKey: false,\n additionalText: this.preemptedSpots[0].DisplaySpotType,\n },\n {\n showObjectKey: false,\n svgOrIconName:\n this.preemptedSpots[0].PreemptMessages\n ? SvgOrIconNames.INFORMATION_OUTLINE_ICON\n : null,\n svgOrIconTooltipMsg: this.preemptedSpots[0].PreemptMessages\n },\n ];\n }\n\n this.preemptedSpots.forEach((item) => {\n item.SellerAndBuyerLine = `${item.SellerLine} / ${item.BuyerLine}`;\n item.DisplayRate =\n item.Rate !== null ? this.currencyPipe.transform(item.Rate, \"USD\", \"symbol\", \"1.0-2\") : \"-\";\n const estimatePrioritiesData: string[] = GenericSpotsApprovalService.returnEstimatePriorities(\n item,\n this.orderData.estimatePriority,\n );\n item.DisplaySpotType = cloneDeep(this.preemptedSpots[0].DisplaySpotType);\n item.SpotTypeActionKey = cloneDeep(this.preemptedSpots[0].SpotTypeActionKey);\n item.firstTwoEstimatePrioritiesForRTGMetric = estimatePrioritiesData[0];\n item.lastTwoEstimatePrioritiesForRTGMetric = estimatePrioritiesData[1];\n item.firstTwoEstimatePrioritiesForIMPSMetric = estimatePrioritiesData[2];\n item.lastTwoEstimatePrioritiesForIMPSMetric = estimatePrioritiesData[3];\n });\n this.createTotalRowForPreemptionTable();\n this.preemptedSpots = [...this.preemptedSpots];\n this.showSkeletonLoaderInPreemptionTable = false;\n }\n\n prepareDataForMGTable() {\n const offeredMakegoods = cloneDeep(this.offeredMakegoods);\n this.offeredMakegoods = [];\n offeredMakegoods.forEach((item: IMakeGoodSpotInformationForEdit) => {\n const responseData: ISpotInformationResponse = cloneDeep(item);\n const generalAdditionalDataForMGTableEdit: AdditionalInformationForSpot = new AdditionalInformationForSpot(\n item,\n this.orderData.estimatePriority,\n this.currencyPipe,\n );\n const specificAdditionalDataForMGTableEdit: MakeGoodSpotInformationForEdit =\n new MakeGoodSpotInformationForEdit(\n item,\n this.showImpressions,\n this.currencyPipe,\n this.revenueClassList,\n this.decimalPlacesCountAllowedInRatesMgTable\n );\n this.offeredMakegoods.push({\n ...responseData,\n ...generalAdditionalDataForMGTableEdit,\n ...specificAdditionalDataForMGTableEdit,\n });\n });\n }\n\n createTotalRowForPreemptionTable() {\n let totalBookedRate: number = 0;\n let totalBookedRating: number = 0;\n this.preemptedSpots.forEach((item) => {\n item.DisplayRate =\n item.Rate !== null ? this.currencyPipe.transform(item.Rate, \"USD\", \"symbol\", \"1.0-2\") : \"-\";\n totalBookedRating += this.showImpressions ? item.ActualImpressions : item.ActualRatings;\n totalBookedRate += item.Rate;\n });\n this.totalBookedRatingOfPE = cloneDeep(totalBookedRating);\n this.totalBookedRateOfPE = cloneDeep(totalBookedRate);\n\n const totalRowInfo = this.showImpressions ?\n new TotalRowForPreemptionsForIMPSOrder(this.preemptedSpots, this.orderData.estimatePriority) :\n new TotalRowForPreemptionsForRTGOrder(this.preemptedSpots, this.orderData.estimatePriority);\n this.totalRowInfoForPreemptionTable = [];\n this.totalRowInfoForPreemptionTable.push({\n colspan: 6,\n data: this.isCreateOffer ? `TOTAL OUTSTANDING SPOTS: ${this.preemptedSpots.length}` : `TOTAL PREEMPTIONS: ${this.preemptedSpots.length}`,\n colName: \"total\",\n });\n this.totalRowInfoForPreemptionTable.push({\n colspan: 1,\n data: totalRowInfo.totalBookedRateForDisplay,\n colName: \"total-rate\",\n });\n this.totalRowInfoForPreemptionTable.push({\n colspan: 1,\n data: totalRowInfo.totalBookedRtgOrIMPS.toString(),\n colName: \"total-rtgOrImps\",\n });\n this.totalRowInfoForPreemptionTable.push({\n colspan: 1,\n data: '',\n colName: \"total-est\",\n });\n this.totalRowInfoForPreemptionTable.push({\n colspan: 1,\n data: '',\n colName: \"total-blank\",\n });\n if (this.isCreateOffer) {\n this.totalRowInfoForPreemptionTable.push({\n colspan: 1,\n data: '',\n colName: \"total-action\",\n });\n }\n }\n\n createTotalRowForOfferedMGTable() {\n const totalRowData: TotalRowForOfferedmadeGoodEditTable = new TotalRowForOfferedmadeGoodEditTable(\n this.offeredMakeGoodsForDisplay,\n );\n this.totalRowInfoForOfferedMakeGoods = [];\n this.totalRowInfoForOfferedMakeGoods.push({\n colspan: 6,\n data: totalRowData.message,\n colName: \"total\",\n tooltipMessage: this.validationResponse?.MaxMGSpotViolation.IsViolated\n ? `A Maximum of ${this.validationResponse?.MaxMGSpotViolation.MaxCount} MakeGoods can be offered.`\n : null,\n tooltipIconClass: \"mdi mdi-alert-octagon\",\n class: this.validationResponse?.MaxMGSpotViolation.IsViolated ? \"status-validation-error\" : null,\n });\n\n const exceedOrFallShortMsg = this.validationResponse?.RateViolation?.IsGreater ? \"exceeding\" : \"falling short\";\n const totalRateErrorMsg: string = `The total booked rate of the MGs offered is ${exceedOrFallShortMsg} the booked rate of the PEs\n ($${this.totalBookedRateOfPE}).`;\n\n this.totalRowInfoForOfferedMakeGoods.push({\n colspan: 1,\n data: totalRowData.totalOfferedRateForDisplay,\n colName: \"total-rate\",\n tooltipMessage: this.validationResponse?.RateViolation ? totalRateErrorMsg : null,\n tooltipIconClass: \"mdi mdi-alert-octagon\",\n class: this.validationResponse?.RateViolation ? \"rate-validation-error\" : null,\n });\n\n const metric: \"RTG\" | \"IMP('000)\" = this.showImpressions ? \"IMP('000)\" : \"RTG\";\n const roundOffToDP: number = this.showImpressions ? 1 : 2;\n const totalRatingValidatinErrorMessage: string = this.validationResponse?.RatingViolation?.IsGreater\n ? `The total booked ${metric} of the MGs offered is exceeding the booked ${metric} of the PEs \n (${GenericSpotsApprovalService.GetRoundedValueWithUnitsWithMathRound(this.totalBookedRatingOfPE, roundOffToDP)}).`\n : `The total booked ${metric} of the MGs offered is falling short of the booked ${metric} of the PEs \n (${GenericSpotsApprovalService.GetRoundedValueWithUnitsWithMathRound(this.totalBookedRatingOfPE, roundOffToDP)}).`;\n this.totalRowInfoForOfferedMakeGoods.push({\n colspan: 1,\n data: this.showImpressions\n ? parseFloat(totalRowData.totalIMPS.toString()).toFixed(1)\n : parseFloat(totalRowData.totalRTG.toString()).toFixed(2),\n colName: \"total-rating\",\n tooltipMessage: this.validationResponse?.RatingViolation ? totalRatingValidatinErrorMessage : null,\n tooltipIconClass: \"mdi mdi-alert-octagon\",\n class: this.validationResponse?.RatingViolation ? \"rtgOrImps-validation-error\" : null,\n });\n this.totalRowInfoForOfferedMakeGoods.push({\n colspan: 1,\n data: \"\",\n colName: \"extra-td-1\",\n });\n this.totalRowInfoForOfferedMakeGoods.push({\n colspan: 1,\n data: \"\",\n colName: \"extra-td-2\",\n });\n this.totalRowInfoForOfferedMakeGoods.push({\n colspan: 1,\n data: \"\",\n colName: \"extra-td-3\",\n });\n this.totalRowInfoForOfferedMakeGoods.push({\n colspan: 1,\n data: \"\",\n colName: \"extra-td-4\",\n });\n }\n\n getEditGroupPayload(): EditMakeGoodGroupNewPayload | EditGroupPayload {\n return this.createEditGroupNewPayload();\n }\n\n getFreeFlowSpotsPayload(): FreeFlowSpotsPayload {\n const dates = this.getStartAndEndDates(this.fromDate, this.toDate);\n return {\n // eslint-disable-next-line no-nested-ternary\n Duration: this.preemptedSpots[0].Duration,\n StationId: this.stationId,\n OrderId: this.buyerOrderId,\n StartDate: dates.selectedWeekStartDate,\n EndDate: dates.selectedWeekEndDate,\n TgId: this.tgId,\n };\n }\n\n getRotatorsPayload(): FreeFlowSpotsPayload {\n const dates = this.getStartAndEndDates(this.fromDateForFetchingRotators, this.toDateForFetchingRotators);\n return {\n Duration: this.preemptedSpots[0].Duration,\n StationId: this.stationId,\n OrderId: this.buyerOrderId,\n StartDate: dates.selectedWeekStartDate,\n EndDate: dates.selectedWeekEndDate,\n TgId: this.tgId,\n };\n }\n\n fetchAllSpotsMeetingBizRulesAndRevClassData() {\n const getEditGroupData = this.consumingProjectSpotsApprovalBackendService.getEditGroupData(\n this.getEditGroupPayload(),\n );\n const getRevenueClassList = this.consumingProjectSpotsApprovalBackendService.getRevenueClassList(\n this.stationId,\n );\n\n forkJoin({ getEditGroupData, getRevenueClassList }).subscribe({\n next: (result: { getEditGroupData: any; getRevenueClassList: any }) => {\n this.revenueClassList = result.getRevenueClassList?.priorityCodes ?? [];\n if (result.getEditGroupData.status === ErrorCodes.NO_CONTENT) {\n this.spotsMeetingBizRulesForDisplay = [];\n this.allSpotsMeetingBizRules = [];\n this.showSkeletonLoaderInSpotsMeetingBizRulesTable = false;\n this.formatDataForTable();\n } else {\n this.formatDataForTable();\n result.getEditGroupData.body.forEach((item: ISpotInformationResponse | any) => {\n let updatedItem = item;\n updatedItem.Length = this.preemptedSpots[0]?.Length;\n updatedItem.RevenueClass = this.preemptedSpots[0]?.RevenueClass;\n const generalAdditionalDataForMGTableEdit: AdditionalInformationForSpot =\n new AdditionalInformationForSpot(\n updatedItem,\n this.orderData.estimatePriority,\n this.currencyPipe,\n );\n updatedItem.ActionKeyForEdit = [];\n updatedItem.ActionKeyForEdit.push(\n new ClickableItemForAvailableTableActionColumn(\n TypeOfActionLinkForGtEnumSpotsApprovalEdit.ACTION_COLUMN_CLICK,\n \"Add\",\n \"action-link\",\n false,\n null,\n ),\n );\n\n updatedItem = {\n ...generalAdditionalDataForMGTableEdit,\n ...updatedItem,\n };\n this.spotsMeetingBizRules.push(updatedItem);\n });\n this.spotsMeetingBizRulesForDisplay = cloneDeep(this.spotsMeetingBizRules);\n this.allSpotsMeetingBizRules = cloneDeep(this.spotsMeetingBizRules);\n this.showSkeletonLoaderInSpotsMeetingBizRulesTable = false;\n // this.cdr.detectChanges();\n }\n },\n error: (error: any) => {\n this.spotsMeetingBizRulesForDisplay = [];\n this.allSpotsMeetingBizRules = [];\n this.toastr.error(\"Something went wrong! Please try again.\");\n this.showSkeletonLoaderInSpotsMeetingBizRulesTable = false;\n },\n });\n }\n\n fetchOtherFreeFlowSpots() {\n this.showSkeletonLoaderInOtherSpotsTable = true;\n this.otherSpots = [];\n this.consumingProjectSpotsApprovalBackendService.getFreeFlowOffers(this.getFreeFlowSpotsPayload()).subscribe({\n next: (response: HttpResponse<any>) => {\n if (response.status === ErrorCodes.NO_CONTENT) {\n this.otherSpotsForDisplay = [];\n this.allOtherAvailableSpots = [];\n this.showSkeletonLoaderInOtherSpotsTable = false;\n } else {\n response.body.forEach((item: ISpotInformationResponse | any) => {\n // For OSPE, we are using the preemptedSpots[0]\n item.Length = this.preemptedSpots[0]?.Length;\n item.RevenueClass = this.preemptedSpots[0]?.RevenueClass;\n const generalAdditionalDataForMGTableEdit: AdditionalInformationForSpot =\n new AdditionalInformationForSpot(item, this.orderData.estimatePriority, this.currencyPipe);\n item.ActionKeyForEdit = [];\n item.ActionKeyForEdit.push(\n new ClickableItemForAvailableTableActionColumn(\n TypeOfActionLinkForGtEnumSpotsApprovalEdit.ACTION_COLUMN_CLICK,\n \"Add\",\n \"action-link\",\n false,\n null,\n ),\n );\n\n item.InventoryActionKey = [];\n item.InventoryActionKey.push(\n new IconActionForSpotsApprovalEdit(\n item.InventoryAvailability,\n null,\n \"ml-8\",\n \"OtherSpotsInventoryColumn\",\n item.ShowBookedSpotLink,\n item.ShowBookedSpotLink ? \"View Spots\" : \"\",\n ),\n );\n\n item.IsFreeFlowGroup = true;\n const updatedItem = {\n ...item,\n ...generalAdditionalDataForMGTableEdit,\n };\n this.otherSpots.push(updatedItem);\n });\n this.otherSpotsForDisplay = cloneDeep(this.otherSpots);\n this.allOtherAvailableSpots = cloneDeep(this.otherSpots);\n this.showSkeletonLoaderInOtherSpotsTable = false;\n }\n },\n error: (error: any) => {\n this.otherSpotsForDisplay = [];\n this.allOtherAvailableSpots = [];\n this.toastr.error(\"Something went wrong! Please try again.\");\n this.showSkeletonLoaderInOtherSpotsTable = false;\n },\n });\n }\n\n fetchRotators() {\n this.showSkeletonLoaderInRotatorsTable = true;\n this.consumingProjectSpotsApprovalBackendService.getRotators(this.getRotatorsPayload()).subscribe({\n next: (response: HttpResponse<any>) => {\n if (response.status === ErrorCodes.NO_CONTENT) {\n this.allRotators = [];\n this.rotatorsForDisplay = [];\n this.showSkeletonLoaderInRotatorsTable = false;\n } else {\n response.body.forEach((item: ISpotInformationResponse | any) => {\n item.Length = this.preemptedSpots[0]?.Length;\n // item.RevenueClass = this.preemptedSpots[0]?.RevenueClass;\n const generalAdditionalDataForMGTableEdit: AdditionalInformationForSpot =\n new AdditionalInformationForSpot(item, this.orderData.estimatePriority, this.currencyPipe);\n item.ActionKeyForEdit = [];\n item.ActionKeyForEdit.push(\n new ClickableItemForAvailableTableActionColumn(\n TypeOfActionLinkForGtEnumSpotsApprovalEdit.ACTION_COLUMN_CLICK,\n \"Add\",\n \"action-link\",\n false,\n null,\n ),\n );\n\n item.IsFreeFlowGroup = true;\n const updatedItem = {\n ...item,\n ...generalAdditionalDataForMGTableEdit,\n };\n this.rotators.push(updatedItem);\n });\n this.rotatorsForDisplay = cloneDeep(this.rotators);\n this.allRotators = cloneDeep(this.rotators);\n this.showSkeletonLoaderInRotatorsTable = false;\n }\n },\n error: (error: any) => {\n this.rotatorsForDisplay = [];\n this.allRotators = [];\n this.toastr.error(\"Something went wrong! Please try again.\");\n this.showSkeletonLoaderInRotatorsTable = false;\n },\n });\n }\n\n createEditGroupPayload(): EditGroupPayload {\n return {\n GroupTableId: this.preemptedSpots.map((n) => n.GroupTableId),\n Duration: this.preemptedSpots[0].Duration,\n TrafficOrderId: this.buyerOrderId,\n StationId: this.stationId,\n };\n }\n\n createEditGroupNewPayload(): EditMakeGoodGroupNewPayload {\n return {\n GroupId: this.preemptedSpots[0].NewGroupId,\n Duration: this.preemptedSpots[0].Duration,\n StationId: this.stationId,\n TrafficOrderId: this.buyerOrderId,\n };\n }\n\n cancelClicked() {\n this.spotsApprovalEditModalRef?.close();\n this.cancelButtonClicked.emit();\n }\n\n editableInputEdited(event: { row: any; value: string; keyEdited: string }) {\n this.resetTimerAfterUserAction.emit();\n\n if (event.keyEdited === OfferedMGOrADUTableKeys.BUYER_PROGRAM_KEY) {\n this.buyerProgramNameEdited(event);\n } else if (event.keyEdited === OfferedMGOrADUTableKeys.OFFERED_RATING_OR_IMPS_KEY) {\n this.ratingOrIMPSEdited(event);\n } else if (event.keyEdited === OfferedMGOrADUTableKeys.OFFERED_RATE_KEY) {\n this.rateEditedFromGTTable(event);\n }\n }\n\n buyerProgramNameEdited(event: { row: any; value: string; keyEdited: string }) {\n const BuyerProgramNameColumn: any = {};\n BuyerProgramNameColumn.type = \"INPUT\";\n BuyerProgramNameColumn.hasError = event.value === \"\";\n BuyerProgramNameColumn.placeholder = \"Add Buyer Program Name\";\n BuyerProgramNameColumn.value = event.value;\n BuyerProgramNameColumn.disabled = false;\n BuyerProgramNameColumn.allowSpecialCharacters = true;\n BuyerProgramNameColumn.isDecimalPointCheckRequired = false;\n BuyerProgramNameColumn.charactersToRestrict =\n GenericSpotsApprovalService.charactersToRestrictInBuyerProgramNameColumn;\n BuyerProgramNameColumn.className = event.row.BuyerProgramNameColumn.disabled ? \"td-input\" : \"td-disabled-input\";\n\n this.offeredMakeGoodsForDisplay.filter(\n (n: any) => n.UniqueId === event.row.UniqueId,\n )[0].BuyerProgramNameColumn = cloneDeep(BuyerProgramNameColumn);\n\n this.offeredMakegoods.filter((n: any) => n.UniqueId === event.row.UniqueId)[0].BuyerProgramNameColumn =\n cloneDeep(BuyerProgramNameColumn);\n\n this.enableDisableButtons();\n }\n\n ratingOrIMPSEdited(event: { row: any; value: string; keyEdited: string }) {\n const OfferedRatingOrImpressionsColumn: {\n type: \"INPUT\" | \"STRING\";\n hasError: boolean;\n placeholder: string;\n value: string;\n disabled: boolean;\n className: string;\n allowSpecialCharacters: boolean;\n maxDecimalPointsAllowed: number;\n isDecimalPointCheckRequired: boolean;\n charactersToRestrict: any[];\n } = {\n type: \"INPUT\",\n hasError: event.value === \"\",\n placeholder: \"\",\n value: event.value,\n disabled: false,\n className: event.row.disabled ? \"td-input\" : \"td-disabled-input\",\n allowSpecialCharacters: false,\n maxDecimalPointsAllowed: this.showImpressions ? 1 : 2,\n isDecimalPointCheckRequired: true,\n charactersToRestrict: [\"`\"],\n };\n let OfferedRatingOrImpressionsColumnIcons: any[] = null;\n\n if (\n (this.showImpressions &&\n OfferedRatingOrImpressionsColumn.value.toString() === event.row.Impressions.toString()) ||\n (!this.showImpressions &&\n OfferedRatingOrImpressionsColumn.value.toString() === event.row.Ratings.toString())\n ) {\n OfferedRatingOrImpressionsColumnIcons = new IconActionForOfferedRTGOrIMPSColumn(\n event.row,\n this.showImpressions ? \"CPM\" : \"CPP\",\n ).tooltipObjList;\n }\n if (\n this.totalBookedRatingOfPE > 0 &&\n OfferedRatingOrImpressionsColumn.value !== \"\" &&\n +OfferedRatingOrImpressionsColumn.value === 0\n ) {\n OfferedRatingOrImpressionsColumnIcons = [\n {\n showIcon: true,\n showSvgIcon: false,\n iconClass: \"mdi mdi-alert-octagon\",\n iconTooltip: `Please enter a ${this.showImpressions ? \"IMPS\" : \"RTG\"} > 0`,\n },\n ];\n }\n\n OfferedRatingOrImpressionsColumnIcons = new IconsAndTooltips(OfferedRatingOrImpressionsColumnIcons)\n .iconsAndTooltips;\n\n this.offeredMakeGoodsForDisplay.filter(\n (n: any) => n.UniqueId === event.row.UniqueId,\n )[0].OfferedRatingOrImpressionsColumn = cloneDeep(OfferedRatingOrImpressionsColumn);\n this.offeredMakeGoodsForDisplay.filter(\n (n: any) => n.UniqueId === event.row.UniqueId,\n )[0].OfferedRatingOrImpressionsColumnIcons = cloneDeep(OfferedRatingOrImpressionsColumnIcons);\n this.offeredMakegoods.filter(\n (n: any) => n.UniqueId === event.row.UniqueId,\n )[0].OfferedRatingOrImpressionsColumn = cloneDeep(OfferedRatingOrImpressionsColumn);\n this.offeredMakegoods.filter(\n (n: any) => n.UniqueId === event.row.UniqueId,\n )[0].OfferedRatingOrImpressionsColumnIcons = cloneDeep(OfferedRatingOrImpressionsColumnIcons);\n this.createTotalRowForOfferedMGTable();\n this.enableDisableButtons();\n }\n\n rateEditedFromGTTable(event: { row: any; value: string; keyEdited: string }) {\n this.rateEdited(event);\n\n this.createTotalRowForOfferedMGTable();\n this.enableDisableButtons();\n }\n\n rateEdited(event: { row: any; value: string; keyEdited: string }) {\n const OfferedRateForInputBoxColumn = {\n type: \"INPUT\" as \"INPUT\" | \"STRING\",\n hasError: event.value === \"\",\n placeholder: \"\",\n value: event.value,\n disabled: false,\n className: event.row.disabled ? \"td-input\" : \"td-disabled-input\",\n allowSpecialCharacters: false,\n maxDecimalPointsAllowed: this.decimalPlacesCountAllowedInRatesMgTable,\n isDecimalPointCheckRequired: true,\n charactersToRestrict: [\"`\"],\n };\n\n const anyLURViolationViewError =\n event.row.OfferedRateColumnErrorIcons?.length > 0 &&\n event.row.OfferedRateColumnErrorIcons.find((n: any) => n.id === \"LURViolationView\");\n\n let OfferedRateColumnIcons = null;\n if (anyLURViolationViewError) {\n OfferedRateColumnIcons = event.row.OfferedRateColumnErrorIcons;\n }\n if (\n this.totalBookedRateOfPE > 0 &&\n OfferedRateForInputBoxColumn.value !== \"\" &&\n +OfferedRateForInputBoxColumn.value === 0\n ) {\n OfferedRateColumnIcons = [\n {\n id: null,\n showIcon: true,\n showSvgIcon: false,\n iconClass: \"mdi mdi-alert-octagon\",\n iconTooltip: `Please enter a booked rate > 0`,\n },\n ];\n }\n\n this.offeredMakeGoodsForDisplay.filter(\n (n: any) => n.UniqueId === event.row.UniqueId,\n )[0].OfferedRateForInputBoxColumn = cloneDeep(OfferedRateForInputBoxColumn);\n this.offeredMakeGoodsForDisplay.filter(\n (n: any) => n.UniqueId === event.row.UniqueId,\n )[0].OfferedRateColumnErrorIcons = cloneDeep(OfferedRateColumnIcons);\n\n this.offeredMakegoods.filter((n: any) => n.UniqueId === event.row.UniqueId)[0].OfferedRateForInputBoxColumn =\n cloneDeep(OfferedRateForInputBoxColumn);\n this.offeredMakegoods.filter((n: any) => n.UniqueId === event.row.UniqueId)[0].OfferedRateColumnErrorIcons =\n cloneDeep(OfferedRateColumnIcons);\n }\n\n offeredMGTableActionClicked(event: { data: IMakeGoodSpotInformationForEdit; id: any; isIconClicked: boolean }) {\n if (event.id === \"LURViolationView\" && !event.isIconClicked) {\n this.openPoliticalRateViolationViewModal(event.data);\n } else if (!event.isIconClicked) {\n this.resetTimerAfterUserAction.emit();\n\n if (event.data.ActionKeyForEdit[0].name === \"Remove\") {\n const addedInCurrentSession: boolean =\n this.offeredMakeGoodsOriginalData?.filter((n) => n.UniqueId === event.data.UniqueId).length === 0;\n const removedSpotWasAddedInCurrentEditFromSpotsMeetingBizRulesTable: IAvailableSpotInformationForEdit[] =\n cloneDeep(this.allSpotsMeetingBizRules?.filter((n) => n.UniqueId === event.data.UniqueId));\n const removedSpotWasAddedInCurrentEditFromOtherAvailableSpotsTable: IAdditionInformationForFreeFlowSpot[] =\n cloneDeep(this.allOtherAvailableSpots?.filter((n) => n.UniqueId === event.data.UniqueId));\n const removedSpotWasAddedInCurrentEditFromRotatorsTable: IAdditionInformationForRotators[] = cloneDeep(\n this.allRotators?.filter((n) => n.UniqueId === event.data.UniqueId),\n );\n\n if (addedInCurrentSession) {\n this.offeredMakegoods = this.offeredMakegoods?.filter((n) => n.UniqueId !== event.data.UniqueId);\n this.offeredMakeGoodsForDisplay = this.offeredMakeGoodsForDisplay.filter(\n (n) => n.UniqueId !== event.data.UniqueId,\n );\n\n if (removedSpotWasAddedInCurrentEditFromSpotsMeetingBizRulesTable.length > 0) {\n this.spotsMeetingBizRules = [\n ...this.spotsMeetingBizRules,\n ...removedSpotWasAddedInCurrentEditFromSpotsMeetingBizRulesTable,\n ];\n this.spotsMeetingBizRulesForDisplay = [\n ...this.spotsMeetingBizRulesForDisplay,\n ...removedSpotWasAddedInCurrentEditFromSpotsMeetingBizRulesTable,\n ];\n this.applyFilteringAndSortingForSpotsMeetingBizRulesTable = true;\n } else if (removedSpotWasAddedInCurrentEditFromOtherAvailableSpotsTable.length > 0) {\n this.otherSpots = [\n ...this.otherSpots,\n ...removedSpotWasAddedInCurrentEditFromOtherAvailableSpotsTable,\n ];\n this.otherSpotsForDisplay = [\n ...this.otherSpotsForDisplay,\n ...removedSpotWasAddedInCurrentEditFromOtherAvailableSpotsTable,\n ];\n\n this.applyFilteringAndSortingForOtherSpotsTable = true;\n } else if (removedSpotWasAddedInCurrentEditFromRotatorsTable.length > 0) {\n this.rotators = [...this.rotators, ...removedSpotWasAddedInCurrentEditFromRotatorsTable];\n this.rotatorsForDisplay = [\n ...this.rotatorsForDisplay,\n ...removedSpotWasAddedInCurrentEditFromRotatorsTable,\n ];\n\n this.applyFilteringAndSortingForRotatorsTable = true;\n }\n } else {\n const status: MGTableStatusTypes = \"Removed\";\n event.data.DisplayStatusActionKey = [\n new IconActionForSpotsApprovalEdit(status, null, \"\", \"offeredMGStatusAction\"),\n ];\n event.data.DisplayStatus = \"Removed\";\n event.data.ActionKeyForEdit = [];\n event.data.ActionKeyForEdit.push(\n new ClickableItemForMGTableActionColumn(\n TypeOfActionLinkForGtEnumSpotsApprovalEdit.ACTION_COLUMN_CLICK,\n \"Undo\",\n \"action-link\",\n false,\n null,\n ),\n );\n event.data.gtClass = \"removed-row\";\n this.offeredMakegoods.splice(\n this.offeredMakegoods.findIndex((n) => n.UniqueId === event.data.UniqueId),\n 1,\n event.data,\n );\n }\n } else {\n // UNDO clicked\n event.data.gtClass = event.data.gtClass.replace(\"removed-row\", \" \");\n const status: MGTableStatusTypes = event.data.IsAddedInGroup ? \"Added\" : \"Offered\";\n event.data.DisplayStatusActionKey = [new StatusColumnIconActionForSpotsApprovalEdit(status, null, \"\")];\n event.data.DisplayStatus = cloneDeep(status);\n event.data.ActionKeyForEdit = [];\n event.data.ActionKeyForEdit.push(\n new ClickableItemForMGTableActionColumn(\n TypeOfActionLinkForGtEnumSpotsApprovalEdit.ACTION_COLUMN_CLICK,\n \"Remove\",\n \"action-link\",\n false,\n null,\n ),\n );\n this.offeredMakegoods.splice(\n this.offeredMakegoods.findIndex((n) => n.UniqueId === event.data.UniqueId),\n 1,\n event.data,\n );\n this.setValidationErrorForRow(event.data);\n }\n this.checkIfSingleOfferPresent();\n this.offeredMakeGoodsForDisplay = this.rearrangeRemovedSpotsToBottom(this.offeredMakeGoodsForDisplay);\n this.enableDisableButtons();\n this.createTotalRowForOfferedMGTable();\n }\n }\n\n checkIfSingleOfferPresent() {\n const activeOffers: IMakeGoodSpotInformationForEdit[] = this.offeredMakegoods.filter(\n (n) => n.ActionKeyForEdit[0].name === \"Remove\",\n );\n const singleOfferLeft: boolean = activeOffers.length === 1;\n\n if (singleOfferLeft) {\n if (this.offeredMakeGoodsForDisplay.filter((n) => n.ActionKeyForEdit[0].name === \"Remove\").length > 0) {\n this.offeredMakeGoodsForDisplay.filter(\n (n) => n.ActionKeyForEdit[0].name === \"Remove\",\n )[0].ActionKeyForEdit[0].class = \"disabled-action-link\";\n }\n\n this.offeredMakegoods.filter((n) => n.ActionKeyForEdit[0].name === \"Remove\")[0].ActionKeyForEdit[0].class =\n \"disabled-action-link\";\n } else {\n this.offeredMakeGoodsForDisplay.forEach((item) => {\n item.ActionKeyForEdit[0].class = \"action-link\";\n });\n this.offeredMakegoods.forEach((item) => {\n item.ActionKeyForEdit[0].class = \"action-link\";\n });\n }\n }\n\n spotsMeetingBizRulesActionClicked(event: { data: IAvailableSpotInformationForEdit; id: any }) {\n this.resetTimerAfterUserAction.emit();\n\n this.spotsMeetingBizRules = this.spotsMeetingBizRules.filter((n) => n.UniqueId !== event.data.UniqueId);\n this.spotsMeetingBizRulesForDisplay = this.spotsMeetingBizRulesForDisplay.filter(\n (n) => n.UniqueId !== event.data.UniqueId,\n );\n event.data.BusinessRules = this.isCreateOffer ? \"Relaxed\" : this.preemptedSpots[0]?.BusinessRules;\n\n this.addRowToMakeGoodTable(event.data);\n }\n\n freeFlowSpotsActionClicked(event: { data: IAvailableSpotInformationForEdit; id: any }) {\n if (event.id === \"OtherSpotsInventoryColumn\") {\n this.inventoryCodeSelectedForViewingSpots = cloneDeep(event.data.InventoryCode);\n const obj: {\n inventoryCodeId: number;\n inventoryCode: string;\n weekStartDate: string;\n date: string;\n } = {\n inventoryCodeId: event.data.InventoryCodeId,\n inventoryCode: event.data.InventoryCode,\n weekStartDate: event.data.WeekStartDate,\n date: event.data.Date,\n };\n this.openSpotDetailsModal(obj);\n } else {\n this.resetTimerAfterUserAction.emit();\n this.otherSpots = this.otherSpots.filter((n) => n.UniqueId !== event.data.UniqueId);\n this.otherSpotsForDisplay = this.otherSpotsForDisplay.filter((n) => n.UniqueId !== event.data.UniqueId);\n event.data.BusinessRules = \"Relaxed\";\n this.addRowToMakeGoodTable(event.data);\n }\n }\n\n rotatorsActionClicked(event: { data: IAvailableSpotInformationForEdit; id: any }) {\n this.resetTimerAfterUserAction.emit();\n\n this.rotators = this.rotators.filter((n) => n.UniqueId !== event.data.UniqueId);\n this.rotatorsForDisplay = this.rotatorsForDisplay.filter((n) => n.UniqueId !== event.data.UniqueId);\n event.data.BusinessRules = \"Relaxed\";\n\n this.addRowToMakeGoodTable(event.data);\n }\n\n addRowToMakeGoodTable(data: IAvailableSpotInformationForEdit) {\n const obj: MakeGoodSpotInformationForEdit = new MakeGoodSpotInformationForEdit(\n data,\n this.showImpressions,\n this.currencyPipe,\n this.revenueClassList,\n );\n obj.DisplayStatusActionKey = [new StatusColumnIconActionForSpotsApprovalEdit(\"Added\", null, \"\")];\n obj.DisplayStatus = obj.DisplayStatusActionKey[0]?.additionalTextBeforeLink;\n obj.TimeInputData = {\n id: data.UniqueId,\n startTime: data.StartTime,\n endTime: data.EndTime,\n showAsInput: true,\n disableInput: false,\n selectedTimeAsAString: data.Time,\n }\n obj.ActionKeyForEdit = [];\n obj.ActionKeyForEdit.push(\n new ClickableItemForMGTableActionColumn(\n TypeOfActionLinkForGtEnumSpotsApprovalEdit.ACTION_COLUMN_CLICK,\n \"Remove\",\n \"action-link\",\n false,\n null,\n ),\n );\n\n this.showBookedImpsOrRatingTableCellError(obj);\n this.showBookedRateTableCellError(obj);\n\n delete data?.ActionKeyForEdit;\n\n const objectToAddInMGTable: any = { ...obj, ...data };\n this.setValidationErrorForRow(objectToAddInMGTable);\n\n this.offeredMakegoods = [...this.offeredMakegoods, ...[objectToAddInMGTable]];\n this.offeredMakeGoodsForDisplay = [...this.offeredMakeGoodsForDisplay, ...[objectToAddInMGTable]];\n\n this.applyFilteringAndSortingForOfferedSpotsTable = true;\n }\n\n showBookedImpsOrRatingTableCellError(obj: IMakeGoodSpotInformationForEdit | MakeGoodSpotInformationForEdit) {\n if (this.totalBookedRatingOfPE > 0 && +obj.OfferedRatingOrImpressionsColumn.value === 0) {\n const rtgOrImpsErrorObj = [\n {\n showIcon: true,\n showSvgIcon: false,\n iconClass: \"mdi mdi-alert-octagon\",\n iconTooltip: `Please enter a ${this.showImpressions ? \"IMPS\" : \"RTG\"} > 0`,\n },\n ];\n obj.OfferedRatingOrImpressionsColumnIcons = cloneDeep(rtgOrImpsErrorObj);\n } else {\n obj.OfferedRatingOrImpressionsColumnIcons = [];\n }\n }\n\n showBookedRateTableCellError(obj: IMakeGoodSpotInformationForEdit | MakeGoodSpotInformationForEdit) {\n if (!obj.OfferedRateForInputBoxColumn) return;\n\n if (this.totalBookedRateOfPE > 0 && +obj.OfferedRateForInputBoxColumn.value === 0) {\n const rateErrorObj = [\n {\n id: \"\",\n showIcon: true,\n showSvgIcon: false,\n iconClass: \"mdi mdi-alert-octagon\",\n className: \"rate-validation-error\",\n iconTooltip: `Please enter booked rate > 0`,\n },\n ];\n obj.OfferedRateColumnErrorIcons = cloneDeep(rateErrorObj);\n } else {\n obj.OfferedRateColumnErrorIcons = [];\n }\n\n if (obj.OfferedRateForInputBoxColumn?.value === \"-\") {\n obj.OfferedRateForInputBoxColumn.disabled = true;\n } else {\n obj.OfferedRateForInputBoxColumn.disabled = false;\n }\n }\n\n reArrangeRemovedSpotsAndCalculateTotalRow(event: IMakeGoodSpotInformationForEdit[]) {\n this.applyFilteringAndSortingForOfferedSpotsTable = false;\n this.offeredMakeGoodsForDisplay = this.rearrangeRemovedSpotsToBottom(event);\n this.checkIfSingleOfferPresent();\n this.createTotalRowForOfferedMGTable();\n this.enableDisableButtons();\n }\n\n createPayloadForValidation(): IValidateEditedOffersPayload {\n let editedOfferedMakeGoods: IMakeGoodSpotInformationForEdit[] = cloneDeep(this.offeredMakegoods);\n editedOfferedMakeGoods = this.replaceActualValuesWithEditValuesForValidateOrSave(editedOfferedMakeGoods);\n return {\n PreemptionSpots: this.preemptedSpots,\n MakeGoodSpots: this.returnMakeGoodSpots(editedOfferedMakeGoods),\n BizRulesFromDb: this.bizRulesFromDb,\n ModifiedSpots: this.returnModifiedSpots(editedOfferedMakeGoods),\n NewOffers: this.returnNewlyAddedSpots(editedOfferedMakeGoods),\n IsCpm: this.showImpressions,\n OrderId: this.buyerOrderId,\n StationId: this.stationId,\n SpDayparts: this.spDayparts,\n IsFreeFlowGroup: this.returnFreeFlowSpots(editedOfferedMakeGoods).length > 0 || this.isCreateOffer,\n BroadCastTime: this.broadcastTime\n };\n }\n\n replaceActualValuesWithEditValuesForValidateOrSave(data: IMakeGoodSpotInformationForEdit[]) {\n data.forEach((item) => {\n item.ActualImpressions = this.showImpressions\n ? +item.OfferedRatingOrImpressionsColumn.value\n : item.ActualImpressions;\n item.ActualRatings = this.showImpressions\n ? item.ActualRatings\n : +item.OfferedRatingOrImpressionsColumn.value;\n item.BuyerProgramName = item.BuyerProgramNameColumn.value;\n // item.Rate = +item.ChangedNewRate;\n item.RevenueClass = item.RevenueClassSelectedByUser;\n item.Rate =\n item.OfferedRateForInputBoxColumn.value === \"-\" ? null : +item.OfferedRateForInputBoxColumn.value;\n item.StartTime = item.TimeInputData?.startTime;\n item.EndTime = item.TimeInputData?.endTime;\n item.RestrictedStartTime = item.TimeInputData?.startTime;\n item.RestrictedEndTime = item.TimeInputData?.endTime;\n\n delete item.TimeInputData;\n delete item.OfferedRateColumnErrorIcons;\n delete item.OfferedRatingOrImpressionsColumn;\n // delete item.DisplayStatusActionKey;\n delete item.BuyerProgramNameColumn;\n // delete item.DisplayRateActionKey;\n delete item.ActionKeyForEdit;\n delete item.RevenueClassDropdownConfigForGT;\n });\n return data;\n }\n\n returnModifiedSpots(data: IMakeGoodSpotInformationForEdit[]): IMakeGoodSpotInformationForEdit[] {\n const modifiedSpots = data.filter(\n (n) =>\n ((n.DisplayStatusActionKey[0]?.additionalTextBeforeLink === \"Added\" && n.IsAddedInGroup) ||\n n.DisplayStatusActionKey[0]?.additionalTextBeforeLink === \"Offered\") &&\n (n.Rate !== n.ActualRate ||\n n.ActualRatings !== n.OriginalRating ||\n n.ActualImpressions !== n.OriginalImpressions ||\n n.OriginalRevenueClassForComparision !== n.RevenueClassSelectedByUser ||\n n.OriginalRateForComparision !== +n.OfferedRateForInputBoxColumn.value ||\n (n.StartTime !== n.OriginalStartTimeForComparision || n.EndTime !== n.OriginalEndTimeForComparision)),\n );\n return modifiedSpots;\n }\n\n returnOnlyBuyerprogramnameModifiedSpots(\n data: IMakeGoodSpotInformationForEdit[],\n ): IMakeGoodSpotInformationForEdit[] {\n return data.filter(\n (n) =>\n n.OriginalBuyerProgramName !== n.BuyerProgramName &&\n n.DisplayStatusActionKey[0]?.additionalTextBeforeLink !== \"Removed\" &&\n n.Rate === n.ActualRate &&\n n.ActualRatings === n.OriginalRating &&\n n.ActualImpressions === n.OriginalImpressions &&\n n.OriginalRevenueClassForComparision === n.RevenueClassSelectedByUser &&\n n.OriginalRateForComparision === +n.OfferedRateForInputBoxColumn.value &&\n n.OriginalStartTimeForComparision === n.StartTime &&\n n.OriginalEndTimeForComparision === n.EndTime,\n );\n }\n\n returnMakeGoodSpots(data: IMakeGoodSpotInformationForEdit[]): IMakeGoodSpotInformationForEdit[] {\n const makeGoodSpots = data.filter(\n (n) =>\n ((n.DisplayStatusActionKey[0]?.additionalTextBeforeLink === \"Added\" && n.IsAddedInGroup) ||\n n.DisplayStatusActionKey[0]?.additionalTextBeforeLink === \"Offered\") &&\n n.Rate === n.ActualRate &&\n // n.OriginalBuyerProgramName == n.BuyerProgramName &&\n n.ActualRatings === n.OriginalRating &&\n n.ActualImpressions === n.OriginalImpressions &&\n n.OriginalRevenueClassForComparision === n.RevenueClassSelectedByUser &&\n n.OriginalRateForComparision === +n.OfferedRateForInputBoxColumn.value &&\n n.StartTime === n.OriginalStartTimeForComparision && n.EndTime === n.OriginalEndTimeForComparision,\n );\n return makeGoodSpots;\n }\n\n returnNewlyAddedMeetingBizRulesSpots(data: IMakeGoodSpotInformationForEdit[]): IMakeGoodSpotInformationForEdit[] {\n const newlyAddedMeetingBizRule = data.filter(\n (n) =>\n n.DisplayStatusActionKey[0]?.additionalTextBeforeLink === \"Added\" &&\n !n.IsAddedInGroup &&\n !n.IsFreeFlowGroup,\n );\n return newlyAddedMeetingBizRule;\n }\n\n returnNewlyAddedSpots(data: IMakeGoodSpotInformationForEdit[]): IMakeGoodSpotInformationForEdit[] {\n return data.filter(\n (n) => n.DisplayStatusActionKey[0]?.additionalTextBeforeLink === \"Added\" && !n.IsAddedInGroup,\n );\n }\n\n returnRemovedSpots(data: IMakeGoodSpotInformationForEdit[]): IMakeGoodSpotInformationForEdit[] {\n return data.filter((n) => n.DisplayStatusActionKey[0]?.additionalTextBeforeLink === \"Removed\");\n }\n\n returnUndoSpots(data: IMakeGoodSpotInformationForEdit[]): IMakeGoodSpotInformationForEdit[] {\n return data.filter(\n (n) => n.DisplayStatusActionKey[0]?.additionalTextBeforeLink === \"Offered\" && n.IsRemovedFromGroup,\n );\n }\n\n returnFreeFlowSpots(data: IMakeGoodSpotInformationForEdit[]): IMakeGoodSpotInformationForEdit[] {\n return data.filter((n) => n.IsFreeFlowGroup);\n }\n\n returnFreeFlowSpotsAddedInCurrentEditSession(\n data: IMakeGoodSpotInformationForEdit[],\n ): IMakeGoodSpotInformationForEdit[] {\n return data.filter(\n (n) =>\n n.IsFreeFlowGroup &&\n this.offeredMakeGoodsOriginalData.findIndex((i) => n.UniqueId === i.UniqueId) === -1,\n );\n }\n\n returnUnmodifiedMakegoodSpots(data: IMakeGoodSpotInformationForEdit[]): IMakeGoodSpotInformationForEdit[] {\n return data.filter(\n (n) =>\n n.DisplayStatusActionKey[0]?.additionalTextBeforeLink !== \"Removed\" &&\n n.DisplayStatusActionKey[0]?.additionalTextBeforeLink !== \"Added\" &&\n n.Rate === n.ActualRate &&\n n.ActualRatings === n.OriginalRating &&\n n.ActualImpressions === n.OriginalImpressions &&\n n.OriginalBuyerProgramName === n.BuyerProgramName &&\n n.OriginalRevenueClassForComparision === n.RevenueClassSelectedByUser &&\n n.OriginalRateForComparision === +n.OfferedRateForInputBoxColumn.value &&\n n.OriginalStartTimeForComparision === n.StartTime &&\n n.OriginalEndTimeForComparision === n.EndTime\n );\n }\n\n returnNewlyAddedSpotsForPersistingActionInUI(data: IMakeGoodSpotInformationForEdit[]): {\n spotId: string;\n groupId: string;\n }[] {\n const addedSpots = data.filter(\n (n) => n.DisplayStatusActionKey[0]?.additionalTextBeforeLink === \"Added\" && !n.IsAddedInGroup,\n );\n const addedSpotsFormatted = addedSpots.map((n: IMakeGoodSpotInformationForEdit) => ({\n spotId: n.NewSpotId,\n groupId: this.preemptedSpots && this.preemptedSpots?.length > 0 ? this.preemptedSpots[0]?.NewGroupId?.toString() : null,\n }));\n\n datadogRum.addAction(\"addedSpots\", addedSpotsFormatted);\n return addedSpotsFormatted;\n }\n\n createPayloadSave(): ISaveEditedOffersPayload {\n let editedOfferedMakeGoods: IMakeGoodSpotInformationForEdit[] = cloneDeep(this.offeredMakegoods);\n editedOfferedMakeGoods = this.replaceActualValuesWithEditValuesForValidateOrSave(editedOfferedMakeGoods);\n this.newlyAddedSpotsIdForPersistingActionInUI = this.returnNewlyAddedSpotsForPersistingActionInUI(\n this.offeredMakegoods,\n );\n return {\n PreemptionSpots: this.preemptedSpots,\n ModifiedSpots: this.returnModifiedSpots(editedOfferedMakeGoods),\n ANNANewOffers: this.returnNewlyAddedMeetingBizRulesSpots(editedOfferedMakeGoods),\n RemovedSpots: this.returnRemovedSpots(editedOfferedMakeGoods),\n UndoSpots: this.returnUndoSpots(editedOfferedMakeGoods),\n FreeFlowOffers: this.returnFreeFlowSpotsAddedInCurrentEditSession(editedOfferedMakeGoods),\n ProgramChangeSpots: this.returnOnlyBuyerprogramnameModifiedSpots(editedOfferedMakeGoods),\n UnmodifiedSpots: this.returnUnmodifiedMakegoodSpots(editedOfferedMakeGoods),\n StationId: this.stationId,\n BuyerOrderId: this.buyerOrderId,\n EditedBy: this.loggedInUser?.userName,\n IsFreeFlowGroup: this.returnFreeFlowSpots(editedOfferedMakeGoods).length > 0 || this.isCreateOffer,\n IsNoRevision: this.isNoRevision,\n IsCpm: this.showImpressions,\n TgId: this.tgId,\n IsReoffer: this.isReofferFlow,\n IsBadlyBehavedGroup: this.IsBadlyBehavedGroup,\n ReofferComment: this.reofferComment,\n };\n }\n validate() {\n this.resetTimerAfterUserAction.emit();\n this.ngxService.start();\n this.consumingProjectSpotsApprovalBackendService\n .validateEditedOffers(this.createPayloadForValidation())\n .subscribe({\n next: (response: HttpResponse<any>) => {\n this.validatedNotSavedYetData = cloneDeep(this.offeredMakegoods);\n this.validatedNotSavedYetPreemptionTableData = cloneDeep(this.preemptedSpots);\n this.resetFiltersForMGTable();\n this.validationResponse = response.body;\n this.setValidationErrors();\n\n this.offeredMakeGoodsForDisplay = cloneDeep(\n this.rearrangeRemovedSpotsToBottom(this.offeredMakegoods),\n );\n // same code added for auto assign p-code in autoAssignPriorityCodeForGivenLURViolation()\n const validationSuccessful = this.checkIfValidationSuccessful();\n this.setValidationMessage(validationSuccessful);\n this.showValidate = validationSuccessful;\n if (validationSuccessful) {\n this.numberOftimesValidationFailed += 1;\n }\n if (!this.showValidate) {\n this.checkIfChangesPendingForSave();\n }\n this.disableValidate = true;\n this.createTotalRowForOfferedMGTable();\n this.ngxService.stop();\n },\n error: (error: any) => {\n this.ngxService.stop();\n this.toastr.error(\"Something went wrong! Please try again.\");\n },\n });\n }\n\n setValidationErrors() {\n // for each row, add validation error in status, rate & rating columns\n if (!this.validationResponse?.RatingViolation && !this.validationResponse.MaxMGSpotViolation?.IsViolated) {\n this.offeredMakegoods.forEach((item) => {\n const isRowRemoved: boolean = item.DisplayStatusActionKey[0].data === \"Removed\";\n if (!isRowRemoved) {\n this.setValidationErrorForRow(item);\n }\n });\n }\n }\n\n setValidationErrorForRow(item: IMakeGoodSpotInformationForEdit) {\n if (this.validationResponse) {\n let statusColumnValidationErrorMessage: string = null;\n if (this.validationResponse?.MaxSpotPerDayStripViolation?.includes(item.UniqueId)) {\n statusColumnValidationErrorMessage = `The maximum number of spots for the 30-minute program should be ${this.bizRules.MaxSpotsAllowedInStripDaily.PerHalfHour}`;\n } else if (this.validationResponse?.MaxSpotPerWeekStripViolation?.includes(item.UniqueId)) {\n statusColumnValidationErrorMessage = `The maximum number of spots for the 30-minute program should be ${this.bizRules.MaxSpotsAllowedInStripWeekly.PerHalfHour}`;\n }\n let ICColumnHasValidationErrorMessage: string = null;\n\n if (this.validationResponse?.InventoryViolation?.includes(item.UniqueId)) {\n ICColumnHasValidationErrorMessage = \"You can only select 1 spot for the same inventory and day.\";\n }\n item.ICActionKey = [\n new IconCellActionKey(\n \"IC\",\n ICColumnHasValidationErrorMessage !== null,\n ICColumnHasValidationErrorMessage !== null ? \"mdi mdi-alert-octagon\" : \"\",\n true,\n ICColumnHasValidationErrorMessage !== null,\n ICColumnHasValidationErrorMessage,\n ),\n ];\n item.ICTooltipKey = ICColumnHasValidationErrorMessage;\n\n item.DisplayStatusActionKey = [\n new IconActionForSpotsApprovalEdit(\n item.DisplayStatusActionKey[0].additionalTextBeforeLink,\n statusColumnValidationErrorMessage,\n statusColumnValidationErrorMessage ? \"error-highlight\" : \"\",\n \"offeredMGStatusAction\",\n ),\n ];\n item.DisplayStatusTooltipKey = item.DisplayStatusActionKey[0]?.tooltipData;\n\n item.TimeInputData.icons = null;\n if (this.validationResponse?.TimeViolation?.includes(item.UniqueId)) {\n item.TimeInputData.icons = [{ id: \"ViolationTooltip\", class: \"mdi mdi-alert-octagon\", tooltipMessage: \"Please enter a valid time range\" }];\n }\n\n item.ChangedNewRate = null;\n\n const ratingOrIMPSViolated = this.validationResponse?.MinGrpPerSpotViolation?.filter(\n (n) => n.SpotId === item.UniqueId,\n );\n\n // remove dot if nothing present after dot\n const val = cloneDeep(item.OfferedRatingOrImpressionsColumn.value);\n if (val[val.length - 1] === \".\") {\n val.slice(0, val.length - 1);\n }\n\n let classname = \"\";\n if (ratingOrIMPSViolated.length > 0) {\n classname = \"rtgOrImps-validation-error\";\n }\n\n let iconAndTooltips: {\n showIcon: boolean;\n showSvgIcon: boolean;\n iconClass?: string;\n iconTooltip?: string;\n svgOrIconName?: string;\n svgOrIconTooltipMsg?: string;\n }[] = null;\n const metric: \"rating\" | \"IMPS\" = this.showImpressions ? \"IMPS\" : \"rating\";\n\n if (this.totalBookedRatingOfPE > 0 && val?.toString() === \"0\") {\n iconAndTooltips = [\n {\n showIcon: true,\n showSvgIcon: false,\n iconClass: \"mdi mdi-alert-octagon\",\n iconTooltip: `Please enter a ${this.showImpressions ? \"IMPS\" : \"RTG\"} > 0`,\n },\n ];\n } else if (ratingOrIMPSViolated.length > 0) {\n iconAndTooltips = [\n {\n showIcon: true,\n showSvgIcon: false,\n iconClass: \"mdi mdi-alert-octagon\",\n iconTooltip: `The minimum offered ${metric} should be ${ratingOrIMPSViolated[0].MinimumRating}`,\n },\n ];\n } else if (\n (this.showImpressions &&\n item.OfferedRatingOrImpressionsColumn.value.toString() === item.Impressions.toString()) ||\n (!this.showImpressions &&\n item.OfferedRatingOrImpressionsColumn.value.toString() === item.Ratings.toString())\n ) {\n iconAndTooltips = new IconActionForOfferedRTGOrIMPSColumn(item, this.showImpressions ? \"CPM\" : \"CPP\")\n .tooltipObjList;\n }\n\n item.OfferedRatingOrImpressionsColumn = new EditableInput(\n val,\n \"INPUT\",\n \"\",\n false,\n classname,\n false,\n this.showImpressions ? 1 : 2,\n true,\n [\"`\"],\n );\n\n item.OfferedRatingOrImpressionsColumnIcons = new IconsAndTooltips(iconAndTooltips).iconsAndTooltips;\n\n const newRateArr = this.validationResponse?.SpotsWithNewCost?.filter((n) => n.SpotId === item.UniqueId);\n let rateColumnHasValidationErrorMessage: string = null;\n\n // As part of 13052 commented, only from SpotsWithNewCost and LURViolation\n // if (ratingOrIMPSViolated.length > 0) {\n // item.ChangedNewRate = ratingOrIMPSViolated[0].Rate;\n // } else\n\n if (newRateArr.length > 0) {\n item.ChangedNewRate = newRateArr[0].Rate;\n }\n\n const violatedRateArr = this.validationResponse?.LurViolated?.filter((n) => n.SpotId === item.UniqueId);\n\n if (violatedRateArr.length > 0) {\n item.ChangedNewRate = violatedRateArr[0].Rate;\n const targetLur: string = this.currencyPipe.transform(\n violatedRateArr[0].TargetLur,\n \"USD\",\n \"symbol\",\n \"1.0-2\",\n );\n rateColumnHasValidationErrorMessage = `The minimum allowed rate according to the Section Rate set is ${targetLur}. Please change the rating to adjust the rate in order to avoid political violations.`;\n item.PoliticalrateViolationInfo = {\n TargetLur: targetLur,\n InventoryCode: violatedRateArr[0].InventoryCode,\n PoliticalWindowName: violatedRateArr[0].PoliticalWindowName,\n OfferedRate: this.currencyPipe.transform(violatedRateArr[0].Rate, \"USD\", \"symbol\", \"1.0-2\"),\n };\n const autoAssignablePriority = this.revenueClassList.find(\n (x: IRevenueClassList) => x.code === violatedRateArr[0].AutoAssignablePriority,\n );\n if (autoAssignablePriority) {\n item.AutoAssignablePriorityCodeFromBE = {\n id: autoAssignablePriority.id,\n text: autoAssignablePriority.code,\n };\n } else {\n item.AutoAssignablePriorityCodeFromBE = null;\n }\n }\n\n const previousOfferedRateEnteredByUser = item.OfferedRateForInputBoxColumn.value;\n let rate =\n item?.ChangedNewRate || item?.ChangedNewRate === 0\n ? item?.ChangedNewRate\n : previousOfferedRateEnteredByUser;\n\n let disableRateInput = false;\n if (rate === null || rate === undefined || rate === \"-\") {\n disableRateInput = true;\n rate = \"-\";\n } else {\n disableRateInput = false;\n rate = rate.toString();\n }\n\n item.OfferedRateForInputBoxColumn = null;\n item.OfferedRateForInputBoxColumn = cloneDeep(\n new EditableInput(rate, \"INPUT\", \"\", disableRateInput, \"\", false, this.decimalPlacesCountAllowedInRatesMgTable, true, [\"`\"])\n );\n if (rateColumnHasValidationErrorMessage) {\n item.OfferedRateColumnErrorIcons = [\n {\n id: \"LURViolationView\",\n iconTooltip: rateColumnHasValidationErrorMessage,\n iconClass: rateColumnHasValidationErrorMessage ? \"mdi mdi-alert-octagon\" : \"\",\n showIcon: true,\n },\n {\n id: \"LURViolationView\",\n showLink: true,\n linkText: \"View\",\n linkClass: \"view-lur-violation\",\n },\n ];\n } else {\n item.OfferedRateColumnErrorIcons = [];\n item.OfferedRateForInputBoxColumn.className = null;\n }\n }\n }\n\n setValidationMessage(hasError: boolean) {\n const hasAnyLURViolationError = this.offeredMakegoods.find(\n (n: any) => n.OfferedRateColumnErrorIcons?.length > 0,\n );\n if (hasAnyLURViolationError) {\n this.messageBoxData = new MessageBoxData(\n \"\",\n ValidationResults.ERROR_MESSAGE_FOR_LUR_VIOLATION,\n GenericMessageBoxTheme.errorRed.iconClass,\n `${GenericMessageBoxTheme.errorRed.messageBoxClass} sm biz-status-box`,\n );\n } else if (hasError) {\n this.messageBoxData = new MessageBoxData(\n \"\",\n ValidationResults.ERROR_MESSAGE,\n GenericMessageBoxTheme.errorRed.iconClass,\n `${GenericMessageBoxTheme.errorRed.messageBoxClass} sm biz-status-box`,\n );\n } else {\n const message: string =\n this.numberOftimesValidationFailed > 0\n ? ValidationResults.VALIDATION_SUCCESS_MESSAGE\n : ValidationResults.SUCCESS_MESSAGE;\n this.messageBoxData = new MessageBoxData(\n \"\",\n message,\n GenericMessageBoxTheme.successGreen.iconClass,\n `${GenericMessageBoxTheme.successGreen.messageBoxClass} sm biz-status-box`,\n );\n }\n }\n\n save() {\n this.saveOfferedOrEditedMakegoods();\n }\n saveOfferedOrEditedMakegoods() {\n const hasAnyLURViolationError = this.offeredMakegoods.find(\n (n: any) => n.OfferedRateColumnErrorIcons?.length > 0,\n );\n if (hasAnyLURViolationError) {\n this.openConfirmPoliticalRateviolationsAndSaveModal();\n } else {\n this.saveEditedOfferesForPreemption();\n }\n }\n\n saveEditedOfferesForPreemption() {\n this.ngxService.start();\n this.consumingProjectSpotsApprovalBackendService\n .saveEditedOffers(this.createPayloadSave())\n .subscribe({\n next: (response: HttpResponse<any>) => {\n this.ngxService.stop();\n this.spotsApprovalEditModalRef.close();\n this.editSaved.emit({ spots: this.newlyAddedSpotsIdForPersistingActionInUI, closePopup: true });\n },\n error: (error: any) => {\n this.ngxService.stop();\n this.toastr.error(\"Something went wrong! Please try again.\");\n },\n });\n }\n\n checkIfValidationSuccessful(): boolean {\n return (\n this.validationResponse?.RateViolation != null ||\n this.validationResponse?.RatingViolation != null ||\n this.validationResponse?.MaxMGSpotViolation?.IsViolated ||\n this.validationResponse?.MaxSpotPerDayStripViolation?.length > 0 ||\n this.validationResponse?.MaxSpotPerWeekStripViolation?.length > 0 ||\n this.validationResponse?.MinGrpPerSpotViolation?.length > 0 ||\n this.validationResponse?.InventoryViolation?.length > 0 ||\n this.validationResponse?.TimeViolation?.length > 0\n );\n }\n enableDisableButtons() {\n this.checkIfChangesPendingForValidate();\n if (!this.showValidate) {\n this.checkIfChangesPendingForSave();\n }\n }\n\n checkIfChangesPendingForSave() {\n const currentOfferedSpots = this.offeredMakeGoodsForDisplay.filter(\n (n) => n.ActionKeyForEdit[0]?.name === \"Remove\",\n );\n const originalOfferedSpots = this.savedOfferedMakeGoods.filter((n) => n.ActionKeyForEdit[0].name === \"Remove\");\n this.disableSave = true;\n\n if (currentOfferedSpots.filter((spot) => spot.BuyerProgramNameColumn.value === \"\")?.length > 0) {\n this.disableSave = true;\n return;\n }\n if (\n !isEqual(\n sortBy(currentOfferedSpots, \"UniqueId\").map((n) => n.UniqueId),\n sortBy(originalOfferedSpots, \"UniqueId\").map((n) => n.UniqueId),\n )\n ) {\n this.disableSave = false;\n }\n\n currentOfferedSpots.forEach((item) => {\n const index: number = originalOfferedSpots.findIndex((n) => n.UniqueId === item.UniqueId);\n let actualIMPSOrRating: number = 0;\n if (index !== -1) {\n actualIMPSOrRating = this.showImpressions\n ? originalOfferedSpots[index].Impressions\n : originalOfferedSpots[index].Ratings;\n }\n\n if (\n item.BuyerProgramNameColumn.value !== \"\" &&\n (index === -1 ||\n originalOfferedSpots[index].BuyerProgramName !== item.BuyerProgramNameColumn.value ||\n // (originalOfferedSpots[index].Rate != item.ChangedNewRate) ||\n actualIMPSOrRating !== +item.OfferedRatingOrImpressionsColumn.value ||\n originalOfferedSpots[index].OriginalRevenueClassForComparision !==\n item.RevenueClassSelectedByUser ||\n originalOfferedSpots[index].OriginalRateForComparision !== +item.OfferedRateForInputBoxColumn.value ||\n originalOfferedSpots[index]?.StartTime !== item.TimeInputData.startTime ||\n originalOfferedSpots[index]?.EndTime !== item.TimeInputData.endTime\n )\n )\n this.disableSave = false;\n });\n }\n\n checkIfChangesPendingForValidate() {\n const currentData = this.offeredMakegoods.filter((n) => n.ActionKeyForEdit[0]?.name === \"Remove\");\n const validatedData = this.validatedNotSavedYetData.filter((n) => n.ActionKeyForEdit[0].name === \"Remove\");\n\n let edited: boolean = false;\n let hasInvalidValues: boolean = false;\n\n hasInvalidValues =\n currentData.filter((n) => {\n const offeredRatingOrImpsColValue = n.OfferedRatingOrImpressionsColumn\n ? +n.OfferedRatingOrImpressionsColumn.value\n : null;\n\n const offeredRateColValue =\n n.OfferedRateForInputBoxColumn && n.OfferedRateForInputBoxColumn.value !== \"-\"\n ? +n.OfferedRateForInputBoxColumn.value\n : null;\n\n // adding new offer value will be '-' so offeredRateColValue will come null\n const bookedRateError =\n (offeredRateColValue === 0 && this.totalBookedRateOfPE !== 0) ||\n n.OfferedRateForInputBoxColumn?.value === \"\";\n\n const bookedRatingImpsError =\n (offeredRatingOrImpsColValue === 0 && this.totalBookedRatingOfPE !== 0) ||\n (offeredRatingOrImpsColValue !== 0 &&\n (!offeredRatingOrImpsColValue || n.OfferedRatingOrImpressionsColumn?.value === \"\"));\n\n const timeNotDefined = !n.TimeInputData.startTime || !n.TimeInputData.endTime;\n const timeNotEdited = n?.StartTime === n.TimeInputData.startTime && n?.EndTime === n.TimeInputData.endTime;\n const timeError = timeNotDefined || (n.ForceTimeEdit && timeNotEdited);\n\n return bookedRateError || bookedRatingImpsError || timeError;\n }).length > 0;\n\n if (hasInvalidValues) {\n this.disableValidate = true;\n this.showValidate = true;\n return;\n }\n if (\n !isEqual(\n sortBy(currentData, \"UniqueId\").map((n) => n.UniqueId),\n sortBy(validatedData, \"UniqueId\").map((n) => n.UniqueId),\n ) || (this.isCreateOffer &&\n (!isEqual(\n sortBy(this.preemptedSpots, \"UniqueId\").map((n) => n.UniqueId),\n sortBy(this.validatedNotSavedYetPreemptionTableData, \"UniqueId\").map((n) => n.UniqueId))))\n ) {\n edited = true;\n this.disableValidate = !edited;\n this.showValidate = edited;\n return;\n }\n currentData.forEach((item) => {\n const index: number = validatedData.findIndex((n) => n.UniqueId === item.UniqueId);\n let IMPSOrRating: number = 0;\n let revenueClass: string = null;\n let rate: number = 0;\n const validatedDataOfferedRatingOrImpsColValue = validatedData[index]?.OfferedRatingOrImpressionsColumn\n ? +validatedData[index].OfferedRatingOrImpressionsColumn.value\n : null;\n const validatedDataOfferedRateColValue = validatedData[index]?.OfferedRateForInputBoxColumn\n ? +validatedData[index].OfferedRateForInputBoxColumn.value\n : null;\n const validatedDataRevenueClassByUser: string =\n validatedData[index]?.OriginalRevenueClassForComparision ?? null;\n // const timeEdited = n.DisplayStatusActionKey[0]?.additionalTextBeforeLink === \"Added\" &&\n // (n.StartTime !== n.EditedStartTime || n.EndTime !== n.EditedEndTime);\n if (index !== -1) {\n IMPSOrRating = validatedDataOfferedRatingOrImpsColValue;\n revenueClass = validatedDataRevenueClassByUser;\n rate = validatedDataOfferedRateColValue;\n }\n if (\n index === -1 ||\n // || (validatedData[index].ChangedNewRate != item.ChangedNewRate)\n IMPSOrRating !== +item.OfferedRatingOrImpressionsColumn.value ||\n revenueClass !== item.RevenueClassSelectedByUser ||\n rate !== +item.OfferedRateForInputBoxColumn.value ||\n validatedData[index]?.StartTime !== item.TimeInputData.startTime ||\n validatedData[index]?.EndTime !== item.TimeInputData.endTime\n ) {\n edited = true;\n }\n });\n\n this.disableValidate = !edited || hasInvalidValues;\n this.showValidate = edited || (this.validationResponse && this.checkIfValidationSuccessful());\n }\n\n revenueClassEditedFromGTTable(event: {\n selectedItem: { id: number; text: string };\n row: IMakeGoodSpotInformationForEdit;\n dropdownIndex: number;\n }) {\n this.revenueClassEdited(event);\n this.enableDisableButtons();\n this.resetTimerAfterUserAction.emit();\n }\n\n revenueClassEdited(event: {\n selectedItem: { id: number; text: string };\n row: IMakeGoodSpotInformationForEdit;\n dropdownIndex: number;\n }) {\n const { dropdownIndex } = event;\n const selectedRow = this.offeredMakegoods.find((n) => n.UniqueId === event.row.UniqueId);\n const selectedRowInClonedCopy = this.offeredMakeGoodsForDisplay.find((n) => n.UniqueId === event.row.UniqueId);\n\n if (selectedRow) {\n selectedRow.RevenueClassSelectedByUser = event.selectedItem?.text;\n selectedRow.RevenueClassDropdownConfigForGT[dropdownIndex].selectedItem = event.selectedItem;\n this.offeredMakegoods = cloneDeep(this.offeredMakegoods);\n }\n if (selectedRowInClonedCopy) {\n selectedRowInClonedCopy.RevenueClassSelectedByUser = event.selectedItem?.text;\n selectedRowInClonedCopy.RevenueClassDropdownConfigForGT[dropdownIndex].selectedItem = event.selectedItem;\n this.offeredMakeGoodsForDisplay = cloneDeep(this.offeredMakeGoodsForDisplay);\n }\n this.enableDisableButtons();\n this.resetTimerAfterUserAction.emit();\n }\n\n sortingAppliedToOfferedMGTable(event: IMakeGoodSpotInformationForEdit[]) {\n this.offeredMakeGoodsForDisplay = event;\n this.createTotalRowForOfferedMGTable();\n }\n\n filterAppliedToOfferedMGTable(event: IMakeGoodSpotInformationForEdit[]) {\n this.offeredMakeGoodsForDisplay = event;\n this.createTotalRowForOfferedMGTable();\n this.offeredMakeGoodsForDisplay = this.rearrangeRemovedSpotsToBottom(event);\n }\n\n resetFiltersForMGTable() {\n this.offeredMakeGoodsForDisplay = cloneDeep(this.offeredMakegoods);\n this.resetFiltersForOfferedTable = true;\n }\n\n resetFiltersInOtherSpotsTable() {\n this.otherSpotsForDisplay = cloneDeep(this.otherSpots);\n this.resetFiltersForOtherSpotsTable = !this.resetFiltersForOtherSpotsTable;\n }\n\n resetFiltersInRotatorsTable() {\n this.rotatorsForDisplay = cloneDeep(this.rotators);\n this.resetFiltersForRotatorsTable = !this.resetFiltersForRotatorsTable;\n }\n\n rearrangeRemovedSpotsToBottom(data: IMakeGoodSpotInformationForEdit[]) {\n const removedSpots: IMakeGoodSpotInformationForEdit[] = data.filter(\n (n) => n.DisplayStatusActionKey[0].additionalTextBeforeLink === \"Removed\",\n );\n const notRemovedSpots: IMakeGoodSpotInformationForEdit[] = data.filter(\n (n) => n.DisplayStatusActionKey[0].additionalTextBeforeLink !== \"Removed\",\n );\n const updatedData = [...notRemovedSpots, ...removedSpots];\n return updatedData;\n }\n\n removeTooltipOnScroll(e: any) {\n const elements = document.getElementsByClassName(\"tooltip\");\n\n while (elements && elements.length > 0) {\n elements[0].remove();\n }\n }\n\n filterSortingAppliedToSpotsMeetingBizRulesTable(tableData: IAvailableSpotInformationForEdit[]) {\n this.spotsMeetingBizRulesForDisplay = tableData;\n this.applyFilteringAndSortingForSpotsMeetingBizRulesTable = false;\n }\n\n filterSortingAppliedToOtherSpotsTable(tableData: IAdditionInformationForFreeFlowSpot[]) {\n this.otherSpotsForDisplay = tableData;\n this.applyFilteringAndSortingForOtherSpotsTable = false;\n }\n\n filterSortingAppliedToRotatorsTable(tableData: IAdditionInformationForFreeFlowSpot[]) {\n this.rotatorsForDisplay = tableData;\n this.applyFilteringAndSortingForRotatorsTable = false;\n }\n\n applyWeekSelection(event: { startDate: string; endDate: string }[]) {\n if (\n !this.allOtherAvailableSpots ||\n event[0].startDate !==\n this.dateTimeFormatService.convertNgbDateToMomentInSpecificFormat(this.fromDate, \"YYYY-MM-DD\") ||\n event[0].endDate !==\n this.dateTimeFormatService.convertNgbDateToMomentInSpecificFormat(this.toDate, \"YYYY-MM-DD\")\n ) {\n this.fromDate = this.dateTimeFormatService.convertToNgbDate(event[0].startDate, \"YYYY-MM-DD\");\n this.toDate = this.dateTimeFormatService.convertToNgbDate(event[0].endDate, \"YYYY-MM-DD\");\n\n // this.resetFiltersForMGTable();\n this.resetFiltersInOtherSpotsTable();\n this.fetchOtherFreeFlowSpots();\n }\n this.weekcalendarConfig.emitInitialSelection = false;\n }\n\n getStartAndEndDates(\n startDateInNgbDateFormat: NgbDateStruct,\n endDateInNgbDateFormat: NgbDateStruct,\n ): {\n selectedWeekStartDate: string;\n selectedWeekEndDate: string;\n } {\n const startDate = this.dateTimeFormatService.convertNgbDateToMomentInSpecificFormat(\n startDateInNgbDateFormat,\n \"YYYY-MM-DD\",\n );\n\n const startDateMoment = this.dateTimeFormatService.convertNgbDateToMoment(startDateInNgbDateFormat);\n const mindateInMoment: string = this.dateTimeFormatService.convertNgbDateToMoment(this.minDate);\n\n const selectedWeekStartDate = dayjs(startDateMoment).isSameOrAfter(mindateInMoment)\n ? cloneDeep(startDate)\n : cloneDeep(mindateInMoment);\n\n const endDate = this.dateTimeFormatService.convertNgbDateToMomentInSpecificFormat(\n endDateInNgbDateFormat,\n \"YYYY-MM-DD\",\n );\n const endDateMoment = this.dateTimeFormatService.convertNgbDateToMoment(endDateInNgbDateFormat);\n const maxDateInMoment: string = this.dateTimeFormatService.convertNgbDateToMoment(this.maxDate);\n\n const selectedWeekEndDate = dayjs(endDateMoment).isAfter(maxDateInMoment)\n ? cloneDeep(maxDateInMoment)\n : cloneDeep(endDate);\n return {\n selectedWeekStartDate,\n selectedWeekEndDate,\n };\n }\n\n applyWeekSelectionForRotators(event: { startDate: string; endDate: string }[]) {\n if (\n !this.allRotators ||\n event[0]?.startDate !==\n this.dateTimeFormatService.convertNgbDateToMomentInSpecificFormat(\n this.fromDateForFetchingRotators,\n \"YYYY-MM-DD\",\n ) ||\n event[0].endDate !==\n this.dateTimeFormatService.convertNgbDateToMomentInSpecificFormat(\n this.toDateForFetchingRotators,\n \"YYYY-MM-DD\",\n )\n ) {\n this.fromDateForFetchingRotators = this.dateTimeFormatService.convertToNgbDate(\n event[0].startDate,\n \"YYYY-MM-DD\",\n );\n this.toDateForFetchingRotators = this.dateTimeFormatService.convertToNgbDate(\n event[0].endDate,\n \"YYYY-MM-DD\",\n );\n\n // this.resetFiltersForMGTable();\n this.resetFiltersInRotatorsTable();\n this.fetchRotators();\n }\n this.weekcalendarConfigForRotatorsTable.emitInitialSelection = false;\n }\n\n closeConfirmPoliticalRateviolationsAndSaveModal() {\n this.resetTimerAfterUserAction.emit();\n this.confirmPoliticalRateviolationsAndSaveModalReference.close();\n }\n\n openConfirmPoliticalRateviolationsAndSaveModal() {\n this.confirmPoliticalRateviolationsAndSaveModalReference = this.modalService.open(\n this.confirmPoliticalRateviolationsAndSaveModal,\n );\n }\n\n saveOffers() {\n this.closeConfirmPoliticalRateviolationsAndSaveModal();\n this.saveEditedOfferesForPreemption();\n }\n\n openPoliticalRateViolationViewModal(rowData: IMakeGoodSpotInformationForEdit) {\n this.openPoliticalRateViolationViewPopup = false;\n this.rowClickedForPoliticalRateViolation = rowData;\n this.politicalViolationData = [];\n this.politicalViolationData.push({\n key: \"Political Window\",\n value: rowData.PoliticalrateViolationInfo.PoliticalWindowName,\n });\n this.politicalViolationData.push({\n key: \"Inventory Code\",\n value: rowData.PoliticalrateViolationInfo.InventoryCode,\n });\n this.politicalViolationData.push({ key: \"Revenue Class\", value: rowData.RevenueClassSelectedByUser });\n this.politicalViolationData.push({\n key: \"Week\",\n value: dayjs(rowData.WeekStartDate, \"MM/DD/YY\").format(\"MM/DD/YYYY\"),\n });\n this.politicalViolationData.push({\n key: \"Offered Rate\",\n value: rowData.PoliticalrateViolationInfo.OfferedRate,\n });\n this.politicalViolationData.push({\n key: \"Section Rate\",\n value: rowData.PoliticalrateViolationInfo.TargetLur,\n });\n this.openPoliticalRateViolationViewPopup = true;\n }\n\n closePoliticalRateViolationViewModal() {\n this.openPoliticalRateViolationViewPopup = false;\n }\n\n autoAssignPriorityCodeForGivenLURViolation() {\n if (this.rowClickedForPoliticalRateViolation?.AutoAssignablePriorityCodeFromBE) {\n const event = {\n selectedItem: this.rowClickedForPoliticalRateViolation?.AutoAssignablePriorityCodeFromBE,\n row: this.rowClickedForPoliticalRateViolation,\n dropdownIndex: 0,\n };\n const eventObjForRateEdited = {\n row: this.rowClickedForPoliticalRateViolation,\n value: this.rowClickedForPoliticalRateViolation.OfferedRateForInputBoxColumn?.value,\n keyEdited: OfferedMGOrADUTableKeys.OFFERED_RATE_KEY,\n };\n this.revenueClassEdited(event);\n eventObjForRateEdited.row.OfferedRateColumnErrorIcons = [];\n this.rateEdited(eventObjForRateEdited);\n\n const validationSuccessful = this.checkIfValidationSuccessful();\n this.setValidationMessage(validationSuccessful);\n this.showValidate = validationSuccessful;\n if (!this.showValidate) {\n this.checkIfChangesPendingForSave();\n }\n this.toastr.success(\"The rev class has been auto-assigned.\");\n }\n }\n\n openSpotDetailsModal(object: {\n inventoryCodeId: number;\n inventoryCode: string;\n weekStartDate: string;\n date: string;\n }) {\n this.openSpotDetailsPopup = true;\n setTimeout(() => {\n this.spotDetailsPopup.openSpotDetailsModal(object);\n }, 0);\n }\n\n addOtherOSSpots() {\n const preemptionTableUniqueIds = this.preemptedSpots.map(n => n.UniqueId);\n this.unselectedGroupableOutstandingSpots = cloneDeep(this.groupableOutstandingSpots.filter(n => !preemptionTableUniqueIds.includes(n.UniqueId)));\n this.openAddOtherOSSpotsPopup = true;\n }\n\n closeAddOtherOSSpotsPopup() {\n this.openAddOtherOSSpotsPopup = false;\n }\n\n disableEnableActionInSpotsMeetingBizRulesTable() {\n if (this.preemptedSpots.filter(n => n.BusinessRules !== \"Standard\").length > 0) {\n this.spotsMeetingBizRulesForDisplay.forEach(n => { n.ActionKeyForEdit[0].class = \"disabled-action-link\" });\n this.spotsMeetingBizRules.forEach(n => { n.ActionKeyForEdit[0].class = \"disabled-action-link\" });\n } else {\n this.spotsMeetingBizRulesForDisplay.forEach(n => { n.ActionKeyForEdit[0].class = \"action-link\" });\n this.spotsMeetingBizRules.forEach(n => { n.ActionKeyForEdit[0].class = \"action-link\" });\n }\n }\n checkIfSingleOSPEPresent() {\n if (this.preemptedSpots.length === 1) {\n this.preemptedSpots[0].ActionKeyForEdit[0].class =\n \"disabled-action-link\";\n } else {\n this.preemptedSpots.forEach((item) => {\n item.ActionKeyForEdit[0].class = \"action-link\";\n });\n }\n this.preemptedSpots = [...this.preemptedSpots];\n }\n\n createOffersPreemptionTableRemoveActionClicked(event: { data: IPreemptionSpotInformationForEdit; id: any; isIconClicked: boolean }) {\n this.preemptedSpots = cloneDeep(this.preemptedSpots.filter(n => n.UniqueId !== event.data.UniqueId));\n this.checkIfSingleOSPEPresent();\n this.unselectedGroupableOutstandingSpots = cloneDeep(this.unselectedGroupableOutstandingSpots.concat(event.data));\n this.disableEnableActionInSpotsMeetingBizRulesTable();\n this.createTotalRowForPreemptionTable();\n this.enableDisableButtons();\n }\n applyClickedAddOtherOSSpotsPopup(event: IOSPESpotsData[]) {\n this.openAddOtherOSSpotsPopup = false;\n event.forEach(item => {\n item.ActionKeyForEdit = [];\n item.ActionKeyForEdit.push(\n new ClickableItemForOSSpotsTableActionColumn(\n TypeOfActionLinkForGtEnumSpotsApprovalEdit.ACTION_COLUMN_CLICK,\n \"Remove\",\n \"action-link\",\n false,\n null,\n ),\n );\n item.DisplaySpotType = \"Preemption\";\n item.SpotTypeActionKey = [\n {\n showObjectKey: false,\n additionalText: item.DisplaySpotType,\n },\n {\n showObjectKey: false,\n svgOrIconName:\n item.PreemptMessages\n ? SvgOrIconNames.ALERT_OCTAGON_ICON\n : null,\n svgOrIconTooltipMsg: item.PreemptMessages\n },\n ];\n\n const estimatePrioritiesData: string[] = GenericSpotsApprovalService.returnEstimatePriorities(\n item,\n this.orderData.estimatePriority,\n );\n item.SpotTypeActionKey = cloneDeep(item.SpotTypeActionKey);\n item.firstTwoEstimatePrioritiesForRTGMetric = estimatePrioritiesData[0];\n item.lastTwoEstimatePrioritiesForRTGMetric = estimatePrioritiesData[1];\n item.firstTwoEstimatePrioritiesForIMPSMetric = estimatePrioritiesData[2];\n item.lastTwoEstimatePrioritiesForIMPSMetric = estimatePrioritiesData[3];\n })\n this.preemptedSpots = cloneDeep(this.preemptedSpots.concat(event));\n const preemptionTableUniqueIds = this.preemptedSpots.map(n => n.UniqueId);\n this.unselectedGroupableOutstandingSpots = cloneDeep(this.groupableOutstandingSpots.filter(n => !preemptionTableUniqueIds.includes(n.UniqueId)));\n this.disableEnableActionInSpotsMeetingBizRulesTable();\n this.checkIfSingleOSPEPresent();\n this.createTotalRowForPreemptionTable();\n }\n\n timeInputsValuesChangedInMGTable(obj: { selectedTime: string[][], selectedTimeConverted: { startTime: string, endTime: string }, rowData: IMakeGoodSpotInformationForEdit }) {\n let index = this.offeredMakeGoodsForDisplay.findIndex(n => n.UniqueId === obj.rowData.UniqueId);\n const startTimeFormatted =\n dayjs(`1/1/1 ${obj.selectedTimeConverted.startTime}`).format(obj.selectedTime[0][1] === \"00\" || obj.selectedTime[0][1] === \"0\" ? \"ha\" : \"hmma\")\n const endTimeFormatted =\n dayjs(`1/1/1 ${obj.selectedTimeConverted.endTime}`).format(obj.selectedTime[1][1] === \"00\" || obj.selectedTime[1][1] === \"0\" ? \"ha\" : \"hmma\")\n const timeInputData = {\n id: obj.rowData.UniqueId,\n startTime: obj.selectedTimeConverted.startTime,\n endTime: obj.selectedTimeConverted.endTime,\n showAsInput: true,\n disableInput: false,\n selectedTimeAsAString: `${startTimeFormatted?.slice(0, startTimeFormatted.length - 1)} - ${endTimeFormatted?.slice(0, endTimeFormatted.length - 1)}`,\n }\n this.offeredMakeGoodsForDisplay[index].TimeInputData = cloneDeep(timeInputData);\n this.offeredMakeGoodsForDisplay[index].IsTimeEdited =\n timeInputData.startTime !== this.offeredMakeGoodsForDisplay[index].OriginalStartTimeForComparision\n || timeInputData.endTime !== this.offeredMakeGoodsForDisplay[index].OriginalEndTimeForComparision;\n\n index = this.offeredMakegoods.findIndex(n => n.UniqueId === obj.rowData.UniqueId);\n this.offeredMakegoods[index].TimeInputData = cloneDeep(timeInputData);\n this.offeredMakegoods[index].IsTimeEdited = cloneDeep(this.offeredMakeGoodsForDisplay[index].IsTimeEdited);\n this.enableDisableButtons();\n }\n\n lockTimedOut() {\n this.lockTimedOutEmit.emit();\n }\n\n resetTimer() {\n this.timerComponent?.reset();\n }\n}\n","<ng-template\n #spotsApprovalEditModal\n let-modal\n>\n <div class=\"modal-header\">\n <img\n *ngIf=\"ogLogoUrl && ogLogoUrl !== ''\"\n class=\"channel-logo\"\n src=\"{{ ogLogoUrl }}\"\n height=\"33\"\n />\n <img\n class=\"anna-logo\"\n src=\"../../../../assets/images/Anna-Logo-No shadow-White.png\"\n />\n </div>\n <section\n class=\"modal-body\"\n (scroll)=\"removeTooltipOnScroll($event)\"\n >\n <anna-design-timer\n class=\"spots-approval-timer edit-page-timer\"\n #timerComponent\n [outerStrokeColor]=\"'#d8d8d8'\"\n [innerStrokeColor]=\"'#f44336'\"\n [duration]=\"600\"\n [top]=\"'40px'\"\n [timerTextLeftValue]=\"'calc(100% - 90px)'\"\n [timerCircleLeftValue]=\"'calc(100% - 98px)'\"\n (timedOut)=\"lockTimedOut()\"\n ></anna-design-timer>\n <div class=\"header-and-buttons\">\n <h3>{{ title }} for Order# {{ buyerOrderId }}</h3>\n <span\n class=\"guidelines\"\n [ngbTooltip]=\"guidelines\"\n placement=\"bottom left\"\n container=\"body\"\n tooltipClass=\"guidelines-tooltip\"\n #t=\"ngbTooltip\"\n >Guidelines\n <i class=\"mdi mdi-format-list-checkbox\"></i>\n </span>\n </div>\n <div class=\"buttons-container\">\n <section class=\"order-info\">\n <p class=\"w-20\">\n <span>Flight Dates</span>\n <span annaCoreShowEllipsisTextOnHover\n ><b\n >{{ orderData.flightStartDate | date: \"MM/dd/yy\" }} -\n {{ orderData.flightEndDate | date: \"MM/dd/yy\" }}</b\n >\n </span>\n </p>\n <p class=\"w-30\">\n <span>Hiatus Dates</span>\n <span annaCoreShowEllipsisTextOnHover>\n <ng-container *ngIf=\"orderData.hiatusPeriod?.length === 0; else data\"><b>-</b></ng-container>\n <ng-template #data\n ><b\n ><ng-container *ngFor=\"let item of orderData.hiatusPeriod; let last = last\"\n >{{ item?.StartDate }} - {{ item?.EndDate\n }}<ng-container *ngIf=\"!last\">, </ng-container></ng-container\n ></b\n >\n </ng-template>\n </span>\n </p>\n <p class=\"w-20\">\n <span>Spot Dates</span>\n <span\n ><b>{{ orderData.firstBookedSpotDate }} - {{ orderData.lastBookedSpotDate }}</b></span\n >\n </p>\n <p class=\"placed-weeks\">\n <span>Placed Weeks</span>\n <span annaCoreShowEllipsisTextOnHover>\n <ng-container *ngIf=\"orderData.placedWeeks?.length === 0; else placedWeekData\"\n ><b>-</b></ng-container\n >\n <ng-template #placedWeekData\n ><b>\n <ng-container *ngFor=\"let item of orderData.placedWeeks; let last = last\"\n >{{ item }}<ng-container *ngIf=\"!last\">, </ng-container></ng-container\n ></b\n >\n </ng-template>\n </span>\n </p>\n </section>\n <div class=\"d-flex\">\n <button\n class=\"anna cancel-button\"\n (click)=\"cancelClicked()\"\n >\n Cancel\n </button>\n <button\n class=\"anna apply-button\"\n *ngIf=\"showValidate\"\n [disabled]=\"disableValidate\"\n (click)=\"validate()\"\n >\n Validate\n </button>\n <button\n class=\"anna apply-button\"\n *ngIf=\"!showValidate\"\n [disabled]=\"disableSave\"\n (click)=\"save()\"\n >\n Save\n </button>\n </div>\n </div>\n\n <ng-container>\n <section>\n <label class=\"title-labels mt-0\"\n >Preemptions\n <span class=\"grey-line\"></span>\n </label>\n\n <anna-core-non-editable-generic-table-lib\n class=\"spot-approval-edit-gt preemption-table\"\n [ngClass]=\"{ 'os-spots-table': isCreateOffer }\"\n [showSkeletonLoading]=\"showSkeletonLoaderInPreemptionTable\"\n [tableHeaders]=\"preemptionTableHeaders\"\n [tableData]=\"preemptedSpots\"\n [totalRowInfo]=\"totalRowInfoForPreemptionTable\"\n [fixNumberOfRowsForPopup]=\"true\"\n [clonedTableData]=\"preemptedSpots\"\n [gtGeneralConfig]=\"gtGeneralConfigForPreemptions\"\n [gtDimension]=\"gtDimension\"\n [clickableRow]=\"false\"\n (clickableDataClicked)=\"createOffersPreemptionTableRemoveActionClicked($event)\"\n >\n </anna-core-non-editable-generic-table-lib>\n <button\n *ngIf=\"isCreateOffer\"\n class=\"add-os-spots\"\n [disabled]=\"\n !unselectedGroupableOutstandingSpots || unselectedGroupableOutstandingSpots.length === 0\n \"\n (click)=\"addOtherOSSpots()\"\n >\n Add other O/S Spots\n </button>\n </section>\n\n <section>\n <anna-feature-offered-mg-edit-table\n [ngClass]=\"{ 'mt-40': isCreateOffer }\"\n [messageBoxData]=\"messageBoxData\"\n [title]=\"MGTableTitle\"\n [offeredMGsTableHeaders]=\"offeredMGsTableHeaders\"\n [showMakegoodTableSkeletonLoader]=\"showMakegoodTableSkeletonLoader\"\n [offeredMakegoods]=\"offeredMakegoods\"\n [offeredMakeGoodsForDisplay]=\"offeredMakeGoodsForDisplay\"\n [totalRowInfoForOfferedMakeGoods]=\"totalRowInfoForOfferedMakeGoods\"\n [resetFiltersAndSorting]=\"resetFiltersForOfferedTable\"\n [applyFiltersAndSorting]=\"applyFilteringAndSortingForOfferedSpotsTable\"\n (inputEdited)=\"editableInputEdited($event)\"\n (offeredMgActionClicked)=\"offeredMGTableActionClicked($event)\"\n (filtered)=\"filterAppliedToOfferedMGTable($event)\"\n (sotingApplied)=\"sortingAppliedToOfferedMGTable($event)\"\n (reArrangeAndCalculateTotalRow)=\"reArrangeRemovedSpotsAndCalculateTotalRow($event)\"\n (revenueClassEditedEmit)=\"revenueClassEditedFromGTTable($event)\"\n (timeSelectedInTableRow)=\"timeInputsValuesChangedInMGTable($event)\"\n >\n </anna-feature-offered-mg-edit-table>\n </section>\n <section>\n <anna-feature-other-spots-edit-table\n [tableHeaders]=\"spotsMeetingBizRulesTableHeaders\"\n [spots]=\"spotsMeetingBizRules\"\n [spotsForDisplay]=\"spotsMeetingBizRulesForDisplay\"\n [showTableSkeletonLoader]=\"showSkeletonLoaderInSpotsMeetingBizRulesTable\"\n [gtClass]=\"'spot-approval-available-list-table'\"\n [title]=\"'All available spots meeting Business Rules'\"\n [applyFiltersAndSorting]=\"applyFilteringAndSortingForSpotsMeetingBizRulesTable\"\n [revisedOnDate]=\"orderData?.revisedOn\"\n (spotsActionClicked)=\"spotsMeetingBizRulesActionClicked($event)\"\n (filterSortingApplied)=\"filterSortingAppliedToSpotsMeetingBizRulesTable($event)\"\n >\n </anna-feature-other-spots-edit-table>\n </section>\n <section>\n <label class=\"title-labels\">\n <span>Other Spots</span>\n <span class=\"grey-line\"></span>\n </label>\n <div\n class=\"dropdown-container-week\"\n [ngClass]=\"{ 'pointer-events-none': showSkeletonLoaderInOtherSpotsTable }\"\n >\n <anna-design-week-calendar\n *ngIf=\"weekcalendarConfig\"\n [config]=\"weekcalendarConfig\"\n class=\"edit-or-create-offer-week-calendar\"\n [selectWeekForDate]=\"selectWeekForDate\"\n [selectedFromDate]=\"fromDate\"\n [selectedEndDate]=\"toDate\"\n [timezone]=\"timezone\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n [noOfMonthsQuarterYearToEnableInPast]=\"noOfMonthsQuarterYearToEnableInPast\"\n [noOfMonthsQuarterYearToEnableInFuture]=\"noOfMonthsQuarterYearToEnableInFuture\"\n [unitToEnableForMinDate]=\"'days'\"\n [unitToEnableForMaxDate]=\"'days'\"\n (applyWeekCalendarChanges)=\"applyWeekSelection($event)\"\n ></anna-design-week-calendar>\n </div>\n <anna-feature-other-spots-edit-table\n class=\"other-spots-table-section\"\n [tableHeaders]=\"otherSpotsTableHeaders\"\n [spots]=\"otherSpots\"\n [gtClass]=\"'other-spot-approval-available-list-table'\"\n [applyFiltersAndSorting]=\"applyFilteringAndSortingForOtherSpotsTable\"\n [resetFiltersAndSorting]=\"resetFiltersForOtherSpotsTable\"\n [spotsForDisplay]=\"otherSpotsForDisplay\"\n [showTableSkeletonLoader]=\"showSkeletonLoaderInOtherSpotsTable\"\n (spotsActionClicked)=\"freeFlowSpotsActionClicked($event)\"\n (filterSortingApplied)=\"filterSortingAppliedToOtherSpotsTable($event)\"\n >\n </anna-feature-other-spots-edit-table>\n </section>\n <section>\n <label class=\"title-labels\">\n <span>Rotators</span>\n <span class=\"grey-line\"></span>\n </label>\n <div\n class=\"dropdown-container-week\"\n [ngClass]=\"{ 'pointer-events-none': showSkeletonLoaderInRotatorsTable }\"\n >\n <anna-design-week-calendar\n *ngIf=\"weekcalendarConfigForRotatorsTable\"\n [config]=\"weekcalendarConfigForRotatorsTable\"\n class=\"edit-or-create-offer-week-calendar\"\n [selectWeekForDate]=\"selectedDateForFetchingRotators\"\n [selectedFromDate]=\"fromDateForFetchingRotators\"\n [selectedEndDate]=\"toDateForFetchingRotators\"\n [timezone]=\"timezone\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n [noOfMonthsQuarterYearToEnableInPast]=\"noOfMonthsQuarterYearToEnableInPast\"\n [noOfMonthsQuarterYearToEnableInFuture]=\"noOfMonthsQuarterYearToEnableInFuture\"\n [unitToEnableForMinDate]=\"'days'\"\n [unitToEnableForMaxDate]=\"'days'\"\n (applyWeekCalendarChanges)=\"applyWeekSelectionForRotators($event)\"\n ></anna-design-week-calendar>\n </div>\n <anna-feature-other-spots-edit-table\n class=\"other-spots-table-section\"\n [tableHeaders]=\"rotatorsTableHeaders\"\n [spots]=\"rotators\"\n [gtClass]=\"'other-spot-approval-available-list-table rotators-table'\"\n [applyFiltersAndSorting]=\"applyFilteringAndSortingForRotatorsTable\"\n [resetFiltersAndSorting]=\"resetFiltersForRotatorsTable\"\n [spotsForDisplay]=\"rotatorsForDisplay\"\n [showTableSkeletonLoader]=\"showSkeletonLoaderInRotatorsTable\"\n (spotsActionClicked)=\"rotatorsActionClicked($event)\"\n (filterSortingApplied)=\"filterSortingAppliedToRotatorsTable($event)\"\n >\n </anna-feature-other-spots-edit-table>\n </section>\n </ng-container>\n </section>\n</ng-template>\n\n<ng-template #guidelines>\n <ul>\n <li>The maximum allowed number of MakeGoods that can be added: {{ bizRules?.MaxSpotsPerPremption }}</li>\n <li>The minimum allowed rating % of each MakeGood per preemption: {{ bizRules?.MinimumGrp }}</li>\n <li>\n Max spots allowed per OTO Program for the following durations\n <br />\n <span class=\"tooltip-grey-text\">\n >> 30 min <b>{{ bizRules?.MaxSpotsAllowedInOTO.PerHalfHour }}</b> | 30 min - 1 hour:\n <b>{{ bizRules?.MaxSpotsAllowedInOTO.HalfHourToOneHour }}</b> | 1 hour - 2 hours:\n <b>{{ bizRules?.MaxSpotsAllowedInOTO.OneHourToTwoHours }}</b> | 2 hours - 3 hours:\n <b>{{ bizRules?.MaxSpotsAllowedInOTO.TwoHoursToThreeHours }}</b> | 3+ hrs:\n <b>{{ bizRules?.MaxSpotsAllowedInOTO.ThreeHoursPlus }}</b>\n </span>\n </li>\n <li>\n Max spots allowed per Strip Program for the following durations\n <br />\n <span class=\"tooltip-grey-text\">\n >> 30 min: Daily: <b>{{ bizRules?.MaxSpotsAllowedInStripDaily.PerHalfHour }}</b\n >, Weekly: <b>{{ bizRules?.MaxSpotsAllowedInStripWeekly.PerHalfHour }}</b> | 30 min - 1 hour: Daily:\n <b>{{ bizRules?.MaxSpotsAllowedInStripDaily.HalfHourToOneHour }}</b\n >, Weekly: <b>{{ bizRules?.MaxSpotsAllowedInStripWeekly.HalfHourToOneHour }}</b> | 1 hour - 2 hours:\n Daily: <b>{{ bizRules?.MaxSpotsAllowedInStripDaily.OneHourToTwoHours }}</b\n >, Weekly: <b>{{ bizRules?.MaxSpotsAllowedInStripWeekly.OneHourToTwoHours }}</b> | 2+ hrs: Daily:\n <b>{{ bizRules?.MaxSpotsAllowedInStripDaily.TwoHoursPlus }}</b\n >, Weekly: <b>{{ bizRules?.MaxSpotsAllowedInStripWeekly.TwoHoursPlus }}</b>\n </span>\n </li>\n <li>Update the rating(/impressions) to adjust the rate of each spot.</li>\n <li>\n The priority of estimates used for providing offers<br />\n <ng-container *ngFor=\"let item of estimatePrioritiesForGuidelines\">\n {{ item }} {{ showImpressions ? \"IMPS\" : \"RTG\" }}<br />\n </ng-container>\n </li>\n </ul>\n</ng-template>\n\n<ng-template\n #confirmPoliticalRateviolationsAndSaveModal\n let-modal\n>\n <div class=\"modal-header p-24\">\n <h3 class=\"modal-title\">Confirmation to save offers</h3>\n </div>\n\n <div class=\"modal-body\">\n <span\n >There are offered rates that fall below the station's section rate. Please be aware that saving these\n offer(s) could potentially lead to political violations and rebates.\n </span>\n <br />\n <br />\n <span> Are you sure you want to go ahead and save these offer(s)?</span>\n <div class=\"popup-buttons-container\">\n <button\n class=\"anna cancel-button\"\n (click)=\"closeConfirmPoliticalRateviolationsAndSaveModal()\"\n >\n Cancel\n </button>\n <button\n class=\"anna apply-button\"\n (click)=\"saveOffers()\"\n >\n Save Offers\n </button>\n </div>\n </div>\n</ng-template>\n\n<anna-feature-political-rate-warning-popup\n *ngIf=\"openPoliticalRateViolationViewPopup\"\n [autoAssignablePriorityCode]=\"rowClickedForPoliticalRateViolation?.AutoAssignablePriorityCodeFromBE\"\n [data]=\"politicalViolationData\"\n (closed)=\"closePoliticalRateViolationViewModal()\"\n (autoAssignPriorityCodeForGivenLURViolation)=\"autoAssignPriorityCodeForGivenLURViolation()\"\n>\n</anna-feature-political-rate-warning-popup>\n\n<anna-feature-spot-details-popup\n #spotDetailsPopup\n *ngIf=\"openSpotDetailsPopup\"\n [stationId]=\"stationId\"\n [gtGeneralConfig]=\"gtGeneralConfig\"\n (closed)=\"openSpotDetailsPopup = false\"\n>\n</anna-feature-spot-details-popup>\n\n<anna-feature-add-os-spots-popup\n *ngIf=\"openAddOtherOSSpotsPopup\"\n [data]=\"unselectedGroupableOutstandingSpots\"\n (closed)=\"closeAddOtherOSSpotsPopup()\"\n (apply)=\"applyClickedAddOtherOSSpotsPopup($event)\"\n>\n</anna-feature-add-os-spots-popup>\n","import { Injectable } from \"@angular/core\";\nimport { IGtTableHeader } from \"@annalib/anna-core\";\nimport { isEqual, uniq } from \"lodash-es\";\n\nimport {\n IntelliFilterConstant,\n OfferedSpotStatus,\n PreemptionStatus,\n RevisionTableHeaderConstants,\n RevisionTableKeyConstants,\n} from \"../constants/spots-approval.constant\";\nimport { ESTIMATEPRIORITIES, IntelliFilter, ITotalRowRadioButtonData, SpotTypeCategoryFromBE, TotalRowActionColumnPossibleValues } from \"../models/anna-revisions-enums.model\";\nimport { AdditionalSpotInformation } from \"../models/anna-revisions-response.model\";\nimport { GenericSpotsApprovalService } from \"./generic-spots-approval.service\";\n\n@Injectable({\n providedIn: \"root\",\n})\nexport class SpotsApprovalService {\n preemptionStatusSet: Set<string>;\n offeredStatusSet: Set<string>;\n radioButtonLabelValueMap: any;\n filterTextKeyMap: any;\n creditedHeader: any;\n creditedData: any;\n formattedDate: string;\n formattedTime: string;\n selectedStationRevisionTime: string;\n public latestOfferedMgADUTabFilters: any;\n public latestOutstandingPETabFilters: any;\n public latestUserChangesTabFilters: any;\n ADUSummaryTableKeysAndRowTitleMap: any;\n preemptionMGSummaryTableKeysAndRowTitleMap: any;\n userDoneOrderChangesSummaryTableKeysAndRowTitleMap: any;\n revisionTypeList: string[];\n RevisionTypesTextMap: any;\n easyFiltersTypes = [\"orderRevisionStatus\", \"writeEnabledOrder\", \"revisionTypeForEasyFilters\", \"starredOrder\"];\n fromSpotsApprovalPageLink: boolean;\n revisionStatusNameAndAcronymMap: any;\n spotIdAndSelectedRadioActionAndCommentMap: {\n spotId: string;\n groupId: string | number;\n action: string;\n approveActionLocalComment: string;\n creditActionComment: string;\n rejectActionComment: string[];\n excludeFromFutureOffers: boolean;\n spotTypeCategory: \"CREDIT\" | \"PREEMPTION\" | \"UNRESOLVED\" | \"MAKEGOOD\" | \"ADU\" | \"CREDIT_ADU\" | \"BONUS\" | \"PREEMPTED\";\n }[];\n totalRowSpotTypeAndSelectedActionAndCommentMap: {\n spotTypeCategory: SpotTypeCategoryFromBE;\n selectedActionValue: string;\n approveActionComment: string;\n creditActionComment: string;\n rejectActionComment: string[];\n excludeFromFutureOffers: boolean;\n }[] = [];\n totalRowSelectedActionAndCommentsForFilteredColumns: {\n selectedActionValue: string;\n approveActionComment: string;\n creditActionComment: string;\n rejectActionComment: string[];\n excludeFromFutureOffers: boolean;\n }[] = [];\n\n // revisionStatusesthatNeedsLock: REVISIONSTATUSES[] = [\"Seller Pending\", \"O/S Spots\", \"Buyer Pending\", \"SM Pending\"];\n editDisabledNoRevisionFoundReasons: string[] = [\"Order Discrepancy\", \"Unconfirmed buyer revision\"];\n\n defaultEstimatePrioritiesData: ESTIMATEPRIORITIES[] = [\n \"RollingEstimate\",\n \"StationEstimate\",\n \"BookedRTG\",\n \"AverageRTG\",\n ];\n filterTextSpotTypeMap: any;\n static isRepOrder: boolean;\n\n constructor(private genericSpotsApprovalService: GenericSpotsApprovalService) {\n this.preemptionStatusSet = new Set([\n PreemptionStatus.MADEGOOD_PREEMPTION,\n PreemptionStatus.PREEMPTION,\n PreemptionStatus.OUTSTANDING_PREEMPTION,\n PreemptionStatus.BUYER_CREDIT_PREEMPTION,\n PreemptionStatus.CREDITED_PREEMPTION,\n PreemptionStatus.OUTSTANDING_PREEMPTION_CREDITED,\n ]);\n\n this.offeredStatusSet = new Set([\n OfferedSpotStatus.OFFERED_FOR_APPROVAL,\n OfferedSpotStatus.USER_OFFERED_FOR_APPROVAL,\n OfferedSpotStatus.AUTO_APPROVED_OFFERED_MAKEGOOD,\n OfferedSpotStatus.REJECTED_OFFERED_SPOTS,\n ]);\n\n this.radioButtonLabelValueMap = {\n Approve: \"approve\",\n Reject: \"resubmit\",\n \"Mark for Credit\": \"credit\",\n \"Reject Credit Request\": \"rejectCreditRequest\",\n \"No Action\": \"noAction\",\n \"Request for Credit\": \"credit\",\n };\n\n this.filterTextKeyMap = {\n MGs: \"offeredMGsAndADUs\",\n ADUs: \"offeredMGsAndADUs\",\n BONUS: \"offeredMGsAndADUs\",\n \"BADLY BEHAVED SPOTS\": \"badlyBehavedSpots\",\n \"BOOKED ADUs\": \"offeredMGsAndADUs\",\n \"CREDITS\": \"offeredMGsAndADUs\",\n \"O/S SPOTS\": \"outstandingSpots\",\n };\n\n this.filterTextSpotTypeMap = {\n MGs: \"MAKEGOOD\",\n ADUs: \"ADU\",\n \"BOOKED ADUs\": \"CREDIT_ADU\",\n \"CREDITS\": \"CREDIT\",\n \"BONUS\": \"BONUS\"\n };\n\n this.RevisionTypesTextMap = {\n USER: \"Seller User\",\n BUYER: \"Buyer\",\n ANNA: \"ANNA\",\n };\n\n this.revisionStatusNameAndAcronymMap = {\n \"Seller Pending\": \"ASA\",\n \"Seller Reconfirm\": \"ASR\",\n \"Buyer Pending\": \"ABA\",\n \"SM Pending\": \"ASMA\",\n \"Rev Generated\": \"RG\",\n \"Rev Discarded\": \"RD\",\n \"O/S Spots\": \"NRF\",\n \"O/S UD\": \"NRF\",\n };\n // this.revisionStatusNameAndAcronymMap = {\n // \"Awaiting Seller Approval\": \"ASA\",\n // \"Awaiting Seller Reconfirmation\": \"ASR\",\n // \"Awaiting Buyer Approval\": \"ABA\",\n // \"Awaiting Sales MGR Approval\": \"ASMA\",\n // \"Revision Generated\": \"RG\",\n // \"Revision Discarded\": \"RD\",\n // \"No Revision Found\": \"NRF\",\n // };\n }\n\n getAllRejectionReasons(): string[] {\n return [\n \"Incorrect Daypart\",\n \"Incorrect Program\",\n \"Incorrect Date Range\",\n \"Shortage of Impressions/Ratings\",\n \"Other (please specify)\",\n ];\n }\n\n getOngoingRevisionsIntelliFilters() {\n const commonFilters: IntelliFilter[] = [\n {\n text: IntelliFilterConstant.MGs,\n isActive: false,\n isDisabled: true,\n isShown: true,\n },\n {\n text: IntelliFilterConstant.ADUs,\n isActive: false,\n isDisabled: true,\n isShown: true,\n },\n {\n text: IntelliFilterConstant.BONUS,\n isActive: false,\n isDisabled: true,\n isShown: true,\n },\n {\n text: IntelliFilterConstant.BOOKED_ADUs,\n isActive: false,\n isDisabled: true,\n isShown: false,\n },\n {\n text: IntelliFilterConstant.CREDITS,\n isActive: false,\n isDisabled: true,\n isShown: false,\n },\n {\n text: IntelliFilterConstant.BADLY_BEHAVED_SPOTS,\n isActive: false,\n isDisabled: true,\n isShown: false,\n },\n {\n text: IntelliFilterConstant.OUTSTANDING_SPOTS,\n isActive: false,\n isDisabled: true,\n isShown: true,\n },\n {\n text: IntelliFilterConstant.BUYER_REJECTED,\n isActive: false,\n isDisabled: true,\n isShown: false,\n },\n ];\n\n return commonFilters;\n }\n\n getAllTableHeadersForAnnaRevision(\n showAUR: boolean,\n isBuyerApplication: boolean,\n userHasEditPrivilege: boolean,\n isCompletedRevision: boolean,\n ): IGtTableHeader[] {\n const tableHeaders: IGtTableHeader[] = [\n {\n headerInfo: [\n {\n name: \"OFFER ID | OFFER STATUS\",\n objectKey: \"offerId\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"SVG_ICON\",\n actionKey: \"offerIdWithStatusTagText\",\n showTooltipIcon: false,\n isSortRequired: [false],\n isFilterRequired: [false],\n },\n {\n name: \"\",\n objectKey: \"lastUpdatedOn\",\n typeOfHeaderData: \"\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n ],\n visible: true,\n width: \"230px\",\n },\n {\n headerInfo: [\n {\n name: \"SPOT TYPE\",\n objectKey: \"displaySpotType\",\n actionKey: \"spotTypeActionKey\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"SVG_ICON\",\n showTooltipIcon: true,\n isSortRequired: [false],\n isFilterRequired: [true],\n filter: \"CHECKBOX\",\n filterSortObjectKeys: [\"displaySpotType\"],\n },\n !isBuyerApplication && {\n name: \"\",\n objectKey: \"lastEditedOrAddedBy\",\n typeOfHeaderData: \"\",\n typeOfBodyData: \"HTML\",\n showTooltipIcon: false,\n },\n // {\n // name: \"\",\n // objectKey: \"spotId\",\n // typeOfHeaderData: \"STRING\",\n // typeOfBodyData: \"STRING\",\n // showTooltipIcon: false,\n // },\n // {\n // name: \"\",\n // objectKey: \"groupId\",\n // typeOfHeaderData: \"STRING\",\n // typeOfBodyData: \"STRING\",\n // showTooltipIcon: false,\n // },\n ],\n visible: true,\n // width: \"270px\",\n width: \"121px\",\n },\n {\n headerInfo: [\n {\n name: RevisionTableHeaderConstants.SELLER_LINE_HEADER,\n objectKey: \"sellerLine\",\n actionKey: \"sellerLineActionKey\",\n tooltipKey: \"sellerLineTooltipKey\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING___ICON_OR_TEXT_ACTION\",\n showTooltipIcon: false,\n },\n {\n name: RevisionTableHeaderConstants.BUYER_LINE_HEADER,\n objectKey: RevisionTableKeyConstants.BUYER_LINE_NUMBER_KEY,\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n ],\n visible: true,\n width: \"100px\",\n },\n {\n headerInfo: [\n {\n name: RevisionTableHeaderConstants.WEEK_HEADER,\n objectKey: RevisionTableKeyConstants.WEEK_START_DATE_KEY,\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n {\n name: \"DAY & TIME\",\n objectKey: RevisionTableKeyConstants.DAY_KEY,\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n ],\n visible: true,\n width: \"88px\",\n },\n {\n headerInfo: [\n {\n name: RevisionTableHeaderConstants.LENGTH_HEADER,\n objectKey: RevisionTableKeyConstants.LENGTH_KEY,\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n ],\n visible: true,\n width: \"60px\",\n },\n {\n headerInfo: [\n {\n name: RevisionTableHeaderConstants.BUYER_PROGRAM,\n objectKey: \"buyerProgramName\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n {\n name: RevisionTableHeaderConstants.INVENTORY_CODE_HEADER,\n objectKey: RevisionTableKeyConstants.INVENTORY_CODE_KEY,\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n ],\n visible: true,\n width: \"164px\",\n },\n {\n headerInfo: [\n {\n name: RevisionTableHeaderConstants.SELLER_PROGRAM,\n objectKey: \"sellerProgramName\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n ],\n visible: true,\n width: \"130px\",\n },\n {\n headerInfo: [\n {\n name: RevisionTableHeaderConstants.RATE_HEADER,\n objectKey: RevisionTableKeyConstants.RATE_KEY,\n actionKey: \"displayRateActionKey\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"SVG_ICON\",\n showTooltipIcon: false,\n },\n showAUR && {\n name: RevisionTableHeaderConstants.AU_RATE_HEADER,\n objectKey: RevisionTableKeyConstants.AUR_KEY,\n typeOfHeaderData: showAUR ? \"STRING\" : \"\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n ],\n visible: true,\n width: \"130px\",\n },\n {\n headerInfo: [\n {\n name: null,\n objectKey: RevisionTableKeyConstants.ORDERED_RATING_KEY,\n typeOfHeaderData: \"STRING\",\n actionKey: \"bookedRTGActionKey\",\n tooltipKey: \"bookedRTGTooltipKey\",\n typeOfBodyData: \"SVG_ICON\",\n showTooltipIcon: false,\n },\n ],\n visible: true,\n width: \"125px\",\n },\n {\n headerInfo: [\n {\n name: null,\n objectKey: \"firstTwoEstimatePrioritiesForRTGMetric\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n {\n name: null,\n objectKey: \"lastTwoEstimatePrioritiesForRTGMetric\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n ],\n visible: !isBuyerApplication,\n width: \"190px\",\n },\n {\n headerInfo: [\n {\n name: RevisionTableHeaderConstants.DAYPART_HEADER,\n objectKey: RevisionTableKeyConstants.DAYPART_KEY,\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING_WITH_TOOLTIP\",\n showTooltipIcon: false,\n actionKey: \"daypartActionKeyForIcon\",\n tooltipKey: \"daypartTooltipForSportsDP\",\n },\n !isBuyerApplication && {\n name: \"REV CLASS\",\n objectKey: RevisionTableKeyConstants.REVENUE_CLASS_KEY,\n typeOfHeaderData: isBuyerApplication ? \"\" : \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n ],\n visible: true,\n width: \"74px\",\n },\n {\n headerInfo: [\n {\n name: RevisionTableHeaderConstants.BIZ_RULE_HEADER,\n objectKey: RevisionTableKeyConstants.BIZ_RULE_KEY,\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: true,\n isSortRequired: [false],\n isFilterRequired: [true],\n filter: \"CHECKBOX\",\n filterSortObjectKeys: [RevisionTableKeyConstants.BIZ_RULE_KEY],\n },\n ],\n visible: true,\n width: \"112px\",\n },\n ];\n if (!isCompletedRevision) {\n tableHeaders.unshift({\n headerInfo: [\n {\n name: \"\",\n objectKey: \"unmappedBuyerLineWarningIcon\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"SVG_ICON\",\n actionKey: \"unmappedBuyerLineWarningIcon\",\n showTooltipIcon: false,\n isSortRequired: [false],\n isFilterRequired: [false],\n },\n ],\n visible: true,\n width: \"40px\",\n });\n }\n if (userHasEditPrivilege) {\n tableHeaders.push({\n headerInfo: [\n {\n name: RevisionTableHeaderConstants.ACTION_HEADER,\n objectKey: RevisionTableKeyConstants.ACTION_KEY,\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"RADIO\",\n showTooltipIcon: false,\n },\n ],\n visible: true,\n width: \"140px\",\n });\n }\n\n return tableHeaders;\n }\n\n returnActionableIconObject(): IGtTableHeader {\n return {\n headerInfo: [\n {\n name: \"\",\n objectKey: \"editUndoReofferOrCancelColumn\",\n actionKey: \"editUndoReofferOrCancelColumn\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"ICON_CELL\",\n showTooltipIcon: false,\n },\n ],\n visible: true,\n width: \"32px\",\n };\n }\n\n returnRTGObject(showAUR: boolean): IGtTableHeader {\n return {\n headerInfo: [\n {\n name: RevisionTableHeaderConstants.RATING_ORDERED_HEADER,\n objectKey: RevisionTableKeyConstants.ORDERED_RATING_KEY,\n typeOfHeaderData: \"STRING\",\n actionKey: \"bookedRTGActionKey\",\n tooltipKey: \"bookedRTGTooltipKey\",\n typeOfBodyData: \"SVG_ICON\",\n showTooltipIcon: false,\n // isSortRequired: [true],\n // isFilterRequired: [true],\n // filter: \"SLIDER\",\n // filterSortObjectKeys: [\"actualRatings\"],\n },\n ],\n visible: true,\n width: \"125px\",\n };\n }\n\n returnIMPSObject(showAUR: boolean): IGtTableHeader {\n return {\n headerInfo: [\n {\n name: RevisionTableHeaderConstants.IMPRESSIONS,\n objectKey: RevisionTableKeyConstants.ORDERED_IMPRESSION_KEY,\n typeOfHeaderData: \"STRING\",\n actionKey: \"bookedIMPSActionKey\",\n tooltipKey: \"bookedIMPSTooltipKey\",\n typeOfBodyData: \"SVG_ICON\",\n showTooltipIcon: false,\n // isSortRequired: [true],\n // isFilterRequired: [true],\n // filter: \"SLIDER\",\n // filterSortObjectKeys: [\"actualImpressions\"],\n },\n ],\n visible: true,\n width: \"120px\",\n };\n }\n\n returnTotalAmountAndGRP(): IGtTableHeader {\n return {\n headerInfo: [\n {\n name: \"AMOUNT\",\n objectKey: RevisionTableHeaderConstants.TOTAL_AMOUNT_KEY,\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: true,\n isSortRequired: [true, true],\n isFilterRequired: [true, true],\n filter: \"SLIDER\",\n filterSortObjectKeys: [\"totalAmount\", \"totalGrp\"],\n },\n {\n name: \"GRP\",\n objectKey: RevisionTableKeyConstants.TOTAL_GRP_KEY,\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n ],\n visible: true,\n width: \"125px\",\n };\n }\n\n returnTotalAmountAndIMPS(): IGtTableHeader {\n return {\n headerInfo: [\n {\n name: \"AMOUNT\",\n objectKey: RevisionTableHeaderConstants.TOTAL_AMOUNT_KEY,\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: true,\n isSortRequired: [true, true],\n isFilterRequired: [true, true],\n filter: \"SLIDER\",\n filterSortObjectKeys: [\"totalAmount\", \"totalImps\"],\n },\n {\n name: \"GI\",\n objectKey: RevisionTableKeyConstants.TOTAL_IMPS_KEY,\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n ],\n visible: true,\n width: \"125px\",\n };\n }\n\n returnEstimateRTGObject(estimatePrioritiesData: ESTIMATEPRIORITIES[]): IGtTableHeader {\n let updatedEstimatePrioritiesData = estimatePrioritiesData;\n if (!estimatePrioritiesData) {\n updatedEstimatePrioritiesData = this.defaultEstimatePrioritiesData;\n }\n return {\n headerInfo: [\n {\n name: `${this.genericSpotsApprovalService.estimatePriorityKeyColumnNameMapForRTGMetric[updatedEstimatePrioritiesData[0]]} | ${this.genericSpotsApprovalService.estimatePriorityKeyColumnNameMapForRTGMetric[\n updatedEstimatePrioritiesData[1]\n ]\n }`,\n objectKey: \"firstTwoEstimatePrioritiesForRTGMetric\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n {\n name: `${this.genericSpotsApprovalService.estimatePriorityKeyColumnNameMapForRTGMetric[updatedEstimatePrioritiesData[2]]} | ${this.genericSpotsApprovalService.estimatePriorityKeyColumnNameMapForRTGMetric[\n updatedEstimatePrioritiesData[3]\n ]\n }`,\n objectKey: \"lastTwoEstimatePrioritiesForRTGMetric\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n ],\n visible: true,\n width: \"190px\",\n };\n }\n\n returnEstimateIMPSObject(estimatePrioritiesData: ESTIMATEPRIORITIES[]): IGtTableHeader {\n let updatedEstimatePrioritiesData = estimatePrioritiesData;\n\n if (!estimatePrioritiesData) {\n updatedEstimatePrioritiesData = this.defaultEstimatePrioritiesData;\n }\n return {\n headerInfo: [\n {\n name: `${this.genericSpotsApprovalService.estimatePriorityKeyColumnNameMapForIMPSMetric[updatedEstimatePrioritiesData[0]]} | ${this.genericSpotsApprovalService.estimatePriorityKeyColumnNameMapForIMPSMetric[\n updatedEstimatePrioritiesData[1]\n ]\n }`,\n objectKey: \"firstTwoEstimatePrioritiesForIMPSMetric\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n {\n name: `${this.genericSpotsApprovalService.estimatePriorityKeyColumnNameMapForIMPSMetric[updatedEstimatePrioritiesData[2]]} | ${this.genericSpotsApprovalService.estimatePriorityKeyColumnNameMapForIMPSMetric[\n updatedEstimatePrioritiesData[3]\n ]\n }`,\n objectKey: \"lastTwoEstimatePrioritiesForIMPSMetric\",\n typeOfHeaderData: \"STRING\",\n typeOfBodyData: \"STRING\",\n showTooltipIcon: false,\n },\n ],\n visible: true,\n width: \"238px\",\n };\n }\n\n public static checkIfAnySpotOtherThanRejectedMGExists(data: any[]): boolean {\n const rejectedMakeGoodLength = data.filter((n: any) => n.displaySpotType === \"Rejected MG\").length;\n const rejectedADUsLength = data.filter((n: any) => n.displaySpotType === \"Rejected ADU\").length;\n const makeGoodSpotsAndOfferedADUsLength = data.filter(\n (n: any) => n.displaySpotType.includes(\"ADU\") || n.displaySpotType.includes(\"MG\"),\n ).length;\n\n return rejectedMakeGoodLength + rejectedADUsLength !== makeGoodSpotsAndOfferedADUsLength;\n }\n\n public static getRateRatingAndMessageForRejectedSpots(data: any[]): [string, number, number, number] {\n const rejectedMakeGoodLength: number = data.filter((n: any) => n.displaySpotType === \"Rejected MG\").length;\n const rejectedADUsLength: number = data.filter((n: any) => n.displaySpotType === \"Rejected ADU\").length;\n let [message, totalRate, totalRTG, totalIMPS] = [\"\", 0, 0, 0];\n\n if (rejectedMakeGoodLength > 0 && rejectedADUsLength > 0) {\n [totalRate, totalRTG, totalIMPS] = this.calculateRateAndRating(\n data,\n (spot: any) => spot.displaySpotType === \"Rejected MG\" || spot.displaySpotType === \"Rejected ADU\",\n );\n message = `Total for ${rejectedMakeGoodLength} rejected Makegoods and ${rejectedADUsLength} rejected ADUs`;\n } else if (rejectedMakeGoodLength > 0) {\n [totalRate, totalRTG, totalIMPS] = this.calculateRateAndRating(\n data,\n (spot: any) => spot.displaySpotType === \"Rejected MG\",\n );\n message = `Total for ${rejectedMakeGoodLength} rejected Makegoods`;\n } else if (rejectedADUsLength > 0) {\n [totalRate, totalRTG, totalIMPS] = this.calculateRateAndRating(\n data,\n (spot: any) => spot.displaySpotType === \"Rejected ADU\",\n );\n message = `Total for ${rejectedADUsLength} rejected ADUs`;\n } else {\n message = `Total for 0 Makegoods and 0 offered ADUs`;\n }\n return [message, totalRate, totalRTG, totalIMPS];\n }\n\n public static calculateRateAndRating(data: any[], logic: any) {\n let [totalRate, totalRTG, totalIMPS] = [0, 0, 0];\n data.forEach((spot: any) => {\n if (logic(spot)) {\n totalRate += spot.actualRate;\n totalRTG += spot.actualRatings;\n totalIMPS += spot.actualImpressions;\n }\n });\n return [totalRate, totalRTG, totalIMPS];\n }\n\n public static createTotalRowActionColumnData(data: any[]): [\n TotalRowActionColumnPossibleValues,\n boolean,\n ITotalRowRadioButtonData[],\n ] {\n let showRadioButtonsInActionColumn: boolean = false;\n let selectedAction: TotalRowActionColumnPossibleValues;\n let radioButtonsData: ITotalRowRadioButtonData[];\n\n const actions = uniq(data.map((n) => n.action));\n const rowsToConsider = (data.filter(n => n.enableAllowedActions))?.length > 0 ? data.filter(n => n.enableAllowedActions) :\n data.filter(n => n.RadioButtonConfig);\n const uniqueAllowedActionSetsInTable =\n rowsToConsider.map((n: AdditionalSpotInformation) => n.RadioButtonConfig?.map((m) => m.value));\n let tableContainsMultipleActions = false;\n for (let i = 0; i < uniqueAllowedActionSetsInTable.length; i++) {\n if (!isEqual(uniqueAllowedActionSetsInTable[0], uniqueAllowedActionSetsInTable[i])) {\n tableContainsMultipleActions = true;\n break;\n }\n }\n if (!tableContainsMultipleActions &&\n (data.filter((n: AdditionalSpotInformation) => n.spotTypeCategory !== \"CREDIT_ADU\" && n.spotTypeCategory !== \"ADU\").length === 0)\n ) {\n showRadioButtonsInActionColumn = true;\n selectedAction = actions.length !== 1 ? \"custom\" : actions[0];\n radioButtonsData = [\n { value: \"approve\", label: \"Approve All\", class: \"\", disabled: false, iconClass: [] },\n { value: \"resubmit\", label: \"Reject All\", class: \"\", disabled: false, iconClass: [] },\n { value: \"custom\", label: \"Custom\", class: \"\", disabled: true, iconClass: [] },\n ];\n const creditADUSpots = rowsToConsider.filter((n: AdditionalSpotInformation) => n.spotTypeCategory === \"CREDIT_ADU\")\n .map((n: AdditionalSpotInformation) => n.RadioButtonConfig?.map((m) => m.value));\n\n if (creditADUSpots.length > 0 && creditADUSpots[0].includes(\"credit\")) {\n radioButtonsData = [\n { value: \"credit\", label: \"Credit All\", class: \"\", disabled: false, iconClass: [] },\n { value: \"noAction\", label: \"No Action\", class: \"\", disabled: false, iconClass: [] },\n { value: \"custom\", label: \"Custom\", class: \"\", disabled: true, iconClass: [] },\n ];\n }\n\n if (selectedAction === \"approve\" && SpotsApprovalService.isRepOrder) {\n radioButtonsData.filter((n) => n.value === \"approve\")[0].iconClass.push(\"mdi mdi-comment-quote-outline\");\n if (this.checkIfTableContainsMultipleApproveComments(data) === null) {\n radioButtonsData.filter((n) => n.value === \"approve\")[0].iconClass[0] += \" disabled\";\n }\n } else if (selectedAction === \"credit\" && SpotsApprovalService.isRepOrder) {\n radioButtonsData.filter((n) => n.value === \"credit\")[0].iconClass.push(\"mdi mdi-comment-quote-outline\");\n if (this.checkIfTableContainsMultipleCreditComments(data) === null) {\n radioButtonsData.filter((n) => n.value === \"credit\")[0].iconClass[0] += \" disabled\";\n }\n } else if (selectedAction === \"resubmit\") {\n radioButtonsData.filter((n) => n.value === \"resubmit\")[0].iconClass[0] = \"mdi mdi-comment-quote-outline\";\n if (\n this.checkIfTableContainsMultipleRejectionComments(data) === null ||\n this.checkIfAllEnabledRowsHaveSameExcludedFromFutureOffersSelectionInTable(data) === null\n ) {\n radioButtonsData.filter((n) => n.value === \"resubmit\")[0].iconClass[0] += \" disabled\";\n }\n }\n }\n return [selectedAction, showRadioButtonsInActionColumn, radioButtonsData];\n }\n\n public static checkIfTableContainsMultipleApproveComments(data: any[]): string | null {\n const approveOfferComment = uniq(data.map((n) => n.approveActionLocalComment));\n // eslint-disable-next-line no-nested-ternary\n return approveOfferComment?.length === 0 ? \"\" : (approveOfferComment?.length === 1 ? approveOfferComment[0] : null);\n }\n\n public static checkIfTableContainsMultipleCreditComments(data: any[]): string | null {\n const creditOfferComment = uniq(data.map((n) => n.creditActionComment));\n // eslint-disable-next-line no-nested-ternary\n return creditOfferComment?.length === 0 ? \"\" : (creditOfferComment?.length === 1 ? creditOfferComment[0] : null);\n }\n\n public static checkIfTableContainsMultipleRejectionComments(data: any[]): string[] | null {\n const rejectActionComments: string[][] = data.map((n) => n.rejectActionComment);\n const sortedArray: string[][] = [];\n for (let i = 0; i < rejectActionComments.length; i++) {\n sortedArray.push(rejectActionComments[i].sort());\n }\n for (let i = 0; i < sortedArray.length; i++) {\n if (!isEqual(sortedArray[i], sortedArray[0])) {\n return null;\n }\n }\n return rejectActionComments[0];\n }\n\n public static checkIfAllEnabledRowsHaveSameExcludedFromFutureOffersSelectionInTable(data: any[]): boolean | null {\n const excludeFromFutureOffers = uniq(data.map((n) => n.excludeFromFutureOffers));\n return excludeFromFutureOffers?.length === 1 ? excludeFromFutureOffers[0] : null;\n }\n}","import { NgClass, NgFor, NgIf } from \"@angular/common\";\nimport {\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n} from \"@angular/core\";\nimport { FormsModule } from \"@angular/forms\";\nimport { AnnaCoreModule, AnnaGlobalConfigService, IGtGeneralConfig, IGtTableHeader } from \"@annalib/anna-core\";\nimport { GenericMessageBoxTheme, MessageBoxComponent, MessageBoxData } from \"@annalib/anna-design-components-lib\";\nimport { NgbModal, NgbModalOptions, NgbModalRef } from \"@ng-bootstrap/ng-bootstrap\";\nimport { cloneDeep } from \"lodash-es\";\n\nimport { AdditionalSpotInformation } from \"../models/anna-revisions-response.model\";\nimport { SpotsApprovalService } from \"../services/spots-approval.service\";\n\n@Component({\n selector: \"anna-feature-credit-confirmation-table-popup\",\n templateUrl: \"./credit-confirmation-table-popup.component.html\",\n styleUrls: [\"./credit-confirmation-table-popup.component.scss\"],\n imports: [AnnaCoreModule, NgClass, NgIf, NgFor, FormsModule, MessageBoxComponent],\n})\nexport class CreditConfirmationTablePopupComponent implements OnInit, OnChanges {\n @Input() creditedSpots: AdditionalSpotInformation[];\n @Input() orderMetric: \"CPM\" | \"CPP\";\n @Input() tableHeaders: IGtTableHeader[];\n @Output() submitClicked: EventEmitter<{ mfcRejectComments: string[]; excludeFutureOffers: boolean }> =\n new EventEmitter();\n // eslint-disable-next-line @angular-eslint/no-output-native\n @Output() cancel: EventEmitter<any> = new EventEmitter();\n @Output() userActed = new EventEmitter();\n\n showRejectionCommentSection: boolean = false;\n\n modalTitle: string = \"Confirm spots to credit\";\n showSkeletonLoading: boolean = false;\n\n clonedCreditedSpots: AdditionalSpotInformation[];\n gtDimension = { rowHeight: 44, headerHeight: 44, dataOnTopHeight: 172, marginFromBottom: 77 };\n gtGeneralConfig: IGtGeneralConfig;\n showExludePreemptionsFromFutureOffers = true;\n\n @ViewChild(\"creditTableModal\") private creditModal: TemplateRef<any>;\n public creditModalReference: NgbModalRef;\n offerRejectedReasonAndCommentPopupData: {\n reasons: { title: string; isSelected: boolean }[];\n comment: any;\n isDisabled: boolean;\n disableApply: boolean;\n excludeFutureOffers: boolean;\n disableCommentBox: boolean;\n commentBoxPlaceholder: string;\n };\n rejectionReasonHasSpecialCharacter: boolean;\n markForCreditMsgBox: MessageBoxData;\n\n constructor(\n private modalService: NgbModal,\n private annaGlobalConfig: AnnaGlobalConfigService,\n private cdRef: ChangeDetectorRef,\n private spotsApprovalService: SpotsApprovalService,\n ) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this.tableHeaders && this.tableHeaders.length > 0) {\n this.updateTableColumnWidth();\n }\n if (this.creditedSpots && this.creditedSpots.length > 0) {\n this.clonedCreditedSpots = cloneDeep(this.creditedSpots);\n this.intialiseOfferRejectionReasonAndCommentModal();\n this.showRejectionCommentSection = false;\n this.cdRef.detectChanges();\n }\n }\n\n ngOnInit(): void {\n this.setMessageData();\n this.gtGeneralConfig = { ...this.annaGlobalConfig.defaultGtGeneralConfig };\n this.gtGeneralConfig.component = \"DRR\";\n this.gtGeneralConfig.showAllColumnFilter = false;\n this.gtGeneralConfig.bufferSize = 100;\n }\n\n setMessageData() {\n // eslint-disable-next-line max-len\n const msg = `Please note: You can not undo these spots marked for credit.`;\n const iconClass = \"mdi mdi-information\";\n this.markForCreditMsgBox = new MessageBoxData(\n null,\n msg,\n iconClass,\n `${GenericMessageBoxTheme.informationBlue.messageBoxClass} sm mb-8`,\n );\n }\n\n intialiseOfferRejectionReasonAndCommentModal() {\n const rejectionReasons: {\n title: string;\n isSelected: boolean;\n }[] = [];\n\n const offerRjectionPossibleReasons = this.spotsApprovalService.getAllRejectionReasons();\n\n offerRjectionPossibleReasons.forEach((item) => {\n rejectionReasons.push({\n title: item,\n isSelected: false,\n });\n });\n this.offerRejectedReasonAndCommentPopupData = {\n reasons: rejectionReasons,\n comment: null,\n isDisabled: false,\n disableApply: false,\n excludeFutureOffers: false,\n disableCommentBox: false,\n commentBoxPlaceholder:\n \"Please provide any additional comments for offer rejection here (Max 200 characters)\",\n };\n this.disableEnableOfferRejectedReasonAndCommentPopupApplyButton();\n }\n\n disableEnableOfferRejectedReasonAndCommentPopupApplyButton() {\n const noReasonSelected =\n this.offerRejectedReasonAndCommentPopupData.reasons.filter((n: any) => n.isSelected).length === 0;\n const reasonWithMandatoryCommentSelected = this.offerRejectedReasonAndCommentPopupData.reasons.filter(\n (n: any) => n.title.includes(\"Other\"),\n )[0].isSelected;\n\n const commentNotPresent = this.isCommentEmpty();\n\n this.offerRejectedReasonAndCommentPopupData.disableApply =\n noReasonSelected ||\n (reasonWithMandatoryCommentSelected &&\n (commentNotPresent ||\n !this.isOfferRejectionReasonsChanged() ||\n this.rejectionReasonHasSpecialCharacter));\n }\n\n isCommentEmpty() {\n const trimmedComment = this.offerRejectedReasonAndCommentPopupData.comment\n ? this.offerRejectedReasonAndCommentPopupData.comment.trim()\n : null;\n\n const commentNotPresent = !trimmedComment || trimmedComment === \"\";\n return commentNotPresent;\n }\n\n isOfferRejectionReasonsChanged(): boolean {\n const hasComment = !this.isCommentEmpty();\n\n return hasComment || this.offerRejectedReasonAndCommentPopupData.excludeFutureOffers;\n }\n\n reasonTextChanged(event: any) {\n this.userActed.emit();\n this.rejectionReasonHasSpecialCharacter = !!/[`!@#$%^&*()_+\\-=[\\]{};':\"\\\\|,.<>/?~]/.test(event);\n this.disableEnableOfferRejectedReasonAndCommentPopupApplyButton();\n }\n\n changesMadeInCommentBox(e: any) {\n if (!/[a-zA-Z0-9 ]/.test(e.key)) {\n e.preventDefault();\n }\n }\n\n offerRejectionReasonCheckedOrUnchecked(index: number) {\n this.userActed.emit();\n if (!this.offerRejectedReasonAndCommentPopupData.isDisabled) {\n this.offerRejectedReasonAndCommentPopupData.reasons[index].isSelected =\n !this.offerRejectedReasonAndCommentPopupData.reasons[index].isSelected;\n this.disableEnableOfferRejectedReasonAndCommentPopupApplyButton();\n this.offerRejectedReasonAndCommentPopupData.disableCommentBox =\n this.offerRejectedReasonAndCommentPopupData.reasons.filter((n) => n.isSelected).length === 0;\n this.offerRejectedReasonAndCommentPopupData.commentBoxPlaceholder =\n this.offerRejectedReasonAndCommentPopupData.reasons.filter((n) => n.title.includes(\"Other\"))[0]\n ?.isSelected\n ? \"Please specify the reason for rejection (Max 200 characters)\"\n : \"Please provide any additional comments for offer rejection here (Max 200 characters)\";\n }\n }\n\n applyOfferRejectionReasonSelectedAndComment() {\n this.submitClicked.emit({\n mfcRejectComments: this.prepareCommentsArray(),\n excludeFutureOffers: this.offerRejectedReasonAndCommentPopupData.excludeFutureOffers,\n });\n\n this.closeModal();\n }\n\n prepareCommentsArray(): string[] {\n const trimmedComment = this.offerRejectedReasonAndCommentPopupData.comment\n ? this.offerRejectedReasonAndCommentPopupData.comment.trim()\n : null;\n\n const comments: string[] = this.offerRejectedReasonAndCommentPopupData.reasons\n .filter((n: any) => n.isSelected)\n .map((n: any) => n.title);\n if (!this.isCommentEmpty()) {\n comments.push(trimmedComment);\n }\n return comments;\n }\n\n excludeFutureOffers() {\n this.userActed.emit();\n this.offerRejectedReasonAndCommentPopupData.excludeFutureOffers =\n !this.offerRejectedReasonAndCommentPopupData.excludeFutureOffers;\n this.disableEnableOfferRejectedReasonAndCommentPopupApplyButton();\n }\n\n updateTableColumnWidth() {\n this.tableHeaders = cloneDeep(this.tableHeaders).filter((header) => header.headerInfo[0].name !== \"\");\n this.tableHeaders.forEach((header) => {\n header.headerInfo.forEach((item) => {\n if (item.tooltip) {\n item.tooltip = null;\n }\n });\n });\n this.tableHeaders[0].width = \"200px\";\n this.tableHeaders[1].width = \"180px\";\n this.tableHeaders[8].width = this.orderMetric === \"CPP\" ? \"90px\" : \"120px\";\n this.tableHeaders[this.tableHeaders.length - 1].width = \"85px\";\n }\n\n genericCreditTableRadioButtonSelected(event: any) {\n // event.data.action = event.action;\n // if (event.action === \"reject\") {\n // event.data.creditActionComment = null;\n // } else if (event.action === \"credit\") {\n // const previousComment = this.clonedCreditedSpots.filter((spot) => spot.spotId === event.data.spotId)[0]\n // .creditActionComment;\n // event.data.creditActionComment = previousComment;\n // }\n event.data.action = event.action;\n }\n\n goToNextSectionAddingRejectionComment() {\n this.showRejectionCommentSection = true;\n }\n\n backButtonClicked() {\n this.showRejectionCommentSection = false;\n }\n\n closeModal() {\n this.cancel.emit();\n this.creditModalReference.close();\n }\n\n openModal() {\n const ngbModalOptions: NgbModalOptions = {\n windowClass: \"credit-table-popup\",\n centered: true,\n size: \"lg\",\n };\n\n this.creditModalReference = this.modalService.open(this.creditModal, ngbModalOptions);\n }\n}\n","<ng-template\n #creditTableModal\n let-modal\n>\n <section *ngIf=\"!showRejectionCommentSection\">\n <div class=\"modal-header modal-table-body\">\n <h3 class=\"modal-title\">{{ modalTitle }}</h3>\n </div>\n\n <div class=\"generic-table-container\">\n <anna-design-message-box [messageBoxData]=\"markForCreditMsgBox\"></anna-design-message-box>\n\n <anna-core-non-editable-generic-table-lib\n class=\"credit-popup-generic-table\"\n [showSkeletonLoading]=\"showSkeletonLoading\"\n [tdsHaveRowSpan]=\"false\"\n [hideSomeTds]=\"false\"\n [tableHeaders]=\"tableHeaders\"\n [tableData]=\"creditedSpots\"\n [clonedTableData]=\"clonedCreditedSpots\"\n [tableBorderBottomClassRequired]=\"false\"\n [gtGeneralConfig]=\"gtGeneralConfig\"\n [gtDimension]=\"gtDimension\"\n [fixNumberOfRowsForPopup]=\"true\"\n (radioButtonSelected)=\"genericCreditTableRadioButtonSelected($event)\"\n >\n </anna-core-non-editable-generic-table-lib>\n </div>\n <div class=\"flex-container\">\n <button (click)=\"closeModal()\">Cancel</button>\n <button (click)=\"goToNextSectionAddingRejectionComment()\">Submit</button>\n </div>\n </section>\n\n <section *ngIf=\"showRejectionCommentSection\">\n <div class=\"modal-header\">\n <h3 class=\"modal-title\">Reject Offer Comment</h3>\n </div>\n <div class=\"modal-body offer-rejection-reasoning-modal\">\n <p class=\"mb-10\">Please select reason for rejection:</p>\n <ul>\n <label\n *ngFor=\"let reason of offerRejectedReasonAndCommentPopupData.reasons; let i = index\"\n (click)=\"offerRejectionReasonCheckedOrUnchecked(i)\"\n [ngClass]=\"{ disabled: offerRejectedReasonAndCommentPopupData?.isDisabled }\"\n >\n <i\n class=\"mi mdi-check-box\"\n *ngIf=\"reason.isSelected\"\n ></i>\n <i\n class=\"mi mdi-check-box-outline-blank\"\n *ngIf=\"!reason.isSelected\"\n ></i>\n <span>{{ reason.title }}</span>\n </label>\n </ul>\n <textarea\n [(ngModel)]=\"offerRejectedReasonAndCommentPopupData.comment\"\n spellcheck=\"false\"\n id=\"offerRejectionCommentInput\"\n [disabled]=\"offerRejectedReasonAndCommentPopupData.disableCommentBox\"\n (ngModelChange)=\"reasonTextChanged($event)\"\n (keydown)=\"changesMadeInCommentBox($event)\"\n (keyup)=\"disableEnableOfferRejectedReasonAndCommentPopupApplyButton()\"\n placeholder=\"{{\n offerRejectedReasonAndCommentPopupData.isDisabled\n ? ''\n : offerRejectedReasonAndCommentPopupData.commentBoxPlaceholder\n }}\"\n maxlength=\"200\"\n ></textarea>\n <p\n class=\"text-danger\"\n *ngIf=\"rejectionReasonHasSpecialCharacter\"\n >\n Special Character not allowed\n </p>\n <hr />\n <ng-container *ngIf=\"showExludePreemptionsFromFutureOffers\">\n <p *ngIf=\"!offerRejectedReasonAndCommentPopupData.isDisabled\">\n You can choose to exclude the preemption(s) of this offer set from further attempts to find\n MakeGoods. In this case, you will have to manually create the MakeGoods.\n </p>\n <label\n class=\"mt-8\"\n (click)=\"excludeFutureOffers()\"\n [ngClass]=\"{ disabled: offerRejectedReasonAndCommentPopupData?.disableCommentBox }\"\n >\n <i\n class=\"mi mdi-check-box\"\n *ngIf=\"offerRejectedReasonAndCommentPopupData.excludeFutureOffers\"\n ></i>\n <i\n class=\"mi mdi-check-box-outline-blank\"\n *ngIf=\"!offerRejectedReasonAndCommentPopupData.excludeFutureOffers\"\n ></i>\n <span>Exclude the preemption(s) of this offer set from future attempts</span>\n </label>\n </ng-container>\n\n <ng-container *ngIf=\"!offerRejectedReasonAndCommentPopupData.isDisabled\">\n <p>\n Please note that the offer will not be marked as rejected if you do not select the reason for\n rejection.\n </p>\n <div class=\"button-container-modal rejection\">\n <button\n class=\"anna cancel-button\"\n (click)=\"backButtonClicked()\"\n >\n Back\n </button>\n <button\n class=\"anna apply-button\"\n (click)=\"applyOfferRejectionReasonSelectedAndComment()\"\n [disabled]=\"offerRejectedReasonAndCommentPopupData.disableApply\"\n >\n OK\n </button>\n </div>\n </ng-container>\n </div>\n </section>\n</ng-template>\n","import { GenericSpotsApprovalService } from \"../services/generic-spots-approval.service\";\nimport { SpotsApprovalService } from \"../services/spots-approval.service\";\nimport { ITotalRowRadioButtonData, TotalRowActionColumnPossibleValues } from \"./anna-revisions-enums.model\";\nimport { AdditionalSpotInformation } from \"./anna-revisions-response.model\";\n\nexport interface TotalRowData {\n totalRTG: number;\n totalIMPS: number;\n totalRateForDisplay: string;\n message: string;\n radioButtonsData?: ITotalRowRadioButtonData[];\n showRadioButtonsInActionColumn?: boolean;\n selectedAction?: TotalRowActionColumnPossibleValues;\n totalAmountForDisplay?: string;\n totalAmountGrpForDisplay?: string;\n totalAmountImpsForDisplay?: string;\n}\n\nexport class TotalRow {\n totalRow: TotalRowData;\n constructor(data: AdditionalSpotInformation[], state: string, selectedFilter: string) {\n let updatedSelectedFilter = selectedFilter;\n\n if (!selectedFilter) {\n updatedSelectedFilter = \"\";\n }\n\n switch (`${state}_${updatedSelectedFilter.toUpperCase()}`) {\n case \"Seller Pending_\":\n case \"Seller Reconfirm_\":\n case \"Buyer Pending_\":\n case \"SM Pending_\":\n case \"Rev Discarded_\":\n case \"Rev Generated_\":\n case \"Review Buyer Request_\":\n case \"O/S Spots_\":\n this.totalRow = new TotalRowWithFilteredColumns(data, selectedFilter);\n break;\n case \"Seller Pending_MGS\":\n case \"Seller Reconfirm_MGS\":\n this.totalRow = new TotalRowForASAAndASRMGs(data);\n break;\n case \"Buyer Pending_MGS\":\n case \"Rev Discarded_MGS\":\n case \"Rev Generated_MGS\":\n case \"SM Pending_MGS\":\n this.totalRow = new TotalRowForABAASMARGRDMGs(data);\n break;\n case \"Seller Pending_ADUS\":\n case \"Seller Reconfirm_ADUS\":\n this.totalRow = new TotalRowForASAAndASRADUs(data);\n break;\n case \"Buyer Pending_ADUS\":\n case \"Rev Discarded_ADUS\":\n case \"Rev Generated_ADUS\":\n case \"SM Pending_ADUS\":\n this.totalRow = new TotalRowForABAASMARGRDADUs(data);\n break;\n case \"Seller Pending_BONUS\":\n case \"Seller Reconfirm_BONUS\":\n this.totalRow = new TotalRowForASAAndASRBonusSpots(data);\n break;\n case \"Buyer Pending_BONUS\":\n case \"Rev Discarded_BONUS\":\n case \"Rev Generated_BONUS\":\n case \"SM Pending_BONUS\":\n this.totalRow = new TotalRowForABAASMARGRDBonusSpots(data);\n break;\n case \"Seller Pending_BOOKED ADUS\":\n case \"Seller Reconfirm_BOOKED ADUS\":\n this.totalRow = new TotalRowForASAAndASRBookedADUs(data);\n break;\n case \"Buyer Pending_BOOKED ADUS\":\n case \"Rev Discarded_BOOKED ADUS\":\n case \"Rev Generated_BOOKED ADUS\":\n case \"SM Pending_BOOKED ADUS\":\n this.totalRow = new TotalRowForABAASMARGRDBookedADUs(data);\n break;\n case \"Seller Pending_CREDITS\":\n case \"Seller Reconfirm_CREDITS\":\n case \"Buyer Pending_CREDITS\":\n case \"SM Pending_CREDITS\":\n case \"Rev Discarded_CREDITS\":\n case \"Rev Generated_CREDITS\":\n case \"Review Buyer Request_CREDITS\":\n this.totalRow = new TotalForCreditSpots(data);\n break;\n case \"Seller Pending_O/S SPOTS\":\n case \"Seller Reconfirm_O/S SPOTS\":\n case \"Buyer Pending_O/S SPOTS\":\n case \"SM Pending_O/S SPOTS\":\n case \"Rev Discarded_O/S SPOTS\":\n case \"Rev Generated_O/S SPOTS\":\n case \"Review Buyer Request_O/S SPOTS\":\n case \"O/S Spots_O/S SPOTS\":\n this.totalRow = new TotalRowForOSSpots(data);\n break;\n case \"Seller Pending_BADLY BEHAVED SPOTS\":\n case \"Seller Reconfirm_BADLY BEHAVED SPOTS\":\n case \"Buyer Pending_BADLY BEHAVED SPOTS\":\n case \"SM Pending_BADLY BEHAVED SPOTS\":\n case \"Rev Discarded_BADLY BEHAVED SPOTS\":\n case \"Rev Generated_BADLY BEHAVED SPOTS\":\n case \"Review Buyer Request_BADLY BEHAVED SPOTS\":\n this.totalRow = new TotalForBadlyBehavedSpots(data);\n break;\n // no default\n }\n\n if (updatedSelectedFilter === \"BUYER REJECTED\") {\n this.totalRow = new TotalRowWForBuyerRejectedFilteredData(data);\n }\n }\n}\n\nexport class TotalRowWForBuyerRejectedFilteredData {\n totalRTG: number = 0;\n totalIMPS: number = 0;\n totalRateForDisplay: string;\n message: string;\n constructor(data: AdditionalSpotInformation[]) {\n let totalspotsCount: number = 0;\n let totalRate: number = 0;\n data.forEach((row: AdditionalSpotInformation) => {\n totalspotsCount += 1;\n totalRate += row.actualRate;\n this.totalRTG += row.actualRatings;\n this.totalIMPS += row.actualImpressions;\n });\n\n this.message = `Total for ${totalspotsCount} Buyer rejected spots`;\n this.totalRateForDisplay =\n (totalRate < 0 ? \"-$\" : \"$\") +\n GenericSpotsApprovalService.GetRoundedValueWithUnitsWithMathRound(Math.abs(totalRate));\n }\n}\n\nexport class TotalRowForASAAndASRMGs {\n totalRTG: number = 0;\n totalIMPS: number = 0;\n totalRateForDisplay: string;\n message: string;\n constructor(data: AdditionalSpotInformation[]) {\n let totalMakeGoodRowCount: number = 0;\n\n let totalRate: number = 0;\n data.forEach((row: AdditionalSpotInformation) => {\n if (\n row.displaySpotType === \"Offered MG\" ||\n row.displaySpotType === \"Offered MG: Auto-approved\" ||\n row.displaySpotType === \"Added MG\"\n ) {\n totalMakeGoodRowCount += 1;\n totalRate += row.actualRate;\n this.totalRTG += row.actualRatings;\n this.totalIMPS += row.actualImpressions;\n }\n });\n this.totalRateForDisplay = `$${GenericSpotsApprovalService.GetRoundedValueWithoutUnitsWithMathRound(totalRate)}`;\n this.message = `Total for ${totalMakeGoodRowCount} Makegoods`;\n }\n}\n\nexport class TotalRowForABAASMARGRDMGs {\n totalRTG: number = 0;\n totalIMPS: number = 0;\n totalRateForDisplay: string;\n message: string;\n constructor(data: any) {\n let totalMGRowCount: number = 0;\n let totalRate: number = 0;\n\n if (!SpotsApprovalService.checkIfAnySpotOtherThanRejectedMGExists(data)) {\n [this.message, totalRate, this.totalRTG, this.totalIMPS] =\n SpotsApprovalService.getRateRatingAndMessageForRejectedSpots(data);\n } else {\n data.forEach((row: AdditionalSpotInformation) => {\n if (\n row.action !== \"credit\" &&\n row.action !== \"resubmit\" &&\n (row.displaySpotType === \"Offered MG\" ||\n row.displaySpotType === \"Offered MG: Auto-approved\" ||\n row.displaySpotType === \"Added MG\")\n ) {\n totalMGRowCount += 1;\n totalRate += row.actualRate;\n this.totalRTG += row.actualRatings;\n this.totalIMPS += row.actualImpressions;\n }\n });\n\n this.message = `Total for ${totalMGRowCount} Makegoods`;\n }\n this.totalRateForDisplay = `$${GenericSpotsApprovalService.GetRoundedValueWithoutUnitsWithMathRound(\n totalRate,\n )}`;\n }\n}\n\nexport class TotalRowForASAAndASRADUs {\n totalRTG: number = 0;\n totalIMPS: number = 0;\n totalRateForDisplay: string;\n message: string;\n radioButtonsData: ITotalRowRadioButtonData[];\n showRadioButtonsInActionColumn: boolean;\n selectedAction: TotalRowActionColumnPossibleValues;\n\n constructor(data: AdditionalSpotInformation[]) {\n let totalOfferedAdusRowCount: number = 0;\n\n let totalRate: number = 0;\n\n [this.selectedAction, this.showRadioButtonsInActionColumn, this.radioButtonsData] =\n SpotsApprovalService.createTotalRowActionColumnData(data);\n\n data.forEach((row: AdditionalSpotInformation) => {\n if (\n row.displaySpotType === \"Offered ADU\" ||\n row.displaySpotType === \"Offered ADU: Auto-approved\" ||\n row.displaySpotType === \"User ADU\" ||\n row.displaySpotType === \"Created ADU\"\n ) {\n totalOfferedAdusRowCount += 1;\n totalRate += row.actualRate;\n this.totalRTG += row.actualRatings;\n this.totalIMPS += row.actualImpressions;\n }\n });\n this.totalRateForDisplay = `$${GenericSpotsApprovalService.GetRoundedValueWithoutUnitsWithMathRound(totalRate)}`;\n this.message = `Total for ${totalOfferedAdusRowCount} ADUs`;\n }\n}\n\nexport class TotalRowForABAASMARGRDADUs {\n totalRTG: number = 0;\n totalIMPS: number = 0;\n totalRateForDisplay: string;\n message: string;\n radioButtonsData: ITotalRowRadioButtonData[];\n showRadioButtonsInActionColumn: boolean;\n selectedAction: TotalRowActionColumnPossibleValues;\n\n constructor(data: any) {\n let totalOfferedAdusRowCount: number = 0;\n let totalRate: number = 0;\n\n if (!SpotsApprovalService.checkIfAnySpotOtherThanRejectedMGExists(data)) {\n [this.message, totalRate, this.totalRTG, this.totalIMPS] =\n SpotsApprovalService.getRateRatingAndMessageForRejectedSpots(data);\n } else {\n data.forEach((row: AdditionalSpotInformation) => {\n if (\n row.action !== \"credit\" &&\n row.action !== \"resubmit\" &&\n (row.displaySpotType === \"Offered ADU\" ||\n row.displaySpotType === \"Offered ADU: Auto-approved\" ||\n row.displaySpotType === \"User ADU\" ||\n row.displaySpotType === \"Created ADU\")\n ) {\n totalOfferedAdusRowCount += 1;\n totalRate += row.actualRate;\n this.totalRTG += row.actualRatings;\n this.totalIMPS += row.actualImpressions;\n }\n });\n }\n\n [this.selectedAction, this.showRadioButtonsInActionColumn, this.radioButtonsData] =\n SpotsApprovalService.createTotalRowActionColumnData(data);\n\n this.message = `Total for ${totalOfferedAdusRowCount} ADUs`;\n this.totalRateForDisplay = `$${GenericSpotsApprovalService.GetRoundedValueWithoutUnitsWithMathRound(totalRate)}`;\n }\n}\n\nexport class TotalRowForASAAndASRBonusSpots {\n totalRTG: number = 0;\n totalIMPS: number = 0;\n totalRateForDisplay: string;\n message: string;\n\n constructor(data: AdditionalSpotInformation[]) {\n let totalRowCount: number = 0;\n let totalRate: number = 0;\n\n data.forEach((row: AdditionalSpotInformation) => {\n if (row.spotTypeCategory === \"BONUS\") {\n totalRowCount += 1;\n totalRate += row.actualRate;\n this.totalRTG += row.actualRatings;\n this.totalIMPS += row.actualImpressions;\n }\n });\n this.totalRateForDisplay = `$${GenericSpotsApprovalService.GetRoundedValueWithoutUnitsWithMathRound(totalRate)}`;\n this.message = `Total for ${totalRowCount} Bonus spots`;\n }\n}\n\nexport class TotalRowForABAASMARGRDBonusSpots {\n totalRTG: number = 0;\n totalIMPS: number = 0;\n totalRateForDisplay: string;\n message: string;\n\n constructor(data: any) {\n let totalRowCount: number = 0;\n let totalRate: number = 0;\n\n if (!SpotsApprovalService.checkIfAnySpotOtherThanRejectedMGExists(data)) {\n [this.message, totalRate, this.totalRTG, this.totalIMPS] =\n SpotsApprovalService.getRateRatingAndMessageForRejectedSpots(data);\n } else {\n data.forEach((row: AdditionalSpotInformation) => {\n if (row.action !== \"credit\" && row.action !== \"resubmit\" && row.spotTypeCategory === \"BONUS\") {\n totalRowCount += 1;\n totalRate += row.actualRate;\n this.totalRTG += row.actualRatings;\n this.totalIMPS += row.actualImpressions;\n }\n });\n }\n this.message = `Total for ${totalRowCount} Bonus spots`;\n this.totalRateForDisplay = `$${GenericSpotsApprovalService.GetRoundedValueWithoutUnitsWithMathRound(totalRate)}`;\n }\n}\n\nexport class TotalRowForASAAndASRBookedADUs {\n totalRTG: number = 0;\n totalIMPS: number = 0;\n totalRateForDisplay: string;\n message: string;\n radioButtonsData: ITotalRowRadioButtonData[];\n showRadioButtonsInActionColumn: boolean;\n selectedAction: TotalRowActionColumnPossibleValues;\n\n constructor(data: AdditionalSpotInformation[]) {\n let totalBookedADUs: number = 0;\n\n let totalRate: number = 0;\n data.forEach((row: AdditionalSpotInformation) => {\n if (row.displaySpotType.includes(\"Booked ADU\")) {\n totalBookedADUs += 1;\n totalRate += row.actualRate;\n this.totalRTG += row.actualRatings;\n this.totalIMPS += row.actualImpressions;\n }\n });\n [this.selectedAction, this.showRadioButtonsInActionColumn, this.radioButtonsData] =\n SpotsApprovalService.createTotalRowActionColumnData(data);\n\n this.totalRateForDisplay = `$${GenericSpotsApprovalService.GetRoundedValueWithoutUnitsWithMathRound(totalRate)}`;\n this.message = `Total for ${totalBookedADUs} Booked ADUs`;\n }\n}\n\nexport class TotalRowForABAASMARGRDBookedADUs {\n totalRTG: number = 0;\n totalIMPS: number = 0;\n totalRateForDisplay: string;\n message: string;\n radioButtonsData: ITotalRowRadioButtonData[];\n showRadioButtonsInActionColumn: boolean;\n selectedAction: TotalRowActionColumnPossibleValues;\n\n constructor(data: any) {\n let totalBookedADUs: number = 0;\n let totalRate: number = 0;\n\n if (!SpotsApprovalService.checkIfAnySpotOtherThanRejectedMGExists(data)) {\n [this.message, totalRate, this.totalRTG, this.totalIMPS] =\n SpotsApprovalService.getRateRatingAndMessageForRejectedSpots(data);\n } else {\n data.forEach((row: AdditionalSpotInformation) => {\n if (row.displaySpotType.includes(\"Booked ADU\") && row.action !== \"noAction\") {\n totalBookedADUs += 1;\n totalRate += row.actualRate;\n this.totalRTG += row.actualRatings;\n this.totalIMPS += row.actualImpressions;\n }\n });\n }\n [this.selectedAction, this.showRadioButtonsInActionColumn, this.radioButtonsData] =\n SpotsApprovalService.createTotalRowActionColumnData(data);\n\n this.message = `Total for ${totalBookedADUs} Booked ADUs`;\n this.totalRateForDisplay = `$${GenericSpotsApprovalService.GetRoundedValueWithoutUnitsWithMathRound(totalRate)}`;\n }\n}\n\n// Total of x outstanding pe (include all marked for credit or marked for MG)\nexport class TotalRowForOSSpots {\n totalRTG: number = 0;\n totalIMPS: number = 0;\n totalRateForDisplay: string;\n message: string;\n constructor(data: any) {\n let totalOSSpotsRowCount = 0;\n let totalRate = 0;\n let totalAUR = 0;\n data.forEach((row: AdditionalSpotInformation) => {\n if (row.displaySpotType.includes(\"Outstanding PE\")) {\n totalOSSpotsRowCount += 1;\n totalRate += row.actualRate;\n this.totalRTG += row.actualRatings;\n this.totalIMPS += row.actualImpressions;\n } else if (row.displaySpotType.includes(\"Unresolved\")) {\n totalOSSpotsRowCount += 1;\n totalRate -= row.actualRate;\n this.totalRTG -= row.actualRatings;\n this.totalIMPS -= row.actualImpressions;\n totalAUR = row.weeklyAUR != null ? totalAUR - row.weeklyAUR : totalAUR;\n }\n });\n this.totalRateForDisplay = `$${GenericSpotsApprovalService.GetRoundedValueWithoutUnitsWithMathRound(totalRate)}`;\n this.message = `Total for ${totalOSSpotsRowCount} OS spots (OS PE - Unresolved)`;\n }\n}\n\nexport class TotalForCreditSpots {\n totalRTG: number = 0;\n totalIMPS: number = 0;\n totalRateForDisplay: string;\n message: string;\n constructor(data: any) {\n let totalSpotsCount = 0;\n let totalRate = 0;\n let totalAUR = 0;\n data.forEach((row: AdditionalSpotInformation) => {\n if (row.spotTypeCategory === \"CREDIT\") {\n totalSpotsCount += 1;\n totalRate += row.actualRate;\n this.totalRTG += row.actualRatings;\n this.totalIMPS += row.actualImpressions;\n totalAUR = row.weeklyAUR != null ? totalAUR + row.weeklyAUR : totalAUR;\n }\n });\n this.totalRateForDisplay = `$${GenericSpotsApprovalService.GetRoundedValueWithoutUnitsWithMathRound(totalRate)}`;\n this.message = `Total for ${totalSpotsCount} spots marked for credit`;\n }\n}\n\nexport class TotalForBadlyBehavedSpots {\n totalRTG: number = 0;\n totalIMPS: number = 0;\n totalRateForDisplay: string;\n message: string;\n constructor(data: any) {\n let totalBBSGroupsCount = 0;\n let totalRate = 0;\n data.forEach((row: AdditionalSpotInformation) => {\n if (row.spotTypeCategory === \"PREEMPTION\") {\n totalBBSGroupsCount += 1;\n totalRate += row.actualRate;\n this.totalRTG += row.actualRatings;\n this.totalIMPS += row.actualImpressions;\n } else if (row.spotTypeCategory === \"MAKEGOOD\" || row.spotTypeCategory === \"CREDIT\") {\n totalRate -= row.actualRate;\n this.totalRTG -= row.actualRatings;\n this.totalIMPS -= row.actualImpressions;\n }\n });\n this.totalRateForDisplay = `$${GenericSpotsApprovalService.GetRoundedValueWithoutUnitsWithMathRound(totalRate)}`;\n this.message = `Total for ${totalBBSGroupsCount} replacements for badly behaved spots`;\n }\n}\n\nexport class TotalRowWithFilteredColumns {\n totalRTG: number = 0;\n totalIMPS: number = 0;\n totalRateForDisplay: string;\n message: string;\n radioButtonsData: ITotalRowRadioButtonData[];\n showRadioButtonsInActionColumn: boolean;\n selectedAction: TotalRowActionColumnPossibleValues;\n\n constructor(data: AdditionalSpotInformation[], filter: any) {\n let totalspotsCount: number = 0;\n let totalRate: number = 0;\n\n data.forEach((row: AdditionalSpotInformation) => {\n totalspotsCount += 1;\n if (row.displaySpotType === \"User Credited\" || row.displaySpotType === \"User Unresolved\") {\n totalRate -= row.actualRate;\n this.totalRTG -= row.actualRatings;\n this.totalIMPS -= row.actualImpressions;\n } else {\n totalRate += row.actualRate;\n this.totalRTG += row.actualRatings;\n this.totalIMPS += row.actualImpressions;\n }\n });\n\n [this.selectedAction, this.showRadioButtonsInActionColumn, this.radioButtonsData] =\n SpotsApprovalService.createTotalRowActionColumnData(data);\n\n this.message = `Total for ${totalspotsCount} spot types filtered`;\n this.totalRateForDisplay =\n (totalRate < 0 ? \"-$\" : \"$\") +\n GenericSpotsApprovalService.GetRoundedValueWithoutUnitsWithMathRound(Math.abs(totalRate));\n }\n}\n","import { REVISIONSTATUSES } from \"@annalib/anna-feature-lib/anna-feature-shared-lib\";\n\nimport { SpotStatusFromBackend } from \"../constants/spots-approval.constant\";\nimport { GenericSpotsApprovalService } from \"../services/generic-spots-approval.service\";\nimport { IntelliFilter } from \"./anna-revisions-enums.model\";\nimport { AdditionalSpotInformation } from \"./anna-revisions-response.model\";\n\nexport interface OrderData {\n orderRevisionStatus: REVISIONSTATUSES;\n campaignId: number;\n stationName: string;\n orderId: string;\n ogId: number;\n revisionNo: number;\n revisionType?: REVISIONTYPES;\n writeEnabledOrder: boolean;\n flightEndDate: string;\n flightStartDate: string;\n stationId: number;\n isStationInSandboxMode?: boolean;\n}\n\nexport interface CollapsedOrderInfo {\n name: string;\n value: string;\n}\n\nexport interface HeaderInfo {\n currentOrderIndex: number;\n totalOrders: number;\n}\nexport class Buyer {\n primary: BuyerDetails;\n secondary: BuyerDetails;\n constructor(object: any) {\n this.primary = object.buyers.length >= 1 ? new BuyerDetails(object.buyers[0]) : null;\n this.secondary = object.buyers.length === 2 ? new BuyerDetails(object.buyers[1]) : null;\n }\n}\n\nclass BuyerDetails {\n id: number;\n email: string;\n constructor(data: any) {\n this.id = data.id;\n this.email = data.email;\n }\n}\n\nexport class BuyerAndChannelDetails extends Buyer {\n channelBackdate: string;\n stationLogoUrl: string;\n constructor(object: any) {\n super(object);\n this.stationLogoUrl = object.stationLogoUrl;\n this.channelBackdate = object.channelBackdate;\n }\n}\nexport enum RevisionStatus {\n BuyerPending = \"Buyer Pending\",\n SellerPending = \"Seller Pending\",\n SellerReconfirm = \"Seller Reconfirm\",\n SMPending = \"SM Pending\",\n RevGenerated = \"Rev Generated\",\n RevDiscarded = \"Rev Discarded\",\n OutstandingSpots = \"O/S Spots\",\n OutstandingUD = \"O/S UD\",\n}\n\nexport interface SummaryDetail {\n class?: string;\n heading: string;\n value: string;\n firstValue?: string;\n secondValue?: string;\n rating?: string | null;\n tooltip?: string | null;\n showRightBorder?: boolean;\n showValueRTG?: boolean;\n CPPOrCPM?: string | null;\n expandedRow?: boolean;\n}\n\nexport interface HeaderStatus {\n Status: string;\n IsCurrent: boolean;\n Action: Action;\n}\n\nexport type Action = \"ShowTime\" | \"ShowTimeout\" | \"AutoRejected\" | \"NoAction\" | \"Skipped\";\n\ntype REVISIONTYPES = \"ANNA\" | \"USER\" | \"BUYER\";\ntype USERTYPES = \"SELLER\" | \"BUYER\";\n\nexport interface MarkedForCreditOrMakegoodPayload {\n OrderId: string;\n StationId: number;\n Spots: number[];\n}\n\nexport interface UpdateSellerActionPayload {\n OrderId: string;\n StationId: number;\n RevisionNumber: number;\n SellerActionForOsPeTakenBy: string;\n}\n\nexport interface SubmitSpotsPayload {\n orderId: string;\n StationName: string;\n stationId: number;\n revisionNumber: number;\n actionUserType: USERTYPES;\n actionTakenBy: string;\n actionOnSpots: ActionOnSpots[];\n UpdatedBuyerProgramName?: { SpotId: string; BuyerProgramName: string };\n IsOSPESubmit: boolean;\n Comments?: { SpotId: number; SellerOfferComments: string[] }[];\n CentralBuyerId?: string;\n}\n\nexport interface ActionOnSpots {\n spotId: string;\n spotAction: string;\n spotType: string;\n}\n\nexport interface GoToPageObj {\n page: \"BizRules\" | \"revisions\" | \"offers\";\n selectedIntelliFilter: IntelliFilter;\n advertiserId: number;\n orderMetric?: \"CPP\" | \"CPM\";\n parentTab: \"TV Revenue\" | \"Other Revenue\";\n}\n\nexport interface RevisionDataPayload {\n OrderId: string;\n StationId: number;\n RevisionNumber: number;\n Page: string;\n Equivalisation: boolean;\n // IsReadMode: boolean;\n UserId: number;\n UserName: string;\n CentralBuyerId?: string;\n}\n\nexport class IconActionForBookedRTGColumn {\n tooltipObjList: any[];\n\n constructor(\n data: AdditionalSpotInformation,\n orderMetric: \"CPP\" | \"CPM\",\n textBeforeTooltip: number,\n showTooltip: boolean,\n showBadSpotsTooltip: boolean,\n showBuyerRTGChangedTooltip: boolean,\n ) {\n const badSpotTooltipCondition = showBadSpotsTooltip && data.highlightRtgOrImps;\n\n const metricForTooltip = orderMetric === \"CPP\" ? \"RTG\" : \"IMPS\";\n const projectedRtgOrImps = orderMetric === \"CPP\" ? data.projectedRtg : data.projectedImps;\n let badSpotTooltipMsgForRtg = \"\";\n if (badSpotTooltipCondition) {\n badSpotTooltipMsgForRtg = `The Booked ${metricForTooltip} is greater than 120% of the Projected ${metricForTooltip} value of ${projectedRtgOrImps}`;\n }\n if (badSpotTooltipCondition && data.isRatingImpressionBumped) {\n badSpotTooltipMsgForRtg += \" <br/> \";\n }\n if (data.isRatingImpressionBumped) {\n badSpotTooltipMsgForRtg += ` The ${metricForTooltip} of the offer has been bumped for this Program Change`;\n }\n\n const isMgOrAduStatus =\n data.displaySpotType === SpotStatusFromBackend.MAKEGOOD_OFFERED ||\n data.displaySpotType === SpotStatusFromBackend.MAKEGOOD_REJECTED ||\n data.displaySpotType === SpotStatusFromBackend.MAKEGOOD_AUTO_APPROVED ||\n data.displaySpotType === SpotStatusFromBackend.ADU_OFFERED ||\n data.displaySpotType === SpotStatusFromBackend.ADU_REJECTED ||\n data.displaySpotType === SpotStatusFromBackend.ADU_AUTO_APPROVED;\n\n const showSolveTypeIcon = showTooltip && isMgOrAduStatus;\n const metric: \"rating\" | \"IMPS\" = orderMetric === \"CPP\" ? \"rating\" : \"IMPS\";\n const valueToUse: number = metric === \"IMPS\" ? data.impressionUsedToSolve : data.ratingUsedToSolve;\n\n const solvedTypeIconMsgObjForRtg = GenericSpotsApprovalService.returnTooltipAndIconForSolvedType(\n data.solvedType,\n metric,\n valueToUse,\n );\n\n const svgOrIconTooltipMsgs: string[] = [];\n if (badSpotTooltipCondition) svgOrIconTooltipMsgs.push(badSpotTooltipMsgForRtg);\n if (\n showBuyerRTGChangedTooltip &&\n (data.displaySpotType === \"Rate Change\" ||\n data.displaySpotType === \"Rating/IMPS Change\" ||\n data.displaySpotType === \"Rate & Rating/IMPS Change\")\n ) {\n svgOrIconTooltipMsgs.push(\n metric === \"IMPS\"\n ? `The Booked IMP('000) has been modified from ${data.previousActualRatings} to ${data.actualRatings}`\n : `The Booked RTG has been modified from ${data.previousActualRatings} to ${data.actualRatings}`,\n );\n }\n let svgOrIconTooltipMsg: string;\n if (svgOrIconTooltipMsgs.length > 0) {\n svgOrIconTooltipMsg =\n svgOrIconTooltipMsgs.length === 1\n ? svgOrIconTooltipMsgs[0]\n : GenericSpotsApprovalService.returnTooltipsAsList(svgOrIconTooltipMsgs);\n }\n\n this.tooltipObjList = [\n {\n showObjectKey: false,\n additionalText: textBeforeTooltip.toString(),\n },\n {\n showObjectKey: false,\n svgOrIconName: showSolveTypeIcon ? solvedTypeIconMsgObjForRtg.iconClass : null,\n svgOrIconTooltipMsg: showSolveTypeIcon ? solvedTypeIconMsgObjForRtg.tooltipData : null,\n },\n {\n showObjectKey: false,\n svgOrIconName:\n badSpotTooltipCondition || showBuyerRTGChangedTooltip ? \"INFORMATION_OUTLINE_ICON\" : null,\n svgOrIconTooltipMsg,\n },\n ];\n }\n}\n\nexport interface OfferRejectedReasonAndCommentPopupData {\n reasons: {\n title: string;\n isSelected: boolean;\n }[];\n spotData: AdditionalSpotInformation;\n comment: string;\n isDisabled: boolean;\n disableApply: boolean;\n disableCommentBox: boolean;\n commentBoxPlaceholder: string;\n excludeFutureOffers: boolean;\n}\n\nexport class IconActionForStatusColumn {\n id: any = 0;\n data: string;\n iconClass: string = \"mdi mdi-cancel\";\n showIcon: boolean = false;\n disabledIcon: boolean = false;\n showTooltip: boolean = false;\n typeOfData: \"STRING\" | \"ICON_TEXT_ACTION\";\n additionalTextBeforeLink: string;\n disableTooltip: boolean = false;\n tooltipData: any = null;\n tooltipClass: string;\n additionalTextClass: string;\n constructor(data: AdditionalSpotInformation) {\n this.additionalTextBeforeLink = `${data.offerStatus}`;\n this.additionalTextClass = \"status-td-text\";\n if (data.excludeFromFutureOffers && data.displaySpotType === \"Outstanding PE\") {\n this.showIcon = true;\n this.showTooltip = true;\n this.tooltipData = [\n {\n key: \"This preemption has been excluded from further attempts for MakeGoods\",\n value: null,\n },\n ];\n } else if (data.remarks) {\n this.showIcon = true;\n this.iconClass = \"mi mdi-info-outline\";\n this.showTooltip = true;\n this.tooltipData = [\n {\n key: data.remarks,\n value: null,\n },\n ];\n }\n }\n}","// Angular import statements\nimport { NgClass, NgFor, NgIf, NgStyle } from \"@angular/common\";\nimport {\n AfterViewChecked,\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n} from \"@angular/core\";\nimport { AnnaCoreModule } from \"@annalib/anna-core\";\nimport { NgbTooltip } from \"@ng-bootstrap/ng-bootstrap\";\nimport { NgxSkeletonLoaderModule } from \"ngx-skeleton-loader\";\n\n// user defined import statements\nimport { HeaderInfo } from \"../models/order-revision-detail.model\";\n\n@Component({\n selector: \"anna-feature-revision-header\",\n templateUrl: \"./revision-header.component.html\",\n styleUrls: [\"./revision-header.component.scss\"],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgClass, NgIf, NgxSkeletonLoaderModule, NgFor, NgStyle, NgbTooltip, AnnaCoreModule]\n})\nexport class RevisionHeaderComponent implements AfterViewChecked {\n @Input() revisionStatues: any;\n @Input() skeletonLoading: boolean;\n @Input() headerInfo: HeaderInfo;\n @Input() showPath: boolean;\n @Input() showMessage: boolean = false;\n @Input() revisedInfo: string;\n @Output() previousOrderClicked: EventEmitter<any> = new EventEmitter();\n @Output() nextOrderClicked: EventEmitter<any> = new EventEmitter();\n noDataWidth: string = \"55%\";\n\n @ViewChild(\"radioButtonTooltip\") public tooltip: NgbTooltip;\n\n selectNextOrder() {\n this.nextOrderClicked.emit();\n }\n\n selectPreviousOrder() {\n this.previousOrderClicked.emit();\n }\n\n ngAfterViewChecked() {\n this.tooltip?.open();\n }\n}\n","<section [ngClass]=\"{ 'daily-completed-rev-revision-headers': !showPath, 'ongoing-rev-revision-headers': showPath }\">\n <div [ngClass]=\"{ highlight: headerInfo?.currentOrderIndex > 0, 'order-spinner': showPath }\">\n <div [ngClass]=\"{ 'previous-button-horizontal': !showPath, 'previous-button-vertical': showPath }\">\n <div\n class=\"order-pinner-text\"\n (click)=\"selectPreviousOrder()\"\n >\n Previous Revision\n </div>\n <div\n class=\"order-count\"\n *ngIf=\"headerInfo?.totalOrders && headerInfo?.currentOrderIndex + 1 !== 1\"\n >\n <span>({{ headerInfo?.currentOrderIndex }}/{{ headerInfo?.totalOrders }})</span>\n </div>\n </div>\n </div>\n\n <div\n *ngIf=\"showMessage\"\n class=\"revision-info\"\n >\n <p *ngIf=\"!skeletonLoading\">\n <span *ngIf=\"revisedInfo\">\n This revision was generated on\n <b>{{ revisedInfo }}</b>\n </span>\n <ngx-skeleton-loader\n *ngIf=\"skeletonLoading\"\n count=\"1\"\n [theme]=\"{ width: '400px', height: '17px', float: 'right' }\"\n >\n </ngx-skeleton-loader>\n </p>\n </div>\n\n <div\n id=\"path\"\n *ngIf=\"!skeletonLoading && showPath\"\n >\n <ng-container *ngIf=\"skeletonLoading && showPath\">\n <ngx-skeleton-loader\n count=\"5\"\n [theme]=\"{\n width: '130px',\n height: '40px',\n display: 'inline-block',\n 'margin-top': '10px',\n 'margin-right': '40px',\n 'margin-bottom': '5px'\n }\"\n >\n </ngx-skeleton-loader>\n </ng-container>\n <ng-container *ngIf=\"!skeletonLoading && revisionStatues && showPath\">\n <div\n class=\"status-pathline-message\"\n [ngStyle]=\"{ flex: last ? 0 : 1 }\"\n *ngFor=\"let status of revisionStatues; let last = last\"\n >\n <div>\n <span class=\"{{ status.class }}\">\n {{ status.status }}\n <i\n *ngIf=\"status.showNeedsAttentionIcon\"\n class=\"mdi mdi-alert\"\n ></i>\n </span>\n <i\n *ngIf=\"status.state === 'PASSED'\"\n class=\"mdi mdi-check-circle\"\n ></i>\n <span\n *ngIf=\"status.bubbleCount\"\n class=\"bubble-count\"\n >\n {{ status.bubbleCount }}\n </span>\n <i\n *ngIf=\"status.state === 'SKIPPED'\"\n class=\"mdi mdi-close-circle\"\n ></i>\n <div\n *ngIf=\"!last\"\n class=\"path-line\"\n >\n <i\n *ngIf=\"status.timelineRadioButtonMessage\"\n class=\"mdi cursor-pointer {{ status.timelineRadioButtonIconClass }}\"\n #radioButtonTooltip=\"ngbTooltip\"\n [autoClose]=\"false\"\n ngbTooltip=\"{{ status.timelineRadioButtonMessage }}\"\n placement=\"bottom\"\n container=\"body\"\n tooltipClass=\"gt-icon-column-tooltip entry-status-tooltip keep-on-scroll-tooltip\"\n ></i>\n <i\n *ngIf=\"!status.timelineRadioButtonMessage\"\n class=\"mdi cursor-default {{ status.timelineRadioButtonIconClass }}\"\n ></i>\n </div>\n </div>\n <span\n class=\"time-text {{ status.messageClass }}\"\n *ngIf=\"status.message !== ''\"\n >\n {{ status.message }}\n </span>\n </div>\n </ng-container>\n <anna-core-no-data-lib\n [width]=\"noDataWidth\"\n [marginTop]=\"'0.2rem'\"\n *ngIf=\"showPath && !skeletonLoading && !revisionStatues\"\n >\n </anna-core-no-data-lib>\n </div>\n <div\n [ngClass]=\"{\n highlight: headerInfo?.currentOrderIndex + 1 < headerInfo?.totalOrders,\n 'order-spinner': showPath\n }\"\n >\n <div [ngClass]=\"{ 'next-button-horizontal': !showPath, 'next-button-vertical': showPath }\">\n <div\n class=\"order-pinner-text\"\n (click)=\"selectNextOrder()\"\n >\n Next Revision\n </div>\n <div\n class=\"order-count\"\n *ngIf=\"headerInfo?.totalOrders && headerInfo?.currentOrderIndex + 1 !== headerInfo?.totalOrders\"\n >\n <span>({{ headerInfo?.currentOrderIndex + 2 }}/{{ headerInfo?.totalOrders }})</span>\n </div>\n </div>\n </div>\n</section>\n","// Angular import statements\nimport { NgClass, NgFor, NgIf, NgStyle } from \"@angular/common\";\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n SimpleChanges,\n} from \"@angular/core\";\nimport { MatExpansionModule } from \"@angular/material/expansion\";\nimport { AnnaCoreModule, ANNAIconNames, AnnaPayForPerformanceIconTemplateComponent } from \"@annalib/anna-core\";\nimport { NgbTooltip } from \"@ng-bootstrap/ng-bootstrap\";\n\n// User defined import statements\nimport { SummaryDetail } from \"../models/order-revision-detail.model\";\n\n@Component({\n selector: \"anna-feature-revision-summary\",\n templateUrl: \"./revision-summary.component.html\",\n styleUrls: [\"./revision-summary.component.scss\"],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n MatExpansionModule,\n NgStyle,\n NgClass,\n NgIf,\n NgFor,\n AnnaCoreModule,\n NgbTooltip,\n AnnaPayForPerformanceIconTemplateComponent,\n ]\n})\nexport class RevisionSummaryComponent implements OnChanges {\n @Input() summaryInfo: SummaryDetail[];\n @Input() skeletonLoading: boolean;\n @Input() showImpressions: boolean;\n @Input() isSummaryExpandable: boolean = false;\n @Input() isWriteEnabled: boolean;\n @Input() isPoD: boolean;\n @Input() showAAIcon: boolean = true;\n @Output() summaryIsExpanded = new EventEmitter<boolean>();\n\n ANNAIconNames = ANNAIconNames;\n\n noDataWidth: string = \"55%\";\n summaryExpanded: boolean = false;\n itemsCountVisibleWithoutExpansion: number;\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.summaryInfo && changes.summaryInfo.currentValue) {\n this.itemsCountVisibleWithoutExpansion = this.summaryInfo.filter((n) => !n.expandedRow).length;\n }\n }\n openClose(param: boolean) {\n this.summaryExpanded = param;\n this.summaryIsExpanded.emit(param);\n }\n}\n","<ng-container>\n <mat-accordion>\n <mat-expansion-panel\n [expanded]=\"summaryExpanded\"\n class=\"custom-mat-expansion-panel revision-summary-mat-expansion-panel\"\n (afterCollapse)=\"openClose(false)\"\n (afterExpand)=\"openClose(true)\"\n [disabled]=\"!isSummaryExpandable\"\n >\n <mat-expansion-panel-header\n collapsedHeight=\"*\"\n expandedHeight=\"*\"\n [ngStyle]=\"{ cursor: isSummaryExpandable ? 'pointer !important' : 'default !important' }\"\n [ngClass]=\"{ 'non-expandable-mat-panel': !isSummaryExpandable }\"\n >\n <mat-panel-title>\n <section>\n <!-- <h3>Summary</h3> -->\n <i\n *ngIf=\"!skeletonLoading && showAAIcon && isWriteEnabled\"\n class=\"{{ ANNAIconNames.AutomationActivatedIconName }}\"\n ngbTooltip=\"Automated\"\n placement=\"bottom\"\n container=\"body\"\n ></i>\n <anna-core-pay-for-performance-icon-template\n *ngIf=\"!skeletonLoading && isPoD\"\n [color]=\"'#9B1B93'\"\n [width]=\"'24px'\"\n [height]=\"'24px'\"\n ngbTooltip=\"Payment on delivery\"\n container=\"body\"\n >\n </anna-core-pay-for-performance-icon-template>\n <div\n *ngIf=\"!skeletonLoading && summaryInfo\"\n class=\"summary-values-container\"\n >\n <ng-container *ngFor=\"let detail of summaryInfo\">\n <ng-container *ngIf=\"!detail.expandedRow\">\n <div\n class=\"{{ detail.class }}\"\n [ngStyle]=\"{\n width: isSummaryExpandable\n ? '100%'\n : 'calc(100% / ' + itemsCountVisibleWithoutExpansion + ')'\n }\"\n >\n <p class=\"heading\">\n <span annaCoreShowEllipsisTextOnHover\n >{{ detail.heading }}\n <i\n class=\"mi mdi-info-outline pending-tooltip\"\n [ngbTooltip]=\"detail?.tooltip ? detail.tooltip : null\"\n placement=\"bottom left\"\n container=\"body\"\n *ngIf=\"detail.tooltip\"\n tooltipClass=\"pending-info-tooltip\"\n #t=\"ngbTooltip\"\n ></i>\n </span>\n </p>\n <p\n class=\"bold-text d-flex\"\n *ngIf=\"detail.firstValue && detail.secondValue\"\n >\n <span\n class=\"advertiser-agency\"\n annaCoreShowEllipsisTextOnHover\n >\n {{ detail.firstValue }}\n </span>\n <span class=\"divider\"> | </span>\n <span\n class=\"advertiser-agency\"\n annaCoreShowEllipsisTextOnHover\n >\n {{ detail.secondValue }}\n </span>\n </p>\n <p\n *ngIf=\"!detail.firstValue\"\n class=\"bold-text\"\n annaCoreShowEllipsisTextOnHover\n >\n <span>{{ detail.value ? detail.value : \"-\" }}</span>\n <span *ngIf=\"detail.rating\"> | {{ detail.rating }}</span>\n <span *ngIf=\"detail.CPPOrCPM\"> | {{ detail.CPPOrCPM }}</span>\n </p>\n </div>\n <div\n class=\"border-right-mid\"\n *ngIf=\"detail.showRightBorder\"\n ></div>\n </ng-container>\n </ng-container>\n </div>\n <anna-core-no-data-lib\n [width]=\"noDataWidth\"\n [marginTop]=\"'-12px'\"\n *ngIf=\"!skeletonLoading && !summaryInfo\"\n >\n </anna-core-no-data-lib>\n </section>\n </mat-panel-title>\n </mat-expansion-panel-header>\n <div>\n <section class=\"summary-value-section\">\n <!-- <div style=\"width: 85px;\"></div> -->\n <div\n *ngIf=\"!skeletonLoading && summaryInfo\"\n class=\"summary-values-container\"\n >\n <ng-container *ngFor=\"let detail of summaryInfo\">\n <ng-container *ngIf=\"detail.expandedRow\">\n <div class=\"mr-20 {{ detail.class }}\">\n <p\n class=\"heading\"\n title=\"{{ detail.heading }}\"\n >\n <span\n >{{ detail.heading }}\n <i\n class=\"mi mdi-info-outline pending-tooltip\"\n [ngbTooltip]=\"detail?.tooltip ? detail.tooltip : null\"\n placement=\"bottom left\"\n container=\"body\"\n *ngIf=\"detail.tooltip\"\n tooltipClass=\"pending-info-tooltip\"\n #t=\"ngbTooltip\"\n ></i>\n </span>\n </p>\n <p\n class=\"bold-text d-flex\"\n *ngIf=\"detail.firstValue && detail.secondValue\"\n >\n <span\n class=\"advertiser-agency\"\n annaCoreShowEllipsisTextOnHover\n >\n {{ detail.firstValue }}\n </span>\n <span class=\"divider\">| </span>\n <span\n class=\"advertiser-agency\"\n annaCoreShowEllipsisTextOnHover\n >\n {{ detail.secondValue }}\n </span>\n </p>\n <p\n *ngIf=\"!detail.firstValue\"\n class=\"bold-text\"\n title=\"{{ detail.value ? detail.value : '-' }} {{\n detail.showValueRTG ? '|' : ''\n }} {{ detail.rating }}{{ detail.CPPOrCPM ? ' | ' + detail.CPPOrCPM : '' }}\"\n >\n <span>{{ detail.value ? detail.value : \"-\" }}</span>\n <span *ngIf=\"detail.rating\"> | {{ detail.rating }}</span>\n <span *ngIf=\"detail.CPPOrCPM\"> | {{ detail.CPPOrCPM }}</span>\n </p>\n </div>\n <div\n class=\"border-right-mid\"\n *ngIf=\"detail.showRightBorder\"\n ></div>\n </ng-container>\n </ng-container>\n </div>\n </section>\n </div>\n </mat-expansion-panel>\n </mat-accordion>\n</ng-container>\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n TemplateRef,\n ViewChild,\n} from \"@angular/core\";\nimport { AnnaGlobalConfigService, ICustomSingleSelect } from \"@annalib/anna-core\";\nimport { IdTextForSingleSelect, SingleSelectComponent } from \"@annalib/anna-design-components-lib\";\nimport { NgbModal, NgbModalOptions, NgbModalRef } from \"@ng-bootstrap/ng-bootstrap\";\n\nexport interface SpotLengthOption {\n DisplayDuration: string;\n Duration: number;\n SpotTypeId: number;\n}\n\n@Component({\n selector: \"anna-feature-select-spot-length-popup\",\n standalone: true,\n imports: [SingleSelectComponent],\n templateUrl: \"./select-spot-length-popup.component.html\",\n styleUrl: \"./select-spot-length-popup.component.scss\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SelectSpotLengthPopupComponent implements OnInit, OnDestroy {\n @Input() public spotLengthOptions: SpotLengthOption[] = [];\n\n @Output() public readonly spotLengthSelected = new EventEmitter<SpotLengthOption>();\n @Output() public readonly cancelClicked = new EventEmitter<void>();\n\n @ViewChild(\"selectSpotLengthModal\", { static: true })\n private readonly selectSpotLengthModal!: TemplateRef<unknown>;\n\n public formattedSpotLengthOptions: IdTextForSingleSelect[] = [];\n public selectedSpotLength: IdTextForSingleSelect | null = null;\n public readonly singleSelectConfig: ICustomSingleSelect;\n\n private modalRef: NgbModalRef | null = null;\n\n constructor(\n private readonly annaGlobalConfig: AnnaGlobalConfigService,\n private readonly modalService: NgbModal,\n ) {\n this.singleSelectConfig = { ...this.annaGlobalConfig.defaultSingleSelectConfig };\n }\n\n public ngOnInit(): void {\n this.initializeComponent();\n this.openModal();\n }\n\n public ngOnDestroy(): void {\n this.closeModal();\n }\n\n public onValueChange(value: IdTextForSingleSelect): void {\n if (!value) {\n return;\n }\n this.selectedSpotLength = value;\n }\n\n public cancel(): void {\n this.closeModal();\n this.cancelClicked.emit();\n }\n\n public apply(): void {\n if (!this.selectedSpotLength) {\n return;\n }\n\n const selectedOption = this.findSelectedOption();\n if (selectedOption) {\n this.closeModal();\n this.spotLengthSelected.emit(this.mapToSelection(selectedOption));\n }\n }\n\n private initializeComponent(): void {\n this.formattedSpotLengthOptions = this.formatSpotLengthOptions();\n this.selectedSpotLength = this.getDefaultSelection();\n }\n\n private formatSpotLengthOptions(): IdTextForSingleSelect[] {\n return this.spotLengthOptions.map((option) => ({\n id: option.DisplayDuration,\n text: option.DisplayDuration,\n }));\n }\n\n private getDefaultSelection(): IdTextForSingleSelect | null {\n return this.spotLengthOptions.length > 0 ? this.formattedSpotLengthOptions[0] : null;\n }\n\n private findSelectedOption(): SpotLengthOption | undefined {\n if (!this.selectedSpotLength) {\n return undefined;\n }\n return this.spotLengthOptions.find((option) => option.DisplayDuration === this.selectedSpotLength?.id);\n }\n\n private mapToSelection(option: SpotLengthOption): SpotLengthOption {\n return {\n DisplayDuration: option.DisplayDuration,\n Duration: option.Duration,\n SpotTypeId: option.SpotTypeId,\n };\n }\n\n private openModal(): void {\n const modalOptions: NgbModalOptions = {\n backdrop: \"static\",\n keyboard: false,\n windowClass: \"spot-length-selection-modal\",\n };\n\n this.modalRef = this.modalService.open(this.selectSpotLengthModal, modalOptions);\n }\n\n private closeModal(): void {\n if (this.modalRef) {\n this.modalRef.close();\n this.modalRef = null;\n }\n }\n}\n","\n<ng-template\n #selectSpotLengthModal\n let-modal\n>\n <div class=\"modal-header\">\n <h3 class=\"modal-title\">Select Spot Length</h3>\n </div>\n <div class=\"modal-body\">\n <header class=\"popup-dropdown-label\">Spot Length</header>\n <anna-design-single-select\n [config]=\"singleSelectConfig\"\n [items]=\"formattedSpotLengthOptions\"\n [selectedItem]=\"selectedSpotLength\"\n (valueChanged)=\"onValueChange($event)\"\n >\n </anna-design-single-select>\n <div class=\"button-container-modal\">\n <button\n class=\"anna cancel-button\"\n (click)=\"cancel()\"\n >\n Cancel\n </button>\n <button\n class=\"anna apply-button\"\n (click)=\"apply()\"\n >\n Apply\n </button>\n </div>\n </div>\n</ng-template>\n","import { NgClass, NgFor, NgIf, NgStyle, NgTemplateOutlet } from \"@angular/common\";\nimport { HttpResponse } from \"@angular/common/http\";\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n} from \"@angular/core\";\nimport { MatMenuModule } from \"@angular/material/menu\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\nimport {\n AnnaCoreModule,\n AnnaFilterService,\n AnnaGlobalConfigService,\n AnnaGtHelperService,\n AnnaNonEditableGenericTableComponent,\n AnnaPersistingFilterService,\n AnnaSortService,\n ErrorCodes,\n IConfirmationPopupConfig,\n ICustomSingleSelect,\n IGtGeneralConfig,\n IGtTableHeader,\n IHeaderInfo,\n ITotalRowInfo,\n SvgOrIconNames,\n TableClassNameConstant,\n} from \"@annalib/anna-core\";\nimport {\n AnnaDesignComponentsLibModule,\n BreadcrumbsService,\n ConfirmationPopupComponent,\n GenericMessageBoxTheme,\n IBreadcrumb,\n IdText,\n MessageBoxData,\n TimerComponent,\n} from \"@annalib/anna-design-components-lib\";\nimport {\n ActionCommentsPopupComponent,\n BizHistoryType,\n BizRuleStatus,\n GenericDailyRevisionService,\n OfferRejectionPopupComponent,\n OrderListingConstants,\n OrderMetrics,\n PrimaryOrderPanelService,\n} from \"@annalib/anna-feature-lib/anna-feature-shared-lib\";\nimport { datadogRum } from \"@datadog/browser-rum\";\nimport * as signalR from \"@microsoft/signalr\";\nimport { NgbModal, NgbModalOptions, NgbModalRef } from \"@ng-bootstrap/ng-bootstrap\";\nimport { cloneDeep, findLastIndex, isEqual, orderBy, sortBy, uniq, uniqBy } from \"lodash-es\";\nimport { NgxSkeletonLoaderModule } from \"ngx-skeleton-loader\";\nimport { ToastrService } from \"ngx-toastr\";\nimport { fromEvent } from \"rxjs\";\nimport { debounceTime } from \"rxjs/operators\";\n\nimport { BadlyBehavedSpotDetailsPopupComponent } from \"../badly-behaved-spot-details-popup/badly-behaved-spot-details-popup.component\";\nimport { CancelOffersPopupComponent } from \"../cancel-offers-popup/cancel-offers-popup.component\";\nimport {\n ISpotsApprovalBackendService,\n SPOTS_APPROVAL_PAGE_SERVICE_TOKEN,\n} from \"../config/spots-approval-backend-service.token\";\nimport {\n IntelliFilterConstant,\n RevisionTableHeaderConstants,\n RevisionTableKeyConstants,\n RevisionToastrMessage,\n RevisionTypeConstants,\n SpotsApprovalTableTotalRowColNames,\n} from \"../constants/spots-approval.constant\";\nimport { CreateOrEditAduOrBonusComponent } from \"../create-or-edit-adu-or-bonus/create-or-edit-adu-or-bonus.component\";\nimport { CreateOrEditOffersPopupComponent } from \"../create-or-edit-offers-popup/create-or-edit-offers-popup.component\";\nimport { CreditConfirmationTablePopupComponent } from \"../credit-confirmation-table-popup/credit-confirmation-table-popup.component\";\nimport { IANNARevisionBEResponse, IBizRulesFromDB, ISpotInformationResponse } from \"../models/anna-revisions-backend.model\";\nimport {\n ANNAREVISIONSTAGES, ESTIMATEPRIORITIES,\n IntelliFilter,\n SpotaApprovalIRadioButton,\n SpotsApprovalGeneraicTableActions,\n SpotTypeCategoryFromBE,\n TotalRowActionColumnPossibleValues, UndoOrReofferOrCancelAction,\n} from \"../models/anna-revisions-enums.model\";\nimport {\n AcquireLockResponse,\n AdditionalSpotInformation,\n ANNARevisionSpotsApprovalResponse,\n ANNARevisionSummary,\n OrderInfoForANNARevision,\n} from \"../models/anna-revisions-response.model\";\nimport {\n TotalRow,\n TotalRowData,\n TotalRowWithFilteredColumns,\n} from \"../models/anna-revisions-total-rows.model\";\nimport {\n GoToPageObj,\n HeaderInfo,\n HeaderStatus,\n IconActionForBookedRTGColumn,\n IconActionForStatusColumn,\n OrderData,\n RevisionDataPayload,\n RevisionStatus,\n SubmitSpotsPayload,\n SummaryDetail,\n} from \"../models/order-revision-detail.model\";\nimport { RevisionHeaderComponent } from \"../revision-header/revision-header.component\";\nimport { RevisionSummaryComponent } from \"../revision-summary/revision-summary.component\";\nimport { SelectSpotLengthPopupComponent } from \"../select-spot-length-popup/select-spot-length-popup.component\";\nimport { GenericSpotsApprovalService, OffersStatusFromBE } from \"../services/generic-spots-approval.service\";\nimport { SpotsApprovalService } from \"../services/spots-approval.service\";\n\nexport interface HeaderOrderInfo {\n message: string;\n messageClass: string;\n class: string;\n status: string;\n state: string;\n bubbleCount: number;\n showNeedsAttentionIcon: boolean;\n timelineRadioButtonMessage: string;\n timelineRadioButtonIconClass: string;\n}\n\n@Component({\n selector: \"anna-feature-anna-revision\",\n templateUrl: './anna-revision.component.html',\n styleUrl: './anna-revision.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NgIf,\n NgxSkeletonLoaderModule,\n RevisionHeaderComponent,\n NgTemplateOutlet,\n MatMenuModule,\n RevisionSummaryComponent,\n AnnaDesignComponentsLibModule,\n NgFor,\n NgClass,\n NgStyle,\n AnnaCoreModule,\n CreditConfirmationTablePopupComponent,\n OfferRejectionPopupComponent,\n CreateOrEditOffersPopupComponent,\n TimerComponent,\n CancelOffersPopupComponent,\n ActionCommentsPopupComponent,\n SelectSpotLengthPopupComponent,\n CreateOrEditAduOrBonusComponent,\n BadlyBehavedSpotDetailsPopupComponent\n ],\n})\nexport class AnnaRevisionComponent implements OnChanges, OnInit, OnDestroy {\n @Input() orderData: OrderData;\n @Input() userType: \"SELLER\" | \"BUYER\";\n @Input() isCompletedRevision: boolean;\n @Input() parentPage: \"ORDERS\" | \"DRR Completed\" | \"DRR Ongoing\";\n @Input() isSummaryExpandable: boolean;\n @Input() showAAIcon: boolean = true;\n @Input() showStatusTimeline: boolean;\n @Input() showMessageInHeaderSection: boolean;\n @Input() dataOnTopHeight: number;\n @Input() showHeader: boolean;\n @Input() showSkeletonLoading: boolean = true;\n @Input() ordersOrRevisonsList: any[];\n @Input() stationId: number;\n @Input() ogName: string; // Will be used only in BI for tenant address\n @Input() statusToBeConsideredToShowBizRuleWarning: RevisionStatus.BuyerPending | RevisionStatus.SellerPending;\n @Input() filtersFromRoute: {\n appliedFilters?: string[],\n selectedFilterData?: string,\n sortState?: string,\n easyFilter?: string,\n metric?: IdText\n };\n @Input() loggedInUserOrBuyerName: string;\n @Input() userHasEditPrivilege: boolean;\n @Input() hideDownloadButton: boolean = true;\n @Input() disableSubmitForRepOrder: boolean;\n @Input() showAUR: boolean = false;\n @Input() showViewRevisionLink: boolean;\n @Input() buyerProgramNameEditable: boolean = false;\n @Input() showOfferRejectionReasonPopup: boolean = true;\n @Input() showStationName: boolean;\n // Revision page it'll always be for TV revenue orders\n @Input() parentOrderListingTabName = \"TV Revenue\" as const;\n @Input() ogId: number;\n\n // Revision page it'll always be for TV revenue orders\n @Input() todayAnnaRevisionTabUrl: string = \"todays-anna-offers\";\n @Input() timezone: string;\n @Input() showBadlyBehavedSpotsTooltipCellLevel: boolean = true; // true for all as part of 10108 issue\n @Output() fetchPreviousOrNext = new EventEmitter<{ index: number; orderData: OrderData }>();\n @Output() navigateToOrderDiscrepancy = new EventEmitter<{\n flightStartDate: string,\n orderId: string,\n stationId: number\n }>();\n @Output() navigateToVerifyMapping = new EventEmitter<{\n stationId: number,\n altOrderId: string,\n trafficOrderId: string,\n ecOrderStatus: string,\n }\n >();\n @Output() navigateToListingPage = new EventEmitter();\n @ViewChild(\"submitSpotsConfirmation\")\n private submitSpotModal: ConfirmationPopupComponent;\n\n @ViewChild(\"creditTablePopup\")\n private creditTablePopup: CreditConfirmationTablePopupComponent;\n\n originalResponse: IANNARevisionBEResponse;\n formattedResponse: ANNARevisionSpotsApprovalResponse;\n\n totalRowInfo: ITotalRowInfo[];\n showTotalRowActionButtons: boolean;\n selectedOrderIndex: number;\n orderInfoData: OrderInfoForANNARevision;\n timeZone: string;\n headerInfo: HeaderInfo;\n formattedDate: string;\n formattedTime: string;\n intelliFilter: IntelliFilter[];\n clearAllFilter: IntelliFilter;\n tableHeaders: IGtTableHeader[];\n gtDimension = {\n rowHeight: 42,\n headerHeight: 40,\n dataOnTopHeight: 341,\n marginFromBottom: 0,\n };\n gtGeneralConfig: IGtGeneralConfig;\n tableData: AdditionalSpotInformation[] = [];\n clonedTableData: AdditionalSpotInformation[] = [];\n showSubmitButton: boolean = false;\n disableSubmitButton: boolean = false;\n confirmationConfig: IConfirmationPopupConfig;\n currentRevisionStatus: ANNAREVISIONSTAGES;\n summaryInfo: SummaryDetail[];\n headerOrderInfo: HeaderOrderInfo[];\n creditedSpots: AdditionalSpotInformation[] = [];\n noIntelliFilterSelected: boolean;\n openCreditPopup: boolean = false;\n bookedRateInfoColTooltip: string;\n showImpressions: boolean = false;\n selectedIntelliFilter: IntelliFilter | null;\n maximumRowsThatCanBeRenderedWithoutScrollBar: number = 8;\n filteredAtColumnLevel: boolean;\n genericTableClass: string = \"drr-spot-approval-table\";\n showNoSpotAvailableMessage: boolean;\n disableStatus: boolean;\n showCutOffMessage: boolean;\n showReviewMessage: boolean;\n timeout: string;\n buyerName: string;\n isOSPESpotsMarkedForCredit: boolean;\n isOSPESpotsMarkedForMakeGood: boolean;\n isThisAPiCallAfterSubmit: boolean = false;\n initialAppliedEasyFilter: string;\n revisionTypeConstants: typeof RevisionTypeConstants;\n isStationInSandboxMode: boolean;\n selectedStationIsInTextMode: boolean;\n showPath: boolean;\n enabledFiltersCount: number;\n actionMsg: string;\n BizHistoryType = BizHistoryType;\n BizRuleStatus = BizRuleStatus;\n messageBoxData: MessageBoxData;\n sellerReconfirmationMessageBoxData: MessageBoxData;\n offerRjectionPossibleReasons: string[];\n openRejectionReasonPopup: boolean = false;\n rowDataForRejectionPopup: AdditionalSpotInformation;\n spotTypeForRejectionPoup: string;\n rejectionPopupData: {\n showActionInRejectionPopup: boolean;\n allowActionInRejectionPopup: boolean;\n rejectActionComment: string[];\n excludeFromFutureOffers: boolean;\n rejectionHeader: string;\n };\n rowDataToRevertBackToDefault: AdditionalSpotInformation;\n @ViewChild(AnnaNonEditableGenericTableComponent) nonEditableGTComponent: AnnaNonEditableGenericTableComponent;\n\n orderMetrics: IdText[];\n metricDropdownConfig: ICustomSingleSelect;\n selectedMetric: IdText;\n disableDropDown: boolean;\n\n preemptedSpotsForEdit: ISpotInformationResponse[];\n groupableOutstandingSpots: ISpotInformationResponse[];\n offeredMakegoodsForEdit: ISpotInformationResponse[];\n offeredADUsForEdit: ISpotInformationResponse[];\n isADUSpotUnderEdit: boolean;\n isOSPESpotUnderEdit: boolean;\n openEditPopup: boolean;\n openADUEditPopup: boolean;\n bizRulesFromDb: IBizRulesFromDB;\n\n @ViewChild(\"generateOffersReportConfirmation\")\n private generateOffersReportConfirmModal: ConfirmationPopupComponent;\n\n disableOffersReportDownloadBtn: boolean = false;\n showDownloadButton: boolean = false;\n generateOffersReportConfirmationConfig: IConfirmationPopupConfig;\n latestTimeoutId: NodeJS.Timeout;\n\n hubConnection: signalR.HubConnection;\n loggedInUser: any;\n acquireLockResponse: AcquireLockResponse;\n lockMessageDetails: { message: string; class: string; iconClass: string };\n\n @ViewChild(\"lockExpiredModal\") private lockExpiredModal: TemplateRef<any>;\n public lockExpiredModalReference: NgbModalRef;\n\n @ViewChild(\"spotsApprovalEditModal\") private spotsApprovalEditModal: CreateOrEditOffersPopupComponent;\n @ViewChild(\"createOrEditADUModal\") private createOrEditADUModal: CreateOrEditAduOrBonusComponent;\n @ViewChild(\"timerComponent\") private timerComponent: TimerComponent;\n youareEditingAlertTimeout: NodeJS.Timeout;\n\n selectedForUndoUniqueIds: string[] = [];\n selectedOfferIdForReoffer: string[] = [];\n selectedOfferIdForCancel: string[] = [];\n selectedSpotForUndo: AdditionalSpotInformation;\n\n @ViewChild(\"UndoOfferConfirmation\") undoOfferConfirmationModal: ConfirmationPopupComponent;\n undoOfferConfirmationConfig: IConfirmationPopupConfig;\n\n @ViewChild(\"ReOfferConfirmationWithComment\") reOfferConfirmationModal: ActionCommentsPopupComponent;\n reOfferConfirmationConfig: IConfirmationPopupConfig;\n\n @ViewChild(\"IndividualOfferCancellationPopup\") individualOfferCancellationPopup: ActionCommentsPopupComponent;\n individualOfferCancellationPopupConfig: IConfirmationPopupConfig;\n\n @ViewChild(\"offerRejectionModal\") offerRejectionModal: OfferRejectionPopupComponent;\n\n @ViewChild(\"CancelOffersConfirmation\") cancelOffersConfirmationModal: CancelOffersPopupComponent;\n allCancelEligibleMakegoodOfferNumbers: { offerNumber: string; uniqueId: string }[] = [];\n\n actionCommentPopupTitle: string;\n actionRadioButtonComment: string;\n @ViewChild(\"actionCommentsModal\") actionCommentsModal: ActionCommentsPopupComponent;\n allowEditInActionCommentPopup: boolean;\n Math = Math;\n applyCloseButtonTextForReofferPopup: { apply: string; cancel: string };\n applyCloseButtonTextForCancelPopup: { apply: string; cancel: string } = { apply: \"Yes\", cancel: \"No\" };\n\n RevisionStatus = RevisionStatus;\n isReofferFlow: boolean;\n isBadlyBehavedGroupChosenForEdit: boolean;\n reofferUserInputComment: string = null;\n lockAcquiredByUserNameToSendInPayload: string;\n isCopilotUser: boolean;\n openSelectSpotLengthPopup: boolean;\n ADUOrBonusOfferType: \"ADU offers\" | \"Bonus Spots\";\n ADUOrBonusRevenueClass: string;\n createADUOrBonusSpotsData: { duration: number, displayDuration: string, revenueClass: string, spotTypeId: number };\n orderRelatedExtraInfoForCreatingOrEditingADUs: {\n orderId: string,\n stationId: number,\n tgId: number,\n timezone: string,\n showImpressions: boolean,\n spotType: SpotTypeCategoryFromBE\n };\n isADUOrBonusCreate: boolean;\n\n openBadlyBehavedSpotsPopup: boolean;\n badlyBehavedSpotGroupId: string;\n badlyBehavedSpotOrderId: string;\n\n constructor(\n private modalService: NgbModal,\n private spotsApprovalService: SpotsApprovalService,\n private genericSpotsApprovalService: GenericSpotsApprovalService,\n private breadcrumbService: BreadcrumbsService,\n private route: ActivatedRoute,\n public router: Router,\n private drrListingService: GenericDailyRevisionService,\n private annaGlobalConfig: AnnaGlobalConfigService,\n private toastr: ToastrService,\n private persistingFilterService: AnnaPersistingFilterService,\n private cdRef: ChangeDetectorRef,\n private annaGtService: AnnaGtHelperService,\n private annaSortService: AnnaSortService,\n private annaFilterService: AnnaFilterService,\n private primaryOrderPanelService: PrimaryOrderPanelService,\n @Inject(SPOTS_APPROVAL_PAGE_SERVICE_TOKEN)\n public consumingProjectSpotsApprovalBackendService: ISpotsApprovalBackendService,\n ) {\n this.revisionTypeConstants = RevisionTypeConstants;\n this.gtGeneralConfig = { ...this.annaGlobalConfig.defaultGtGeneralConfig };\n this.gtGeneralConfig.component = \"DRR\";\n this.gtGeneralConfig.bufferSize = 100;\n this.gtGeneralConfig.totalRow = true;\n this.gtGeneralConfig.tableContainerName = \"drr-spot-approval-table-container\";\n this.setTableHeight();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n this.loggedInUser =\n this.userType === \"SELLER\"\n ? JSON.parse(localStorage.getItem(\"userProfileData\"))\n : {\n userId: (localStorage.getItem(\"centralBuyerId\")),\n userName: this.loggedInUserOrBuyerName,\n };\n this.isCopilotUser =\n this.userType === \"SELLER\"\n ? JSON.parse(localStorage.getItem(\"userProfileData\")).role === \"SureWaves Co-pilot\"\n : localStorage.getItem(\"isCopilotUser\") !== \"false\";\n if (changes.ordersOrRevisonsList && changes.ordersOrRevisonsList.currentValue) {\n this.onOrdersOrRevListChange();\n }\n if (\n changes.orderData &&\n changes.orderData.currentValue &&\n !isEqual(changes.orderData.currentValue, changes.orderData.previousValue)\n ) {\n this.initOrderdataDependentVariables();\n this.setRevisionHeaderData();\n this.toastr.clear();\n this.getLockAndCallAPI();\n }\n }\n\n setTableHeader() {\n this.tableHeaders = this.spotsApprovalService.getAllTableHeadersForAnnaRevision(\n this.showAUR,\n this.userType === \"BUYER\",\n this.userHasEditPrivilege,\n this.isCompletedRevision,\n );\n }\n\n initOrderdataDependentVariables() {\n this.setTableHeader();\n this.isActionableColumnPresent();\n this.showPath = !(!this.showStatusTimeline || (this.orderData && this.orderData?.revisionType !== \"ANNA\"));\n }\n userNeedsLock() {\n return this.orderData.revisionType === \"ANNA\" && this.userHasEditPrivilege;\n }\n\n async getLockAndCallAPI() {\n if (this.userType === \"SELLER\") {\n this.lockAcquiredByUserNameToSendInPayload = this.loggedInUser?.userName;\n } else {\n this.lockAcquiredByUserNameToSendInPayload = localStorage.getItem(\"buyerName\");\n }\n if (this.userNeedsLock()) {\n if (!this.hubConnection) {\n await this.startHubConnection();\n } else {\n this.acquireLock();\n }\n } else {\n this.acquireLockResponse = null;\n this.fetchOrderRevisionDetailsData(true);\n }\n }\n\n ngOnInit() {\n this.showSkeletonLoading = true;\n this.initOrderdataDependentVariables();\n this.showPath = true;\n if (!this.orderData) {\n this.tableHeaders = this.spotsApprovalService.getAllTableHeadersForAnnaRevision(\n this.showAUR,\n this.userType === \"BUYER\",\n this.userHasEditPrivilege,\n this.isCompletedRevision,\n );\n }\n this.setSellerReconfirmationMessageBoxData();\n this.setDropDownData();\n this.intelliFilter = cloneDeep(this.spotsApprovalService.getOngoingRevisionsIntelliFilters());\n this.offerRjectionPossibleReasons = this.spotsApprovalService.getAllRejectionReasons();\n }\n\n fetchOrderRevisionDetailsData(reinitIntelliFilter: boolean) {\n GenericSpotsApprovalService.reinitialseFilter = reinitIntelliFilter;\n this.showSkeletonLoading = true;\n const payload = this.createPayloadForOrderRevisionDetail();\n\n this.consumingProjectSpotsApprovalBackendService.getOrderRevisionDetails(payload).subscribe({\n next: (response) => {\n if (!response || response.status === ErrorCodes.NO_CONTENT) {\n this.selectedMetric = this.orderMetrics[0];\n this.replaceLoadersInTableHeadersWithNames();\n this.showSkeletonLoading = false;\n this.cdRef.detectChanges();\n } else {\n this.originalResponse = cloneDeep(response);\n\n this.formattedResponse = new ANNARevisionSpotsApprovalResponse(\n response,\n this.showBadlyBehavedSpotsTooltipCellLevel,\n this.showAUR,\n this.orderData?.revisionType,\n );\n\n this.initData();\n this.onSuccessfulOrderRevisionData(reinitIntelliFilter);\n this.setDownloadButtonVariables();\n }\n },\n error: (error) => {\n this.toastr.error(\"Something went wrong! Please try again.\");\n this.selectedMetric = this.orderMetrics[0];\n this.replaceLoadersInTableHeadersWithNames();\n this.showSkeletonLoading = false;\n this.releaseLock();\n this.cdRef.detectChanges();\n },\n });\n }\n\n // eslint-disable-next-line consistent-return\n createPayloadForOrderRevisionDetail(): RevisionDataPayload {\n return {\n OrderId: this.orderData?.orderId,\n StationId: this.stationId,\n RevisionNumber: this.orderData.revisionNo,\n Page:\n this.parentPage === \"ORDERS\" || this.parentPage === \"DRR Completed\" ? \"REVISIONSTAB\" : \"SPOTSAPPROVAL\",\n Equivalisation: false,\n // IsReadMode: !this.acquireLockResponse?.lockAcquired,\n UserId: this.loggedInUser ? this.loggedInUser?.userId : this,\n UserName: this.lockAcquiredByUserNameToSendInPayload,\n };\n }\n\n onOrdersOrRevListChange() {\n this.setRevisionHeaderData();\n }\n\n initData() {\n this.setConfirmationPopupConfig();\n this.setUndoOffersConfirmationPopupConfig();\n this.clearAllFilter = {\n text: \"Reset all filters\",\n isActive: false,\n isDisabled: true,\n isShown: true,\n };\n\n this.annaFilterService.appliedFiltersArray = [];\n this.isOSPESpotsMarkedForMakeGood = true;\n this.isOSPESpotsMarkedForCredit = true;\n this.isThisAPiCallAfterSubmit = false;\n\n fromEvent(window, \"resize\")\n .pipe(debounceTime(500))\n .subscribe((event) => {\n this.setTableHeight();\n });\n }\n\n fetchPreviousOrderDetails() {\n if (this.selectedOrderIndex > 0) {\n this.closeTimeout();\n this.closeHubConnection();\n this.resetFilterVariables();\n this.noIntelliFilterSelected = false;\n this.selectedOrderIndex -= 1;\n this.fetchPreviousOrNextClicked();\n }\n }\n\n fetchPreviousOrNextClicked() {\n if (this.isCompletedRevision) {\n this.spotsApprovalService.getAllTableHeadersForAnnaRevision(\n this.showAUR,\n this.userType === \"BUYER\",\n this.userHasEditPrivilege,\n this.isCompletedRevision,\n );\n }\n this.selectedIntelliFilter = null;\n this.intelliFilter.forEach((filter) => {\n filter.isActive = false;\n });\n\n this.showSkeletonLoading = true;\n this.filteredAtColumnLevel = false;\n this.initialAppliedEasyFilter = null;\n this.messageBoxData = null;\n this.orderData = cloneDeep(this.ordersOrRevisonsList[this.selectedOrderIndex]);\n this.fetchPreviousOrNextOrderDetails({\n index: this.selectedOrderIndex,\n orderData: this.orderData,\n });\n this.lockMessageDetails = null;\n this.acquireLockResponse = null;\n this.fetchPreviousOrNext.emit({\n index: this.selectedOrderIndex,\n orderData: this.orderData,\n });\n this.resetPersistingData();\n }\n\n fetchNextOrderDetails() {\n if (this.selectedOrderIndex < this.ordersOrRevisonsList.length - 1) {\n this.closeTimeout();\n this.closeHubConnection();\n this.resetFilterVariables();\n this.noIntelliFilterSelected = false;\n this.showSkeletonLoading = true;\n this.selectedOrderIndex += 1;\n this.fetchPreviousOrNextClicked();\n }\n }\n\n navigateToBusinessHistoryPage(type: BizHistoryType = BizHistoryType.ORDER) {\n const lowerCaseType = type.toString().toLowerCase() as BizHistoryType;\n // eslint-disable-next-line no-unsafe-optional-chaining\n const historyRevisionNo = +this.orderInfoData?.businessHistoryId;\n const link = document.createElement(\"a\");\n\n const url = this.router\n .createUrlTree([`/business-rule-history`], {\n queryParams: this.createParamsForBizHistory(historyRevisionNo, lowerCaseType),\n })\n .toString();\n link.target = \"_blank\";\n link.href = `#${url}`;\n link.setAttribute(\"visibility\", \"hidden\");\n link.click();\n }\n\n createParamsForBizHistory(historyRevisionNo: number, type: BizHistoryType) {\n return {\n historyNo: historyRevisionNo,\n type,\n stationId: +this.stationId,\n advertiserId: this.formattedResponse.orderInfo.advertiserId,\n orderId: this.orderData?.orderId,\n isRepOrder: this.orderInfoData?.isRepOrder,\n };\n }\n\n onSuccessfulOrderRevisionData(reinitIntelliFilter?: boolean) {\n this.resetData();\n\n if (this.submitSpotModal) {\n this.submitSpotModal.closeModal(false);\n }\n this.orderInfoData = this.formattedResponse.orderInfo;\n SpotsApprovalService.isRepOrder = this.orderInfoData?.isRepOrder;\n this.showPath = !(!this.showStatusTimeline || this.orderInfoData.revisionType !== \"ANNA\");\n this.showImpressions =\n this.formattedResponse.orderInfo.metric.toLowerCase() === OrderListingConstants.IMPRESSIONS.toLowerCase();\n this.summaryInfo = this.createSummaryComponentData(this.formattedResponse.revisionSummary);\n this.formattedDate = this.orderInfoData.revisedOn ? this.orderInfoData.revisedOn.split(\" \")[0] : null;\n this.formattedTime = this.orderInfoData.revisedOn ? this.orderInfoData.revisedOn.split(\" \")[1] : null;\n\n if (this.orderInfoData.isOngoingTemporaryRevisionAfterTransition) {\n this.showOngoingRevisionToastr();\n }\n if (\"timeZone\" in this.formattedResponse.orderInfo) {\n this.timeZone = this.formattedResponse.orderInfo.timeZone;\n }\n if (this.orderInfoData.revisionType === this.revisionTypeConstants.ANNA && \"status\" in this.orderInfoData) {\n this.headerOrderInfo = this.createHeaderData(this.orderInfoData);\n const currentStatusIndex = this.orderInfoData.status.findIndex((status) => status.IsCurrent);\n this.currentRevisionStatus =\n currentStatusIndex !== -1 ? this.orderInfoData.status[currentStatusIndex].Status : null;\n this.setConfirmationPopupConfig();\n }\n\n this.resetFilterVariables();\n\n this.intelliFilterInitialize();\n\n // eslint-disable-next-line no-nested-ternary\n this.metricChanged(this.filtersFromRoute?.metric ? this.filtersFromRoute?.metric :\n (this.formattedResponse.orderInfo.metric === \"Impressions\" ? this.orderMetrics[1] : this.orderMetrics[0]),\n false,\n );\n if (this.filtersFromRoute) {\n this.initFiltersFromRoute();\n }\n\n this.formattedResponse.offeredMGsAndADUs = this.formatResponseForGenericTable(\n this.sortResponseBasedOnStatus(this.formattedResponse.offeredMGsAndADUs, \"offeredMGsAndADUs\"),\n );\n this.formattedResponse.outstandingSpots = this.formatResponseForGenericTable(\n this.sortResponseBasedOnStatus(this.formattedResponse.outstandingSpots, \"outstandingSpots\"),\n );\n this.formattedResponse.badlyBehavedSpots = this.formatResponseForGenericTable(this.formattedResponse.badlyBehavedSpots);\n\n this.setGenericTableDataBasedOnFilterSelected();\n this.clonedTableData = cloneDeep(this.tableData);\n this.setTableHeaders();\n\n if (this.filtersFromRoute) {\n this.tableData = this.annaFilterService.filterData(this.clonedTableData, \"\");\n this.formatResponseForGenericTable(this.tableData);\n this.checkIfFiltersAppliedAtColumnLevel();\n this.enableDisableClearAllBtn();\n setTimeout(() => {\n this.annaFilterService.updateStateOfAllTheKeys(this.annaSortService.columnSortState);\n }, 0);\n }\n\n this.enableRadioButtons(this.tableData);\n this.createTotalRow();\n\n if (this.orderInfoData.reasonForNoRevision) {\n this.checkAndSetMessageBoxData(\n this.orderInfoData.reasonForNoRevision,\n this.formattedResponse?.outstandingSpots?.length > 0,\n );\n } else {\n this.messageBoxData = null;\n }\n\n this.setGenerateOffersReportConfirmationPopupConfig();\n\n this.allCancelEligibleMakegoodOfferNumbers = [];\n this.allCancelEligibleMakegoodOfferNumbers = sortBy(\n this.formattedResponse?.offeredMGsAndADUs\n ?.filter(\n (n: AdditionalSpotInformation) => n.allowCancel && n.offerNumber !== null && n.offerNumber !== \"\",\n )\n .map((n: AdditionalSpotInformation) => ({\n offerNumber: n.offerNumber,\n uniqueId: n.uniqueId,\n })),\n [\"offerNumber\"],\n );\n\n this.setOrReleaseLock(reinitIntelliFilter);\n\n setTimeout(() => {\n this.setTableHeight();\n this.cdRef.detectChanges();\n }, 0);\n this.showSkeletonLoading = false;\n }\n\n setOrReleaseLock(reinitIntelliFilter: boolean) {\n const resetLockVariablesOnFirstTimePageLoadForOrder = cloneDeep(reinitIntelliFilter);\n\n if (this.userNeedsLock() && this.acquireLockResponse?.lockAcquired && this.orderInfoData.anyActionsAllowed) {\n this.setLockAcquiredMessageWhenUserHasLock();\n if (this.acquireLockResponse?.lockAcquired) {\n this.resetTTLForLock();\n }\n } else if (this.acquireLockResponse && !this.acquireLockResponse?.lockAcquired) {\n this.setLockAcquiredMessageWhenUserDoesNotHaveLock();\n } else if (resetLockVariablesOnFirstTimePageLoadForOrder && this.acquireLockResponse?.lockAcquired) {\n this.releaseLock();\n this.lockMessageDetails = null;\n this.acquireLockResponse = null;\n }\n }\n\n setLockAcquiredMessageWhenUserHasLock() {\n this.lockMessageDetails = {\n message:\n \"You are currently editing this order. Please note that no one else can edit the order while you are on this page. A timer will start once you are on the page and any action you take will reset the timer.\",\n iconClass: \"mdi mdi-alert-octagon\",\n class: \"red-lock-message\",\n };\n this.youareEditingAlertTimeout = setTimeout(() => {\n this.closeLockMessage();\n this.cdRef.detectChanges();\n }, 15000);\n }\n\n setLockAcquiredMessageWhenUserDoesNotHaveLock() {\n this.lockMessageDetails = {\n // eslint-disable-next-line max-len\n message: `This order is currently being edited by ${this.acquireLockResponse?.lockAcquiredByUserName}. You can continue to view this order or edit other orders.`,\n iconClass: \"mi mdi-warning\",\n class: \"orange-lock-message\",\n };\n this.youareEditingAlertTimeout = setTimeout(() => {\n this.closeLockMessage();\n this.cdRef.detectChanges();\n }, 15000);\n }\n\n closeTimeout() {\n if (this.youareEditingAlertTimeout) {\n clearTimeout(this.youareEditingAlertTimeout);\n }\n }\n\n closeLockMessage() {\n this.lockMessageDetails = null;\n }\n\n setRevisionHeaderData() {\n if (this.ordersOrRevisonsList && this.orderData) {\n this.selectedOrderIndex = this.ordersOrRevisonsList.findIndex(\n (n) =>\n n.orderId === this.orderData?.orderId &&\n Math.floor(n.revisionNo) === Math.floor(this.orderData.revisionNo),\n );\n this.headerInfo = {\n currentOrderIndex: this.selectedOrderIndex,\n totalOrders: this.ordersOrRevisonsList.length,\n };\n } else {\n this.showSkeletonLoading = false;\n }\n }\n\n showHideBuyerRejectedEasyFilter() {\n const isBuyerRejectedSpotsPresentInOfferMg =\n this.formattedResponse?.offeredMGsAndADUs.filter(\n (x) => x.offerStatus === OffersStatusFromBE.BUYER_REJECTED,\n ).length > 0;\n if (isBuyerRejectedSpotsPresentInOfferMg) {\n return true;\n }\n return false;\n }\n\n showHideBadlyBehavedSpotsEasyFilter() {\n return this.formattedResponse?.badlyBehavedSpots?.length > 0;\n }\n\n showHideBookedADUEasyFilter() {\n return this.formattedResponse?.offeredMGsAndADUs.filter(\n (x) => x.spotTypeCategory === \"CREDIT_ADU\",\n ).length > 0;\n }\n\n showHideCreditEasyFilter() {\n return this.formattedResponse?.offeredMGsAndADUs.filter(\n (x) => x.spotTypeCategory === \"CREDIT\",\n ).length > 0;\n }\n\n enableDisableIntelliFilter() {\n if (this.orderInfoData.revisionType === this.revisionTypeConstants.ANNA) {\n this.intelliFilter.forEach((filter) => {\n switch (filter.text) {\n case IntelliFilterConstant.BUYER_REJECTED:\n filter.isDisabled = false;\n filter.isShown = this.showHideBuyerRejectedEasyFilter();\n break;\n\n case IntelliFilterConstant.ADUs:\n case IntelliFilterConstant.MGs:\n case IntelliFilterConstant.BONUS:\n filter.isDisabled =\n this.formattedResponse.offeredMGsAndADUs.filter(\n (n: AdditionalSpotInformation) =>\n n.spotTypeCategory === this.spotsApprovalService.filterTextSpotTypeMap[filter.text],\n ).length === 0;\n break;\n\n case IntelliFilterConstant.BOOKED_ADUs:\n filter.isDisabled = false;\n filter.isShown = this.showHideBookedADUEasyFilter();\n break;\n\n case IntelliFilterConstant.CREDITS:\n filter.isDisabled = false;\n filter.isShown = this.showHideCreditEasyFilter();\n break;\n\n case IntelliFilterConstant.BADLY_BEHAVED_SPOTS:\n filter.isDisabled = false;\n filter.isShown = this.showHideBadlyBehavedSpotsEasyFilter();\n break;\n\n case IntelliFilterConstant.OUTSTANDING_SPOTS:\n filter.isDisabled = this.formattedResponse.outstandingSpots.length === 0;\n break;\n\n default:\n filter.isDisabled = true;\n break;\n }\n });\n this.enabledFiltersCount = this.intelliFilter.filter((n) => !n.isDisabled).length;\n }\n }\n\n intelliFilterInitialize() {\n this.enableDisableIntelliFilter();\n this.selectedIntelliFilter = null;\n this.enableDisableClearAllBtn();\n }\n\n intelliFilterClicked(index: number) {\n this.resetFilterVariables();\n if (this.intelliFilter[index].isActive) {\n this.checkIfOtherIntelliFilterIsApplied();\n } else {\n this.checkIfOtherIntelliFilterIsApplied();\n this.intelliFilter[index].isActive = true;\n this.annaFilterService.appliedFiltersArray.push(this.intelliFilter[index].text);\n }\n const activeFilterIndex = this.intelliFilter.findIndex((filter) => filter.isActive && !filter.isDisabled);\n this.selectedIntelliFilter = activeFilterIndex === -1 ? null : this.intelliFilter[activeFilterIndex];\n\n // Need to filter table Data\n this.filteredAtColumnLevel = false;\n this.setGenericTableDataBasedOnFilterSelected();\n this.setTableHeaders();\n this.enableRadioButtons(this.tableData);\n this.enableDisableClearAllBtn();\n this.createTotalRow();\n this.setTableHeight();\n this.updateNavigationHistory();\n // }\n }\n\n checkIfOtherIntelliFilterIsApplied() {\n if (this.orderInfoData.revisionType === this.revisionTypeConstants.ANNA) {\n const set = new Set(this.annaFilterService.appliedFiltersArray);\n\n this.intelliFilter.forEach((filter) => {\n if (filter.isActive && set.has(filter.text)) {\n set.delete(filter.text);\n }\n filter.isActive = false;\n });\n\n this.annaFilterService.appliedFiltersArray = [...set];\n }\n }\n\n removeEstimatesPriorityAndRevClassHeaderForEOS() {\n if (!this.showAUR && this.userType === \"BUYER\") {\n // Remove the estimate priorities header by finding its index and splicing\n const estimatePrioritiesHeaderIndex = this.tableHeaders.findIndex(\n (header) =>\n header.headerInfo.some((info) => info.objectKey === \"firstTwoEstimatePrioritiesForRTGMetric\") ||\n header.headerInfo.some((info) => info.objectKey === \"lastTwoEstimatePrioritiesForRTGMetric\"),\n );\n if (estimatePrioritiesHeaderIndex !== -1) {\n this.tableHeaders.splice(estimatePrioritiesHeaderIndex, 1);\n }\n }\n }\n enableDisableClearAllBtn() {\n let isFilterApplied = false;\n if (this.initialAppliedEasyFilter) {\n const filterSet = new Set(this.annaFilterService.appliedFiltersArray);\n isFilterApplied =\n (filterSet.has(this.initialAppliedEasyFilter) && filterSet.size > 1) ||\n !filterSet.has(this.initialAppliedEasyFilter);\n } else {\n isFilterApplied = this.annaFilterService.appliedFiltersArray.length > 0;\n }\n this.clearAllFilter.isDisabled = !isFilterApplied;\n }\n\n checkIfSortingOrFilteringPresentInTable() {\n let isSortApplied = false;\n this.annaSortService.columnSortState.forEach((val, key) => {\n if (val === \"ASC\" || val === \"DESC\") {\n isSortApplied = true;\n }\n });\n\n return this.annaFilterService.appliedFiltersArray.length > 0 || isSortApplied;\n }\n\n replaceLoadersInTableHeadersWithNames() {\n const ratingColumnIndex = this.tableHeaders.findIndex(\n (header) => header.headerInfo[0].objectKey === RevisionTableKeyConstants.ORDERED_RATING_KEY,\n );\n const impsColumnIndex = this.tableHeaders.findIndex(\n (header) => header.headerInfo[0].objectKey === RevisionTableKeyConstants.ORDERED_IMPRESSION_KEY,\n );\n\n const rtgEstimateColumnIndex = this.tableHeaders.findIndex(\n (header) => header.headerInfo[0].objectKey === \"firstTwoEstimatePrioritiesForRTGMetric\",\n );\n const impsEstimateColumnIndex = this.tableHeaders.findIndex(\n (header) => header.headerInfo[0].objectKey === \"firstTwoEstimatePrioritiesForIMPSMetric\",\n );\n\n if (this.selectedMetric?.text === OrderMetrics.imps && impsColumnIndex === -1) {\n this.tableHeaders.splice(ratingColumnIndex, 1, this.spotsApprovalService.returnIMPSObject(this.showAUR));\n if (this.userType === \"SELLER\") {\n this.tableHeaders.splice(\n rtgEstimateColumnIndex,\n 1,\n this.spotsApprovalService.returnEstimateIMPSObject(this.orderInfoData?.estimatePriority),\n );\n }\n }\n if (this.selectedMetric?.text === OrderMetrics.rating && ratingColumnIndex === -1) {\n this.tableHeaders.splice(impsColumnIndex, 1, this.spotsApprovalService.returnRTGObject(this.showAUR));\n if (this.userType === \"SELLER\") {\n this.tableHeaders.splice(\n impsEstimateColumnIndex,\n 1,\n this.spotsApprovalService.returnEstimateRTGObject(this.orderInfoData?.estimatePriority),\n );\n }\n }\n\n this.showImpressions = this.selectedMetric?.text === OrderMetrics.imps;\n const bookedRTGOrIMPSColumnIndex: number = this.tableHeaders.findIndex(\n (header) =>\n header.headerInfo[0].objectKey === RevisionTableKeyConstants.ORDERED_RATING_KEY ||\n header.headerInfo[0].objectKey === RevisionTableKeyConstants.ORDERED_IMPRESSION_KEY,\n );\n this.tableHeaders[bookedRTGOrIMPSColumnIndex].headerInfo[0].name = this.showImpressions\n ? RevisionTableHeaderConstants.IMPRESSIONS\n : RevisionTableHeaderConstants.RATING_ORDERED_HEADER;\n\n const estimateIndex: number = this.tableHeaders.findIndex(\n (header) =>\n header.headerInfo[0].objectKey === \"firstTwoEstimatePrioritiesForIMPSMetric\" ||\n header.headerInfo[0].objectKey === \"firstTwoEstimatePrioritiesForRTGMetric\",\n );\n if (this.userType === \"SELLER\") {\n const estimatePrioritiesData: ESTIMATEPRIORITIES[] = this.orderInfoData?.estimatePriority\n ? cloneDeep(this.orderInfoData?.estimatePriority)\n : this.spotsApprovalService.defaultEstimatePrioritiesData;\n\n if (\n !this.tableHeaders[estimateIndex].headerInfo[0].name &&\n estimatePrioritiesData &&\n estimatePrioritiesData.length > 0\n ) {\n this.tableHeaders[estimateIndex].headerInfo[0].name = this.showImpressions\n ? `${this.genericSpotsApprovalService.estimatePriorityKeyColumnNameMapForIMPSMetric[\n estimatePrioritiesData[0]\n ]\n } | ${this.genericSpotsApprovalService.estimatePriorityKeyColumnNameMapForIMPSMetric[\n estimatePrioritiesData[1]\n ]\n }`\n : `${this.genericSpotsApprovalService.estimatePriorityKeyColumnNameMapForRTGMetric[\n estimatePrioritiesData[0]\n ]\n } | ${this.genericSpotsApprovalService.estimatePriorityKeyColumnNameMapForRTGMetric[\n estimatePrioritiesData[1]\n ]\n }`;\n\n this.tableHeaders[estimateIndex].headerInfo[1].name = this.showImpressions\n ? `${this.genericSpotsApprovalService.estimatePriorityKeyColumnNameMapForIMPSMetric[\n estimatePrioritiesData[2]\n ]\n } | ${this.genericSpotsApprovalService.estimatePriorityKeyColumnNameMapForIMPSMetric[\n estimatePrioritiesData[3]\n ]\n }`\n : `${this.genericSpotsApprovalService.estimatePriorityKeyColumnNameMapForRTGMetric[\n estimatePrioritiesData[2]\n ]\n } | ${this.genericSpotsApprovalService.estimatePriorityKeyColumnNameMapForRTGMetric[\n estimatePrioritiesData[3]\n ]\n }`;\n }\n }\n }\n\n setTableHeaders() {\n this.tableHeaders =\n this.spotsApprovalService.getAllTableHeadersForAnnaRevision(\n this.showAUR,\n this.userType === \"BUYER\",\n this.userHasEditPrivilege,\n this.isCompletedRevision,\n );\n\n this.replaceLoadersInTableHeadersWithNames();\n\n if (this.orderInfoData.revisionType === this.revisionTypeConstants.ANNA) {\n this.showSubmitButton = this.userHasEditPrivilege && this.orderInfoData.showSubmitButton;\n\n this.disableSubmitButton =\n !this.acquireLockResponse ||\n this.filteredAtColumnLevel ||\n this.disableActions() ||\n (this.selectedIntelliFilter != null && this.selectedIntelliFilter !== undefined);\n\n this.noIntelliFilterSelected = !this.selectedIntelliFilter;\n\n if (this.isCompletedRevision || !this.userHasEditPrivilege) {\n this.filterOutActionHeader();\n }\n this.addOrRemoveActionableIconColumnForEditUndoReofferOrCancel();\n if (\n (this.selectedIntelliFilter &&\n this.selectedIntelliFilter.text === IntelliFilterConstant.OUTSTANDING_SPOTS) ||\n this.filteredAtColumnLevel\n ) {\n this.tableHeaders = this.tableHeaders.filter(\n (val) => val.headerInfo[0].name !== RevisionTableHeaderConstants.BIZ_RULE_HEADER,\n );\n }\n\n const ratingColumnIndex = this.tableHeaders.findIndex(\n (header) => header.headerInfo[0].objectKey === RevisionTableKeyConstants.ORDERED_RATING_KEY,\n );\n const impsColumnIndex = this.tableHeaders.findIndex(\n (header) => header.headerInfo[0].objectKey === RevisionTableKeyConstants.ORDERED_IMPRESSION_KEY,\n );\n if (this.selectedMetric?.text === OrderMetrics.imps && impsColumnIndex === -1) {\n this.tableHeaders.splice(\n ratingColumnIndex,\n 1,\n this.spotsApprovalService.returnIMPSObject(this.showAUR),\n );\n } else if (this.selectedMetric?.text === OrderMetrics.rating && ratingColumnIndex === -1) {\n this.tableHeaders.splice(impsColumnIndex, 1, this.spotsApprovalService.returnRTGObject(this.showAUR));\n }\n\n this.tableHeaders = cloneDeep(this.tableHeaders);\n // this.cdRef.detectChanges();\n }\n\n this.isActionableColumnPresent();\n }\n\n addOrRemoveActionableIconColumnForEditUndoReofferOrCancel() {\n const anyDataForEditUndoReofferOrCancel = this.tableData?.filter(\n (n) => n.allowEdit || n.allowUndo || n.showUndo || n.allowReOffer || n.allowCancel,\n )?.length;\n const actionColIndex = this.tableHeaders.findIndex(\n (header) => header.headerInfo[0].objectKey === RevisionTableHeaderConstants.ACTION_ICONS_OBJECT_KEY,\n );\n const actionColPresent = actionColIndex !== -1;\n\n if (\n this.userType === \"SELLER\" &&\n this.userHasEditPrivilege &&\n !actionColPresent &&\n anyDataForEditUndoReofferOrCancel\n ) {\n this.tableHeaders.push(this.spotsApprovalService.returnActionableIconObject());\n } else if (actionColPresent) {\n this.tableHeaders.splice(actionColIndex, 1);\n }\n }\n\n isActionableColumnPresent() {\n let scrollBarLeftOffset = 0;\n let actionColumnRightStickyOffset = 0;\n const actionColumn = this.tableHeaders.filter(\n (header) => header.headerInfo[0].name === RevisionTableHeaderConstants.ACTION_HEADER,\n );\n const editUndoReofferOrCancelColumn = this.tableHeaders.filter(\n (header) => header.headerInfo[0].objectKey === RevisionTableHeaderConstants.ACTION_ICONS_OBJECT_KEY,\n );\n const totalAmountColumn = this.tableHeaders.filter(\n (header) => header.headerInfo[0].objectKey === RevisionTableHeaderConstants.TOTAL_AMOUNT_KEY,\n );\n\n if (totalAmountColumn?.length > 0) {\n let columnWidth = totalAmountColumn[0].width;\n columnWidth = columnWidth.replace(\"px\", \"\");\n scrollBarLeftOffset = +columnWidth;\n }\n\n if (actionColumn?.length > 0) {\n let columnWidth = actionColumn[0].width;\n columnWidth = columnWidth.replace(\"px\", \"\");\n scrollBarLeftOffset = +columnWidth;\n }\n\n if (editUndoReofferOrCancelColumn?.length > 0) {\n let columnWidth = editUndoReofferOrCancelColumn[0].width;\n columnWidth = columnWidth.replace(\"px\", \"\");\n actionColumnRightStickyOffset += +columnWidth;\n scrollBarLeftOffset += +columnWidth;\n }\n\n document.documentElement.style.setProperty(\n `--scrollbar-left-offset-for-sticky-col`,\n `${scrollBarLeftOffset}px`,\n );\n document.documentElement.style.setProperty(\n `--action-column-right-offset`,\n `${actionColumnRightStickyOffset}px`,\n );\n }\n\n filterOutActionHeader() {\n this.tableHeaders = this.tableHeaders.filter(\n (val) => val.headerInfo[0].name !== RevisionTableHeaderConstants.ACTION_HEADER,\n );\n }\n\n sortResponseBasedOnStatus(arr: AdditionalSpotInformation[], key: \"offeredMGsAndADUs\" | \"outstandingSpots\") {\n if (key === \"offeredMGsAndADUs\") {\n let array: AdditionalSpotInformation[] = [];\n for (let i = 0; i < arr.length;) {\n if (\n (arr[i].groupId === \"00000000-0000-0000-0000-000000000000\")\n ) {\n array.push(arr[i]);\n i += 1;\n } else {\n const spotsBelongingToGroup = arr.filter((n) => n.groupId === arr[i].groupId);\n array = [...array, ...orderBy(spotsBelongingToGroup, [\"spotType\", \"status\"], [\"desc\", \"asc\"])];\n i += spotsBelongingToGroup.length;\n }\n }\n return array;\n }\n return arr;\n }\n\n isIndependentSpot(arr: AdditionalSpotInformation) {\n if (arr.groupId === \"00000000-0000-0000-0000-000000000000\") {\n return true;\n }\n return false;\n }\n\n formatResponseForGenericTable(arr: AdditionalSpotInformation[]) {\n const badlyBehavedSpotGroupIds = this.formattedResponse.badlyBehavedSpots?.map(n => n.groupId);\n for (let i = 0; i < arr?.length; i++) {\n if (this.isIndependentSpot(arr[i])) {\n arr[i].hidedisplaySpotTypeTd = false;\n arr[i].hideactionTd = false;\n arr[i].hideofferIdTd = false;\n arr[i].hideunmappedBuyerLineWarningIconTd = false;\n arr[i].hideeditUndoReofferOrCancelColumnTd = false;\n arr[i].hidebusinessRulesTd = false;\n arr[i].businessRulesRowspan = 1;\n arr[i].editUndoReofferOrCancelColumnRowspan = 1;\n arr[i].offerIdRowspan = 1;\n arr[i].displaySpotTypeRowspan = 1;\n arr[i].actionRowspan = 1;\n arr[i].unmappedBuyerLineWarningIconRowspan = 1;\n this.setRadioButtonConfig(arr[i]);\n } else if (badlyBehavedSpotGroupIds?.length > 0 && badlyBehavedSpotGroupIds.includes(arr[i].groupId)) {\n arr[i].hidedisplaySpotTypeTd = false;\n arr[i].hideactionTd = false;\n arr[i].hideunmappedBuyerLineWarningIconTd = false;\n arr[i].hidebusinessRulesTd = false;\n arr[i].hidelengthTd = false;\n arr[i].hideinventoryCodeTd = false;\n arr[i].hidedaypartTd = false;\n arr[i].hidetimeTd = false;\n arr[i].hideofferIdTd = false;\n arr[i].hideeditUndoReofferOrCancelColumnTd = false;\n this.setRadioButtonConfig(arr[i]);\n\n // eslint-disable-next-line no-unsafe-optional-chaining\n if (i < arr?.length - 1 && arr[i + 1]?.groupId === arr[i].groupId &&\n arr[i].spotTypeCategory === \"PREEMPTION\" &&\n arr[i + 1]?.spotTypeCategory === \"MAKEGOOD\") {\n arr[i + 1].hideactionTd = true;\n arr[i + 1].hideunmappedBuyerLineWarningIconTd = true;\n arr[i + 1].hidebusinessRulesTd = true;\n arr[i + 1].hideinventoryCodeTd = true;\n arr[i + 1].hidetimeTd = true;\n arr[i + 1].hideofferIdTd = true;\n arr[i + 1].hideeditUndoReofferOrCancelColumnTd = true;\n arr[i].businessRules = arr[i + 1].businessRules;\n arr[i].unmappedBuyerLineWarningIconRowspan = 2;\n arr[i].offerIdRowspan = 2;\n arr[i].businessRulesRowspan = 2;\n arr[i].actionRowspan = 2;\n arr[i].editUndoReofferOrCancelColumnRowspan = 2;\n arr[i].approveOfferComment = cloneDeep(arr[i + 1].approveOfferComment);\n arr[i].markForCreditComment = cloneDeep(arr[i + 1]?.markForCreditComment);\n arr[i].rejectOfferComments = cloneDeep(arr[i + 1]?.rejectOfferComments);\n arr[i].gtClass = `${arr[i].gtClass} bbs-group-first-row`;\n arr[i + 1].gtClass = `${arr[i + 1].gtClass} bbs-group-last-row`;\n this.setRadioButtonConfig(arr[i + 1]);\n }\n\n // eslint-disable-next-line no-unsafe-optional-chaining\n if (i + 1 < arr?.length - 1 && arr[i + 2]?.groupId === arr[i].groupId && arr[i + 2]?.spotTypeCategory === \"CREDIT\") {\n arr[i + 2].hidedisplaySpotTypeTd = false;\n arr[i + 2].hideactionTd = false;\n arr[i + 2].hideunmappedBuyerLineWarningIconTd = false;\n arr[i + 2].hidebusinessRulesTd = false;\n arr[i + 2].hidelengthTd = false;\n arr[i + 2].hideinventoryCodeTd = false;\n arr[i + 2].hidedaypartTd = false;\n arr[i + 2].hidetimeTd = false;\n arr[i + 2].hideofferIdTd = false;\n arr[i + 2].hideeditUndoReofferOrCancelColumnTd = false;\n arr[i + 1].gtClass = arr[i + 1].gtClass?.replace(\"bbs-group-last-row\", \"\");\n arr[i + 1].gtClass = `${arr[i + 1].gtClass} bbs-group-intermediate-row`;\n arr[i + 2].gtClass = `${arr[i + 2].gtClass} bbs-group-last-row`;\n arr[i+2].enableCommentEdit = cloneDeep(arr[i].enableAllowedActions);\n this.setRadioButtonConfig(arr[i + 2]);\n }\n\n i = findLastIndex(\n arr,\n (n: AdditionalSpotInformation) => n.groupId === arr[i].groupId,\n );\n } else {\n const diffStatusesBelongingToGroup: string[] = cloneDeep(\n uniqBy(\n arr.filter((n) => n.groupId === arr[i].groupId),\n \"displaySpotType\",\n ),\n ).map((n) => n.displaySpotType);\n const lastIndexOfFirstStatusBelongingToGroup: number = findLastIndex(\n arr,\n (n: AdditionalSpotInformation) =>\n n.displaySpotType === arr[i].displaySpotType && n.groupId === arr[i].groupId,\n );\n const lastSpotIndexOfGroup: number = findLastIndex(\n arr,\n (n: AdditionalSpotInformation) => n.groupId === arr[i].groupId,\n );\n const preemptionRowsCount: number = lastIndexOfFirstStatusBelongingToGroup - i + 1;\n const spotsCountBelongingToGroup: number = lastSpotIndexOfGroup - i + 1;\n let j: number = cloneDeep(i + 1);\n\n const gtClass = arr[i].spotTypeCategory === \"ADU\" ? \" status-align-top-adu\" : \" status-align-top\";\n const statusGTClass =\n arr[i].spotTypeCategory === \"ADU\" ? \" status-align-top-adu\" : \" status-value-align-top\";\n\n if (spotsCountBelongingToGroup > 1) {\n if (preemptionRowsCount > 1) {\n arr[i].gtClass = arr[i].gtClass + gtClass + statusGTClass;\n } else {\n arr[i].gtClass += gtClass;\n }\n } else {\n arr[i].gtClass = arr[i].gtClass?.replace(\"status-align-top\", \"\");\n }\n arr[i].hidedisplaySpotTypeTd = false;\n arr[i].hideactionTd = false;\n arr[i].hideunmappedBuyerLineWarningIconTd = false;\n arr[i].hidebusinessRulesTd = false;\n arr[i].hidelengthTd = false;\n arr[i].hideinventoryCodeTd = false;\n arr[i].hidedaypartTd = false;\n arr[i].hidetimeTd = false;\n arr[i].hideofferIdTd = false;\n arr[i].hideeditUndoReofferOrCancelColumnTd = false;\n\n const filteredArray: AdditionalSpotInformation[] = arr.filter(\n (n) => n.groupId === arr[i].groupId && n.businessRules !== \"-\",\n );\n const setDisplayBusinessRulesTo: \"Standard\" | \"Relaxed\" | \"-\" | \"Free Flow\" =\n filteredArray.length > 0 ? filteredArray[0].businessRules : \"-\";\n\n arr[i].businessRules = setDisplayBusinessRulesTo;\n arr[i].offerIdRowspan = spotsCountBelongingToGroup;\n arr[i].businessRulesRowspan = spotsCountBelongingToGroup;\n arr[i].actionRowspan = spotsCountBelongingToGroup;\n arr[i].unmappedBuyerLineWarningIconRowspan = spotsCountBelongingToGroup;\n arr[i].displaySpotTypeRowspan = preemptionRowsCount;\n\n arr[i].editUndoReofferOrCancelColumnRowspan = spotsCountBelongingToGroup;\n if (arr[i].spotTypeCategory === \"ADU\") {\n arr[i].lengthRowspan = spotsCountBelongingToGroup;\n arr[i].inventoryCodeRowspan = spotsCountBelongingToGroup;\n arr[i].daypartRowspan = spotsCountBelongingToGroup;\n arr[i].timeRowspan = spotsCountBelongingToGroup;\n }\n\n // if at least one preemption spot was marked for credit, that group should show mark for credit option\n const array = cloneDeep(arr);\n const markedForCreditObjectOfGroup = cloneDeep(\n array\n .filter((n) => n.groupId === arr[i].groupId)\n .filter((obj) => obj.allowedActions && obj.allowedActions[\"Mark for Credit\"]),\n );\n if (markedForCreditObjectOfGroup.length > 0) {\n arr[i].allowedActions = cloneDeep(markedForCreditObjectOfGroup[0].allowedActions);\n }\n const sellerOfferCommentsForGroup = array.filter(\n (n) => n.groupId === arr[i].groupId && n.approveOfferComment != null,\n );\n if (sellerOfferCommentsForGroup?.length > 0) {\n arr[i].approveOfferComment = cloneDeep(sellerOfferCommentsForGroup[0].approveOfferComment);\n }\n\n const markForCreditCommentGroup = array.filter(\n (n) => n.groupId === arr[i].groupId && n.markForCreditComment != null,\n );\n if (markForCreditCommentGroup?.length > 0) {\n arr[i].markForCreditComment = cloneDeep(markForCreditCommentGroup[0]?.markForCreditComment);\n }\n\n const rejectionCommentGroup = array.filter(\n (n) => n.groupId === arr[i].groupId && n.rejectOfferComments?.length !== 0,\n );\n if (rejectionCommentGroup?.length > 0) {\n arr[i].rejectOfferComments = cloneDeep(rejectionCommentGroup[0]?.rejectOfferComments);\n }\n this.setRadioButtonConfig(arr[i]);\n\n while (j <= lastSpotIndexOfGroup) {\n arr[j].hidedisplaySpotTypeTd = true;\n arr[j].hideactionTd = true;\n arr[j].hideunmappedBuyerLineWarningIconTd = true;\n arr[j].hideofferIdTd = true;\n arr[j].hideeditUndoReofferOrCancelColumnTd = true;\n arr[j].hidebusinessRulesTd = true;\n arr[j].businessRules = setDisplayBusinessRulesTo;\n if (markForCreditCommentGroup?.length > 0) {\n arr[j].markForCreditComment = cloneDeep(markForCreditCommentGroup[0]?.markForCreditComment);\n }\n this.setRadioButtonConfig(arr[j]);\n if (arr[j].spotTypeCategory === \"ADU\") {\n arr[j].hidelengthTd = true;\n arr[j].hideinventoryCodeTd = true;\n arr[j].hidedaypartTd = true;\n arr[j].hidetimeTd = true;\n }\n j += 1;\n }\n\n const groupIdToCompare = arr[i].groupId;\n const spotsOfGroup = cloneDeep(arr.filter((n) => n.groupId === groupIdToCompare));\n for (let k = 1; k < diffStatusesBelongingToGroup.length; k++) {\n const index: number = spotsOfGroup?.findIndex(\n (n) => n.displaySpotType === diffStatusesBelongingToGroup[k],\n );\n const countOfSpotsWithSameStatus: number = spotsOfGroup.filter(\n (n) => n.displaySpotType === diffStatusesBelongingToGroup[k],\n ).length;\n const MGSpotsIndex = i + index;\n if (arr[MGSpotsIndex]) {\n arr[MGSpotsIndex].hidedisplaySpotTypeTd = false;\n arr[MGSpotsIndex].hideofferIdTd = true;\n arr[MGSpotsIndex].displaySpotTypeRowspan = countOfSpotsWithSameStatus;\n arr[MGSpotsIndex].offerIdRowspan = countOfSpotsWithSameStatus;\n const diffStatusGtClass =\n arr[MGSpotsIndex].spotTypeCategory === \"ADU\"\n ? \" status-align-top-adu\"\n : \" status-align-top\";\n\n arr[MGSpotsIndex].gtClass =\n countOfSpotsWithSameStatus > 1\n ? arr[MGSpotsIndex].gtClass + diffStatusGtClass\n : arr[MGSpotsIndex].gtClass;\n }\n arr[i].hidedisplaySpotTypeTd = false;\n arr[i].hideofferIdTd = false;\n }\n\n i = j - 1;\n }\n }\n return arr;\n }\n\n resetFilterVariables() {\n this.annaFilterService.tooltipSelectedMap = new Map();\n this.annaFilterService.selectedRadio = null;\n this.annaFilterService.appliedFiltersArray = [];\n }\n\n clearAllBtnClicked() {\n this.nonEditableGTComponent?.setScrollToInitialPosition();\n this.tableData = [];\n this.filteredAtColumnLevel = false;\n this.resetFilterVariables();\n this.checkIfOtherIntelliFilterIsApplied();\n this.selectedIntelliFilter = null;\n this.setDefaultFilter();\n this.setGenericTableDataBasedOnFilterSelected();\n this.enableRadioButtons(this.tableData);\n this.setTableHeaders();\n this.createTotalRow();\n this.setTableHeight();\n this.enableDisableClearAllBtn();\n this.updateNavigationHistory();\n this.annaFilterService.updateStateOfAllTheKeys(new Map());\n }\n\n setDefaultFilter() {\n if (this.initialAppliedEasyFilter) {\n const index = this.intelliFilter.findIndex((filter) => filter.text === this.initialAppliedEasyFilter);\n this.intelliFilter[index].isActive = true;\n this.selectedIntelliFilter = this.intelliFilter[index];\n this.annaFilterService.appliedFiltersArray.push(this.selectedIntelliFilter.text);\n }\n }\n\n setGenericTableDataBasedOnFilterSelected() {\n this.tableData = [];\n if (this.parentPage === \"ORDERS\") {\n this.tableData = [\n ...this.formattedResponse.offeredMGsAndADUs,\n ...this.formattedResponse.outstandingSpots.filter(\n (n: AdditionalSpotInformation) => n.displaySpotType === \"Outstanding PE: Marked for Credit\",\n ),\n ...this.formattedResponse.badlyBehavedSpots,\n ];\n } else {\n const activeFilterIndex = this.intelliFilter.findIndex((filter) => filter.isActive);\n if (activeFilterIndex !== -1) {\n const intelliFilter = this.intelliFilter[activeFilterIndex];\n this.createTableDataForANNARevisions(intelliFilter);\n } else {\n this.intelliFilter.forEach((filter) => {\n // there would be 3 filters: offers and o/s and buyer rejected;\n // but we only need to create the table data for offers and o/s (buyer rejected is part of offers)\n // if we add buyer rejected will get redundant data\n if (!filter.isDisabled && filter.isShown && filter.text !== IntelliFilterConstant.BUYER_REJECTED) {\n this.createTableDataForANNARevisions(filter);\n }\n });\n }\n }\n this.setRowClass();\n if (this.tableData.length === 0) {\n this.tableHeaders = this.tableHeaders.filter((val) => val.headerInfo[0].name !== \"\");\n }\n this.clonedTableData = cloneDeep(this.tableData);\n }\n\n createTableDataForANNARevisions(intelliFilter: IntelliFilter) {\n let filteredData: AdditionalSpotInformation[] = [];\n switch (intelliFilter?.text) {\n case IntelliFilterConstant.BUYER_REJECTED:\n filteredData = this.formattedResponse?.offeredMGsAndADUs.filter(\n (x) => x.offerStatus === OffersStatusFromBE.BUYER_REJECTED,\n );\n this.tableData = [...filteredData];\n break;\n\n case IntelliFilterConstant.MGs:\n filteredData = this.formattedResponse?.offeredMGsAndADUs.filter(\n (x: AdditionalSpotInformation) =>\n x.spotTypeCategory === \"PREEMPTION\" ||\n x.spotTypeCategory === \"UNRESOLVED\" ||\n x.spotTypeCategory === \"MAKEGOOD\"\n );\n this.tableData = [...this.tableData, ...filteredData];\n break;\n\n case IntelliFilterConstant.CREDITS:\n filteredData = this.formattedResponse?.offeredMGsAndADUs.filter(\n (x: AdditionalSpotInformation) =>\n x.spotTypeCategory === \"CREDIT\",\n );\n this.tableData = [...this.tableData, ...filteredData];\n break;\n\n case IntelliFilterConstant.ADUs:\n filteredData = this.formattedResponse?.offeredMGsAndADUs.filter(\n (x: AdditionalSpotInformation) => x.spotTypeCategory === \"ADU\",\n );\n this.tableData = [...this.tableData, ...filteredData];\n break;\n\n case IntelliFilterConstant.BONUS:\n filteredData = this.formattedResponse?.offeredMGsAndADUs.filter(\n (x: AdditionalSpotInformation) => x.spotTypeCategory === \"BONUS\",\n );\n this.tableData = [...this.tableData, ...filteredData];\n break;\n\n case IntelliFilterConstant.BOOKED_ADUs:\n filteredData = this.formattedResponse?.offeredMGsAndADUs.filter(\n (x: AdditionalSpotInformation) => x.spotTypeCategory === \"CREDIT_ADU\",\n );\n this.tableData = [...this.tableData, ...filteredData];\n break;\n\n case IntelliFilterConstant.OUTSTANDING_SPOTS:\n filteredData = cloneDeep(this.formattedResponse?.outstandingSpots);\n this.tableData = [...this.tableData, ...filteredData];\n break;\n\n case IntelliFilterConstant.BADLY_BEHAVED_SPOTS:\n filteredData = cloneDeep(this.formattedResponse?.badlyBehavedSpots);\n this.tableData = [...this.tableData, ...filteredData];\n break;\n\n default:\n break;\n }\n }\n\n setRowClass() {\n let setWhiteBackground = true;\n let previousRowGroupId: string | null = null;\n let currentRowGroupId = null;\n this.tableData.forEach((row: AdditionalSpotInformation, index) => {\n currentRowGroupId = row.groupId;\n row.gtClass = row.gtClass?.replace(\"gray-background-row\", \" \");\n row.gtClass = row.gtClass?.replace(\"white-background-row\", \" \");\n if (\n currentRowGroupId !== \"00000000-0000-0000-0000-000000000000\" &&\n previousRowGroupId === \"00000000-0000-0000-0000-000000000000\"\n ) {\n row.gtClass = setWhiteBackground\n ? `${row.gtClass} white-background-row `\n : `${row.gtClass} gray-background-row `;\n previousRowGroupId = currentRowGroupId;\n // if (row.spotCategoryKeyForEasyFilters === \"badlyBehavedSpots\" && !tableDataFilteredOrSorted) {\n // row.gtClass = row.gtClass + `bbs-group-first-row`;\n // }\n } else if (\n currentRowGroupId !== \"00000000-0000-0000-0000-000000000000\" &&\n previousRowGroupId === currentRowGroupId\n ) {\n row.gtClass = setWhiteBackground\n ? `${row.gtClass} white-background-row `\n : `${row.gtClass} gray-background-row `;\n previousRowGroupId = currentRowGroupId;\n } else if (\n currentRowGroupId !== \"00000000-0000-0000-0000-000000000000\" &&\n previousRowGroupId !== currentRowGroupId\n ) {\n setWhiteBackground = !setWhiteBackground;\n row.gtClass = setWhiteBackground\n ? `${row.gtClass} white-background-row `\n : `${row.gtClass} gray-background-row `;\n previousRowGroupId = currentRowGroupId;\n\n const isPESpotExcludedFromFuture =\n this.tableData.filter(\n (n) =>\n n.groupId === row.groupId &&\n n.excludeFromFutureOffers &&\n (n.spotTypeCategory === \"PREEMPTION\" || n.spotTypeCategory === \"UNRESOLVED\"),\n )?.length > 0;\n const isPESpotExcludedFromFutureMsg =\n \"This preemption has been excluded from further attempts for MakeGoods\";\n const remarks = this.tableData.filter((n) => n.groupId === row.groupId && n.remarks);\n\n row.spotTypeActionKey = [\n {\n showObjectKey: false,\n additionalText: row.displaySpotType,\n },\n {\n showObjectKey: false,\n svgOrIconName:\n GenericSpotsApprovalService.reinitialseFilter && isPESpotExcludedFromFuture\n ? SvgOrIconNames.CANCEL_ICON\n : null,\n svgOrIconTooltipMsg: GenericSpotsApprovalService.reinitialseFilter\n ? isPESpotExcludedFromFutureMsg\n : null,\n },\n {\n showObjectKey: false,\n svgOrIconName: remarks?.length > 0 ? SvgOrIconNames.INFORMATION_OUTLINE_ICON : null,\n svgOrIconTooltipMsg: remarks?.length > 0 ? remarks[0].remarks : \"\",\n },\n {\n showObjectKey: false,\n svgOrIconName:\n // eslint-disable-next-line no-nested-ternary\n row.preemptMessages\n ? row.spotCategoryKeyForEasyFilters !== \"offeredMGsAndADUs\"\n ? SvgOrIconNames.ALERT_OCTAGON_ICON\n : SvgOrIconNames.INFORMATION_OUTLINE_ICON\n : null,\n svgOrIconTooltipMsg:\n row.preemptMessages\n },\n ];\n } else if (currentRowGroupId === \"00000000-0000-0000-0000-000000000000\") {\n if (index !== 0) {\n setWhiteBackground = !setWhiteBackground;\n }\n row.gtClass = setWhiteBackground\n ? `${row.gtClass} white-background-row `\n : `${row.gtClass} gray-background-row `;\n }\n if (this.showAUR) {\n const svgOrIconTooltipMsgs: string[] = [];\n if (this.showBadlyBehavedSpotsTooltipCellLevel && this.showAUR && row.highlightRates)\n svgOrIconTooltipMsgs.push(\"Booked Rate is less than 80% of the Booked Average Rate\");\n if (\n this.orderData?.revisionType === RevisionTypeConstants.BUYER &&\n row.previousActualRate !== row.actualRate &&\n (row.displaySpotType === \"Rate Change\" ||\n row.displaySpotType === \"Rating/IMPS Change\" ||\n row.displaySpotType === \"Rate & Rating/IMPS Change\")\n ) {\n svgOrIconTooltipMsgs.push(\n `The Booked Rate has been modified from $${row.previousActualRate} to $${row.actualRate}`,\n );\n }\n let svgOrIconTooltipMsg: string;\n if (svgOrIconTooltipMsgs.length > 0) {\n svgOrIconTooltipMsg =\n svgOrIconTooltipMsgs.length === 1\n ? svgOrIconTooltipMsgs[0]\n : GenericSpotsApprovalService.returnTooltipsAsList(svgOrIconTooltipMsgs);\n }\n\n row.displayRateActionKey = [\n {\n showObjectKey: true,\n },\n {\n showObjectKey: false,\n svgOrIconName: svgOrIconTooltipMsgs.length > 0 ? SvgOrIconNames.INFORMATION_OUTLINE_ICON : null,\n svgOrIconTooltipMsg,\n },\n ];\n\n if (row.rateImpactValue) {\n row.displayRateActionKey.push({\n showObjectKey: false,\n additionalText: \"(\",\n additionalTextClass: \"pr-0\",\n svgOrIconName: SvgOrIconNames.TRENDING_UP,\n svgOrIconTooltipMsg: row.badlyBehavedSpotRateImpactToolTipMessage,\n svgOrIconAdditionalTextTooltipMsg: row.badlyBehavedSpotRateImpactToolTipMessage,\n });\n row.displayRateActionKey.push({\n showObjectKey: false,\n additionalText: `<span class=\"green-text\">${row.rateImpactValue}</span>)`,\n svgOrIconTooltipMsg: row.badlyBehavedSpotRateImpactToolTipMessage,\n svgOrIconAdditionalTextTooltipMsg: row.badlyBehavedSpotRateImpactToolTipMessage,\n });\n }\n if (\n this.orderData?.revisionType === RevisionTypeConstants.BUYER &&\n (row.displaySpotType === \"Rate Change\" || row.displaySpotType === \"Rating/IMPS Change\")\n ) {\n if (row.previousActualRate !== row.actualRate) {\n row.displayRateTdClass = \"rate-td-yellow-highlight\";\n }\n if (row.previousActualImpressions !== row.actualImpressions) {\n row.displayRateTdClass = \"rtg-td-yellow-highlight\";\n }\n if (row.previousActualRatings !== row.actualRatings) {\n row.displayRateTdClass = \"imps-td-yellow-highlight\";\n }\n }\n }\n\n const CPPOrCPM: \"CPP\" | \"CPM\" = this.selectedMetric.text === OrderMetrics.imps ? \"CPM\" : \"CPP\";\n row.bookedRTGActionKey = new IconActionForBookedRTGColumn(\n row,\n CPPOrCPM,\n row.ratings,\n this.showAUR && row.spotTypeCategory !== \"ADU\",\n this.showBadlyBehavedSpotsTooltipCellLevel && this.showAUR && row.highlightRtgOrImps,\n this.orderInfoData.revisionType === \"BUYER\" && row.previousActualRatings !== row.actualRatings,\n ).tooltipObjList;\n\n // row.bookedRTGTooltipKey = row.bookedRTGActionKey[0].tooltipData;\n row.bookedIMPSActionKey = new IconActionForBookedRTGColumn(\n row,\n CPPOrCPM,\n row.impressions,\n this.showAUR && row.spotTypeCategory !== \"ADU\",\n this.showBadlyBehavedSpotsTooltipCellLevel && this.showAUR,\n this.orderInfoData.revisionType === \"BUYER\" && row.previousActualImpressions !== row.actualImpressions,\n ).tooltipObjList;\n\n const isEdited: boolean =\n ((row.spotTypeCategory === \"ADU\" || row.spotTypeCategory === \"BONUS\") && row.isGroupModified) ||\n (this.tableData.filter((n) => n.groupId && n.groupId === row.groupId && n.isGroupModified).length > 0 &&\n row.spotTypeCategory === \"MAKEGOOD\");\n\n if (isEdited && row.groupModifiedBy) {\n if (row.isFreeFlowGroup) {\n row.lastEditedOrAddedBy = `<i style=\"color: darkgray;\">(Added by ${row.groupModifiedBy})</i>`;\n } else {\n row.lastEditedOrAddedBy = `<i style=\"color: darkgray;\">(Edited by ${row.groupModifiedBy})</i>`;\n }\n }\n row.statusActionKey = [new IconActionForStatusColumn(row)];\n row.statusTooltipKey = row.statusActionKey[0]?.tooltipData;\n if (row.highlightRates && this.showAUR) {\n row.gtClass = row.gtClass?.concat(TableClassNameConstant.redColorCellBorder);\n }\n\n if (row.highlightRtgOrImps && this.showAUR) {\n row.gtClass = row.gtClass?.concat(TableClassNameConstant.orangeColorCellBorder);\n }\n });\n }\n\n gtActionRadioButtonClicked(\n event: {\n action: \"resubmit\" | \"approve\" | \"credit\" | \"noAction\";\n data: AdditionalSpotInformation;\n },\n openActionCommentModal: boolean = true,\n ) {\n const currentAction = cloneDeep(event.data.action);\n if (event.data.groupId && event.data.groupId !== \"00000000-0000-0000-0000-000000000000\") {\n this.tableData\n .filter((spot) => spot.groupId === event.data.groupId &&\n spot.RadioButtonConfig.filter((n: SpotaApprovalIRadioButton) => n.value === event.action)?.length > 0)\n .forEach((spot) => {\n spot.action = event.action;\n });\n this.clonedTableData\n .filter((spot) => spot.groupId === event.data.groupId &&\n spot.RadioButtonConfig.filter((n: SpotaApprovalIRadioButton) => n.value === event.action)?.length > 0)\n .forEach((spot) => {\n spot.action = event.action;\n });\n } else {\n this.tableData[this.tableData.findIndex((spot) => spot.spotId === event.data.spotId)].action = event.action;\n this.clonedTableData[this.clonedTableData.findIndex((spot) => spot.spotId === event.data.spotId)].action =\n event.action;\n }\n\n event.data.RadioButtonConfig.forEach((n: SpotaApprovalIRadioButton) => {\n n.icons = [];\n });\n\n if (event.action === \"resubmit\") {\n if (event.data.rejectActionComment?.length) {\n event.data.RadioButtonConfig.filter(\n (n: SpotaApprovalIRadioButton) => n.label === \"Reject\",\n )[0].icons = [{ class: \"mdi mdi-comment-quote-outline\" }];\n }\n this.openOfferRejectionReasonAndCommentModal(\n event.data,\n currentAction !== \"resubmit\" &&\n (!event.data.rejectActionComment || event.data.rejectActionComment?.length === 0),\n );\n } else if (this.orderInfoData?.isRepOrder && (event.action === \"approve\" || event.action === \"credit\")) {\n this.rowDataToRevertBackToDefault = event.data;\n event.data.RadioButtonConfig.filter(\n (n: SpotaApprovalIRadioButton) => n.value === event.action,\n )[0].icons = [{ class: \"mdi mdi-comment-quote-outline\" }];\n\n if (openActionCommentModal) {\n this.gtRadioButtonMessageIconClicked({ data: event.data });\n }\n }\n this.updateFormattedResponseData(event, event.data.RadioButtonConfig);\n this.updateTotalRowRadioButtons();\n this.resetTimerAfterUserAction();\n }\n\n updateFormattedResponseData(\n event: {\n action: \"resubmit\" | \"approve\" | \"credit\" | \"noAction\";\n data: AdditionalSpotInformation;\n },\n radioButtonConfig: SpotaApprovalIRadioButton[],\n ) {\n const selectedEasyFilterKey: \"offeredMGsAndADUs\" | \"outstandingSpots\" | \"badlyBehavedSpots\" =\n this.spotsApprovalService.filterTextKeyMap[\n this.intelliFilter[this.intelliFilter.findIndex((filter) => filter.isActive)]?.text\n ];\n\n if (selectedEasyFilterKey) {\n if (event.data.groupId && event.data.groupId === \"00000000-0000-0000-0000-000000000000\") {\n this.formattedResponse[selectedEasyFilterKey]\n .filter((spot: AdditionalSpotInformation) => spot.spotId === event.data.spotId)\n .forEach((spot: AdditionalSpotInformation) => {\n spot.action = event.action;\n spot.RadioButtonConfig = cloneDeep(radioButtonConfig);\n });\n } else {\n this.formattedResponse[selectedEasyFilterKey]\n .filter((spot: AdditionalSpotInformation) => spot.groupId === event.data.groupId && spot.enableAllowedActions)\n .forEach((spot: AdditionalSpotInformation) => {\n spot.action = event.action;\n spot.RadioButtonConfig = cloneDeep(radioButtonConfig);\n });\n }\n } else {\n this.formattedResponse.offeredMGsAndADUs\n .filter((spot: AdditionalSpotInformation) => spot.groupId === event.data.groupId)\n .forEach((spot: AdditionalSpotInformation) => {\n spot.action = event.action;\n spot.RadioButtonConfig = cloneDeep(radioButtonConfig);\n });\n this.formattedResponse.outstandingSpots\n .filter((spot: AdditionalSpotInformation) => spot.spotId === event.data.spotId)\n .forEach((spot: AdditionalSpotInformation) => {\n spot.action = event.action;\n spot.RadioButtonConfig = cloneDeep(radioButtonConfig);\n });\n this.formattedResponse.badlyBehavedSpots\n .filter((spot: AdditionalSpotInformation) => spot.groupId === event.data.groupId)\n .forEach((spot: AdditionalSpotInformation) => {\n spot.action = event.action;\n spot.RadioButtonConfig = cloneDeep(radioButtonConfig);\n });\n }\n }\n\n submitClicked() {\n this.resetTimerAfterUserAction();\n this.closeLockMessage();\n this.setConfirmationPopupConfig();\n if (this.selectedIntelliFilter) return;\n if (this.currentRevisionStatus === RevisionStatus.SellerReconfirm) {\n this.submitAwaitingSellerReconfirmationSpots();\n } else {\n this.submitAwaitingSellerApprovalSpots();\n }\n }\n\n closeCreditConfirmationPopup() {\n this.openCreditPopup = false;\n }\n\n submitAwaitingSellerApprovalSpots() {\n const creditSpotIndex = this.formattedResponse.offeredMGsAndADUs.findIndex(\n (spot: AdditionalSpotInformation) =>\n spot.action === \"credit\" &&\n spot.spotTypeCategory !== \"CREDIT_ADU\" &&\n spot.spotTypeCategory !== \"CREDIT\",\n );\n this.creditedSpots = [];\n if (creditSpotIndex === -1) {\n this.submitSpotModal.openModal();\n } else {\n this.openCreditPopup = true;\n this.cdRef.detectChanges();\n this.creditedSpots = cloneDeep(\n this.tableData.filter(\n (spot: AdditionalSpotInformation) =>\n !spot.displaySpotType.includes(\"Outstanding PE\") &&\n spot.action === \"credit\" &&\n spot.spotTypeCategory === \"PREEMPTION\",\n ),\n );\n this.formatDataForCreditPopupGenericTable();\n this.creditTablePopup.openModal();\n }\n }\n\n submitAwaitingSellerReconfirmationSpots() {\n this.submitSpotModal.openModal();\n }\n\n submitAwaitingBuyerApprovalSpots() {\n this.submitSpotModal.openModal();\n }\n\n formatDataForCreditPopupGenericTable() {\n const RadioButtonConfig: SpotaApprovalIRadioButton[] = [\n {\n value: \"credit\",\n isDisabled: false,\n label: \"Credit\",\n class: \"credit\",\n },\n {\n value: \"resubmit\",\n isDisabled: false,\n label: \"Reject\",\n class: \"reject\",\n },\n ];\n\n this.creditedSpots.forEach((spot) => {\n spot.businessRulesRowspan = 1;\n spot[`${RevisionTableKeyConstants.ACTION_KEY}Rowspan`] = 1;\n spot[`hide${RevisionTableKeyConstants.ACTION_KEY}Td`] = false;\n spot[`hide${RevisionTableKeyConstants.BIZ_RULE_KEY}Td`] = false;\n spot.gtClass = \"white-background-row\";\n spot.RadioButtonConfig = RadioButtonConfig;\n });\n }\n\n sendSpotsForSubmission() {\n this.showSkeletonLoading = true;\n this.createPayloadAndSubmitSpots();\n }\n\n createPayloadAndSubmitSpots() {\n let payload: SubmitSpotsPayload;\n\n payload = {\n orderId: this.orderData?.orderId,\n StationName: this.formattedResponse.orderInfo.station,\n stationId: this.stationId,\n revisionNumber: this.formattedResponse.orderInfo.revisionNumber,\n actionUserType: this.userType,\n actionTakenBy: this.loggedInUserOrBuyerName,\n IsOSPESubmit: false,\n actionOnSpots: [],\n };\n\n const formattedResponse: ANNARevisionSpotsApprovalResponse = cloneDeep(this.formattedResponse);\n\n const actionOnOfferedMGADUSpots: { spotId: string; spotAction: string; spotType: string }[] =\n formattedResponse.offeredMGsAndADUs\n .filter(\n (spots: AdditionalSpotInformation) =>\n spots.enableAllowedActions && !spots.isRemovedFromGroup && spots.action !== \"noAction\",\n )\n .map((spot: AdditionalSpotInformation) => ({\n spotId: spot.spotId,\n spotAction: spot.action?.toUpperCase(),\n spotType: spot.spotTypeCategory,\n }));\n\n const actionOnBBSpots: { spotId: string; spotAction: string; spotType: string }[] =\n formattedResponse.badlyBehavedSpots\n .filter(\n (spots: AdditionalSpotInformation) =>\n spots.enableAllowedActions && !spots.isRemovedFromGroup && spots.action !== \"noAction\",\n )\n .map((spot: AdditionalSpotInformation) => ({\n spotId: spot.spotId,\n spotAction: spot.action?.toUpperCase(),\n spotType: spot.spotTypeCategory,\n }));\n const removedSpots: { spotId: string; spotAction: string; spotType: string }[] = [];\n this.originalResponse.OfferedMGsAndADUs.filter((n: ISpotInformationResponse) => n.IsRemovedFromGroup)\n .forEach((n: ISpotInformationResponse) => {\n removedSpots.push({\n spotId: n.NewSpotId,\n spotAction: \"RESUBMIT\",\n spotType: n.SpotType,\n });\n });\n\n const markedForCreditOSPESpots: { spotId: string; spotAction: string; spotType: string }[] =\n formattedResponse.outstandingSpots\n .filter((spot) => spot.enableAllowedActions && spot.action === \"credit\")\n .map((spot: AdditionalSpotInformation) => ({\n spotId: spot.spotId,\n spotAction: spot.action?.toUpperCase(),\n spotType: spot.spotTypeCategory,\n }));\n\n payload.actionOnSpots = [...actionOnOfferedMGADUSpots, ...actionOnBBSpots, ...markedForCreditOSPESpots, ...removedSpots];\n\n const SelerOfferRejectionCommentsArray: { SpotId: string[]; SellerOfferComments: string[] }[] =\n this.getOfferActionCommentsArray();\n if (SelerOfferRejectionCommentsArray.length > 0) {\n payload = Object.assign(payload, { Comments: SelerOfferRejectionCommentsArray });\n payload = Object.assign(payload, {\n PreemptionsToBeExcludedFromFutureAttempts: this.tableData\n .filter(\n (n: AdditionalSpotInformation) =>\n (n.spotTypeCategory === \"PREEMPTION\" || n.spotTypeCategory === \"UNRESOLVED\") &&\n n.action?.toUpperCase() === \"RESUBMIT\" &&\n n.rejectActionComment &&\n n.rejectActionComment.length > 0 &&\n n.excludeFromFutureOffers,\n )\n .map((n) => n.spotId),\n });\n }\n\n this.isThisAPiCallAfterSubmit = true;\n this.showSkeletonLoading = true;\n \n // eslint-disable-next-line no-console\n console.log(payload)\n this.consumingProjectSpotsApprovalBackendService.submit(payload).subscribe({\n next: (response) => {\n this.spotsApprovalService.spotIdAndSelectedRadioActionAndCommentMap = null;\n this.toastr.success(\"Offer actions have been successfully submitted\");\n this.afterSubmitResetLockVariables(true);\n },\n error: (error) => {\n this.showSkeletonLoading = false;\n this.tableData = cloneDeep(this.clonedTableData);\n this.resetTimerAfterUserAction();\n this.cdRef.detectChanges();\n if (error.status === 401) {\n this.toastr.error(\"Access Denied\");\n } else {\n this.toastr.error(error.error);\n }\n this.afterSubmitResetLockVariables();\n },\n });\n }\n\n afterSubmitResetLockVariables(reinit: boolean = false) {\n this.lockMessageDetails = null;\n // this.acquireLockResponse = null;\n this.fetchOrderRevisionDetailsData(reinit);\n }\n\n setConfirmationPopupConfig() {\n this.confirmationConfig = {\n ...this.annaGlobalConfig.defaultConfirmationPopupConfig,\n };\n this.confirmationConfig.title = \"Are you sure you want to submit the actions taken on all the offers?\";\n if (\n this.currentRevisionStatus === RevisionStatus.SellerPending &&\n this.orderInfoData.isSellerReconfirmationNeeded\n ) {\n this.confirmationConfig.title = `<p>Are you sure you want to Submit? <br></br>After submission, seller reconfirmation is needed here on ANNA on behalf of the buyer after offline discussion.</p>`;\n }\n if (this.currentRevisionStatus === RevisionStatus.SellerPending &&\n this.formattedResponse.badlyBehavedSpots.filter(n => n.enableAllowedActions && n.action === 'approve')?.length > 0) {\n this.confirmationConfig.title = `${this.confirmationConfig.title\n } Please note, approving the below mentioned PE-MG group(s) will credit the corresponding Badly behaved spot(s).<br><br>` +\n `<ul> ${this.prepareBadlyBehavedSpotsToBesubmittedList()}</ul>`;\n }\n this.confirmationConfig.windowClass = \"submit-spots-popup\";\n this.confirmationConfig.showCloseIcon = false;\n this.confirmationConfig.cancelButtonLabel = \"Cancel\";\n this.confirmationConfig.confirmButtonLabel = \"Submit\";\n }\n\n prepareBadlyBehavedSpotsToBesubmittedList() {\n const spots = cloneDeep(this.formattedResponse.badlyBehavedSpots);\n const listToReturn: string[] = [];\n const preemptions = spots.filter(\n s => s.enableAllowedActions && s.spotTypeCategory === \"PREEMPTION\" && s.action === \"approve\"\n );\n\n preemptions.forEach(preemption => {\n const creditSpot = spots.filter(s => s.groupId === preemption.groupId && s.spotTypeCategory === \"CREDIT\");\n if (creditSpot && creditSpot[0]) {\n listToReturn.push(`<li>PE ${preemption.sellerLine} will credit ${creditSpot[0].sellerLine} (${creditSpot[0].badlyBehavedSpotOrderId})</li>`);\n }\n });\n return listToReturn;\n }\n\n createSummaryComponentData(summaryData: ANNARevisionSummary,): SummaryDetail[] {\n let commonSummaryData: SummaryDetail[] = [];\n\n let bookedCppCpmHeading = \"\";\n if (summaryData.booked.CPP || summaryData.booked.CPM) {\n if (this.showImpressions) {\n bookedCppCpmHeading = \"CPM\";\n } else {\n bookedCppCpmHeading = \"CPP\";\n }\n }\n commonSummaryData = [\n {\n heading: `Alt/Rep Order #`,\n value: `${this.orderInfoData.alternateOrderId ? this.orderInfoData.alternateOrderId : \"-\"} `,\n class: \"\",\n rating: null,\n tooltip: null,\n showRightBorder: true,\n showValueRTG: false,\n },\n this.orderData?.revisionType === RevisionTypeConstants.ANNA\n ? {\n heading: \"Advertiser | Agency\",\n value: `${summaryData.advertiser} | ${summaryData.agency} `,\n class: \"advertiser-agency-view\",\n firstValue: summaryData.advertiser,\n secondValue: summaryData.agency,\n rating: null,\n tooltip: null,\n showRightBorder: true,\n showValueRTG: false,\n expandedRow: false\n }\n : null,\n {\n heading: \"Demo | Metric\",\n value: `${summaryData.tgName} | ${this.orderInfoData.metric}`,\n class: \"\",\n rating: null,\n tooltip: null,\n showRightBorder: true,\n showValueRTG: false,\n },\n {\n heading: `Booked: $ | ${this.showImpressions ? \"IMPS\" : \"RTG\"} | ${bookedCppCpmHeading}`,\n value: summaryData.booked.Cost,\n class: \"\",\n rating: this.showImpressions ? summaryData.booked.Impressions : summaryData.booked.Ratings,\n tooltip: null,\n CPPOrCPM: this.showImpressions ? `$${summaryData.booked.CPM}` : `$${summaryData.booked.CPP}`,\n showRightBorder: true,\n showValueRTG: true,\n },\n ];\n\n commonSummaryData = commonSummaryData.filter((x) => x !== null);\n\n let projectedObj = null;\n let aduObj = null;\n if (summaryData?.UDProjection) {\n projectedObj = {\n heading: `O/S UD Proj: $ | ${this.showImpressions ? \"IMPS\" : \"RTG\"}`,\n value: summaryData.UDProjection.Cost,\n class: \"\",\n rating: this.showImpressions ? summaryData.UDProjection.Impressions : summaryData.UDProjection.Ratings,\n tooltip: null,\n showRightBorder: true,\n showValueRTG: true,\n };\n aduObj = {\n heading: `${this.parentPage === \"ORDERS\" ? \"Approved\" : \"Offered\"} ADUs: Proj. $ | Proj. ${this.showImpressions ? \"IMPS\" : \"RTG\"\n }`,\n value: summaryData.offeredADUs.Cost,\n class: \"offered-adu\",\n rating: this.showImpressions ? summaryData.offeredADUs.Impressions : summaryData.offeredADUs.Ratings,\n tooltip: null,\n showRightBorder: true,\n showValueRTG: true,\n };\n } else if (summaryData.UD) {\n projectedObj = {\n heading: `O/S UD: $ | ${this.showImpressions ? \"IMPS\" : \"RTG\"}`,\n value: summaryData.UD.Cost,\n class: \"\",\n rating: this.showImpressions ? summaryData.UD.Impressions : summaryData.UD.Ratings,\n tooltip: null,\n showRightBorder: true,\n showValueRTG: true,\n };\n aduObj = {\n heading: `${this.parentPage === \"ORDERS\" ? \"Approved\" : \"Offered\"} ADUs: Proj. $ | Proj. ${this.showImpressions ? \"IMPS\" : \"RTG\"\n }`,\n value: summaryData.offeredADUs.Cost,\n class: \"offered-adu\",\n rating: this.showImpressions ? summaryData.offeredADUs.Impressions : summaryData.offeredADUs.Ratings,\n tooltip: null,\n showRightBorder: true,\n showValueRTG: true,\n };\n }\n let annaSummary: SummaryDetail[] = [\n {\n heading: `${this.parentPage === \"ORDERS\" ? \"Approved\" : \"Offered\"} MGs: $ | ${this.showImpressions ? \"IMPS\" : \"RTG\"\n }`,\n value: summaryData.offeredMakegoods.Cost,\n class: \"\",\n rating: this.showImpressions\n ? summaryData.offeredMakegoods.Impressions\n : summaryData.offeredMakegoods.Ratings,\n tooltip: null,\n showRightBorder: true,\n showValueRTG: true,\n },\n {\n heading: `O/S Spots: $ | ${this.showImpressions ? \"IMPS\" : \"RTG\"}`,\n value: summaryData.OutstandingSpots?.Cost,\n class: \"\",\n rating: this.showImpressions\n ? summaryData.OutstandingSpots?.Impressions\n : summaryData.OutstandingSpots?.Ratings,\n tooltip: null,\n showRightBorder: true,\n showValueRTG: true,\n },\n aduObj,\n projectedObj,\n {\n heading: `Credited: $ | ${this.showImpressions ? \"IMPS\" : \"RTG\"}`,\n value: summaryData.ANNACredited.Cost,\n class: \"\",\n rating: this.showImpressions ? summaryData.ANNACredited.Impressions : summaryData.ANNACredited.Ratings,\n tooltip: null,\n showRightBorder: false,\n showValueRTG: true,\n },\n ];\n\n annaSummary = annaSummary.filter((summary) => summary);\n if (this.parentPage === \"ORDERS\") {\n annaSummary = annaSummary.filter((x) => !x.heading.includes(\"O/S PEs\"));\n }\n if (this.parentPage === \"DRR Completed\" || this.parentPage === \"DRR Ongoing\") {\n annaSummary = annaSummary.filter((x) => !x.heading.includes(\"Credited\"));\n const index = annaSummary.findIndex((x) => x.heading.includes(\"ADUs\"));\n if (index !== -1) {\n annaSummary[index].showRightBorder = false;\n }\n }\n return [...commonSummaryData, ...annaSummary];\n }\n\n createHeaderData(orderInfo: OrderInfoForANNARevision): HeaderOrderInfo[] {\n const updatedStatues: {\n message: string;\n messageClass: string;\n class: string;\n status: string;\n state: string;\n timelineRadioButtonMessage: string;\n timelineRadioButtonIconClass: string;\n bubbleCount: number;\n showNeedsAttentionIcon: boolean;\n }[] = [];\n for (let i = 0; i < orderInfo.status.length; i++) {\n const status = orderInfo.status[i];\n const state: \"CURRENT\" | \"PASSED\" | \"SKIPPED\" | \"UPCOMING\" = this.findState(orderInfo, status.Status);\n const stateForClass =\n state === \"CURRENT\" &&\n updatedStatues.length > 0 &&\n updatedStatues[updatedStatues.length - 1].timelineRadioButtonMessage\n ? \"UPCOMING\"\n : state;\n\n const object = {\n message: \"\",\n messageClass: \"\",\n bubbleCount: orderInfo.status[i].OffersRequiringActionCount,\n showNeedsAttentionIcon: orderInfo.status[i].ShowNeedsAttentionIcon,\n status: status.Status,\n state,\n class: `${this.spotsApprovalService.revisionStatusNameAndAcronymMap[status.Status]}-${stateForClass}`,\n timelineRadioButtonMessage:\n orderInfo.intermediateOrderStatus?.ShowMessageAfterStatus === status.Status\n ? orderInfo.intermediateOrderStatus?.Message\n : null,\n timelineRadioButtonIconClass:\n state === \"PASSED\" &&\n !(\n this.currentRevisionStatus === RevisionStatus.RevDiscarded &&\n orderInfo.status[i + 1]?.Action === \"Skipped\"\n )\n ? \"mdi-radiobox-marked\"\n : \"mdi-radiobox-blank\",\n };\n\n switch (status.Action) {\n case \"ShowTimeout\":\n object.message = this.setTimeoutMessage(status.Status, orderInfo);\n object.messageClass = status.Status === RevisionStatus.SellerPending ? \"red-text\" : \"\";\n break;\n\n case \"ShowTime\":\n object.message = this.setApprovalTimeMessage(status.Status, orderInfo);\n object.messageClass = \"\";\n break;\n\n case \"AutoRejected\":\n object.message = this.setExpiredTimeMessage(status.Status, orderInfo);\n object.messageClass = \"red-text\";\n break;\n // no default\n }\n\n updatedStatues.push(object);\n }\n return updatedStatues;\n }\n\n setTimeoutMessage(status: string, orderInfo: OrderInfoForANNARevision) {\n if (status === RevisionStatus.SellerPending) {\n return `Timeout: ${orderInfo.sellerApprovalTimeout}`;\n } else if (status === RevisionStatus.SellerReconfirm) {\n return `Timeout: ${orderInfo.buyerApprovalTimeout}`;\n } else if (status === RevisionStatus.BuyerPending) {\n return `Timeout: ${orderInfo.buyerApprovalTimeout}`;\n }\n return \"\";\n }\n\n setApprovalTimeMessage(status: string, orderInfo: OrderInfoForANNARevision) {\n // MJ Doubt diff btw sellerApprovalTime and sellerApprovalTimeForOsPe\n if (status === RevisionStatus.SellerPending) {\n const sellerActionTakenTime =\n orderInfo.sellerApprovalTime !== \"-\"\n ? orderInfo.sellerApprovalTime\n : orderInfo.sellerApprovalTimeForOsPe;\n return `Reviewed at: ${sellerActionTakenTime}`;\n } else if (status === RevisionStatus.SellerReconfirm) {\n return `Reviewed at: ${orderInfo.buyerApprovalTime}`;\n } else if (status === RevisionStatus.BuyerPending) {\n return `Reviewed at: ${orderInfo.buyerApprovalTime}`;\n }\n return \"\";\n }\n\n setExpiredTimeMessage(status: string, orderInfo: OrderInfoForANNARevision) {\n if (status === RevisionStatus.SellerPending) {\n return `Seller timeout expired at: ${orderInfo.sellerApprovalTimeout}`;\n } else if (status === RevisionStatus.SellerReconfirm) {\n return `Seller reconfirmation timeout expired at: ${orderInfo.buyerApprovalTimeout}`;\n } else if (status === RevisionStatus.BuyerPending) {\n return `Buyer timeout expired at: ${orderInfo.buyerApprovalTimeout}`;\n }\n return \"\";\n }\n\n setPreviousOfferComment(\n spot: AdditionalSpotInformation,\n previousAction: {\n spotId: string;\n action: string;\n approveActionLocalComment: string;\n creditActionComment: string;\n rejectActionComment: string[];\n excludeFromFutureOffers: boolean;\n },\n ) {\n spot.action = previousAction.action as \"resubmit\" | \"approve\" | \"credit\" | \"noAction\";\n spot.excludeFromFutureOffers = previousAction.excludeFromFutureOffers;\n\n // eslint-disable-next-line default-case\n switch (previousAction.action) {\n case \"approve\":\n spot.approveOfferComment = previousAction.approveActionLocalComment;\n break;\n case \"credit\":\n spot.markForCreditComment = previousAction.creditActionComment;\n break;\n case \"resubmit\":\n spot.rejectOfferComments = previousAction.rejectActionComment;\n break;\n }\n }\n\n setRadioButtonConfig(spot: AdditionalSpotInformation) {\n if (this.orderInfoData.revisionType !== this.revisionTypeConstants.ANNA || !spot.allowedActions) {\n return;\n }\n const radioButtonsActionsList = Object.keys(spot.allowedActions as \"Reject\" | \"Approve\" | \"Mark for Credit\" | \"No Action\" | \"Credit\");\n\n // when we take some action in spot approval say select reject radio and then go to edit page and add some\n // new spots those spots won't have 'reject' as action that since those are newly added spots those are not present\n // in spotIdAndSelectedRadioActionAndCommentMap persisting filter.\n if (\n spot.isAddedInGroup &&\n !spot.isRemovedFromGroup &&\n this.spotsApprovalService.spotIdAndSelectedRadioActionAndCommentMap?.length\n ) {\n // eslint-disable-next-line no-console\n console.log(\"1. setRadioButtonConfig\", spot);\n datadogRum.addAction(\"1. setRadioButtonConfig spot\", spot);\n const newlyAddedSpotInGroupWithoutSpotId =\n this.spotsApprovalService.spotIdAndSelectedRadioActionAndCommentMap.filter(\n (n) => n.spotId === null && n.groupId === spot.groupId,\n );\n if (newlyAddedSpotInGroupWithoutSpotId.length > 0) {\n // can have multiple newly added spots so update the first object only\n newlyAddedSpotInGroupWithoutSpotId[0].spotId = spot.spotId;\n newlyAddedSpotInGroupWithoutSpotId[0].spotTypeCategory = spot.spotTypeCategory;\n\n datadogRum.addAction(\n \"persisting map spot\",\n this.spotsApprovalService.spotIdAndSelectedRadioActionAndCommentMap,\n );\n // eslint-disable-next-line no-console\n console.log(\"2\", this.spotsApprovalService.spotIdAndSelectedRadioActionAndCommentMap);\n }\n }\n\n const previousAction = this.spotsApprovalService.spotIdAndSelectedRadioActionAndCommentMap\n ? this.spotsApprovalService.spotIdAndSelectedRadioActionAndCommentMap.find((n) => n.spotId === spot.spotId)\n : null;\n\n if (previousAction) {\n this.setPreviousOfferComment(spot, previousAction);\n } else {\n spot.action = spot.action\n ? spot.action\n : this.spotsApprovalService.radioButtonLabelValueMap[\n radioButtonsActionsList.filter((key) => spot.allowedActions[key])[0]\n ];\n }\n\n spot.approveActionLocalComment = cloneDeep(spot.approveOfferComment);\n spot.creditActionComment = cloneDeep(spot.markForCreditComment);\n spot.rejectActionComment = cloneDeep(spot.rejectOfferComments);\n\n const RadioButtonConfig: SpotaApprovalIRadioButton[] = [];\n radioButtonsActionsList.forEach((button) => {\n const icons: { class: string; name?: string }[] = [];\n\n const actionComment: string = this.getRadioButtonCommentIcon(spot, button);\n if (actionComment && actionComment !== \"\") {\n icons.push({\n class: actionComment,\n name: (button === \"Reject\" && (!spot.rejectOfferComments || spot.rejectOfferComments?.length === 0) && spot.sellerCancellationComment) ?\n \"sellerCancellationComment\" : \"actionComment\",\n });\n }\n if (button === \"Reject\" && spot.sellerCancellationComment && icons.filter(n => n.name === \"sellerCancellationComment\")?.length === 0) {\n icons.push({\n class: \"mdi mdi-comment-quote-outline\",\n name: \"sellerCancellationComment\",\n });\n }\n RadioButtonConfig.push({\n label: button as \"Reject\" | \"Approve\" | \"Mark for Credit\" | \"No Action\" | \"Credit\",\n value: this.spotsApprovalService.radioButtonLabelValueMap[button],\n class: this.spotsApprovalService.radioButtonLabelValueMap[button],\n isDisabled: true,\n icons,\n tooltipMessage: this.getUndoOrCancelOrReofferedByMessage(spot, button),\n });\n });\n RadioButtonConfig[radioButtonsActionsList.length - 1].class =\n `${RadioButtonConfig[radioButtonsActionsList.length - 1].class} margin-bottom-zero`;\n spot.RadioButtonConfig = cloneDeep(RadioButtonConfig);\n }\n\n getRadioButtonCommentIcon(spot: AdditionalSpotInformation, button: string): string {\n const isSelectedAction = spot.action === this.spotsApprovalService.radioButtonLabelValueMap[button];\n if (!isSelectedAction) return null;\n\n let iconClass = \"\";\n if (spot.action === \"noAction\") {\n iconClass = \"\";\n } else if (this.orderInfoData.isRepOrder) {\n iconClass = \"mdi mdi-comment-quote-outline\";\n } else if (spot.action === \"resubmit\") {\n // removed check of reject comment length as part of ANNA-12561\n iconClass = \"mdi mdi-comment-quote-outline\";\n }\n return iconClass;\n }\n\n getUndoOrCancelOrReofferedByMessage(spot: AdditionalSpotInformation, button: string) {\n const isSelectedAction = spot.action === this.spotsApprovalService.radioButtonLabelValueMap[button];\n let tooltipMsg = \"\";\n if (isSelectedAction) {\n if (spot.undoBy) {\n tooltipMsg = `This offer was undo by ${spot.undoBy}.`;\n } else if (spot.cancelledBy) {\n tooltipMsg = `This offer was cancelled by ${spot.cancelledBy}.`;\n } else if (spot.reofferBy) {\n tooltipMsg = `This offer was reoffer by ${spot.reofferBy}.`;\n }\n if (spot.reOfferComment) {\n tooltipMsg += ` Reoffer comment: ${spot.reOfferComment}.`;\n }\n }\n return tooltipMsg;\n }\n\n disableActions(): boolean {\n return !this.userHasEditPrivilege || !this.orderInfoData.showWriteEnabledPopup;\n }\n\n enableRadioButtons(spots: AdditionalSpotInformation[]) {\n if (!this.disableActions() && this.acquireLockResponse) {\n spots.forEach((spot) => {\n if (spot.RadioButtonConfig && spot.enableAllowedActions) {\n spot.RadioButtonConfig.forEach((radioButton) => {\n radioButton.isDisabled = false;\n });\n }\n });\n }\n }\n\n addRejectCommentForMFCGroup(spot: AdditionalSpotInformation) {\n const groupIdOfPEPresentInMFCPopup = new Set(this.creditedSpots.map((x) => x.groupId));\n return (\n groupIdOfPEPresentInMFCPopup.has(spot.groupId) &&\n (spot.action === \"credit\" || spot.action === \"resubmit\") &&\n !spot.displaySpotType.includes(\"Outstanding PE\") &&\n !spot.displaySpotType.includes(\"Unresolved\")\n );\n }\n\n isPreemptionSpotOfTheMFCPopup(spot: AdditionalSpotInformation) {\n const creditedSpotSet = new Set(this.creditedSpots.map((x) => x.spotId));\n const result = creditedSpotSet.has(spot.spotId) && spot.displaySpotType.includes(\"Preemption\");\n return result;\n }\n\n sendCreditTableSpotsForSubmission(event: { mfcRejectComments: string[]; excludeFutureOffers: boolean }) {\n let payload: SubmitSpotsPayload = {\n StationName: this.formattedResponse.orderInfo.station,\n orderId: this.orderData?.orderId,\n stationId: this.stationId,\n actionUserType: this.userType,\n actionTakenBy: this.loggedInUserOrBuyerName,\n revisionNumber: this.formattedResponse.orderInfo.revisionNumber,\n IsOSPESubmit: false,\n actionOnSpots: [],\n };\n\n const creditedSpotSet = new Set(this.creditedSpots.map((spot) => spot.spotId));\n\n const actionOnOfferedMgAndADUs: AdditionalSpotInformation[] = cloneDeep(\n this.formattedResponse.offeredMGsAndADUs.filter(\n (spot: AdditionalSpotInformation) => spot.enableAllowedActions && spot.action !== \"noAction\",\n ),\n );\n\n actionOnOfferedMgAndADUs.forEach((item: AdditionalSpotInformation) => {\n if (creditedSpotSet.has(item.spotId)) {\n item.action = this.creditedSpots.filter((n) => n.spotId === item.spotId)[0].action;\n item.excludeFromFutureOffers = this.isPreemptionSpotOfTheMFCPopup(item)\n ? event.excludeFutureOffers\n : false;\n } else if (\n item.groupId !== \"00000000-0000-0000-0000-000000000000\" &&\n this.creditedSpots.findIndex((n) => n.groupId === item.groupId) !== -1 &&\n this.creditedSpots.filter(\n (spot) => spot.groupId === item.groupId && spot.action?.toUpperCase() === \"CREDIT\",\n ).length === 0\n ) {\n item.action = \"resubmit\";\n item.excludeFromFutureOffers = this.isPreemptionSpotOfTheMFCPopup(item)\n ? event.excludeFutureOffers\n : false;\n }\n });\n\n const actionOnOfferedMGADUSpots = actionOnOfferedMgAndADUs.map((spot) => ({\n spotId: spot.spotId,\n spotAction: spot.action?.toUpperCase(),\n spotType: spot.spotTypeCategory,\n excludeFromFutureOffers: this.isPreemptionSpotOfTheMFCPopup(spot) ? event.excludeFutureOffers : false,\n rejectActionComment: this.addRejectCommentForMFCGroup(spot) ? event.mfcRejectComments : null,\n }));\n\n const removedSpots: {\n spotId: string;\n spotAction: string;\n spotType: string;\n excludeFromFutureOffers: boolean;\n rejectActionComment: string[];\n }[] = [];\n this.originalResponse.OfferedMGsAndADUs.filter((n: ISpotInformationResponse) => n.IsRemovedFromGroup).forEach((n: ISpotInformationResponse) => {\n removedSpots.push({\n spotId: n.NewSpotId,\n spotAction: \"RESUBMIT\",\n spotType: n.SpotType,\n excludeFromFutureOffers: n.ExcludeFromFutureOffers,\n rejectActionComment: null,\n });\n });\n\n const markedForCreditOSPESpots: { spotId: string; spotAction: string; spotType: string }[] = cloneDeep(\n this.formattedResponse.outstandingSpots\n .filter((spot: AdditionalSpotInformation) => spot.action === \"credit\")\n .map((spot: AdditionalSpotInformation) => ({\n spotId: spot.spotId,\n spotAction: spot.action?.toUpperCase(),\n spotType: spot.spotTypeCategory,\n excludeFromFutureOffers: this.isPreemptionSpotOfTheMFCPopup(spot)\n ? event.excludeFutureOffers\n : false,\n rejectActionComment: this.addRejectCommentForMFCGroup(spot) ? event.mfcRejectComments : null,\n })),\n );\n\n payload.actionOnSpots = [...actionOnOfferedMGADUSpots, ...markedForCreditOSPESpots, ...removedSpots];\n\n // const preemptedSpotsWhichGotRejected = payload.actionOnSpots.filter((n) => n.spotAction === \"REJECT\" && n.spotType === \"PREEMPTION\").map((n)=> n.spotId);\n\n const preemptedSpotsInMFCPopupWhichUserMarkedAsRejectedToBeExludedWhileFindingSellerComment = this.creditedSpots\n .filter((n) => n.action === \"resubmit\")\n .map((n) => n.spotId);\n\n const SelerOfferRejectionCommentsArray: { SpotId: string[]; SellerOfferComments: string[] | string }[] =\n this.getOfferActionCommentsArray(\n preemptedSpotsInMFCPopupWhichUserMarkedAsRejectedToBeExludedWhileFindingSellerComment,\n );\n\n if (SelerOfferRejectionCommentsArray.length > 0) {\n payload = Object.assign(payload, { Comments: SelerOfferRejectionCommentsArray });\n payload = Object.assign(payload, {\n PreemptionsToBeExcludedFromFutureAttempts: this.tableData\n .filter(\n (n: AdditionalSpotInformation) =>\n (n.spotTypeCategory === \"PREEMPTION\" || n.spotTypeCategory === \"UNRESOLVED\") &&\n n.action?.toUpperCase() === \"RESUBMIT\" &&\n n.rejectActionComment &&\n n.rejectActionComment.length > 0 &&\n n.excludeFromFutureOffers,\n )\n .map((n) => n.spotId),\n });\n }\n\n this.showSkeletonLoading = true;\n // console.log(payload)\n this.consumingProjectSpotsApprovalBackendService.submit(payload).subscribe({\n next: (response) => {\n this.spotsApprovalService.spotIdAndSelectedRadioActionAndCommentMap = null;\n\n this.toastr.success(\"Offer actions have been successfully submitted\");\n this.afterSubmitResetLockVariables(true);\n },\n error: (error) => {\n this.showSkeletonLoading = false;\n this.tableData = cloneDeep(this.clonedTableData);\n this.resetTimerAfterUserAction();\n this.cdRef.detectChanges();\n if (error.status === 401) {\n this.toastr.error(\"Access Denied\");\n } else {\n this.toastr.error(error.error);\n }\n },\n });\n }\n\n getOfferActionCommentsArray(spotsToIgnore: string[] = []): { SpotId: string[]; SellerOfferComments: string[] }[] {\n let sellerOfferCommentsArray: {\n SpotId: string[];\n SellerOfferComments: string[];\n GroupId: string;\n }[] = [];\n if (this.showOfferRejectionReasonPopup) {\n const spotsWithComments = this.tableData.filter(\n (n: AdditionalSpotInformation) =>\n (n.groupId === \"00000000-0000-0000-0000-000000000000\" ||\n n.groupId !== \"00000000-0000-0000-0000-000000000000\") &&\n !spotsToIgnore.includes(n.spotId),\n );\n\n sellerOfferCommentsArray = spotsWithComments.map((n: AdditionalSpotInformation) => ({\n SpotId:\n n.groupId === \"00000000-0000-0000-0000-000000000000\"\n ? [n.spotId]\n : spotsWithComments.filter((i) => i.groupId === n.groupId).map((x) => x.spotId),\n SellerOfferComments: this.getSellerOfferCommentBasedOnSelectedAction(n)\n ? this.getSellerOfferCommentBasedOnSelectedAction(n)\n : cloneDeep([\"\"]),\n GroupId: n.groupId,\n }));\n }\n\n const offeredOrAddedMGADUSpots: { SpotId: string[]; SellerOfferComments: string[] }[] = uniqBy(\n sellerOfferCommentsArray.filter((n) => n.GroupId && n.GroupId !== \"00000000-0000-0000-0000-000000000000\"),\n \"GroupId\",\n ).map(({ SpotId, SellerOfferComments }) => ({ SpotId, SellerOfferComments }));\n const outstandingSpots: { SpotId: string[]; SellerOfferComments: string[] }[] = sellerOfferCommentsArray\n .filter((n) => !n.GroupId || n.GroupId === \"00000000-0000-0000-0000-000000000000\")\n .map(({ SpotId, SellerOfferComments }) => ({ SpotId, SellerOfferComments }));\n return [...offeredOrAddedMGADUSpots, ...outstandingSpots];\n }\n\n getSellerOfferCommentBasedOnSelectedAction(spotData: AdditionalSpotInformation): string[] {\n switch (spotData.action) {\n case \"resubmit\":\n return spotData.rejectActionComment;\n case \"approve\":\n return spotData.approveActionLocalComment ? [spotData.approveActionLocalComment] : [];\n case \"credit\":\n return spotData.creditActionComment ? [spotData.creditActionComment] : [];\n default:\n return [];\n }\n }\n\n setTableHeight() {\n const dataOnTopHeight = this.calculateDataOnTopHeight();\n\n const element = document.getElementById(\"generic-table-conatiner\");\n\n const hasHorizontalScrollbar = element && element?.scrollWidth > element?.clientWidth;\n\n let rowHeight = 44;\n const isSingleSpotInTableAndAnnaRev = this.tableData.length === 1 && this.orderData?.revisionType === \"ANNA\";\n const tableActionPossible = isSingleSpotInTableAndAnnaRev && this.tableData.map((x) => x.allowedActions);\n if (isSingleSpotInTableAndAnnaRev && tableActionPossible) {\n let count = Object.keys(tableActionPossible)?.length;\n count = count || 0;\n if (count === 0) {\n rowHeight = 44;\n } else {\n rowHeight = count === 3 ? 64 : 48;\n }\n }\n this.gtDimension = {\n ...this.gtDimension,\n rowHeight,\n dataOnTopHeight: dataOnTopHeight || 341,\n marginFromBottom: hasHorizontalScrollbar ? 20 : 16,\n };\n this.dataOnTopHeight = cloneDeep(this.gtDimension.dataOnTopHeight);\n }\n\n resetData() {\n this.headerOrderInfo = null;\n this.summaryInfo = null;\n this.tableData = [];\n this.clonedTableData = [];\n // this.showActionInfo = false;\n this.orderInfoData = null;\n this.showNoSpotAvailableMessage = false;\n this.showCutOffMessage = false;\n this.showReviewMessage = false;\n this.disableStatus = true;\n }\n\n filterAppliedToTable(data: AdditionalSpotInformation[]) {\n this.tableData = data;\n this.formatResponseForGenericTable(this.tableData);\n this.enableRadioButtons(this.tableData);\n this.setRowClass();\n this.enableDisableClearAllBtn();\n this.checkIfFiltersAppliedAtColumnLevel();\n this.createTotalRow();\n this.enableDisableIntelliFilter();\n this.setTableHeight();\n this.updateNavigationHistory();\n }\n\n checkIfFiltersAppliedAtColumnLevel() {\n const easyFilterList: string[] = [\n IntelliFilterConstant.MGs,\n IntelliFilterConstant.ADUs,\n IntelliFilterConstant.BONUS,\n IntelliFilterConstant.BOOKED_ADUs,\n IntelliFilterConstant.CREDITS,\n IntelliFilterConstant.OUTSTANDING_SPOTS,\n IntelliFilterConstant.BUYER_REJECTED,\n ];\n\n this.filteredAtColumnLevel =\n new Set(this.annaFilterService.appliedFiltersArray.filter((n: string) => !easyFilterList.includes(n)))\n .size > 0;\n }\n\n // total row function starts\n createTotalRow() {\n if (!this.tableData || !this.tableData?.length) {\n return;\n }\n const selectedFilterText = this.selectedIntelliFilter ? this.selectedIntelliFilter.text : null;\n let totalRowData: TotalRowData;\n\n if (this.filteredAtColumnLevel) {\n totalRowData = new TotalRowWithFilteredColumns(this.tableData, selectedFilterText);\n } else {\n const { currentRevisionStatus } = this;\n totalRowData = new TotalRow(this.tableData, currentRevisionStatus, selectedFilterText).totalRow;\n }\n\n this.totalRowCommonfields(totalRowData, selectedFilterText);\n }\n\n // Function to push values in total row variable\n totalRowCommonfields(totalRowData: TotalRowData, selectedFilterText: string): void {\n if (!totalRowData) return;\n\n this.totalRowInfo = [];\n const colSpanForTotalMessage = this.tableHeaders.findIndex(\n (n) => n.headerInfo[0].name === RevisionTableHeaderConstants.SELLER_PROGRAM,\n );\n if (this.orderInfoData.revisionType === this.revisionTypeConstants.ANNA && !this.isCompletedRevision) {\n this.totalRowInfo.push({\n colspan: 1,\n data: null,\n colName: \"warning-icon\",\n class: \"warning-icon\",\n });\n }\n this.totalRowInfo.push({\n colspan:\n this.orderInfoData.revisionType === this.revisionTypeConstants.ANNA ? 1 : colSpanForTotalMessage + 1,\n data: totalRowData.message,\n colName: \"total-row-message\",\n class: \"total-row-message\",\n });\n\n if (this.orderInfoData.revisionType === this.revisionTypeConstants.ANNA) {\n this.totalRowInfo.push({\n colspan: 6,\n data: null,\n colName: \"total-row-message-after\",\n class: \"total-row-message-after\",\n });\n }\n\n this.totalRowInfo.push({\n colspan: 1,\n data: totalRowData.totalRateForDisplay,\n colName: \"total-rate\",\n });\n\n if (this.selectedMetric.text === OrderMetrics.imps) {\n const impsValue: string = parseFloat(totalRowData.totalIMPS.toString()).toFixed(1);\n this.totalRowInfo.push({\n colspan: 1,\n data: +impsValue === 0 ? Math.abs(+impsValue).toString() : impsValue,\n colName: \"total-impressions\",\n });\n } else {\n const rtgValue: string = parseFloat(totalRowData.totalRTG.toString()).toFixed(2);\n this.totalRowInfo.push({\n colspan: 1,\n data: +rtgValue === 0 ? Math.abs(+rtgValue).toString() : rtgValue,\n colName: \"total-rating\",\n });\n }\n\n let actionableOrBizCol = 0;\n this.tableHeaders.forEach((header) => {\n if (\n header.headerInfo[0].name === RevisionTableHeaderConstants.ACTION_HEADER ||\n header.headerInfo[0].objectKey === RevisionTableHeaderConstants.ACTION_ICONS_OBJECT_KEY ||\n header.headerInfo[0].name === RevisionTableHeaderConstants.BIZ_RULE_HEADER\n ) {\n actionableOrBizCol += 1;\n }\n });\n\n const lastColumnBeforeStickyActionCol = this.tableHeaders.findIndex(\n (n) => n.headerInfo[0].name === RevisionTableHeaderConstants.DAYPART_HEADER,\n );\n let count: number =\n this.userType === \"SELLER\"\n ? this.tableHeaders.length - lastColumnBeforeStickyActionCol - actionableOrBizCol + 1\n : this.tableHeaders.length - lastColumnBeforeStickyActionCol - actionableOrBizCol;\n\n if (this.orderData?.revisionType === RevisionTypeConstants.BUYER) {\n count -= 1;\n }\n\n for (let i = 0; i < count; i++) {\n this.totalRowInfo.push({\n colspan: 1,\n data: \"\",\n colName: `extra${i}`,\n });\n }\n\n const isBizHeaderPresent =\n this.tableHeaders.filter((n) => n.headerInfo[0].name === RevisionTableHeaderConstants.BIZ_RULE_HEADER)\n ?.length > 0;\n const isActionColumnPresent =\n this.tableHeaders.filter((n) => n.headerInfo[0].name === RevisionTableHeaderConstants.ACTION_HEADER)\n ?.length > 0;\n const isUndoReofferOrCancelColPresent =\n this.tableHeaders.filter(\n (header) => header.headerInfo[0].objectKey === RevisionTableHeaderConstants.ACTION_ICONS_OBJECT_KEY,\n )?.length > 0;\n\n if (isBizHeaderPresent) {\n this.totalRowInfo.push({\n colspan: 1,\n data: \"\",\n colName: `extra-total-biz-col`,\n class: \"biz-header\",\n });\n }\n\n if (isActionColumnPresent) {\n this.showTotalRowActionButtons = totalRowData.showRadioButtonsInActionColumn;\n this.totalRowInfo.push({\n colspan: 1,\n data: \"\",\n radioButtonColumnData: {\n isRadioButtonsColumn: totalRowData.showRadioButtonsInActionColumn,\n radioButtonsData: totalRowData.radioButtonsData,\n selectedRadioButton: totalRowData.selectedAction,\n disableRadioGroup: this.tableData.filter((n) => n.enableAllowedActions).length === 0,\n },\n colName: SpotsApprovalTableTotalRowColNames.TOTAL_RADIO_ACTION_COL_NAME,\n class: `total-action-col${totalRowData.showRadioButtonsInActionColumn ? \" radio-buttons-col\" : \"\"}`,\n });\n } else {\n this.showTotalRowActionButtons = false;\n }\n if (totalRowData.showRadioButtonsInActionColumn && !totalRowData.radioButtonsData?.filter(n => n.value ===\n totalRowData.selectedAction)[0]?.iconClass?.filter(m => m?.includes(\"mdi-comment-quote-outline\"))[0]?.includes(\"disabled\")) {\n const data: AdditionalSpotInformation =\n this.tableData.filter((n) => n.enableAllowedActions)?.length > 0\n ? this.tableData.filter((n) => n.enableAllowedActions)[0]\n : this.tableData[0];\n switch (totalRowData.selectedAction) {\n case \"resubmit\":\n this.updateTotalRowSpotTypeAndSelectedActionAndCommentMapRejectionComment(data?.rejectActionComment, data.excludeFromFutureOffers);\n break;\n case \"approve\":\n this.updateTotalSpotTypeAndSelectedActionAndCommentMapApproveComment(\"approve\", data?.approveActionLocalComment);\n break;\n case \"credit\":\n this.updateTotalSpotTypeAndSelectedActionAndCommentMapApproveComment(\"credit\", data?.approveActionLocalComment);\n break;\n default:\n break;\n };\n }\n if (isUndoReofferOrCancelColPresent) {\n this.totalRowInfo.push({\n colspan: 1,\n data: \"\",\n colName: \"total-action-icon-col\",\n class: \"total-action-icon-col\",\n });\n }\n\n if (this.orderData?.revisionType === RevisionTypeConstants.BUYER) {\n this.totalRowInfo.push({\n colspan: 1,\n data: totalRowData.totalAmountImpsForDisplay,\n lowerData:\n this.selectedMetric.text === OrderMetrics.imps\n ? totalRowData.totalAmountImpsForDisplay\n : totalRowData.totalAmountGrpForDisplay,\n colName: \"total-amount-grp-or-imps\",\n class: \"total-amount-grp-or-imps\",\n });\n }\n\n }\n\n initFiltersFromRoute() {\n this.annaFilterService.appliedFiltersArray = this.filtersFromRoute?.appliedFilters\n ? this.filtersFromRoute.appliedFilters\n : [];\n this.annaFilterService.tooltipSelectedMap = this.filtersFromRoute?.selectedFilterData\n ? new Map(JSON.parse(this.filtersFromRoute.selectedFilterData))\n : new Map();\n\n this.annaSortService.columnSortState = this.filtersFromRoute?.sortState\n ? new Map(JSON.parse(this.filtersFromRoute.sortState))\n : new Map();\n\n if (this.filtersFromRoute?.easyFilter) {\n const index = this.intelliFilter.findIndex((n) => n.text === this.filtersFromRoute.easyFilter);\n if (index !== -1 && !this.intelliFilter[index].isDisabled) {\n this.intelliFilter.forEach((filter) => {\n filter.isActive = false;\n });\n this.intelliFilter[index].isActive = true;\n this.selectedIntelliFilter = cloneDeep(this.intelliFilter[index]);\n this.enableDisableClearAllBtn();\n }\n }\n if (this.filtersFromRoute.metric) {\n this.selectedMetric = cloneDeep(this.filtersFromRoute.metric);\n }\n }\n\n goToOffersRevisionsPage() {\n this.goToPage({\n page: \"offers\",\n parentTab: this.parentOrderListingTabName,\n selectedIntelliFilter: this.selectedIntelliFilter,\n advertiserId:\n \"advertiserId\" in this.formattedResponse.orderInfo\n ? this.formattedResponse.orderInfo.advertiserId\n : null,\n orderMetric:\n this.formattedResponse.orderInfo.metric.toLowerCase() ===\n OrderListingConstants.IMPRESSIONS.toLowerCase()\n ? \"CPM\"\n : \"CPP\",\n });\n }\n\n showOngoingRevisionToastr() {\n this.toastr.info(RevisionToastrMessage.OngoingTemporaryRevisionMessage, \"\", {\n timeOut: 10000,\n closeButton: true,\n tapToDismiss: false,\n });\n }\n\n calculateDataOnTopHeight(): number {\n return document.getElementById(\"spots-approval-rov-tc\")?.offsetTop;\n }\n\n findState(OrderInfo: OrderInfoForANNARevision, Status: string): \"CURRENT\" | \"PASSED\" | \"SKIPPED\" | \"UPCOMING\" {\n const index: number = OrderInfo.status.findIndex((n) => n.Status === Status);\n if (OrderInfo.status[index].IsCurrent) {\n return \"CURRENT\";\n } else if (index > OrderInfo.status.findIndex((n: HeaderStatus) => n.IsCurrent)) {\n return \"UPCOMING\";\n }\n\n switch (Status) {\n case \"Seller Pending\":\n if (OrderInfo.status[index].Action === \"AutoRejected\") {\n return \"SKIPPED\";\n }\n return \"PASSED\";\n case \"Seller Reconfirm\":\n case \"Buyer Pending\":\n // Buyer auto-rejected or Seller manually rejected everything/seller autorejected\n if (\n OrderInfo.status[index]?.Action === \"AutoRejected\" ||\n (OrderInfo.status.filter((n: HeaderStatus) => n.IsCurrent)[0].Status === \"Rev Discarded\" &&\n OrderInfo.status[index]?.Action === \"Skipped\" &&\n OrderInfo.status[index + 1]?.Action === \"Skipped\")\n ) {\n return \"SKIPPED\";\n }\n return \"PASSED\";\n case \"SM Pending\":\n // Seller/Buyer auto-rejected or Seller/Buyer manually rejected everything\n if (OrderInfo.status[index].Action === \"Skipped\") {\n return \"SKIPPED\";\n }\n return \"PASSED\";\n // no default\n }\n\n return null;\n }\n\n ngOnDestroy() {\n this.resetPersistingData();\n this.toastr.clear();\n this.closeHubConnection();\n }\n\n resetPersistingData() {\n this.spotsApprovalService.spotIdAndSelectedRadioActionAndCommentMap = null;\n this.spotsApprovalService.totalRowSpotTypeAndSelectedActionAndCommentMap = [];\n this.drrListingService.fromOrderRevisionsPage = false;\n this.drrListingService.fromOrderHistoryPage = false;\n }\n\n closeHubConnection() {\n if (this.hubConnection) {\n this.hubConnection.stop().then(\n () => {\n this.hubConnection = null;\n datadogRum.addAction(\"Hub connection closed\");\n },\n (err) => {\n datadogRum.addAction(\"Hub connection closed with error\", err);\n // do nothing\n },\n );\n }\n }\n\n fetchPreviousOrNextOrderDetails(obj: { index: number; orderData: any }) {\n this.orderData = cloneDeep(obj.orderData);\n this.drrListingService.orderInfo = obj.orderData;\n this.drrListingService.orderInfo = this.ordersOrRevisonsList[obj.index];\n this.breadcrumbService.popBreadcrumbs(1);\n const name = this.drrListingService.orderInfo.orderId;\n const path = this.router.url;\n this.breadcrumbService.updateBreadcrumbs(name, path, true);\n const navigateTo: string =\n this.drrListingService.orderInfo.revisionType === this.revisionTypeConstants.ANNA\n ? `${this.todayAnnaRevisionTabUrl}/`\n : \"todays-user-offers/\";\n\n let queryParams = {\n orderId: this.drrListingService.orderInfo.orderId,\n campaignId: this.drrListingService.orderInfo.campaignId,\n stationId: this.stationId,\n revNumber: this.drrListingService.orderInfo.revisionNo,\n };\n queryParams = this.userType === \"BUYER\" ? Object.assign(queryParams, { ogId: this.ogId }) : queryParams;\n this.drrListingService.spotsApprovalFiltersAppliedRouteChange = true;\n this.router.navigate([`orders/${navigateTo}${this.drrListingService.orderInfo.orderId}`], {\n queryParams,\n });\n }\n\n updateNavigationHistory() {\n const queryParams = this.prepareQueryParamOnFilterApplication(this.selectedIntelliFilter);\n\n const queryParamToSend: any = {};\n\n if (Object.keys(queryParams).length > 0) {\n queryParamToSend.filters = this.persistingFilterService.storeKeyValueInLocalStorage(queryParams);\n }\n\n if (queryParamToSend.filters) {\n this.drrListingService.spotsApprovalFiltersAppliedRouteChange = true;\n this.router.navigate([], {\n queryParams: queryParamToSend,\n relativeTo: this.route.parent,\n queryParamsHandling: \"merge\",\n });\n } else {\n this.drrListingService.spotsApprovalFiltersAppliedRouteChange = true;\n this.router.navigate([], {\n queryParams: { filters: null },\n relativeTo: this.route.parent,\n queryParamsHandling: \"merge\",\n });\n }\n }\n\n prepareQueryParamOnFilterApplication(selectedIntelliFilter: IntelliFilter) {\n const query: any = {};\n\n if (this.annaFilterService.appliedFiltersArray.length > 0) {\n query.appliedFilters = this.annaFilterService.appliedFiltersArray;\n query.selectedFilterData = JSON.stringify(Array.from(this.annaFilterService.tooltipSelectedMap));\n query.easyFilter = selectedIntelliFilter ? selectedIntelliFilter.text : null;\n }\n\n if (this.annaGtService.isSortingAppliedToTable()) {\n query.sortState = JSON.stringify(Array.from(this.annaSortService.columnSortState));\n }\n if (\n (this.selectedMetric.text === OrderMetrics.rating && this.showImpressions) ||\n (!this.showImpressions && this.selectedMetric.text === OrderMetrics.imps)\n )\n query.metric = this.selectedMetric;\n\n return query;\n }\n\n goToPage(obj: GoToPageObj): void {\n this.popBreadcrumbsIfAlreadyPresent(obj.page, obj.selectedIntelliFilter);\n switch (obj.page) {\n case \"revisions\":\n this.goToRevisionsPage(obj.parentTab);\n break;\n case \"BizRules\":\n this.goToBizRulesPage(obj.parentTab);\n break;\n case \"offers\":\n this.goToOffersPage(obj.parentTab);\n break;\n // no default\n }\n }\n\n goToOffersPage(parentTab: \"TV Revenue\" | \"Other Revenue\") {\n const offersTabUrl = \"offers\";\n this.router.navigate([`orders/order-container/${this.orderData?.orderId}`, this.stationId, offersTabUrl], {\n queryParams: {\n parentEquivalisedData: false,\n parentTab,\n breadcrumbs: this.persistingFilterService.storeKeyValueInLocalStorage(\n this.breadcrumbService.getBreadcrumbList(),\n false,\n ),\n },\n });\n }\n\n popBreadcrumbsIfAlreadyPresent(goToPage: \"revisions\" | \"BizRules\" | \"offers\", selectedFilter: IntelliFilter) {\n const existingBreadcrumbs = this.breadcrumbService.getBreadcrumbList();\n let spliceFrom = -1;\n switch (goToPage) {\n case \"revisions\":\n spliceFrom =\n existingBreadcrumbs &&\n existingBreadcrumbs.findIndex(\n (n: IBreadcrumb) =>\n n.name === `${this.orderData?.orderId} (Revisions)` &&\n n.path.includes(`orders/order-container/${this.orderData?.orderId}/revisions`),\n );\n break;\n case \"BizRules\":\n spliceFrom =\n existingBreadcrumbs &&\n existingBreadcrumbs.findIndex(\n (n: IBreadcrumb) =>\n n.name === `${this.orderData?.orderId} (Revisions)` &&\n n.path.includes(`orders/order-container/${this.orderData?.orderId}/revisions`),\n );\n break;\n case \"offers\":\n spliceFrom =\n existingBreadcrumbs &&\n existingBreadcrumbs.findIndex(\n (n: IBreadcrumb) =>\n n.name === `${this.orderData?.orderId} (Offers)` &&\n n.path.includes(`orders/order-container/${this.orderData?.orderId}/offers`),\n );\n break;\n // no default\n }\n if (spliceFrom !== -1) {\n const currentBreadcrumbList = existingBreadcrumbs && existingBreadcrumbs.slice(0, spliceFrom);\n this.breadcrumbService.breadcrumbListSubject.next(currentBreadcrumbList);\n } else {\n this.updateBC();\n }\n }\n\n updateBC() {\n this.breadcrumbService.popBreadcrumbs(1);\n const path = this.router.url;\n this.breadcrumbService.updateBreadcrumbs(this.orderData?.orderId, path, true);\n }\n\n goToRevisionsPage(parentTab: \"TV Revenue\" | \"Other Revenue\") {\n this.router.navigate([\"orders/order-container\", this.orderData?.orderId, this.stationId, \"revisions\"], {\n queryParams: {\n parentEquivalisedData: false,\n parentTab,\n breadcrumbs: this.persistingFilterService.storeKeyValueInLocalStorage(\n this.breadcrumbService.getBreadcrumbList(),\n false,\n ),\n },\n });\n }\n\n goToBizRulesPage(parentTab: \"TV Revenue\" | \"Other Revenue\") {\n const businessUrl = this.userType === \"SELLER\" ? \"/order-business-rules\" : \"/business-rules\";\n this.router.navigate([`orders/order-container${this.orderData?.orderId}`, this.stationId, businessUrl], {\n queryParams: {\n parentEquivalisedData: false,\n parentTab,\n breadcrumbs: this.persistingFilterService.storeKeyValueInLocalStorage(\n this.breadcrumbService.getBreadcrumbList(),\n false,\n ),\n },\n });\n }\n\n assignValuesToOrderInfoObjectFromOrderClickedRow(\n goToTab: number,\n navigateTo: string,\n advertiserId: number,\n orderMetric: \"CPP\" | \"CPM\",\n ) {\n const ogObject = { id: this.ogId ? this.ogId : null, text: \"\" };\n\n const orderInfoObj = {\n userId: JSON.parse(localStorage.getItem(\"userProfileData\"))\n ? +JSON.parse(localStorage.getItem(\"userProfileData\")).userId\n : null,\n channelId: this.stationId,\n orderId: this.orderData?.orderId,\n campaignId: this.orderData.campaignId,\n campaignStartDate: this.orderData.flightStartDate,\n campaignEndDate: this.orderData.flightEndDate,\n displayOrderId: this.orderData?.orderId,\n currentTab: goToTab,\n currentListingTab: 4,\n latest_revision: +this.orderData.revisionNo,\n navigateTo,\n stationName: this.orderData.stationName,\n advertiserId,\n orderMeasurementType: orderMetric,\n currentListingTabName:\n this.orderData.revisionType === this.revisionTypeConstants.ANNA\n ? OrderListingConstants.TodaysANNAOffers\n : OrderListingConstants.TodaysUserOffers,\n ogId: this.ogId ? this.ogId : null,\n og: ogObject,\n };\n return orderInfoObj;\n }\n\n setSellerReconfirmationMessageBoxData() {\n const message =\n \"Seller Reconfirmation is required for this order on ANNA on behalf of the buyer after offline discussion since the buyer isn't involved on the tool yet.\";\n const iconClass = \"mdi mdi-information\";\n this.sellerReconfirmationMessageBoxData = new MessageBoxData(\n \"\",\n message,\n iconClass,\n `${GenericMessageBoxTheme.informationBlue.messageBoxClass} sm asr-info-box`,\n );\n }\n\n checkAndSetMessageBoxData(reasonForNoRevision: string, hasOSPESpots: boolean) {\n let message = \"\";\n if (reasonForNoRevision) {\n if (reasonForNoRevision === \"ORDER_DISCREPANCY\") {\n message = \"\";\n } else if (reasonForNoRevision === \"REP_UNCONFIRMED_REVISION\") message = \"\";\n else if (reasonForNoRevision === \"ANNA_COULD_NOT_FIND\")\n message = `ANNA did not pick up this order for revisions because there are no suitable offers to be made for it. ${hasOSPESpots\n ? \"However, you can mark the following spots as credit or create offers for them before the seller cut off time.\"\n : \"\"\n }`;\n else if (reasonForNoRevision === \"HIATUS_PENDING\") {\n message =\n \"ANNA did not pick up this order for revisions because there are hiatus dates pending approval on WO Traffic.\";\n }\n this.messageBoxData = new MessageBoxData(\n \"\",\n message,\n `${GenericMessageBoxTheme.informationBlueGeneric.iconClass}`,\n `${GenericMessageBoxTheme.informationBlueGeneric.messageBoxClass} sm inline-block-msg`,\n );\n // this.gtDimension.dataOnTopHeight += 56;\n this.setTableHeight();\n }\n }\n\n messageBoxViewClicked(reasonForNoRevision: string) {\n this.spotsApprovalService.fromSpotsApprovalPageLink = true;\n if (reasonForNoRevision === \"ORDER_DISCREPANCY\") {\n const objToEmit = {\n flightStartDate: this.orderData.flightStartDate,\n orderId: this.orderData?.orderId,\n stationId: this.stationId,\n };\n this.updateBC();\n this.navigateToOrderDiscrepancy.emit(objToEmit);\n } else if (reasonForNoRevision === \"REP_UNCONFIRMED_REVISION\") {\n this.updateBC();\n const objToEmit = {\n stationId: this.stationId,\n altOrderId: this.orderInfoData.alternateOrderId,\n trafficOrderId: this.orderData?.orderId,\n ecOrderStatus: this.orderInfoData.pendingEcOrderStatus,\n };\n this.navigateToVerifyMapping.emit(objToEmit);\n }\n }\n\n gtRadioButtonMessageIconClicked(event: { data: AdditionalSpotInformation, iconName?: string }) {\n if (event.iconName && event.iconName === \"sellerCancellationComment\") {\n this.openSellerCancellationCommentPopup(event.data);\n return;\n }\n switch (event.data.action) {\n case \"resubmit\":\n this.openOfferRejectionReasonAndCommentModal(event.data, false);\n break;\n\n case \"credit\":\n case \"approve\":\n this.actionCommentPopupTitle =\n event.data.action === \"credit\" ? \"Credit Offer Comment\" : \"Approve Offer Comment\";\n this.actionRadioButtonComment = \"\";\n if (event.data.action === \"credit\" && event.data.creditActionComment) {\n this.actionRadioButtonComment = cloneDeep(event.data.creditActionComment);\n } else if (event.data.action === \"approve\" && event.data.approveActionLocalComment) {\n this.actionRadioButtonComment = cloneDeep(event.data.approveActionLocalComment);\n }\n this.allowEditInActionCommentPopup = event.data.enableCommentEdit;\n\n this.actionCommentsModal?.closeModal();\n this.actionCommentsModal?.openModal(event.data, this.actionRadioButtonComment);\n break;\n\n default:\n break;\n }\n }\n\n openCancelOffersConfirmationPopup(rowData: AdditionalSpotInformation) {\n this.resetTimerAfterUserAction();\n this.selectedOfferIdForCancel = cloneDeep(\n [...this.formattedResponse.offeredMGsAndADUs\n .filter((n: AdditionalSpotInformation) => n.groupId === rowData.groupId)\n .map((n: AdditionalSpotInformation) => n.uniqueId),\n ...this.formattedResponse.badlyBehavedSpots\n .filter((n: AdditionalSpotInformation) => n.groupId === rowData.groupId)\n .map((n: AdditionalSpotInformation) => n.uniqueId)\n ],\n );\n const topMsg =\n \"The selected offer will be cancelled on the rep platform (if applicable) and rejected on ANNA. Please enter reason for cancellation.\";\n this.actionCommentPopupTitle = \"Cancel Offer Comment\";\n this.actionRadioButtonComment = null;\n this.allowEditInActionCommentPopup = true;\n this.individualOfferCancellationPopup?.closeModal();\n this.individualOfferCancellationPopup?.openModal(rowData, this.actionRadioButtonComment, topMsg);\n }\n\n openSellerCancellationCommentPopup(rowData: AdditionalSpotInformation) {\n this.actionCommentPopupTitle = \"Cancel Offer Comment\";\n this.allowEditInActionCommentPopup = false;\n this.individualOfferCancellationPopup?.closeModal();\n this.individualOfferCancellationPopup?.openModal(rowData, rowData.sellerCancellationComment, \"\");\n }\n\n openOfferRejectionReasonAndCommentModal(\n data: AdditionalSpotInformation,\n revertToApproveIfCancelClickedInPopup: boolean,\n ) {\n this.rowDataForRejectionPopup = data;\n this.rejectionPopupData = {\n showActionInRejectionPopup: data.showActionInRejectionPopup,\n allowActionInRejectionPopup: data.allowActionInRejectionPopup,\n rejectActionComment: data.rejectActionComment,\n excludeFromFutureOffers: data.excludeFromFutureOffers,\n rejectionHeader: data.rejectionHeader || \"Reject Offers\"\n };\n this.spotTypeForRejectionPoup = data.spotTypeCategory;\n this.openRejectionReasonPopup = true;\n setTimeout(() => {\n this.offerRejectionModal.setRevertToApproveIfCancelClickedInPopup(revertToApproveIfCancelClickedInPopup);\n }, 0);\n }\n\n openOfferRejectionReasonAndCommentModalForTotalRow(revertToApproveIfCancelClickedInPopup: boolean) {\n const data: AdditionalSpotInformation =\n this.tableData.filter((n) => n.enableAllowedActions)?.length > 0\n ? this.tableData.filter((n) => n.enableAllowedActions)[0]\n : this.tableData[0];\n this.rejectionPopupData = {\n showActionInRejectionPopup: data.showActionInRejectionPopup,\n allowActionInRejectionPopup: data.allowActionInRejectionPopup,\n rejectActionComment: data?.rejectActionComment,\n excludeFromFutureOffers: data?.excludeFromFutureOffers,\n rejectionHeader: data?.rejectionHeader || \"Reject Offers\"\n };\n this.rowDataForRejectionPopup = null;\n this.spotTypeForRejectionPoup = data.spotTypeCategory;\n this.openRejectionReasonPopup = true;\n setTimeout(() => {\n this.offerRejectionModal.setRevertToApproveIfCancelClickedInPopup(revertToApproveIfCancelClickedInPopup);\n }, 0);\n }\n\n offerRejectionPopupApplyClicked(data: { comments: string[]; excludeFutureOffers: boolean }) {\n this.openRejectionReasonPopup = false;\n this.resetTimerAfterUserAction();\n if (this.rowDataForRejectionPopup) {\n if (this.rowDataForRejectionPopup.groupId !== \"00000000-0000-0000-0000-000000000000\") {\n this.tableData\n .filter((spot) => spot.groupId === this.rowDataForRejectionPopup.groupId &&\n spot.RadioButtonConfig.filter((n: SpotaApprovalIRadioButton) => n.label === \"Reject\")?.length > 0)\n .forEach((spot: AdditionalSpotInformation) => {\n spot.rejectActionComment = data.comments;\n spot.excludeFromFutureOffers = data.excludeFutureOffers;\n spot.RadioButtonConfig.filter((n: SpotaApprovalIRadioButton) => n.label === \"Reject\")[0].icons =\n [{ class: \"mdi mdi-comment-quote-outline\" }];\n });\n this.clonedTableData\n .filter((spot) => spot.groupId === this.rowDataForRejectionPopup.groupId &&\n spot.RadioButtonConfig.filter((n: SpotaApprovalIRadioButton) => n.label === \"Reject\")?.length > 0)\n .forEach((spot: AdditionalSpotInformation) => {\n spot.rejectActionComment = data.comments;\n spot.excludeFromFutureOffers = data.excludeFutureOffers;\n spot.RadioButtonConfig.filter((n: SpotaApprovalIRadioButton) => n.label === \"Reject\")[0].icons =\n [{ class: \"mdi mdi-comment-quote-outline\" }];\n });\n this.formattedResponse[this.rowDataForRejectionPopup.spotCategoryKeyForEasyFilters]\n .filter((spot: AdditionalSpotInformation) => spot.groupId === this.rowDataForRejectionPopup.groupId &&\n spot.RadioButtonConfig.filter((n: SpotaApprovalIRadioButton) => n.label === \"Reject\")?.length > 0)\n .forEach((spot: AdditionalSpotInformation) => {\n spot.rejectActionComment = data.comments;\n spot.excludeFromFutureOffers = data.excludeFutureOffers;\n spot.RadioButtonConfig.filter((n: SpotaApprovalIRadioButton) => n.label === \"Reject\")[0].icons =\n [{ class: \"mdi mdi-comment-quote-outline\" }];\n });\n } else {\n let spotIndex: number = this.tableData.findIndex(\n (spot: AdditionalSpotInformation) => spot.spotId === this.rowDataForRejectionPopup.spotId,\n );\n this.tableData[spotIndex].RadioButtonConfig.filter(\n (n: SpotaApprovalIRadioButton) => n.label === \"Reject\",\n )[0].icons =\n [{ class: \"mdi mdi-comment-quote-outline\" }];\n this.tableData[spotIndex].rejectActionComment = data.comments;\n this.tableData[spotIndex].excludeFromFutureOffers = data.excludeFutureOffers;\n\n spotIndex = this.clonedTableData.findIndex(\n (spot) => spot.spotId === this.rowDataForRejectionPopup.spotId,\n );\n this.clonedTableData[spotIndex].RadioButtonConfig.filter(\n (n: SpotaApprovalIRadioButton) => n.label === \"Reject\",\n )[0].icons =\n [{ class: \"mdi mdi-comment-quote-outline\" }];\n this.clonedTableData[spotIndex].rejectActionComment = data.comments;\n this.clonedTableData[spotIndex].excludeFromFutureOffers = data.excludeFutureOffers;\n\n this.formattedResponse[this.rowDataForRejectionPopup.spotCategoryKeyForEasyFilters]\n .filter((spot: AdditionalSpotInformation) => spot.groupId === this.rowDataForRejectionPopup.groupId)\n .forEach((spot: AdditionalSpotInformation) => {\n spot.rejectActionComment = data.comments;\n spot.excludeFromFutureOffers = data.excludeFutureOffers;\n spot.RadioButtonConfig.filter(\n (n: SpotaApprovalIRadioButton) => n.label === \"Reject\",\n )[0].icons =\n [{ class: \"mdi mdi-comment-quote-outline\" }];\n });\n }\n\n this.tableData = [...this.tableData];\n this.updateTotalRowRadioButtons();\n } else {\n this.offerRejectionPopupApplyClickedForTotalRow(data);\n }\n }\n\n revertRadioButtonSelectionToDefaultForOfferRejectionPopup(revertRadioButtonSelectionToApprove: boolean) {\n this.resetTimerAfterUserAction();\n this.openRejectionReasonPopup = false;\n if (revertRadioButtonSelectionToApprove) {\n if (this.rowDataForRejectionPopup) {\n this.gtActionRadioButtonClicked({ action: \"approve\", data: this.rowDataForRejectionPopup }, false);\n this.tableData = [...this.tableData];\n } else {\n this.totalRowInfo.filter((n) => n.colName === SpotsApprovalTableTotalRowColNames.TOTAL_RADIO_ACTION_COL_NAME,)[0].radioButtonColumnData.selectedRadioButton = \"approve\";\n this.totalRowInfo\n .filter((n) => n.colName === SpotsApprovalTableTotalRowColNames.TOTAL_RADIO_ACTION_COL_NAME,)[0].radioButtonColumnData\n .radioButtonsData.forEach((item) => {\n item.iconClass = [];\n if (item.value === \"approve\" && this.orderInfoData?.isRepOrder) {\n item.iconClass.push(\"mdi mdi-comment-quote-outline\");\n if (\n SpotsApprovalService.checkIfTableContainsMultipleApproveComments(this.tableData) ===\n null\n ) {\n item.iconClass[0] += \" disabled\";\n }\n }\n });\n this.nonEditableGTComponent.detectChanges();\n }\n }\n }\n\n revertRadioButtonSelectionToDefaultForApproveOrCreditPopup(revertRadioButtonSelectionToApprove: boolean) {\n if (revertRadioButtonSelectionToApprove) {\n this.gtActionRadioButtonClicked({ action: \"approve\", data: this.rowDataToRevertBackToDefault }, false);\n this.tableData = cloneDeep(this.tableData);\n }\n this.updateTotalRowRadioButtons();\n }\n\n addMFCCommentOnlyForPEInPEMGGroup(isCreditAction: boolean, spot: AdditionalSpotInformation) {\n const isPreemptedSpot = spot.spotTypeCategory === \"PREEMPTION\" || spot.spotTypeCategory === \"UNRESOLVED\" || spot.spotTypeCategory === \"CREDIT_ADU\";\n const isBadlyBehavedCreditSpot = spot.spotCategoryKeyForEasyFilters === \"badlyBehavedSpots\" && spot.spotTypeCategory === \"CREDIT\";\n return isCreditAction && (isPreemptedSpot || isBadlyBehavedCreditSpot);\n }\n\n actionCommentsPopupApplyClicked(event: { spotData: AdditionalSpotInformation; comment: string }) {\n this.actionCommentsModal?.closeModal();\n const comment = event.comment === \"\" ? null : event.comment;\n\n if (event.spotData) {\n const isApproveAction = event.spotData.action === \"approve\";\n const isCreditAction = event.spotData.action === \"credit\";\n const keyToUse: \"approveActionLocalComment\" | \"creditActionComment\" = isApproveAction\n ? \"approveActionLocalComment\"\n : \"creditActionComment\";\n const labelToUse: \"Approve\" | \"Mark for Credit\" = isApproveAction\n ? \"Approve\"\n : \"Mark for Credit\";\n if (event.spotData.groupId !== \"00000000-0000-0000-0000-000000000000\") {\n this.tableData\n .filter((spot) => spot.groupId === event.spotData.groupId && \n spot.RadioButtonConfig.filter((n: SpotaApprovalIRadioButton) => n.label === labelToUse)?.length > 0)\n .forEach((spot: AdditionalSpotInformation) => {\n if (isApproveAction) {\n spot[keyToUse] = comment;\n } else if (this.addMFCCommentOnlyForPEInPEMGGroup(isCreditAction, spot)) {\n spot[keyToUse] = comment;\n }\n });\n this.clonedTableData\n .filter((spot) => spot.groupId === event.spotData.groupId && \n spot.RadioButtonConfig.filter((n: SpotaApprovalIRadioButton) => n.label === labelToUse)?.length > 0)\n .forEach((spot: AdditionalSpotInformation) => {\n if (isApproveAction) {\n spot[keyToUse] = comment;\n } else if (this.addMFCCommentOnlyForPEInPEMGGroup(isCreditAction, spot)) {\n spot[keyToUse] = comment;\n }\n });\n\n this.formattedResponse.offeredMGsAndADUs\n .filter((spot: AdditionalSpotInformation) => spot.groupId === event.spotData.groupId && \n spot.RadioButtonConfig.filter((n: SpotaApprovalIRadioButton) => n.label === labelToUse)?.length > 0)\n .forEach((spot: AdditionalSpotInformation) => {\n if (isApproveAction) {\n spot[keyToUse] = comment;\n } else if (this.addMFCCommentOnlyForPEInPEMGGroup(isCreditAction, spot)) {\n spot[keyToUse] = comment;\n }\n });\n\n this.formattedResponse.badlyBehavedSpots\n .filter((spot: AdditionalSpotInformation) => spot.groupId === event.spotData.groupId && \n spot.RadioButtonConfig.filter((n: SpotaApprovalIRadioButton) => n.label === labelToUse)?.length > 0)\n .forEach((spot: AdditionalSpotInformation) => {\n if (isApproveAction) {\n spot[keyToUse] = comment;\n } else if (this.addMFCCommentOnlyForPEInPEMGGroup(isCreditAction, spot)) {\n spot[keyToUse] = comment;\n }\n });\n } else {\n this.tableData[\n this.tableData.findIndex((spot: AdditionalSpotInformation) => spot.spotId === event.spotData.spotId)\n ][keyToUse] = comment;\n this.clonedTableData[\n this.clonedTableData.findIndex(\n (spot: AdditionalSpotInformation) => spot.spotId === event.spotData.spotId,\n )\n ][keyToUse] = comment;\n this.formattedResponse.outstandingSpots[\n this.formattedResponse.outstandingSpots.findIndex(\n (spot: AdditionalSpotInformation) => spot.spotId === event.spotData.spotId,\n )\n ][keyToUse] = comment;\n }\n this.updateTotalRowRadioButtons();\n } else if (this.totalRowInfo.filter((n) => n.colName === SpotsApprovalTableTotalRowColNames.TOTAL_RADIO_ACTION_COL_NAME)[0]\n ?.radioButtonColumnData?.selectedRadioButton === \"approve\") {\n this.totalRowApproveOrCreditActionCommentAppliedOrNoActionClicked(\"approve\", \"Approve\", comment)\n } else {\n this.totalRowApproveOrCreditActionCommentAppliedOrNoActionClicked(\"credit\", \"Credit All\", comment);\n }\n }\n\n setDropDownData() {\n this.orderMetrics = this.primaryOrderPanelService.getOrderMetricsDropdownValues();\n this.setMetricDropdownConfig();\n }\n\n setMetricDropdownConfig() {\n this.metricDropdownConfig = { ...this.annaGlobalConfig.defaultSingleSelectConfig };\n this.metricDropdownConfig.placeholder = \"Select metric\";\n }\n\n metricChanged(event: IdText, changeTableHeaders: boolean = true) {\n const previousSelectedMetric = cloneDeep(this.selectedMetric);\n this.selectedMetric = event;\n\n if (changeTableHeaders) {\n const ratingColumnIndex = this.tableHeaders.findIndex(\n (header) => header.headerInfo[0].objectKey === RevisionTableKeyConstants.ORDERED_RATING_KEY,\n );\n const impsColumnIndex = this.tableHeaders.findIndex(\n (header) => header.headerInfo[0].objectKey === RevisionTableKeyConstants.ORDERED_IMPRESSION_KEY,\n );\n\n const totalGrpColumnIndex = this.tableHeaders.findIndex(\n (header) => header.headerInfo[1]?.objectKey === RevisionTableKeyConstants.TOTAL_GRP_KEY,\n );\n const totalImpsColumnIndex = this.tableHeaders.findIndex(\n (header) => header.headerInfo[1]?.objectKey === RevisionTableKeyConstants.TOTAL_IMPS_KEY,\n );\n\n const rtgEstimateColumnIndex = this.tableHeaders.findIndex(\n (header) => header.headerInfo[0].objectKey === \"firstTwoEstimatePrioritiesForRTGMetric\",\n );\n const impsEstimateColumnIndex = this.tableHeaders.findIndex(\n (header) => header.headerInfo[0].objectKey === \"firstTwoEstimatePrioritiesForIMPSMetric\",\n );\n\n if (this.selectedMetric?.text === OrderMetrics.imps) {\n this.tableHeaders.splice(\n ratingColumnIndex,\n 1,\n this.spotsApprovalService.returnIMPSObject(this.showAUR),\n );\n if (this.userType === \"SELLER\") {\n this.tableHeaders.splice(\n rtgEstimateColumnIndex,\n 1,\n this.spotsApprovalService.returnEstimateIMPSObject(this.orderInfoData?.estimatePriority),\n );\n }\n if (this.orderData.revisionType === RevisionTypeConstants.BUYER) {\n this.tableHeaders.splice(\n totalGrpColumnIndex,\n 1,\n this.spotsApprovalService.returnTotalAmountAndIMPS(),\n );\n }\n } else {\n this.tableHeaders.splice(impsColumnIndex, 1, this.spotsApprovalService.returnRTGObject(this.showAUR));\n if (this.userType === \"SELLER\") {\n this.tableHeaders.splice(\n impsEstimateColumnIndex,\n 1,\n this.spotsApprovalService.returnEstimateRTGObject(this.orderInfoData?.estimatePriority),\n );\n }\n if (this.orderData.revisionType === RevisionTypeConstants.BUYER) {\n this.tableHeaders.splice(\n totalImpsColumnIndex,\n 1,\n this.spotsApprovalService.returnTotalAmountAndGRP(),\n );\n }\n }\n }\n this.createTotalRow();\n this.setRowClass();\n if (!isEqual(previousSelectedMetric, event)) {\n this.updateNavigationHistory();\n }\n setTimeout(() => {\n this.nonEditableGTComponent.detectChanges();\n }, 0);\n this.cdRef.markForCheck();\n }\n\n gtIconClicked(event: { data: AdditionalSpotInformation; id: string; columnHeader: IHeaderInfo }) {\n if (event.id === UndoOrReofferOrCancelAction.DISABLED_UNDO_OFFER || event.id === UndoOrReofferOrCancelAction.DISABLED_REOFFER_OFFER) return;\n\n this.annaFilterService.resetFilterSortActiveStatus = false;\n if (event.id === UndoOrReofferOrCancelAction.EDIT_OFFER) {\n this.editClicked(event.data);\n } else if (event.id === UndoOrReofferOrCancelAction.REOFFER) {\n this.openReOffersConfirmationPopup(event.data);\n } else if (event.id === UndoOrReofferOrCancelAction.UNDO_OFFER) {\n this.openUndoOffersConfirmationPopup(event.data);\n } else if (event.id === UndoOrReofferOrCancelAction.CANCEL_OFFER) {\n this.openCancelOffersConfirmationPopup(event.data);\n } else if (event.id === SpotsApprovalGeneraicTableActions.SELLER_LINE_COLUMN_BBS_DETAILS) {\n this.openBadlyBehavedSpotDetailsPopup(event.data);\n }\n }\n\n openBadlyBehavedSpotDetailsPopup(data: AdditionalSpotInformation) {\n this.badlyBehavedSpotGroupId = data.groupId;\n this.openBadlyBehavedSpotsPopup = true;\n }\n\n closeBadlyBehavedSpotsPopup() {\n this.openBadlyBehavedSpotsPopup = false;\n\n }\n\n editClicked(data: AdditionalSpotInformation, isReofferFlow: boolean = false) {\n this.closeSpotsEditApprovalPopup();\n this.closeADUEditPopup();\n this.toastr.clear();\n this.setSpotIdAndSelectedRadioMap();\n this.cdRef.detectChanges();\n\n this.isReofferFlow = isReofferFlow;\n this.isBadlyBehavedGroupChosenForEdit = data.spotCategoryKeyForEasyFilters === \"badlyBehavedSpots\";\n this.createEditPopupData(data);\n this.resetTimerAfterUserAction();\n if (this.isADUSpotUnderEdit) {\n this.openADUEditPopup = true;\n } else {\n this.openEditPopup = true;\n }\n }\n\n setSpotIdAndSelectedRadioMap() {\n this.spotsApprovalService.spotIdAndSelectedRadioActionAndCommentMap = [];\n\n const spotKeys = Object.keys(this.formattedResponse).filter(\n (key) => key === \"offeredMGsAndADUs\" || key === \"outstandingSpots\",\n );\n spotKeys.forEach((key: \"offeredMGsAndADUs\" | \"outstandingSpots\") => {\n const spots: AdditionalSpotInformation[] = cloneDeep(this.formattedResponse[key]);\n this.spotsApprovalService.spotIdAndSelectedRadioActionAndCommentMap =\n [...this.spotsApprovalService.spotIdAndSelectedRadioActionAndCommentMap,\n ...spots.map(\n ({\n spotId,\n groupId,\n action,\n approveActionLocalComment,\n creditActionComment,\n rejectActionComment,\n excludeFromFutureOffers,\n spotTypeCategory,\n }) => ({\n spotId,\n groupId,\n action,\n approveActionLocalComment,\n creditActionComment,\n rejectActionComment,\n excludeFromFutureOffers,\n spotTypeCategory,\n }),\n )]\n });\n }\n\n createEditPopupData(event: AdditionalSpotInformation) {\n this.groupableOutstandingSpots = null;\n this.isADUOrBonusCreate = false;\n\n if (\n event.displaySpotType.includes(\"Outstanding PE\") ||\n event.spotTypeCategory.includes(\"CREDIT\") ||\n (event.spotTypeCategory === \"UNRESOLVED\" && event.spotBelongsTo === \"OutstandingSpots\")\n ) {\n this.isADUSpotUnderEdit = false;\n this.isOSPESpotUnderEdit = true;\n\n if (event.spotTypeCategory.includes(\"CREDIT\")) {\n this.preemptedSpotsForEdit = this.originalResponse.OfferedMGsAndADUs.filter(\n (n) => n.NewSpotId === event.spotId,\n );\n } else {\n this.preemptedSpotsForEdit = this.originalResponse.OutstandingSpots.filter(\n (n) => n.NewSpotId === event.spotId,\n );\n }\n this.groupableOutstandingSpots = this.originalResponse.OutstandingSpots.filter(\n (n) => n.GroupableId === event.groupableId,\n );\n } else if (\n event.spotTypeCategory === \"PREEMPTION\" ||\n event.spotTypeCategory === \"MAKEGOOD\" ||\n event.spotTypeCategory === \"UNRESOLVED\"\n ) {\n this.isADUSpotUnderEdit = false;\n this.isOSPESpotUnderEdit = false;\n\n this.preemptedSpotsForEdit = this.originalResponse.OfferedMGsAndADUs.filter(\n (n) =>\n n.NewGroupId === event.groupId &&\n (n.SpotType === \"PREEMPTION\" || n.SpotType === \"PREEMPTED\" || n.SpotType === \"UNRESOLVED\"),\n );\n this.offeredMakegoodsForEdit = this.originalResponse.OfferedMGsAndADUs.filter(\n (n: ISpotInformationResponse) => n.NewGroupId === event.groupId && n.SpotType === \"MAKEGOOD\",\n );\n } else {\n this.isADUSpotUnderEdit = true;\n this.isOSPESpotUnderEdit = false;\n\n this.orderRelatedExtraInfoForCreatingOrEditingADUs = {\n stationId: this.stationId,\n timezone: this.timezone,\n showImpressions: this.showImpressions,\n orderId: this.orderData?.orderId,\n tgId: this.formattedResponse?.revisionSummary?.tgId,\n spotType: event.spotTypeCategory\n }\n this.offeredADUsForEdit = this.originalResponse.OfferedMGsAndADUs.filter(\n (n) => n.NewGroupId === event.groupId,\n );\n }\n this.bizRulesFromDb = this.originalResponse.BizRulesFromDb;\n }\n\n closeSpotsEditApprovalPopup() {\n this.openEditPopup = false;\n setTimeout(() => {\n this.nonEditableGTComponent.detectChanges();\n }, 0);\n this.resetTimerAfterUserAction();\n }\n\n closeADUEditPopup() {\n this.openADUEditPopup = false;\n setTimeout(() => {\n this.nonEditableGTComponent.detectChanges();\n }, 0);\n this.resetTimerAfterUserAction();\n }\n\n getGroupRowClicked() {\n let groupRowClicked;\n if (this.offeredMakegoodsForEdit?.length) {\n groupRowClicked = this.offeredMakegoodsForEdit;\n } else if (this.preemptedSpotsForEdit?.length) {\n groupRowClicked = this.preemptedSpotsForEdit;\n } else {\n groupRowClicked = this.offeredADUsForEdit;\n }\n return groupRowClicked;\n }\n\n getMGorADUGroupRowClicked() {\n let groupRowClicked = null;\n if (this.offeredMakegoodsForEdit?.length) {\n groupRowClicked = this.offeredMakegoodsForEdit;\n } else if (this.offeredADUsForEdit?.length) {\n groupRowClicked = this.offeredADUsForEdit;\n }\n return groupRowClicked;\n }\n\n removeOSPEFromPersistingMapIfOSSpotIsEditedAndChangedToPEMGGroup() {\n if (this.preemptedSpotsForEdit?.length) {\n const index = this.spotsApprovalService.spotIdAndSelectedRadioActionAndCommentMap.findIndex(\n (x) => x.spotId === this.preemptedSpotsForEdit[0].NewSpotId,\n );\n\n // eslint-disable-next-line no-console\n console.log(index);\n if (index !== -1) {\n this.spotsApprovalService.spotIdAndSelectedRadioActionAndCommentMap.splice(index, 1);\n }\n }\n }\n\n addNewlyAddedSpotPlaceholderWithSameActionAsGroupInPersistingMap(\n newlyAddedSpots: { spotId: string; groupId: string; }[],\n groupEdited: ISpotInformationResponse[],\n ) {\n const existingActionForGroupList = this.spotsApprovalService.spotIdAndSelectedRadioActionAndCommentMap.filter(\n (n) => n.groupId === groupEdited[0].NewGroupId,\n );\n\n const makegoodSpotData = existingActionForGroupList.find((n) => n.spotTypeCategory === \"MAKEGOOD\");\n const existingActionForGroup = makegoodSpotData || existingActionForGroupList[0];\n\n // eslint-disable-next-line no-console\n console.log(existingActionForGroup);\n datadogRum.addAction(\"existingActionForGroup\", existingActionForGroup);\n newlyAddedSpots.forEach((x) => {\n if (existingActionForGroup) {\n this.spotsApprovalService.spotIdAndSelectedRadioActionAndCommentMap.push({\n spotId: null,\n groupId: existingActionForGroup.groupId,\n action: existingActionForGroup.action,\n approveActionLocalComment: existingActionForGroup.approveActionLocalComment,\n creditActionComment: existingActionForGroup.creditActionComment,\n rejectActionComment: existingActionForGroup.rejectActionComment,\n excludeFromFutureOffers: existingActionForGroup.excludeFromFutureOffers,\n spotTypeCategory: existingActionForGroup.spotTypeCategory,\n });\n }\n });\n }\n\n editSaved(event: { spots: { spotId: string; groupId: string; }[]; closePopup: boolean }) {\n // eslint-disable-next-line no-console\n console.log(\"before\", this.spotsApprovalService.spotIdAndSelectedRadioActionAndCommentMap);\n datadogRum.addAction(\n \"before spotIdAndSelectedRadioActionAndCommentMap\",\n this.spotsApprovalService.spotIdAndSelectedRadioActionAndCommentMap,\n );\n const mgOrAduGroup = this.getMGorADUGroupRowClicked();\n if (mgOrAduGroup) {\n this.addNewlyAddedSpotPlaceholderWithSameActionAsGroupInPersistingMap(\n event.spots,\n mgOrAduGroup,\n );\n } else {\n this.removeOSPEFromPersistingMapIfOSSpotIsEditedAndChangedToPEMGGroup();\n }\n\n // eslint-disable-next-line no-console\n console.log(\"after\", this.spotsApprovalService.spotIdAndSelectedRadioActionAndCommentMap);\n datadogRum.addAction(\n \"after spotIdAndSelectedRadioActionAndCommentMap\",\n this.spotsApprovalService.spotIdAndSelectedRadioActionAndCommentMap,\n );\n // /////////////////////////\n\n if (event.closePopup) {\n this.closeEditPopup();\n }\n }\n\n closeEditPopup() {\n this.openEditPopup = false;\n this.openADUEditPopup = false;\n this.resetTimerAfterUserAction();\n this.fetchOrderRevisionDetailsData(false);\n }\n\n prepareQueryParamsOnFilterForTraversal() {\n const filters: any = {};\n filters.advertiserId = this.formattedResponse.orderInfo.advertiserId;\n filters.stationId = this.stationId;\n filters.breadcrumbs = this.persistingFilterService.storeKeyValueInLocalStorage(\n this.breadcrumbService.getBreadcrumbList(),\n false,\n );\n filters.isExpired = false;\n return filters;\n }\n\n setDownloadButtonVariables() {\n this.disableOffersReportDownloadBtn = this.orderInfoData.disableOffersReportDownloadIcon;\n this.showDownloadButton =\n !this.hideDownloadButton &&\n this.orderInfoData.revisionType === this.revisionTypeConstants.ANNA &&\n (this.currentRevisionStatus === RevisionStatus.SellerPending ||\n this.currentRevisionStatus === RevisionStatus.SellerReconfirm ||\n this.currentRevisionStatus === RevisionStatus.BuyerPending);\n }\n\n openGenerateOffersReportModal() {\n if (!this.generateOffersReportConfirmationConfig) {\n this.setGenerateOffersReportConfirmationPopupConfig();\n }\n this.generateOffersReportConfirmModal.openModal();\n }\n\n setGenerateOffersReportConfirmationPopupConfig() {\n this.generateOffersReportConfirmationConfig = { ...this.annaGlobalConfig.defaultConfirmationPopupConfig };\n\n this.generateOffersReportConfirmationConfig.title = `Are you sure you want to email the MG offers sheet for this order?<br>\n The sheet will be sent to ${this.orderInfoData.salesSupportEmail} shortly.`;\n this.generateOffersReportConfirmationConfig.windowClass = \"submit-spots-popup generate-offers-popup\";\n this.generateOffersReportConfirmationConfig.showCloseIcon = false;\n this.generateOffersReportConfirmationConfig.cancelButtonLabel = \"Cancel\";\n this.generateOffersReportConfirmationConfig.confirmButtonLabel = \"Send Email\";\n }\n\n addOrRemoveHoveredStyleForEmailOfferButton(event: MouseEvent) {\n switch (event.type) {\n case \"mouseenter\":\n clearTimeout(this.latestTimeoutId);\n document.getElementById(\"EmailMGOffers\")?.classList?.add(\"hovered-email-mg-offers-button\");\n break;\n\n case \"mouseleave\":\n this.latestTimeoutId = setTimeout(() => {\n document.getElementById(\"EmailMGOffers\")?.classList?.remove(\"hovered-email-mg-offers-button\");\n }, 600);\n break;\n // no default\n }\n }\n\n closeGenerateOffersReportModal() {\n this.generateOffersReportConfirmModal.closeModal(false);\n }\n\n createGenerateOffersReportPayload() {\n const userId = JSON.parse(localStorage.getItem(\"userProfileData\"))\n ? +JSON.parse(localStorage.getItem(\"userProfileData\")).userId\n : null;\n return {\n OrderId: this.orderInfoData.orderId,\n StationId: this.stationId,\n RevisionNumber: this.orderInfoData.revisionNumber,\n Equivalisation: false,\n GetRemovedSpots: false,\n RequestedByUserId: userId,\n };\n }\n\n generateOffersReport() {\n this.disableOffersReportDownloadBtn = true;\n this.closeGenerateOffersReportModal();\n this.consumingProjectSpotsApprovalBackendService\n .generateOffersReport(this.createGenerateOffersReportPayload())\n .subscribe({\n next: (response: HttpResponse<any>) => {\n this.setDownloadButtonVariables();\n this.cdRef.detectChanges();\n },\n error: (error) => {\n this.setDownloadButtonVariables();\n this.cdRef.detectChanges();\n this.toastr.error(\"Something went wrong! Please try again.\");\n },\n });\n }\n\n lockTimedOut(releaseLock: boolean) {\n // release lock will be false only when TTL is expired from BE,We do not release lock as from BE it is already released.We only show the lock expired message\n if (\n !this.lockExpiredModalReference &&\n this.loggedInUser?.userId === this.acquireLockResponse?.lockAcquiredByUserId\n ) {\n this.setLockReleasedMessage();\n const elements = document?.getElementsByClassName(\"tooltip\");\n while (elements && elements.length > 0) {\n elements[0].remove();\n }\n if (releaseLock) {\n this.releaseLock();\n }\n }\n }\n\n setLockReleasedMessage() {\n if (this.clonedTableData?.length > 0) {\n const config = { ...this.annaGlobalConfig.defaultConfirmationPopupConfig };\n const ngbModalOptions: NgbModalOptions = {\n windowClass: config.windowClass,\n };\n\n this.lockExpiredModalReference = this.modalService.open(this.lockExpiredModal, ngbModalOptions);\n }\n }\n\n navigateToListing() {\n this.spotsApprovalEditModal?.cancelClicked();\n this.openEditPopup = false;\n this.openADUEditPopup = false;\n this.lockExpiredModalReference?.close();\n this.breadcrumbService.popBreadcrumbs(1);\n this.modalService.dismissAll();\n this.navigateToListingPage.emit();\n }\n\n resetTimerAfterUserAction() {\n this.resetTTLForLock();\n }\n\n async startHubConnection() {\n this.hubConnection = this.consumingProjectSpotsApprovalBackendService.getSpotsApprovalHubConnection();\n\n await this.hubConnection.start().then(\n async () => {\n await this.initializeClientSideHubConnection();\n\n this.askServerListener();\n this.acquireLock();\n },\n (err) => {\n datadogRum.addAction(\"Error while starting connection\", { err });\n // throw new Error(`Error while starting connection: ${err}`);\n },\n );\n\n this.hubConnection?.onreconnecting((error) => {\n datadogRum.addAction(\"Connection lost due to error\", { error });\n // throw new Error(`Connection lost due to error \"${error}\". Reconnecting...`);\n });\n\n this.hubConnection?.onreconnected((connectionId) => {\n datadogRum.addAction(\"Connection reconnected and calling StoreConnectionDataInCache\", { connectionId });\n this.initializeClientSideHubConnection();\n // this.requestServerToStoreConnectionData();\n });\n\n this.hubConnection?.onclose((error) => {\n if (error) {\n datadogRum.addAction(\"Connection lost due to error\", { error });\n throw new Error(`Connection lost due to error \"${error}\"`);\n } else {\n datadogRum.addAction(\"Hub connection closed gracefully\");\n }\n });\n }\n\n async initializeClientSideHubConnection(): Promise<void> {\n if (this.userType === \"BUYER\") {\n return new Promise((resolve, reject) => {\n this.consumingProjectSpotsApprovalBackendService.getTenantAddress(this.ogName).subscribe(\n (response) => {\n const tenantAddress = response.body.TenantAddress;\n this.hubConnection\n .invoke(\"InitializeClientSideHubConnection\", `https://${tenantAddress}/spots-approval`)\n .then(() => {\n this.requestServerToStoreConnectionData();\n resolve();\n })\n .catch((err) => reject(err));\n },\n (error) => {\n reject(error);\n },\n );\n });\n }\n this.requestServerToStoreConnectionData();\n return Promise.resolve();\n }\n\n requestServerToStoreConnectionData() {\n // DataDogRum logs\n datadogRum.addAction(\"requestServerToStoreConnectionData object\", {\n userId: this.loggedInUser?.userId,\n lockAcquiredByUserNameToSendInPayload: this.lockAcquiredByUserNameToSendInPayload,\n stationId: this.stationId,\n orderId: this.orderData?.orderId,\n });\n let params: any[];\n\n if (this.userType === \"SELLER\") {\n params = [\n this.loggedInUser?.userId,\n this.lockAcquiredByUserNameToSendInPayload,\n this.stationId,\n this.orderData?.orderId,\n null,\n null,\n false\n ];\n } else if (this.userType === \"BUYER\") {\n params = [\n -1,\n this.lockAcquiredByUserNameToSendInPayload,\n this.stationId,\n this.orderData?.orderId,\n (localStorage.getItem(\"centralBuyerId\"))]\n }\n this.hubConnection.invoke(\n this.consumingProjectSpotsApprovalBackendService.storeConnectionDataInCacheFuncName,\n ...params,\n );\n }\n\n askServerListener() {\n this.hubConnection.on(\"TTLExpired\", (message: any) => {\n // DataDogRum logs\n datadogRum.addAction(\"TTLExpired object\", { message });\n if (!this.showSkeletonLoading) {\n this.lockTimedOut(false);\n this.acquireLockResponse = null;\n this.cdRef.detectChanges();\n }\n });\n }\n\n acquireLock() {\n try {\n datadogRum.addAction(\"acquireLock object\", {\n stationId: this.stationId,\n orderId: this.orderData?.orderId,\n userId: this.loggedInUser?.userId,\n lockAcquiredByUserNameToSendInPayload: this.lockAcquiredByUserNameToSendInPayload,\n });\n\n let params: any[];\n if (this.userType === \"SELLER\") {\n params = [\n this.stationId,\n [this.orderData?.orderId],\n this.loggedInUser?.userId,\n this.lockAcquiredByUserNameToSendInPayload,\n null\n ];\n } else if (this.userType === \"BUYER\") {\n params = [\n this.stationId,\n [this.orderData?.orderId],\n -1,\n this.lockAcquiredByUserNameToSendInPayload,\n (localStorage.getItem(\"centralBuyerId\"))]\n }\n\n this.hubConnection\n .invoke(\n \"AcquireSpotsApprovalLock\",\n ...params\n )\n .then(\n (response: AcquireLockResponse[]) => {\n this.acquireLockResponse =\n response?.length > 0 &&\n response.filter((n) => n.orderId === this.orderData?.orderId)?.length > 0\n ? cloneDeep(response.filter((n) => n.orderId === this.orderData?.orderId)[0])\n : null;\n this.fetchOrderRevisionDetailsData(true);\n },\n (err) => {\n this.acquireLockResponse = null;\n datadogRum.addAction(\"Error while acquiring lock\", { err });\n this.fetchOrderRevisionDetailsData(true);\n },\n );\n } catch (err) {\n this.acquireLockResponse = null;\n this.fetchOrderRevisionDetailsData(true);\n datadogRum.addAction(\"Error while acquiring lock in catch\", { err });\n }\n }\n\n releaseLock() {\n try {\n if (this.hubConnection) {\n const params: any[] = [\n this.stationId,\n this.orderData?.orderId,\n (this.userType === \"SELLER\" ? this.loggedInUser?.userId : -1),\n this.lockAcquiredByUserNameToSendInPayload\n ];\n if (this.userType === \"SELLER\") {\n params.push(null, \"FRONTEND\");\n } else if (this.userType === \"BUYER\") {\n params.push(JSON.parse(localStorage.getItem(\"centralBuyerId\")), \"FRONTEND\");\n }\n this.hubConnection\n .invoke(\n this.consumingProjectSpotsApprovalBackendService.releaseSpotsApprovalLockFuncName,\n ...params\n )\n .then(\n (response) => {\n this.acquireLockResponse = null;\n },\n (err) => {\n datadogRum.addAction(\"Error while releasing lock\", { err });\n },\n );\n }\n } catch (err) {\n datadogRum.addAction(\"Error while releasing lock from catch block\", { err });\n }\n }\n\n resetTTLForLock() {\n try {\n if (this.acquireLockResponse) {\n this.hubConnection\n .invoke(\n this.consumingProjectSpotsApprovalBackendService.resetTTLForSpotsApprovalLockFuncName,\n this.stationId,\n this.orderData?.orderId,\n \"FRONTEND\",\n )\n .then(\n (response: boolean) => {\n this.timerComponent?.reset();\n if (this.openEditPopup) {\n this.spotsApprovalEditModal?.resetTimer();\n }\n if (this.openADUEditPopup) {\n this.createOrEditADUModal?.resetTimer();\n }\n },\n (err) => {\n datadogRum.addAction(\"Error while resetting TTL for lock\", { err });\n },\n );\n }\n } catch (err) {\n datadogRum.addAction(\"Error while resetting TTL for lock from catch block\", { err });\n }\n }\n\n openCancelOffersPopup() {\n this.resetTimerAfterUserAction();\n this.cancelOffersConfirmationModal.openModal();\n }\n\n openReOffersConfirmationPopup(spot: AdditionalSpotInformation) {\n this.resetTimerAfterUserAction();\n this.applyCloseButtonTextForReofferPopup = { apply: \"Recall + Edit Offer\", cancel: \"Cancel\" };\n this.selectedOfferIdForReoffer = cloneDeep(\n [...this.formattedResponse.offeredMGsAndADUs\n .filter((n: AdditionalSpotInformation) => n.groupId === spot.groupId)\n .map((n: AdditionalSpotInformation) => n.uniqueId),\n ...this.formattedResponse.badlyBehavedSpots\n .filter((n: AdditionalSpotInformation) => n.groupId === spot.groupId)\n .map((n: AdditionalSpotInformation) => n.uniqueId)],\n );\n this.actionCommentPopupTitle = \"Reoffer Comment\";\n this.actionRadioButtonComment = null;\n this.allowEditInActionCommentPopup = spot.allowReOffer;\n const topMsg =\n \"This offer will be recalled on the rep platform and then the latest edits made to this offer will be entered again for buyer approval. Please enter reason for reoffer\";\n this.reOfferConfirmationModal?.closeModal();\n this.reOfferConfirmationModal?.openModal(spot, this.actionRadioButtonComment, topMsg);\n }\n\n openUndoOffersConfirmationPopup(spot: AdditionalSpotInformation) {\n this.resetTimerAfterUserAction();\n this.selectedSpotForUndo = cloneDeep(spot);\n this.selectedForUndoUniqueIds = cloneDeep(\n [...this.formattedResponse.offeredMGsAndADUs\n .filter((n: AdditionalSpotInformation) => n.groupId === spot.groupId)\n .map((n: AdditionalSpotInformation) => n.uniqueId),\n ...this.formattedResponse.badlyBehavedSpots\n .filter((n: AdditionalSpotInformation) => n.groupId === spot.groupId)\n .map((n: AdditionalSpotInformation) => n.uniqueId)],\n );\n this.undoOfferConfirmationModal.openModal();\n }\n\n setUndoOffersConfirmationPopupConfig() {\n this.undoOfferConfirmationConfig = {\n ...this.annaGlobalConfig.defaultConfirmationPopupConfig,\n };\n\n const msg = `Are you sure you want to undo your action?`;\n\n this.undoOfferConfirmationConfig.title = msg;\n this.undoOfferConfirmationConfig.windowClass = \"submit-spots-popup undo-offer-popup\";\n this.undoOfferConfirmationConfig.showCloseIcon = false;\n this.undoOfferConfirmationConfig.centered = true;\n }\n\n createUndoOffersPayload() {\n const removedSpotUniqueIds = cloneDeep(\n this.originalResponse.OfferedMGsAndADUs.filter(\n (n: ISpotInformationResponse) =>\n n.NewGroupId === this.selectedSpotForUndo?.groupId && n.IsRemovedFromGroup,\n ).map((n: ISpotInformationResponse) => n.UniqueId),\n );\n return {\n OrderId: this.orderData?.orderId,\n StationId: this.stationId,\n RevisionNumber: this.orderData.revisionNo,\n ActionTakenBy: this.loggedInUser?.userName,\n OffersToUndoSpotHistoryIds: uniq([...removedSpotUniqueIds, ...this.selectedForUndoUniqueIds]),\n };\n }\n\n createCancelOffersPayload(selectedOffersToCancel: string[], cancelComment: string) {\n return {\n OrderId: this.orderData?.orderId,\n StationId: this.stationId,\n RevisionNumber: this.orderData.revisionNo,\n ActionTakenBy: this.loggedInUser?.userName,\n OffersToCancelSpotHistoryIds: selectedOffersToCancel,\n Comment: cancelComment,\n };\n }\n\n undoOffers() {\n this.showSkeletonLoading = true;\n const payload = this.createUndoOffersPayload();\n this.selectedForUndoUniqueIds = [];\n\n this.consumingProjectSpotsApprovalBackendService.undoOffers(payload).subscribe({\n next: (response: HttpResponse<any>) => {\n this.selectedSpotForUndo = null;\n this.toastr.success(\"The offer action has been marked for undo.\");\n this.afterSubmitResetLockVariables();\n },\n error: (error) => {\n this.showSkeletonLoading = false;\n this.toastr.error(error.error);\n this.cdRef.detectChanges();\n },\n });\n }\n\n createReOffersPayload() {\n return {\n OrderId: this.orderData?.orderId,\n StationId: this.stationId,\n RevisionNumber: this.orderData.revisionNo,\n UndoBy: this.loggedInUser?.userName,\n OffersToReofferSpotHistoryIds: this.selectedForUndoUniqueIds,\n };\n }\n\n afterRecallSendToEditOfferPage(event: { spotData: AdditionalSpotInformation; comment: string }) {\n this.reOfferConfirmationModal?.closeModal();\n this.reofferUserInputComment = event.comment;\n this.editClicked(event.spotData, true);\n }\n\n reOffersAPICall() {\n this.showSkeletonLoading = true;\n const payload = this.createReOffersPayload();\n this.selectedForUndoUniqueIds = [];\n\n this.consumingProjectSpotsApprovalBackendService.reOffers(payload).subscribe({\n next: (response: HttpResponse<any>) => {\n this.toastr.success(\"The offer action has been marked for reoffer.\");\n this.afterSubmitResetLockVariables();\n },\n error: (error) => {\n this.showSkeletonLoading = false;\n this.toastr.error(error.error);\n this.cdRef.detectChanges();\n },\n });\n }\n\n cancelIndividualOffer(event: { spotData: AdditionalSpotInformation; comment: string }) {\n this.individualOfferCancellationPopup?.closeModal();\n this.cancelOffers({ selectedOffersToCancel: this.selectedOfferIdForCancel, comment: event.comment });\n }\n\n cancelOffers(data: { selectedOffersToCancel: string[]; comment: string }) {\n this.showSkeletonLoading = true;\n this.consumingProjectSpotsApprovalBackendService\n .cancelOffers(this.createCancelOffersPayload(data.selectedOffersToCancel, data.comment))\n .subscribe({\n next: (response: HttpResponse<any>) => {\n this.toastr.success(\"The offer action has been marked for cancellation.\");\n this.afterSubmitResetLockVariables();\n },\n error: (error) => {\n this.showSkeletonLoading = false;\n this.toastr.error(error.error);\n this.cdRef.detectChanges();\n },\n });\n }\n\n // Total row action - mass approval\n totalRowRadioButtonMessageIconClicked(event: string) {\n const actionsEnabledRows: AdditionalSpotInformation[] = this.tableData.filter((n) => n.enableAllowedActions);\n switch (event) {\n case \"resubmit\":\n this.openOfferRejectionReasonAndCommentModalForTotalRow(false);\n break;\n\n case \"approve\":\n this.actionCommentPopupTitle = \"Approve Offer Comment\";\n this.actionRadioButtonComment = actionsEnabledRows?.length > 0 ? actionsEnabledRows[0]?.approveActionLocalComment\n : this.tableData[0]?.approveActionLocalComment;\n this.allowEditInActionCommentPopup = actionsEnabledRows?.length > 0;\n this.actionCommentsModal?.closeModal();\n this.actionCommentsModal?.openModal(null, this.actionRadioButtonComment);\n break;\n\n case \"credit\":\n this.actionCommentPopupTitle = \"Credit Offer Comment\";\n this.actionRadioButtonComment = actionsEnabledRows?.length > 0 ? actionsEnabledRows[0]?.creditActionComment\n : this.tableData[0]?.creditActionComment;\n this.allowEditInActionCommentPopup = actionsEnabledRows?.length > 0;\n this.actionCommentsModal?.closeModal();\n this.actionCommentsModal?.openModal(null, this.actionRadioButtonComment);\n break;\n\n default:\n break;\n }\n }\n\n totalRowRadioButtonClicked(radioButton: string) {\n const event: TotalRowActionColumnPossibleValues = radioButton as TotalRowActionColumnPossibleValues;\n const currentAction: TotalRowActionColumnPossibleValues = this.totalRowInfo.filter((n) => n.colName ===\n SpotsApprovalTableTotalRowColNames.TOTAL_RADIO_ACTION_COL_NAME,)[0]\n .radioButtonColumnData.selectedRadioButton as TotalRowActionColumnPossibleValues;\n\n const data: AdditionalSpotInformation = this.tableData.filter((n) => n.enableAllowedActions)[0]\n const spotTypes: SpotTypeCategoryFromBE[] = uniq(this.tableData.filter((n) => n.enableAllowedActions).map((n) => n.spotTypeCategory));\n\n let previousCommentObjectFromMap;\n if (spotTypes?.length === 1 &&\n this.formattedResponse.offeredMGsAndADUs.filter(\n (n: AdditionalSpotInformation) => n.spotTypeCategory === data?.spotTypeCategory && n.enableAllowedActions,\n )?.length ===\n this.tableData.filter((n) => n.spotTypeCategory === data?.spotTypeCategory && n.enableAllowedActions)?.length\n ) {\n previousCommentObjectFromMap = this.spotsApprovalService.totalRowSpotTypeAndSelectedActionAndCommentMap?.filter(\n (n) => n.spotTypeCategory === spotTypes[0],\n );\n } else {\n previousCommentObjectFromMap = this.spotsApprovalService.totalRowSelectedActionAndCommentsForFilteredColumns?.length > 0\n ? this.spotsApprovalService.totalRowSelectedActionAndCommentsForFilteredColumns : null;\n }\n if (event === \"resubmit\") {\n this.rowDataForRejectionPopup = null;\n if (previousCommentObjectFromMap && previousCommentObjectFromMap[0]?.rejectActionComment\n && previousCommentObjectFromMap[0].rejectActionComment?.length > 0) {\n this.totalRowInfo\n .filter((n) => n.colName === SpotsApprovalTableTotalRowColNames.TOTAL_RADIO_ACTION_COL_NAME,)[0].radioButtonColumnData\n .radioButtonsData.filter((n) => n.label === \"Reject All\")[0].iconClass.push(\n \"mdi mdi-comment-quote-outline\");\n this.offerRejectionPopupApplyClickedForTotalRow(\n {\n comments: previousCommentObjectFromMap[0]?.rejectActionComment,\n excludeFutureOffers: previousCommentObjectFromMap[0].excludeFromFutureOffers\n }\n );\n }\n this.openOfferRejectionReasonAndCommentModalForTotalRow(\n currentAction !== \"resubmit\" &&\n (!previousCommentObjectFromMap || !previousCommentObjectFromMap[0]?.rejectActionComment\n || previousCommentObjectFromMap[0]?.rejectActionComment?.length === 0),\n );\n } else if (event === \"approve\") {\n this.totalRowApproveOrCreditActionCommentAppliedOrNoActionClicked(\"approve\", \"Approve\",\n previousCommentObjectFromMap[0]?.approveActionComment);\n if (this.orderInfoData?.isRepOrder) {\n this.totalRowRadioButtonMessageIconClicked(event);\n }\n } else if (event === \"credit\") {\n this.totalRowApproveOrCreditActionCommentAppliedOrNoActionClicked(\"credit\", \"Credit All\",\n previousCommentObjectFromMap[0]?.creditActionComment);\n if (this.orderInfoData?.isRepOrder) {\n this.totalRowRadioButtonMessageIconClicked(event);\n }\n } else if (event === \"noAction\") {\n this.totalRowApproveOrCreditActionCommentAppliedOrNoActionClicked(\"noAction\", \"No Action\");\n }\n this.totalRowInfo.filter((n) => n.colName ===\n SpotsApprovalTableTotalRowColNames.TOTAL_RADIO_ACTION_COL_NAME,)[0].radioButtonColumnData.selectedRadioButton = event;\n this.resetTimerAfterUserAction();\n }\n\n updateTotalRowRadioButtons() {\n if (this.totalRowInfo.filter((row) => row.colName ===\n SpotsApprovalTableTotalRowColNames.TOTAL_RADIO_ACTION_COL_NAME,)[0]?.radioButtonColumnData.isRadioButtonsColumn) {\n const actionsTaken = uniqBy(this.tableData, \"action\").map((n: AdditionalSpotInformation) => n.action);\n let selectedRadio: TotalRowActionColumnPossibleValues;\n let disableCommentIcon: boolean;\n if (actionsTaken?.length > 1) {\n selectedRadio = \"custom\";\n } else {\n selectedRadio = actionsTaken[0];\n if (selectedRadio === \"approve\") {\n disableCommentIcon =\n SpotsApprovalService.checkIfTableContainsMultipleApproveComments(this.tableData) === null;\n const comment = SpotsApprovalService.checkIfTableContainsMultipleApproveComments(this.clonedTableData);\n if (comment) {\n this.updateTotalSpotTypeAndSelectedActionAndCommentMapApproveComment(\"approve\", comment);\n }\n } else if (selectedRadio === \"credit\") {\n disableCommentIcon =\n SpotsApprovalService.checkIfTableContainsMultipleCreditComments(this.tableData) === null;\n const comment = SpotsApprovalService.checkIfTableContainsMultipleCreditComments(this.clonedTableData);\n if (comment) {\n this.updateTotalSpotTypeAndSelectedActionAndCommentMapApproveComment(\"credit\", comment);\n }\n } else if (selectedRadio === \"resubmit\") {\n disableCommentIcon =\n SpotsApprovalService.checkIfTableContainsMultipleRejectionComments(this.tableData) === null ||\n SpotsApprovalService.checkIfAllEnabledRowsHaveSameExcludedFromFutureOffersSelectionInTable(\n this.tableData,\n ) === null;\n const rejectComment = SpotsApprovalService.checkIfTableContainsMultipleRejectionComments(this.clonedTableData);\n const excludeFromFutureOffers = SpotsApprovalService.checkIfAllEnabledRowsHaveSameExcludedFromFutureOffersSelectionInTable(\n this.clonedTableData,\n )\n if (rejectComment && excludeFromFutureOffers !== null) {\n this.updateTotalRowSpotTypeAndSelectedActionAndCommentMapRejectionComment(\n rejectComment,\n excludeFromFutureOffers,\n );\n }\n }\n }\n this.totalRowInfo.filter((row) => row.colName === SpotsApprovalTableTotalRowColNames.TOTAL_RADIO_ACTION_COL_NAME,)[0]\n .radioButtonColumnData.selectedRadioButton =\n cloneDeep(selectedRadio);\n this.totalRowInfo\n .filter((row) => row.colName === SpotsApprovalTableTotalRowColNames.TOTAL_RADIO_ACTION_COL_NAME,)[0].\n radioButtonColumnData.radioButtonsData.forEach((radioButton) => {\n radioButton.iconClass = [];\n if (radioButton.value === selectedRadio &&\n (radioButton.value === \"resubmit\" ||\n (this.orderInfoData?.isRepOrder && (radioButton.value === \"approve\" || radioButton.value === \"credit\")))) {\n radioButton.iconClass.push(\"mdi mdi-comment-quote-outline\");\n if (disableCommentIcon) {\n radioButton.iconClass[0] += \" disabled\";\n }\n }\n });\n }\n this.nonEditableGTComponent.detectChanges();\n }\n\n offerRejectionPopupApplyClickedForTotalRow(data: { comments: string[]; excludeFutureOffers: boolean }) {\n this.updateTotalRowSpotTypeAndSelectedActionAndCommentMapRejectionComment(\n data.comments,\n data.excludeFutureOffers,\n );\n this.totalRowInfo.filter((n) => n.colName ===\n SpotsApprovalTableTotalRowColNames.TOTAL_RADIO_ACTION_COL_NAME,)[0].radioButtonColumnData.selectedRadioButton = \"resubmit\";\n this.totalRowInfo.filter((n) => n.colName === SpotsApprovalTableTotalRowColNames.TOTAL_RADIO_ACTION_COL_NAME,)[0]\n .radioButtonColumnData.radioButtonsData.forEach(item => {\n item.iconClass = [];\n if (item.value === \"resubmit\") {\n item.iconClass.push(\"mdi mdi-comment-quote-outline\");\n }\n })\n this.tableData\n .filter((spot) => spot.enableAllowedActions)\n .forEach((spot: AdditionalSpotInformation) => {\n spot.rejectActionComment = data.comments;\n spot.action = \"resubmit\";\n spot.excludeFromFutureOffers = data.excludeFutureOffers;\n spot.RadioButtonConfig.forEach((n) => {\n n.icons = [];\n });\n spot.RadioButtonConfig.filter((n: SpotaApprovalIRadioButton) => n.label === \"Reject\")[0].icons =\n [{ class: \"mdi mdi-comment-quote-outline\" }];\n });\n\n const uniqueIdsOfTableData = this.tableData.filter((n) => n.enableAllowedActions).map((n) => n.uniqueId);\n this.clonedTableData\n .filter((spot) => uniqueIdsOfTableData.includes(spot.uniqueId))\n .forEach((spot: AdditionalSpotInformation) => {\n spot.action = \"resubmit\";\n spot.rejectActionComment = data.comments;\n spot.excludeFromFutureOffers = data.excludeFutureOffers;\n spot.RadioButtonConfig.forEach((n) => {\n n.icons = []\n });\n spot.RadioButtonConfig.filter((n: SpotaApprovalIRadioButton) => n.label === \"Reject\")[0].icons =\n [{ class: \"mdi mdi-comment-quote-outline\" }];\n });\n this.formattedResponse.offeredMGsAndADUs\n .filter((spot: AdditionalSpotInformation) => uniqueIdsOfTableData.includes(spot.uniqueId))\n .forEach((spot: AdditionalSpotInformation) => {\n spot.action = \"resubmit\";\n spot.rejectActionComment = data.comments;\n spot.excludeFromFutureOffers = data.excludeFutureOffers;\n spot.RadioButtonConfig.forEach((n) => {\n n.icons = [];\n });\n spot.RadioButtonConfig.filter((n: SpotaApprovalIRadioButton) => n.label === \"Reject\")[0].icons =\n [{ class: \"mdi mdi-comment-quote-outline\" }];\n });\n this.tableData = [...this.tableData];\n }\n totalRowApproveOrCreditActionCommentAppliedOrNoActionClicked(value: \"approve\" | \"credit\" | \"noAction\", label: string, comment?: string,) {\n const keyToUse: \"approveActionLocalComment\" | \"creditActionComment\" = value === \"approve\"\n ? \"approveActionLocalComment\"\n : \"creditActionComment\";\n this.updateTotalSpotTypeAndSelectedActionAndCommentMapApproveComment(value, comment);\n this.totalRowInfo.filter((n) => n.colName === SpotsApprovalTableTotalRowColNames.TOTAL_RADIO_ACTION_COL_NAME,)[0]\n .radioButtonColumnData.selectedRadioButton = value;\n this.totalRowInfo.filter((n) => n.colName === SpotsApprovalTableTotalRowColNames.TOTAL_RADIO_ACTION_COL_NAME,)[0]\n .radioButtonColumnData.radioButtonsData.forEach(item => {\n item.iconClass = [];\n if (item.value === value && this.orderInfoData?.isRepOrder && value !== \"noAction\") {\n item.iconClass.push(\"mdi mdi-comment-quote-outline\");\n }\n })\n this.tableData\n .filter((spot) => spot.enableAllowedActions)\n .forEach((spot: AdditionalSpotInformation) => {\n if (value === \"credit\" || value === \"approve\") { spot[keyToUse] = comment; }\n spot.action = value;\n spot.RadioButtonConfig.forEach((n) => {\n n.icons = [];\n });\n if (this.orderInfoData?.isRepOrder && value !== \"noAction\") {\n spot.RadioButtonConfig.filter(\n (n: SpotaApprovalIRadioButton) => n.value === value,\n )[0].icons =\n [{ class: \"mdi mdi-comment-quote-outline\" }];\n }\n });\n\n const uniqueIdsOfTableData = this.tableData.filter((n) => n.enableAllowedActions).map((n) => n.uniqueId);\n this.clonedTableData\n .filter((spot) => uniqueIdsOfTableData.includes(spot.uniqueId))\n .forEach((spot: AdditionalSpotInformation) => {\n if (value === \"credit\" || value === \"approve\") { spot[keyToUse] = comment; }\n spot.action = value;\n spot.RadioButtonConfig.forEach((n) => {\n n.icons = [];\n });\n if (this.orderInfoData?.isRepOrder && value !== \"noAction\") {\n spot.RadioButtonConfig.filter(\n (n: SpotaApprovalIRadioButton) => n.value === value,\n )[0].icons =\n [{ class: \"mdi mdi-comment-quote-outline\" }];\n }\n });\n this.formattedResponse.offeredMGsAndADUs\n .filter((spot: AdditionalSpotInformation) => uniqueIdsOfTableData.includes(spot.uniqueId))\n .forEach((spot: AdditionalSpotInformation) => {\n if (value === \"credit\" || value === \"approve\") { spot[keyToUse] = comment; }\n spot.action = value;\n spot.RadioButtonConfig.forEach((n) => {\n n.icons = [];\n });\n if (this.orderInfoData?.isRepOrder && value !== \"noAction\") {\n spot.RadioButtonConfig.filter(\n (n: SpotaApprovalIRadioButton) => n.value === value,\n )[0].icons =\n [{ class: \"mdi mdi-comment-quote-outline\" }];\n }\n });\n this.tableData = [...this.tableData];\n }\n\n updateTotalSpotTypeAndSelectedActionAndCommentMapApproveComment(value: \"approve\" | \"credit\" | \"noAction\", comment: string) {\n const data: AdditionalSpotInformation =\n this.tableData.filter((n) => n.enableAllowedActions)?.length > 0\n ? this.tableData.filter((n) => n.enableAllowedActions)[0]\n : this.tableData[0];\n const spotTypes = uniq(this.tableData.filter((n) => n.enableAllowedActions).map((n) => n.spotTypeCategory));\n const keyToUse = value === \"approve\" ? 'approveActionComment' : 'creditActionComment';\n if (spotTypes?.length === 1 &&\n this.formattedResponse.offeredMGsAndADUs.filter(\n (n: AdditionalSpotInformation) => n.spotTypeCategory === data?.spotTypeCategory)?.length ===\n this.tableData.filter((n) => n.spotTypeCategory === data?.spotTypeCategory)?.length\n ) {\n const totalRowObj = this.spotsApprovalService\n .totalRowSpotTypeAndSelectedActionAndCommentMap?.filter(\n (n) => n.spotTypeCategory === data?.spotTypeCategory,\n );\n if (totalRowObj?.length > 0 && value !== \"noAction\") {\n this.spotsApprovalService.totalRowSpotTypeAndSelectedActionAndCommentMap.filter(\n (n) => n.spotTypeCategory === data?.spotTypeCategory,\n )[0][keyToUse] = comment;\n } else if (value !== \"noAction\") {\n this.spotsApprovalService.totalRowSpotTypeAndSelectedActionAndCommentMap?.push({\n spotTypeCategory: data.spotTypeCategory,\n selectedActionValue: value,\n approveActionComment: value === \"approve\" ? comment : null,\n rejectActionComment: null,\n creditActionComment: value === \"credit\" ? comment : null,\n excludeFromFutureOffers: false,\n });\n }\n } else {\n const selectedActionObj = this.spotsApprovalService.totalRowSelectedActionAndCommentsForFilteredColumns &&\n this.spotsApprovalService.totalRowSelectedActionAndCommentsForFilteredColumns?.length > 0\n ? this.spotsApprovalService.totalRowSelectedActionAndCommentsForFilteredColumns[0] : null\n this.spotsApprovalService.totalRowSelectedActionAndCommentsForFilteredColumns?.push({\n selectedActionValue: value,\n // eslint-disable-next-line no-nested-ternary\n approveActionComment: value === \"approve\" ? comment : (selectedActionObj\n ? selectedActionObj?.creditActionComment : null),\n // eslint-disable-next-line no-nested-ternary\n creditActionComment: value === \"credit\" ? comment : (selectedActionObj\n ? selectedActionObj?.creditActionComment : null),\n rejectActionComment: selectedActionObj\n ? selectedActionObj?.rejectActionComment : null,\n excludeFromFutureOffers: selectedActionObj ? selectedActionObj?.excludeFromFutureOffers : false,\n });\n }\n }\n\n updateTotalRowSpotTypeAndSelectedActionAndCommentMapRejectionComment(\n comments: string[],\n excludeFromFutureOffers: boolean,\n ) {\n const data: AdditionalSpotInformation =\n this.tableData.filter((n) => n.enableAllowedActions)?.length > 0\n ? this.tableData.filter((n) => n.enableAllowedActions)[0]\n : this.tableData[0];\n const spotTypes = uniq(this.tableData.filter((n) => n.enableAllowedActions).map((n) => n.spotTypeCategory));\n\n if (spotTypes?.length === 1 &&\n this.formattedResponse.offeredMGsAndADUs.filter(\n (n: AdditionalSpotInformation) => n.spotTypeCategory === data?.spotTypeCategory && n.enableAllowedActions,\n )?.length ===\n this.tableData.filter((n) => n.spotTypeCategory === data?.spotTypeCategory && n.enableAllowedActions)?.length\n ) {\n const totalRowObj = this.spotsApprovalService.totalRowSpotTypeAndSelectedActionAndCommentMap?.filter(\n (n) => n.spotTypeCategory === data?.spotTypeCategory,\n );\n if (totalRowObj?.length > 0) {\n this.spotsApprovalService.totalRowSpotTypeAndSelectedActionAndCommentMap.filter(\n (n) => n.spotTypeCategory === data?.spotTypeCategory,\n )[0].rejectActionComment = comments;\n this.spotsApprovalService.totalRowSpotTypeAndSelectedActionAndCommentMap.filter(\n (n) => n.spotTypeCategory === data?.spotTypeCategory,\n )[0].excludeFromFutureOffers = excludeFromFutureOffers;\n } else {\n this.spotsApprovalService.totalRowSpotTypeAndSelectedActionAndCommentMap?.push({\n spotTypeCategory: data.spotTypeCategory,\n selectedActionValue: \"resubmit\",\n rejectActionComment: comments,\n approveActionComment: null,\n creditActionComment: null,\n excludeFromFutureOffers,\n });\n }\n } else {\n const selectedActionObj = this.spotsApprovalService.totalRowSelectedActionAndCommentsForFilteredColumns &&\n this.spotsApprovalService.totalRowSelectedActionAndCommentsForFilteredColumns?.length > 0\n ? this.spotsApprovalService.totalRowSelectedActionAndCommentsForFilteredColumns[0] : null\n this.spotsApprovalService.totalRowSelectedActionAndCommentsForFilteredColumns?.push({\n selectedActionValue: \"resubmit\",\n rejectActionComment: comments,\n approveActionComment: selectedActionObj ? selectedActionObj.approveActionComment : null,\n creditActionComment: selectedActionObj ? selectedActionObj?.creditActionComment : null,\n excludeFromFutureOffers,\n });\n }\n }\n\n createADUOrBonusOfferClicked(selectedOption: { Name: string, RevenueClass: string, IsAdu: boolean }) {\n this.openSelectSpotLengthPopup = true;\n this.ADUOrBonusOfferType = selectedOption.Name as \"ADU offers\" | \"Bonus Spots\";\n this.ADUOrBonusRevenueClass = selectedOption.RevenueClass;\n }\n\n spotLengthSelected(event: { DisplayDuration: string, Duration: number, SpotTypeId: number }) {\n this.openSelectSpotLengthPopup = false;\n this.isADUSpotUnderEdit = true;\n this.isADUOrBonusCreate = true;\n this.createADUOrBonusSpotsData = {\n duration: event.Duration,\n displayDuration: event.DisplayDuration,\n revenueClass: this.ADUOrBonusRevenueClass,\n spotTypeId: event.SpotTypeId,\n }\n this.orderRelatedExtraInfoForCreatingOrEditingADUs = {\n stationId: this.stationId,\n timezone: this.timezone,\n showImpressions: this.showImpressions,\n orderId: this.orderData?.orderId,\n tgId: this.formattedResponse?.revisionSummary?.tgId,\n spotType: this.ADUOrBonusOfferType === \"ADU offers\" ? \"ADU\" : \"BONUS\"\n }\n this.isOSPESpotUnderEdit = false;\n this.bizRulesFromDb = this.originalResponse.BizRulesFromDb;\n this.isReofferFlow = false;\n this.toastr.clear();\n this.setSpotIdAndSelectedRadioMap();\n this.openADUEditPopup = true;\n }\n}","<anna-design-timer\n class=\"spots-approval-timer\"\n #timerComponent\n *ngIf=\"!showSkeletonLoading && acquireLockResponse?.lockAcquired && clonedTableData?.length > 0\"\n [outerStrokeColor]=\"'#d8d8d8'\"\n [innerStrokeColor]=\"'#f44336'\"\n [duration]=\"600\"\n [top]=\"'28px'\"\n [timerTextLeftValue]=\"'calc(100% - 75px)'\"\n [timerCircleLeftValue]=\"'calc(100% - 82px)'\"\n (timedOut)=\"lockTimedOut(true)\"\n></anna-design-timer>\n\n<section class=\"order-revision-container {{ parentPage }}-revision-container\">\n <p class=\"status-timezone-container\">\n <span\n class=\"station-name\"\n *ngIf=\"orderInfoData && !showSkeletonLoading && showStationName\"\n >Station: <b>{{ orderInfoData?.station }} {{ isStationInSandboxMode ? \"(Sandbox)\" : \"\" }}</b></span\n >\n <span\n *ngIf=\"!showSkeletonLoading && orderInfoData\"\n class=\"revised-info\"\n >\n <ng-container *ngIf=\"parentPage === 'ORDERS' || currentRevisionStatus === RevisionStatus.RevGenerated\">\n This revision (Rev# {{ Math.ceil(this.orderInfoData.revisionNumber) }}) was generated on:\n <b>{{ formattedDate }} {{ formattedTime }} {{ orderInfoData?.timeZone }}</b>\n </ng-container>\n\n <ng-container *ngIf=\"parentPage !== 'ORDERS' && currentRevisionStatus !== RevisionStatus.RevGenerated\">\n This proposed revision (Rev# {{ Math.ceil(this.orderInfoData.revisionNumber) }}) was created on:\n <b>{{ formattedDate }} {{ formattedTime }} {{ orderInfoData?.timeZone }}</b>\n </ng-container>\n\n <ng-container *ngIf=\"orderInfoData?.lastEditedBy && userType === 'SELLER'\">\n <b> | </b> Last edited by <b>{{ orderInfoData?.lastEditedBy }} </b> at\n <b> {{ orderInfoData?.lastEditedAt }}</b>\n </ng-container>\n </span>\n\n <span\n *ngIf=\"!showSkeletonLoading && orderInfoData && showViewRevisionLink\"\n class=\"link float-right\"\n (click)=\"goToOffersRevisionsPage()\"\n >View Offers History</span\n >\n <ngx-skeleton-loader\n *ngIf=\"showSkeletonLoading && showStationName\"\n count=\"1\"\n [theme]=\"{ width: '87px', height: '17px', 'margin-right': '20px' }\"\n >\n </ngx-skeleton-loader>\n <ngx-skeleton-loader\n *ngIf=\"showSkeletonLoading && showStationName\"\n count=\"1\"\n [theme]=\"{ width: '400px', height: '17px' }\"\n >\n </ngx-skeleton-loader>\n </p>\n\n <anna-feature-revision-header\n *ngIf=\"showHeader\"\n [revisionStatues]=\"headerOrderInfo\"\n [showMessage]=\"showMessageInHeaderSection\"\n [skeletonLoading]=\"showSkeletonLoading\"\n [headerInfo]=\"headerInfo\"\n [showPath]=\"showPath\"\n [revisedInfo]=\"orderInfoData?.revisedOn\"\n (nextOrderClicked)=\"fetchNextOrderDetails()\"\n (previousOrderClicked)=\"fetchPreviousOrderDetails()\"\n >\n </anna-feature-revision-header>\n\n <button\n class=\"add-offer\"\n [ngClass]=\"{ 'add-offer-btn-no-download-btn': !showDownloadButton }\"\n #t=\"matMenuTrigger\"\n [matMenuTriggerFor]=\"menu\"\n *ngIf=\"userHasEditPrivilege && !showSkeletonLoading && formattedResponse?.offerCreationDropDown?.length > 0\"\n >\n <span class=\"show-text\"\n >Add\n <i\n *ngIf=\"!t.menuOpen\"\n class=\"mdi mdi-menu-down icon\"\n ></i>\n <i\n *ngIf=\"t.menuOpen\"\n class=\"mdi mdi-menu-up icon\"\n ></i\n ></span>\n </button>\n <mat-menu\n #menu=\"matMenu\"\n xPosition=\"before\"\n class=\"add-offer-menu\"\n backdropClass=\"add-offer-menu-backdrop\"\n >\n <button\n *ngFor=\"let item of formattedResponse?.offerCreationDropDown\"\n mat-menu-item\n (click)=\"createADUOrBonusOfferClicked(item)\"\n class=\"menu-item\"\n >\n <span>{{ item.Name }}</span>\n </button>\n </mat-menu>\n\n <button\n id=\"EmailMGOffers\"\n class=\"report-download-btn\"\n (mouseenter)=\"addOrRemoveHoveredStyleForEmailOfferButton($event)\"\n (mouseleave)=\"addOrRemoveHoveredStyleForEmailOfferButton($event)\"\n *ngIf=\"!showSkeletonLoading && showDownloadButton\"\n (click)=\"openGenerateOffersReportModal()\"\n [disabled]=\"disableOffersReportDownloadBtn\"\n >\n <span class=\"show-icon material-icons mdi mdi-send\"></span>\n <span class=\"show-text\">Email MG Offers</span>\n </button>\n\n <div\n class=\"no-offered-spots\"\n *ngIf=\"showNoSpotAvailableMessage\"\n >\n <i class=\"mi mdi-info\"></i>\n <div>\n <p>There are no offered spots yet. We will email you when there are offered spots awaiting your review.</p>\n </div>\n </div>\n\n <!-- Reviewed By Message For Buyer -->\n <div\n class=\"reviewed-by\"\n *ngIf=\"showReviewMessage\"\n >\n <i class=\"mi mdi-info\"></i>\n <div>\n <h4>Reviewed</h4>\n <p>\n {{ formattedDate }}: {{ formattedTime }} | Responded by:\n {{ buyerName }}\n </p>\n </div>\n </div>\n\n <!-- Cut Off Reached -->\n <div\n class=\"cut-off\"\n *ngIf=\"showCutOffMessage\"\n >\n <i class=\"material-icons mdi mdi-alert\"></i>\n <div>\n <h4>Cut-off time reached</h4>\n <p>{{ formattedDate }} : {{ formattedTime }}</p>\n </div>\n </div>\n\n <div\n *ngIf=\"\n orderInfoData?.isRepOrder &&\n disableSubmitForRepOrder &&\n !showSkeletonLoading &&\n !showCutOffMessage &&\n !showReviewMessage\n \"\n class=\"warning-box\"\n >\n <i class=\"mi mdi-warning warn\"></i>\n The action on offered spots for this order needs to be taken on their respective platform.\n </div>\n\n <ng-container [ngTemplateOutlet]=\"commonCode\"> </ng-container>\n\n <ng-template #commonCode>\n <div\n class=\"summary-container\"\n [style.margin-top]=\"'12px'\"\n >\n <anna-feature-revision-summary\n [summaryInfo]=\"summaryInfo\"\n [skeletonLoading]=\"showSkeletonLoading\"\n [showImpressions]=\"showImpressions\"\n [isWriteEnabled]=\"orderInfoData?.showWriteEnabledPopup\"\n [isPoD]=\"orderInfoData?.isPayForPerformanceOrder\"\n [showAAIcon]=\"showAAIcon\"\n [isSummaryExpandable]=\"\n isSummaryExpandable &&\n (orderInfoData?.revisionType === revisionTypeConstants.USER ||\n orderInfoData?.revisionType === revisionTypeConstants.BUYER)\n \"\n ></anna-feature-revision-summary>\n </div>\n\n <ng-container\n *ngIf=\"\n !showSkeletonLoading &&\n userType === 'SELLER' &&\n currentRevisionStatus === RevisionStatus.SellerReconfirm\n \"\n >\n <anna-design-message-box [messageBoxData]=\"sellerReconfirmationMessageBoxData\"></anna-design-message-box>\n </ng-container>\n\n <!-- No revision found message box -->\n <div\n *ngIf=\"messageBoxData\"\n class=\"no-revision-warning-message-container\"\n >\n <anna-design-message-box [messageBoxData]=\"messageBoxData\">\n <!-- ng Content for no revision found message box of Order discrepancies -->\n <p\n *ngIf=\"orderInfoData?.reasonForNoRevision === 'ORDER_DISCREPANCY'\"\n class=\"ng-content-selector-for-message message-label\"\n >\n <ng-container *ngIf=\"orderInfoData?.orderDiscrepancyExists; else discrepanciesResolvedMessage\">\n ANNA did not pick up this order for revisions because there is a discrepancy in the order data.\n Please <a (click)=\"messageBoxViewClicked('ORDER_DISCREPANCY')\">click here</a> to review the\n order discrepancies.\n </ng-container>\n <ng-template #discrepanciesResolvedMessage>\n ANNA did not pick up this order for revisions because there was a discrepancy in the order data,\n which the user has manually resolved now. ANNA will pick it up from the next revision cycle.\n </ng-template>\n </p>\n\n <p\n *ngIf=\"orderInfoData?.reasonForNoRevision === 'REP_UNCONFIRMED_REVISION'\"\n class=\"ng-content-selector-for-message message-label\"\n >\n <span *ngIf=\"orderInfoData?.pendingEcOrderStatus === 'Buyer Revised'\"\n >ANNA did not pick up this order for revisions because there is an unconfirmed revision pending\n on the buyer portal. You can enter it via the\n <a (click)=\"messageBoxViewClicked('REP_UNCONFIRMED_REVISION')\">verify mapping page</a> on ANNA,\n if not entered manually yet.</span\n >\n <span *ngIf=\"orderInfoData?.pendingEcOrderStatus !== 'Buyer Revised'\"\n >ANNA did not pick up this order for revisions because there is an unconfirmed revision pending\n on the buyer portal, which has now been entered manually on Traffic by the user.</span\n >\n </p>\n </anna-design-message-box>\n </div>\n\n <ng-container\n *ngIf=\"\n !showSkeletonLoading &&\n userType === 'SELLER' &&\n currentRevisionStatus !== RevisionStatus.OutstandingSpots &&\n parentPage !== 'ORDERS'\n \"\n >\n <p\n class=\"action-info\"\n *ngIf=\"orderInfoData.businessHistoryId\"\n >\n <span class=\"mdi mdi-information\"></span>\n\n <label>\n <ng-container *ngIf=\"orderInfoData.businessHistoryId\">\n To refer to the business rules used to provide these offers,\n <a\n class=\"link\"\n (click)=\"navigateToBusinessHistoryPage(orderInfoData?.inheritedLevel)\"\n >click here</a\n >.\n </ng-container>\n </label>\n </p>\n </ng-container>\n <ng-container *ngIf=\"!showSkeletonLoading && orderInfoData?.showUnmappedBuyerLineWarningMessage\">\n <p class=\"warning-box action-info\">\n <span class=\"mi mdi-warning warn\"></span>\n <label>\n Please note that offers will not be sent for buyer approval if the Preemptions or ADUs to be\n credited do not exist on the rep platform.\n </label>\n </p>\n </ng-container>\n\n <ng-container>\n <div class=\"d-flex intelli-filter-container\">\n <ng-container *ngIf=\"!isCompletedRevision && !showSkeletonLoading\">\n <ng-container *ngFor=\"let filter of intelliFilter; let i = index\">\n <button\n class=\"intelli-filter\"\n *ngIf=\"filter?.isShown\"\n (click)=\"intelliFilterClicked(i)\"\n [ngClass]=\"{\n active: filter.isActive && !filter?.isDisabled\n }\"\n [disabled]=\"filter?.isDisabled\"\n >\n {{ filter?.text }}\n </button>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"!isCompletedRevision && showSkeletonLoading\">\n <ngx-skeleton-loader\n count=\"4\"\n [theme]=\"{\n width: '100px',\n 'margin-right': '8px',\n height: '30px',\n display: 'inline-block',\n 'margin-bottom': '0'\n }\"\n >\n </ngx-skeleton-loader>\n </ng-container>\n\n <div\n *ngIf=\"!isCompletedRevision\"\n class=\"vertical-divier-line\"\n ></div>\n <anna-design-single-select\n *ngIf=\"!showSkeletonLoading\"\n [items]=\"orderMetrics\"\n class=\"order-metrics-dropdown\"\n [selectedItem]=\"selectedMetric\"\n [config]=\"metricDropdownConfig\"\n [disabled]=\"showSkeletonLoading || tableData?.length === 0\"\n (valueChanged)=\"metricChanged($event)\"\n >\n </anna-design-single-select>\n\n <ngx-skeleton-loader\n *ngIf=\"showSkeletonLoading\"\n count=\"1\"\n [theme]=\"{ width: '8rem', height: '30px', 'margin-bottom': '0' }\"\n >\n </ngx-skeleton-loader>\n <section class=\"clear-all-container\">\n <ng-container *ngIf=\"!showSkeletonLoading\">\n <button\n class=\"text-filter\"\n [disabled]=\"clearAllFilter?.isDisabled\"\n (click)=\"clearAllBtnClicked()\"\n >\n {{ clearAllFilter?.text }}\n </button>\n\n <button\n class=\"anna apply-button submit-btn anna-cancel-offers-btn\"\n *ngIf=\"userHasEditPrivilege && !isCompletedRevision && allCancelEligibleMakegoodOfferNumbers?.length > 0\"\n (click)=\"openCancelOffersPopup()\"\n >\n Cancel Offers\n </button>\n\n <button\n class=\"anna apply-button submit-btn\"\n *ngIf=\"userHasEditPrivilege && !isCompletedRevision && showSubmitButton\"\n [disabled]=\"disableSubmitButton || filteredAtColumnLevel\"\n (click)=\"submitClicked()\"\n >\n Submit\n </button>\n </ng-container>\n <ng-container *ngIf=\"showSkeletonLoading\">\n <ngx-skeleton-loader\n count=\"1\"\n [theme]=\"{\n width: '100px',\n height: '24px',\n display: 'inline-block',\n 'margin-right': '0',\n 'margin-bottom': '5px'\n }\"\n >\n </ngx-skeleton-loader>\n </ng-container>\n </section>\n </div>\n\n <section\n id=\"spots-approval-rov-tc\"\n class=\"table-container\"\n [ngStyle]=\"{\n height: 'calc(100vh - ' + (dataOnTopHeight + gtDimension.marginFromBottom) + 'px)'\n }\"\n >\n <anna-core-non-editable-generic-table-lib\n class=\"drr-generic-table\"\n [ngClass]=\"{\n 'spots-approval-no-data-table': !showSkeletonLoading && tableData && tableData.length === 0,\n 'drr-completed-spts-approval-table': isCompletedRevision,\n 'anna-revision-table': isCompletedRevision,\n 'anna-revision-table-ongoing': !orderData || !isCompletedRevision,\n 'order-details': parentPage === 'ORDERS',\n 'table-with-total-row-action': showTotalRowActionButtons\n }\"\n [showSkeletonLoading]=\"showSkeletonLoading\"\n [tableHeaders]=\"tableHeaders\"\n [tableData]=\"tableData\"\n [clonedTableData]=\"clonedTableData\"\n [gtGeneralConfig]=\"gtGeneralConfig\"\n [tableClass]=\"genericTableClass\"\n [gtDimension]=\"gtDimension\"\n [totalRowInfo]=\"totalRowInfo\"\n [tableBorderBottomClassRequired]=\"false\"\n [tdsHaveRowSpan]=\"true\"\n [hideSomeTds]=\"true\"\n (radioButtonSelected)=\"gtActionRadioButtonClicked($event)\"\n (filterAppliedToTable)=\"filterAppliedToTable($event)\"\n (gtTextActionClicked)=\"gtIconClicked($event)\"\n (radioButtonMessageIconClicked)=\"gtRadioButtonMessageIconClicked($event)\"\n (totalRowRadioButtonClicked)=\"totalRowRadioButtonClicked($event)\"\n (totalRowRadioButtonIconClicked)=\"totalRowRadioButtonMessageIconClicked($event)\"\n >\n </anna-core-non-editable-generic-table-lib>\n </section>\n\n <anna-design-confirmation-popup\n *ngIf=\"!disableSubmitButton\"\n #submitSpotsConfirmation\n [config]=\"confirmationConfig\"\n (confirmClicked)=\"sendSpotsForSubmission()\"\n >\n </anna-design-confirmation-popup>\n\n <anna-feature-credit-confirmation-table-popup\n *ngIf=\"!disableSubmitButton && openCreditPopup\"\n #creditTablePopup\n [creditedSpots]=\"creditedSpots\"\n [tableHeaders]=\"tableHeaders\"\n [orderMetric]=\"originalResponse?.OrderInfo?.Metric\"\n (cancel)=\"closeCreditConfirmationPopup()\"\n (submitClicked)=\"sendCreditTableSpotsForSubmission($event)\"\n (userActed)=\"resetTimerAfterUserAction()\"\n >\n </anna-feature-credit-confirmation-table-popup>\n </ng-container>\n </ng-template>\n</section>\n\n<anna-feature-offer-rejection-popup\n #offerRejectionModal\n *ngIf=\"openRejectionReasonPopup\"\n [rejectionPopupData]=\"rejectionPopupData\"\n [spotType]=\"spotTypeForRejectionPoup\"\n [offerRjectionPossibleReasons]=\"offerRjectionPossibleReasons\"\n [isSubmitCommentButtonEnabled]=\"orderInfoData?.showSubmitButton\"\n [hideExcludePECheckbox]=\"userType === 'BUYER'\"\n (apply)=\"offerRejectionPopupApplyClicked($event)\"\n (cancel)=\"revertRadioButtonSelectionToDefaultForOfferRejectionPopup($event)\"\n (userActed)=\"resetTimerAfterUserAction()\"\n>\n</anna-feature-offer-rejection-popup>\n\n<anna-design-confirmation-popup\n #generateOffersReportConfirmation\n *ngIf=\"generateOffersReportConfirmationConfig\"\n [config]=\"generateOffersReportConfirmationConfig\"\n (confirmClicked)=\"generateOffersReport()\"\n>\n</anna-design-confirmation-popup>\n\n<anna-feature-create-or-edit-offers-popup\n #spotsApprovalEditModal\n *ngIf=\"openEditPopup\"\n [reofferComment]=\"reofferUserInputComment\"\n [isNoRevision]=\"\n currentRevisionStatus === RevisionStatus.OutstandingSpots ||\n currentRevisionStatus === RevisionStatus.OutstandingUD\n \"\n [stationId]=\"stationId\"\n [showImpressions]=\"showImpressions\"\n [bizRulesFromDb]=\"bizRulesFromDb\"\n [timezone]=\"timezone\"\n [buyerOrderId]=\"orderData.orderId\"\n [originalGroupableOutstandingSpots]=\"groupableOutstandingSpots\"\n [originalPreemptedSpots]=\"preemptedSpotsForEdit\"\n [enableRevenueClassEdit]=\"formattedResponse?.enableRevenueClassEdit\"\n [originalOfferedMakegoods]=\"offeredMakegoodsForEdit\"\n [loggedInUser]=\"loggedInUser\"\n [spDayparts]=\"originalResponse?.OrderInfo?.SpDayparts\"\n [broadcastTime]=\"originalResponse?.BroadcastTime\"\n [tgId]=\"formattedResponse?.revisionSummary?.tgId\"\n [isCreateOffer]=\"isOSPESpotUnderEdit\"\n [orderData]=\"orderInfoData\"\n [isReofferFlow]=\"isReofferFlow\"\n [IsBadlyBehavedGroup]=\"isBadlyBehavedGroupChosenForEdit\"\n (resetTimerAfterUserAction)=\"resetTimerAfterUserAction()\"\n (lockTimedOutEmit)=\"lockTimedOut(true)\"\n (editSaved)=\"editSaved($event)\"\n (cancelButtonClicked)=\"closeSpotsEditApprovalPopup()\"\n>\n</anna-feature-create-or-edit-offers-popup>\n\n<anna-feature-create-or-edit-adu-or-bonus\n #createOrEditADUModal\n *ngIf=\"openADUEditPopup\"\n [orderData]=\"orderInfoData\"\n [guideLinesAdditionalSpots]=\"originalResponse?.GuideLinesAdditionalSpots\"\n [isADUOrBonusCreate]=\"isADUOrBonusCreate\"\n [createADUOrBonusSpotsData]=\"createADUOrBonusSpotsData\"\n [ADUOrBonusOfferType]=\"ADUOrBonusOfferType\"\n [isNoRevision]=\"\n currentRevisionStatus === RevisionStatus.OutstandingSpots ||\n currentRevisionStatus === RevisionStatus.OutstandingUD\n \"\n [originalOfferedADUs]=\"offeredADUsForEdit\"\n [loggedInUser]=\"loggedInUser\"\n [orderRelatedExtraInfo]=\"orderRelatedExtraInfoForCreatingOrEditingADUs\"\n (resetTimerAfterUserAction)=\"resetTimerAfterUserAction()\"\n (lockTimedOutEmit)=\"lockTimedOut(true)\"\n (editSaved)=\"editSaved($event)\"\n (closeEditPopup)=\"closeEditPopup()\"\n (cancelButtonClicked)=\"closeADUEditPopup()\"\n>\n</anna-feature-create-or-edit-adu-or-bonus>\n\n<div\n *ngIf=\"lockMessageDetails && !showSkeletonLoading\"\n class=\"lock-message {{ lockMessageDetails?.class }}\"\n>\n <i class=\"{{ lockMessageDetails?.iconClass }}\"></i>\n <span class=\"lock-message-span\">{{ lockMessageDetails?.message }}</span>\n <i\n class=\"mdi mdi-close\"\n (click)=\"closeLockMessage()\"\n ></i>\n</div>\n\n<ng-template\n #lockExpiredModal\n let-modal\n>\n <div class=\"modal-body lock-expired-modal\">\n <i class=\"mdi mdi-alert-octagon\"></i>\n <span class=\"lock-expired-message\"\n >You have not performed any action on this page and the timer has expired. Any unsaved changes made by you\n may be lost.</span\n ><br />\n <button\n class=\"lock-expired-message\"\n (click)=\"navigateToListing()\"\n >\n Click here\n </button>\n <span class=\"lock-expired-message\"> to refresh the page.</span>\n </div>\n</ng-template>\n\n<!-- CANCEL OFFER POPUP -->\n<anna-feature-cancel-offers-popup\n #CancelOffersConfirmation\n [allCancelEligibleMakegoodOfferNumbers]=\"allCancelEligibleMakegoodOfferNumbers\"\n (userActed)=\"resetTimerAfterUserAction()\"\n (apply)=\"cancelOffers($event)\"\n>\n</anna-feature-cancel-offers-popup>\n\n<!-- UNDO OFFER POPUP -->\n<anna-design-confirmation-popup\n #UndoOfferConfirmation\n [config]=\"undoOfferConfirmationConfig\"\n (confirmClicked)=\"undoOffers()\"\n>\n</anna-design-confirmation-popup>\n\n<!-- Reoffer popup -->\n<anna-feature-action-comments-popup\n #ReOfferConfirmationWithComment\n [applyCloseButtonText]=\"applyCloseButtonTextForReofferPopup\"\n [title]=\"actionCommentPopupTitle\"\n [allowEdit]=\"allowEditInActionCommentPopup\"\n (userActed)=\"resetTimerAfterUserAction()\"\n (commented)=\"afterRecallSendToEditOfferPage($event)\"\n>\n</anna-feature-action-comments-popup>\n\n<!-- Cancel popup -->\n<anna-feature-action-comments-popup\n #IndividualOfferCancellationPopup\n [applyCloseButtonText]=\"applyCloseButtonTextForCancelPopup\"\n [title]=\"actionCommentPopupTitle\"\n [allowEdit]=\"allowEditInActionCommentPopup\"\n (userActed)=\"resetTimerAfterUserAction()\"\n (commented)=\"cancelIndividualOffer($event)\"\n>\n</anna-feature-action-comments-popup>\n\n<!-- Approve or mark for credit comment popup -->\n<anna-feature-action-comments-popup\n #actionCommentsModal\n [title]=\"actionCommentPopupTitle\"\n [allowEdit]=\"allowEditInActionCommentPopup\"\n (userActed)=\"resetTimerAfterUserAction()\"\n (commented)=\"actionCommentsPopupApplyClicked($event)\"\n (cancel)=\"revertRadioButtonSelectionToDefaultForApproveOrCreditPopup($event)\"\n>\n</anna-feature-action-comments-popup>\n\n<anna-feature-select-spot-length-popup\n *ngIf=\"openSelectSpotLengthPopup\"\n [spotLengthOptions]=\"formattedResponse?.orderInfo?.durations\"\n (cancelClicked)=\"openSelectSpotLengthPopup = false\"\n (spotLengthSelected)=\"spotLengthSelected($event)\"\n>\n</anna-feature-select-spot-length-popup>\n\n<anna-feature-badly-behaved-spot-details-popup\n *ngIf=\"openBadlyBehavedSpotsPopup\"\n [stationId]=\"stationId\"\n [groupId]=\"badlyBehavedSpotGroupId\"\n [showImpressions]=\"selectedMetric?.text !== 'GRP'\"\n (closed)=\"closeBadlyBehavedSpotsPopup()\"\n>\n</anna-feature-badly-behaved-spot-details-popup>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.GenericSpotsApprovalService","COMPONENT_CONFIG","i1.CreateOrEditOffersService","i2","i3","i1","RevisionStatus","i5","i3.SpotsApprovalService","i9","i4","i7"],"mappings":"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"}
|