siteMapPerso

datafactor

11/13/2023 12:19:00 PM

Changes

dataFactor.js 160(+117 -43)

Details

dataFactor.js 160(+117 -43)

diff --git a/dataFactor.js b/dataFactor.js
index 1a0cbfd..c6ff5b1 100644
--- a/dataFactor.js
+++ b/dataFactor.js
@@ -7,34 +7,111 @@ const isSuscriber = site.session.isSuscriber() && site.session != undefined ? "S
 let dateTime = new Date();
 dateTime = `${dateTime.getDate()}/${dateTime.getMonth()}/${dateTime.getFullYear()} - hora ${dateTime.getHours()}:${dateTime.getMinutes()}`
 
-
-let main = document.querySelector('.main-container');
-let block = main.querySelectorAll('div.block');
 let isMatch = false
 let url = ""
-//SELECTORES DE LA Genericos
-const ulOptions = document.querySelector('.session-options');
-const ItemsList = ulOptions.querySelectorAll('li');
-const perfil = ItemsList[1].querySelector('a');
-
-let listenersHome = [
-    `.${block[0].className} h2.title`,
-    `.${block[1].className} h2.title`,
-    `.locked a`,
+//SELECTORES y zonas Genericos
+
+let globalZones = [
+    { name: "Header", selector: '#page-header' },
+    { name: "Footer", selector: '#page-footer' },
+]
+
+let globalListeners = [
+    '#page-header-session-box .sign-in-button',
+    `#page-header-middle .b-suscription`,
+    `.svg-icon.menu`,
+    `.session.with-avatar`,
+    `.session-options li:nth-child(2) a`,
+    `#main-menu ul li a`,
+    ".piece.markets.standard ul li"
+]
+//
+
+//SELECTORES y zonas Home
+let homeListeners = [
+    `.section article.item`,
+    `.sectionfull article.item`,
+    `article.locked`,
     `.columnists .items article.item`
 ]
-let interactionHome = {
-    name: "es mi nombre"
+
+let homeInteractions = {
+    name: "Home"
+}
+//
+function ReadHomeBlocks(target) {
+    let main = document.querySelector('.main-container');
+    let block1 = main.childNodes[0].querySelectorAll('article.item');
+    let block2 = main.childNodes[2].querySelectorAll('article.item')
+    sendDataFromHomeBlocks("Click, Article from home (Bloque1)", target, block1)
+    sendDataFromHomeBlocks("Click, Article from home (Bloque2)", target, block2)
+}
+
+function ReadGlobalEvents(event) {
+    let dataName = SalesforceInteractions.cashDom(event.target).text()
+    let compareClass = "." + event.currentTarget.classList.value.replace(/\s+/g, '.')
+
+    if (event.target.innerText == "Mi perfil") {
+        dataName = "Botón Mi perfil"
+    }
+
+    if (compareClass == globalListeners[3]) {
+        dataName = "Click Botón Desplegable MENU perfil"
+    }
+
+    if (compareClass == globalListeners[2]) {
+        dataName = "MENU sitio"
+    }
+
+
+    SalesforceInteractions.sendEvent({
+        interaction: {
+            name: dataName,
+            attributes: {
+                userIdCms: idUser,
+                name: userName,
+                lastName: userName,
+                isSuscriber: isSuscriber,
+                emailAddress: email,
+                continueUrl: url
+            },
+        },
+    });
+
 }
 
-function GenerateContentZones(names, selectors) {
+function sendDataFromHomeBlocks(nameEvent, target, container) {
+    for (let i = 0; i < container.length; i++) {
+
+        if (target === container[i]) {
+            SalesforceInteractions.sendEvent({
+                interaction: {
+                    name: nameEvent,
+                },
+                user: {
+                    identities: {
+                        emailAddress: email
+                    },
+                    attributes: {
+                        name: userName
+                    }
+                }
+            });
+            break;
+        }
+
+    }
+
+}
+
+function GenerateContentZones(zones) {
+
     let ContentZones = [];
-    if (names.length === selectors.length) {
-        let size = names.length
-        for (let i = 0; i < size; i++) {
+    if (zones.length > 0) {
+        for (let i = 0; i < zones.length; i++) {
             let ContentZone = {
-                name: names[i],
-                selector: selectors[i]
+                name: zones[i].name,
+                selector: zones[i].selector
             }
             ContentZones.push(ContentZone)
         }
@@ -42,32 +119,31 @@ function GenerateContentZones(names, selectors) {
     return ContentZones;
 }
 
-function GenerateListeners(elements) {
+function GenerateListeners(pageType, elements) {
     let listeners = [];
+
     if (elements.length > 0) {
         for (let i = 0; i < elements.length; i++) {
-            let myEvents = SalesforceInteractions.listener("click", `${elements[i]}`, (e) => {
-                SalesforceInteractions.sendEvent({
-                    interaction: {
-                        name: "Botón " + SalesforceInteractions.cashDom(e.target).text(),
-                        attributes: {
-                            userIdCms: idUser,
-                            name: userName,
-                            lastName: userName,
-                            isSuscriber: isSuscriber,
-                            emailAddress: email,
-                            continueUrl: url
-                        },
-                    },
-                });
-            })
-            listeners.push(myEvents)
+            if (pageType == "Home" && (elements[i] == elements[0] || elements[i] == elements[1])) {
+                let myEventsBlock = SalesforceInteractions.listener("click", elements[i], (e) => {
+                    ReadHomeBlocks(e)
+                })
+                listeners.push(myEventsBlock)
+            } else {
+                let myEvents = SalesforceInteractions.listener("click", `${elements[i]}`, (e) => {
+                    e.preventDefault()
+                    ReadGlobalEvents(e)
+                    e.stopPropagation();
+                })
+
+                listeners.push(myEvents)
+            }
         }
     }
     return listeners;
 }
 
-function PageType(name, myUrl, interaction, listeners) {
+function PageType(name, myUrl, interaction, myEvents) {
     this.name = name;
     this.interaction = interaction;
     this.isMatch = () => {
@@ -80,12 +156,10 @@ function PageType(name, myUrl, interaction, listeners) {
 
         return isMatch;
     };
-    this.listeners = GenerateListeners(listeners);
+    this.listeners = GenerateListeners("Home", myEvents);
 }
-const home = new PageType("Home", "cronista.com", interactionHome, listenersHome);
+const home = new PageType("Home", "cronista.com", homeInteractions, homeListeners);
 
 function Pages() {
     return [home]
-}
-
-export { Pages }
+}
\ No newline at end of file