Files
roi-theme/_planeacion/theme_referencias/_old/2025 Construction Cost Books with RSMeans data_files/google-analytics-universal-cart.min.js.descarga
FrankZamora ea38a12055 [NIVEL 2 AVANCE] Issues #49-#53 - Componentes Principales Verificados
Todos los componentes del NIVEL 2 ya están implementados correctamente:
-  Notification Bar (#49)
-  Navbar (#50)
-  Hero Section (#51)
-  Sidebar (#52)
-  Footer (#53)

Solo se actualizó notification-bar.css para usar variables CSS.

Próximo paso: NIVEL 3 (Refinamientos visuales)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-04 20:01:07 -06:00

13 lines
7.0 KiB
Plaintext

define(['jquery','Magento_Customer/js/customer-data','underscore'],function($,customerData,_){'use strict';function getCookie(name){var cookie=' '+document.cookie,search=' '+name+'=',setStr=null,offset=0,end=0;if(cookie.length>0){offset=cookie.indexOf(search);if(offset!=-1){offset+=search.length;end=cookie.indexOf(';',offset);if(end==-1){end=cookie.length;}
setStr=decodeURI(cookie.substring(offset,end));}}
return setStr;}
function delCookie(name){var date=new Date(0);document.cookie=name+'='+'; path=/; expires='+date.toUTCString();}
function GoogleAnalyticsUniversalCart(config){this.dlCurrencyCode=config.dlCurrencyCode;this.dataLayer=config.dataLayer;this.cookieAddToCart=config.cookieAddToCart;this.cookieRemoveFromCart=config.cookieRemoveFromCart;this.productQtys=[];this.origProducts={};this.productWithChanges=[];this.addedProducts=[];this.removedProducts=[];this.googleAnalyticsUniversalData={};}
GoogleAnalyticsUniversalCart.prototype={listenMinicartReload:function(){var context=this;if(!_.isUndefined(window.Minicart)&&typeof Minicart.prototype.initAfterEvents){Minicart.prototype.initAfterEvents['GoogleAnalyticsUniversalCart:subscribeProductsUpdateInCart']=function(){context.subscribeProductsUpdateInCart();context.parseAddToCartCookies();context.parseRemoveFromCartCookies();};Minicart.prototype.removeItemAfterEvents['GoogleAnalyticsUniversalCart:subscribeProductsRemoveFromCart']=function(){context.parseRemoveFromCartCookies();};}},subscribeProductsUpdateInCart:function(){var context=this;$(document).on('mousedown','[data-cart-item-update]',function(){context.collectCustomerProducts();}).on('mousedown','.update-cart-item',function(){context.collectCustomerProducts();}).on('mousedown','[data-multiship-item-update]',function(){context.collectOriginalProducts();context.collectMultiCartQtys();}).on('mousedown','[data-multiship-item-remove]',function(){context.collectOriginalProducts();context.collectMultiCartQtys();context.updateMulticartCartObserver();}).on('mousedown','[data-cart-empty]',function(){context.emptyCartObserver();}).on('ajax:updateCartItemQty',function(){context.updateCartObserver();}).on('ajax:updateMulticartItemQty',function(){context.updateMulticartCartObserver();});},emptyCartObserver:function(){var product,i;this.collectOriginalProducts();for(i in this.origProducts){if(i!='length'&&this.origProducts.hasOwnProperty(i)){product=$.extend({},this.origProducts[i]);this.removedProducts.push(product);}}
this.cartItemRemoved();},updateMulticartCartObserver:function(){this.collectMultiProductsWithChanges();this.collectProductsForMessages();this.cartItemAdded();this.cartItemRemoved();},updateCartObserver:function(){this.collectProductsWithChanges();this.collectProductsForMessages();this.cartItemAdded();this.cartItemRemoved();},collectMultiProductsWithChanges:function(){var groupedProducts={},cartProduct,i=0,j,product;this.productWithChanges=[];for(i;i<this.productQtys.length;i++){cartProduct=this.productQtys[i];if(_.isUndefined(groupedProducts[cartProduct.id])){groupedProducts[cartProduct.id]=parseInt(cartProduct.qty,10);}else{groupedProducts[cartProduct.id]+=parseInt(cartProduct.qty,10);}}
for(j in groupedProducts){if(groupedProducts.hasOwnProperty(j)){if(!_.isUndefined(this.origProducts[j])&&groupedProducts[j]!=this.origProducts[j].qty){product=$.extend({},this.origProducts[j]);product.qty=groupedProducts[j];this.productWithChanges.push(product);}}}},collectProductsWithChanges:function(){var i=0,cartProduct,product;this.productWithChanges=[];for(i;i<this.productQtys.length;i++){cartProduct=this.productQtys[i];if(!_.isUndefined(this.origProducts[cartProduct.id])&&cartProduct.qty!=this.origProducts[cartProduct.id].qty){product=$.extend({},this.origProducts[cartProduct.id]);if(parseInt(cartProduct.qty,10)>0){product.qty=cartProduct.qty;this.productWithChanges.push(product);}}}},collectCustomerProducts:function(){this.collectOriginalProducts();this.collectCartQtys();this.collectMiniCartQtys();},collectOriginalProducts:function(){var products={},items=customerData.get('cart')().items;if(!_.isUndefined(items)){items.forEach(function(item){products[item['product_sku']]={'id':item['product_sku'],'name':item['product_name'],'price':item['product_price_value'],'qty':parseInt(item.qty,10)};});}
this.googleAnalyticsUniversalData.shoppingCartContent=products;this.origProducts=this.googleAnalyticsUniversalData.shoppingCartContent;},collectMultiCartQtys:function(){var productQtys=[];$('[data-multiship-item-id]').each(function(index,elem){productQtys.push({'id':$(elem).data('multiship-item-id'),'qty':$(elem).val()});});this.productQtys=productQtys;},collectCartQtys:function(){var productQtys=[];$('[data-cart-item-id]').each(function(index,elem){productQtys.push({'id':$(elem).data('cart-item-id'),'qty':$(elem).val()});});this.productQtys=productQtys;},collectMiniCartQtys:function(){var productQtys=[];$('input[data-cart-item-id]').each(function(index,elem){productQtys.push({'id':$(elem).data('cart-item-id'),'qty':$(elem).val()});});this.productQtys=productQtys;},collectProductsForMessages:function(){var i=0,product;this.addedProducts=[];this.removedProducts=[];for(i;i<this.productWithChanges.length;i++){product=this.productWithChanges[i];if(!_.isUndefined(this.origProducts[product.id])){if(product.qty>this.origProducts[product.id].qty){product.qty=Math.abs(product.qty-this.origProducts[product.id].qty);this.addedProducts.push(product);}else if(product.qty<this.origProducts[product.id].qty){product.qty=Math.abs(this.origProducts[product.id].qty-product.qty);this.removedProducts.push(product);}}}},formatProductsArray:function(productsIn){var productsOut=[],itemId,i;for(i in productsIn){if(i!='length'&&productsIn.hasOwnProperty(i)){if(!_.isUndefined(productsIn[i].sku)){itemId=productsIn[i].sku;}else{itemId=productsIn[i].id;}
productsOut.push({'id':itemId,'name':productsIn[i].name,'price':productsIn[i].price,'quantity':parseInt(productsIn[i].qty,10)});}}
return productsOut;},cartItemAdded:function(){if(!this.addedProducts.length){return;}
this.dataLayer.push({'event':'addToCart','ecommerce':{'currencyCode':this.dlCurrencyCode,'add':{'products':this.formatProductsArray(this.addedProducts)}}});this.addedProducts=[];},cartItemRemoved:function(){if(!this.removedProducts.length){return;}
this.dataLayer.push({'event':'removeFromCart','ecommerce':{'currencyCode':this.dlCurrencyCode,'remove':{'products':this.formatProductsArray(this.removedProducts)}}});this.removedProducts=[];},parseAddToCartCookies:function(){var addProductsList;if(getCookie(this.cookieAddToCart)){this.addedProducts=[];addProductsList=decodeURIComponent(getCookie(this.cookieAddToCart));this.addedProducts=JSON.parse(addProductsList);delCookie(this.cookieAddToCart);this.cartItemAdded();}},parseRemoveFromCartCookies:function(){var removeProductsList;if(getCookie(this.cookieRemoveFromCart)){this.removedProducts=[];removeProductsList=decodeURIComponent(getCookie(this.cookieRemoveFromCart));this.removedProducts=JSON.parse(removeProductsList);delCookie(this.cookieRemoveFromCart);this.cartItemRemoved();}}};return GoogleAnalyticsUniversalCart;});