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