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

jsinovassinnaik pushed a commit to branch UNOMI-822
in repository https://gitbox.apache.org/repos/asf/unomi-tracker.git

commit e25e15b033ea9ba4ff9bca65b1935bf847c2513f
Author: jsinovassin <[email protected]>
AuthorDate: Thu Apr 11 18:45:54 2024 +0200

    UNOMI-822: handle the case of search forms
---
 dist/apache-unomi-tracker.cjs.js     | 34 +++++++++++++++++++++++++++++++++-
 dist/apache-unomi-tracker.cjs.js.map |  2 +-
 dist/apache-unomi-tracker.esm.js     | 34 +++++++++++++++++++++++++++++++++-
 dist/apache-unomi-tracker.esm.js.map |  2 +-
 dist/apache-unomi-tracker.umd.js     | 34 +++++++++++++++++++++++++++++++++-
 dist/apache-unomi-tracker.umd.js.map |  2 +-
 src/apache-unomi-tracker.js          | 25 +++++++++++++++++++++++--
 7 files changed, 125 insertions(+), 8 deletions(-)

diff --git a/dist/apache-unomi-tracker.cjs.js b/dist/apache-unomi-tracker.cjs.js
index 0b71c7a..d45cd23 100644
--- a/dist/apache-unomi-tracker.cjs.js
+++ b/dist/apache-unomi-tracker.cjs.js
@@ -46,6 +46,7 @@ var newTracker = function newTracker() {
       wem.browserGeneratedSessionSuffix = 
wem.digitalData.wemInitConfig.browserGeneratedSessionSuffix ? 
wem.digitalData.wemInitConfig.browserGeneratedSessionSuffix : '';
       wem.disableTrackedConditionsListeners = 
wem.digitalData.wemInitConfig.disableTrackedConditionsListeners;
       wem.activateWem = wem.digitalData.wemInitConfig.activateWem;
+      wem.searchForms = wem.digitalData.wemInitConfig.searchForms ? 
wem.digitalData.wemInitConfig.searchForms : [];
       var _wem$digitalData$wemI = wem.digitalData.wemInitConfig,
           contextServerUrl = _wem$digitalData$wemI.contextServerUrl,
           timeoutInMilliseconds = _wem$digitalData$wemI.timeoutInMilliseconds,
@@ -571,6 +572,25 @@ var newTracker = function newTracker() {
       };
       return formEvent;
     },
+    buildSearchEvent: function buildSearchEvent(formName) {
+      var _formEvent$flattenedP, _formEvent$flattenedP2;
+
+      var form = arguments.length > 1 && arguments[1] !== undefined ? 
arguments[1] : undefined;
+      var searchFormInfo = arguments.length > 2 ? arguments[2] : undefined;
+      var formEvent = wem.buildEvent('search', wem.buildTarget(formName, 
'search'), wem.buildSourcePage());
+      formEvent.flattenedProperties = {
+        fields: form ? wem._extractFormData(form) : {}
+      };
+      var language = ((_formEvent$flattenedP = 
formEvent.flattenedProperties.fields[searchFormInfo.languageFieldName]) === 
null || _formEvent$flattenedP === void 0 ? void 0 : 
_formEvent$flattenedP.values) || formEvent.source.properties.pageInfo.language;
+      var term = (_formEvent$flattenedP2 = 
formEvent.flattenedProperties.fields[searchFormInfo.termFieldName]) === null || 
_formEvent$flattenedP2 === void 0 ? void 0 : 
_formEvent$flattenedP2.toLowerCase();
+      formEvent.properties = {
+        originForm: formName,
+        language: language,
+        keyword: term,
+        origin: formEvent.source.properties.pageInfo.pagePath
+      };
+      return formEvent;
+    },
 
     /**
      * This function return the source object for a source of type page
@@ -940,6 +960,12 @@ var newTracker = function newTracker() {
         }
       }
 
+      if (wem.searchForms) {
+        wem.formNamesToWatch = 
wem.formNamesToWatch.concat(wem.searchForms.map(function (form) {
+          return form.formNameOrId;
+        }));
+      }
+
       var forms = document.querySelectorAll('form');
 
       for (var formIndex = 0; formIndex < forms.length; formIndex++) {
@@ -1391,13 +1417,19 @@ var newTracker = function newTracker() {
       var formName = form.getAttribute('name') ? form.getAttribute('name') : 
form.getAttribute('id');
 
       if (formName && wem.formNamesToWatch.indexOf(formName) > -1) {
+        var _wem$searchForms;
+
         console.info('[WEM] catching form ' + formName);
         var eventCopy = document.createEvent('Event'); // Define that the 
event name is 'build'.
 
         eventCopy.initEvent('submit', event.bubbles, event.cancelable);
         event.stopImmediatePropagation();
         event.preventDefault();
-        wem.collectEvent(wem.buildFormEvent(formName, form), function () {
+        var searchFormInfo = (_wem$searchForms = wem.searchForms) === null || 
_wem$searchForms === void 0 ? void 0 : _wem$searchForms.find(function 
(searchForm) {
+          return searchForm.formNameOrId === formName;
+        });
+        var formEvent = searchFormInfo ? wem.buildSearchEvent(formName, form, 
searchFormInfo) : wem.buildFormEvent(formName, form);
+        wem.collectEvent(formEvent, function () {
           form.removeEventListener('submit', wem._formSubmitEventListener, 
true);
           form.dispatchEvent(eventCopy);
 
diff --git a/dist/apache-unomi-tracker.cjs.js.map 
b/dist/apache-unomi-tracker.cjs.js.map
index 71a920a..4cf189a 100644
--- a/dist/apache-unomi-tracker.cjs.js.map
+++ b/dist/apache-unomi-tracker.cjs.js.map
@@ -1 +1 @@
-{"version":3,"file":"apache-unomi-tracker.cjs.js","sources":["../src/apache-unomi-tracker.js","../src/index.js"],"sourcesContent":["/*\n
 * Licensed to the Apache Software Foundation (ASF) under one or more\n * 
contributor license agreements.  See the NOTICE file distributed with\n * this 
work for additional information regarding copyright ownership.\n * The ASF 
licenses this file to You under the Apache License, Version 2.0\n * (the 
\"License\"); you may not use this file except in compl [...]
\ No newline at end of file
+{"version":3,"file":"apache-unomi-tracker.cjs.js","sources":["../src/apache-unomi-tracker.js","../src/index.js"],"sourcesContent":["/*\n
 * Licensed to the Apache Software Foundation (ASF) under one or more\n * 
contributor license agreements.  See the NOTICE file distributed with\n * this 
work for additional information regarding copyright ownership.\n * The ASF 
licenses this file to You under the Apache License, Version 2.0\n * (the 
\"License\"); you may not use this file except in compl [...]
\ No newline at end of file
diff --git a/dist/apache-unomi-tracker.esm.js b/dist/apache-unomi-tracker.esm.js
index a01cd80..c10ad3b 100644
--- a/dist/apache-unomi-tracker.esm.js
+++ b/dist/apache-unomi-tracker.esm.js
@@ -38,6 +38,7 @@ var newTracker = function newTracker() {
       wem.browserGeneratedSessionSuffix = 
wem.digitalData.wemInitConfig.browserGeneratedSessionSuffix ? 
wem.digitalData.wemInitConfig.browserGeneratedSessionSuffix : '';
       wem.disableTrackedConditionsListeners = 
wem.digitalData.wemInitConfig.disableTrackedConditionsListeners;
       wem.activateWem = wem.digitalData.wemInitConfig.activateWem;
+      wem.searchForms = wem.digitalData.wemInitConfig.searchForms ? 
wem.digitalData.wemInitConfig.searchForms : [];
       var _wem$digitalData$wemI = wem.digitalData.wemInitConfig,
           contextServerUrl = _wem$digitalData$wemI.contextServerUrl,
           timeoutInMilliseconds = _wem$digitalData$wemI.timeoutInMilliseconds,
@@ -563,6 +564,25 @@ var newTracker = function newTracker() {
       };
       return formEvent;
     },
+    buildSearchEvent: function buildSearchEvent(formName) {
+      var _formEvent$flattenedP, _formEvent$flattenedP2;
+
+      var form = arguments.length > 1 && arguments[1] !== undefined ? 
arguments[1] : undefined;
+      var searchFormInfo = arguments.length > 2 ? arguments[2] : undefined;
+      var formEvent = wem.buildEvent('search', wem.buildTarget(formName, 
'search'), wem.buildSourcePage());
+      formEvent.flattenedProperties = {
+        fields: form ? wem._extractFormData(form) : {}
+      };
+      var language = ((_formEvent$flattenedP = 
formEvent.flattenedProperties.fields[searchFormInfo.languageFieldName]) === 
null || _formEvent$flattenedP === void 0 ? void 0 : 
_formEvent$flattenedP.values) || formEvent.source.properties.pageInfo.language;
+      var term = (_formEvent$flattenedP2 = 
formEvent.flattenedProperties.fields[searchFormInfo.termFieldName]) === null || 
_formEvent$flattenedP2 === void 0 ? void 0 : 
_formEvent$flattenedP2.toLowerCase();
+      formEvent.properties = {
+        originForm: formName,
+        language: language,
+        keyword: term,
+        origin: formEvent.source.properties.pageInfo.pagePath
+      };
+      return formEvent;
+    },
 
     /**
      * This function return the source object for a source of type page
@@ -932,6 +952,12 @@ var newTracker = function newTracker() {
         }
       }
 
+      if (wem.searchForms) {
+        wem.formNamesToWatch = 
wem.formNamesToWatch.concat(wem.searchForms.map(function (form) {
+          return form.formNameOrId;
+        }));
+      }
+
       var forms = document.querySelectorAll('form');
 
       for (var formIndex = 0; formIndex < forms.length; formIndex++) {
@@ -1383,13 +1409,19 @@ var newTracker = function newTracker() {
       var formName = form.getAttribute('name') ? form.getAttribute('name') : 
form.getAttribute('id');
 
       if (formName && wem.formNamesToWatch.indexOf(formName) > -1) {
+        var _wem$searchForms;
+
         console.info('[WEM] catching form ' + formName);
         var eventCopy = document.createEvent('Event'); // Define that the 
event name is 'build'.
 
         eventCopy.initEvent('submit', event.bubbles, event.cancelable);
         event.stopImmediatePropagation();
         event.preventDefault();
-        wem.collectEvent(wem.buildFormEvent(formName, form), function () {
+        var searchFormInfo = (_wem$searchForms = wem.searchForms) === null || 
_wem$searchForms === void 0 ? void 0 : _wem$searchForms.find(function 
(searchForm) {
+          return searchForm.formNameOrId === formName;
+        });
+        var formEvent = searchFormInfo ? wem.buildSearchEvent(formName, form, 
searchFormInfo) : wem.buildFormEvent(formName, form);
+        wem.collectEvent(formEvent, function () {
           form.removeEventListener('submit', wem._formSubmitEventListener, 
true);
           form.dispatchEvent(eventCopy);
 
diff --git a/dist/apache-unomi-tracker.esm.js.map 
b/dist/apache-unomi-tracker.esm.js.map
index 6fcbee0..d454ae6 100644
--- a/dist/apache-unomi-tracker.esm.js.map
+++ b/dist/apache-unomi-tracker.esm.js.map
@@ -1 +1 @@
-{"version":3,"file":"apache-unomi-tracker.esm.js","sources":["../src/apache-unomi-tracker.js","../src/index.js"],"sourcesContent":["/*\n
 * Licensed to the Apache Software Foundation (ASF) under one or more\n * 
contributor license agreements.  See the NOTICE file distributed with\n * this 
work for additional information regarding copyright ownership.\n * The ASF 
licenses this file to You under the Apache License, Version 2.0\n * (the 
\"License\"); you may not use this file except in compl [...]
\ No newline at end of file
+{"version":3,"file":"apache-unomi-tracker.esm.js","sources":["../src/apache-unomi-tracker.js","../src/index.js"],"sourcesContent":["/*\n
 * Licensed to the Apache Software Foundation (ASF) under one or more\n * 
contributor license agreements.  See the NOTICE file distributed with\n * this 
work for additional information regarding copyright ownership.\n * The ASF 
licenses this file to You under the Apache License, Version 2.0\n * (the 
\"License\"); you may not use this file except in compl [...]
\ No newline at end of file
diff --git a/dist/apache-unomi-tracker.umd.js b/dist/apache-unomi-tracker.umd.js
index bad3cac..4704183 100644
--- a/dist/apache-unomi-tracker.umd.js
+++ b/dist/apache-unomi-tracker.umd.js
@@ -1693,6 +1693,7 @@
         wem.browserGeneratedSessionSuffix = 
wem.digitalData.wemInitConfig.browserGeneratedSessionSuffix ? 
wem.digitalData.wemInitConfig.browserGeneratedSessionSuffix : '';
         wem.disableTrackedConditionsListeners = 
wem.digitalData.wemInitConfig.disableTrackedConditionsListeners;
         wem.activateWem = wem.digitalData.wemInitConfig.activateWem;
+        wem.searchForms = wem.digitalData.wemInitConfig.searchForms ? 
wem.digitalData.wemInitConfig.searchForms : [];
         var _wem$digitalData$wemI = wem.digitalData.wemInitConfig,
             contextServerUrl = _wem$digitalData$wemI.contextServerUrl,
             timeoutInMilliseconds = 
_wem$digitalData$wemI.timeoutInMilliseconds,
@@ -2218,6 +2219,25 @@
         };
         return formEvent;
       },
+      buildSearchEvent: function buildSearchEvent(formName) {
+        var _formEvent$flattenedP, _formEvent$flattenedP2;
+
+        var form = arguments.length > 1 && arguments[1] !== undefined ? 
arguments[1] : undefined;
+        var searchFormInfo = arguments.length > 2 ? arguments[2] : undefined;
+        var formEvent = wem.buildEvent('search', wem.buildTarget(formName, 
'search'), wem.buildSourcePage());
+        formEvent.flattenedProperties = {
+          fields: form ? wem._extractFormData(form) : {}
+        };
+        var language = ((_formEvent$flattenedP = 
formEvent.flattenedProperties.fields[searchFormInfo.languageFieldName]) === 
null || _formEvent$flattenedP === void 0 ? void 0 : 
_formEvent$flattenedP.values) || formEvent.source.properties.pageInfo.language;
+        var term = (_formEvent$flattenedP2 = 
formEvent.flattenedProperties.fields[searchFormInfo.termFieldName]) === null || 
_formEvent$flattenedP2 === void 0 ? void 0 : 
_formEvent$flattenedP2.toLowerCase();
+        formEvent.properties = {
+          originForm: formName,
+          language: language,
+          keyword: term,
+          origin: formEvent.source.properties.pageInfo.pagePath
+        };
+        return formEvent;
+      },
 
       /**
        * This function return the source object for a source of type page
@@ -2587,6 +2607,12 @@
           }
         }
 
+        if (wem.searchForms) {
+          wem.formNamesToWatch = 
wem.formNamesToWatch.concat(wem.searchForms.map(function (form) {
+            return form.formNameOrId;
+          }));
+        }
+
         var forms = document.querySelectorAll('form');
 
         for (var formIndex = 0; formIndex < forms.length; formIndex++) {
@@ -3038,13 +3064,19 @@
         var formName = form.getAttribute('name') ? form.getAttribute('name') : 
form.getAttribute('id');
 
         if (formName && wem.formNamesToWatch.indexOf(formName) > -1) {
+          var _wem$searchForms;
+
           console.info('[WEM] catching form ' + formName);
           var eventCopy = document.createEvent('Event'); // Define that the 
event name is 'build'.
 
           eventCopy.initEvent('submit', event.bubbles, event.cancelable);
           event.stopImmediatePropagation();
           event.preventDefault();
-          wem.collectEvent(wem.buildFormEvent(formName, form), function () {
+          var searchFormInfo = (_wem$searchForms = wem.searchForms) === null 
|| _wem$searchForms === void 0 ? void 0 : _wem$searchForms.find(function 
(searchForm) {
+            return searchForm.formNameOrId === formName;
+          });
+          var formEvent = searchFormInfo ? wem.buildSearchEvent(formName, 
form, searchFormInfo) : wem.buildFormEvent(formName, form);
+          wem.collectEvent(formEvent, function () {
             form.removeEventListener('submit', wem._formSubmitEventListener, 
true);
             form.dispatchEvent(eventCopy);
 
diff --git a/dist/apache-unomi-tracker.umd.js.map 
b/dist/apache-unomi-tracker.umd.js.map
index b68bb94..8b992d4 100644
--- a/dist/apache-unomi-tracker.umd.js.map
+++ b/dist/apache-unomi-tracker.umd.js.map
@@ -1 +1 @@
-{"version":3,"file":"apache-unomi-tracker.umd.js","sources":["../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/es6-crawler-detect/src/lib/crawler/provider.js","../node_modules/es6-crawler-detect/src/lib/crawler/crawlers.js","../node_modules/es6-crawler-detect/src/lib/crawler/exclusions.js","../node_modules/es6-crawler-detect/src/lib/crawler/headers.js","../node_modules/es6-crawler-detect/src/lib/crawler.js","../node_modules/es6-crawler-detect/src/index.js","../src/a
 [...]
\ No newline at end of file
+{"version":3,"file":"apache-unomi-tracker.umd.js","sources":["../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/es6-crawler-detect/src/lib/crawler/provider.js","../node_modules/es6-crawler-detect/src/lib/crawler/crawlers.js","../node_modules/es6-crawler-detect/src/lib/crawler/exclusions.js","../node_modules/es6-crawler-detect/src/lib/crawler/headers.js","../node_modules/es6-crawler-detect/src/lib/crawler.js","../node_modules/es6-crawler-detect/src/index.js","../src/a
 [...]
\ No newline at end of file
diff --git a/src/apache-unomi-tracker.js b/src/apache-unomi-tracker.js
index d9ec84b..1159d21 100644
--- a/src/apache-unomi-tracker.js
+++ b/src/apache-unomi-tracker.js
@@ -32,6 +32,7 @@ export const newTracker = () => {
             wem.browserGeneratedSessionSuffix =  
wem.digitalData.wemInitConfig.browserGeneratedSessionSuffix ?  
wem.digitalData.wemInitConfig.browserGeneratedSessionSuffix : '';
             wem.disableTrackedConditionsListeners =  
wem.digitalData.wemInitConfig.disableTrackedConditionsListeners;
             wem.activateWem = wem.digitalData.wemInitConfig.activateWem;
+            wem.searchForms = wem.digitalData.wemInitConfig.searchForms ? 
wem.digitalData.wemInitConfig.searchForms : [];
 
             const { contextServerUrl, timeoutInMilliseconds, 
contextServerCookieName } = wem.digitalData.wemInitConfig;
             wem.contextServerCookieName = contextServerCookieName;
@@ -519,7 +520,22 @@ export const newTracker = () => {
             };
             return formEvent;
         },
+        buildSearchEvent: function (formName, form = undefined, 
searchFormInfo) {
+            const formEvent = wem.buildEvent('search', 
wem.buildTarget(formName, 'search'), wem.buildSourcePage());
+            formEvent.flattenedProperties = {
+                fields: form ? wem._extractFormData(form) : {}
+            };
 
+            const language = 
formEvent.flattenedProperties.fields[searchFormInfo.languageFieldName]?.values 
|| formEvent.source.properties.pageInfo.language;
+            const term = 
formEvent.flattenedProperties.fields[searchFormInfo.termFieldName]?.toLowerCase();
+            formEvent.properties = {
+                originForm: formName,
+                language: language,
+                keyword: term,
+                origin: formEvent.source.properties.pageInfo.pagePath
+            };
+            return formEvent;
+        },
         /**
          * This function return the source object for a source of type page
          *
@@ -854,6 +870,9 @@ export const newTracker = () => {
                 }
             }
 
+            if (wem.searchForms) {
+                wem.formNamesToWatch = 
wem.formNamesToWatch.concat(wem.searchForms.map(form => form.formNameOrId));
+            }
             var forms = document.querySelectorAll('form');
             for (var formIndex = 0; formIndex < forms.length; formIndex++) {
                 var form = forms.item(formIndex);
@@ -1258,7 +1277,9 @@ export const newTracker = () => {
                 event.stopImmediatePropagation();
                 event.preventDefault();
 
-                wem.collectEvent(wem.buildFormEvent(formName, form),
+                const searchFormInfo = wem.searchForms?.find(searchForm => 
searchForm.formNameOrId === formName);
+                const formEvent = searchFormInfo ? 
wem.buildSearchEvent(formName, form, searchFormInfo) : 
wem.buildFormEvent(formName, form);
+                wem.collectEvent(formEvent,
                     function () {
                         form.removeEventListener('submit', 
wem._formSubmitEventListener, true);
                         form.dispatchEvent(eventCopy);
@@ -1431,4 +1452,4 @@ export const newTracker = () => {
     };
 
     return wem;
-};
\ No newline at end of file
+};

Reply via email to