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),

Reply via email to