Si è verificato un errore nell'elaborarazione del modello.
The following has evaluated to null or missing: ==> titulo [in template "20907#20945#63144510" at line 43, column 19] ---- 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: ${titulo} [in template "20907#20945#63144510" at line 43, column 17] ----
1<link href="https://vjs.zencdn.net/7.11.4/video-js.css" rel="stylesheet" />
2<link href="https://www.gipuzkoa.eus/documents/3767975/33151936/dipu.css" rel="stylesheet" />
3<link href="https://www.gipuzkoa.eus/documents/3767975/33151936/videojs-logo.css" rel="stylesheet" />
4<!-- If you'd like to support IE8 (for Video.js versions prior to v7) -->
5<script src="https://vjs.zencdn.net/ie8/1.1.2/videojs-ie8.min.js"></script>
6<script src="https://vjs.zencdn.net/7.11.4/video.min.js"></script>
7<script src="https://www.gipuzkoa.eus/documents/3767975/33151936/videojs-logo.min.js"></script>
8
9<#if locale.getLanguage()=="es">
10<#assign elige = 'Elige tu webcam' >
11<#assign titulo = 'Webcams' >
12</#if>
13<#if locale.getLanguage()=="fr">
14<#assign elige = 'Choisissez votre webcam' >
15<#assign titulo = 'Webcams' >
16</#if>
17<#if locale.getLanguage()=="en">
18<#assign elige = 'Choose your webcam' >
19<#assign titulo = 'Webcams' >
20</#if>
21<#if locale.getLanguage()=="eu">
22<#assign elige = 'Aukeratu zure webcam-a' >
23<#assign titulo = 'Webcam-ak' >
24</#if>
25
26<#if locale.getLanguage() == 'es'>
27<script src="https://vjs.zencdn.net/8.0.4/lang/es.js"></script>
28<#assign logoEtorkizunaOrain = 'Logo Etorkizuna Orain'>
29<#assign logoForuAldundia = 'Logo Diputación Foral de Gipuzkoa' >
30
31<#else>
32<script src="https://vjs.zencdn.net/8.0.4/lang/eu.js"></script>
33<#assign logoEtorkizunaOrain = 'Etorkizuna Orain logoa'>
34<#assign logoForuAldundia = 'Gipuzkoako Foru Aldundiaren logoa' >
35</#if>
36
37
38<div class="inner-header">
39 <div class="aspect-ratio"><img alt="" src="/documents/20109831/0/cab-webcams.jpg/2a0a276e-a446-de37-f2d2-0310b0567a5d?t=1704886514980" /></div>
40
41 <div class="fila">
42 <div class="columns large-12">
43 <h1>${titulo}</h1>
44 </div>
45 </div>
46</div>
47
48
49<div class="fila">
50 <div class="columns large-12">
51 <img alt="" src="/documents/20109831/0/mapa-playas.jpg/b54ba74a-ddaf-24fc-939f-a94dc7db1024?t=1704886752509" /></div>
52 </div>
53</div>
54<div class="fila">
55 <div class="columns large-12">
56 <h3 style="text-align: center; margin-bottom: 20px; margin-top: 40px;"><img alt="" src="/documents/20109831/0/pico-webcam.jpg/ee1bd565-586b-aaf1-b0a3-3bddb1843362?t=1704887611391" /></h3>
57 <h2 style="text-align: center; text-transform: uppercase; font-size: 30px; font-weight: bold;">${elige}</h2>
58 </div>
59</div>
60
61<div class="fila">
62 <div class="columns large-12">
63 <ul class="listado-webcams" data-playa="${playa.getData()}">
64 <li class="" data-playa="deba01">
65 <a href="/-/deba-webcam" ><strong>DEBA</strong>-SANTIAGO</a>
66 </li>
67 <li class="" data-playa="donostia01">
68 <a href="/-/donostia-concha-webcam"><strong>DONOSTIA / SAN SEBASTIÁN</strong>-LA CONCHA </a>
69 </li>
70 <li class="" data-playa="donostia02">
71 <a href="/-/donostia-ondarreta-webcam"><strong>DONOSTIA / SAN SEBASTIÁN</strong>-ONDARRETA </a>
72 </li>
73 <li class="" data-playa="donostia03">
74 <a href="/-/donostia-zurriola-webcam"><strong>DONOSTIA / SAN SEBASTIÁN</strong>-ZURRIOLA</a>
75 </li>
76 <li class="" data-playa="getaria01">
77 <a href="/-/getaria-webcam"><strong>GETARIA</strong>-MALKORBE </a>
78 </li>
79 <li class="" data-playa="hondarribia01">
80 <a href="/-/hondarribia-webcam"><strong>HONDARRIBIA</strong> </a>
81 </li>
82 <li class="" data-playa="mutriku01">
83 <a href="/-/mutriku-webcam"><strong>MUTRIKU</strong> </a>
84 </li>
85 <li class="" data-playa="mutriku02">
86 <a href="/-/mutriku-saturraran-webcam"><strong>MUTRIKU</strong>-SATURRARAN </a>
87 </li>
88 <li class="" data-playa="orio01">
89 <a href="/-/orio-webcam"><strong>ORIO</strong>-ANTILLA </a>
90 </li>
91 <li class="" data-playa="zarautz01">
92 <a href="/-/zarautz-webcam"><strong>ZARAUTZ</strong></a>
93 </li>
94 <li class="" data-playa="zumaia01">
95 <a href="https://zumaia.eus/eu/turismoa/zumaia-herria/webcam" target="_blank"><strong>ZUMAIA</strong>-ITZURUN</a>
96 </li>
97 </ul>
98 </div>
99</div>
100
101<div class="fila" style="margin-top: 160px!important;">
102 <div class="columns large-8 large-offset-2">
103 <p>
104 <video autoplay="" class="video-js vjs-theme-dipu" controls="true" fluid="true" id="video1" muted="" playsinline="playsinline" preload="auto"><source src="${webcamUrl.getData()}" type="application/x-mpegURL" /></video>
105 </p>
106 <p style="font-size:18px; text-transform: uppercase;">${title.getData()}</p>
107
108 </div>
109</div>
110
111
112<style>
113 .listado-webcams { list-style: none; padding: 0; margin: 20px auto; display: flex; flex-wrap: wrap; justify-content: center; }
114 .listado-webcams li { display: inline-flex; margin: 10px 20px; }
115 .listado-webcams li a { color: #000; transition: all .3s ease; position: relative; }
116 .listado-webcams li a::after { content:""; position: absolute; left: 0; right: 0; bottom: -5px; height: 1px; background-color: #000;}
117 .listado-webcams li a:hover { color: #00588F; }
118 .listado-webcams li a:hover::after { background-color: #00588F;}
119 .listado-webcams li.active a { color: #00588F; pointer-events: none; }
120 .listado-webcams li.active a::after { background-color: #00588F;}
121 .inner-header { margin-bottom: 40px; }
122</style>
123
124
125<script>
126 var myplayer = videojs('video1');
127
128 myplayer.logo({
129 image: "https://www.gipuzkoa.eus/documents/3767975/33151936/logo-player.png",
130 height:50,
131 position:"top-left"
132 });
133
134 var myPlayer = videojs('video1',{
135 controlBar: {
136 children: [
137 "playToggle",
138 "fullscreenToggle",
139 "durationDisplay",
140 "timeDivider",
141 "currentTimeDisplay",
142 "progressControl",
143 "remainingTimeDisplay"
144 ]
145 }
146 });
147
148 videojs.getPlayer('video1').ready(function() {
149 // Create variables and new div, anchor and image for download icon
150 var myPlayer = this,
151 controlBar,
152 newElement = document.createElement('div'),
153 newLink = document.createElement('a'),
154 newImage = document.createElement('img');
155 // Assign id and classes to div for icon
156 newElement.id = 'downloadButton';
157 newElement.className = 'downloadStyle vjs-control';
158 // Assign properties to elements and assign to parents
159 newImage.setAttribute('src','https://www.gipuzkoa.eus/documents/3767975/33151936/logodipu.jpg');
160 newImage.setAttribute('alt','${logoForuAldundia}');
161 newLink.appendChild(newImage);
162 newElement.appendChild(newImage);
163 // Get controlbar and insert before elements
164 // Remember that getElementsByClassName() returns an array
165 controlBar = document.getElementsByClassName('vjs-control-bar')[0];
166 // Change the class name here to move the icon in the controlBar
167 insertBeforeNode = document.getElementsByClassName('vjs-volume-menu-button')[0];
168 // Insert the icon div in proper location
169 controlBar.insertBefore(newElement,insertBeforeNode);
170
171 myPlayer.logo().div.getElementsByTagName("img")[0].alt="${logoEtorkizunaOrain}"
172
173 });
174
175 document.addEventListener('DOMContentLoaded', function() {
176 // Encuentra el elemento UL
177 var ul = document.querySelector('ul.listado-webcams');
178
179 // Obtiene el valor del atributo data del UL
180 var ulDataValue = ul.getAttribute('data-playa');
181
182 // Encuentra todos los elementos LI dentro del UL
183 var lis = ul.querySelectorAll('li');
184
185 // Itera sobre cada LI
186 lis.forEach(function(li) {
187 // Obtiene el valor del atributo data del LI
188 var liDataValue = li.getAttribute('data-playa');
189
190 // Compara los valores data del LI y del UL
191 if (liDataValue === ulDataValue) {
192 // Si coinciden, añade la clase 'active'
193 li.classList.add('active');
194 }
195 });
196});
197
198</script>