@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.
Files changed (102) hide show
  1. package/README.md +63 -0
  2. package/anna-feature-shared-lib/index.d.ts +5 -0
  3. package/anna-feature-shared-lib/public-api.d.ts +16 -0
  4. package/anna-feature-shared-lib/src/biz-rules/constants/generic-business-rule-page.constants.d.ts +5 -0
  5. package/anna-feature-shared-lib/src/biz-rules/models/generic-business-rule-history-popup.model.d.ts +10 -0
  6. package/anna-feature-shared-lib/src/biz-rules/services/generic-business-rule-common-SI-BI-logic.service.d.ts +20 -0
  7. package/anna-feature-shared-lib/src/constants/generic-feature-related-constants.d.ts +3 -0
  8. package/anna-feature-shared-lib/src/daily-revision-listing/components/action-comments-popup/action-comments-popup.component.d.ts +35 -0
  9. package/anna-feature-shared-lib/src/daily-revision-listing/components/offer-rejection-popup/offer-rejection-popup.component.d.ts +44 -0
  10. package/anna-feature-shared-lib/src/daily-revision-listing/models/generic-daily-revision-listing.model.d.ts +64 -0
  11. package/anna-feature-shared-lib/src/daily-revision-listing/models/generic-offers-awaiting-approval.model.d.ts +36 -0
  12. package/anna-feature-shared-lib/src/daily-revision-listing/models/generic-todays-anna-offers-listing.model.d.ts +34 -0
  13. package/anna-feature-shared-lib/src/daily-revision-listing/models/generic-todays-user-offers-listing.model.d.ts +39 -0
  14. package/anna-feature-shared-lib/src/daily-revision-listing/models/spot-approval-generic.model.d.ts +12 -0
  15. package/anna-feature-shared-lib/src/daily-revision-listing/services/generic-daily-revision-listing.service.d.ts +12 -0
  16. package/anna-feature-shared-lib/src/generic-primary-order-panel/models/generic-primary-order-panel.model.d.ts +5 -0
  17. package/anna-feature-shared-lib/src/generic-primary-order-panel/services/generic-primary-order-panel.service.d.ts +13 -0
  18. package/anna-feature-shared-lib/src/order-listing/constants/generic-order-listing.constant.d.ts +18 -0
  19. package/anna-feature-shared-lib/src/spot-approval/models/spot-approval-generic-in-feature-shared-lib.model.d.ts +7 -0
  20. package/anna-feature-shared-lib/src/spot-approval/services/spot-approval-generic-in-feature-shared-lib.service.d.ts +14 -0
  21. package/drr-listing/index.d.ts +5 -0
  22. package/drr-listing/public-api.d.ts +8 -0
  23. package/drr-listing/src/daily-revision-filter-modal/config/daily-revision-listing-backend-service.token.d.ts +10 -0
  24. package/drr-listing/src/daily-revision-filter-modal/daily-revision-filter-modal.component.d.ts +89 -0
  25. package/drr-listing/src/daily-revision-filter-modal/models/daily-revision-filter-modal.model.d.ts +41 -0
  26. package/drr-listing/src/daily-revision-listing/config/daily-revision-listing-backend-service.token.d.ts +18 -0
  27. package/drr-listing/src/daily-revision-listing/constants/daily-revision-listing.constant.d.ts +80 -0
  28. package/drr-listing/src/daily-revision-listing/constants/orders.constant.d.ts +69 -0
  29. package/drr-listing/src/daily-revision-listing/daily-revision-listing.component.d.ts +154 -0
  30. package/drr-listing/src/daily-revision-listing/models/daily-revision-listing.model.d.ts +33 -0
  31. package/drr-listing/src/daily-revision-listing/services/daily-revision-listing.service.d.ts +25 -0
  32. package/fesm2022/annalib-anna-feature-spots-approval-anna-feature-shared-lib.mjs +670 -0
  33. package/fesm2022/annalib-anna-feature-spots-approval-anna-feature-shared-lib.mjs.map +1 -0
  34. package/fesm2022/annalib-anna-feature-spots-approval-drr-listing.mjs +2844 -0
  35. package/fesm2022/annalib-anna-feature-spots-approval-drr-listing.mjs.map +1 -0
  36. package/fesm2022/annalib-anna-feature-spots-approval-spot-approval-shared-lib.mjs +112 -0
  37. package/fesm2022/annalib-anna-feature-spots-approval-spot-approval-shared-lib.mjs.map +1 -0
  38. package/fesm2022/annalib-anna-feature-spots-approval-spots-approval.mjs +12115 -0
  39. package/fesm2022/annalib-anna-feature-spots-approval-spots-approval.mjs.map +1 -0
  40. package/fesm2022/annalib-anna-feature-spots-approval-src-lib-all-offers-listing.mjs +1369 -0
  41. package/fesm2022/annalib-anna-feature-spots-approval-src-lib-all-offers-listing.mjs.map +1 -0
  42. package/fesm2022/annalib-anna-feature-spots-approval-src-lib-spot-approval-seller-or-buyer-revision.mjs +1223 -0
  43. package/fesm2022/annalib-anna-feature-spots-approval-src-lib-spot-approval-seller-or-buyer-revision.mjs.map +1 -0
  44. package/fesm2022/annalib-anna-feature-spots-approval.mjs +88 -0
  45. package/fesm2022/annalib-anna-feature-spots-approval.mjs.map +1 -0
  46. package/index.d.ts +5 -0
  47. package/lib/anna-feature-spots-approval.module.d.ts +20 -0
  48. package/package.json +57 -0
  49. package/public-api.d.ts +1 -0
  50. package/spot-approval-shared-lib/index.d.ts +5 -0
  51. package/spot-approval-shared-lib/public-api.d.ts +2 -0
  52. package/spot-approval-shared-lib/src/revision-offer-status-progress-view/revision-offer-status-progress-view.component.d.ts +19 -0
  53. package/spot-approval-shared-lib/src/revision-summary-panel/revision-summary-panel.component.d.ts +21 -0
  54. package/spots-approval/index.d.ts +5 -0
  55. package/spots-approval/public-api.d.ts +21 -0
  56. package/spots-approval/src/add-os-spots-popup/add-os-spots-popup.component.d.ts +59 -0
  57. package/spots-approval/src/anna-revision/anna-revision.component.d.ts +551 -0
  58. package/spots-approval/src/badly-behaved-spot-details-popup/badly-behaved-spot-details-popup.component.d.ts +38 -0
  59. package/spots-approval/src/badly-behaved-spot-details-popup/models/badly-behaved-spot-details-popup.model.d.ts +15 -0
  60. package/spots-approval/src/badly-behaved-spot-details-popup/services/badly-behaved-spot-details-popup.service.d.ts +7 -0
  61. package/spots-approval/src/cancel-offers-popup/cancel-offers-popup.component.d.ts +36 -0
  62. package/spots-approval/src/config/spots-approval-backend-service.token.d.ts +30 -0
  63. package/spots-approval/src/constants/create-or-edit-offers.constant.d.ts +44 -0
  64. package/spots-approval/src/constants/spots-approval.constant.d.ts +129 -0
  65. package/spots-approval/src/create-or-edit-adu-or-bonus/create-or-edit-adu-or-bonus.component.d.ts +214 -0
  66. package/spots-approval/src/create-or-edit-offers-popup/create-or-edit-offers-popup.component.d.ts +333 -0
  67. package/spots-approval/src/credit-confirmation-table-popup/credit-confirmation-table-popup.component.d.ts +72 -0
  68. package/spots-approval/src/models/anna-revisions-backend.model.d.ts +325 -0
  69. package/spots-approval/src/models/anna-revisions-enums.model.d.ts +53 -0
  70. package/spots-approval/src/models/anna-revisions-response.model.d.ts +355 -0
  71. package/spots-approval/src/models/anna-revisions-total-rows.model.d.ts +124 -0
  72. package/spots-approval/src/models/create-or-edit-offer-total-rows.model.d.ts +73 -0
  73. package/spots-approval/src/models/create-or-edit-offers-popup.model.d.ts +384 -0
  74. package/spots-approval/src/models/order-revision-detail.model.d.ts +156 -0
  75. package/spots-approval/src/offered-mg-edit-table/offered-mg-edit-table.component.d.ts +74 -0
  76. package/spots-approval/src/other-spots-edit-table/other-spots-edit-table.component.d.ts +44 -0
  77. package/spots-approval/src/political-rate-warning-popup/political-rate-warning-popup.component.d.ts +26 -0
  78. package/spots-approval/src/revision-header/revision-header.component.d.ts +21 -0
  79. package/spots-approval/src/revision-summary/revision-summary.component.d.ts +22 -0
  80. package/spots-approval/src/select-spot-length-popup/select-spot-length-popup.component.d.ts +37 -0
  81. package/spots-approval/src/services/create-or-edit-offers-popup.service.d.ts +25 -0
  82. package/spots-approval/src/services/generic-spots-approval.service.d.ts +99 -0
  83. package/spots-approval/src/services/spots-approval.service.d.ts +81 -0
  84. package/spots-approval/src/spot-details-popup/spot-details-popup.component.d.ts +57 -0
  85. package/src/lib/all-offers-listing/index.d.ts +5 -0
  86. package/src/lib/all-offers-listing/public-api.d.ts +6 -0
  87. package/src/lib/all-offers-listing/src/all-offers-listing.component.d.ts +162 -0
  88. package/src/lib/all-offers-listing/src/configs/all-offers-listing-backend.token.d.ts +11 -0
  89. package/src/lib/all-offers-listing/src/models/all-offers-filter.model.d.ts +12 -0
  90. package/src/lib/all-offers-listing/src/models/all-offers-listing-backend.model.d.ts +88 -0
  91. package/src/lib/all-offers-listing/src/models/all-offers-listing.constant.d.ts +84 -0
  92. package/src/lib/all-offers-listing/src/models/all-offers-listing.model.d.ts +95 -0
  93. package/src/lib/all-offers-listing/src/services/all-offers-listing.service.d.ts +25 -0
  94. package/src/lib/spot-approval-seller-or-buyer-revision/index.d.ts +5 -0
  95. package/src/lib/spot-approval-seller-or-buyer-revision/public-api.d.ts +6 -0
  96. 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
  97. 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
  98. 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
  99. 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
  100. package/src/lib/spot-approval-seller-or-buyer-revision/src/seller-or-buyer-revision/models/seller-or-buyer-revision.constant.d.ts +13 -0
  101. package/src/lib/spot-approval-seller-or-buyer-revision/src/seller-or-buyer-revision/models/seller-or-buyer-revision.token.d.ts +14 -0
  102. 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,84 @@
1
+ export type ESTIMATEPRIORITIES = "RollingEstimate" | "StationEstimate" | "BookedRTG" | "AverageRTG";
2
+ export declare class OffersListingEasyFilterConstant {
3
+ static readonly CONFIRMED = "CONFIRMED";
4
+ static readonly CANCELLED = "CANCELLED";
5
+ static readonly SM_APPROVED = "SM APPROVED";
6
+ static readonly SM_REJECTED = "SM REJECTED";
7
+ static readonly BUYER_TIMEDOUT = "BUYER TIMEDOUT";
8
+ static readonly BUYER_REJECTED = "BUYER REJECTED";
9
+ static readonly SELLER_REJECTED = "SELLER REJECTED";
10
+ static readonly REV_TYPE_ANNA = "ANNA";
11
+ static readonly REV_TYPE_SELLER = "SELLER USER REVISION";
12
+ static readonly REV_TYPE_BUYER = "BUYER REVISION";
13
+ }
14
+ export declare class OffersStatusFromBE {
15
+ static readonly OS_SPOTS = "O/S Spots";
16
+ static readonly SELLER_PENDING = "Seller Pending";
17
+ static readonly SELLER_APPROVED = "Seller Approved";
18
+ static readonly SELLER_REJECTED = "Seller Rejected";
19
+ static readonly SELLER_TIMEDOUT = "Seller Timedout";
20
+ static readonly SELLER_CANCELLED = "Seller Cancelled";
21
+ static readonly REP_ENTRY_IN_PROGRESS = "Rep Entry In Progress";
22
+ static readonly REP_ENTRY_FAILED = "Rep Entry Failed";
23
+ static readonly BUYER_PENDING = "Buyer Pending";
24
+ static readonly SELLER_RECONFIRM = "Seller Reconfirm";
25
+ static readonly SELLER_RECONFIRMED = "Seller Reconfirmed";
26
+ static readonly SELLER_RECONFIRM_TIMEDOUT = "Seller Reconfirm Timedout";
27
+ static readonly BUYER_APPROVED = "Buyer Approved";
28
+ static readonly BUYER_REJECTED = "Buyer Rejected";
29
+ static readonly BUYER_TIMEDOUT = "Buyer Timedout";
30
+ static readonly WOT_ENTRY_IN_PROGRESS = "WOT Entry In Progress";
31
+ static readonly WOT_ENTRY_FAILED = "WOT Entry Failed";
32
+ static readonly SM_PENDING = "SM Pending";
33
+ static readonly SM_APPROVED = "SM Approved";
34
+ static readonly SM_REJECTED = "SM Rejected";
35
+ static readonly CONFIRM_IN_PROGRESS = "Confirm In Progress";
36
+ static readonly CANCEL_IN_PROGRESS = "Cancel In Progress";
37
+ static readonly RECALL_IN_PROGRESS = "Recall In Progress";
38
+ static readonly CONFIRMED = "Confirmed";
39
+ static readonly CANCELLED = "Cancelled";
40
+ static readonly RECALLED = "Recalled";
41
+ static readonly REP_ENTRY_FAILED_RETRYING = "Rep Entry Failed (retrying)";
42
+ static readonly BUYER_REP_PENDING = "Buyer (Rep) Pending";
43
+ static readonly BUYER_AGY_PENDING = "Buyer (Agy) Pending";
44
+ static readonly BUYER_TIMEDOUT_LOG_CLOSED = "Buyer Timedout (Log Closed)";
45
+ static readonly WOT_ENTRY_FAILED_RETRYING = "WOT Entry Failed (retrying)";
46
+ static readonly AUTO_CANCELLED_LOG_CLOSURE = "Auto-Cancelled (Log Closure)";
47
+ static readonly CANCEL_IN_PROGRESS_LOG_CLOSURE = "Cancel in progress (Log Closure)";
48
+ static readonly CANCEL_FAILED_LOG_CLOSURE = "Cancel Failed (Log Closure)";
49
+ static readonly AUTO_REJECTED_LOG_CLOSURE = "Auto-rejected (Log Closure)";
50
+ static readonly USER_CONFIRMED = "User Confirmed";
51
+ static readonly USER_CANCELLED = "User Cancelled";
52
+ static readonly USER_EDITED_AND_CONFIRMED = "User edited & Confirmed";
53
+ static readonly USER_EDITED_AND_CANCELLED = "User edited & Cancelled";
54
+ static readonly USER_EDITED = "User edited";
55
+ static readonly USER_STN_CANCELLED = "User Stn Cancelled";
56
+ static readonly REV_TYPE_ANNA = "ANNA";
57
+ static readonly REV_TYPE_SELLER = "SELLER";
58
+ static readonly REV_TYPE_BUYER = "BUYER";
59
+ }
60
+ export declare class SpotTypeFromBE {
61
+ static readonly PREEMPTION = "Preemption";
62
+ static readonly PREEMPTION_REQUESTED_FOR_CREDIT_BY_BUYER = "Buyer Credit Requested";
63
+ static readonly PREEMPTION_SELLER_MARKED_FOR_CREDIT = "Preemption: Marked for Credit";
64
+ static readonly MAKEGOOD_OFFERED = "Offered MG";
65
+ static readonly MAKEGOOD_APPROVED = "Added MG";
66
+ static readonly MAKEGOOD_REJECTED = "Rejected MG";
67
+ static readonly MAKEGOOD_AUTO_APPROVED = "Offered MG: Auto-approved";
68
+ static readonly ADU_OFFERED = "Offered ADU";
69
+ static readonly ADU_APPROVED = "Added ADU";
70
+ static readonly ADU_REJECTED = "Rejected ADU";
71
+ static readonly ADU_AUTO_APPROVED = "Offered ADU: Auto-approved";
72
+ static readonly OUTSTANDING_NO_ACTION = "Outstanding PE";
73
+ static readonly OUTSTANDING_MARKED_FOR_CREDIT = "Outstanding PE";
74
+ static readonly OUTSTANDING_MARKED_FOR_MAKEGOOD = "Outstanding PE";
75
+ static readonly OUTSTANDING_MARKED_FOR_CREDIT_2 = "Outstanding PE: Marked for Credit";
76
+ static readonly USER_PREEMPTION = "MadeGood Preemption";
77
+ static readonly USER_MAKEGOOD = "User MG";
78
+ static readonly USER_ADU = "User ADU";
79
+ static readonly BUYER_ADDED = "Buyer Added";
80
+ static readonly BUYER_DELETED = "Buyer Deleted";
81
+ static readonly USER_CREDITED = "User Credited";
82
+ static readonly USER_UNRESOLVED = "User Unresolved";
83
+ static readonly UNDEFINED = "Undefined";
84
+ }
@@ -0,0 +1,95 @@
1
+ import { IRadioButton, ISvgOrIconTypeInGTTable } from "@annalib/anna-core";
2
+ import { ESTIMATEPRIORITIES } from "@annalib/anna-feature-lib";
3
+ import { SpotTypeFromBE } from "./all-offers-listing.constant";
4
+ import { AllOffersBEAPIResponse, IAllOffersActions, OffersListBEResponse, RevisionTypeFromBE } from "./all-offers-listing-backend.model";
5
+ interface SpotaApprovalIRadioButton extends IRadioButton {
6
+ label: "Reject" | "Approve" | "Mark for Credit" | "No Action" | "Credit";
7
+ value: "approve" | "resubmit" | "credit" | "rejectCreditRequest" | "noAction" | "credit";
8
+ icons?: {
9
+ class: string;
10
+ name?: string;
11
+ };
12
+ }
13
+ export declare class OffersData {
14
+ estimatePriority: ESTIMATEPRIORITIES[];
15
+ spDayparts: string[];
16
+ offers: AllOffersList[];
17
+ constructor(data: AllOffersBEAPIResponse, userType: "SELLER" | "BUYER");
18
+ }
19
+ export declare class AllOffersList {
20
+ groupId: string;
21
+ offerId: string;
22
+ offerStatus: string;
23
+ lastUpdatedOn: string;
24
+ bizRule: string;
25
+ spotType: SpotTypeFromBE;
26
+ lastEditedOrAddedBy: string;
27
+ sellerLineNumber: number;
28
+ buyerLineNumber: number;
29
+ weekStartDate: string;
30
+ scheduledDateAndTime: string;
31
+ length: string;
32
+ buyerProgramName: string;
33
+ sellerProgramName: string;
34
+ inventoryCode: string;
35
+ revenueClass: string;
36
+ revisionType: RevisionTypeFromBE;
37
+ daypart: string;
38
+ rate: number;
39
+ avgRate: number;
40
+ rating: number;
41
+ imps: number;
42
+ annaEstImps: number;
43
+ projectedImpressions: number;
44
+ highlightRate: boolean;
45
+ excludeFromFutureOffers: boolean;
46
+ bizRuleTypeStandardOrRelaxed: "Standard" | "Relaxed" | "-";
47
+ enableAllowedActions: boolean;
48
+ selectedAction: "reject" | "approve" | "credit" | "noAction";
49
+ allowedAction: IAllOffersActions;
50
+ approveOfferComment: string;
51
+ rejectActionComment: string[];
52
+ markForCreditComment: string;
53
+ reofferComment: string;
54
+ reOfferBy: string;
55
+ lastActionBy: string;
56
+ cancelledBy: string;
57
+ gtClass: string;
58
+ rejectionHeader: string;
59
+ allowActionInRejectionPopup: boolean;
60
+ showActionInRejectionPopup: boolean;
61
+ RadioButtonConfig: SpotaApprovalIRadioButton[];
62
+ daypartWithSPTooltip: ISvgOrIconTypeInGTTable[];
63
+ firstTwoEstimatePrioritiesForRTGMetric: string;
64
+ lastTwoEstimatePrioritiesForRTGMetric: string;
65
+ firstTwoEstimatePrioritiesForIMPSMetric: string;
66
+ lastTwoEstimatePrioritiesForIMPSMetric: string;
67
+ offerIdWithStatusTagText: ISvgOrIconTypeInGTTable[];
68
+ spotTypeActionKey: ISvgOrIconTypeInGTTable[];
69
+ bookedRateWithTooltipKey: ISvgOrIconTypeInGTTable[];
70
+ ratingWithSolveTypeAndBadlyBehaveSpotsTooltip: ISvgOrIconTypeInGTTable[];
71
+ impressionWithSolveTypeAndBadlyBehaveSpotsTooltip: ISvgOrIconTypeInGTTable[];
72
+ hideofferIdTd: boolean;
73
+ hidespotTypeTd: boolean;
74
+ hideselectedActionTd: boolean;
75
+ hiderecallOfferColumnTd: boolean;
76
+ hidebizRuleTypeStandardOrRelaxedTd: boolean;
77
+ hidelengthTd: boolean;
78
+ hideinventoryCodeTd: boolean;
79
+ hidedaypartTd: boolean;
80
+ hidescheduledDateAndTimeTd: boolean;
81
+ hidelastActionByTd: boolean;
82
+ bizRuleTypeStandardOrRelaxedRowspan: number;
83
+ recallOfferColumnRowspan: number;
84
+ selectedActionRowspan: number;
85
+ spotTypeRowspan: number;
86
+ offerIdRowspan: number;
87
+ lengthRowspan: number;
88
+ inventoryCodeRowspan: number;
89
+ daypartRowspan: number;
90
+ scheduledDateAndTimeRowspan: number;
91
+ lastActionByRowspan: number;
92
+ sellerCancellationComment: string;
93
+ constructor(BEData: OffersListBEResponse, spDaypart: string[], estimatePriorities: ESTIMATEPRIORITIES[], userType: "SELLER" | "BUYER");
94
+ }
95
+ export {};
@@ -0,0 +1,25 @@
1
+ import { SvgOrIconNames } from "@annalib/anna-core";
2
+ import { ESTIMATEPRIORITIES, OffersStatusFromBE, SpotTypeFromBE } from "../models/all-offers-listing.constant";
3
+ import { IAllOffersActions, IAllOffersActionsFromBE, SolvedTypeFromBE } from "../models/all-offers-listing-backend.model";
4
+ import * as i0 from "@angular/core";
5
+ export declare class AllOffersListingService {
6
+ latestOffersTabFilter: any;
7
+ static getClassNameFromOffersStatus(offersStatus: OffersStatusFromBE): string;
8
+ static returnTooltipAndIconForSolvedType(solvedType: SolvedTypeFromBE, metric: string, valueToUse: number): {
9
+ icon: SvgOrIconNames;
10
+ tooltipMsg: string;
11
+ };
12
+ static returnEstimatePriorities(data: any, estimatePriority: ESTIMATEPRIORITIES[]): string[];
13
+ static returnEstimateValueBasedOnKeyForRTGMetric(BEData: any, key: ESTIMATEPRIORITIES): number | string;
14
+ static returnEstimateValueBasedOnKeyForIMPSMetric(data: any, key: ESTIMATEPRIORITIES): number | string;
15
+ static convertToCommaSeperatedString(arrList: any[]): string;
16
+ getAllRejectionReasons(): string[];
17
+ static getAllowedActionKeyForUI(allowedActions: IAllOffersActionsFromBE): IAllOffersActions;
18
+ getAllowedActionInPascalCase(radioButtonName: string): "Approve" | "Reject" | "NoAction" | "Credit";
19
+ static getSelectedRadioButton(actionAllowed: IAllOffersActions): "reject" | "approve" | "credit" | "noAction";
20
+ getRadioButtonValue(radioButtonName: string): string;
21
+ getRadioButtonLabelDisplay(radioButtonName: string): string;
22
+ static isPEOrMGSpot(spotType: SpotTypeFromBE): boolean;
23
+ static ɵfac: i0.ɵɵFactoryDeclaration<AllOffersListingService, never>;
24
+ static ɵprov: i0.ɵɵInjectableDeclaration<AllOffersListingService>;
25
+ }
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ /// <amd-module name="@annalib/anna-feature-spots-approval/src/lib/spot-approval-seller-or-buyer-revision" />
5
+ export * from './public-api';
@@ -0,0 +1,6 @@
1
+ export * from "./src/seller-or-buyer-revision/models/seller-or-buyer-revision.constant";
2
+ export * from "./src/seller-or-buyer-revision/models/seller-or-buyer-revision.token";
3
+ export * from "./src/seller-or-buyer-revision/models/seller-or-buyer-revision-additional-data.model";
4
+ export * from "./src/seller-or-buyer-revision/models/seller-or-buyer-revision-response.model";
5
+ export * from "./src/seller-or-buyer-revision/models/seller-or-buyer-revision-total-row.model";
6
+ export * from "./src/seller-or-buyer-revision/seller-or-buyer-revision.component";
@@ -0,0 +1,73 @@
1
+ export declare enum SpotApprovalParentPage {
2
+ USER_OFFERS = "USER_OFFERS",
3
+ ORDER_DETAILS = "ORDER_DETAILS"
4
+ }
5
+ export declare enum RevisionType {
6
+ ANNA = "ANNA",
7
+ USER = "USER",
8
+ BUYER = "BUYER"
9
+ }
10
+ export declare enum SpotApprovalUserType {
11
+ SELLER = "SELLER",
12
+ BUYER = "BUYER"
13
+ }
14
+ export declare enum MetricType {
15
+ GRP = "GRP",
16
+ IMPS = "IMP('000)"
17
+ }
18
+ export declare class SpotApprovalUserDetails {
19
+ userId: number | string;
20
+ userName: string;
21
+ }
22
+ export declare class SpotApprovalOrderMetaData {
23
+ ogId?: number;
24
+ orderId: string;
25
+ stationId: number;
26
+ stationName?: string;
27
+ isStationInSandboxMode?: boolean;
28
+ campaignId: number;
29
+ revisionNo: number;
30
+ constructor(rowData: any);
31
+ }
32
+ export interface ISpotApprovalFiltersFromRoute {
33
+ appliedFilters: [];
34
+ selectedFilterData: any;
35
+ sortState: any;
36
+ metricId: number;
37
+ }
38
+ export interface ISpotApprovalFeatureConfig {
39
+ showAUR: boolean;
40
+ showBadlyBehavedSpotsTooltipCellLevel: boolean;
41
+ disableSubmitForRepOrder: boolean;
42
+ }
43
+ export interface RevisionDataPayload {
44
+ OrderId: string;
45
+ StationId: number;
46
+ RevisionNumber: number;
47
+ Page: string;
48
+ Equivalisation: boolean;
49
+ UserId: number;
50
+ UserName: string;
51
+ }
52
+ export interface SummaryDataForPanel {
53
+ heading: string;
54
+ value: string;
55
+ class?: string;
56
+ firstValue?: string;
57
+ secondValue?: string;
58
+ rating?: string | null;
59
+ tooltip?: string | null;
60
+ showRightBorder?: boolean;
61
+ showValueRTG?: boolean;
62
+ CPPOrCPM?: string | null;
63
+ expandedRow?: boolean;
64
+ }
65
+ export declare enum NavigateToPageType {
66
+ TODAYS_USER_OFFERS_LISTING = "TODAYS_USER_OFFERS_LISTING",
67
+ ORDER_DETAILS_OFFERS = "ORDER_DETAILS_OFFERS"
68
+ }
69
+ export interface IOrdersOrRevisonsList {
70
+ orderId: string;
71
+ revisionNo: number;
72
+ [key: string]: any;
73
+ }
@@ -0,0 +1,57 @@
1
+ import { SolvedTypeFromBE } from "@annalib/anna-feature-lib/anna-feature-shared-lib";
2
+ export type DisplaySpotTypeFromBE = "Preemption" | "Unresolved" | "Preemption: Marked for Credit" | "Preemption: Program Change" | "Offered MG" | "Added MG" | "Rejected MG" | "Offered MG: Auto-approved" | "Offered ADU" | "Rejected ADU" | "Offered ADU: Auto-approved" | "Outstanding PE" | "Outstanding PE: Program Change" | "Outstanding PE: Marked for Credit" | "MadeGood Preemption" | "User MG" | "User ADU" | "Buyer Added" | "Buyer Deleted" | "Rate Change" | "Rating/IMPS Change" | "User Credited" | "User Unresolved" | "Added MG" | "Booked ADU" | "Booked ADU: Marked for Credit" | "Rate & Rating/IMPS Change";
3
+ export interface ISpotRowBEResponseData {
4
+ NewGroupId: string;
5
+ DisplaySpotType: DisplaySpotTypeFromBE;
6
+ LineNumber: string;
7
+ BuyerLine: string;
8
+ SpotNumbers: number[];
9
+ WeekDay: string;
10
+ WeekStartDate: string;
11
+ Length: string;
12
+ Time: string;
13
+ SellerProgramName: string;
14
+ BuyerProgramName: string;
15
+ InventoryCode: string;
16
+ DisplayRate: string;
17
+ ActualRate: number;
18
+ PreviousActualRate: number;
19
+ HighlightRate: boolean;
20
+ HighlightingPercentageLimitForColumns: {
21
+ LowerLimitForBookedRate: number;
22
+ UpperLimitForBookedRatingOrImpressions: number;
23
+ LowerLimitForBookedCppOrCpm: number;
24
+ };
25
+ WeeklyAUR: number;
26
+ DisplayWeeklyAUR: string;
27
+ ShowSolvedTypeIcon: boolean;
28
+ ImpressionsUsedToSolve: number;
29
+ Ratings: string;
30
+ PreviousActualRatings: string;
31
+ ActualRatings: number;
32
+ ProjectedRatings: number;
33
+ Impressions: string;
34
+ PreviousActualImpressions: string;
35
+ ActualImpressions: number;
36
+ ProjectedImpression: number;
37
+ HighlightRatingsOrImpressions: boolean;
38
+ IsRatingImpressionBumped: boolean;
39
+ SolvedType: SolvedTypeFromBE;
40
+ RatingsUsedToSolve: number;
41
+ BookedImpression: number;
42
+ WeeklyAUImpressions: number;
43
+ RollingEstimateImpression: number;
44
+ StationEstimateImpression: number;
45
+ WeeklyAURatings: number;
46
+ BookedRating: number;
47
+ RollingEstimateRating: number;
48
+ StationEstimateRating: number;
49
+ Daypart: string;
50
+ RevenueClass: string;
51
+ Amount: number;
52
+ Grp: number;
53
+ Gi: number;
54
+ DisplayAmount: string;
55
+ DisplayGrp: string;
56
+ DisplayGi: string;
57
+ }
@@ -0,0 +1,117 @@
1
+ import { ISvgOrIconTypeInGTTable } from "@annalib/anna-core";
2
+ import { ESTIMATEPRIORITIES } from "@annalib/anna-feature-lib";
3
+ import { DisplaySpotTypeFromBE, ISpotRowBEResponseData } from "./seller-or-buyer-revision-backend.model";
4
+ export interface CPPCPMCostRTGIMPS {
5
+ CPP: string;
6
+ CPM: string;
7
+ Cost: string;
8
+ Ratings: string;
9
+ Impressions: string;
10
+ }
11
+ export interface CPPCPMCostRTGIMPSSpotCount {
12
+ CPP: string;
13
+ CPM: string;
14
+ Cost: string;
15
+ Ratings: string;
16
+ Impressions: string;
17
+ SpotCount: number;
18
+ }
19
+ export declare class UserRevisionSpotsApprovalResponse {
20
+ OrderRelatedInfo: IOrderRelatedInfoForUserRevision;
21
+ RevisionSummary: IUserRevisionSummary | IBuyerRevisionSummary;
22
+ userMGsAndADUs: SpotRowData[];
23
+ userCredited: SpotRowData[];
24
+ userUnresolved: SpotRowData[];
25
+ constructor(BEData: any);
26
+ }
27
+ export declare class BuyerRevisionSpotsApprovalResponse {
28
+ OrderRelatedInfo: IOrderRelatedInfoForUserRevision;
29
+ RevisionSummary: IUserRevisionSummary | IBuyerRevisionSummary;
30
+ allBuyerChanges: SpotRowData[];
31
+ constructor(BEData: any);
32
+ }
33
+ export interface IBuyerRevisionSummary {
34
+ TgName: string;
35
+ Advertiser: string;
36
+ Agency: string;
37
+ Booked: CPPCPMCostRTGIMPS;
38
+ BuyerAdded: CPPCPMCostRTGIMPS;
39
+ BuyerDeleted: CPPCPMCostRTGIMPS;
40
+ BuyerRateAndRtgImpChanges: CPPCPMCostRTGIMPSSpotCount;
41
+ }
42
+ export interface IUserRevisionSummary {
43
+ TgName: string;
44
+ Advertiser: string;
45
+ Agency: string;
46
+ Booked: CPPCPMCostRTGIMPS;
47
+ UserMakegoods: CPPCPMCostRTGIMPS;
48
+ UserADUs: CPPCPMCostRTGIMPS;
49
+ UserCredited: CPPCPMCostRTGIMPS;
50
+ UserUnresolved: CPPCPMCostRTGIMPS;
51
+ }
52
+ export interface IOrderRelatedInfoForUserRevision {
53
+ RevisionNumber: number;
54
+ RevisedOn: string;
55
+ TimeZone: string;
56
+ IsRepOrder: boolean;
57
+ Metric: "Ratings" | "Impressions";
58
+ IsAutomationActivatedOrder: boolean;
59
+ IsPayForPerformanceOrder: boolean;
60
+ RevisionType: "ANNA" | "USER" | "BUYER";
61
+ AlternateOrderId: string;
62
+ IsDeletedAtTraffic: boolean;
63
+ SpDayparts: string[];
64
+ EstimatePriority: ESTIMATEPRIORITIES[];
65
+ }
66
+ export declare class SpotRowData {
67
+ groupId: string;
68
+ hidedisplaySpotTypeTd: boolean;
69
+ displaySpotTypeRowspan: number;
70
+ displaySpotType: DisplaySpotTypeFromBE;
71
+ sellerLineNumber: string;
72
+ buyerLineNumber: string;
73
+ spotNumbers: string;
74
+ spotNumbersArray: number[];
75
+ totalSpotsCount: number;
76
+ weekDay: string;
77
+ weekStartDate: string;
78
+ ActualWeekStartDate: string;
79
+ length: string;
80
+ sellerProgramName: string;
81
+ buyerProgramName: string;
82
+ inventoryCode: string;
83
+ displayRate: string;
84
+ actualRate: number;
85
+ highlightRate: boolean;
86
+ bookedRateWithTooltipKey: ISvgOrIconTypeInGTTable[];
87
+ displayAvgRate: string;
88
+ actualAvgRate: number;
89
+ daypart: string;
90
+ daypartWithSPTooltip: ISvgOrIconTypeInGTTable[];
91
+ revenueClass: string;
92
+ firstTwoEstimatePrioritiesForRTGMetric: string;
93
+ lastTwoEstimatePrioritiesForRTGMetric: string;
94
+ firstTwoEstimatePrioritiesForIMPSMetric: string;
95
+ lastTwoEstimatePrioritiesForIMPSMetric: string;
96
+ displayRating: string;
97
+ actualRating: number;
98
+ projectedRating: number;
99
+ displayImpression: string;
100
+ actualImpression: number;
101
+ projectedImpressions: number;
102
+ impressionWithSolveTypeAndBadlyBehaveSpotsTooltip: ISvgOrIconTypeInGTTable[];
103
+ ratingWithSolveTypeAndBadlyBehaveSpotsTooltip: ISvgOrIconTypeInGTTable[];
104
+ totalAmount: number;
105
+ totalGrp: number;
106
+ totalImps: number;
107
+ displayTotalAmount: string;
108
+ displayTotalGrp: string;
109
+ displayTotalImps: string;
110
+ displayRateTdClass: string;
111
+ displayRatingTdClass: string;
112
+ displayImpressionTdClass: string;
113
+ gtClass: string;
114
+ previousActualRate: number;
115
+ constructor(BEData: ISpotRowBEResponseData, EstimatePriority: ESTIMATEPRIORITIES[]);
116
+ }
117
+ export declare function isRateChanges(BEData: ISpotRowBEResponseData): boolean;
@@ -0,0 +1,29 @@
1
+ import { SpotRowData } from "./seller-or-buyer-revision-response.model";
2
+ export interface TotalRowDataForSellerOrBuyerRevision {
3
+ totalRTG?: number;
4
+ totalIMPS?: number;
5
+ totalRateForDisplay?: string;
6
+ message: string;
7
+ totalAmountForDisplay: string;
8
+ totalAmountGrpForDisplay: string;
9
+ totalAmountImpsForDisplay: string;
10
+ totalSpotsCount?: number;
11
+ }
12
+ export declare class TotalRowForBuyerRevType {
13
+ totalSpotsCount: number;
14
+ message: string;
15
+ totalAmountForDisplay: string;
16
+ totalAmountGrpForDisplay: string;
17
+ totalAmountImpsForDisplay: string;
18
+ constructor(data: SpotRowData[], columnsFiltered: boolean);
19
+ }
20
+ export declare class TotalRowForSellerRevType {
21
+ totalRTG: number;
22
+ totalIMPS: number;
23
+ totalRateForDisplay: string;
24
+ message: string;
25
+ totalAmountForDisplay: string;
26
+ totalAmountGrpForDisplay: string;
27
+ totalAmountImpsForDisplay: string;
28
+ constructor(data: SpotRowData[], filteredAtColumnLevel: boolean);
29
+ }
@@ -0,0 +1,13 @@
1
+ export declare class SpotApprovalTableForSellerOrBuyerHeaderConstants {
2
+ static readonly SELLER_LINE_HEADER = "SELLER LINE";
3
+ static readonly BUYER_LINE_HEADER = "BUY LINE";
4
+ static readonly RATE_HEADER = "RATE";
5
+ static readonly AU_RATE_HEADER = "AVG RATE";
6
+ static readonly RTG_HEADER = "RTG";
7
+ static readonly IMPRESSIONS_HEADER = "IMP('000)";
8
+ static readonly BUYER_PROGRAM_NAME = "BUYER PROGRAM";
9
+ static readonly WEEK = "WEEK";
10
+ static readonly WEEK_OBJ_KEY = "ActualWeekStartDate";
11
+ static readonly SELLER_SPOT_NO = "SELLER SPOT#";
12
+ static readonly DP_HEADER = "DP";
13
+ }
@@ -0,0 +1,14 @@
1
+ import { InjectionToken } from "@angular/core";
2
+ import { IGtTableHeader } from "@annalib/anna-core";
3
+ import { EasyFilters } from "@annalib/anna-design-components-lib";
4
+ import { Observable } from "rxjs";
5
+ import { RevisionDataPayload } from "./seller-or-buyer-revision-additional-data.model";
6
+ /** Token to inject the acl service */
7
+ export declare const SELLER_OR_BUYER_REVISION_SERVICE_TOKEN: InjectionToken<ISellerOrBuyerRevisionService>;
8
+ export interface ISellerOrBuyerRevisionService {
9
+ getAllRevisionData(payload: RevisionDataPayload): Observable<any>;
10
+ getTableHeaders(loading: boolean, metricType: any, estimatePriority: string[]): IGtTableHeader[];
11
+ getEasyFilters(): EasyFilters[];
12
+ getTableHeadersForBuyerRevision(loading: boolean, metricType: any, estimatePriority: string[], showAUR: boolean): IGtTableHeader[];
13
+ getTableHeadersForSellerRevision(loading: boolean, metricType: any, estimatePriority: string[], showAUR: boolean): IGtTableHeader[];
14
+ }
@@ -0,0 +1,128 @@
1
+ import { ChangeDetectorRef, EventEmitter, OnChanges, OnDestroy, OnInit, SimpleChanges } from "@angular/core";
2
+ import { ActivatedRoute, Router } from "@angular/router";
3
+ import { AnnaFilterService, AnnaGlobalConfigService, AnnaGtHelperService, AnnaNonEditableGenericTableComponent, AnnaPersistingFilterService, AnnaSortService, ICustomSingleSelect, IGtGeneralConfig, IGtTableHeader, ITotalRowInfo } from "@annalib/anna-core";
4
+ import { EasyFilters, Filter, IdText } from "@annalib/anna-design-components-lib";
5
+ import { ToastrService } from "ngx-toastr";
6
+ import { Subject } from "rxjs";
7
+ import { ISellerOrBuyerRevisionService } from "./models/seller-or-buyer-revision.token";
8
+ import { IOrdersOrRevisonsList, ISpotApprovalFeatureConfig, ISpotApprovalFiltersFromRoute, MetricType, NavigateToPageType, RevisionDataPayload, RevisionType, SpotApprovalOrderMetaData, SpotApprovalParentPage, SpotApprovalUserDetails, SummaryDataForPanel } from "./models/seller-or-buyer-revision-additional-data.model";
9
+ import { BuyerRevisionSpotsApprovalResponse, SpotRowData, UserRevisionSpotsApprovalResponse } from "./models/seller-or-buyer-revision-response.model";
10
+ import { TotalRowDataForSellerOrBuyerRevision } from "./models/seller-or-buyer-revision-total-row.model";
11
+ import * as i0 from "@angular/core";
12
+ export declare class SpotApprovalSellerOrBuyerRevisionComponent implements OnInit, OnChanges, OnDestroy {
13
+ private router;
14
+ private route;
15
+ private cdRef;
16
+ private toastrService;
17
+ private annaSortService;
18
+ private annaGtService;
19
+ private annaFilterService;
20
+ private persistingFilterService;
21
+ private annaGlobalConfigService;
22
+ consumingProjectSpotsApprovalSellerOrBuyerService: ISellerOrBuyerRevisionService;
23
+ orderMetaData: SpotApprovalOrderMetaData;
24
+ userDetails: SpotApprovalUserDetails;
25
+ parentPage: SpotApprovalParentPage;
26
+ spotApprovalFeatureConfig: ISpotApprovalFeatureConfig;
27
+ dataOnTopHeight: number;
28
+ userHasEditPrivilege: boolean;
29
+ revisionOrderList: IOrdersOrRevisonsList[];
30
+ navigateToPage: EventEmitter<NavigateToPageType>;
31
+ fetchPreviousOrNext: EventEmitter<IOrdersOrRevisonsList>;
32
+ filtersFromRoute: ISpotApprovalFiltersFromRoute;
33
+ showSkeletonLoading: boolean;
34
+ formattedResponse: UserRevisionSpotsApprovalResponse | BuyerRevisionSpotsApprovalResponse;
35
+ tableData: SpotRowData[];
36
+ clonedTableData: SpotRowData[];
37
+ estimatePriorities: string[];
38
+ totalRowInfo: ITotalRowInfo[];
39
+ tableHeaders: IGtTableHeader[];
40
+ gtDimension: {
41
+ rowHeight: number;
42
+ headerHeight: number;
43
+ dataOnTopHeight: number;
44
+ marginFromBottom: number;
45
+ };
46
+ gtGeneralConfig: IGtGeneralConfig;
47
+ easyFilters: EasyFilters[];
48
+ selectedEasyFilter: Filter;
49
+ numberOfEasyFilterLoader: number;
50
+ disableResetAllFilter: boolean;
51
+ selectedMetricType: {
52
+ id: number;
53
+ text: MetricType;
54
+ };
55
+ metricTypeList: {
56
+ id: number;
57
+ text: MetricType;
58
+ }[];
59
+ metricDropdownConfig: ICustomSingleSelect;
60
+ orderDefaultMetricType: {
61
+ id: number;
62
+ text: MetricType;
63
+ };
64
+ selectedOrderIndex: number;
65
+ revisionTypeConstants: typeof RevisionType;
66
+ SpotApprovalParentPage: typeof SpotApprovalParentPage;
67
+ summaryPanelData: SummaryDataForPanel[];
68
+ orderIndexForPrevAndNavigation: {
69
+ currentOrderIndex: number;
70
+ totalOrders: number;
71
+ };
72
+ Math: Math;
73
+ protected ngUnsubscribe: Subject<void>;
74
+ nonEditableGTComponent: AnnaNonEditableGenericTableComponent;
75
+ constructor(router: Router, route: ActivatedRoute, cdRef: ChangeDetectorRef, toastrService: ToastrService, annaSortService: AnnaSortService, annaGtService: AnnaGtHelperService, annaFilterService: AnnaFilterService, persistingFilterService: AnnaPersistingFilterService, annaGlobalConfigService: AnnaGlobalConfigService, consumingProjectSpotsApprovalSellerOrBuyerService: ISellerOrBuyerRevisionService);
76
+ ngOnInit(): void;
77
+ ngOnChanges(changes: SimpleChanges): void;
78
+ setRevisionHeaderCountInfoForPrevAndNextLink(): void;
79
+ detectUrlChanges(): void;
80
+ getLatestFilters(): ISpotApprovalFiltersFromRoute;
81
+ createPayloadForOrderRevisionDetail(): RevisionDataPayload;
82
+ fetchUserRevisionData(): void;
83
+ onSuccessfulOrderRevisionData(): void;
84
+ filterAppliedToTable(data: SpotRowData[]): void;
85
+ sortingAppliedToTable(data: SpotRowData[]): void;
86
+ setTableDataFromResponse(): void;
87
+ isIndependentSpotGroupId(groupId: string): groupId is "00000000-0000-0000-0000-000000000000";
88
+ setTableRowClass(): void;
89
+ setTableRowClassForBuyerRev(): void;
90
+ setTableRowClassForSellerRev(): void;
91
+ initFiltersFromRoute(): void;
92
+ activatateTableFilterIcon(): void;
93
+ callSort(): void;
94
+ enabledisableResetAllLinkFilter(): void;
95
+ getMetricType(metricTypeId: number, setDefaultMetric?: boolean): {
96
+ id: number;
97
+ text: MetricType;
98
+ };
99
+ metricChanged(metricSelected: IdText, updateNavigationHistory?: boolean): void;
100
+ createTotalRow(): void;
101
+ totalRowCommonfieldsforSeller(totalRowData: TotalRowDataForSellerOrBuyerRevision): void;
102
+ totalRowCommonfieldsforBuyer(totalRowData: TotalRowDataForSellerOrBuyerRevision): void;
103
+ intialiseEasyFilters(): void;
104
+ createSummaryComponentData(): void;
105
+ returnUserSellerSpecificSummaryData(): SummaryDataForPanel[];
106
+ returnBuyerSpecificSummaryData(): SummaryDataForPanel[];
107
+ resetFilterVariables(): void;
108
+ resetAllFilter(): void;
109
+ updateLatestFilters(queryParams: any): void;
110
+ setLatestFilters(queryParams: any): void;
111
+ setPersistingVariableForColumnAndEasyFilter(columnAndEasyFilter: string): void;
112
+ setTableHeader(loading?: boolean): void;
113
+ setMetricDropDownData(): void;
114
+ setTableConfig(): void;
115
+ setTableHeight(): void;
116
+ calculateDataOnTopHeight(): number;
117
+ isIndependentSpot(arr: SpotRowData): boolean;
118
+ formatResponseForGenericTable(arr: SpotRowData[]): SpotRowData[];
119
+ setEasyFilters(): void;
120
+ fetchPreviousOrderDetails(): void;
121
+ fetchNextOrderDetails(): void;
122
+ goToOffersRevisionsPage(): void;
123
+ updateNavigationHistory(): void;
124
+ prepareQueryParamOnFilterApplication(): any;
125
+ ngOnDestroy(): void;
126
+ static ɵfac: i0.ɵɵFactoryDeclaration<SpotApprovalSellerOrBuyerRevisionComponent, never>;
127
+ static ɵcmp: i0.ɵɵComponentDeclaration<SpotApprovalSellerOrBuyerRevisionComponent, "anna-feature-seller-or-buyer-revision", never, { "orderMetaData": { "alias": "orderMetaData"; "required": true; }; "userDetails": { "alias": "userDetails"; "required": true; }; "parentPage": { "alias": "parentPage"; "required": true; }; "spotApprovalFeatureConfig": { "alias": "spotApprovalFeatureConfig"; "required": true; }; "dataOnTopHeight": { "alias": "dataOnTopHeight"; "required": true; }; "userHasEditPrivilege": { "alias": "userHasEditPrivilege"; "required": true; }; "revisionOrderList": { "alias": "revisionOrderList"; "required": true; }; }, { "navigateToPage": "navigateToPage"; "fetchPreviousOrNext": "fetchPreviousOrNext"; }, never, never, true, never>;
128
+ }