This is an automated email from the ASF dual-hosted git repository.
jkevan pushed a commit to branch UNOMI-610-new-tracker
in repository https://gitbox.apache.org/repos/asf/unomi-tracker.git
The following commit(s) were added to refs/heads/UNOMI-610-new-tracker by this
push:
new 70a00a2 UNOMI-610: base tracker first draft
70a00a2 is described below
commit 70a00a2f4c3bef26187c8949977da538e02c7232
Author: Kevan <[email protected]>
AuthorDate: Mon Sep 5 22:43:13 2022 +0200
UNOMI-610: base tracker first draft
---
dist/apache-unomi-tracker.cjs.js | 169 +++++++++++++++++++--------------------
dist/apache-unomi-tracker.esm.js | 169 +++++++++++++++++++--------------------
dist/apache-unomi-tracker.umd.js | 169 +++++++++++++++++++--------------------
3 files changed, 249 insertions(+), 258 deletions(-)
diff --git a/dist/apache-unomi-tracker.cjs.js b/dist/apache-unomi-tracker.cjs.js
index 452270a..d76e25c 100644
--- a/dist/apache-unomi-tracker.cjs.js
+++ b/dist/apache-unomi-tracker.cjs.js
@@ -14,29 +14,22 @@ var newTracker = function newTracker() {
getLoadedContext: function getLoadedContext() {
return wem.cxs;
},
- enableWem: function enableWem() {
- wem._enableWem(true);
- },
- disableWem: function disableWem() {
- wem._enableWem(false);
+ getFormNamesToWatch: function getFormNamesToWatch() {
+ return wem.formNamesToWatch;
},
/**
- * This function initialize the context in the page it is called
internally and should not be called twice in the same page
+ * This function initialize the tracker
*
* @param {object} digitalData config of the tracker
*/
- init: function init(digitalData) {
- // added for external tracker
- // store digitalData in tracker instance instead of window.
- wem.digitalData = digitalData; // new conf:
-
+ initTracker: function initTracker(digitalData) {
+ wem.digitalData = digitalData;
wem.trackerProfileIdCookieName =
wem.digitalData.wemInitConfig.trackerProfileIdCookieName ?
wem.digitalData.wemInitConfig.trackerProfileIdCookieName : "wem-profile-id";
wem.trackerSessionIdCookieName =
wem.digitalData.wemInitConfig.trackerSessionIdCookieName ?
wem.digitalData.wemInitConfig.trackerSessionIdCookieName : "wem-session-id";
wem.activateWem = wem.digitalData.wemInitConfig.activateWem;
var _wem$digitalData$wemI = wem.digitalData.wemInitConfig,
contextServerUrl = _wem$digitalData$wemI.contextServerUrl,
- isPreview = _wem$digitalData$wemI.isPreview,
timeoutInMilliseconds = _wem$digitalData$wemI.timeoutInMilliseconds,
contextServerCookieName =
_wem$digitalData$wemI.contextServerCookieName;
wem.contextServerCookieName = contextServerCookieName;
@@ -53,12 +46,13 @@ var newTracker = function newTracker() {
console.warn('[WEM] empty sessionID, setting to null !');
wem.sessionID = null;
}
+ },
- if (isPreview) {
- // do not execute fallback for preview!
- return;
- }
-
+ /**
+ * This function start the tracker by loading the context in the page
+ */
+ startTracker: function startTracker() {
+ // Check before start
var cookieDisabled = !navigator.cookieEnabled;
var noSessionID = !wem.sessionID || wem.sessionID === '';
var crawlerDetected = navigator.userAgent;
@@ -73,7 +67,8 @@ var newTracker = function newTracker() {
wem._executeFallback('navigator cookie disabled: ' + cookieDisabled
+ ', no sessionID: ' + noSessionID + ', web crawler detected: ' +
crawlerDetected);
});
return;
- }
+ } // Base callback
+
wem._registerCallback(function () {
if (wem.cxs.profileId) {
@@ -82,76 +77,9 @@ var newTracker = function newTracker() {
if (!wem.cxs.profileId) {
wem.removeCookie(wem.trackerProfileIdCookieName);
- } // process tracked events
-
-
- var videoNamesToWatch = [];
- var clickToWatch = [];
-
- if (wem.cxs.trackedConditions && wem.cxs.trackedConditions.length > 0)
{
- for (var i = 0; i < wem.cxs.trackedConditions.length; i++) {
- switch (wem.cxs.trackedConditions[i].type) {
- case 'formEventCondition':
- if (wem.cxs.trackedConditions[i].parameterValues &&
wem.cxs.trackedConditions[i].parameterValues.formId) {
-
wem.formNamesToWatch.push(wem.cxs.trackedConditions[i].parameterValues.formId);
- }
-
- break;
-
- case 'videoViewEventCondition':
- if (wem.cxs.trackedConditions[i].parameterValues &&
wem.cxs.trackedConditions[i].parameterValues.videoId) {
-
videoNamesToWatch.push(wem.cxs.trackedConditions[i].parameterValues.videoId);
- }
-
- break;
-
- case 'clickOnLinkEventCondition':
- if (wem.cxs.trackedConditions[i].parameterValues &&
wem.cxs.trackedConditions[i].parameterValues.itemId) {
-
clickToWatch.push(wem.cxs.trackedConditions[i].parameterValues.itemId);
- }
-
- break;
- }
- }
}
- var forms = document.querySelectorAll('form');
-
- for (var formIndex = 0; formIndex < forms.length; formIndex++) {
- var form = forms.item(formIndex);
- var formName = form.getAttribute('name') ? form.getAttribute('name')
: form.getAttribute('id'); // test attribute data-form-id to not add a listener
on FF form
-
- if (formName && wem.formNamesToWatch.indexOf(formName) > -1 &&
form.getAttribute('data-form-id') == null) {
- // add submit listener on form that we need to watch only
- console.info('[WEM] watching form ' + formName);
- form.addEventListener('submit', wem._formSubmitEventListener,
true);
- }
- }
-
- for (var videoIndex = 0; videoIndex < videoNamesToWatch.length;
videoIndex++) {
- var videoName = videoNamesToWatch[videoIndex];
- var video = document.getElementById(videoName) ||
document.getElementById(wem._resolveId(videoName));
-
- if (video) {
- video.addEventListener('play', wem.sendVideoEvent);
- video.addEventListener('ended', wem.sendVideoEvent);
- console.info('[WEM] watching video ' + videoName);
- } else {
- console.warn('[WEM] unable to watch video ' + videoName + ', video
not found in the page');
- }
- }
-
- for (var clickIndex = 0; clickIndex < clickToWatch.length;
clickIndex++) {
- var clickIdName = clickToWatch[clickIndex];
- var click = document.getElementById(clickIdName) ||
document.getElementById(wem._resolveId(clickIdName)) ?
document.getElementById(clickIdName) ||
document.getElementById(wem._resolveId(clickIdName)) :
document.getElementsByName(clickIdName)[0];
-
- if (click) {
- click.addEventListener('click', wem.sendClickEvent);
- console.info('[WEM] watching click ' + clickIdName);
- } else {
- console.warn('[WEM] unable to watch click ' + clickIdName + ',
element not found in the page');
- }
- }
+ wem._registerListenersForTrackedConditions();
}); // Load the context once document is ready
@@ -790,6 +718,75 @@ var newTracker = function newTracker() {
/* Private functions under this line */
/*************************************/
+ _registerListenersForTrackedConditions: function
_registerListenersForTrackedConditions() {
+ var videoNamesToWatch = [];
+ var clickToWatch = [];
+
+ if (wem.cxs.trackedConditions && wem.cxs.trackedConditions.length > 0) {
+ for (var i = 0; i < wem.cxs.trackedConditions.length; i++) {
+ switch (wem.cxs.trackedConditions[i].type) {
+ case 'formEventCondition':
+ if (wem.cxs.trackedConditions[i].parameterValues &&
wem.cxs.trackedConditions[i].parameterValues.formId) {
+
wem.formNamesToWatch.push(wem.cxs.trackedConditions[i].parameterValues.formId);
+ }
+
+ break;
+
+ case 'videoViewEventCondition':
+ if (wem.cxs.trackedConditions[i].parameterValues &&
wem.cxs.trackedConditions[i].parameterValues.videoId) {
+
videoNamesToWatch.push(wem.cxs.trackedConditions[i].parameterValues.videoId);
+ }
+
+ break;
+
+ case 'clickOnLinkEventCondition':
+ if (wem.cxs.trackedConditions[i].parameterValues &&
wem.cxs.trackedConditions[i].parameterValues.itemId) {
+
clickToWatch.push(wem.cxs.trackedConditions[i].parameterValues.itemId);
+ }
+
+ break;
+ }
+ }
+ }
+
+ var forms = document.querySelectorAll('form');
+
+ for (var formIndex = 0; formIndex < forms.length; formIndex++) {
+ var form = forms.item(formIndex);
+ var formName = form.getAttribute('name') ? form.getAttribute('name') :
form.getAttribute('id'); // test attribute data-form-id to not add a listener
on FF form
+
+ if (formName && wem.formNamesToWatch.indexOf(formName) > -1 &&
form.getAttribute('data-form-id') == null) {
+ // add submit listener on form that we need to watch only
+ console.info('[WEM] watching form ' + formName);
+ form.addEventListener('submit', wem._formSubmitEventListener, true);
+ }
+ }
+
+ for (var videoIndex = 0; videoIndex < videoNamesToWatch.length;
videoIndex++) {
+ var videoName = videoNamesToWatch[videoIndex];
+ var video = document.getElementById(videoName) ||
document.getElementById(wem._resolveId(videoName));
+
+ if (video) {
+ video.addEventListener('play', wem.sendVideoEvent);
+ video.addEventListener('ended', wem.sendVideoEvent);
+ console.info('[WEM] watching video ' + videoName);
+ } else {
+ console.warn('[WEM] unable to watch video ' + videoName + ', video
not found in the page');
+ }
+ }
+
+ for (var clickIndex = 0; clickIndex < clickToWatch.length; clickIndex++)
{
+ var clickIdName = clickToWatch[clickIndex];
+ var click = document.getElementById(clickIdName) ||
document.getElementById(wem._resolveId(clickIdName)) ?
document.getElementById(clickIdName) ||
document.getElementById(wem._resolveId(clickIdName)) :
document.getElementsByName(clickIdName)[0];
+
+ if (click) {
+ click.addEventListener('click', wem.sendClickEvent);
+ console.info('[WEM] watching click ' + clickIdName);
+ } else {
+ console.warn('[WEM] unable to watch click ' + clickIdName + ',
element not found in the page');
+ }
+ }
+ },
_checkUncompleteRegisteredEvents: function
_checkUncompleteRegisteredEvents() {
if (wem.digitalData && wem.digitalData.events) {
var _iterator = _createForOfIteratorHelper(wem.digitalData.events),
diff --git a/dist/apache-unomi-tracker.esm.js b/dist/apache-unomi-tracker.esm.js
index fcfa360..945562f 100644
--- a/dist/apache-unomi-tracker.esm.js
+++ b/dist/apache-unomi-tracker.esm.js
@@ -10,29 +10,22 @@ var newTracker = function newTracker() {
getLoadedContext: function getLoadedContext() {
return wem.cxs;
},
- enableWem: function enableWem() {
- wem._enableWem(true);
- },
- disableWem: function disableWem() {
- wem._enableWem(false);
+ getFormNamesToWatch: function getFormNamesToWatch() {
+ return wem.formNamesToWatch;
},
/**
- * This function initialize the context in the page it is called
internally and should not be called twice in the same page
+ * This function initialize the tracker
*
* @param {object} digitalData config of the tracker
*/
- init: function init(digitalData) {
- // added for external tracker
- // store digitalData in tracker instance instead of window.
- wem.digitalData = digitalData; // new conf:
-
+ initTracker: function initTracker(digitalData) {
+ wem.digitalData = digitalData;
wem.trackerProfileIdCookieName =
wem.digitalData.wemInitConfig.trackerProfileIdCookieName ?
wem.digitalData.wemInitConfig.trackerProfileIdCookieName : "wem-profile-id";
wem.trackerSessionIdCookieName =
wem.digitalData.wemInitConfig.trackerSessionIdCookieName ?
wem.digitalData.wemInitConfig.trackerSessionIdCookieName : "wem-session-id";
wem.activateWem = wem.digitalData.wemInitConfig.activateWem;
var _wem$digitalData$wemI = wem.digitalData.wemInitConfig,
contextServerUrl = _wem$digitalData$wemI.contextServerUrl,
- isPreview = _wem$digitalData$wemI.isPreview,
timeoutInMilliseconds = _wem$digitalData$wemI.timeoutInMilliseconds,
contextServerCookieName =
_wem$digitalData$wemI.contextServerCookieName;
wem.contextServerCookieName = contextServerCookieName;
@@ -49,12 +42,13 @@ var newTracker = function newTracker() {
console.warn('[WEM] empty sessionID, setting to null !');
wem.sessionID = null;
}
+ },
- if (isPreview) {
- // do not execute fallback for preview!
- return;
- }
-
+ /**
+ * This function start the tracker by loading the context in the page
+ */
+ startTracker: function startTracker() {
+ // Check before start
var cookieDisabled = !navigator.cookieEnabled;
var noSessionID = !wem.sessionID || wem.sessionID === '';
var crawlerDetected = navigator.userAgent;
@@ -69,7 +63,8 @@ var newTracker = function newTracker() {
wem._executeFallback('navigator cookie disabled: ' + cookieDisabled
+ ', no sessionID: ' + noSessionID + ', web crawler detected: ' +
crawlerDetected);
});
return;
- }
+ } // Base callback
+
wem._registerCallback(function () {
if (wem.cxs.profileId) {
@@ -78,76 +73,9 @@ var newTracker = function newTracker() {
if (!wem.cxs.profileId) {
wem.removeCookie(wem.trackerProfileIdCookieName);
- } // process tracked events
-
-
- var videoNamesToWatch = [];
- var clickToWatch = [];
-
- if (wem.cxs.trackedConditions && wem.cxs.trackedConditions.length > 0)
{
- for (var i = 0; i < wem.cxs.trackedConditions.length; i++) {
- switch (wem.cxs.trackedConditions[i].type) {
- case 'formEventCondition':
- if (wem.cxs.trackedConditions[i].parameterValues &&
wem.cxs.trackedConditions[i].parameterValues.formId) {
-
wem.formNamesToWatch.push(wem.cxs.trackedConditions[i].parameterValues.formId);
- }
-
- break;
-
- case 'videoViewEventCondition':
- if (wem.cxs.trackedConditions[i].parameterValues &&
wem.cxs.trackedConditions[i].parameterValues.videoId) {
-
videoNamesToWatch.push(wem.cxs.trackedConditions[i].parameterValues.videoId);
- }
-
- break;
-
- case 'clickOnLinkEventCondition':
- if (wem.cxs.trackedConditions[i].parameterValues &&
wem.cxs.trackedConditions[i].parameterValues.itemId) {
-
clickToWatch.push(wem.cxs.trackedConditions[i].parameterValues.itemId);
- }
-
- break;
- }
- }
}
- var forms = document.querySelectorAll('form');
-
- for (var formIndex = 0; formIndex < forms.length; formIndex++) {
- var form = forms.item(formIndex);
- var formName = form.getAttribute('name') ? form.getAttribute('name')
: form.getAttribute('id'); // test attribute data-form-id to not add a listener
on FF form
-
- if (formName && wem.formNamesToWatch.indexOf(formName) > -1 &&
form.getAttribute('data-form-id') == null) {
- // add submit listener on form that we need to watch only
- console.info('[WEM] watching form ' + formName);
- form.addEventListener('submit', wem._formSubmitEventListener,
true);
- }
- }
-
- for (var videoIndex = 0; videoIndex < videoNamesToWatch.length;
videoIndex++) {
- var videoName = videoNamesToWatch[videoIndex];
- var video = document.getElementById(videoName) ||
document.getElementById(wem._resolveId(videoName));
-
- if (video) {
- video.addEventListener('play', wem.sendVideoEvent);
- video.addEventListener('ended', wem.sendVideoEvent);
- console.info('[WEM] watching video ' + videoName);
- } else {
- console.warn('[WEM] unable to watch video ' + videoName + ', video
not found in the page');
- }
- }
-
- for (var clickIndex = 0; clickIndex < clickToWatch.length;
clickIndex++) {
- var clickIdName = clickToWatch[clickIndex];
- var click = document.getElementById(clickIdName) ||
document.getElementById(wem._resolveId(clickIdName)) ?
document.getElementById(clickIdName) ||
document.getElementById(wem._resolveId(clickIdName)) :
document.getElementsByName(clickIdName)[0];
-
- if (click) {
- click.addEventListener('click', wem.sendClickEvent);
- console.info('[WEM] watching click ' + clickIdName);
- } else {
- console.warn('[WEM] unable to watch click ' + clickIdName + ',
element not found in the page');
- }
- }
+ wem._registerListenersForTrackedConditions();
}); // Load the context once document is ready
@@ -786,6 +714,75 @@ var newTracker = function newTracker() {
/* Private functions under this line */
/*************************************/
+ _registerListenersForTrackedConditions: function
_registerListenersForTrackedConditions() {
+ var videoNamesToWatch = [];
+ var clickToWatch = [];
+
+ if (wem.cxs.trackedConditions && wem.cxs.trackedConditions.length > 0) {
+ for (var i = 0; i < wem.cxs.trackedConditions.length; i++) {
+ switch (wem.cxs.trackedConditions[i].type) {
+ case 'formEventCondition':
+ if (wem.cxs.trackedConditions[i].parameterValues &&
wem.cxs.trackedConditions[i].parameterValues.formId) {
+
wem.formNamesToWatch.push(wem.cxs.trackedConditions[i].parameterValues.formId);
+ }
+
+ break;
+
+ case 'videoViewEventCondition':
+ if (wem.cxs.trackedConditions[i].parameterValues &&
wem.cxs.trackedConditions[i].parameterValues.videoId) {
+
videoNamesToWatch.push(wem.cxs.trackedConditions[i].parameterValues.videoId);
+ }
+
+ break;
+
+ case 'clickOnLinkEventCondition':
+ if (wem.cxs.trackedConditions[i].parameterValues &&
wem.cxs.trackedConditions[i].parameterValues.itemId) {
+
clickToWatch.push(wem.cxs.trackedConditions[i].parameterValues.itemId);
+ }
+
+ break;
+ }
+ }
+ }
+
+ var forms = document.querySelectorAll('form');
+
+ for (var formIndex = 0; formIndex < forms.length; formIndex++) {
+ var form = forms.item(formIndex);
+ var formName = form.getAttribute('name') ? form.getAttribute('name') :
form.getAttribute('id'); // test attribute data-form-id to not add a listener
on FF form
+
+ if (formName && wem.formNamesToWatch.indexOf(formName) > -1 &&
form.getAttribute('data-form-id') == null) {
+ // add submit listener on form that we need to watch only
+ console.info('[WEM] watching form ' + formName);
+ form.addEventListener('submit', wem._formSubmitEventListener, true);
+ }
+ }
+
+ for (var videoIndex = 0; videoIndex < videoNamesToWatch.length;
videoIndex++) {
+ var videoName = videoNamesToWatch[videoIndex];
+ var video = document.getElementById(videoName) ||
document.getElementById(wem._resolveId(videoName));
+
+ if (video) {
+ video.addEventListener('play', wem.sendVideoEvent);
+ video.addEventListener('ended', wem.sendVideoEvent);
+ console.info('[WEM] watching video ' + videoName);
+ } else {
+ console.warn('[WEM] unable to watch video ' + videoName + ', video
not found in the page');
+ }
+ }
+
+ for (var clickIndex = 0; clickIndex < clickToWatch.length; clickIndex++)
{
+ var clickIdName = clickToWatch[clickIndex];
+ var click = document.getElementById(clickIdName) ||
document.getElementById(wem._resolveId(clickIdName)) ?
document.getElementById(clickIdName) ||
document.getElementById(wem._resolveId(clickIdName)) :
document.getElementsByName(clickIdName)[0];
+
+ if (click) {
+ click.addEventListener('click', wem.sendClickEvent);
+ console.info('[WEM] watching click ' + clickIdName);
+ } else {
+ console.warn('[WEM] unable to watch click ' + clickIdName + ',
element not found in the page');
+ }
+ }
+ },
_checkUncompleteRegisteredEvents: function
_checkUncompleteRegisteredEvents() {
if (wem.digitalData && wem.digitalData.events) {
var _iterator = _createForOfIteratorHelper(wem.digitalData.events),
diff --git a/dist/apache-unomi-tracker.umd.js b/dist/apache-unomi-tracker.umd.js
index 98fe1da..effe0c4 100644
--- a/dist/apache-unomi-tracker.umd.js
+++ b/dist/apache-unomi-tracker.umd.js
@@ -1656,29 +1656,22 @@
getLoadedContext: function getLoadedContext() {
return wem.cxs;
},
- enableWem: function enableWem() {
- wem._enableWem(true);
- },
- disableWem: function disableWem() {
- wem._enableWem(false);
+ getFormNamesToWatch: function getFormNamesToWatch() {
+ return wem.formNamesToWatch;
},
/**
- * This function initialize the context in the page it is called
internally and should not be called twice in the same page
+ * This function initialize the tracker
*
* @param {object} digitalData config of the tracker
*/
- init: function init(digitalData) {
- // added for external tracker
- // store digitalData in tracker instance instead of window.
- wem.digitalData = digitalData; // new conf:
-
+ initTracker: function initTracker(digitalData) {
+ wem.digitalData = digitalData;
wem.trackerProfileIdCookieName =
wem.digitalData.wemInitConfig.trackerProfileIdCookieName ?
wem.digitalData.wemInitConfig.trackerProfileIdCookieName : "wem-profile-id";
wem.trackerSessionIdCookieName =
wem.digitalData.wemInitConfig.trackerSessionIdCookieName ?
wem.digitalData.wemInitConfig.trackerSessionIdCookieName : "wem-session-id";
wem.activateWem = wem.digitalData.wemInitConfig.activateWem;
var _wem$digitalData$wemI = wem.digitalData.wemInitConfig,
contextServerUrl = _wem$digitalData$wemI.contextServerUrl,
- isPreview = _wem$digitalData$wemI.isPreview,
timeoutInMilliseconds =
_wem$digitalData$wemI.timeoutInMilliseconds,
contextServerCookieName =
_wem$digitalData$wemI.contextServerCookieName;
wem.contextServerCookieName = contextServerCookieName;
@@ -1695,12 +1688,13 @@
console.warn('[WEM] empty sessionID, setting to null !');
wem.sessionID = null;
}
+ },
- if (isPreview) {
- // do not execute fallback for preview!
- return;
- }
-
+ /**
+ * This function start the tracker by loading the context in the page
+ */
+ startTracker: function startTracker() {
+ // Check before start
var cookieDisabled = !navigator.cookieEnabled;
var noSessionID = !wem.sessionID || wem.sessionID === '';
var crawlerDetected = navigator.userAgent;
@@ -1715,7 +1709,8 @@
wem._executeFallback('navigator cookie disabled: ' +
cookieDisabled + ', no sessionID: ' + noSessionID + ', web crawler detected: '
+ crawlerDetected);
});
return;
- }
+ } // Base callback
+
wem._registerCallback(function () {
if (wem.cxs.profileId) {
@@ -1724,76 +1719,9 @@
if (!wem.cxs.profileId) {
wem.removeCookie(wem.trackerProfileIdCookieName);
- } // process tracked events
-
-
- var videoNamesToWatch = [];
- var clickToWatch = [];
-
- if (wem.cxs.trackedConditions && wem.cxs.trackedConditions.length >
0) {
- for (var i = 0; i < wem.cxs.trackedConditions.length; i++) {
- switch (wem.cxs.trackedConditions[i].type) {
- case 'formEventCondition':
- if (wem.cxs.trackedConditions[i].parameterValues &&
wem.cxs.trackedConditions[i].parameterValues.formId) {
-
wem.formNamesToWatch.push(wem.cxs.trackedConditions[i].parameterValues.formId);
- }
-
- break;
-
- case 'videoViewEventCondition':
- if (wem.cxs.trackedConditions[i].parameterValues &&
wem.cxs.trackedConditions[i].parameterValues.videoId) {
-
videoNamesToWatch.push(wem.cxs.trackedConditions[i].parameterValues.videoId);
- }
-
- break;
-
- case 'clickOnLinkEventCondition':
- if (wem.cxs.trackedConditions[i].parameterValues &&
wem.cxs.trackedConditions[i].parameterValues.itemId) {
-
clickToWatch.push(wem.cxs.trackedConditions[i].parameterValues.itemId);
- }
-
- break;
- }
- }
}
- var forms = document.querySelectorAll('form');
-
- for (var formIndex = 0; formIndex < forms.length; formIndex++) {
- var form = forms.item(formIndex);
- var formName = form.getAttribute('name') ?
form.getAttribute('name') : form.getAttribute('id'); // test attribute
data-form-id to not add a listener on FF form
-
- if (formName && wem.formNamesToWatch.indexOf(formName) > -1 &&
form.getAttribute('data-form-id') == null) {
- // add submit listener on form that we need to watch only
- console.info('[WEM] watching form ' + formName);
- form.addEventListener('submit', wem._formSubmitEventListener,
true);
- }
- }
-
- for (var videoIndex = 0; videoIndex < videoNamesToWatch.length;
videoIndex++) {
- var videoName = videoNamesToWatch[videoIndex];
- var video = document.getElementById(videoName) ||
document.getElementById(wem._resolveId(videoName));
-
- if (video) {
- video.addEventListener('play', wem.sendVideoEvent);
- video.addEventListener('ended', wem.sendVideoEvent);
- console.info('[WEM] watching video ' + videoName);
- } else {
- console.warn('[WEM] unable to watch video ' + videoName + ',
video not found in the page');
- }
- }
-
- for (var clickIndex = 0; clickIndex < clickToWatch.length;
clickIndex++) {
- var clickIdName = clickToWatch[clickIndex];
- var click = document.getElementById(clickIdName) ||
document.getElementById(wem._resolveId(clickIdName)) ?
document.getElementById(clickIdName) ||
document.getElementById(wem._resolveId(clickIdName)) :
document.getElementsByName(clickIdName)[0];
-
- if (click) {
- click.addEventListener('click', wem.sendClickEvent);
- console.info('[WEM] watching click ' + clickIdName);
- } else {
- console.warn('[WEM] unable to watch click ' + clickIdName + ',
element not found in the page');
- }
- }
+ wem._registerListenersForTrackedConditions();
}); // Load the context once document is ready
@@ -2432,6 +2360,75 @@
/* Private functions under this line */
/*************************************/
+ _registerListenersForTrackedConditions: function
_registerListenersForTrackedConditions() {
+ var videoNamesToWatch = [];
+ var clickToWatch = [];
+
+ if (wem.cxs.trackedConditions && wem.cxs.trackedConditions.length > 0)
{
+ for (var i = 0; i < wem.cxs.trackedConditions.length; i++) {
+ switch (wem.cxs.trackedConditions[i].type) {
+ case 'formEventCondition':
+ if (wem.cxs.trackedConditions[i].parameterValues &&
wem.cxs.trackedConditions[i].parameterValues.formId) {
+
wem.formNamesToWatch.push(wem.cxs.trackedConditions[i].parameterValues.formId);
+ }
+
+ break;
+
+ case 'videoViewEventCondition':
+ if (wem.cxs.trackedConditions[i].parameterValues &&
wem.cxs.trackedConditions[i].parameterValues.videoId) {
+
videoNamesToWatch.push(wem.cxs.trackedConditions[i].parameterValues.videoId);
+ }
+
+ break;
+
+ case 'clickOnLinkEventCondition':
+ if (wem.cxs.trackedConditions[i].parameterValues &&
wem.cxs.trackedConditions[i].parameterValues.itemId) {
+
clickToWatch.push(wem.cxs.trackedConditions[i].parameterValues.itemId);
+ }
+
+ break;
+ }
+ }
+ }
+
+ var forms = document.querySelectorAll('form');
+
+ for (var formIndex = 0; formIndex < forms.length; formIndex++) {
+ var form = forms.item(formIndex);
+ var formName = form.getAttribute('name') ? form.getAttribute('name')
: form.getAttribute('id'); // test attribute data-form-id to not add a listener
on FF form
+
+ if (formName && wem.formNamesToWatch.indexOf(formName) > -1 &&
form.getAttribute('data-form-id') == null) {
+ // add submit listener on form that we need to watch only
+ console.info('[WEM] watching form ' + formName);
+ form.addEventListener('submit', wem._formSubmitEventListener,
true);
+ }
+ }
+
+ for (var videoIndex = 0; videoIndex < videoNamesToWatch.length;
videoIndex++) {
+ var videoName = videoNamesToWatch[videoIndex];
+ var video = document.getElementById(videoName) ||
document.getElementById(wem._resolveId(videoName));
+
+ if (video) {
+ video.addEventListener('play', wem.sendVideoEvent);
+ video.addEventListener('ended', wem.sendVideoEvent);
+ console.info('[WEM] watching video ' + videoName);
+ } else {
+ console.warn('[WEM] unable to watch video ' + videoName + ', video
not found in the page');
+ }
+ }
+
+ for (var clickIndex = 0; clickIndex < clickToWatch.length;
clickIndex++) {
+ var clickIdName = clickToWatch[clickIndex];
+ var click = document.getElementById(clickIdName) ||
document.getElementById(wem._resolveId(clickIdName)) ?
document.getElementById(clickIdName) ||
document.getElementById(wem._resolveId(clickIdName)) :
document.getElementsByName(clickIdName)[0];
+
+ if (click) {
+ click.addEventListener('click', wem.sendClickEvent);
+ console.info('[WEM] watching click ' + clickIdName);
+ } else {
+ console.warn('[WEM] unable to watch click ' + clickIdName + ',
element not found in the page');
+ }
+ }
+ },
_checkUncompleteRegisteredEvents: function
_checkUncompleteRegisteredEvents() {
if (wem.digitalData && wem.digitalData.events) {
var _iterator = _createForOfIteratorHelper(wem.digitalData.events),