UNPKG

4.16 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3var tslib_1 = require("tslib");
4var page_type_1 = require("../../commons/types/page-type");
5var event_runner_1 = require("../../event/core/event-runner");
6var confirmation_1 = require("../../event/types/page/confirmation");
7var cart_1 = require("../types/page/cart");
8/**
9 * Specific runner used by Biggy stores.
10 *
11 * @class BiggyRunner
12 * @implements {Runner}
13 */
14var BiggyRunner = /** @class */ (function (_super) {
15 tslib_1.__extends(BiggyRunner, _super);
16 function BiggyRunner() {
17 return _super !== null && _super.apply(this, arguments) || this;
18 }
19 /**
20 * Process DataLayer item.
21 *
22 * @protected
23 * @param {PageItem} item Current item.
24 * @memberof BiggyRunner
25 */
26 BiggyRunner.prototype.processItem = function (item) {
27 var info = this.getPageInfo(item);
28 if (info) {
29 if (info.pageType === page_type_1.PageType.Confirmation) {
30 this.sendOrderEvent(info.item);
31 }
32 else if (info.pageType === page_type_1.PageType.Cart) {
33 this.sendCartEvent(info.item);
34 }
35 }
36 };
37 /**
38 * Get current page info based on DataLayer.
39 *
40 * @protected
41 * @param {PageItem} item Current item.
42 * @return {PageInfo} Current page info.
43 * @memberof BiggyRunner
44 */
45 BiggyRunner.prototype.getPageInfo = function (item) {
46 if (item && item.event) {
47 if (item.event.toUpperCase() === "BIGGY.TRANSACTION") {
48 return {
49 item: item,
50 pageType: page_type_1.PageType.Confirmation,
51 };
52 }
53 else if (item.event.toUpperCase() === "BIGGY.CART") {
54 return {
55 item: item,
56 pageType: page_type_1.PageType.Cart,
57 };
58 }
59 }
60 return undefined;
61 };
62 /**
63 * Send order event, based on a order item.
64 *
65 * @protected
66 * @param {PageItem} orderItem Order item from the DataLayer.
67 * @memberof BiggyRunner
68 */
69 BiggyRunner.prototype.sendOrderEvent = function (orderItem) {
70 var biggyItem = orderItem.biggy;
71 var orderId = biggyItem.order;
72 var products = [];
73 if (biggyItem.products) {
74 for (var _i = 0, _a = biggyItem.products; _i < _a.length; _i++) {
75 var transactionProduct = _a[_i];
76 products.push({
77 product: transactionProduct.product,
78 quantity: transactionProduct.quantity,
79 price: transactionProduct.price,
80 });
81 }
82 }
83 var event = new confirmation_1.PageConfirmationEvent(orderId).withProducts(products);
84 event.push();
85 };
86 /**
87 * Send cart event, based on a cart item.
88 *
89 * @protected
90 * @param {PageItem} cartItem Cart item from the DataLayer.
91 * @memberof BiggyRunner
92 */
93 BiggyRunner.prototype.sendCartEvent = function (cartItem) {
94 // Create a generic cart event.
95 var event = this.createCartEvent(cartItem.event);
96 var biggyItem = cartItem.biggy;
97 // Get layer products from specific event key.
98 var layerProducts = biggyItem.products;
99 if (layerProducts && layerProducts instanceof Array && layerProducts.length > 0) {
100 for (var _i = 0, layerProducts_1 = layerProducts; _i < layerProducts_1.length; _i++) {
101 var product = layerProducts_1[_i];
102 event.withProduct(product.product, product.quantity);
103 }
104 }
105 event.push();
106 };
107 /**
108 * Create a generic cart event.
109 *
110 * @protected
111 * @param {string} _event Current event name.
112 * @return {CartEvent} Relevant cart event.
113 * @memberof BiggyRunner
114 */
115 BiggyRunner.prototype.createCartEvent = function (_event) {
116 return new cart_1.PageCartEvent();
117 };
118 return BiggyRunner;
119}(event_runner_1.EventRunner));
120exports.BiggyRunner = BiggyRunner;
121//# sourceMappingURL=biggy-runner.js.map
\No newline at end of file