lin3s-react-analytics-enhanced-ecommerce-sylius
Version:
Transformations to turn Sylius objects into Enhanced Eccomerce Data Layers
179 lines (163 loc) • 5.81 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
var getCategoryForProduct = function getCategoryForProduct(product) {
return product.taxons && product.taxons.main ? product.taxons.main : '';
};
var getVariantPrice = function getVariantPrice(product) {
return product.variants && product.variants.length > 0 && product.variants[0].price ? (product.variants[0].price.price || product.variants[0].price.current) / 100 : 0;
};
var transformActionField = function transformActionField(order, params) {
return {
id: order.tokenValue,
affiliation: params.affiliation || 'Online Store',
revenue: order.totals.total / 100,
tax: order.totals.taxes / 100,
shipping: order.totals.shipping / 100
};
};
var transformProducts = function transformProducts(items, params) {
return items.map(function (item) {
return _extends({
name: item.product.name,
id: item.product.code,
variant: item.product.variants[0].code,
price: item.total / item.quantity / 100,
brand: item.brand || params.brand,
category: getCategoryForProduct(item.product),
quantity: item.quantity
}, item.customFields);
});
};
var transformProductsForImpression = function transformProductsForImpression(products, params) {
return products.map(function (product, index) {
return _extends({
name: product.name,
id: product.code,
category: getCategoryForProduct(product),
brand: product.brand || params.brand,
list: params.list,
price: getVariantPrice(product),
position: (params.initialIndex || 0) + index + 1
}, product.customFields);
});
};
var transformProductsForCart = function transformProductsForCart(items, params) {
return items.map(function (item) {
return _extends({
name: item.product.name,
id: item.product.code,
variant: item.product.variants[0].code,
price: getVariantPrice(item.product),
brand: item.product.brand || params.brand,
category: getCategoryForProduct(item.product),
quantity: item.quantity
}, item.customFields);
});
};
var transformOrderForDL = function transformOrderForDL(order) {
var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
return {
event: 'purchase',
ecommerce: {
purchase: {
actionField: transformActionField(order, params),
products: transformProducts(order.items, params)
}
}
};
};
var transformProductsForImpressionDL = function transformProductsForImpressionDL(products) {
var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
return {
event: 'productImpressions',
ecommerce: {
currencyCode: params.currency || 'EUR',
impressions: transformProductsForImpression(products, params)
}
};
};
var transformProductForDetailDL = function transformProductForDetailDL(product) {
var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
return {
event: 'productDetail',
ecommerce: {
detail: {
products: [_extends({
name: product.name,
id: product.code,
price: getVariantPrice(product),
category: getCategoryForProduct(product),
brand: product.brand || params.brand
}, product.customFields)]
}
}
};
};
var transformProductForClickDL = function transformProductForClickDL(product) {
var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
return {
event: 'productClick',
ecommerce: {
click: {
actionField: {
list: params.list
},
products: [_extends({
name: product.name,
id: product.code,
price: getVariantPrice(product),
category: getCategoryForProduct(product),
position: params.position
}, product.customFields)]
}
}
};
};
var transformCartItemsForCheckoutDL = function transformCartItemsForCheckoutDL(cartItems) {
var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
return {
event: 'checkout',
ecommerce: {
checkout: {
actionField: _extends({
step: params.step || 1
}, params.customActionField),
products: transformProducts(cartItems, params)
}
}
};
};
var transformAddToCartDL = function transformAddToCartDL(products) {
var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
return {
event: 'addToCart',
ecommerce: {
currencyCode: params.currency || 'EUR',
add: {
products: transformProductsForCart(products, params)
}
}
};
};
var transformRemoveFromCartDL = function transformRemoveFromCartDL(products) {
var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
return {
event: 'removeFromCart',
ecommerce: {
currencyCode: params.currency || 'EUR',
add: {
products: transformProductsForCart(products, params)
}
}
};
};
exports.transformOrderForDL = transformOrderForDL;
exports.transformProductsForImpressionDL = transformProductsForImpressionDL;
exports.transformProductForDetailDL = transformProductForDetailDL;
exports.transformProductForClickDL = transformProductForClickDL;
exports.transformCartItemsForCheckoutDL = transformCartItemsForCheckoutDL;
exports.transformAddToCartDL = transformAddToCartDL;
exports.transformRemoveFromCartDL = transformRemoveFromCartDL;