002105_InondationsMaiJuin2016 - Catnat
Une erreur s'est produite lors du traitement du gabarit.
The following has evaluated to null or missing: ==> jsonResponse [in template "20101#20128#36857" at line 63, column 22] ---- 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 vueMarche = jsonResponse.getJ... [in template "20101#20128#36857" at line 63, column 1] ----
1<#assign serviceContext = staticUtil["com.liferay.portal.kernel.service.ServiceContextThreadLocal"].getServiceContext()>
2<#assign themeDisplay = serviceContext.getThemeDisplay() />
3
4
5<#-- --# -- main -->
6<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService" ) >
7
8<#assign dateModificationStr = "">
9<#assign dateDebutStr = "">
10<#assign dateFinStr = "">
11<#assign commentaireCoutPrincipal = "">
12<#assign imageCoutPrincipal = "">
13
14<#assign catnatServiceUtil = utilLocator.findUtil('catnat-services-hook', 'fr.catnat.services.CatNatServiceUtil')>
15<#attempt>
16 <#assign infosEvenement = catnatServiceUtil.getInfoEvenement(Numero_AGIR.getData())>
17 <#recover>
18 <#assign infosEvenement = [] >
19 </#attempt>
20
21<#if (infosEvenement?has_content)>
22 <#assign jsonResponse = jsonFactoryUtil.createJSONObject(infosEvenement)>
23 <#setting time_zone = "Europe/Paris">
24 <#setting time_zone = languageUtil.get(locale, "template-timezone")>
25
26 <#assign originalLocale = locale>
27
28 <#if jsonResponse.get('dateModification')?is_number>
29 <#assign dateModification = jsonResponse.getLong('dateModification') + 10800000>
30 <#assign dateModification = dateModification?number_to_datetime>
31 <#assign dateModificationStr = dateModification?date?string("dd/MM/yyyy")>
32 <#else>
33 <#assign dateModification = jsonResponse.getString('dateModification')>
34 <#assign dateModificationStr = dateModification?datetime("yyyy-MM-dd hh:mm:ss.SSS")?string("dd/MM/yyyy")>
35 </#if>
36
37
38 <#if jsonResponse.get('dateDebut')?is_number>
39 <#assign dateDebut = jsonResponse.getLong('dateDebut') + 10800000>
40 <#assign dateDebut = dateDebut?number_to_datetime>
41 <#assign dateDebutStr = dateDebut?date>
42 <#else>
43 <#assign dateDebut = jsonResponse.getString('dateDebut')>
44 <#assign dateDebutStr = dateDebut?date("yyyy-MM-dd")>
45
46 </#if>
47 <#if jsonResponse.get('dateFin')?is_number>
48 <#assign dateFin = jsonResponse.getLong('dateFin') + 10800000>
49
50 <#assign dateFin = dateFin?number_to_datetime>
51 <#assign dateFinStr = dateFin?date>
52 <#else>
53 <#assign dateFin = jsonResponse.getString('dateFin')>
54 <#assign dateFinStr = dateFin?date("yyyy-MM-dd")>
55
56 </#if>
57
58</#if>
59
60<#-- # -- main -->
61 <#assign assetUrlToRedirect = journalArticleLocalService.getDisplayArticleByUrlTitle(groupId, .vars['reserved-article-url-title'].data)>
62
63<#assign vueMarche = jsonResponse.getJSONObject('vueMarche')>
64
65<#-- #Prendre en compte le flag "Afficher cout" dans la contribution Liferay-->
66<#assign typeEvenement = jsonResponse.getString('typeEvenement')>
67<#assign title = jsonResponse.getString('libelle')>
68
69<#-- <#assign currentUrl = request.get("attributes").CURRENT_COMPLETE_URL > -->
70 <#assign currentUrl = themeDisplay.getPortalURL() + themeDisplay.getURLCurrent() />
71<#assign imageShare = "" >
72<style>
73 @media (max-width: 767px) {
74 #event_actions {
75 display: none;
76 }
77 .fa-download {
78 display: none;
79 }
80
81 #deptTrunc{
82 display: none;
83 }
84
85 #deptAll{
86 display: inline !important;
87 }
88 }
89</style>
90<script>
91function printEvent()
92{
93 var eventElement = document.getElementById('event_catnat');
94 var mywindow = window.open('', 'PRINT', '');
95 var printCss = document.getElementById('deptTrunc');
96
97 printCss.innerHTML = document.getElementById('deptAll').innerHTML;
98
99 mywindow.document.write('<html><head><title>' + document.title + '</title>');
100 mywindow.document.write('</head><body >');
101 mywindow.document.write('<h1>' + document.title + '</h1>');
102 mywindow.document.write(eventElement.innerHTML);
103 mywindow.document.write('</body></html>');
104 printCss
105
106 mywindow.document.close(); // necessary for IE >= 10
107 mywindow.focus(); // necessary for IE >= 10*/
108
109 mywindow.print();
110 mywindow.close();
111
112 return true;
113}
114
115<#--function downloadPDF (){
116 return printEvent();
117}-->
118
119var numeroAgir = '${Numero_AGIR.getData()}';
120
121function displayArretes(callback) {
122 callback(0, 8, false, '${Numero_AGIR.getData()}');
123}
124
125</script>
126
127<div class="main-wrapper" id="event_catnat">
128 <div class="display-3 primary">${title}</div>
129 <p> <span class="event_subtitle-txt">
130 Mise à jour le ${dateModificationStr}</span></p>
131 <br>
132 <div class="row">
133 <div class="col-md-8" style="padding: 0;">
134 <#if (!Image_principale.getData()?has_content)>
135 <img src="/images/favicon/mstile-70x70.png" alt="Image Evenement">
136 <#else>
137 <img src="${Image_principale.getData()}" class="event_img" alt="Image Evenement"/>
138 </#if>
139
140
141
142 <#if (validator.isNotNull(Resume.getData()))>
143 <div class="display-5 primary mt-4">${Resume.getData()}</div>
144 </#if>
145 </div>
146
147 <div class="col-md-4" style="padding: 0;">
148 <table style="width: 100%;border-spacing: 0px;" border="0">
149 <tbody>
150 <tr>
151 <td style="padding:15px;text-align: left; background-color: #f3f3f3;">
152 <table style="width:100%">
153 <tbody>
154 <tr>
155 <#if (validator.isNotNull(Information_cle_1_Valeur.getData()))>
156 <td width="60%"><span class="event_info_title">${Information_cle_1_Valeur.getData()}</span><br><span class="event_info" style="color: #1a5b81; font-weight: bold;">${Information_cle_1_Label.getData()}</span></td>
157 </#if>
158 <#if (validator.isNotNull(Information_cle_2_Valeur.getData()))>
159 <td><span class="event_info_title">${Information_cle_2_Valeur.getData()}</span><br><span class="event_info" style="color: #1a5b81;font-weight: bold;">${Information_cle_2_Label.getData()}</span> </td>
160 </#if>
161 <#-- --# Si mise en avant absente => Renseigner le coût de l'événement.-->
162 <#if (validator.isNull(Information_cle_1_Valeur.getData()) && validator.isNull(Information_cle_2_Valeur.getData()) && getterUtil.getBoolean(Afficher_cout.getData()))>
163 <#assign coutMarche = vueMarche.getJSONObject('cout')>
164 <td>
165 <span class="event_info_title" style="font-size: 24px;">${coutMarche.getString("coutStr")}</span><br>
166
167 <span class="event_info" style="color: #1a5b81; font-weight: bold;">
168 <#if (validator.isNotNull(Information_cle_cout.getData()))>
169 ${Information_cle_cout.getData()}
170 <#else>
171 Dommages assuré hors automobile
172 </#if>
173 </span>
174 </td>
175 </#if>
176 </tr>
177 </tbody>
178 </table>
179 <hr class="title-category-hr-chatams-blue" style="margin-top: 10px;margin-bottom: 10px;">
180 <table style="width:100%">
181 <tr>
182 <td width="60%">
183 <b>Date de début </b>
184 <br>
185 <span class="event_info">${dateDebutStr}</span>
186 </td>
187 <td>
188 <b>Date de fin</b>
189 <br>
190 <span class="event_info">${dateFinStr}</span>
191 </td>
192 </tr>
193 </table>
194
195 <#if (validator.isNotNull(Cours_eau.getData()))>
196 <br>
197 <b>Cours d'eau ayant débordé</b><br>
198 <p>${Cours_eau.getData()}</p>
199 </#if>
200
201 <#if (validator.isNotNull(jsonResponse.getString('pluviometrie1H'))|| validator.isNotNull(jsonResponse.getString('pluviometrie24H')))>
202 <br>
203 <br>
204 <b>Pluviométrie maximale</b>
205 <br>
206 <p>
207 <#if (validator.isNotNull(jsonResponse.getString('pluviometrie1H')))>
208 ${jsonResponse.getString('pluviometrie1H')} mm en 1h
209 </#if>
210 <#if (validator.isNotNull(jsonResponse.getString('pluviometrie1H')))>
211 <br>
212 ${jsonResponse.getString('pluviometrie24H')} mm en 24 h
213 </#if>
214 </p>
215 </#if>
216 <br>
217 <br>
218 <b>Départements concernés</b> <br>
219 <#assign deps = jsonResponse.getJSONArray('departementsTouches')>
220 <#assign fin = deps.length() - 1>
221
222 <#assign depsStr = "">
223 <#assign allDepsStr = "">
224 <#assign allDepsPrint = "">
225 <#list 0..fin as i>
226 <#assign dep = deps.getString(i)>
227 <#if i != 0>
228 <#assign separator = ', '>
229 <#else>
230 <#assign separator = ''>
231 </#if>
232
233 <#assign allDepsStr = allDepsStr + separator + dep>
234 <#if i < 6>
235 <#assign depsStr = depsStr + separator +dep>
236 </#if>
237 </#list>
238 <#if deps?length gt 6>
239 <#assign depsStr = depsStr + " ... ">
240
241 </#if>
242
243
244 <span id="deptTrunc" class="event_info" title="${allDepsStr}">
245 ${depsStr}
246 </span>
247
248 <span id="deptAll" class="event_info" style="display: none;">
249 ${allDepsStr}
250 </span>
251 <br>
252 <br>
253 <div class="pull-right" id="event_actions">
254
255 <#--<a href="#" OnClick="javascript:downloadPDF()" title="Telecharger le document"><i style="color:#1a5b81;font-size: 1.8em;" class="fas fa-download"></i></a>-->
256 <a href="#" OnClick="javascript:printEvent()" title="Imprimer le document"><i style="color:#1a5b81;font-size: 1.8em;" class="fas fa-print"></i></a>
257 </div>
258
259 </td>
260 </tr>
261 </tbody>
262 </table>
263 </div>
264 </div>
265 <br>
266
267
268
269 <div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true" style="text-align:justify">
270
271 <#if (validator.isNotNull(Description.getData()))>
272 <div class="panel panel-default">
273 <div class="panel-heading" role="tab" id="heading1">
274 <a role="button" data-toggle="collapse" href="#collapse1" aria-expanded="true" aria-controls="collapse1" class="collapse-head collapsed">
275 <h4 class="panel-title">
276 <span class="event_description_title">DESCRIPTION DE L'EVENEMENT</span>
277 </h4>
278 </a>
279 </div>
280 <div id="collapse1" class="panel-collapse collapse" role="tabpanel" aria-labelledby="heading1">
281 <div class="panel-body">
282 ${Description.getData()}
283 </div>
284 </div>
285 </div>
286 </#if>
287
288
289 <#if (validator.isNotNull(Dommages.getData()))>
290
291 <div class="panel panel-default">
292
293 <div class="panel-heading" role="tab" id="heading2">
294 <a role="button" data-toggle="collapse" href="#collapse2" aria-expanded="false" aria-controls="collapse2" class="collapse-head collapsed">
295 <h4 class="panel-title">
296 <span class="event_description_title">DOMMAGES CONSTATES</span>
297 </h4>
298 </a>
299 </div>
300
301 <div id="collapse2" class="panel-collapse collapse" role="tabpanel" aria-labelledby="heading2">
302 <div class="panel-body">
303 ${Dommages.getData()}
304 </div>
305 </div>
306 </div>
307 </#if>
308
309
310
311 <#assign communes = jsonResponse.getJSONArray('communesTouchees')>
312 <#if validator.isNotNull(communes) && communes?length gt 0 && communes != "[]">
313 <div class="panel panel-default">
314 <div class="panel-heading" role="tab" id="heading3">
315 <a role="button" data-toggle="collapse" href="#collapse3" aria-expanded="false" aria-controls="collapse3" class="collapse-head collapsed">
316 <h4 class="panel-title">
317 <span class="event_description_title"> COMMUNES LES PLUS SINISTREES</span>
318 </h4>
319 </a>
320 </div>
321 <div id="collapse3" class="panel-collapse collapse" role="tabpanel" aria-labelledby="heading3">
322 <div class="panel-body">
323
324 <#assign fin = communes?length - 1>
325 <#list 0..fin as i>
326 <#assign commune = communes.getString(i)>
327 <#if commune??>
328 <p>${commune}</p>
329 </#if>
330 </#list>
331 </div>
332 </div>
333 </div>
334 </#if>
335
336
337
338
339 <#assign vueMarche = jsonResponse.getJSONObject('vueMarche')>
340
341 <#-- --#Prendre en compte le flag "Afficher cout" dans la contribution Liferay-->
342 <#assign typeEvenement = jsonResponse.getString('typeEvenement')>
343
344 <#if (getterUtil.getBoolean(Afficher_cout.getData()))>
345
346 <div class="panel panel-default">
347 <div class="panel-heading" role="tab" id="heading4">
348 <a role="button" data-toggle="collapse" href="#collapse4" aria-expanded="true" aria-controls="collapse4" class="collapse-head collapsed">
349 <h4 class="panel-title">
350 <span class="event_description_title">COÛT DE L'EVENEMENT</span>
351 </h4>
352 </a>
353 </div>
354 <div id="collapse4" class="panel-collapse collapse" role="tabpanel" aria-labelledby="heading4">
355 <div class="panel-body">
356 <#assign coutMarche = vueMarche.getJSONObject('cout')>
357 <#assign dateCoutPrincipal = coutMarche.getLong('dateCout') + 10800000>
358 <#assign dateCoutPrincipal = dateCoutPrincipal?number_to_datetime>
359 <#assign dateCoutPrincipalStr = dateCoutPrincipal?date?string("dd/MM/yyyy")>
360
361 <p><b>${coutMarche.getString("coutStr")}</b>
362
363 <#if (cout.getSiblings()?has_content)>
364 <#-- # Récupération du commentaire (liferay) correspondant au cout principal
365 ## Parcours de la liste des couts du document liferay, pour trouver le commentaire correspondant au cout recu via le service web-->
366 <#list cout.getSiblings() as cur_cout>
367 <#assign cout_Data = cur_cout.getData()>
368 <#if cout_Data?has_content>
369 <#assign cout_DateObj =cout_Data>
370
371 <#assign coutDate = cout_DateObj?datetime("yyyy-mm-dd")?string("dd/MM/yyyy")>
372 <#-- TODO Must check this Part -->
373 <#-- <#if (coutDate == dateCoutPrincipalStr)> -->
374 <#assign commentaireCoutPrincipal = getterUtil.getString(cur_cout.getChild("Commentaire_cout").getData())>
375 <#assign imageCoutPrincipal = cur_cout.getChild("Image_cout_par_commune").getData()>
376 <#-- </#if> -->
377
378 </#if>
379 </#list>
380 </#if>
381 (mise à jour le : ${dateCoutPrincipalStr}) </p>
382
383 <#if (validator.isNotNull(commentaireCoutPrincipal))>
384 <p>${commentaireCoutPrincipal}</p>
385 </#if>
386
387 <#if (validator.isNotNull(imageCoutPrincipal))>
388 <img alt="Cout par commune pour l'ensemble du marché" style="width:100%;" src="${imageCoutPrincipal}" />
389 </#if>
390
391 <br>
392
393 <#if vueMarche.get('coutsPrecedents') != "null">
394
395 <#assign coutsPrecedents = vueMarche.getJSONArray('coutsPrecedents')>
396 <#if validator.isNotNull(coutsPrecedents) && coutsPrecedents?length gt 0>
397
398 <p><b>Rappel des estimations précedentes</b></p>
399 <#assign fin = coutsPrecedents.length() - 1>
400 <#list 0..fin as i>
401 <#if coutsPrecedents.get(i).get('dateCout')?is_number>
402 <#assign dateCoutPrecedent = coutsPrecedents.get(i).getString('dateCout')?number + 10800000>
403 <#assign dateCoutPrecedent = dateCoutPrecedent?number_to_datetime>
404 <#assign dateCoutPrecedentStr = dateCoutPrecedent?date?string("dd/MM/yyyy")>
405 <#else>
406 <#assign dateCoutPrecedentStr = coutsPrecedents.get(i).get('dateCout')?datetime("yyyy-mm-dd")?string("dd/MM/yyyy")>
407 </#if>
408
409
410 <#-- TODO -->
411 <#list cout.getSiblings() as cur_cout>
412 <#assign cout_DateObj = cur_cout.getData()>
413 <#assign coutDate = cout_DateObj?datetime("yyyy-MM-dd")?string("dd/MM/yyyy")>
414 <#-- TODO (Must Check this Part) -->
415 <#-- <#if coutDate==dateCoutPrecedentStr> -->
416 <#assign commentaireCout = getterUtil.getString(cur_cout.getChild("Commentaire_cout").getData())?replace("<p>","")?replace("</p>","")>
417 <p>Le ${dateCoutPrecedentStr} : <b>${coutsPrecedents.get(i).getString("coutStr")}</b> (${commentaireCout})</p>
418 <#-- </#if> -->
419 </#list>
420
421 </#list>
422 </#if>
423 </#if>
424
425 </div>
426 </div>
427 </div>
428 </#if>
429 <div class="panel panel-default">
430 <div class="panel-heading" role="tab" id="heading5">
431 <a role="button" data-toggle="collapse" href="#collapse5" aria-expanded="true" aria-controls="collapse5" class="collapse-head collapsed">
432 <h4 class="panel-title">
433 <span class="event_description_title">RECONNAISSANCES CAT NAT</span>
434 </h4>
435 </a>
436
437 </div>
438 <div id="collapse5" class="panel-collapse collapse" role="tabpanel" aria-labelledby="heading5">
439 <div class="panel-body">
440 <p>Nombre de communes reconnues Cat Nat : <b>${vueMarche.getString("nombreCommunesReconnuesCatNat")}</b> </p>
441
442 <#if (validator.isNotNull(Image_reco.getData()))>
443 <img style="max-width:800px;width:100%" alt="Communes reconnues en 굡t de catastrophes naturelle" src="${Image_reco.getData()}" />
444 </#if>
445 </div>
446 </div>
447 </div>
448
449 <#if (validator.isNotNull(Source.getData()))>
450 <div class="panel panel-default">
451 <div class="panel-heading" role="tab" id="heading6">
452 <a role="button" data-toggle="collapse" href="#collapse6" aria-expanded="true" aria-controls="collapse6" class="collapse-head collapsed">
453 <h4 class="panel-title">
454 <span class="event_description_title">SOURCES</span>
455 </h4>
456 </a>
457 </div>
458 <div id="collapse6" class="panel-collapse collapse" role="tabpanel" aria-labelledby="heading6">
459 <div class="panel-body">
460 ${Source.getData()}
461 </div>
462 </div>
463 </div>
464 </#if>
465
466
467 </div>
468
469
470</div>
471<div class="ssk-sticky ssk-left ssk-center ssk-lg">
472
473<#assign resumeEvenementSafe = Resume.getData()?replace("\'", "\\'") >
474<#assign resumeEvenementSafe = resumeEvenementSafe?replace("'", "\\'") >
475
476<a href="#" class="ssk ssk-facebook" data-ssk-ready="true" onclick="shareFacebook(${title},${title},${imageShare}, ${currentUrl}, false); return false;"></a>
477<a href="" class="ssk ssk-twitter" data-ssk-ready="true" onclick="window.open('http://twitter.com/share?text=${title}&url=${currentUrl}', 'twitter-share-dialog', 'menubar=no,toolbar=no,resizable=yes,scrollbars=no, width=800,height=500');return false;"></a>
478<a href="#" class="ssk ssk-linkedin" data-ssk-ready="true" onclick="window.open('https://www.linkedin.com/shareArticle?mini=true&url=${currentUrl}', 'linkedin-share-dialog', 'menubar=no,toolbar=no,resizable=yes,scrollbars=no,width=800,height=500');return false;"></a>
479
480</div>