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 +};
