Ruta de navegación
Pagas tus cuentas en Sencillito
Aviso mensaje mantencion
Se ha producido un error al procesar la plantilla.
The following has evaluated to null or missing: ==> request.getParameter("convenioId") [in template "61606#61645#1703808" at line 2, column 11] ---- 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: valor = request.getParameter("conveni... [in template "61606#61645#1703808" at line 2, column 3] ----
1<#assign
2 valor = request.getParameter("convenioId")
3 instanceId = portletDisplay.getInstanceId()
4/>
5
6<script>
7// Creamos un objeto para almacenar los datos de alerta específicos de esta instancia
8window['alertData_${instanceId}'] = {
9 isLimitedAlert: false,
10 fechaHoraInicioAlerta: '',
11 fechaHoraFinAlerta: ''
12};
13</script>
14
15<#if Convenio.getSiblings()?has_content>
16 <#list Convenio.getSiblings() as cur_Convenio>
17 <#if valor == cur_Convenio.getData()>
18 <#if getterUtil.getBoolean(cur_Convenio.MostrarPorTiempoLimitado.getData())>
19 <script>
20 var alertData = window['alertData_${instanceId}'];
21 alertData.isLimitedAlert = true;
22 alertData.fechaHoraInicioAlerta = new Date('${cur_Convenio.FechaYHoraInicio.getData()}');
23 alertData.fechaHoraFinAlerta = new Date('${cur_Convenio.FechaYHoraFin.getData()}');
24 console.info('isLimitedAlert', alertData.isLimitedAlert);
25 </script>
26 </#if>
27 <div class="d-none" data-convenio-alert="${instanceId}">
28 <div class="igt-max-w-max igt-bg-blue-100 igt-mb-4 igt-text-blue-900 igt-text-sm igt-p-4 igt-rounded-xl igt-flex igt-gap-2">
29 <span>
30 <@clay["icon"] symbol="info-panel-open" />
31 </span>
32 ${cur_Convenio.Parrafo.getData()}
33 </div>
34 </div>
35 </#if>
36 </#list>
37</#if>
38
39<script>
40
41(() => {
42 Liferay.on('allPortletsReady', function() {
43 const container = document.querySelector('section.ppt-categorias');
44 const alerts = Array.from(document.querySelectorAll('[data-convenio-alert]'));
45 const alert = document.querySelector('[data-convenio-alert=${instanceId}]');
46 const alertData = window['alertData_${instanceId}'];
47
48 if (container) {
49 if (alert != null) {
50 const indice = alerts.findIndex(a => a === alert);
51 if (indice == 0) {
52 container.insertBefore(alert, container.firstChild);
53 } else {
54 container.append(alert);
55 }
56 }
57 }
58
59 if (alert && alert != null) {
60 const fechaHoraActualAlerta = new Date();
61 console.info('isLimitedAlert', alertData.isLimitedAlert);
62 if (alertData.isLimitedAlert) {
63 console.info('Alert ok');
64 console.info('Hora actual: ', fechaHoraActualAlerta);
65 console.info('Hora inicio mensaje: ', alertData.fechaHoraInicioAlerta);
66 console.info('Hora fin mensaje: ', alertData.fechaHoraFinAlerta);
67 if (fechaHoraActualAlerta >= alertData.fechaHoraInicioAlerta && fechaHoraActualAlerta <= alertData.fechaHoraFinAlerta) {
68 alert.classList.remove("d-none");
69 } else {
70 alert.classList.add("d-none");
71 }
72 } else {
73 alert.classList.remove("d-none");
74 }
75 }
76 });
77})();
78
79</script>
80
81<style>
82 .igt-bg-blue-100 {
83 background-color: #e0e8fa;
84 }
85
86 .igt-text-blue-900 {
87 color: #4c5a99;
88 }
89
90 .igt-text-sm {
91 font-size: 0.875rem;
92 line-height: 1.25rem;
93 }
94
95 .igt-p-4 {
96 padding: 1rem;
97 }
98
99 .igt-rounded-xl {
100 border-radius: 0.75rem;
101 }
102
103 .igt-flex {
104 display: flex;
105 }
106
107 .igt-gap-2 {
108 gap: 0.5rem;
109 }
110
111 .igt-mb-4 {
112 margin-bottom: 1rem;
113 }
114
115 .igt-max-w-max {
116 max-width: max-content;
117 }
118</style>