This is an automated email from the ASF dual-hosted git repository.
jkevan pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/unomi-tracker.git
The following commit(s) were added to refs/heads/main by this push:
new e4c5a1d UNOMI-668: add a small improvement to form event building to
automati… (#6)
e4c5a1d is described below
commit e4c5a1d2dbf899835ce66c3af42627c40abb2f72
Author: kevan Jahanshahi <[email protected]>
AuthorDate: Fri Sep 16 11:44:53 2022 +0200
UNOMI-668: add a small improvement to form event building to automati… (#6)
* UNOMI-668: add a small improvement to form event building to
automatically extract form fields
* UNOMI-668: add a small improvement to form event building to
automatically extract form fields
---
dist/apache-unomi-tracker.cjs.js | 51 ++++++++++++++++++++++++----------------
dist/apache-unomi-tracker.esm.js | 51 ++++++++++++++++++++++++----------------
dist/apache-unomi-tracker.umd.js | 51 ++++++++++++++++++++++++----------------
src/tracker/tracker.js | 43 +++++++++++++++++----------------
4 files changed, 114 insertions(+), 82 deletions(-)
diff --git a/dist/apache-unomi-tracker.cjs.js b/dist/apache-unomi-tracker.cjs.js
index facc450..12784c7 100644
--- a/dist/apache-unomi-tracker.cjs.js
+++ b/dist/apache-unomi-tracker.cjs.js
@@ -376,11 +376,13 @@ var newTracker = function newTracker() {
/**
* This function will send an event to Apache Unomi
* @param {object} event The event object to send, you can build it using
wem.buildEvent(eventType, target, source)
- * @param {function} successCallback will be executed in case of success
- * @param {function} errorCallback will be executed in case of error
+ * @param {function} successCallback optional, will be executed in case of
success
+ * @param {function} errorCallback optional, will be executed in case of
error
* @return {undefined}
*/
- collectEvent: function collectEvent(event, successCallback, errorCallback)
{
+ collectEvent: function collectEvent(event) {
+ var successCallback = arguments.length > 1 && arguments[1] !== undefined
? arguments[1] : undefined;
+ var errorCallback = arguments.length > 2 && arguments[2] !== undefined ?
arguments[2] : undefined;
wem.collectEvents({
events: [event]
}, successCallback, errorCallback);
@@ -390,13 +392,16 @@ var newTracker = function newTracker() {
* This function will send the events to Apache Unomi
*
* @param {object} events Javascript object { events: [event1, event2] }
- * @param {function} successCallback will be executed in case of success
- * @param {function} errorCallback will be executed in case of error
+ * @param {function} successCallback optional, will be executed in case of
success
+ * @param {function} errorCallback optional, will be executed in case of
error
* @return {undefined}
*/
- collectEvents: function collectEvents(events, successCallback,
errorCallback) {
+ collectEvents: function collectEvents(events) {
+ var successCallback = arguments.length > 1 && arguments[1] !== undefined
? arguments[1] : undefined;
+ var errorCallback = arguments.length > 2 && arguments[2] !== undefined ?
arguments[2] : undefined;
+
if (wem.fallback) {
- // in case of fallback we dont want to collect any events
+ // in case of fallback we don't want to collect any events
return;
}
@@ -419,11 +424,14 @@ var newTracker = function newTracker() {
* This function will build an event of type click and send it to Apache
Unomi
*
* @param {object} event javascript
- * @param {function} [successCallback] will be executed if case of success
- * @param {function} [errorCallback] will be executed if case of error
+ * @param {function} [successCallback] optional, will be executed if case
of success
+ * @param {function} [errorCallback] optional, will be executed if case of
error
* @return {undefined}
*/
- sendClickEvent: function sendClickEvent(event, successCallback,
errorCallback) {
+ sendClickEvent: function sendClickEvent(event) {
+ var successCallback = arguments.length > 1 && arguments[1] !== undefined
? arguments[1] : undefined;
+ var errorCallback = arguments.length > 2 && arguments[2] !== undefined ?
arguments[2] : undefined;
+
if (event.target.id || event.target.name) {
console.info('[WEM] Send click event');
var targetId = event.target.id ? event.target.id : event.target.name;
@@ -461,11 +469,13 @@ var newTracker = function newTracker() {
* This function will build an event of type video and send it to Apache
Unomi
*
* @param {object} event javascript
- * @param {function} [successCallback] will be executed if case of success
- * @param {function} [errorCallback] will be executed if case of error
+ * @param {function} [successCallback] optional, will be executed if case
of success
+ * @param {function} [errorCallback] optional, will be executed if case of
error
* @return {undefined}
*/
- sendVideoEvent: function sendVideoEvent(event, successCallback,
errorCallback) {
+ sendVideoEvent: function sendVideoEvent(event) {
+ var successCallback = arguments.length > 1 && arguments[1] !== undefined
? arguments[1] : undefined;
+ var errorCallback = arguments.length > 2 && arguments[2] !== undefined ?
arguments[2] : undefined;
console.info('[WEM] catching video event');
var videoEvent = wem.buildEvent('video',
wem.buildTarget(event.target.id, 'video', {
action: event.type
@@ -529,10 +539,16 @@ var newTracker = function newTracker() {
* This function return an event of type form
*
* @param {string} formName The HTML name of id of the form to use in the
target of the event
+ * @param {HTMLFormElement} form optional HTML form element, if provided
will be used to extract the form fields and populate the form event
* @returns {object} the form event
*/
buildFormEvent: function buildFormEvent(formName) {
- return wem.buildEvent('form', wem.buildTarget(formName, 'form'),
wem.buildSourcePage());
+ var form = arguments.length > 1 && arguments[1] !== undefined ?
arguments[1] : undefined;
+ var formEvent = wem.buildEvent('form', wem.buildTarget(formName,
'form'), wem.buildSourcePage());
+ formEvent.flattenedProperties = {
+ fields: form ? wem._extractFormData(form) : {}
+ };
+ return formEvent;
},
/**
@@ -1331,12 +1347,7 @@ var newTracker = function newTracker() {
eventCopy.initEvent('submit', event.bubbles, event.cancelable);
event.stopImmediatePropagation();
event.preventDefault();
- var formEvent = wem.buildFormEvent(formName); // merge form properties
with event properties
-
- formEvent.flattenedProperties = {
- fields: wem._extractFormData(form)
- };
- wem.collectEvent(formEvent, function () {
+ wem.collectEvent(wem.buildFormEvent(formName, form), function () {
form.removeEventListener('submit', wem._formSubmitEventListener,
true);
form.dispatchEvent(eventCopy);
diff --git a/dist/apache-unomi-tracker.esm.js b/dist/apache-unomi-tracker.esm.js
index 00c6ef6..8f1c756 100644
--- a/dist/apache-unomi-tracker.esm.js
+++ b/dist/apache-unomi-tracker.esm.js
@@ -368,11 +368,13 @@ var newTracker = function newTracker() {
/**
* This function will send an event to Apache Unomi
* @param {object} event The event object to send, you can build it using
wem.buildEvent(eventType, target, source)
- * @param {function} successCallback will be executed in case of success
- * @param {function} errorCallback will be executed in case of error
+ * @param {function} successCallback optional, will be executed in case of
success
+ * @param {function} errorCallback optional, will be executed in case of
error
* @return {undefined}
*/
- collectEvent: function collectEvent(event, successCallback, errorCallback)
{
+ collectEvent: function collectEvent(event) {
+ var successCallback = arguments.length > 1 && arguments[1] !== undefined
? arguments[1] : undefined;
+ var errorCallback = arguments.length > 2 && arguments[2] !== undefined ?
arguments[2] : undefined;
wem.collectEvents({
events: [event]
}, successCallback, errorCallback);
@@ -382,13 +384,16 @@ var newTracker = function newTracker() {
* This function will send the events to Apache Unomi
*
* @param {object} events Javascript object { events: [event1, event2] }
- * @param {function} successCallback will be executed in case of success
- * @param {function} errorCallback will be executed in case of error
+ * @param {function} successCallback optional, will be executed in case of
success
+ * @param {function} errorCallback optional, will be executed in case of
error
* @return {undefined}
*/
- collectEvents: function collectEvents(events, successCallback,
errorCallback) {
+ collectEvents: function collectEvents(events) {
+ var successCallback = arguments.length > 1 && arguments[1] !== undefined
? arguments[1] : undefined;
+ var errorCallback = arguments.length > 2 && arguments[2] !== undefined ?
arguments[2] : undefined;
+
if (wem.fallback) {
- // in case of fallback we dont want to collect any events
+ // in case of fallback we don't want to collect any events
return;
}
@@ -411,11 +416,14 @@ var newTracker = function newTracker() {
* This function will build an event of type click and send it to Apache
Unomi
*
* @param {object} event javascript
- * @param {function} [successCallback] will be executed if case of success
- * @param {function} [errorCallback] will be executed if case of error
+ * @param {function} [successCallback] optional, will be executed if case
of success
+ * @param {function} [errorCallback] optional, will be executed if case of
error
* @return {undefined}
*/
- sendClickEvent: function sendClickEvent(event, successCallback,
errorCallback) {
+ sendClickEvent: function sendClickEvent(event) {
+ var successCallback = arguments.length > 1 && arguments[1] !== undefined
? arguments[1] : undefined;
+ var errorCallback = arguments.length > 2 && arguments[2] !== undefined ?
arguments[2] : undefined;
+
if (event.target.id || event.target.name) {
console.info('[WEM] Send click event');
var targetId = event.target.id ? event.target.id : event.target.name;
@@ -453,11 +461,13 @@ var newTracker = function newTracker() {
* This function will build an event of type video and send it to Apache
Unomi
*
* @param {object} event javascript
- * @param {function} [successCallback] will be executed if case of success
- * @param {function} [errorCallback] will be executed if case of error
+ * @param {function} [successCallback] optional, will be executed if case
of success
+ * @param {function} [errorCallback] optional, will be executed if case of
error
* @return {undefined}
*/
- sendVideoEvent: function sendVideoEvent(event, successCallback,
errorCallback) {
+ sendVideoEvent: function sendVideoEvent(event) {
+ var successCallback = arguments.length > 1 && arguments[1] !== undefined
? arguments[1] : undefined;
+ var errorCallback = arguments.length > 2 && arguments[2] !== undefined ?
arguments[2] : undefined;
console.info('[WEM] catching video event');
var videoEvent = wem.buildEvent('video',
wem.buildTarget(event.target.id, 'video', {
action: event.type
@@ -521,10 +531,16 @@ var newTracker = function newTracker() {
* This function return an event of type form
*
* @param {string} formName The HTML name of id of the form to use in the
target of the event
+ * @param {HTMLFormElement} form optional HTML form element, if provided
will be used to extract the form fields and populate the form event
* @returns {object} the form event
*/
buildFormEvent: function buildFormEvent(formName) {
- return wem.buildEvent('form', wem.buildTarget(formName, 'form'),
wem.buildSourcePage());
+ var form = arguments.length > 1 && arguments[1] !== undefined ?
arguments[1] : undefined;
+ var formEvent = wem.buildEvent('form', wem.buildTarget(formName,
'form'), wem.buildSourcePage());
+ formEvent.flattenedProperties = {
+ fields: form ? wem._extractFormData(form) : {}
+ };
+ return formEvent;
},
/**
@@ -1323,12 +1339,7 @@ var newTracker = function newTracker() {
eventCopy.initEvent('submit', event.bubbles, event.cancelable);
event.stopImmediatePropagation();
event.preventDefault();
- var formEvent = wem.buildFormEvent(formName); // merge form properties
with event properties
-
- formEvent.flattenedProperties = {
- fields: wem._extractFormData(form)
- };
- wem.collectEvent(formEvent, function () {
+ wem.collectEvent(wem.buildFormEvent(formName, form), function () {
form.removeEventListener('submit', wem._formSubmitEventListener,
true);
form.dispatchEvent(eventCopy);
diff --git a/dist/apache-unomi-tracker.umd.js b/dist/apache-unomi-tracker.umd.js
index d4e3b88..3bd0c2d 100644
--- a/dist/apache-unomi-tracker.umd.js
+++ b/dist/apache-unomi-tracker.umd.js
@@ -2023,11 +2023,13 @@
/**
* This function will send an event to Apache Unomi
* @param {object} event The event object to send, you can build it
using wem.buildEvent(eventType, target, source)
- * @param {function} successCallback will be executed in case of success
- * @param {function} errorCallback will be executed in case of error
+ * @param {function} successCallback optional, will be executed in case
of success
+ * @param {function} errorCallback optional, will be executed in case of
error
* @return {undefined}
*/
- collectEvent: function collectEvent(event, successCallback,
errorCallback) {
+ collectEvent: function collectEvent(event) {
+ var successCallback = arguments.length > 1 && arguments[1] !==
undefined ? arguments[1] : undefined;
+ var errorCallback = arguments.length > 2 && arguments[2] !== undefined
? arguments[2] : undefined;
wem.collectEvents({
events: [event]
}, successCallback, errorCallback);
@@ -2037,13 +2039,16 @@
* This function will send the events to Apache Unomi
*
* @param {object} events Javascript object { events: [event1, event2] }
- * @param {function} successCallback will be executed in case of success
- * @param {function} errorCallback will be executed in case of error
+ * @param {function} successCallback optional, will be executed in case
of success
+ * @param {function} errorCallback optional, will be executed in case of
error
* @return {undefined}
*/
- collectEvents: function collectEvents(events, successCallback,
errorCallback) {
+ collectEvents: function collectEvents(events) {
+ var successCallback = arguments.length > 1 && arguments[1] !==
undefined ? arguments[1] : undefined;
+ var errorCallback = arguments.length > 2 && arguments[2] !== undefined
? arguments[2] : undefined;
+
if (wem.fallback) {
- // in case of fallback we dont want to collect any events
+ // in case of fallback we don't want to collect any events
return;
}
@@ -2066,11 +2071,14 @@
* This function will build an event of type click and send it to Apache
Unomi
*
* @param {object} event javascript
- * @param {function} [successCallback] will be executed if case of
success
- * @param {function} [errorCallback] will be executed if case of error
+ * @param {function} [successCallback] optional, will be executed if
case of success
+ * @param {function} [errorCallback] optional, will be executed if case
of error
* @return {undefined}
*/
- sendClickEvent: function sendClickEvent(event, successCallback,
errorCallback) {
+ sendClickEvent: function sendClickEvent(event) {
+ var successCallback = arguments.length > 1 && arguments[1] !==
undefined ? arguments[1] : undefined;
+ var errorCallback = arguments.length > 2 && arguments[2] !== undefined
? arguments[2] : undefined;
+
if (event.target.id || event.target.name) {
console.info('[WEM] Send click event');
var targetId = event.target.id ? event.target.id : event.target.name;
@@ -2108,11 +2116,13 @@
* This function will build an event of type video and send it to Apache
Unomi
*
* @param {object} event javascript
- * @param {function} [successCallback] will be executed if case of
success
- * @param {function} [errorCallback] will be executed if case of error
+ * @param {function} [successCallback] optional, will be executed if
case of success
+ * @param {function} [errorCallback] optional, will be executed if case
of error
* @return {undefined}
*/
- sendVideoEvent: function sendVideoEvent(event, successCallback,
errorCallback) {
+ sendVideoEvent: function sendVideoEvent(event) {
+ var successCallback = arguments.length > 1 && arguments[1] !==
undefined ? arguments[1] : undefined;
+ var errorCallback = arguments.length > 2 && arguments[2] !== undefined
? arguments[2] : undefined;
console.info('[WEM] catching video event');
var videoEvent = wem.buildEvent('video',
wem.buildTarget(event.target.id, 'video', {
action: event.type
@@ -2176,10 +2186,16 @@
* This function return an event of type form
*
* @param {string} formName The HTML name of id of the form to use in
the target of the event
+ * @param {HTMLFormElement} form optional HTML form element, if provided
will be used to extract the form fields and populate the form event
* @returns {object} the form event
*/
buildFormEvent: function buildFormEvent(formName) {
- return wem.buildEvent('form', wem.buildTarget(formName, 'form'),
wem.buildSourcePage());
+ var form = arguments.length > 1 && arguments[1] !== undefined ?
arguments[1] : undefined;
+ var formEvent = wem.buildEvent('form', wem.buildTarget(formName,
'form'), wem.buildSourcePage());
+ formEvent.flattenedProperties = {
+ fields: form ? wem._extractFormData(form) : {}
+ };
+ return formEvent;
},
/**
@@ -2978,12 +2994,7 @@
eventCopy.initEvent('submit', event.bubbles, event.cancelable);
event.stopImmediatePropagation();
event.preventDefault();
- var formEvent = wem.buildFormEvent(formName); // merge form
properties with event properties
-
- formEvent.flattenedProperties = {
- fields: wem._extractFormData(form)
- };
- wem.collectEvent(formEvent, function () {
+ wem.collectEvent(wem.buildFormEvent(formName, form), function () {
form.removeEventListener('submit', wem._formSubmitEventListener,
true);
form.dispatchEvent(eventCopy);
diff --git a/src/tracker/tracker.js b/src/tracker/tracker.js
index 1ffbf7b..7aa1674 100644
--- a/src/tracker/tracker.js
+++ b/src/tracker/tracker.js
@@ -352,11 +352,11 @@ export const newTracker = () => {
/**
* This function will send an event to Apache Unomi
* @param {object} event The event object to send, you can build it
using wem.buildEvent(eventType, target, source)
- * @param {function} successCallback will be executed in case of
success
- * @param {function} errorCallback will be executed in case of error
+ * @param {function} successCallback optional, will be executed in
case of success
+ * @param {function} errorCallback optional, will be executed in case
of error
* @return {undefined}
*/
- collectEvent: function (event, successCallback, errorCallback) {
+ collectEvent: function (event, successCallback = undefined,
errorCallback = undefined) {
wem.collectEvents({ events: [event] }, successCallback,
errorCallback);
},
@@ -364,13 +364,13 @@ export const newTracker = () => {
* This function will send the events to Apache Unomi
*
* @param {object} events Javascript object { events: [event1, event2]
}
- * @param {function} successCallback will be executed in case of
success
- * @param {function} errorCallback will be executed in case of error
+ * @param {function} successCallback optional, will be executed in
case of success
+ * @param {function} errorCallback optional, will be executed in case
of error
* @return {undefined}
*/
- collectEvents: function (events, successCallback, errorCallback) {
+ collectEvents: function (events, successCallback = undefined,
errorCallback = undefined) {
if (wem.fallback) {
- // in case of fallback we dont want to collect any events
+ // in case of fallback we don't want to collect any events
return;
}
@@ -393,11 +393,11 @@ export const newTracker = () => {
* This function will build an event of type click and send it to
Apache Unomi
*
* @param {object} event javascript
- * @param {function} [successCallback] will be executed if case of
success
- * @param {function} [errorCallback] will be executed if case of error
+ * @param {function} [successCallback] optional, will be executed if
case of success
+ * @param {function} [errorCallback] optional, will be executed if
case of error
* @return {undefined}
*/
- sendClickEvent: function (event, successCallback, errorCallback) {
+ sendClickEvent: function (event, successCallback = undefined,
errorCallback = undefined) {
if (event.target.id || event.target.name) {
console.info('[WEM] Send click event');
var targetId = event.target.id ? event.target.id :
event.target.name;
@@ -438,11 +438,11 @@ export const newTracker = () => {
* This function will build an event of type video and send it to
Apache Unomi
*
* @param {object} event javascript
- * @param {function} [successCallback] will be executed if case of
success
- * @param {function} [errorCallback] will be executed if case of error
+ * @param {function} [successCallback] optional, will be executed if
case of success
+ * @param {function} [errorCallback] optional, will be executed if
case of error
* @return {undefined}
*/
- sendVideoEvent: function (event, successCallback, errorCallback) {
+ sendVideoEvent: function (event, successCallback = undefined,
errorCallback = undefined) {
console.info('[WEM] catching video event');
var videoEvent = wem.buildEvent('video',
wem.buildTarget(event.target.id, 'video', { action: event.type }),
wem.buildSourcePage());
@@ -503,10 +503,15 @@ export const newTracker = () => {
* This function return an event of type form
*
* @param {string} formName The HTML name of id of the form to use in
the target of the event
+ * @param {HTMLFormElement} form optional HTML form element, if
provided will be used to extract the form fields and populate the form event
* @returns {object} the form event
*/
- buildFormEvent: function (formName) {
- return wem.buildEvent('form', wem.buildTarget(formName, 'form'),
wem.buildSourcePage());
+ buildFormEvent: function (formName, form = undefined) {
+ const formEvent = wem.buildEvent('form', wem.buildTarget(formName,
'form'), wem.buildSourcePage());
+ formEvent.flattenedProperties = {
+ fields: form ? wem._extractFormData(form) : {}
+ };
+ return formEvent;
},
/**
@@ -1221,13 +1226,7 @@ export const newTracker = () => {
event.stopImmediatePropagation();
event.preventDefault();
- var formEvent = wem.buildFormEvent(formName);
- // merge form properties with event properties
- formEvent.flattenedProperties = {
- fields: wem._extractFormData(form)
- };
-
- wem.collectEvent(formEvent,
+ wem.collectEvent(wem.buildFormEvent(formName, form),
function () {
form.removeEventListener('submit',
wem._formSubmitEventListener, true);
form.dispatchEvent(eventCopy);