1document.addEventListener('DOMContentLoaded', () => { 2 eventsComponent.init() 3}) 4 5 6const eventsComponent = { 7 cards: document.querySelectorAll('.events-v2 .js-card-events'), 8 userData: "", 9 cmps: null, 10 11 async init() { 12 const eventsElements = document.querySelectorAll('.events-container'); 13 14 eventsComponent.userData = await eventsComponent.getUserData() 15 eventsComponent.cmps = document.querySelectorAll('.events-v2') 16 17 eventsComponent.setCards() 18 eventsComponent.setPreference() 19 eventsComponent.setDescriptions() 20 window.addEventListener( 'resize', eventsComponent.setCards ) 21 Utils.changeColorIcon() 22 eventsComponent.applyTitleMultimedia() 23 eventsComponent.applyEventButton() 24 25 eventsComponent.addClicks() 26 eventsComponent.addClickListeners(eventsElements) 27 28 if (!eventsComponent.userData) { 29 eventsComponent.cmps.forEach(cmp => { 30 if (cmp.querySelector('.js-card-privado')) Utils.setPrivacy(cmp) 31 }); 32 } 33 }, 34 35 addClicks() { 36 const links = document.querySelectorAll('.events-container .eventsTitle a'); 37 links.forEach(link => { 38 link.addEventListener("mousedown", function (event) { 39 let titulo = event.target.closest(".eventsTitle").querySelector(".titleSection .title").textContent 40 let texto = event.target.textContent.trim() 41 if (event.target.getAttribute("data-clicked") != "true") { 42 event.target.setAttribute("data-clicked", "true") 43 AnalyticsComun.pushToDataLayerClickButton(titulo, texto, "principal", "Distribuidora") 44 } 45 46 }) 47 }) 48 }, 49 50 async getUserData() { 51 try { 52 let userData = await cookieUtils.cookieUser 53 let userIsLoggedIn = await cookieUtils.userIsLoggedIn() 54 55 if (userIsLoggedIn && userData) { 56 return userData 57 } else 58 console.log('No está logado') 59 60 } catch(error) { 61 console.log('No se han recibido datos') 62 } 63 }, 64 65 async setPreference() { 66 try { 67 const preferenceText = document.querySelector(".js-preference-eventsv2"); 68 if (!preferenceText) return; 69 70 const userActive = await cookieUtils.userIsLoggedIn(); 71 if (!userActive) { 72 preferenceText.remove(); 73 } 74 } catch (error) { 75 console.error("Error al establecer preferencia:", error); 76 } 77 }, 78 79 setCards() { 80 for (const card of eventsComponent.cards) { 81 let registration = card.querySelector('.js-tags-registration') 82 let registration_secundary = card.querySelector('.js-tags-registration-secundary') 83 84 if (registration != undefined && registration_secundary != undefined) { 85 if (card.offsetWidth <= 420) { 86 registration.classList.add('inscripcion--hidden') 87 registration_secundary.classList.remove('inscripcion--hidden') 88 } 89 else { 90 registration.classList.remove('inscripcion--hidden') 91 registration_secundary.classList.add('inscripcion--hidden') 92 } 93 } 94 } 95 }, 96 97 setDescriptions(){ 98 const eventSections = document.querySelectorAll('.eventSection'); 99 100 eventSections.forEach(section => { 101 const eventDesc = section.querySelectorAll('.eventDesc'); 102 103 if (eventDesc) { 104 eventSections.forEach(description => { 105 const headings = description.querySelectorAll('h2, h3'); 106
107 headings.forEach(heading => { 108 109 const paragraph = document.createElement('p') 110 111 paragraph.innerHTML = heading.innerHTML 112 113 if (heading.tagName.toLowerCase() === 'h2') { 114 paragraph.classList.add('title_paragraph') 115 } else if (heading.tagName.toLowerCase() === 'h3') { 116 paragraph.classList.add('subtitle_paragraph') 117 } 118 119 heading.replaceWith(paragraph) 120 }); 121 }) 122 } 123 }); 124 }, 125 126 applyTitleMultimedia() { 127 for (const card of eventsComponent.cards) { 128 let title_multimedia = card.querySelector('.js-open-title-multimedia') 129 130 if (title_multimedia != undefined) { 131 let icon_multimedia = card.querySelector(".videoType") 132 133 title_multimedia.addEventListener('click', (event) => { 134 event.preventDefault() 135 event.stopPropagation() 136 icon_multimedia.dispatchEvent(new Event("click")) 137 }) 138 } 139 } 140 }, 141 142 applyEventButton() { 143 for (const card of eventsComponent.cards) { 144 const linkRow = card.querySelector('.linkRow'); 145 if (linkRow) { 146 eventsComponent.urlBoton(linkRow); 147 } 148 } 149 }, 150 151 urlBoton(data) { 152 const botonInscripcion = data.querySelector('a'); 153 let href = botonInscripcion.getAttribute('href') 154 if (botonInscripcion) { 155 156 botonInscripcion.addEventListener('click', async (e) => { 157 e.preventDefault(); 158 try { 159 let userData = await cookieUtils.userIsLoggedIn(); 160 if (userData) { 161 window.open(href, '_blank'); 162 } else { 163 let isLoginModal = document.querySelector('.login-modal'); 164 if (isLoginModal) { 165 LoginModal.openModal(href); 166 } else { 167 console.log('Error! No se encontró la modal de login'); 168 } 169 } 170 } catch (error) { 171 console.error('Error al recuperar las cookies'); 172 } 173 }); 174 } else { 175 console.warn('Element .buttonEvent not found'); 176 } 177 }, 178 179 addClickListeners(eventsElements) { 180 eventsElements.forEach(item => { 181 const events = item.querySelectorAll('.js-card-events'); 182 if(!events || events.length === 0){return;} 183 184 events.forEach(eventItem => { 185 const eventTagRefer = eventItem.querySelector('.tags'); 186 const eventEtiquetasRefer = eventItem.querySelector('.etiquetas'); 187 const eventDateRefer = eventItem.querySelector('.date'); 188 const destacadoRefer = eventItem.querySelector('.card-destacado'); 189 190 const eventTitleRefer = eventItem.querySelector('.eventName'); 191 if(eventTitleRefer){ 192 eventTitleRefer.addEventListener('click', async (event) => { 193 event.preventDefault() 194 195 const eventTitle = eventTitleRefer?.textContent; 196 const eventTag = eventTagRefer?.querySelector('.tipo')?.textContent; 197 const eventEtiquetas = eventEtiquetasRefer?.getElementsByTagName('span') || ''; 198 const eventDate = eventDateRefer?.textContent; 199 await eventsComponent.pushToDataLayer( null, eventTitle, eventTag, eventEtiquetas, eventDate, destacadoRefer); 200 201 const href = event.target?.getAttribute('href') 202 if (href) { 203 setTimeout(function () { 204 window.location.href = href; 205 }, 700) 206 } 207 }); 208 } 209 210 const eventLinkDownload = eventItem.querySelector('.link-download'); 211 if (eventLinkDownload) { 212 eventLinkDownload.addEventListener('click', ()=>{ 213 const eventTitle = eventTitleRefer?.textContent; 214 const eventLink = eventLinkDownload?.textContent; 215 const eventTag = eventTagRefer?.querySelector('.tipo')?.textContent;
216 const eventEtiquetas = eventEtiquetasRefer?.getElementsByTagName('span') || ''; 217 const eventDate = eventDateRefer?.textContent; 218 219 eventsComponent.pushToDataLayer(eventLink, eventTitle, eventTag, eventEtiquetas, eventDate, destacadoRefer); 220 }); 221 } 222 }); 223 }); 224 }, 225 pushToDataLayer(eventText, eventTitle, eventTag, eventEtiquetas, eventDate, destacadoRefer) { 226 const dataLayerEntry = JSON.parse(JSON.stringify(elenaBaseAdobeDataLayer)); 227 228 dataLayerEntry.comp_evento.componente.nombre = "Cards eventos"; 229 dataLayerEntry.comp_evento.componente.modulo = "principal"; 230 dataLayerEntry.comp_evento.componente.tipo = "contenido"; 231 dataLayerEntry.comp_evento.componente.texto = eventText || eventTitle; 232 dataLayerEntry.comp_evento.componente.titulo = eventTitle; 233 dataLayerEntry.comp_evento.componente.categoria1 = eventTag ? eventTag.trim() : null; 234 dataLayerEntry.comp_evento.contenido.nombre = eventTitle; 235 dataLayerEntry.comp_evento.contenido.fecha_evento = eventDate ? eventDate.trim() : null; 236 dataLayerEntry.comp_evento.contenido.tipo = eventTag ? eventTag.trim() : null; 237 dataLayerEntry.comp_evento.contenido.destacado = destacadoRefer ? 'si' : 'no'; 238 239 // Convert HTMLCollection to Array 240 const etiquetasArray = Array.from(eventEtiquetas); 241 242 // Add categories dynamically based on the eventEtiquetas array 243 etiquetasArray.forEach((etiqueta, index) => { 244 dataLayerEntry.comp_evento.componente[`categoria${index + 2}`] = etiqueta.textContent || etiqueta.innerText; 245 }); 246 247 window.adobeDataLayer.push(dataLayerEntry); 248 console.log('Data pushed to adobeDataLayer:', dataLayerEntry); 249 }, 250}
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.