{"version":3,"sources":["EnhancedEcommerce.ts"],"names":[],"mappings":"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","file":"EnhancedEcommerce.js","sourcesContent":["/**\r\n * Interface representing one impression (product) that is visible on page\r\n */\r\ninterface IEnhancedImpression {\r\n brand: string;\r\n category: string;\r\n id: string;\r\n list: string;\r\n name: string;\r\n position: number;\r\n price: number;\r\n variant: string;\r\n}\r\n\r\n/**\r\n * Interface representing one product (on detail page or in basket)\r\n */\r\ninterface IEnhancedProduct {\r\n brand: string;\r\n category: string;\r\n id: string;\r\n name: string;\r\n position: number;\r\n price: number;\r\n quantity: number;\r\n variant: string;\r\n}\r\n\r\n/**\r\n * Interface representing one promo action (banner)\r\n */\r\ninterface IEnhancedPromo {\r\n id: string;\r\n name: string;\r\n creative: string;\r\n position: string;\r\n}\r\n\r\n/**\r\n * Data layer object for Google Analytics\r\n */\r\ndeclare var dataLayer: any;\r\n\r\n/**\r\n * Měna\r\n */\r\ndeclare var currency: string;\r\n\r\n/**\r\n * Object containing impressions that can be seen on current page\r\n */\r\ndeclare var enhancedImpressions: {\r\n impressions: IEnhancedImpression[];\r\n};\r\n\r\n/**\r\n * Object containing promos that can be seen on current page\r\n */\r\ndeclare var enhancedPromos: {\r\n promos: IEnhancedPromo[];\r\n};\r\n\r\n/**\r\n * Object containing products that can be seen on current checkout page\r\n */\r\ndeclare var enhancedProducts: {\r\n products: IEnhancedProduct[];\r\n}\r\n\r\n/**\r\n * Objekt containing information about product on detail page\r\n */\r\ndeclare var enhancedProduct: IEnhancedProduct;\r\n\r\n/**\r\n * SiteConfig ID\r\n */\r\ndeclare var site: number;\r\n\r\n/**\r\n * ID jazyka\r\n */\r\ndeclare var langId: number;\r\n\r\n/**\r\n * Kliknutí na produkt => odešle informaci o produktu do GA\r\n * @param code Kód produktu\r\n * @param list Typ listu (typ přehledu zboží)\r\n * @param url Url na produkt\r\n */\r\nfunction productClick(code: string, list: string, url: string): void {\r\n if (!features.GoogleAnalyticsEnhancedEcommerce) {\r\n window.location.href = url;\r\n return;\r\n }\r\n\r\n const retVal = findImpression(code, list);\r\n\r\n if (retVal === null || typeof retVal === \"undefined\") {\r\n window.location.href = url;\r\n return;\r\n }\r\n //console.log({\r\n dataLayer.push({\r\n \"event\": \"productClick\",\r\n \"ecommerce\": {\r\n \"click\": {\r\n \"actionField\": {\r\n \"list\": list\r\n },\r\n \"products\": [{\r\n \"id\": retVal.id,\r\n \"name\": retVal.name,\r\n \"price\": retVal.price,\r\n \"brand\": retVal.brand,\r\n \"category\": retVal.category,\r\n \"position\": retVal.position\r\n }]\r\n }\r\n },\r\n 'eventCallback': () => {\r\n window.location.href = url;\r\n },\r\n 'eventTimeout': 2000\r\n });\r\n}\r\n\r\n/**\r\n * Kliknutí na banner => odešle informaci o banneru do GA\r\n * @param promoCode kód banneru\r\n* @param url Url na produkt\r\n*/\r\nfunction promoClick(promoCode: string, url: string, target: string): void {\r\n let numberOfCallBacks = 0;\r\n if (!features.GoogleAnalyticsEnhancedEcommerce) {\r\n if (typeof target !== \"undefined\" && target === \"_blank\") {\r\n window.open(url, target);\r\n }\r\n else {\r\n window.location.href = url;\r\n } \r\n \r\n return;\r\n }\r\n\r\n const promo = findPromotion(promoCode);\r\n\r\n if (promo === null || typeof promo === \"undefined\") {\r\n if (typeof target !== \"undefined\" && target === \"_blank\") {\r\n window.open(url, target);\r\n }\r\n else {\r\n window.location.href = url;\r\n }\r\n \r\n return;\r\n }\r\n\r\n //console.log({\r\n dataLayer.push({\r\n \"event\": \"promotionClick\",\r\n \"ecommerce\": {\r\n \"promoClick\": {\r\n \"promotions\": [{\r\n \"id\": promo.id,\r\n \"name\": promo.name,\r\n \"creative\": promo.creative,\r\n \"position\": promo.position\r\n }]\r\n }\r\n }\r\n ,\r\n 'eventCallback': () => {\r\n if (typeof target !== \"undefined\" && target === \"_blank\" && numberOfCallBacks === 0) {\r\n window.open(url, target);\r\n }\r\n else if (numberOfCallBacks === 0) {\r\n window.location.href = url;\r\n }\r\n numberOfCallBacks++;\r\n },\r\n 'eventTimeout': 2000\r\n });\r\n}\r\n\r\n/**\r\n * Kliknutí na nákup produktu z detailu\r\n * @param productParams parametry produktu\r\n */\r\nfunction productBuyDetail(productParams: string): void {\r\n if (!features.GoogleAnalyticsEnhancedEcommerce) {\r\n return;\r\n }\r\n\r\n productParams = `&${productParams}`;\r\n const code = GetParameterByName(\"code\", productParams);\r\n const count = parseInt(GetParameterByName(\"count\", productParams));\r\n\r\n if (typeof enhancedProduct === \"undefined\" || enhancedProduct === null) {\r\n return;\r\n }\r\n\r\n if (code !== enhancedProduct.id) {\r\n console.log(\"Neplatný kód.\");\r\n return;\r\n }\r\n \r\n //console.log({\r\n dataLayer.push({\r\n \"event\": \"addToCart\",\r\n \"ecommerce\": {\r\n \"currencyCode\": currency,\r\n \"add\": {\r\n \"products\": [{\r\n \"id\": code,\r\n \"name\": enhancedProduct.name,\r\n \"price\": enhancedProduct.price,\r\n \"brand\": enhancedProduct.brand,\r\n \"category\": enhancedProduct.category,\r\n \"variant\": enhancedProduct.variant,\r\n \"position\": 0,\r\n \"quantity\": count\r\n }]\r\n }\r\n }\r\n });\r\n}\r\n\r\n/**\r\n * Kliknutí na nákup z katalogu (univerzálního)\r\n * @param productParams parametry produktu\r\n * @param list seznam, ve kterém jsem kliknul\r\n */\r\nfunction productBuyCatalog(productParams: string, list: string): void {\r\n if (!features.GoogleAnalyticsEnhancedEcommerce) {\r\n return;\r\n }\r\n\r\n productParams = `&${productParams}`;\r\n const code = GetParameterByName(\"code\", productParams);\r\n const count = parseInt(GetParameterByName(\"count\", productParams));\r\n const retVal = findImpression(code, list);\r\n\r\n if (retVal === null || typeof retVal === \"undefined\") {\r\n return;\r\n }\r\n\r\n //console.log({\r\n dataLayer.push({\r\n \"event\": \"addToCart\",\r\n \"ecommerce\": {\r\n \"currencyCode\": currency,\r\n \"add\": {\r\n \"products\": [{\r\n \"id\": code,\r\n \"name\": retVal.name,\r\n \"price\": retVal.price,\r\n \"brand\": retVal.brand,\r\n \"category\": retVal.category,\r\n \"variant\": retVal.variant,\r\n \"position\": retVal.position,\r\n \"quantity\": count\r\n }]\r\n }\r\n }\r\n });\r\n}\r\n\r\n/**\r\n * Změna množství v košíku\r\n * @param code kód produktu\r\n * @param oldCount původní množství v košíku\r\n * @param newCount nové množství v košíku\r\n * @param callback callback function\r\n */\r\nfunction basketUpdateProduct(code: string, oldCount: number, newCount: number, callback: any): void {\r\n if (!features.GoogleAnalyticsEnhancedEcommerce) {\r\n callback();\r\n return;\r\n }\r\n\r\n const isAdd = newCount > oldCount;\r\n\r\n if (newCount === 0 || (oldCount + newCount) === 0) {\r\n basketRemoveProduct(code, callback);\r\n }\r\n \r\n const prod = findBasketProduct(code);\r\n\r\n if (prod === null || typeof prod === \"undefined\") {\r\n callback();\r\n return;\r\n }\r\n \r\n if (Math.abs(newCount - oldCount) === 0) {\r\n callback();\r\n return;\r\n }\r\n console.log(1);\r\n if (isAdd) {\r\n //console.log({\r\n dataLayer.push({\r\n \"event\": \"addToCart\",\r\n \"ecommerce\": {\r\n \"currencyCode\": currency,\r\n \"add\": {\r\n \"products\": [\r\n {\r\n \"id\": prod.id,\r\n \"name\": prod.name,\r\n \"price\": prod.price,\r\n \"brand\": prod.brand,\r\n \"category\": prod.category,\r\n \"variant\": prod.variant,\r\n \"position\": prod.position,\r\n \"quantity\": Math.abs(newCount - oldCount)\r\n }\r\n ]\r\n }\r\n },\r\n 'eventCallback': () => {\r\n console.log(\"posláno\");\r\n callback();\r\n return;\r\n },\r\n 'eventTimeout': 2000\r\n });\r\n } else {\r\n //console.log({\r\n dataLayer.push({\r\n \"event\": \"removeFromCart\",\r\n \"ecommerce\": {\r\n \"currencyCode\": currency,\r\n \"remove\": {\r\n \"products\": [\r\n {\r\n \"id\": prod.id,\r\n \"name\": prod.name,\r\n \"price\": prod.price,\r\n \"brand\": prod.brand,\r\n \"category\": prod.category,\r\n \"variant\": prod.variant,\r\n \"position\": prod.position,\r\n \"quantity\": Math.abs(newCount - oldCount)\r\n }\r\n ]\r\n }\r\n },\r\n 'eventCallback': () => {\r\n console.log(\"posláno\");\r\n callback();\r\n return;\r\n },\r\n 'eventTimeout': 2000\r\n });\r\n }\r\n}\r\n\r\n/**\r\n * Odebrání produktu z košíku\r\n * @param code kód produktu\r\n * @param callback callback function\r\n */\r\nfunction basketRemoveProduct(code: string, callback: any): void {\r\n if (!features.GoogleAnalyticsEnhancedEcommerce) {\r\n callback();\r\n return;\r\n }\r\n\r\n const prod = findBasketProduct(code);\r\n\r\n if (prod === null || typeof prod === \"undefined\") {\r\n callback();\r\n return;\r\n }\r\n\r\n if (prod.quantity === 0) {\r\n callback();\r\n return;\r\n }\r\n\r\n //console.log({\r\n dataLayer.push({\r\n \"event\": \"removeFromCart\",\r\n \"ecommerce\": {\r\n \"currencyCode\": currency,\r\n \"remove\": {\r\n \"products\": [{\r\n \"id\": prod.id,\r\n \"name\": prod.name,\r\n \"price\": prod.price,\r\n \"brand\": prod.brand,\r\n \"category\": prod.category,\r\n \"variant\": prod.variant,\r\n \"position\": prod.position,\r\n \"quantity\": prod.quantity\r\n }]\r\n }\r\n },\r\n 'eventCallback': () => {\r\n callback();\r\n return;\r\n },\r\n 'eventTimeout': 2000\r\n });\r\n}\r\n\r\n/**\r\n * Nalezení jedné impresse ze seznamu impressí\r\n * @param code kód hledaného produktu\r\n * @param list seznam, ve kterém se má hledat\r\n */\r\nfunction findImpression(code: string, list: string): IEnhancedImpression {\r\n let retVal: IEnhancedImpression = null;\r\n if (typeof enhancedImpressions === \"undefined\") {\r\n return null;\r\n }\r\n\r\n const imp = enhancedImpressions.impressions;\r\n let i = 0;\r\n\r\n while (typeof (imp[i]) != \"undefined\") {\r\n if (imp[i].id === code && imp[i].list === list) {\r\n retVal = imp[i];\r\n break;\r\n }\r\n i++;\r\n }\r\n\r\n if (retVal === null || typeof retVal === \"undefined\") {\r\n return null;\r\n }\r\n\r\n return retVal;\r\n}\r\n\r\n/**\r\n * Nalezení jednoho proma ze seznamu promotions\r\n * @param code kód promotion\r\n */\r\nfunction findPromotion(code: string): IEnhancedPromo {\r\n let retVal: IEnhancedPromo = null;\r\n\r\n if (typeof enhancedPromos === \"undefined\") {\r\n return null;\r\n }\r\n\r\n const promo = enhancedPromos.promos;\r\n let i = 0;\r\n\r\n while (typeof promo[i] != \"undefined\") {\r\n if (promo[i].id === code) {\r\n retVal = promo[i];\r\n break;\r\n }\r\n i++;\r\n }\r\n\r\n if (retVal === null || typeof retVal === \"undefined\") {\r\n return null;\r\n }\r\n\r\n return retVal;\r\n}\r\n\r\n/**\r\n * Nalezení jednoho produktu ze seznamu produktů\r\n * @param code kód produktu\r\n */\r\nfunction findBasketProduct(code: string): IEnhancedProduct {\r\n let retVal: IEnhancedProduct = null;\r\n\r\n if (typeof enhancedProducts === \"undefined\") {\r\n return null;\r\n }\r\n\r\n const prod = enhancedProducts.products;\r\n let i = 0;\r\n\r\n while (typeof (prod[i]) != \"undefined\") {\r\n if (prod[i].id === code) {\r\n retVal = prod[i];\r\n break;\r\n }\r\n i++;\r\n }\r\n\r\n if (retVal === null || typeof retVal === \"undefined\") {\r\n return null;\r\n }\r\n\r\n return retVal;\r\n}\r\n\r\nfunction enhancedEcommerceEvent() {\r\n $(\"[data-ga-action]\") \r\n .on(\"click\", function (e) {\r\n if (!features.GoogleAnalyticsEnhancedEcommerce) {\r\n return true;\r\n }\r\n\r\n const action = $(this).data(\"ga-action\");\r\n let productCode = \"\";\r\n let $el = null;\r\n\r\n switch (action) {\r\n case \"productClick\":\r\n e.preventDefault();\r\n $el = $(this);\r\n productCode = $el.data(\"ga-code\").toString();\r\n const prodUrl: string = $el.attr(\"href\");\r\n const list: string = $el.data(\"ga-list\");\r\n\r\n if (productCode === null ||\r\n list === null ||\r\n typeof (productCode) === \"undefined\" ||\r\n typeof (list) === \"undefined\") {\r\n return false;\r\n }\r\n\r\n productClick(productCode, list, prodUrl);\r\n break;\r\n case \"promotionClick\":\r\n e.preventDefault();\r\n $el = $(this);\r\n const promoCode: string = $el.data(\"ga-code\").toString();\r\n const promoUrl: string = $el.attr(\"href\");\r\n const promoTarget: string = $el.attr(\"target\");\r\n\r\n if (promoCode === null || typeof promoCode === \"undefined\") {\r\n return false;\r\n }\r\n\r\n promoClick(promoCode, promoUrl, promoTarget);\r\n break;\r\n //case \"basketRemove\":\r\n // $el = $(this);\r\n // const basketRemoveParam = $el.parent(\"form\").serialize();\r\n // const validation: string = $el.data(\"ga-confirm\").toString();\r\n // return basketRemoveProduct(basketRemoveParam, validation);\r\n //case \"basketUpdate\":\r\n // $el = $(this);\r\n // const basketUpdateParam = $el.parent(\"form\").serialize();\r\n // return basketUpdateProduct(basketUpdateParam);\r\n default:\r\n return true;\r\n }\r\n\r\n return true;\r\n });\r\n}\r\n\r\n$(document).ready(() => {\r\n enhancedEcommerceEvent();\r\n });"]}