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;