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 3d93453  UNOMI-610: base tracker first draft
3d93453 is described below

commit 3d93453650ad9bb42402363d11a9f136f0a93674
Author: Kevan <[email protected]>
AuthorDate: Tue Sep 6 18:16:12 2022 +0200

    UNOMI-610: base tracker first draft
---
 dist/apache-unomi-tracker.cjs.js | 39 ++++++++++++++++++++++++++------------
 dist/apache-unomi-tracker.esm.js | 39 ++++++++++++++++++++++++++------------
 dist/apache-unomi-tracker.umd.js | 39 ++++++++++++++++++++++++++------------
 src/tracker/tracker.js           | 41 +++++++++++++++++++++++++++-------------
 4 files changed, 109 insertions(+), 49 deletions(-)

diff --git a/dist/apache-unomi-tracker.cjs.js b/dist/apache-unomi-tracker.cjs.js
index 0833e8b..181f073 100644
--- a/dist/apache-unomi-tracker.cjs.js
+++ b/dist/apache-unomi-tracker.cjs.js
@@ -83,7 +83,7 @@ var newTracker = function newTracker() {
         }
 
         wem._registerListenersForTrackedConditions();
-      }); // Load the context once document is ready
+      }, 'Default tracker callback', 0); // Load the context once document is 
ready
 
 
       document.addEventListener('DOMContentLoaded', function () {
@@ -990,6 +990,9 @@ var newTracker = function newTracker() {
       }
     },
     _registerCallback: function _registerCallback(onLoadCallback) {
+      var name = arguments.length > 1 && arguments[1] !== undefined ? 
arguments[1] : "";
+      var priority = arguments.length > 2 && arguments[2] !== undefined ? 
arguments[2] : 0;
+
       if (wem.digitalData) {
         if (wem.cxs) {
           console.info('[WEM] digitalData object loaded, calling on load 
callback immediately and registering update callback...');
@@ -1002,7 +1005,11 @@ var newTracker = function newTracker() {
 
           if (onLoadCallback) {
             wem.digitalData.loadCallbacks = wem.digitalData.loadCallbacks || 
[];
-            wem.digitalData.loadCallbacks.push(onLoadCallback);
+            wem.digitalData.loadCallbacks.push({
+              priority: priority,
+              name: name,
+              execute: onLoadCallback
+            });
           }
         }
       } else {
@@ -1011,7 +1018,11 @@ var newTracker = function newTracker() {
 
         if (onLoadCallback) {
           wem.digitalData.loadCallbacks = [];
-          wem.digitalData.loadCallbacks.push(onLoadCallback);
+          wem.digitalData.loadCallbacks.push({
+            priority: priority,
+            name: name,
+            execute: onLoadCallback
+          });
         }
       }
     },
@@ -1055,11 +1066,7 @@ var newTracker = function newTracker() {
       if (wem.digitalData.loadCallbacks && 
wem.digitalData.loadCallbacks.length > 0) {
         console.info('[WEM] Found context server load callbacks, calling 
now...');
 
-        if (wem.digitalData.loadCallbacks) {
-          for (var i = 0; i < wem.digitalData.loadCallbacks.length; i++) {
-            wem.digitalData.loadCallbacks[i](wem.digitalData);
-          }
-        }
+        wem._executeLoadCallbacks(wem.digitalData);
 
         if (wem.digitalData.personalizationCallback) {
           for (var j = 0; j < wem.digitalData.personalizationCallback.length; 
j++) {
@@ -1072,13 +1079,11 @@ var newTracker = function newTracker() {
       window.wemLoaded = true;
     },
     _executeFallback: function _executeFallback(logMessage) {
-      console.warn('[WEM] execute fallback' + (logMessage ? ': ' + logMessage 
: ''));
+      console.warn('[WEM] execute fallback' + (logMessage ? ': ' + logMessage 
: '') + ', load fallback callbacks, calling now...');
       wem.fallback = true;
       wem.cxs = {};
 
-      for (var index in wem.digitalData.loadCallbacks) {
-        wem.digitalData.loadCallbacks[index]();
-      }
+      wem._executeLoadCallbacks(undefined);
 
       if (wem.digitalData.personalizationCallback) {
         for (var i = 0; i < wem.digitalData.personalizationCallback.length; 
i++) {
@@ -1086,6 +1091,16 @@ var newTracker = function newTracker() {
         }
       }
     },
+    _executeLoadCallbacks: function _executeLoadCallbacks(callbackParam) {
+      if (wem.digitalData.loadCallbacks && 
wem.digitalData.loadCallbacks.length > 0) {
+        wem.digitalData.loadCallbacks.sort(function (a, b) {
+          return a.priority - b.priority;
+        }).forEach(function (loadCallback) {
+          console.warn('[WEM] executing context load callback: ' + 
(loadCallback.name ? loadCallback.name : 'callback without name'));
+          loadCallback.execute(callbackParam);
+        });
+      }
+    },
     _processReferrer: function _processReferrer() {
       var referrerURL = wem.digitalData.page.pageInfo.referringURL || 
document.referrer;
       var sameDomainReferrer = false;
diff --git a/dist/apache-unomi-tracker.esm.js b/dist/apache-unomi-tracker.esm.js
index 887c8db..b32a944 100644
--- a/dist/apache-unomi-tracker.esm.js
+++ b/dist/apache-unomi-tracker.esm.js
@@ -75,7 +75,7 @@ var newTracker = function newTracker() {
         }
 
         wem._registerListenersForTrackedConditions();
-      }); // Load the context once document is ready
+      }, 'Default tracker callback', 0); // Load the context once document is 
ready
 
 
       document.addEventListener('DOMContentLoaded', function () {
@@ -982,6 +982,9 @@ var newTracker = function newTracker() {
       }
     },
     _registerCallback: function _registerCallback(onLoadCallback) {
+      var name = arguments.length > 1 && arguments[1] !== undefined ? 
arguments[1] : "";
+      var priority = arguments.length > 2 && arguments[2] !== undefined ? 
arguments[2] : 0;
+
       if (wem.digitalData) {
         if (wem.cxs) {
           console.info('[WEM] digitalData object loaded, calling on load 
callback immediately and registering update callback...');
@@ -994,7 +997,11 @@ var newTracker = function newTracker() {
 
           if (onLoadCallback) {
             wem.digitalData.loadCallbacks = wem.digitalData.loadCallbacks || 
[];
-            wem.digitalData.loadCallbacks.push(onLoadCallback);
+            wem.digitalData.loadCallbacks.push({
+              priority: priority,
+              name: name,
+              execute: onLoadCallback
+            });
           }
         }
       } else {
@@ -1003,7 +1010,11 @@ var newTracker = function newTracker() {
 
         if (onLoadCallback) {
           wem.digitalData.loadCallbacks = [];
-          wem.digitalData.loadCallbacks.push(onLoadCallback);
+          wem.digitalData.loadCallbacks.push({
+            priority: priority,
+            name: name,
+            execute: onLoadCallback
+          });
         }
       }
     },
@@ -1047,11 +1058,7 @@ var newTracker = function newTracker() {
       if (wem.digitalData.loadCallbacks && 
wem.digitalData.loadCallbacks.length > 0) {
         console.info('[WEM] Found context server load callbacks, calling 
now...');
 
-        if (wem.digitalData.loadCallbacks) {
-          for (var i = 0; i < wem.digitalData.loadCallbacks.length; i++) {
-            wem.digitalData.loadCallbacks[i](wem.digitalData);
-          }
-        }
+        wem._executeLoadCallbacks(wem.digitalData);
 
         if (wem.digitalData.personalizationCallback) {
           for (var j = 0; j < wem.digitalData.personalizationCallback.length; 
j++) {
@@ -1064,13 +1071,11 @@ var newTracker = function newTracker() {
       window.wemLoaded = true;
     },
     _executeFallback: function _executeFallback(logMessage) {
-      console.warn('[WEM] execute fallback' + (logMessage ? ': ' + logMessage 
: ''));
+      console.warn('[WEM] execute fallback' + (logMessage ? ': ' + logMessage 
: '') + ', load fallback callbacks, calling now...');
       wem.fallback = true;
       wem.cxs = {};
 
-      for (var index in wem.digitalData.loadCallbacks) {
-        wem.digitalData.loadCallbacks[index]();
-      }
+      wem._executeLoadCallbacks(undefined);
 
       if (wem.digitalData.personalizationCallback) {
         for (var i = 0; i < wem.digitalData.personalizationCallback.length; 
i++) {
@@ -1078,6 +1083,16 @@ var newTracker = function newTracker() {
         }
       }
     },
+    _executeLoadCallbacks: function _executeLoadCallbacks(callbackParam) {
+      if (wem.digitalData.loadCallbacks && 
wem.digitalData.loadCallbacks.length > 0) {
+        wem.digitalData.loadCallbacks.sort(function (a, b) {
+          return a.priority - b.priority;
+        }).forEach(function (loadCallback) {
+          console.warn('[WEM] executing context load callback: ' + 
(loadCallback.name ? loadCallback.name : 'callback without name'));
+          loadCallback.execute(callbackParam);
+        });
+      }
+    },
     _processReferrer: function _processReferrer() {
       var referrerURL = wem.digitalData.page.pageInfo.referringURL || 
document.referrer;
       var sameDomainReferrer = false;
diff --git a/dist/apache-unomi-tracker.umd.js b/dist/apache-unomi-tracker.umd.js
index 4f2f9e2..a49d1d5 100644
--- a/dist/apache-unomi-tracker.umd.js
+++ b/dist/apache-unomi-tracker.umd.js
@@ -1730,7 +1730,7 @@
           }
 
           wem._registerListenersForTrackedConditions();
-        }); // Load the context once document is ready
+        }, 'Default tracker callback', 0); // Load the context once document 
is ready
 
 
         document.addEventListener('DOMContentLoaded', function () {
@@ -2637,6 +2637,9 @@
         }
       },
       _registerCallback: function _registerCallback(onLoadCallback) {
+        var name = arguments.length > 1 && arguments[1] !== undefined ? 
arguments[1] : "";
+        var priority = arguments.length > 2 && arguments[2] !== undefined ? 
arguments[2] : 0;
+
         if (wem.digitalData) {
           if (wem.cxs) {
             console.info('[WEM] digitalData object loaded, calling on load 
callback immediately and registering update callback...');
@@ -2649,7 +2652,11 @@
 
             if (onLoadCallback) {
               wem.digitalData.loadCallbacks = wem.digitalData.loadCallbacks || 
[];
-              wem.digitalData.loadCallbacks.push(onLoadCallback);
+              wem.digitalData.loadCallbacks.push({
+                priority: priority,
+                name: name,
+                execute: onLoadCallback
+              });
             }
           }
         } else {
@@ -2658,7 +2665,11 @@
 
           if (onLoadCallback) {
             wem.digitalData.loadCallbacks = [];
-            wem.digitalData.loadCallbacks.push(onLoadCallback);
+            wem.digitalData.loadCallbacks.push({
+              priority: priority,
+              name: name,
+              execute: onLoadCallback
+            });
           }
         }
       },
@@ -2702,11 +2713,7 @@
         if (wem.digitalData.loadCallbacks && 
wem.digitalData.loadCallbacks.length > 0) {
           console.info('[WEM] Found context server load callbacks, calling 
now...');
 
-          if (wem.digitalData.loadCallbacks) {
-            for (var i = 0; i < wem.digitalData.loadCallbacks.length; i++) {
-              wem.digitalData.loadCallbacks[i](wem.digitalData);
-            }
-          }
+          wem._executeLoadCallbacks(wem.digitalData);
 
           if (wem.digitalData.personalizationCallback) {
             for (var j = 0; j < 
wem.digitalData.personalizationCallback.length; j++) {
@@ -2719,13 +2726,11 @@
         window.wemLoaded = true;
       },
       _executeFallback: function _executeFallback(logMessage) {
-        console.warn('[WEM] execute fallback' + (logMessage ? ': ' + 
logMessage : ''));
+        console.warn('[WEM] execute fallback' + (logMessage ? ': ' + 
logMessage : '') + ', load fallback callbacks, calling now...');
         wem.fallback = true;
         wem.cxs = {};
 
-        for (var index in wem.digitalData.loadCallbacks) {
-          wem.digitalData.loadCallbacks[index]();
-        }
+        wem._executeLoadCallbacks(undefined);
 
         if (wem.digitalData.personalizationCallback) {
           for (var i = 0; i < wem.digitalData.personalizationCallback.length; 
i++) {
@@ -2733,6 +2738,16 @@
           }
         }
       },
+      _executeLoadCallbacks: function _executeLoadCallbacks(callbackParam) {
+        if (wem.digitalData.loadCallbacks && 
wem.digitalData.loadCallbacks.length > 0) {
+          wem.digitalData.loadCallbacks.sort(function (a, b) {
+            return a.priority - b.priority;
+          }).forEach(function (loadCallback) {
+            console.warn('[WEM] executing context load callback: ' + 
(loadCallback.name ? loadCallback.name : 'callback without name'));
+            loadCallback.execute(callbackParam);
+          });
+        }
+      },
       _processReferrer: function _processReferrer() {
         var referrerURL = wem.digitalData.page.pageInfo.referringURL || 
document.referrer;
         var sameDomainReferrer = false;
diff --git a/src/tracker/tracker.js b/src/tracker/tracker.js
index 239388a..c495d57 100644
--- a/src/tracker/tracker.js
+++ b/src/tracker/tracker.js
@@ -62,7 +62,7 @@ export const newTracker = () => {
                 }
 
                 wem._registerListenersForTrackedConditions()
-            });
+            }, 'Default tracker callback', 0);
 
             // Load the context once document is ready
             document.addEventListener('DOMContentLoaded', function () {
@@ -897,7 +897,7 @@ export const newTracker = () => {
             }
         },
 
-        _registerCallback: function (onLoadCallback) {
+        _registerCallback: function (onLoadCallback, name = "", priority = 0) {
             if (wem.digitalData) {
                 if (wem.cxs) {
                     console.info('[WEM] digitalData object loaded, calling on 
load callback immediately and registering update callback...');
@@ -908,7 +908,11 @@ export const newTracker = () => {
                     console.info('[WEM] digitalData object present but not 
loaded, registering load callback...');
                     if (onLoadCallback) {
                         wem.digitalData.loadCallbacks = 
wem.digitalData.loadCallbacks || [];
-                        wem.digitalData.loadCallbacks.push(onLoadCallback);
+                        wem.digitalData.loadCallbacks.push({
+                            priority: priority,
+                            name: name,
+                            execute: onLoadCallback
+                        });
                     }
                 }
             } else {
@@ -916,7 +920,11 @@ export const newTracker = () => {
                 wem.digitalData = {};
                 if (onLoadCallback) {
                     wem.digitalData.loadCallbacks = [];
-                    wem.digitalData.loadCallbacks.push(onLoadCallback);
+                    wem.digitalData.loadCallbacks.push({
+                        priority: priority,
+                        name: name,
+                        execute: onLoadCallback
+                    });
                 }
             }
         },
@@ -956,11 +964,8 @@ export const newTracker = () => {
 
             if (wem.digitalData.loadCallbacks && 
wem.digitalData.loadCallbacks.length > 0) {
                 console.info('[WEM] Found context server load callbacks, 
calling now...');
-                if (wem.digitalData.loadCallbacks) {
-                    for (var i = 0; i < wem.digitalData.loadCallbacks.length; 
i++) {
-                        wem.digitalData.loadCallbacks[i](wem.digitalData);
-                    }
-                }
+                wem._executeLoadCallbacks(wem.digitalData);
+
                 if (wem.digitalData.personalizationCallback) {
                     for (var j = 0; j < 
wem.digitalData.personalizationCallback.length; j++) {
                         
wem.digitalData.personalizationCallback[j].callback(wem.cxs.personalizations[wem.digitalData.personalizationCallback[j].personalization.id]);
@@ -972,12 +977,11 @@ export const newTracker = () => {
         },
 
         _executeFallback: function (logMessage) {
-            console.warn('[WEM] execute fallback' + (logMessage ? (': ' + 
logMessage) : ''));
+            console.warn('[WEM] execute fallback' + (logMessage ? (': ' + 
logMessage) : '') + ', load fallback callbacks, calling now...');
             wem.fallback = true;
             wem.cxs = {};
-            for (var index in wem.digitalData.loadCallbacks) {
-                wem.digitalData.loadCallbacks[index]();
-            }
+            wem._executeLoadCallbacks(undefined);
+
             if (wem.digitalData.personalizationCallback) {
                 for (var i = 0; i < 
wem.digitalData.personalizationCallback.length; i++) {
                     
wem.digitalData.personalizationCallback[i].callback([wem.digitalData.personalizationCallback[i].personalization.strategyOptions.fallback]);
@@ -985,6 +989,17 @@ export const newTracker = () => {
             }
         },
 
+        _executeLoadCallbacks: function(callbackParam) {
+            if (wem.digitalData.loadCallbacks && 
wem.digitalData.loadCallbacks.length > 0) {
+                wem.digitalData.loadCallbacks
+                    .sort((a, b) => a.priority - b.priority)
+                    .forEach(loadCallback => {
+                        console.warn('[WEM] executing context load callback: ' 
+ (loadCallback.name ? loadCallback.name : 'callback without name'));
+                        loadCallback.execute(callbackParam)
+                    });
+            }
+        },
+
         _processReferrer: function () {
             var referrerURL = wem.digitalData.page.pageInfo.referringURL || 
document.referrer;
             var sameDomainReferrer = false;

Reply via email to