dataFactor.js

165 lines | 4.688 kB Blame History Raw Download
const enviroment = 'https://dev.';
//DATOS DE USUARIO
const email = vsm.session.email != "" ? vsm.session.email : "";
const idUser = vsm.session.id != "" ? vsm.session.id : "";
const userName = vsm.session.title != "" ? vsm.session.title : "";
const isSuscriber = site.session.isSuscriber() && site.session != undefined ? "Suscriptor" : "Usuario";
let dateTime = new Date();
dateTime = `${dateTime.getDate()}/${dateTime.getMonth()}/${dateTime.getFullYear()} - hora ${dateTime.getHours()}:${dateTime.getMinutes()}`

let isMatch = false
let url = ""
//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 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 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 (zones.length > 0) {
        for (let i = 0; i < zones.length; i++) {
            let ContentZone = {
                name: zones[i].name,
                selector: zones[i].selector
            }
            ContentZones.push(ContentZone)
        }
    }
    return ContentZones;
}

function GenerateListeners(pageType, elements) {
    let listeners = [];

    if (elements.length > 0) {
        for (let i = 0; i < elements.length; i++) {
            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, myEvents) {
    this.name = name;
    this.interaction = interaction;
    this.isMatch = () => {
        let url = window.location.href;
        if (url.includes('?') || url.includes('/')) {
            url = url.slice(0, window.location.href.lastIndexOf('?'));
        }
        isMatch = (url === `${enviroment}${myUrl}` ? true : false);


        return isMatch;
    };
    this.listeners = GenerateListeners("Home", myEvents);
}
const home = new PageType("Home", "cronista.com", homeInteractions, homeListeners);

function Pages() {
    return [home]
}