1/* vim: set ts=2 sw=2 sts=2 et: */ 2 3/** 4 * Copyright (c) 2001-present X-Cart Holdings LLC. All rights reserved. 5 * See https://www.x-cart.com/license-agreement.html for license details. 6 */ 7 8define('googleAnalytics/base/GAShoppingCartHandleEvent', ['googleAnalytics/eCommerceCoreEvent', 'js/underscore'], function(eCommerceCoreEvent, _) { 9 let GAShoppingCartHandleEventBase = eCommerceCoreEvent.extend({ 10 namespace: 'Product', 11 chunkThreshold: 6000, 12 13 constructor: function () { 14 GAShoppingCartHandleEventBase.superclass.constructor.apply(this, arguments) 15 this.resetContainer() 16 }, 17 18 resetContainer () { 19 this.container = {} 20 }, 21 22 getListeners () { 23 return { 24 'ga-pageview-sending': this.registerViewCart, 25 'ga-update-cart': this.registerUpdateCart 26 } 27 }, 28 29 registerViewCart (event, data) { 30 var self = this 31 32 var actionData = _.first(self.getActions('view_cart')) 33 if (actionData && !_.isUndefined(actionData.data)) { 34 self.processViewCart(actionData.data) 35 } 36 }, 37 38 processViewCart (cartData) { 39 var self = this 40 var length = 0 41 var baseLength = JSON.stringify(this.container).length 42 43 _.each( 44 cartData.items, 45 function (item, index) { 46 self.addCartItemAction(item) 47 length += JSON.stringify(item).length 48 if ((length + baseLength) > self.chunkThreshold) { 49 self.flushViewCart() 50 length = 0 51 } 52 } 53 ) 54 55 if (length) { 56 self.flushViewCart() 57 } 58 }, 59 60 addCartItemAction (data) { 61 }, 62 63 flushViewCart () { 64 }, 65 66 registerUpdateCart (event, parent_data) { 67 var data = parent_data.data 68 if (data.items) { 69 for (var i = 0; i < data.items.length; i++) { 70 var item = data.items[i] 71 72 if (item.quantity_change > 0) { 73 this.registerAddItem(item['ga-data'], item.quantity_change) 74 } else if (item.quantity_change < 0) { 75 this.registerRemoveItem(item['ga-data'], item.quantity_change) 76 } 77 } 78 } 79 this.registerItemsChange(data) 80 }, 81 82 registerItemsChange (data) { 83 }, 84 registerAddItem (item) { 85 }, 86 registerRemoveItem (item) { 87 } 88 }) 89 90 return GAShoppingCartHandleEventBase; 91});
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.