PageSourceSearch

https://www.icex.es/etc.clientlibs/icex-elena/components/content/events-v2/clientlibs.js

js icex.es collected 2026-10-01 08:36:54 UTC 10,286 bytes, 250 lines download raw bytes

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.