toutpratique/modules/ganalytics/views/js/GoogleAnalyticActionLib.js
Tout Pratique 1cdfdf6ea7 recette
2015-12-04 10:59:16 +01:00

179 lines
4.5 KiB
JavaScript

/**
* 2007-2015 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License (AFL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/afl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
*
* @author PrestaShop SA <contact@prestashop.com>
* @copyright 2007-2015 PrestaShop SA
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
* International Registered Trademark & Property of PrestaShop SA
**/
/* globals $, ga, jQuery */
var GoogleAnalyticEnhancedECommerce = {
setCurrency: function(Currency) {
ga('set', '&cu', Currency);
},
add: function(Product, Order, Impression) {
var Products = {};
var Orders = {};
var ProductFieldObject = ['id', 'name', 'category', 'brand', 'variant', 'price', 'quantity', 'coupon', 'list', 'position', 'dimension1'];
var OrderFieldObject = ['id', 'affiliation', 'revenue', 'tax', 'shipping', 'coupon', 'list', 'step', 'option'];
if (Product != null) {
if (Impression && Product.quantity !== undefined) {
delete Product.quantity;
}
for (var productKey in Product) {
for (var i = 0; i < ProductFieldObject.length; i++) {
if (productKey.toLowerCase() == ProductFieldObject[i]) {
if (Product[productKey] != null) {
Products[productKey.toLowerCase()] = Product[productKey];
}
}
}
}
}
if (Order != null) {
for (var orderKey in Order) {
for (var j = 0; j < OrderFieldObject.length; j++) {
if (orderKey.toLowerCase() == OrderFieldObject[j]) {
Orders[orderKey.toLowerCase()] = Order[orderKey];
}
}
}
}
if (Impression) {
ga('ec:addImpression', Products);
} else {
ga('ec:addProduct', Products);
}
},
addProductDetailView: function(Product) {
this.add(Product);
ga('ec:setAction', 'detail');
ga('send', 'event', 'UX', 'detail', 'Product Detail View',{'nonInteraction': 1});
},
addToCart: function(Product) {
this.add(Product);
ga('ec:setAction', 'add');
ga('send', 'event', 'UX', 'click', 'Add to Cart'); // Send data using an event.
},
removeFromCart: function(Product) {
this.add(Product);
ga('ec:setAction', 'remove');
ga('send', 'event', 'UX', 'click', 'Remove From cart'); // Send data using an event.
},
addProductImpression: function(Product) {
//ga('send', 'pageview');
},
/**
id, type, affiliation, revenue, tax, shipping and coupon.
**/
refundByOrderId: function(Order) {
/**
* Refund an entire transaction.
**/
ga('ec:setAction', 'refund', {
'id': Order.id // Transaction ID is only required field for full refund.
});
ga('send', 'event', 'Ecommerce', 'Refund', {'nonInteraction': 1});
},
refundByProduct: function(Order) {
/**
* Refund a single product.
**/
//this.add(Product);
ga('ec:setAction', 'refund', {
'id': Order.id, // Transaction ID is required for partial refund.
});
ga('send', 'event', 'Ecommerce', 'Refund', {'nonInteraction': 1});
},
addProductClick: function(Product) {
var ClickPoint = jQuery('a[href$="' + Product.url + '"].quick-view');
ClickPoint.on("click", function() {
GoogleAnalyticEnhancedECommerce.add(Product);
ga('ec:setAction', 'click', {
list: Product.list
});
ga('send', 'event', 'Product Quick View', 'click', Product.list, {
'hitCallback': function() {
return !ga.loaded;
}
});
});
},
addProductClickByHttpReferal: function(Product) {
this.add(Product);
ga('ec:setAction', 'click', {
list: Product.list
});
ga('send', 'event', 'Product Click', 'click', Product.list, {
'nonInteraction': 1,
'hitCallback': function() {
return !ga.loaded;
}
});
},
addTransaction: function(Order) {
//this.add(Product);
ga('ec:setAction', 'purchase', Order);
ga('send', 'event','Transaction','purchase', {
'hitCallback': function() {
$.get(Order.url, {
orderid: Order.id,
customer: Order.customer
});
}
});
},
addCheckout: function(Step) {
ga('ec:setAction', 'checkout', {
'step': Step
//'option':'Visa'
});
//ga('send', 'pageview');
}
};