plasma-banner-scripts
Version:
<!-- Generated by documentation.js. Update this documentation by updating the source code. -->
135 lines (113 loc) • 5.36 kB
HTML
<html lang="en">
<head>
<meta charset="utf-8">
<title>JSDoc: Source: initiators/tagManager.js</title>
<script src="scripts/prettify/prettify.js"> </script>
<script src="scripts/prettify/lang-css.js"> </script>
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css">
<link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
</head>
<body>
<div id="main">
<h1 class="page-title">Source: initiators/tagManager.js</h1>
<section>
<article>
<pre class="prettyprint source linenums"><code>/**
* @memberof Initiators/Analytics
* @constructor TagManager
* @param {Object} args - all arguments
* @example
* const tagManager = new TagManager({});
*/
export default class TagManager {
args = null;
constructor(args) {
window.dataLayer = window.dataLayer || [];
this.args = args;
}
/**
* @method TagManager#onClickBanner
* @memberof Initiators/Analytics
* @description Tag manager event click banner
* @example
* const tagManager = new TagManager({});
* tagManager.onClickBanner();
*/
onClickBanner() {
const previousLayers = window.dataLayer.filter((layer) => {
if (typeof layer.ecommerce === 'undefined') return false;
if (typeof layer.ecommerce.promoClick === 'undefined') return false;
if (typeof layer.ecommerce.promoClick.promotions === 'undefined') return false;
const promotions = Array.isArray(layer.ecommerce.promoClick.promotions)
&& layer.ecommerce.promoClick.promotions
.filter(promotion => promotion.id === this.args.name);
return !!promotions.length;
});
if (previousLayers.length) return;
window.dataLayer.push({
event: 'promotionClick',
ecommerce: {
promoClick: {
promotions: [{
id: this.args.name, // Название рекламы http://prntscr.com/iioa7j
name: 'JS Banner',
creative: this.args.link, // URL на который ведет баннер или Start Chat
position: 'slot1',
}],
},
},
});
}
/**
* @method TagManager#onShowBanner
* @memberof Initiators/Analytics
* @description Tag manager event show banner
* @example
* const tagManager = new TagManager({});
* tagManager.onShowBanner();
*/
onShowBanner() {
const previousLayers = window.dataLayer.filter((layer) => {
if (typeof layer.ecommerce === 'undefined') return false;
if (typeof layer.ecommerce.promoView === 'undefined') return false;
if (typeof layer.ecommerce.promoView.promotions === 'undefined') return false;
const promotions = Array.isArray(layer.ecommerce.promoView.promotions)
&& layer.ecommerce.promoView.promotions
.filter(promotion => promotion.id === this.args.name);
return !!promotions.length;
});
if (previousLayers.length) return;
window.dataLayer.push({
event: 'promotionView',
ecommerce: {
promoView: {
promotions: [{
id: this.args.name, // Название рекламы
name: 'JS Banner',
creative: this.args.link, // URL на который ведет баннер или Start Chat
position: 'slot1',
}],
},
},
});
}
}
</code></pre>
</article>
</section>
</div>
<nav>
<h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="Initiators.Promotion.html">Promotion</a></li><li><a href="Initiators_Analytics.TagManager.html">TagManager</a></li><li><a href="Initiators_FlipClock.FlipClockInitiator.html">FlipClockInitiator</a></li><li><a href="Initiators_UI.UiBanner.html">UiBanner</a></li><li><a href="Initiators_UI.UiPopup.html">UiPopup</a></li><li><a href="Utils.Parameters.html">Parameters</a></li></ul><h3>Namespaces</h3><ul><li><a href="Initiators.html">Initiators</a></li><li><a href="Initiators_Analytics.html">Initiators/Analytics</a></li><li><a href="Initiators_FlipClock.html">Initiators/FlipClock</a></li><li><a href="Initiators_FlipClock_Faces.html">Initiators/FlipClock/Faces</a></li><li><a href="Initiators_FlipClock_Language.html">Initiators/FlipClock/Language</a></li><li><a href="Initiators_UI.html">Initiators/UI</a></li><li><a href="Main.html">Main</a></li><li><a href="Utils.html">Utils</a></li></ul><h3>Global</h3><ul><li><a href="global.html#addClass">addClass</a></li><li><a href="global.html#attr">attr</a></li><li><a href="global.html#data">data</a></li><li><a href="global.html#dispatch">dispatch</a></li><li><a href="global.html#get">get</a></li><li><a href="global.html#getAll">getAll</a></li><li><a href="global.html#hasClass">hasClass</a></li><li><a href="global.html#prepend">prepend</a></li><li><a href="global.html#removeAttribute">removeAttribute</a></li><li><a href="global.html#removeClass">removeClass</a></li></ul>
</nav>
<br class="clear">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.5</a> on Tue Jun 18 2019 11:40:32 GMT+0300 (Eastern European Summer Time)
</footer>
<script> prettyPrint(); </script>
<script src="scripts/linenumber.js"> </script>
</body>
</html>