This is an automated email from the ASF dual-hosted git repository.

jkevan pushed a commit to branch UNOMI-668-form-event-building
in repository https://gitbox.apache.org/repos/asf/unomi-tracker.git

commit 96c274d0fee5021deb8a371aea598fb8e197f501
Author: Kevan <[email protected]>
AuthorDate: Thu Sep 15 18:31:44 2022 +0200

    UNOMI-668: add a small improvement to form event building to automatically 
extract form fields
---
 dist/apache-unomi-tracker.cjs.js | 15 ++++++++-------
 dist/apache-unomi-tracker.esm.js | 15 ++++++++-------
 dist/apache-unomi-tracker.umd.js | 15 ++++++++-------
 src/tracker/tracker.js           | 17 ++++++++---------
 4 files changed, 32 insertions(+), 30 deletions(-)

diff --git a/dist/apache-unomi-tracker.cjs.js b/dist/apache-unomi-tracker.cjs.js
index facc450..6b3f80a 100644
--- a/dist/apache-unomi-tracker.cjs.js
+++ b/dist/apache-unomi-tracker.cjs.js
@@ -529,10 +529,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 +1337,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..36249a3 100644
--- a/dist/apache-unomi-tracker.esm.js
+++ b/dist/apache-unomi-tracker.esm.js
@@ -521,10 +521,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 +1329,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..10862f3 100644
--- a/dist/apache-unomi-tracker.umd.js
+++ b/dist/apache-unomi-tracker.umd.js
@@ -2176,10 +2176,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 +2984,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..5d481d0 100644
--- a/src/tracker/tracker.js
+++ b/src/tracker/tracker.js
@@ -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);

Reply via email to