UNPKG

4.32 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 YourID store.
10 *
11 * @class YourIDRunner
12 * @implements {Runner}
13 */
14var YourIDRunner = /** @class */ (function (_super) {
15 tslib_1.__extends(YourIDRunner, _super);
16 function YourIDRunner() {
17 return _super !== null && _super.apply(this, arguments) || this;
18 }
19 /**
20 * Process DataLayer item.
21 *
22 * @protected
23 * @param {*} item Current item.
24 * @memberof YourIDRunner
25 */
26 YourIDRunner.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 YourIDRunner
44 */
45 YourIDRunner.prototype.getPageInfo = function (item) {
46 if (item && item.pageType) {
47 if (item.pageType === "onestepcheckout/index/success") {
48 return {
49 item: item,
50 pageType: page_type_1.PageType.Confirmation,
51 };
52 }
53 else if (item.pageType === "checkout/cart/index") {
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 {*} orderItem Order item from the DataLayer.
67 * @memberof YourIDRunner
68 */
69 YourIDRunner.prototype.sendOrderEvent = function (orderItem) {
70 var orderId = orderItem.transactionId;
71 var products = [];
72 if (orderItem.transactionProducts) {
73 var transactionProducts = orderItem.transactionProducts;
74 for (var _i = 0, transactionProducts_1 = transactionProducts; _i < transactionProducts_1.length; _i++) {
75 var transactionProduct = transactionProducts_1[_i];
76 products.push({
77 product: transactionProduct.id,
78 quantity: parseInt(transactionProduct.quantity, 10),
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 {*} cartItem Cart item from the DataLayer.
91 * @memberof YourIDRunner
92 */
93 YourIDRunner.prototype.sendCartEvent = function (cartItem) {
94 // Create a generic cart event.
95 var event = this.createCartEvent();
96 // Get layer products from specific event key.
97 if (cartItem.transactionProducts) {
98 var layerProducts = JSON.parse(cartItem.transactionProducts);
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.id, parseInt(product.quantity, 10));
103 }
104 }
105 }
106 event.push();
107 };
108 /**
109 * Create a generic cart event.
110 *
111 * @protected
112 * @param {string} event Current event name.
113 * @return {CartEvent} Relevant cart event.
114 * @memberof YourIDRunner
115 */
116 YourIDRunner.prototype.createCartEvent = function () {
117 return new cart_1.PageCartEvent();
118 };
119 return YourIDRunner;
120}(event_runner_1.EventRunner));
121exports.YourIDRunner = YourIDRunner;
122//# sourceMappingURL=yourid-runner.js.map
\No newline at end of file