1 2var spinnerChange = function (spinner, amount) { 3 let spinnerField = spinner.closest('.js.comp-spinner').querySelector('.js.spinner-number'); 4 if (spinnerField) { 5 let currentAmount = parseInt(spinnerField.value); 6 let max = 0; 7 if (spinnerField.dataset.max !== '') { 8 max = parseInt(spinnerField.dataset.max); 9 } 10 11 if (currentAmount + amount >= 0) { 12 13 if (max === 0 || currentAmount + amount <= max) { 14 spinnerField.value = currentAmount + amount; 15 16 let spinnerDecrease = spinner.closest('.js.comp-spinner').querySelector('.js.decrease'); 17 if (currentAmount + amount === 0) { 18 spinnerDecrease.classList.add('disabled'); 19 } 20 else { 21 spinnerDecrease.classList.remove('disabled'); 22 } 23 24 if (typeof onSpinnerChange === "function") { 25 onSpinnerChange(spinnerField) 26 } 27 } 28 } 29 } 30}; 31 32var onIncreaseSpinnerClicked = function (e) { 33 e.preventDefault(); 34 spinnerChange(this, 1); 35 //pushDatalayer(); 36}; 37 38var onDecreaseSpinnerClicked = function (e) { 39 e.preventDefault(); 40 spinnerChange(this, -1); 41 //pushDatalayer(); 42}; 43 44var pushDatalayer = function () { 45 46 var itemFrom = document.getElementById('FromGalaxyCode'); 47 var itemTo = document.getElementById('ToGalaxyCode'); 48 var itemTotal = document.querySelector('.js.subtotal'); 49 var salesCategory = document.getElementById('SalesCategory'); 50 51 if (itemTotal) { 52 itemTotal = itemTotal.innerText; 53 itemTotal = itemTotal.replace("$", ""); 54 } 55 else { 56 itemTotal = 0; 57 } 58 59 60 61 if (itemFrom !== '' && itemFrom !== null && itemFrom !== undefined && itemTo !== '' && itemTo !== null && itemTo !== undefined) { 62 63 var cartItemsToPush = document.getElementsByClassName('ticket-item'); 64 65 var itemPlace = salesCategory.value; 66 67 if (itemFrom.value !== '' && itemTo.value !== '') { 68 69 var fromGalaxyCode = itemFrom.value; 70 var toGalaxyCode = itemTo.value; 71 72 itemPlace = fromGalaxyCode + "-" + toGalaxyCode; 73 } 74 75 var json = []; 76 77 for (cartItem of cartItemsToPush) { 78 79 var itemCost = cartItem.getAttribute('data-base-cost'); 80 var itemPlu = cartItem.getAttribute('data-plu'); 81 var itemTitle = document.querySelector('.item-title').textContent; 82 83 json.push({ 84 'item_id': itemPlu, // Place unique ticket SKU number 85 'item_name': itemTitle, // The name of the ticket i.e "Auckland to Waiheke - Return - Adult" 86 'item_list_name': itemPlace, // THe name of the list where the tickets sit. Could be AUCK-WAIH 87 'price': itemCost 88 }); 89 90 } 91 92 window.dataLayer = window.dataLayer || []; 93 dataLayer.push({ 'ecommerce': null }); 94 dataLayer.push({ 95 'event': "view_item", 96 'ecommerce': { 97 'currency': "NZD", 98 'value': itemTotal, // sum total of all available tickets 99 'items': json 100 } 101 }); 102 } 103} 104 105var loadSpinners = function (spinners) { 106 if (spinners.length) { 107 spinners.forEach(option => { 108 option.querySelector('.js.increase').addEventListener('click', onIncreaseSpinnerClicked); 109 option.querySelector('.js.decrease').addEventListener('click', onDecreaseSpinnerClicked); 110 111 }); 112 } 113};
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.