Learn more about the services that you can do online with I-DE with a few clicks away. We work every day to make things easier and simpler for you.Descubre todas las gestiones online que puedes hacer desde la web con i-DE y en muy pocos clics. Trabajamos día a día para ponértelo todo más fácil y sencillo.
Managing without needing to signing up
Discover all the features you can use without signing up that can be very helpful.
Connect to our electrical grid. Learn about the two types of connections to the i-DE network: as a consumer or as a self-consumer/energy producer.Conéctate a nuestra red eléctrica. Infórmate de los dos tipos de conexión a la red de i-DE: como consumidor o como autoconsumidor/productor de energía.
Register for electricity service
Changes in my Electricity Connection
Essencial Electric Supply
Consumption capacity map
Self-consumption Types
Self-consumption Grid Connection
Self-Consumption Set-Up and Billing
Producers Grid Connection
Capacity Map
Generation capacity map
This map shows the available connection capacity for generation.
Check the available connection capacity for consumption.
Access this page and choose the option to be able to know the information about the scheduled outages and faults in the i-DE gridAccede a esta página y elige la opción para poder conocer la información de los cortes programados y averías en la red de i-DE.
View Outages Map
Discover in a simple and fast way if there are outages or scheduled outages on the grid.
Know more about i-DE, the new energy models to adapt to new trends and what actions guarantee safety in our processes.Conoce que es i-DE, los nuevos modelos energéticos para adaptarnos a las nuevas tendencias y qué acciones garantizan la seguridad en nuestros procesos.
Company Overview
Our Commitments To You
Business Plan
i-DE’s investment plans
Results
Digitalization and Innovation
Plain language
Electric Vehicles
Smart Cities
Local Energy Communities
Aerothermics
Safety Grids
Our Assets
Report an Accident
New Rates
Discover how the new electricity rates affect you.
Know more about electric distribution: how it is distributed, infrastructures, what are grids and smart meters, and the legislation of the sector.Todo sobre la distribución eléctrica: cómo se distribuye, infraestructuras, qué son las redes y contadores inteligentes y la legislación del sector.
Electromagnetic fields
Components in the Electrical Grid
Grid codes
Smart Meters
The STAR Project, which involves replacing all analog meters for smart meters.
Discover the latest from i-DE in our News sectionDescubre lo último de i-DE en nuestra sección de Novedades.
Differences between distributor and retailer
Which of the two should you go to for management?
Cybersecurity Tips
What types of scams and fraud exist and how to avoid them with good cybersecurity.
Private Area
Claims
Access and Connections
Retailers
Suppliers
Producers
DocumentaT
Online Payment
Distributors Map
Electric Power Calculator
Electric Supply
Self-consumption
Energy Producers
I need to open a connection file
Outages Map
How to report an electric outage
Scheduled Power Cuts
What is the "ICP" and what is it for
Get to know us
New energy models
Safety and Prevention
How electrical energy is distributed
Smart Grids
Electrical Installations
Electricity sector legislation
Interruptor diferencial superinmunizado
How to Turn on the Electricity in My House for the First Time
How to know, Which is my electricity distributor
What Types of Renewable Energy Exist and What Role Do They Play in Society?
En i-DE trabajamos de forma intensa y continuada para conseguir mejorar cada día nuestro servicio al cliente, la operación de la red y su fiabilidad. Para ello, introducimos las mejores prácticas en cada una de nuestras áreas de actividad.
El éxito de los siguientes proyectos y acciones es fruto de nuestro compromiso con la excelencia y el esfuerzo innovador que siempre nos ha caracterizado.
El proyecto de Sistemas de Telegestión y Automatización de la Red (STAR) ha sido una ambiciosa iniciativa, que llevamos a cabo con el objetivo de llevar a cabo una transformación tecnológica en el campo de las redes inteligentes.
Este proyecto, que finalizó en 2018, ha supuesto una inversión global en el entorno de 1.300 millones de euros, e implicó la sustitución de en torno a 11 millones de contadores y la adaptación de unos 99.000 centros de transformación. Cabe destacar la eficiencia de este proyecto, con un reducido coste para el cliente, muy inferior a cualquier otro desarrollo de red inteligente conocido.
Esta innovación nos permite ofrecer a nuestros clientes niveles de calidad de suministro superiores. Además, ponemos a su disposición a través de los canales digitales información más precisa y detallada sobre su consumo.
Tras el proyecto STAR, se le dio continuidad a la transformación extendiendo la automatización y digitalización de la red de media tensión, y abordando también la baja tensión. Así nació STAR+, una iniciativa que se ha centrado en mejorar la red de baja tensión. En el marco de este programa, hemos trabajado en el desarrollo de funcionalidades nuevas de mayor relevancia para optimizar la red de baja tensión, como la conectividad automática o la predicción de incidencias con la tecnología existente.
En i-DE apostamos por convertirnos en un Operador del Sistema de Distribución (Distribution System Operator) y, para ello, avanzamos en el desarrollo de tecnologías y sistemas que permitan gestionar los recursos energéticos distribuidos (principalmente baterías y plantas fotovoltaicas), así como realizar una gestión activa de la demanda.
Esto aportará a los clientes flexibilidad y control sobre su comportamiento en los escenarios futuros. Uno de estos escenarios futuros se ha simulado en la microrred del Campus Iberdrola, en Madrid. Las instalaciones constan de dos plantas fotovoltaicas, tres sistemas de almacenamiento de baterías y un sistema de control, sobre el que se han desarrollado las aplicaciones para el control basado en los servicios y casos de uso que aportarán a la red.
Para facilitar que esta innovación llegue de manera transversal a todos los usuarios de la red estamos desarrollando el proyecto eLVIS, cuyo objetivo es la implantación de un sistema de control de la red de baja tensión, con herramientas de movilidad que saquen el máximo valor de la información que hoy tenemos disponible.
Este proyecto permitirá optimizar la explotación de la red de baja tensión y optimizar su uso, mejorar la continuidad del servicio en momentos de mantenimiento por incidencia o por mejora de la red, acelerar la identificación de disponibilidad para incrementar la carga de la red de baja tensión, y mejorar la calidad de la onda.
La calidad del suministro se traduce en la fiabilidad y seguridad en el servicio que prestamos a todos los clientes. Gracias a la renovación y a los trabajos de mantenimiento de la red, hemos reducido el número de incidencias y el tiempo de reposición del suministro.
La calidad del suministro se mide a través de dos indicadores principales:
• TIEPI: es el tiempo de interrupción equivalente de la potencia instalada en media tensión, es decir, el tiempo medio que está sin suministro un cliente durante un año en España. • NIEPI: es el número de interrupciones equivalente de la potencia instalada en media tensión, es decir, el número de veces que se va la luz a cada cliente durante un año en España.
Ambos indicadores se han reducido más de un 60% en la última década. Así, el TIEPI ha pasado de situarse en más de dos horas a estar por debajo de 45 minutos, mientras que el NIEPI ha bajado desde dos veces y media a estar por debajo de una.
Hasta el 31 de diciembre de 2021, en i-DE hemos contribuido a la conexión de un total de 67.786 instalaciones a su red de distribución, que suman una potencia instalada de 6.991 MW.
El fraude eléctrico repercute de forma directa y significativa en el bolsillo de los clientes que pagan su factura, ya que también pagan lo que consumen los defraudadores de forma gratuita. Por otro lado, las conexiones ilegales a la red eléctrica y las manipulaciones de los contadores conllevan un elevado riesgo para la seguridad e integridad física de las personas, ya que se realizan al margen de la legalidad y de la normativa técnica vigente, sin los requisitos de seguridad necesarios. No hay que olvidar, además, que este tipo de fraude está recogido en el Código Penal y que puede constituir un delito.
En cumplimiento de las funciones y obligaciones de las normas que el sector eléctrico español establece, desde i-DE realizamos labores de detección y regularización de situaciones de defraudación de fluido eléctrico. Somos capaces de detectar de forma muy precisa y eficiente el 100% de los casos de fraude utilizando tecnología de vanguardia.
Para poder combatir este problema, necesitamos de la implicación de toda la sociedad. En este sentido, puedes entrar en nuestra Área Privada y comunicarnos cualquier presunta situación de fraude que hayas observado entrando en "Ayuda y contacto" y pinchando en "Denunciar fraude".
Nuestra trayectoria en materia de I+D+i (investigación, desarrollo e innovación) demuestra nuestro permanente interés por la innovación sin perder de vista el enfoque práctico y de mejora del servicio al cliente. El esfuerzo y dedicación de un equipo humano con alta cualificación técnica y la colaboración de nuestros socios habituales (universidades, centros tecnológicos y empresas nacionales) han permitido extraer valiosos resultados que, al implantarse en la red, han revertido en el cliente.
En Redes, trabajamos con la vista puesta en el futuro: avanzamos hacia la digitalización, las nuevas tecnologías y los nuevos servicios para nuestros clientes, así como hacia una nueva forma de diseñar, construir, explotar y mantener nuestros activos. La innovación es nuestra principal herramienta para hacer realidad de manera eficaz todos los retos que tenemos por delante.
Además, centramos nuestros esfuerzos en la digitalización de cara a transformar la red convencional en una red inteligente, capaz de integrar de forma inteligente el comportamiento y las acciones de todos los clientes conectados a ella (generadores, consumidores y aquellos que realizan ambas acciones) para proporcionar un suministro de electricidad seguro, económico y sostenible. Esto permite al distribuidor ejercer plenamente el papel de Operador del Sistema de Distribución (DSO, por sus siglas en inglés).
Para acelerar toda esta transformación, en i-DE hemos puesto en marcha el Global Smart Grids Innovation Hub , centro de innovación y conocimiento que aspira a convertirse en referente mundial en redes inteligentes que dé respuesta a los retos de la transición energética.
La dimensión ambiental es un aspecto fundamental a la hora de diseñar, construir y mantener nuestras redes. Desde i-DE trabajamos en la reducción de los principales riesgos ambientales mediante la implementación de diversas medidas preventivas y de control, como la dotación de sistemas de recogida de aceite para prevenir posibles derrames de los transformadores, la identificación y corrección de posibles fugas de gas SF6, así como tratando la vegetación existente en el entorno de las redes para prevenir posibles incendios forestales.
También realizamos campañas de renovación de líneas eléctricas y de adecuación de apoyos que nos permiten reducir el riesgo de electrocución de aves.
The following has evaluated to null or missing: ==> TituloSeccion.AnclaWrap [in template "19842963717691#2803100#3628711" at line 115, column 46] ---- Tip: It's the step after the last dot that caused this error, not those before it. ---- Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: #assign anclaWrap = TituloSeccion.Anc... [in template "19842963717691#2803100#3628711" at line 115, column 25] ----
1<style>
2 .acordeon-card:not(:last-child){
3 margin-bottom: 20px !important;
4 }
5
6 .titulodesplegable{
7 padding: 0px !important;
8 margin-bottom: 0px !important;
9 }
10
11 .nuevoIcono40_{
12 width: 40px !important;
13 height: 40px !important;
14 min-width: 40px;
15 }
16
17 #simple_wrap .show {
18 margin-bottom: 20px;
19 }
20
21 #simple_wrap .titulo {
22 min-height: 40px;
23 display: flex;
24 align-items: center;
25 }
26
27 #simple_wrap .flecha-dcha {
28 display: flex ;
29 align-items: center;
30 }
31 #simple_wrap .contenidodesplegableSinIcono {
32 padding-left: 15px;
33 }
34
35 @media (min-width: 992px) {
36 .icono-izq {
37 flex: 0 0 7.333333%;
38 }
39 }
40
41 @media only screen and (max-width: 575px) {
42 .contenidodesplegable {
43 padding-left: 15px !important;
44 }
45 }
46
47 <#if (Margenes.MargenSuperior.getData())?? && Margenes.MargenSuperior.getData() != "" >
48 #simple_wrap.margin-top-comp {
49 margin-top: ${Margenes.MargenSuperior.getData()}px !important;
50 }
51 <#else>
52 #simple_wrap.margin-top-comp {
53 margin-top: 80px !important;
54 }
55 </#if>
56
57 <#if (Margenes.MargenInferior.getData())?? && Margenes.MargenInferior.getData() != "" >
58 #simple_wrap.margin-bottom-comp {
59 margin-bottom: ${Margenes.MargenInferior.getData()}px !important;
60 }
61 <#else>
62 #simple_wrap.margin-bottom-comp {
63 margin-bottom: 0px !important;
64 }
65 </#if>
66</style>
67
68<#assign JournalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") />
69<#assign journalArticle = JournalArticleLocalService.getArticle(getterUtil.getLong(groupId),.vars['reserved-article-id'].data) />
70
71<#assign articleId = journalArticle.getId() />
72
73<#assign DLAppServiceUtil = serviceLocator.findService("com.liferay.document.library.kernel.service.DLAppLocalService") >
74<#assign file = DLAppServiceUtil.getFileEntry(getterUtil.getLong(groupId), 0, "flecha_SimpleWrap") >
75<#assign default_text_size = "h3" >
76
77<#assign page = layout>
78<#assign the_title = languageUtil.get(locale, the_title, page.getName(locale)) >
79
80<#function fileUrl file >
81 <#local backslash = "/" >
82 <#local furl = "/documents/" + file.getGroupId() + backslash + file.getFolderId() + backslash + file.getTitle() + backslash + file.getUuid() >
83 <#return furl >
84</#function>
85
86<#if (TituloSeccion.AtributoTituloSeccion.getData())?? && TituloSeccion.AtributoTituloSeccion.getData() != "">
87 <#assign titulo_seccion_size = TituloSeccion.AtributoTituloSeccion.getData()>
88<#else>
89 <#assign titulo_seccion_size = default_text_size >
90</#if>
91
92<#assign anclaTitulo = TituloSeccion.AnclaTitulo.getData()>
93
94<div id="simple_wrap" class="row content margin-top-comp margin-bottom-comp normalized-acordeon-group">
95 <#-- TITULO DE SECCION-->
96 <#if (TituloSeccion.getData())?? && TituloSeccion.getData() != "" >
97 <div class="tituloseccion col-lg-12 col-md-12 col-sm-12 col-12" style="margin-bottom: 40px !important;">
98 <${titulo_seccion_size} <@anclaH anclaTitulo/>>${TituloSeccion.getData()}</${titulo_seccion_size}>
99 </div>
100 </#if>
101
102 <#-- INFORMACION DE WRAP -->
103 <#if InformacionWrap.getSiblings()?has_content>
104
105 <#assign numColum = 'col-sm-11' />
106 <#if (numeroColumnas.getData())?? && numeroColumnas.getData() != "">
107 <#assign numColum = numeroColumnas.getData() />
108 </#if>
109
110 <#list InformacionWrap.getSiblings() as item>
111 <#assign id_item_simple_wrap = "espacioFlecha_" + item?index >
112 <#assign id_simple_wrap = "simple_wrap_" + articleId + "_" + item?index >
113 <#assign reclamacion_item_target = "reclamacion_" + articleId + "_" + item?index >
114 <#assign titulo_principal_size = "">
115 <#assign anclaWrap = TituloSeccion.AnclaWrap.getData()>
116
117 <#if (item.Titulo.AtributoTitulo.getData())?? && item.Titulo.AtributoTitulo.getData() != "">
118 <#assign titulo_principal_size = item.Titulo.AtributoTitulo.getData()>
119 <#else>
120 <#assign titulo_principal_size = default_text_size >
121 </#if>
122
123 <#if (item.TituloURL.eventoLabelGTAG.getData())?? && item.TituloURL.eventoLabelGTAG.getData() != "">
124 <#assign eventLabel = item.TituloURL.eventoLabelGTAG.getData()>
125 <#else>
126 <#assign eventLabel = item.TituloURL.TextoURL.getData() >
127 </#if>
128
129 <#assign contenidodesplegableClass = "contenidodesplegableSinIcono" />
130
131 <#-- CARD CERRADA -->
132 <div id="${id_simple_wrap}" class="simple-wrap flex col-12 ${numColum} collapsed acordeon-card" data-toggle="collapse" data-target="#${reclamacion_item_target}" aria-expanded="false"
133 onclick="alturaAcordeon('${id_simple_wrap}', event)">
134 <#-- ICONO + TITULO + FLECHA -->
135 <div class="contenedor-small col-12 titulodesplegable justify-content-center onclick="gtag('event', '${the_title}', {'event_category' : '${item.Titulo.getData()}','event_label' : '${item.Titulo.getData()}'});">
136 <div class="d-flex" style="padding: 10px;">
137 <#-- ICONO FLECHA IZQUIERDA -->
138 <#if (item.Icono.PosicionIcono.getData())?? && item.Icono.PosicionIcono.getData() == "1" >
139 <div class="flecha-izq col-lg-1 col-md-1 col-sm-1 col-2">
140 <div id="${id_item_simple_wrap}" class="icono24 icono_flecha_abajo">
141 </div>
142 </div>
143 </#if>
144
145 <#-- INCIO ICONO PRINCIPAL IZQUIERDA -->
146 <#if item.Icono.PosicionIcono.getData() == "0" || validator.isNull(item.Icono.PosicionIcono.getData()) >
147 <#if (item.Icono.getData())?? && item.Icono.getData() != "">
148 <#assign contenidodesplegableClass = "contenidodesplegable" />
149 <div class="icono-izq col-lg-1 col-md-1 col-sm-1 col-2">
150 <img class="nuevoIcono40_" alt="${item.Icono.getAttribute("alt")}" src="${item.Icono.getData()}" />
151 </div>
152 </#if>
153 </#if>
154
155 <#-- TITULO PRINCIPAL DESKTOP -->
156 <div class="titulo">
157 <${titulo_principal_size} <@anclaH anclaWrap/>>${item.Titulo.getData()}</${titulo_principal_size}>
158 </div>
159 <#-- FIN ICONO PRINCIPAL IZQUIERDA -->
160
161 <#-- ICONO FLECHA DERECHA -->
162 <#if item.Icono.PosicionIcono.getData() == "0" || validator.isNull(item.Icono.PosicionIcono.getData()) >
163 <div class="flecha-dcha">
164 <div id="${id_item_simple_wrap}" class="icono24 icono_flecha_abajo">
165 </div>
166 </div>
167 </#if>
168
169 <#-- ICONO PRINCIPAL DERECHA -->
170 <#if (item.Icono.PosicionIcono.getData())?? && item.Icono.PosicionIcono.getData() == "1" >
171 <#if (item.Icono.getData())?? && item.Icono.getData() != "">
172 <div class="icono-dcha col-lg-1 col-md-1 col-sm-1 col-2">
173 <img class="nuevoIcono40_" alt="${item.Icono.getAttribute("alt")}" src="${item.Icono.getData()}" />
174 </div>
175 </#if>
176 </#if>
177 </div>
178
179 <div class="row contenido-oculto" style="margin: 0;">
180 <#-- SUBTITULO MOBILE-->
181 <#if (item.Subtitulo.getData())?? && item.Subtitulo.getData() != "">
182 <div class="subtitulo col-md-10 col-sm-10 col-12">
183 ${item.Subtitulo.getData()}
184 </div>
185 </#if>
186
187 <#-- INICIO COLLAPSE -->
188 <div id="${reclamacion_item_target}" class="col-12 col-sm-10 ${contenidodesplegableClass} collapse">
189 <#-- INICIO BODY -->
190 <#if (item.Body.getData())?? && item.Body.getData() != "" >
191 <div class="body ">
192 ${item.Body.getData()}
193 </div>
194 </#if>
195 <#-- FIN BODY -->
196 <#-- INICIO BOTON -->
197 <#if (item.tituloBoton.getData())?? && item.tituloBoton.getData() != "" >
198 <#assign pestania = "_self"/>
199 <#if (item.tituloBoton.botonPestania.getData())?? && item.tituloBoton.botonPestania.getData() != "" >
200 <#assign pestania = item.tituloBoton.botonPestania.getData()/>
201 </#if>
202
203 <#assign eventoLabelButtonGtag = item.tituloBoton.getData()/>
204
205 <#if (item.tituloBoton.EventoLabelButtonGtag.getData())?? && item.tituloBoton.EventoLabelButtonGtag.getData() != "" >
206 <#assign eventoLabelButtonGtag = item.tituloBoton.EventoLabelButtonGtag.getData()/>
207 </#if>
208
209
210 <div class="boton col-md-6 col-sm-12" onclick="handleButtonClick(event); gtag('event', '${the_title}', {'event_category' : '${item.Titulo.getData()}','event_label' : '${eventoLabelButtonGtag}'})">
211 <a href="${item.tituloBoton.URLBoton.getData()}" target="${pestania}" rel="noopener noreferrer">
212 <button class="${item.tituloBoton.botonType.getData()} heightbtnnav col-md-12 col-sm-12 cta">
213 ${item.tituloBoton.getData()}
214 </button>
215 </a>
216 </div>
217 </#if>
218 <#-- FIN BOTON -->
219
220 <#-- INICIO VIDEO -->
221 <#if (item.urlVideo.getData())?? && item.urlVideo.getData() != "" >
222
223 <#if (item.urlVideo.posicinVdeo.getData())?? && item.urlVideo.posicinVdeo.getData() != "" >
224 <#assign justifyContentValue = item.urlVideo.posicinVdeo.getData()>
225 <#else>
226 <#assign justifyContentValue = "flex-start">
227 </#if>
228
229 <#if (item.urlVideo.Controls.getData())?? && item.urlVideo.Controls.getData() != "false" && item.urlVideo.Controls.getData() != "" >
230 <#assign controls = "controls">
231 <#else>
232 <#assign controls = "">
233 </#if>
234
235 <#if (item.urlVideo.Autoplay.getData())?? && item.urlVideo.Autoplay.getData() != "false" && item.urlVideo.Autoplay.getData() != "" >
236 <#assign autoplay = "autoplay">
237 <#else>
238 <#assign autoplay = "">
239 </#if>
240
241 <#if (item.urlVideo.ReproducirEnBucle.getData())?? && item.urlVideo.ReproducirEnBucle.getData() != "false" && item.urlVideo.ReproducirEnBucle.getData() != "" >
242 <#assign loop = "loop">
243 <#else>
244 <#assign loop = "">
245 </#if>
246
247 <#if (item.urlVideo.AnchoVdeo.getData())?? && item.urlVideo.AnchoVdeo.getData() != "" >
248 <#assign anchoVideo = item.urlVideo.AnchoVdeo.getData() + '%'>
249 <#else>
250 <#assign anchoVideo = "320">
251 </#if>
252
253 <#if (item.urlVideo.AltoVdeo.getData())?? && item.urlVideo.AltoVdeo.getData() != "" >
254 <#assign altoVideo = item.urlVideo.AltoVdeo.getData() + '%'>
255 <#else>
256 <#assign altoVideo = "240">
257 </#if>
258
259 <div style="display: flex; justify-content: ${justifyContentValue}; margin: 20px 0;">
260 <video ${autoplay} ${controls} ${loop} height="${altoVideo}" width="${anchoVideo}">
261 <source src="${item.urlVideo.getData()}" type="video/mp4" />
262 Your browser does not support the video tag.
263 </video>
264 </div>
265 </#if>
266
267 <#-- INICIO URL -->
268 <#assign url = "#">
269 <#if (item.TituloURL.URL.getData())?? && item.TituloURL.URL.getData() != "" >
270 <#assign url = item.TituloURL.URL.getData()>
271 </#if>
272 <#assign targetURL = "_self">
273 <#if (item.TituloURL.URL.urlPestania.getData())?? && item.TituloURL.URL.urlPestania.getData() != "" >
274 <#assign targetURL = item.TituloURL.URL.urlPestania.getData() >
275 </#if>
276
277 <#if (item.TituloURL.getData())?? && item.TituloURL.getData() != "" >
278 <#if (item.TituloURL.TextoURL.getData())?? && item.TituloURL.TextoURL.getData() != "" >
279 <div class="divEnlace">
280 ${item.TituloURL.getData()}
281 <a class="enlaces enlacesUrl" style="color: #008F60; text-decoration: underline;" href ="${url}"
282 target="${targetURL}" rel="noopener noreferrer"
283 onclick="gtag('event', '${the_title}', {'event_category' : '${item.Titulo.getData()}','event_label' : '${eventLabel}'})"> ${item.TituloURL.TextoURL.getData()}
284 </a>
285 </div>
286 <#elseif (item.TituloURL.getData())?? && iitem.TituloURL.getData() != "">
287 <div class="divEnlace">
288 <a class="enlaces enlacesUrl" style="color: #008F60; text-decoration: underline;" href ="${url}" target="${targetURL}" rel="noopener noreferrer" onclick="gtag('event', '${the_title}', {'event_category' : '${item.Titulo.getData()}','event_label' : '${eventLabel}}'})">${item.TituloURL.getData()}
289 </a>
290 </div>
291 </#if>
292 <#elseif (item.TituloURL.TextoURL.getData())?? && item.TituloURL.TextoURL.getData() != "">
293 <div class="divEnlace">
294 <a class="enlaces enlacesUrl" style="color: #008F60; text-decoration: underline;" href ="${url}" target="${targetURL}" rel="noopener noreferrer"
295 onclick="gtag('event', '${the_title}', {'event_category' : '${item.Titulo.getData()}','event_label' : '${eventLabel}'})">
296 ${item.TituloURL.TextoURL.getData()}
297 </a>
298 </div>
299 </#if>
300 <#-- FIN URL -->
301 </div>
302 <#-- FIN COLLAPSE -->
303 </div>
304 </div>
305 </div>
306 </#list>
307 </#if>
308</div>
309
310<#if getterUtil.getBoolean(ScrollHorizontal.getData())>
311 <div style="display:none">
312 <div class="mensajeScroll">
313 <#if (AvisoScrollHorizontal.ImagenAvisoScroll.getData())?? && AvisoScrollHorizontal.ImagenAvisoScroll.getData() != "">
314 <img alt="${AvisoScrollHorizontal.ImagenAvisoScroll.getAttribute("alt")}" data-fileentryid="${AvisoScrollHorizontal.ImagenAvisoScroll.getAttribute("fileEntryId")}" src="${AvisoScrollHorizontal.ImagenAvisoScroll.getData()}" />
315 </#if>
316 <span>${AvisoScrollHorizontal.TextoAvisoScroll.getData()}</span>
317 </div>
318 </div>
319</#if>
320
321<#macro anclaH ancla>
322 <#if ancla?? && ancla != "">
323 id="${ancla}"
324 </#if>
325</#macro>
326
327<script>
328
329 $(document).ready(function() {
330 const enlacesAnclados = document.querySelectorAll("a[href*='#ancla']");
331 enlacesAnclados.forEach((enlace) => {
332 enlace.addEventListener("click", redireccionar);
333 });
334 });
335
336 //Ajusta la altura en funciona de si esta abierto o no
337 function alturaAcordeon(id, event) {
338 console.log(id);
339 const contenidoOculto = $(event.target).closest('.contenido-oculto');
340
341 // Detiene la propagacion del evento si se hace clic dentro de contenido-oculto
342 if (contenidoOculto.length > 0) {
343 event.stopPropagation();
344 return;
345 }
346
347 if ($('#' + id).hasClass('collapsed')) {
348 $('#' + id).css({ 'height': 'auto' });
349 $('#' + id + ' .contenido-oculto').css({ 'height': 'calc(100% - 40px)' });
350
351 } else {
352 $('#' + id).css({ 'height': 'fit-content' });
353 $('#' + id + ' .contenido-oculto').css({ 'height': 'auto' });
354 }
355 }
356
357 //Evita que se haga el efecto de cerrar al pulsar el boton
358 function handleButtonClick(event) {
359 event.stopPropagation();
360 }
361
362 function redireccionar(event) {
363 event.preventDefault();
364 var idAncla = event.target.getAttribute("href").split("#")[1];
365 const elementoRedirectAncla = document.getElementById(idAncla);
366
367 <#-- Verificar si se encontro el elemento antes de ajustar la altura y hacer el scroll -->
368 if (elementoRedirectAncla) {
369 const padreConClase = elementoRedirectAncla.closest(".titulodesplegable ");
370
371 if(padreConClase){
372 const padreDelPadre = padreConClase.parentNode;
373
374 if($('#'+padreDelPadre.id).hasClass('collapsed')){
375 padreDelPadre.click(); <#-- Llama a una funcion para que se abra el desplegable -->
376 }
377
378 }
379
380 <#-- Obtener la posición del ancla -->
381 const rect = elementoRedirectAncla.getBoundingClientRect();
382 const offsetX = Math.floor(rect.x);
383
384 var posicionAncla = Math.floor(rect.y) ;
385 var scrollY = window.scrollY;
386 var pantallaTamanio = window.innerHeight / 2;
387 //Caja donde se pulsa el ancla
388 var tamianioPadreEnlanceAncla = event.target.offsetParent.offsetHeight;
389 var menuTamanio = 100;
390
391 //elementoRedirectAncla.scrollIntoView({behavior: 'smooth', block: 'start'});
392 var offsetY ;
393
394 posicionAncla >= tamianioPadreEnlanceAncla ? offsetY = posicionAncla - menuTamanio - tamianioPadreEnlanceAncla : offsetY = posicionAncla - menuTamanio;
395
396 window.scrollBy(0, offsetY);
397 }
398 }
399
400 <#if getterUtil.getBoolean(ScrollHorizontal.getData())>
401 window.onload = function() {
402 var textCards = document.querySelectorAll('.contenido-oculto');
403
404 textCards.forEach(function(textCard) {
405 var parrafosConImagen = textCard.querySelectorAll('p:has(picture)');
406
407 if (parrafosConImagen.length > 0) {
408
409 parrafosConImagen.forEach(function(parrafoConImagen) {
410 var divImageContainer = document.createElement('div');
411 divImageContainer.className = 'image-container';
412
413 parrafoConImagen.parentNode.insertBefore(divImageContainer, parrafoConImagen);
414
415 divImageContainer.appendChild(parrafoConImagen);
416
417 var imagenesEnPicture = divImageContainer.querySelectorAll('picture img');
418 imagenesEnPicture.forEach(function(imagen) {
419 imagen.classList.add('imgScroll');
420 });
421
422 var mensajeScrollDiv = document.querySelector('.mensajeScroll');
423
424 if (mensajeScrollDiv) {
425 var mensajeScrollClone = mensajeScrollDiv.cloneNode(true);
426 divImageContainer.parentNode.insertBefore(mensajeScrollClone, divImageContainer.nextSibling);
427 }
428 });
429 }
430 });
431 };
432 </#if>
433
434</script>
435
436<style>
437 #simple_wrap .boton {
438 margin-top: 35px;
439 max-width: 347px;
440 padding: 0;
441 }
442
443 .icon48{
444 width: 48px;
445 height: 48px;
446 }
447
448 .divEnlace{
449 min-height: 40px;
450 margin-top: 30px;
451 display: flex;
452 align-items: center;
453 padding: 0;
454 }
455
456 .enlacesUrl{
457 margin-left: 5px;
458 }
459
460</style>
461
462<#if getterUtil.getBoolean(ScrollHorizontal.getData())>
463 <style>
464
465 .mensajeScroll{
466 display: flex;
467 justify-content: center;
468 align-items: center;
469 margin-top: 2em;
470 margin-bottom: 2em;
471 }
472
473 @media only screen and (min-width: 992px){
474 .mensajeScroll{
475 display: none;
476 }
477 }
478
479 @media (min-width: 769px){
480 div.image-container{
481 max-width: 100%;
482 display: flex;
483 justify-content: center;
484 align-items: center;
485 overflow-x: auto;
486 }
487 }
488
489 @media (max-width: 768px){
490 div.image-container{
491 max-width: none!important;
492 overflow-x: auto;
493 white-space: nowrap;
494 }
495 .portlet-journal-content .journal-content-article img.imgScroll{
496 max-width: none!important;
497 }
498
499 .textCard{
500 width: 100%;
501 }
502 }
503 </style>
504</#if>