Intesa Mistral LUG05 Serie I, II
Si è verificato un errore nell'elaborarazione del modello.
The following has evaluated to null or missing: ==> label_gestione_separata_associata [in template "10154#10194#TEMPLATE_RENDIMENTI_E_QUOTAZIONI" at line 1277, column 72] ---- Tip: If the failing expression is known to be 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 titolo_gs_associata = label_g... [in template "10154#10194#TEMPLATE_RENDIMENTI_E_QUOTAZIONI" at line 1277, column 41] ----
1<#-- Questo web content deve poter utilizzare CSS e JS di Intesa_Vita-theme7 o di ISPVita-theme, a seconda di come e' configurata la pagina -->
2
3<link href="${themeDisplay.getPathThemeRoot()}/css/portlets/rendimentiequotazioni/dettaglio/jquery.jqplot.min.css" rel="stylesheet" />
4<link href="${themeDisplay.getPathThemeRoot()}/css/portlets/rendimentiequotazioni/jquery-ui.css" rel="stylesheet" />
5<link href="${themeDisplay.getPathThemeRoot()}/css/portlets/rendimentiequotazioni/dettaglio/rendimentoDettaglioValore.css" rel="stylesheet" />
6
7<#if (impostaDataDefault?has_content && getterUtil.getBoolean(impostaDataDefault.getData()))>
8 <#assign data_inizio_default_grafico_Data = getterUtil.getBoolean(impostaDataDefault.data_inizio_default_grafico.getData())>
9<#else>
10 <#assign data_inizio_default_grafico_Data = 0>
11</#if>
12
13
14
15
16<#assign _scopeThemplateNameSite = themeDisplay.getScopeGroup()>
17<#assign groupId = themeDisplay.getScopeGroup().getGroupId()>
18
19<#if data_inizio_default_grafico_Data gt 0 >
20 <#assign data_inizio_default_grafico_DateObj = dateUtil.newDate(data_inizio_default_grafico_Data)>
21 <#assign dataDefaultVisualizzazione = dateUtil.getDate(data_inizio_default_grafico_DateObj, "yyyy/MM/dd", locale)>
22 <div id="dataDefaultVisualizzazionediv" style="display:none;">${dataDefaultVisualizzazione}</div>
23<#else>
24 <div id="dataDefaultVisualizzazionediv" style="display:none;"></div>
25</#if>
26
27<#assign logaritmica = false>
28<#if Abilita_scala_logaritmica?has_content>
29 <#assign logaritmica = getterUtil.getBoolean(Abilita_scala_logaritmica.getData())>
30</#if>
31
32<#if groupLocalService.getGroup(groupId).getName()?contains("areapubblica (Staging)") || groupLocalService.getGroup(groupId).getName()?contains("areapubblica")>
33
34 <#if Fondo_In_valuta?? && getterUtil.getBoolean(Fondo_In_valuta.getData())> <#-- Se Fondo_In_valuta = true -->
35 <#-- INIZIO GS IN VALUTA -->
36 <#assign localeIT = localeUtil.fromLanguageId("it")>
37 <#assign currentGroup = groupLocalService.getGroup(groupId)>
38 <#assign checkDisplayDate = !currentGroup.isStagingGroup()>
39 <#assign user = "">
40 <#if request?has_content && request.getRemoteUser()?has_content && request.getRemoteUser()!="">
41 <#assign user = userLocalService.getUserById(getterUtil.getLong(request.getRemoteUser()))>
42 <#else>
43 <#assign user = userLocalService.getDefaultUser(getterUtil.getLong(companyId))>
44 </#if>
45
46 <#assign current_url = request.getAttribute("CURRENT_URL")>
47 <#assign catIdStr = httpUtil.decodeURL(httpUtil.getParameter(current_url, "catId", false))>
48 <#assign catId = getterUtil.getLong(catIdStr)>
49 <!-- catIdStr - catId -->
50 <#assign subcatIdStr = httpUtil.decodeURL(httpUtil.getParameter(current_url, "subcatId", false))>
51 <#assign subcatId = getterUtil.getLong(subcatIdStr)>
52 <!-- subcatIdStr - subcatId -->
53 <#assign categoria = httpUtil.decodeURL(httpUtil.getParameter(current_url, "categoria", false))>
54 <!-- categoria -->
55 <#assign sottoCategoria = httpUtil.decodeURL(httpUtil.getParameter(current_url, "sottocategoria", false))>
56 <!-- $sottoCategoria -->
57
58
59 <!-- Take layout id -->
60 <#assign currentLayoutId = themeDisplay.getPlid()>
61 <#assign currentLayout = layoutLocalService.getLayout(currentLayoutId)>
62
63 <!-- parent layoutId -->
64 <#assign currentLayoutParentPlid = currentLayout.getParentPlid()>
65 <#assign currentLayoutParent = layoutLocalService.getLayout(currentLayoutParentPlid)>
66
67
68 <#assign catKey = assetCategoryPropertyLocalService.fetchCategoryProperty(catId, "chiave").getValue()>
69 <#if validator.isNull(catKey)>
70 <#assign catKey = assetCategoryLocalService.getAssetCategory(catId).getName()>
71 </#if>
72
73 <#assign catColor = assetCategoryPropertyLocalService.fetchCategoryProperty(catId, "colore").getValue()>
74
75 <#assign isOICR = false>
76 <!-- pretitolo -->
77 <#if getterUtil.getBoolean(visualizza_label_gestione_separata_associata.getData()) || catKey?lower_case == "rivalutabili">
78 <#assign pre_titolo_rendimento = "Gestione Separata">
79 <#elseif categoria?lower_case == "index linked">
80 <#assign pre_titolo_rendimento = "Indice">
81 <#elseif categoria?lower_case == "oicr">
82 <#assign pre_titolo_rendimento = "OICR">
83 <#assign isOICR = true>
84 <#else>
85 <#assign pre_titolo_rendimento = "Fondo">
86 </#if>
87
88 <!-- valore dei fondi dal web content -->
89 <#assign valoreFondoUno = confTool.getValoreFondoFromStr(valore_1.getData(), locale)>
90
91 <#if getterUtil.getBoolean(Fondo_In_valuta.getData())>
92 <!-- titolo -->
93 <#assign titolo_rendimento = Titolo_rendimento.getData()>
94
95 <#assign valutaFondoUno = valuta1.getData()>
96 <#assign ultimaDataCambio = dateUtil.getDate(confTool.getLatestTassoDiCambio().getDataCambio(), "dd/MM/yyyy", localeIT)>
97
98 </#if>
99
100 <!-- INIZIO PRIMO BLOCCO -->
101
102 <#assign titolo_gs_associata = label_gestione_separata_associata.getData()>
103 <#assign titolo_da_visualizzare = titolo_rendimento>
104
105 <#if getterUtil.getBoolean(visualizza_label_gestione_separata_associata.getData()) && validator.isNotNull(titolo_gs_associata)>
106 <#if categoria?lower_case == "previdenza">
107 <#assign titolo_da_visualizzare = titolo_gs_associata>
108 </#if>
109 </#if>
110 <div class="boxesDettaglio togliMargin">
111 <div>
112 <div class="supTitle capitalize">${pre_titolo_rendimento}</div>
113 <h1 class="titoloRendimento">${titolo_da_visualizzare}</h1>
114 </div>
115
116 <!-- blocco valore corrente valore protetto -->
117
118 <script type="text/javascript">
119
120 var divisaSimboloMap = {
121 'EUR': '€',
122 'USD': '$',
123 '':'',
124 '%':'%'
125 };
126
127 jQuery(document).ready(function(){
128 var listaValuta=jQuery(".titoloValuta");
129 if (listaValuta!=null){
130 for (var i=0;i<listaValuta.length;i++){
131 if (listaValuta.get(i).innerHTML.indexOf(',')!=-1){
132 var listaValuta_split = listaValuta.get(i).innerHTML.split(',');
133 var parteIntera = listaValuta_split[0];
134 if(listaValuta_split[1].indexOf(" ")){
135 var listaValuta1_split = listaValuta_split[1].split(" ");
136 var parteDecimale = listaValuta1_split[0];
137 var parteValuta = listaValuta1_split[1];
138 }else{
139 var parteDecimale = listaValuta_split[1];
140 var parteValuta = "";
141 }
142
143 var parteValutaMap = (parteValuta!=""?" " + divisaSimboloMap[parteValuta]:"");
144 console.log(parteValutaMap + "-" + parteValuta );
145 var html = parteIntera + ",<span class='decimali'>" + parteDecimale + "</span>" + (parteValutaMap!=" undefined"? parteValutaMap:parteValuta);
146 listaValuta.get(i).innerHTML = html;
147 }else{
148 console.log(listaValuta.get(i).innerHTML);
149 if(listaValuta.get(i).innerHTML.indexOf(" ")!=-1){
150 var listaValuta_split = listaValuta.get(i).innerHTML.split(" ");
151 var parteIntera = listaValuta_split[0];
152 var parteValuta = listaValuta_split[1];
153 var parteValutaMap = (parteValuta!=""?" " + divisaSimboloMap[parteValuta]:"");
154 console.log(parteValutaMap + "-" + parteValuta );
155 var html = parteIntera + " " + (parteValutaMap!=" undefined"? parteValutaMap:parteValuta);
156 listaValuta.get(i).innerHTML = html;
157 }
158 }
159 }
160 }
161 });
162 </script>
163
164 <!-- blocco a singola colonna -->
165 <div class="bloccoValori" >
166 <h4 class="titoloValori">${Label_valore_corrente.getData()}</h4>
167 <div class="bloccoValuta">
168 <h3 class="titoloValuta">${valoreFondoUno} ${valutaFondoUno}</h3>
169 <h6 class="dataValuta">Aggiornato al ${ultimaDataCambio}</h6>
170 </div>
171 </div>
172
173 </div>
174 <!-- FINE PRIMO BLOCCO -->
175
176 <div class="template_rendimenti_e_quotazioni">
177 <!-- INIZIO BLOCCO (GRAFICO STORICO) -->
178 <div class="boxesDettaglio storicGraph">
179 <#assign _listaTassiDiCambio = confTool.getTassoDiCambio()>
180 <div class="reset">
181 <h5 class="titolo">
182 Andamento del tasso di cambio Euro/Dollari rilevato alle 14:00 ora italiana. <small class="">Dati aggiornati al ${ultimaDataCambio}.</small>
183 </h5>
184 <#if _listaTassiDiCambio?size gt 0>
185 <div class="graficoRendimento" >
186 <div id="chartdiv"></div>
187 </div>
188 <div class="datePickers reset">
189 <p class="inizio">
190 <input type="text" class="datePicker" id="datepickerDa" value="" />
191 </p>
192 <p class="fine">
193 <input type="text" class="datePicker" id="datepickerA" value="" />
194 </p>
195 </div>
196 <p class="reset">Visualizzazione andamento dal <span id="andamentoDa"></span> al <span id="andamentoA"></span></p>
197 <p class="reset" style="font-style:italic">
198 Attenzione: i valori passati non sono indicativi di quelli futuri.
199 </p>
200 </#if>
201 </div>
202 </div>
203 <!-- FINE BLOCCO GRAFICO -->
204
205 <!-- BLOCCO PROSPETTO -->
206 <#if !(
207 !Colonna_prospetto.getSiblings()?has_content ||
208 (Colonna_prospetto.getSiblings()?size==1 && Colonna_prospetto.getSiblings()[0].getData()=='' &&
209 (!Colonna_prospetto.getSiblings()[0].Allegato_prospetto.getSiblings()?has_content ||
210 (Colonna_prospetto.getSiblings()[0].Allegato_prospetto.getSiblings()?size==1 && Colonna_prospetto.getSiblings()[0].Allegato_prospetto.getSiblings()[0].getData()=='')
211 )))>
212 <div class="boxesDettaglio togliMargin">
213 <div class="reset">
214 <h5 class="titolo prospetto">${label_prospetto.getData()}</h5>
215 <p class="">${descrizione_prospetto.getData()}</p>
216 </div>
217
218 <#if $Colonna_prospetto.getSiblings()?has_content>
219 <div class="table">
220
221 <div class="row theader">
222 <div class="cell">
223 <!-- prima colonnavuota -->
224 </div>
225
226 <#list Colonna_prospetto.getSiblings() as cur_Colonna_prospetto>
227 <div class="cell">
228 ${cur_Colonna_prospetto.getData()}
229 </div>
230 </#list>
231
232 </div>
233
234 <#if Tipo_generazione_righe_prospetto.getData()=="dinamico">
235
236 <#if $Nome_Riga_Prospetto.getSiblings()?has_content>
237 <#assign contatore_righe = 0>
238 <#list Nome_Riga_Prospetto.getSiblings() as cur_Nome_Riga_Prospetto>
239
240 <div class="row">
241 <div class="cell">
242 <div class="">${cur_Nome_Riga_Prospetto.getData()}</div>
243 </div>
244
245 <#list Colonna_prospetto.getSiblings() as cur_Colonna_prospetto1>
246 <div class="cell">
247 <#assign contatore_allegati = 0>
248 <#assign allegatoUrl = ''>
249
250 <#list cur_Colonna_prospetto1.Allegato_prospetto.getSiblings() as allegato>
251 <#if contatore_allegati == contatore_righe>
252 <#assign allegatoUrl = allegato.getData()>
253 </#if>
254 <#assign contatore_allegati = contatore_allegati + 1>
255 </#list>
256
257 <#assign dlFileVersion = ''>
258 <#if validator.isNotNull(allegatoUrl)>
259 <#assign dlFileVersion = confTool.getLatestDLFileVersion(allegatoUrl, checkDisplayDate)>
260 </#if>
261 <#if validator.isNotNull(dlFileVersion)>
262 <a class="icona icon-file" href="${allegatoUrl}?version=${dlFileVersion.getVersion()}" target="_blank"></a>
263 <#else>
264 <div>—</div>
265 </#if>
266 </div>
267 </#list>
268 </div>
269
270 <#assign contatore_righe = contatore_righe + 1>
271 </#list>
272
273 </div>
274
275 </#if>
276
277 </#if>
278 </#if>
279
280
281 <#if Tipo_generazione_righe_prospetto.getData()=="quadrimestrali">
282 <div class="row">
283 <div class="cell">
284 <div class="">Composizione al 31/03</div>
285 </div>
286
287 <#list Colonna_prospetto.getSiblings() as cur_Colonna_prospetto1>
288 <div class="cell">
289 <#assign contatore_allegati = 0>
290 <#assign allegatoUrl = ''>
291 <#list cur_Colonna_prospetto1.Allegato_prospetto.getSiblings() as allegato>
292 <#if contatore_allegati == 0>
293 <#assign allegatoUrl = allegato.getData()>
294 </#if>
295 <#assign contatore_allegati = contatore_allegati + 1>
296 </#list>
297
298 <#assign dlFileVersion = ''>
299 <#if validator.isNotNull(allegatoUrl)>
300 <#assign dlFileVersion = confTool.getLatestDLFileVersion(allegatoUrl, checkDisplayDate)>
301 </#if>
302 <#if validator.isNotNull(dlFileVersion)>
303 <a class="icona icon-file" href="${allegatoUrl}?version=${dlFileVersion.getVersion()}" target="_blank"></a>
304 <#else>
305 <div>—</div>
306 </#if>
307 </div>
308 </#list>
309
310 </div>
311
312
313 <div class="row">
314 <div class="cell">
315 <div class="">Composizione al 30/06</div>
316 </div>
317
318 <#list Colonna_prospetto.getSiblings() as cur_Colonna_prospetto2>
319 <div class="cell">
320 <#assign contatore_allegati = 0>
321 <#assign allegatoUrl = ''>
322 <#list cur_Colonna_prospetto2.Allegato_prospetto.getSiblings() as allegato>
323 <#if contatore_allegati == 1>
324 <#assign allegatoUrl = allegato.getData()>
325 </#if>
326 <#assign contatore_allegati = contatore_allegati + 1>
327 </#list>
328
329 <#assign dlFileVersion = ''>
330 <#if validator.isNotNull(allegatoUrl)>
331 <#assign dlFileVersion = confTool.getLatestDLFileVersion(allegatoUrl, checkDisplayDate)>
332 </#if>
333 <#if validator.isNotNull(dlFileVersion)>
334 <a class="icona icon-file" href="${allegatoUrl}?version=${dlFileVersion.getVersion()}" target="_blank"></a>
335 <#else>
336 <div>—</div>
337 </#if>
338 </div>
339 </#list>
340
341 </div>
342
343
344 <div class="row">
345 <div class="cell">
346 <div class="">Composizione al 30/09</div>
347 </div>
348
349 <#list Colonna_prospetto.getSiblings() as cur_Colonna_prospetto3>
350 <div class="cell">
351 <#assign contatore_allegati = 0>
352 <#assign allegatoUrl = ''>
353 <#list cur_Colonna_prospetto3.Allegato_prospetto.getSiblings() as allegato>
354 <#if contatore_allegati == 2>
355 <#assign allegatoUrl = allegato.getData()>
356 </#if>
357 <#assign contatore_allegati = contatore_allegati + 1>
358 </#list>
359
360 <#assign dlFileVersion = ''>
361 <#if validator.isNotNull(allegatoUrl)>
362 <#assign dlFileVersion = confTool.getLatestDLFileVersion(allegatoUrl, checkDisplayDate)>
363 </#if>
364 <#if validator.isNotNull(dlFileVersion)>
365 <a class="icona icon-file" href="${allegatoUrl}?version=${dlFileVersion.getVersion()}" target="_blank"></a>
366 <#else>
367 <div>—</div>
368 </#if>
369 </div>
370 </#list>
371
372 </div>
373
374 <div class="row">
375 <div class="cell">
376 <div class="">Composizione al 31/12</div>
377 </div>
378
379 <#list Colonna_prospetto.getSiblings() as cur_Colonna_prospetto4>
380 <div class="cell">
381 <#assign contatore_allegati = 0>
382 <#assign allegatoUrl = ''>
383 <#list cur_Colonna_prospetto4.Allegato_prospetto.getSiblings() as allegato>
384 <#if contatore_allegati == 3>
385 <#assign allegatoUrl = allegato.getData()>
386 </#if>
387 <#assign contatore_allegati = contatore_allegati + 1>
388 </#list>
389
390 <#assign dlFileVersion = ''>
391 <#if validator.isNotNull(allegatoUrl)>
392 <#assign dlFileVersion = confTool.getLatestDLFileVersion(allegatoUrl, checkDisplayDate)>
393 </#if>
394 <#if validator.isNotNull(dlFileVersion)>
395 <a class="icona icon-file" href="${allegatoUrl}?version=${dlFileVersion.getVersion()}" target="_blank"></a>
396 <#else>
397 <div>—</div>
398 </#if>
399 </div>
400 </#list>
401
402 </div>
403 </#if>
404
405 ##</div>
406 </div>
407 </#if>
408
409 <!-- INIZIO BLOCCO SMARTPHONE PROSPETTO -->
410 <#if !(
411 !Colonna_prospetto.getSiblings()?has_content ||
412 (Colonna_prospetto.getSiblings()?size==1 && Colonna_prospetto.getSiblings()[0].getData()=='' &&
413 (!Colonna_prospetto.getSiblings()[0].Allegato_prospetto.getSiblings()?has_content ||
414 (Colonna_prospetto.getSiblings()[0].Allegato_prospetto.getSiblings()?size==1 && Colonna_prospetto.getSiblings()[0].Allegato_prospetto.getSiblings()[0].getData()=='')
415 )))>
416 <div class="table_smart secondaTab prospetto">
417 <table>
418 <tbody>
419
420 <#assign tipo_colonne_prospetto = Tipo_generazione_righe_prospetto.getData() > <!-- in realta per gli smart le righe sono colonne -->
421 <#if tipo_colonne_prospetto == "dinamico">
422
423 <tr class="intestazione_smart">
424 <td colspan="1">Anno</td>
425 <#list Nome_Riga_Prospetto.getSiblings() as cur_Nome_Col_Prospetto>
426 <td colspan="1">${cur_Nome_Col_Prospetto.getData()}</td>
427 </#list>
428 </tr>
429
430 <#if Colonna_prospetto.getSiblings()?has_content>
431 <#list Colonna_prospetto.getSiblings() as cur_Colonna_prospetto>
432 <#assign velocityCount = cur_Colonna_prospetto?index/>
433 <#if velocityCount % 2 == 0>
434 <tr class="pari">
435 <#elseif velocityCount % 2 == 1>
436 <tr class="dispari">
437 </#if>
438
439 <td>${cur_Colonna_prospetto.getData()}</td>
440 <#list cur_Colonna_prospetto.Allegato_prospetto.getSiblings() as allegato>
441 <#assign allegatoUrl = ''>
442 <td>
443 <#assign allegatoUrl = allegato.getData()>
444 <#assign dlFileVersion = ''>
445 <#if validator.isNotNull(allegatoUrl)>
446 <#assign dlFileVersion = confTool.getLatestDLFileVersion(allegatoUrl, checkDisplayDate)>
447 </#if>
448 <#if validator.isNotNull(dlFileVersion)>
449 <a class="icona icon-file" href="${allegatoUrl}?version=${dlFileVersion.getVersion()}" target="_blank"></a>
450 <#else>
451 <div>—</div>
452 </#if>
453 </td>
454 </#list>
455 </tr>
456 </#list>
457 </#if>
458
459 <#elseif tipo_colonne_prospetto == "quadrimestrali">
460
461 <tr class="intestazione_smart">
462 <td colspan="1">Anno</td>
463 <td colspan="1">31Mar</td>
464 <td colspan="1">30Giu</td>
465 <td colspan="1">30Set</td>
466 <td colspan="1">31Dic</td>
467 </tr>
468
469 <#if Colonna_prospetto.getSiblings()?has_content>
470
471 <#list Colonna_prospetto.getSiblings() as cur_Colonna_prospetto>
472 <#assign velocityCount = cur_Colonna_prospetto?index/>
473 <#if velocityCount % 2 == 0>
474 <tr class="pari">
475 <#elseif velocityCount % 2 == 1>
476 <tr class="dispari">
477 </#if>
478
479 <td>${cur_Colonna_prospetto.getData()}</td>
480
481 <#assign contatore_allegati = 0>
482 <#list cur_Colonna_prospetto.Allegato_prospetto.getSiblings() as allegato>
483 <#assign allegatoUrl = ''>
484 <td>
485 <#assign allegatoUrl = allegato.getData()>
486 <#assign dlFileVersion = ''>
487 <#if validator.isNotNull(allegatoUrl)>
488 <#assign dlFileVersion = confTool.getLatestDLFileVersion(allegatoUrl, checkDisplayDate)>
489 </#if>
490 <#if validator.isNotNull(dlFileVersion)>
491 <a class="icona icon-file" href="${allegatoUrl}?version=${dlFileVersion.getVersion()}" target="_blank"></a>
492 <#else>
493 <div>—</div>
494 </#if>
495 </td>
496 </#list>
497 </tr>
498 </#list>
499 </#if>
500 </#if>
501 </tbody>
502 </table>
503 </div>
504 </#if>
505 <!-- FINE BLOCCO SMARTPHONE PROSPETTO -->
506
507 </div>
508 <!-- FINE SECONDO BLOCCO -->
509
510 <!-- BLOCCO (DOWNLOADS BOXES) -->
511
512 <#if !( Download_box_label?? && Download_box_label.getData()?has_content &&
513 !Download_box_label.getSiblings()?has_content ||
514 (Download_box_label.getSiblings()?size==1 &&
515 (!Download_box_label.getSiblings()[0].getData()?has_content || Download_box_label.getSiblings()[0].getData()=='') &&
516 (!Download_box_label.getSiblings()[0].Nome_allegato.getSiblings()?has_content ||
517 (Download_box_label.getSiblings()[0].Nome_allegato.getSiblings()?size==1 &&
518 (!Download_box_label.getSiblings()[0].Nome_allegato.getSiblings().getData()?has_content || Download_box_label.getSiblings()[0].Nome_allegato.getSiblings()[0].getData()=='')
519 ))))>
520
521 <#list Download_box_label.getSiblings() as cur_Download_box_label>
522 <div class="boxesDettaglio togliMargin">
523 <div class="reset download">
524 <#if getterUtil.getBoolean(cur_Download_box_label.conteggio_file.getData())>
525 <#assign file_number = cur_Download_box_label.Nome_allegato.getSiblings()?size>
526 <h5 class="titolo">${cur_Download_box_label.getData()} ( ${file_number} file )</h5>
527 <#else>
528 <h5 class="titolo download">${cur_Download_box_label.getData()}</h5>
529 </#if>
530 <#if cur_Download_box_label.Nome_allegato.getSiblings()?has_content>
531 <div class="archivi">
532 <#list cur_Download_box_label.Nome_allegato.getSiblings() as cur_Download_box>
533
534 <#assign fileEntryPath = cur_Download_box.Allegato_url.getData()>
535
536 <#assign dlFileVersion = ''>
537 <#if validator.isNotNull(fileEntryPath)>
538 <#assign dlFileVersion = confTool.getLatestDLFileVersion(fileEntryPath, checkDisplayDate)>
539 </#if>
540 <#if validator.isNotNull(dlFileVersion)>
541 <#if cur_Download_box.tipo_allegato.getData()=="excel">
542 <a href="${fileEntryPath}?version=${dlFileVersion.getVersion()}" target="_blank">
543 <h6>
544 <span class="icona icon-copy"></span>
545 <#else>
546 <a href="${fileEntryPath}?version=${dlFileVersion.getVersion()}" target="_blank">
547 <h6>
548 <span class="icona icon-file"></span>
549 </#if>
550 <div>${cur_Download_box.getData()}</div>
551 </h6>
552 </a>
553 </#if>
554 </#list>
555 </div>
556 </#if>
557 </div>
558 </div>
559 </#list>
560 </#if>
561
562 <!-- FINE BLOCCO (DOWNLOADS BOXES) -->
563
564 <script type="text/javascript">
565 jQuery(document).ready(function(){
566
567 /* Nasconde, se presente lo span che contiene la pagina di dettaglio */
568 if(jQuery(".breadcrumbs .elementi span").length) {
569 jQuery(".breadcrumbs .elementi span").hide();
570 }
571
572 if(jQuery("html").is(".smartphone"))
573 {
574 convertTableToDivs();
575 swipeProspetto();
576 jQuery(".boxesDettaglio.togliMargin .bloccoValori").first().before("<div class='carousel-menu'></div>");
577 jQuery(".boxesDettaglio.togliMargin .bloccoValori").first().before("<div class='carousel-items'></div>");
578 jQuery(".boxesDettaglio.togliMargin .bloccoValori").appendTo(".boxesDettaglio.togliMargin .carousel-items");
579
580 jQuery(".boxesDettaglio.togliMargin .bloccoValori").wrap("<div class='carousel-item'></div>");
581
582 var bullet=jQuery('<span class="carousel-menu-index">•</span>');
583
584 /* creo l'elenco delle slide */
585 jQuery(".boxesDettaglio.togliMargin .carousel-item").each(function(){
586 bullet.clone().appendTo(".boxesDettaglio.togliMargin .carousel-menu");
587 });
588
589 var car = ISP.carousel('.boxesDettaglio.togliMargin .carousel-items', '.boxesDettaglio.togliMargin .carousel-menu');
590
591 car.play();
592 }
593 });
594
595 function updateAndamentoLabel(){
596 jQuery("#andamentoDa").html(jQuery("#datepickerDa").val());
597 jQuery("#andamentoA").html(jQuery("#datepickerA").val());
598 }
599
600 function applyGradientOnPlot(){
601 var canvasSeries = jQuery(".jqplot-series-canvas")[0];
602 var ctx = canvasSeries.getContext("2d");
603 var my_gradient=ctx.createLinearGradient(0,0,0,300);
604 my_gradient.addColorStop(0, "rgba(251,168,129,0.6)");
605 my_gradient.addColorStop(1, "rgba(251,168,129,0.1)");
606 ctx.fillStyle = my_gradient;
607 ctx.fill();
608 }
609
610 function updateDatePickers(){
611 //Aggiorniamo i datepicker con i reali valori visualizzati dal grafico. Necessario per via del padding.
612
613 var dataInizialeDefault = jQuery("#dataDefaultVisualizzazionediv").text();
614
615 if(dataInizialeDefault.length>0){
616 var dataNuova = new Date (dataInizialeDefault);
617
618 jQuery("#datepickerDa").datepicker("setDate", new Date(dataInizialeDefault));
619 }else{
620 jQuery("#datepickerDa").datepicker("setDate", new Date(gestioneGrafico.plotter.axes.xaxis.min));
621 }
622
623
624 jQuery("#datepickerA").datepicker("setDate", new Date(gestioneGrafico.plotter.axes.xaxis.max));
625 jQuery('#datepickerDa').datepicker('option', 'minDate', new Date(gestioneGrafico.plotter.axes.xaxis.min));
626 jQuery('#datepickerDa').datepicker('option', 'maxDate', new Date(gestioneGrafico.plotter.axes.xaxis.max));
627 jQuery('#datepickerA').datepicker('option', 'minDate', new Date(gestioneGrafico.plotter.axes.xaxis.min));
628 jQuery('#datepickerA').datepicker('option', 'maxDate', new Date(gestioneGrafico.plotter.axes.xaxis.max));
629 }
630
631 function aggiornaPerformance(dataIniziale, dataFinale){
632 var dati = window.gestioneGrafico.datiTraLeDate(dataIniziale, dataFinale);
633
634 var valoreIniziale = dati[0][1];
635 var valoreFinale = dati[dati.length - 1][1];
636
637 var performance = ((valoreFinale - valoreIniziale) / valoreIniziale) * 100;
638 if(!isNumber(performance)){
639 performance = 0;
640 }
641 var performance_rounded = +performance.toFixed(2);
642
643 var performance_split = [];
644 if(performance_rounded.toString().indexOf(".")>0){
645 performance_split = performance_rounded.toString().split(".");
646 }else{
647 performance_split[0] = performance_rounded;
648 performance_split[1] = 0;
649 }
650 jQuery(".bloccoValori.performance .titoloValuta").html(performance_split[0] + (performance_split[1]!=0?",<span class='decimali'>" + performance_split[1] + "</span>":"") + " %");
651 }
652
653 function postDrawProcessing(){
654 console.log("postDrawHooks!");
655 applyGradientOnPlot();
656
657 var dataIniziale = new Date(gestioneGrafico.plotter.axes.xaxis.min);
658 var dataFinale = new Date(gestioneGrafico.plotter.axes.xaxis.max);
659
660 aggiornaPerformance(dataIniziale, dataFinale);
661
662 var dataInizialeStr = jQuery.datepicker.formatDate('dd/mm/yy', dataIniziale)
663 var dataFinaleStr = jQuery.datepicker.formatDate('dd/mm/yy', dataFinale);
664
665 //aggiorno solo se diverso per evitare di far scattare onchange
666 //if (dataInizialeStr!=jQuery("#datepickerDa").val()) {
667 console.log('aggiorno data iniziale da ' + jQuery("#datepickerDa").val() + ' a ' + dataInizialeStr);
668 jQuery("#datepickerDa").datepicker("setDate", dataIniziale);
669 //}
670 //if (dataFinaleStr!=jQuery("#datepickerA").val()) {
671 console.log('aggiorno data finale da ' + jQuery("#datepickerA").val() + ' a ' + dataFinaleStr);
672 jQuery("#datepickerA").datepicker("setDate", dataFinale);
673 //}
674
675 updateAndamentoLabel();
676 }
677
678 function isNumber(n) {
679 return !isNaN(parseFloat(n)) && isFinite(n);
680 }
681
682 jQuery(document).ready(function() {
683
684 //window.primavolta = true;
685
686 jQuery.jsDate.regional['it-IT'] = {
687 monthNames: ['Gennaio','Febbraio','Marzo','Aprile','Maggio','Giugno','Luglio','Agosto','Settembre','Ottobre','Novembre','Dicembre'],
688 monthNamesShort: ['Gen','Feb','Mar','Apr','Mag','Giu','Lug','Ago','Set','Ott','Nov','Dic'],
689 dayNames: ['Domenica','Lunedi','Martedi','Mercoledi','Giovedi','Venerdi','Sabato'],
690 dayNamesShort: ['Dom','Lun','Mar','Mer','Gio','Ven','Sab'],
691 formatString: '%d-%m-%Y %H:%M:%S'
692 };
693 jQuery.jsDate.regional.getLocale();
694
695 Date.prototype.sameDay = function(d) {
696
697
698 return (this.getFullYear() === d.getFullYear()
699 && this.getMonth() === d.getMonth()
700 && this.getDate() === d.getDate());
701
702 }
703
704 //Spostato qui perché voglio essere sicuro che gestioneGrafico sia inizializzato quando viene chiamato in questa funzione.
705 //window.gestioneGrafico garantisce che è una variabile globale! -RC
706 window.gestioneGrafico = {
707
708 //Gestione del pad manuale perché quando si impostano un minimo e un massimo per gli assi il pad è ignorato. -RC
709 pad: 1.1,
710
711 tuttiIdatiDelGrafico : function() {
712
713 var tuttiIDati =[];
714
715 <#assign _listaTassiDiCambio = confTool.getTassoDiCambio()>
716
717 <#list _listaTassiDiCambio as tassoDicambio>
718 tuttiIDati.push([this.getADate('${tassoDicambio.getDataCambioString()}'),'${tassoDicambio.getBfixAsk()}']);
719 </#list>
720
721 //ritorno una copia dell'array che contiene tutti i dati
722 return tuttiIDati.slice();
723 },
724
725 getADate: function (dataStr)
726 {
727 //console.log("getADate dataStr" + dataStr);
728 if (dataStr == null)
729 return;
730 var partiData = dataStr.split("/");
731 var day = partiData[0];
732 var month = partiData[1] - 1;
733 var year = partiData[2];
734 //console.log("year " + year + " month" + month + " day " + day)
735 var aDate = new Date(year, month, day, 0, 0, 0, 0);
736 return aDate;
737 },
738
739 datiTraLeDate : function (dataDa, dataA){
740 //console.log("datiTraLeDate dataDa " + dataDa + " dataA " + dataA);
741
742 var tuttiIdati = this.tuttiIdatiDelGrafico();
743 //cerco l'elemento minimo superiore a dataDa
744 //cerco l'elemnto massimo inferiore a dataA
745 //l'array di dati originali è gia ordinato per data
746 var indiceDellaDataMinore = -1;
747 var indiceDellaDataMaggiore = -1;
748 var currDate;
749 //cerco la prima data subito superiore a dataDa
750 for (var i=0; i< tuttiIdati.length; i++) {
751 currDate = moment(tuttiIdati[i][0]).hours(0).minutes(0).seconds(0);
752 if((currDate.isAfter(dataDa)||(currDate.isSame(dataDa))) && (currDate.isBefore(dataA)||currDate.isSame(dataA))) {
753 indiceDellaDataMinore = i;
754 break;
755 }
756 }
757 //cerco la prima data subito inveriore a dataA
758 for (var i=tuttiIdati.length -1; i>=0; i--) {
759 currDate = moment(tuttiIdati[i][0]).hours(0).minutes(0).seconds(0);
760 if((currDate.isBefore(dataA)|| currDate.isSame(dataA)) && (currDate.isAfter(dataDa)||currDate.isSame(dataDa))) {
761 indiceDellaDataMaggiore = i;
762 break;
763 }
764 }
765 //a questo punto ho gli indici delle date minore e maggiore, taglio l'array
766 var nDiElementi = indiceDellaDataMaggiore - indiceDellaDataMinore + 1;
767 console.log("nDiElementi" + nDiElementi);
768 var nuovoRange = tuttiIdati.splice(indiceDellaDataMinore,nDiElementi);
769 //se 0 risultati creo un array con dati [[dataIniziale, 0], [dataFinale, 0]]
770 if (nuovoRange.length == 0){
771 console.log("ritorno un range vuoto");
772 }
773
774 return nuovoRange;
775 },
776 getAxisBounds: function(dati, pad, dataDa, dataA){
777 var _pad = (pad==null||typeof pad == 'undefined')?0:pad;
778 var _dataDa = typeof dataDa == 'undefined'?null:dataDa;
779 var _dataA = typeof dataA == 'undefined'?null:dataA;
780
781
782 var minXVal = null;
783 var maxXVal = null;
784 //Vogliamo che Y parta da 0 o dal minimo valore minore di 0
785 var minYVal = null;
786 var maxYVal = null;
787
788 for(var i=0; i<dati.length; i++){
789 var valY = parseFloat(dati[i][1]);
790 if(_dataDa==null&&(minXVal==null||dati[i][0]<minXVal)){
791 minXVal = dati[i][0];
792 }
793 if(_dataA==null&&(maxXVal==null||dati[i][0]>maxXVal)){
794 maxXVal = dati[i][0];
795 }
796 if(minYVal==null||valY<minYVal){
797 minYVal = valY;
798 }
799 if(maxYVal==null||valY>maxYVal){
800 maxYVal = valY;
801 }
802 }
803
804 if(dataDa!=null){
805 minXVal = dataDa;
806 }
807 if(dataA!=null){
808 maxXVal = dataA;
809 }
810
811 var padX = 0;
812 var padY = 0;
813 if(dati.length>1){
814 padX = ((maxXVal - minXVal)*(pad-1))/2;
815 // padY = minYVal>0?((maxYVal - 0)*(pad-1))/2:((maxYVal - minYVal)*(pad-1))/2;
816 padY = ((maxYVal - minYVal)*(pad-1))/2;
817 }else{
818 padX = 86401000;
819 padY = maxYVal*(pad-1);
820 }
821
822 if(padY<0){
823 padY=-padY;
824 }else if(padY==0){
825 padY=2;
826 }
827
828 var bounds = {
829 minX: dati.length>1?new Date(minXVal.getTime()):new Date(minXVal.getTime()-padX),
830 maxX: dati.length>1?new Date(maxXVal.getTime()):new Date(maxXVal.getTime()+2*padX),
831 // minY: minYVal>0?0:minYVal-padY,
832 minY: (minYVal-padY),
833 maxY: maxYVal+padY
834 }
835
836 return bounds;
837 },
838 zoomHandler: function() {
839 var c = this.plugins.cursor;
840 console.log(c);
841 },
842
843 plotter: null,
844 visualizzaGrafico : function (dati, dataDa, dataA){
845 var seriesToPlot;
846
847 try{
848 if (typeof dataDa === 'undefined') dataDa = new Date(gestore.plotter.axes.xaxis.min);
849 if (typeof dataA === 'undefined') dataA = new Date(gestore.plotter.axes.xaxis.max);
850 }catch(e){
851 //console.log(e);
852 }
853 var minDate = jQuery("#datepickerDa").datepicker('getDate'),//.datepicker('option', 'minDate'),
854 maxDate = jQuery("#datepickerA").datepicker('getDate'),//.datepicker('option', 'maxDate'),
855 datiFondo = window.gestioneGrafico.tuttiIdatiDelGrafico().slice();
856 datiFondo.sort(function(a,b){
857 return a[0] - b[0];
858 });
859
860 var minFondo = null;
861
862 for (var i = 0; i < datiFondo.length; i++){
863 if (!isNaN(datiFondo[i][0])){
864 datiFondo[i][0] = new Date(datiFondo[i][0]);
865 }
866 }
867
868 for (var i = 0; i < datiFondo.length; i++){
869 if (datiFondo[i][0].sameDay(minDate)){
870 minFondo = datiFondo[i];
871 break;
872 }
873 }
874 for (var i = 0; i < datiFondo.length; i++){
875 if (datiFondo[i][0] >= minDate){
876 minFondo = datiFondo[i];
877 break;
878 }
879 }
880 if (minFondo == null) minFondo = datiFondo[0];
881
882 var maxFondo = null;
883
884 for (var i = 0; i < datiFondo.length; i++){
885 if (datiFondo[i][0].sameDay(maxDate)){
886 maxFondo = datiFondo[i];
887 break;
888 }
889 }
890
891 if(maxFondo == null){
892 for (var i = 0; i < datiFondo.length; i++){
893 if (datiFondo[i][0] > maxDate){
894 maxFondo = datiFondo[i];
895 break;
896 }
897 }
898 }
899 var datiFiltrati=[];
900 for(var i = 0; i < dati.length; i++){
901 if (window.gestioneGrafico.checkData(dati[i][0], minFondo[0], maxFondo[0], datiFondo)){
902 datiFiltrati.push(dati[i]);
903 }
904 }
905 seriesToPlot = [datiFiltrati];
906
907 var singlePoint = dati.length==1;
908 var bounds = this.getAxisBounds(dati, this.pad, dataDa, dataA);
909 var logaritmica = logaritmica;
910 console.log("Axis Bounds: " + bounds);
911 if(this.plotter != null)
912 this.plotter.destroy();
913 if(singlePoint){
914 dati.push(dati[0]);
915 }
916 this.plotter = jQuery.jqplot('chartdiv', seriesToPlot,
917 {
918 title:{
919 text: '',
920 show: false
921 },
922 axesDefaults: {
923 },
924 cursor:{
925 show: false,
926 showTooltip: false,
927 zoom: false,
928 constrainZoomTo: 'x'
929 },
930 seriesDefaults: {
931
932 color: '#fba881', // CSS color spec to use for the line. Determined automatically.
933 showMarker: singlePoint, // render the data point markers or not.
934 fill: true, // fill under the line,
935 fillAndStroke: singlePoint, // *stroke a line at top of fill area.
936 fillColor: '#fba881',
937 fillAlpha: 0.001, // *custom alpha to apply to fillColor.
938 shadow: false // show shadow or not.
939
940 },
941 axes:{
942 xaxis: {
943 renderer:jQuery.jqplot.DateAxisRenderer,
944 min: bounds.minX,
945 max: bounds.maxX,
946 //min:minimo,
947 //max:maximo,
948 tickOptions: {formatString: '%d/%m/%Y'}
949 },
950 yaxis: {
951 renderer:logaritmica==true?jQuery.jqplot.LogAxisRenderer:jQuery.jqplot.LinearAxisRenderer,
952 min: bounds.minY,
953 max: bounds.maxY,
954 tickOptions: {formatString: '%#.3f' +" "+ divisaSimboloMap['EUR'] }
955 }
956 },
957 series:[{
958 lineWidth:2,
959 markerOptions:
960 {
961 style:'circle'
962 }
963 },{
964 lineWidth: 1,
965 markerOptions:
966 {
967 style:'circle'
968 },
969 color: '#0a4379', // CSS color spec to use for the line. Determined automatically.
970 linePattern: 'dashed',
971 lineWidth: 0.5,
972 showMarker: singlePoint, // render the data point markers or not.
973 fill: false,
974 shadow: false,
975 rendererOptions: {
976 smooth: true
977 }
978 }],
979 highlighter: {
980 show: false,
981 sizeAdjust: 7.5,
982 formatString: "%s - %#.3f"
983 },
984 grid: {
985 drawGridLines: true, // wether to draw lines across the grid or not.
986 gridLineColor: '#f0f1f6', // *Color of the grid lines.
987 background: '#fff', // CSS color spec for background color of grid.
988 borderColor: '#f0f1f6', // CSS color spec for border around grid.
989 borderWidth: 1.0, // pixel width of border around grid.
990 shadow: false, // draw a shadow for grid.
991 }
992 });
993
994
995 },
996
997 checkData: function(data, dStart, dEnd, datiFondo){
998 var dStart = typeof dStart == 'undefined'?null:dStart;
999 var dEnd = typeof dEnd == 'undefined'?null:dEnd;
1000
1001 if (dStart == null || dEnd == null){
1002 for(var i=0; i<datiFondo.length; i++){
1003 if(dStart == null || datiFondo[i][0] < dStart){
1004 dStart = datiFondo[i][0];
1005 }
1006 if(dEnd == null || datiFondo[i][0] > dEnd){
1007 dEnd = datiFondo[i][0];
1008 }
1009 }
1010 }
1011 if (data >= dStart && data <= dEnd){
1012 return true;
1013 }
1014 return false;
1015 }
1016 }
1017 <#if getterUtil.getBoolean(Fondo_In_valuta.getData())>
1018 <#if _listaTassiDiCambio?size gt 0>
1019
1020 jQuery.jqplot.sprintf.thousandsSeparator = '';
1021 jQuery.jqplot.sprintf.decimalMark = ',';
1022 var gestore = gestioneGrafico;
1023 var datiDaVisualizzare = gestore.tuttiIdatiDelGrafico();
1024 var bounds = gestioneGrafico.getAxisBounds(datiDaVisualizzare,this.pad);
1025 console.log('LIMITS');
1026 console.log(bounds);
1027 // inizializzo i date picker con gli estremi delle date disponibili in base ai dati ricevuti
1028 jQuery("#datepickerDa").datepicker({
1029 //showOtherMonths: false,
1030 //selectOtherMonths: false,
1031 changeMonth : true,
1032 changeYear : true,
1033 dateFormat : "dd/mm/yy",
1034
1035 onSelect : function() {
1036 jQuery("#datepickerA").datepicker('option', {
1037 minDate : jQuery(this).datepicker('getDate')
1038 });
1039 updateGraphDatesFromDatePickers();
1040 //updateDatePickers();
1041 },
1042 }, jQuery.datepicker.regional['it']);
1043 jQuery("#datepickerDa").datepicker("setDate", bounds.minX);
1044
1045 jQuery("#datepickerA").datepicker({
1046 changeMonth : true,
1047 changeYear : true,
1048 dateFormat : "dd/mm/yy",
1049 defaultDate : bounds.maxX,
1050 minDate : bounds.minX,
1051 maxDate : bounds.maxX,
1052 onSelect : function() {
1053 jQuery("#datepickerDa").datepicker('option', {
1054 maxDate : jQuery(this).datepicker('getDate')
1055 });
1056 updateGraphDatesFromDatePickers();
1057 },
1058 beforeShow : function(input, inst) {
1059 inst.dpDiv.css({marginLeft: -input.offsetWidth + 'px'});
1060 }
1061 }, jQuery.datepicker.regional['it']);
1062 jQuery("#datepickerA").datepicker("setDate",bounds.maxX);
1063 function updateGraphDatesFromDatePickers() {
1064 var dataDaStr = jQuery("#datepickerDa").val();
1065 var dataAStr = jQuery("#datepickerA").val();
1066 console.log("date cambiate: da " + dataDaStr + " a " + dataAStr);
1067 var dataDa = gestore.getADate(dataDaStr);
1068 var dataA = gestore.getADate(dataAStr);
1069 // se la data è maggiore di data a non fare nulla
1070 if (dataDa >= dataA)
1071 return;
1072
1073 gestore.plotter.axes.xaxis.min = dataDa;
1074 gestore.plotter.axes.xaxis.max = dataA;
1075
1076 var interval = (dataA.getTime() - dataDa.getTime()) / 5;
1077 var ticks = [];
1078 var currTick = dataDa.getTime();
1079 ticks.push(currTick);
1080 for (var i = 0; i < 5; i++) {
1081 currTick += interval;
1082 ticks.push(currTick);
1083 }
1084
1085 gestore.plotter.axes.xaxis.ticks = ticks;
1086 //gestore.plotter.replot();
1087 var datiDaVisualizzare = window.gestioneGrafico.tuttiIdatiDelGrafico();
1088 window.gestioneGrafico.visualizzaGrafico(datiDaVisualizzare);
1089
1090 // Necessario per riabilitare zoom
1091 gestore.plotter.axes.xaxis.ticks = [];
1092 };
1093 if (Liferay.Browser.isIe() && Liferay.Browser.getVersion() < 9)
1094 {
1095 // carica script che emula il canvas poiché ie < 9 non lo supoporta
1096 var exCanvasScriptUrl = "${themeDisplay.getPathThemeRoot()}/js/portlet/rendimentiequotazioni/dettaglio/jqplot/excanvas/excanvas.min.js";
1097 jQuery.getScript(exCanvasScriptUrl, function(data, textStatus, jqxhr) {
1098 gestore.visualizzaGrafico(datiDaVisualizzare);
1099
1100 applyGradientOnPlot();
1101 jQuery.jqplot.postDrawHooks.push(postDrawProcessing);
1102 updateAndamentoLabel();
1103 });
1104 }
1105 else
1106 {
1107 gestore.visualizzaGrafico(datiDaVisualizzare);
1108 applyGradientOnPlot();
1109 jQuery.jqplot.postDrawHooks.push(postDrawProcessing);
1110 updateAndamentoLabel();
1111 }
1112 updateDatePickers();
1113 updateGraphDatesFromDatePickers();
1114 aggiornaPerformance(datiDaVisualizzare[0][0], datiDaVisualizzare[datiDaVisualizzare.length - 1][0]);
1115 jQuery( ".datePicker" ).change(updateGraphDatesFromDatePickers);
1116 jQuery('#datepickerDa').click(function(){
1117 jQuery('#datepickerDa').datepicker('show');
1118 });
1119 jQuery('#datepickerA').focus(function(){
1120 jQuery('#datepickerA').datepicker('show');
1121 });
1122
1123 jQuery('#datepickerA').click(function(){
1124 jQuery('#datepickerA').datepicker('show');
1125 });
1126 </#if>
1127 </#if>
1128 });
1129 </script>
1130
1131 <!-- FINE GS IN VALUTA -->
1132
1133 <#else> <!-- Se Fondo_In_valuta = false -->
1134 <div class="template_rendimenti_e_quotazioni">
1135
1136 <link href="${themeDisplay.getPathThemeRoot()}/css/portlets/rendimentiequotazioni/dettaglio/jquery.jqplot.min.css" rel="stylesheet" />
1137 <link href="${themeDisplay.getPathThemeRoot()}/css/portlets/rendimentiequotazioni/jquery-ui.css" rel="stylesheet" />
1138 <link href="${themeDisplay.getPathThemeRoot()}/css/portlets/rendimentiequotazioni/dettaglio/rendimentoDettaglioValore.css" rel="stylesheet" />
1139
1140
1141 <#assign localeIT = localeUtil.fromLanguageId('it')>
1142
1143 <#assign currentGroup = groupLocalService.getGroup(groupId)>
1144
1145 <#assign checkDisplayDate = !currentGroup.isStagingGroup()>
1146
1147 <!-- assegnazione di una variabile con il tool custom, deployato sul portale -->
1148 <!-- get user from request -->
1149
1150 <#assign user = "">
1151 <#if request?has_content && request.getRemoteUser()?has_content && request.getRemoteUser()!="">
1152 <#assign user = userLocalService.getUserById(getterUtil.getLong(request.getRemoteUser()))>
1153 <#else>
1154 <#assign user = userLocalService.getDefaultUser(getterUtil.getLong(companyId))>
1155 </#if>
1156
1157 <#assign current_url = request.getAttribute("CURRENT_URL")>
1158
1159 <if getterUtil.getBoolean(request.getAttribute("isCustomFriendlyUrlFilter")) && request.getAttribute("originalFriendlyUrlFilterUrl")?if_exists>
1160 <#assign current_url = request.getAttribute("originalFriendlyUrlFilterUrl")?if_exists >
1161 </if>
1162
1163 <#assign catIdStr = httpUtil.decodeURL(httpUtil.getParameter(current_url, "catId", false))>
1164 <#assign catId = getterUtil.getLong(catIdStr)>
1165
1166 <#assign subcatIdStr = httpUtil.decodeURL(httpUtil.getParameter(current_url, "subcatId", false))>
1167 <#assign subcatId = getterUtil.getLong(subcatIdStr)>
1168
1169 <#assign categoria = httpUtil.decodeURL(httpUtil.getParameter(current_url, "categoria", false))>
1170 <#assign sottoCategoria = httpUtil.decodeURL(httpUtil.getParameter(current_url, "sottocategoria", false))>
1171
1172 <!-- Take layout id -->
1173 <#assign currentLayoutId = themeDisplay.getPlid()>
1174 <#assign currentLayout = layoutLocalService.getLayout(currentLayoutId)>
1175
1176 <!-- parent layoutId -->
1177 <#assign currentLayoutParentPlid = currentLayout.getParentPlid()>
1178 <#if currentLayoutParentPlid != 0>
1179 <#assign currentLayoutParent = layoutLocalService.getLayout(currentLayoutParentPlid)>
1180 </#if>
1181
1182 <#if catId != 0>
1183 <#assign catKey = assetCategoryPropertyLocalService.fetchCategoryProperty(catId, "chiave").getValue()>
1184 <#if validator.isNull(catKey)>
1185 <#assign catKey = assetCategoryLocalService.getAssetCategory(catId).getName()>
1186 </#if>
1187
1188 <#assign catColor = assetCategoryPropertyLocalService.fetchCategoryProperty(catId, "colore").getValue()>
1189 </#if>
1190
1191 <#if !catKey??>
1192 <#assign catKey = "">
1193 </#if>
1194
1195 <#assign isOICR = false>
1196 <!-- pretitolo -->
1197 <#if (visualizza_label_gestione_separata_associata?has_content && getterUtil.getBoolean(visualizza_label_gestione_separata_associata.getData())) || catKey?lower_case == "rivalutabili">
1198 <#assign pre_titolo_rendimento = "Gestione Separata">
1199 <#elseif categoria?lower_case == "index linked">
1200 <#assign pre_titolo_rendimento = "Indice">
1201 <#elseif categoria?lower_case == "oicr">
1202 <#assign pre_titolo_rendimento = "OICR">
1203 <#assign isOICR = true>
1204 <#else>
1205 <#assign pre_titolo_rendimento = "Fondo">
1206 </#if>
1207
1208 <!-- valore dei fondi dal web content -->
1209 <#assign valoreFondoUno = confTool.getValoreFondoFromStr(valore_1.getData(), locale)>
1210 <#assign valoreFondoDue = confTool.getValoreFondoFromStr(valore_2.getData(), locale)>
1211
1212 <#if getterUtil.getBoolean(usa_valori_da_fondo.getData())>
1213 <#assign usaFondo = true>
1214
1215 <!-- titolo -->
1216 <#assign titolo_rendimento = Titolo_rendimento.getData()>
1217
1218 <#if titolo_rendimento=="">
1219 <#assign titolo_rendimento = Titolo_rendimento.getData()>
1220 </#if>
1221
1222 <!-- valore e valuta dei fondi dal db -->
1223 <#if validator.isNotNull(valoreFondoUno)>
1224 <#if validator.isNull(valoreFondoDue) || valoreFondoDue == "0">
1225 <#assign valoreFondoUno = confTool.getValoreFondoUnoFromDbLocale(id_fondo.getData(), locale)>
1226 <#assign valoreFondoDue = "">
1227 <#else>
1228 <#assign valoreFondoUno = confTool.getValoreFondoUnoFromDbLocale(id_fondo.getData(), locale)>
1229 <#assign valoreFondoDue = confTool.getValoreFondoDueFromDbLocale(id_fondo.getData(), locale)>
1230 </#if>
1231 <#else>
1232 <#assign valoreFondoUno = confTool.getValoreFondoUnoFromDbLocale(id_fondo.getData(),locale)>
1233 <#assign valoreFondoDue = confTool.getValoreFondoDueFromDbLocale(id_fondo.getData(),locale)>
1234 </#if>
1235
1236 <#if valoreFondoDue=="0" || valoreFondoDue == "0,000">
1237 <#assign valoreFondoDue = "">
1238 </#if>
1239
1240 <#assign valutaFondoUno = confTool.getValutaFondoUnoFromDb(id_fondo.getData())>
1241 <#assign valutaFondoDue = confTool.getValutaFondoDueFromDb(id_fondo.getData())>
1242
1243 <!-- data aggiornamento valore -->
1244 <#assign dataAggiornamentoValore = confTool.getDataAggiornamentoFondoFromDb(id_fondo.getData(),'dd MMM yyyy',localeIT)>
1245
1246 <!-- rating -->
1247 <#assign ratings = confTool.getRatingsFromDb(id_fondo.getData())>
1248
1249 <#else>
1250 <#assign usaFondo = false>
1251
1252 <!-- titolo -->
1253 <#assign titolo_rendimento = Titolo_rendimento.getData()>
1254
1255 <!-- valuta dei fondi dal web content -->
1256 <#assign valutaFondoUno = valuta1.getData()>
1257 <#assign valutaFondoDue = valuta_2.getData()>
1258
1259 <!-- data aggiornamento valori -->
1260 <#assign aggiornato_al_DateObj = dateUtil.parseDate("yyyy-MM-dd", getterUtil.getString(aggiornato_al.getData()), localeIT)>
1261 <#assign dataAggiornamentoValore = dateUtil.getDate(aggiornato_al_DateObj, "dd MMM yyyy", localeIT)>
1262
1263 <!-- rating -->
1264 <#assign ratings = Rating.getData()>
1265
1266 </#if>
1267
1268 <!-- PRIMO BLOCCO -->
1269 <#assign breadCrumb = confTool.getBreadcrumb(themeDisplay.getLayout(),themeDisplay) >
1270 <div class="boxesDettaglio togliMargin">
1271 <!-- briciole di pane -->
1272 <div id="breadcrumbs" class="breadcrumbs">
1273 <div class="elementi">
1274
1275 <!-- Inizio creazione Breadcrumb -->
1276
1277 <#assign titolo_gs_associata = label_gestione_separata_associata.getData()>
1278 <#assign titolo_da_visualizzare = titolo_rendimento>
1279
1280 <#if getterUtil.getBoolean(visualizza_label_gestione_separata_associata.getData()) && validator.isNotNull(titolo_gs_associata)>
1281 <#if categoria?lower_case == "previdenza">
1282 <#assign titolo_da_visualizzare = titolo_gs_associata>
1283 </#if>
1284 </#if>
1285
1286 <!-- get article's primaryKey -->
1287 <#assign article = journalArticleLocalService.getArticle(getterUtil.getLong(groupId), .vars['reserved-article-id'].data, getterUtil.getDouble(.vars['reserved-article-version'].data))>
1288 <#assign articlePrimKey = article.resourcePrimKey>
1289 <#assign resourcePrimKey = getterUtil.getLong(articlePrimKey)>
1290 <#assign categorie = confTool.getCategoriesByResourcePrimKey(resourcePrimKey)>
1291 <#assign categorieSize = categorie?size>
1292
1293 <#list breadCrumb?keys as key>
1294 <a href="${key?replace("../../", "/")}">${breadCrumb[key]}</a>
1295 </#list>
1296 <span>${themeDisplay.getLayout().getName()}</span>
1297
1298 <#list categorie as cur_categoria>
1299 <#if currentLayoutParent?has_content && cur_categoria.getCategoryId() == catId>
1300 <!-- -->
1301 <a href="/web${currentLayoutParent.getGroup().getFriendlyURL()}${currentLayoutParent.getFriendlyURL()}?selectedCategoryId=${cur_categoria.getCategoryId()}">${cur_categoria.getName()}</a>
1302 </#if>
1303 </#list>
1304
1305 <#list categorie as cur_categoria>
1306 <#if currentLayoutParent?has_content && cur_categoria.getCategoryId() == subcatId>
1307 <!-- cur_categoria.getCategoryId() == catId -->
1308 <a href="/web${currentLayoutParent.getGroup().getFriendlyURL()}${currentLayoutParent.getFriendlyURL()}?selectedCategoryId=${cur_categoria.getCategoryId()}">${cur_categoria.getName()}</a>
1309 </#if>
1310 </#list>
1311
1312 ${titolo_da_visualizzare}
1313
1314 <!-- Fine creazione Breadcrumb -->
1315
1316 </div>
1317 </div>
1318 <div>
1319 <div class="supTitle capitalize">${pre_titolo_rendimento}</div>
1320 <h1 class="titoloRendimento">${titolo_da_visualizzare}</h1>
1321
1322 <#if Notifica_alert?? && Notifica_alert.getData() != "">
1323
1324 <div class="descrizioni notifica_alert">${Notifica_alert.getData()}</div>
1325
1326 <#assign testoFascetta = confTool.getRendimentoParsed(article, themeDisplay.getLanguageId()).getTestoFascetta(article, themeDisplay.getLanguageId(), catId, subcatId)>
1327 <#if validator.isNotNull(testoFascetta)>
1328 <div class="fascetta_rendimento ${catColor}">${testoFascetta}</div>
1329 </#if>
1330
1331 </#if>
1332
1333 <#assign strippedHtmlDescrizione = confTool.stripHTML(Descrizione_rendimento_e_quotazione.getData())?trim>
1334 <#if validator.isNotNull(titolo_rendimento) && strippedHtmlDescrizione?lower_case != titolo_rendimento?trim?lower_case>
1335 <div class="descrizioni">${Descrizione_rendimento_e_quotazione.getData()}</div>
1336 </#if>
1337
1338 </div>
1339
1340 <!-- blocco valore corrente valore protetto -->
1341 <!-- script da spostare in hook -->
1342 <script type="text/javascript">
1343
1344 var divisaSimboloMap = {
1345 'EUR': '€',
1346 'USD': '$',
1347 '':'',
1348 '%':'%'
1349 };
1350
1351 jQuery(document).ready(function(){
1352 var listaValuta=jQuery(".titoloValuta");
1353 if (listaValuta!=null){
1354 for (var i=0;i<listaValuta.length;i++){
1355 if (listaValuta.get(i).innerHTML.indexOf(',')!=-1){
1356 // var index=listaValuta.get(i).outerHTML.indexOf(',');
1357 // var html = listaValuta.get(i).outerHTML.substring(0,index+1) + "<span class='decimali'>" + listaValuta.get(i).outerHTML.substring(index+1,index+3) + "</span>" + listaValuta.get(i).outerHTML.substring(index+3,listaValuta.get(i).outerHTML.length);
1358 // listaValuta.get(i).outerHTML = html;
1359 var listaValuta_split = listaValuta.get(i).innerHTML.split(',');
1360 var parteIntera = listaValuta_split[0];
1361 if(listaValuta_split[1].indexOf(" ")){
1362 var listaValuta1_split = listaValuta_split[1].split(" ");
1363 var parteDecimale = listaValuta1_split[0];
1364 var parteValuta = listaValuta1_split[1];
1365 }else{
1366 var parteDecimale = listaValuta_split[1];
1367 var parteValuta = "";
1368 }
1369
1370 var parteValutaMap = (parteValuta!=""?" " + divisaSimboloMap[parteValuta]:"");
1371 console.log(parteValutaMap + "-" + parteValuta );
1372 var html = parteIntera + ",<span class='decimali'>" + parteDecimale + "</span>" + (parteValutaMap!=" undefined"? parteValutaMap:parteValuta);
1373 listaValuta.get(i).innerHTML = html;
1374 }else{
1375 console.log(listaValuta.get(i).innerHTML);
1376 if(listaValuta.get(i).innerHTML.indexOf(" ")!=-1){
1377 var listaValuta_split = listaValuta.get(i).innerHTML.split(" ");
1378 var parteIntera = listaValuta_split[0];
1379 var parteValuta = listaValuta_split[1];
1380 var parteValutaMap = (parteValuta!=""?" " + divisaSimboloMap[parteValuta]:"");
1381 console.log(parteValutaMap + "-" + parteValuta );
1382 var html = parteIntera + " " + (parteValutaMap!=" undefined"? parteValutaMap:parteValuta);
1383 listaValuta.get(i).innerHTML = html;
1384 }
1385 }
1386 }
1387 }
1388 });
1389 </script>
1390
1391 <#if valoreFondoDue == "" >
1392 <!-- blocco a singola colonna 2-->
1393
1394 <div class="bloccoValori" >
1395 <h4 class="titoloValori">${Label_valore_corrente.getData()}</h4>
1396 <div class="bloccoValuta">
1397 <h3 class="titoloValuta">${valoreFondoUno} ${valutaFondoUno}</h3>
1398 <h6 class="dataValuta">Aggiornato al ${dataAggiornamentoValore}</h6>
1399 </div>
1400 </div>
1401
1402 <#else>
1403
1404 <!-- blocco a doppia colonna -->
1405 <div class="valoriDoppioWrapper">
1406 <div class="bloccoValori doppio first" >
1407 <h4 class="titoloValori">${Label_valore_corrente.getData()}</h4>
1408 <div class="bloccoValuta">
1409 <h3 class="titoloValuta">${valoreFondoUno} ${valutaFondoUno}</h3>
1410 <h6 class="dataValuta">Aggiornato al ${dataAggiornamentoValore}</h6>
1411 </div>
1412 </div>
1413 <div class="bloccoValori doppio" >
1414 <h4 class="titoloValori">${Label_valore_protetto.getData()}
1415 <#if valore_1_min_garantito.getData()!="">
1416 *
1417 </#if>
1418 </h4>
1419 <div class="bloccoValuta">
1420 <h3 class="titoloValuta">${valoreFondoDue} ${valutaFondoDue}</h3>
1421 <h6 class="dataValuta">Aggiornato al ${dataAggiornamentoValore}</h6>
1422 </div>
1423 </div>
1424 </div>
1425 <#if validator.isNotNull(valore_1_min_garantito.getData())>
1426 <div class="caption">
1427 * ${valore_1_min_garantito.getData()}
1428 </div>
1429 </#if>
1430 </#if>
1431
1432 <div class="reset">
1433
1434 <#if isOICR && validator.isNotNull(Societa_di_gestione.getData())>
1435 <#assign labelSocietaGestione = "Società di gestione">
1436 <#if validator.isNotNull(Label_societa_di_gestione.getData())>
1437 <#assign labelSocietaGestione = Label_societa_di_gestione.getData()>
1438 </#if>
1439 <div class="gestione">
1440 <h6 class="">${labelSocietaGestione}: <strong> ${Societa_di_gestione.getData()}</strong></h6>
1441 </div>
1442 </#if>
1443
1444 <#if Istituto_emittente.getData() != "">
1445 <h5 class="titolo">${Label_obbligazione_strutturata.getData()}</h5>
1446 <div class="istituto">
1447 <h6 class="">${Label_istituto_emittente.getData()}: <strong>${Istituto_emittente.getData()}</strong></h6>
1448 <h6 class="">${Label_rating.getData()}: <strong>${Rating.getData()}</strong></h6>
1449 </div>
1450 </#if>
1451
1452 <#assign Data_scadenza_to_show = ''>
1453 <#if validator.isNotNull(Data_scadenza.getData())>
1454 <#assign Data_scadenza_DateObj = dateUtil.parseDate("yyyy-MM-dd", getterUtil.getString(Data_scadenza.getData()), localeIT)>
1455 <!-- 01/01/2100 -->
1456 <#if dateUtil.compareTo(Data_scadenza_DateObj,dateUtil.newDate(4102441200000)) lt 0 >
1457 <#assign Data_scadenza_to_show = 'Scadenza ' + dateUtil.getDate(Data_scadenza_DateObj, "dd/MM/yyyy", localeIT)>
1458 </#if>
1459 </#if>
1460
1461 <#if validator.isNotNull(Data_scadenza_to_show)>
1462 <h6 class="scadenza nomobile"><strong>${Data_scadenza_to_show}</strong></h6>
1463 </#if>
1464 </div>
1465
1466 <!-- Da agganciare nel momento in cui caricano i contenuti derivati -->
1467 <div class="reset">
1468 <#if Istituto_emittente_derivata?? && Istituto_emittente_derivata.getData() != "">
1469 <h5 class="titolo">${Label_obbligazione_derivata.getData()}</h5>
1470 <div class="istituto derivata">
1471 <h6 class="">${Label_istituto_emittente_derivata.getData()}:<strong>${Istituto_emittente_derivata.getData()}</strong></h6>
1472 <h6 class="">${Label_rating_derivata.getData()}:<strong>${Rating_derivata.getData()}</strong></h6>
1473 </div>
1474 </#if>
1475
1476 <#if validator.isNotNull(Data_scadenza_to_show)>
1477 <h6 class="scadenza onlymobile"><strong>$Data_scadenza_to_show</strong></h6>
1478 </#if>
1479
1480 </div>
1481
1482 </div>
1483
1484 <!-- FINE PRIMO BLOCCO -->
1485
1486
1487 <!-- SECONDO BLOCCO (GRAFICO STORICO) -->
1488
1489 <#assign _listaRendimenti = []>
1490 <#assign hasBenchmark = false>
1491 <#assign _benchmarkFondoMap = confTool.getBenchmarkFondo(id_fondo.id_benchmark_fondo.getData())>
1492 <#if _benchmarkFondoMap?size gt 0>
1493 <#assign hasBenchmark = true>
1494 </#if>
1495
1496 <#if !(!usaFondo ||(usaFondo && (!id_fondo?? || id_fondo.getData()=='')))>
1497 <div class="boxesDettaglio storicGraph">
1498 <#assign _datiStorico = confTool.getDatiStorico(id_fondo.getData())>
1499 <#assign _listaRendimenti = _datiStorico.getValoriRendimenti()>
1500
1501 <div class="reset">
1502 <#if getterUtil.getBoolean(hasBenchmark)>
1503 <style type="text/css">
1504 .legendaBenchmark span.fondo::before{
1505 color: #fba881;
1506 background-color: #fba881;
1507 }
1508 .legendaBenchmark span.benchmark::before{
1509 color: #0a4379;
1510 background-color: #0a4379;
1511 }
1512 .legendaBenchmark span::before{
1513 display: inline-block;
1514 height: 12px;
1515 width: 12px;
1516 border-radius: 12px;
1517 border: 1px solid #eee;
1518 content: " ";
1519 margin-right: 8px;
1520 margin-bottom: -3px;
1521 }
1522 </style>
1523
1524 <div class="legendaBenchmark" style="float: right; border: 1px solid #eee; padding: 10px; margin-right: 9px;">
1525 <span class="fondo"><i></i>Andamento Fondo</span><br/></br>
1526 <span class="benchmark"><i></i>Andamento Benchmark</span>
1527 </div>
1528
1529 </#if>
1530
1531 <h5 class="titolo">
1532 Andamento performance
1533 <#if getterUtil.getBoolean(hasBenchmark)>
1534 fondo e benchmark <br/>
1535 </#if>
1536 <small class="">Dati aggiornati al ${confTool.getDataAggiornamentoFondoFromDb(id_fondo.getData(),'dd MMM yyyy',localeIT)}</small>
1537 </h5>
1538 <#if getterUtil.getBoolean(hasBenchmark)>
1539 <div style="clear: right"></div>
1540 </#if>
1541
1542 <#if _listaRendimenti?size gt 0>
1543 <div class="graficoRendimento" >
1544 <div id="chartdiv"></div>
1545 </div>
1546 <div class="datePickers reset">
1547 <p class="inizio">
1548 <input type="text" class="datePicker" id="datepickerDa" value="${_datiStorico.getDataInizialeString()}" />
1549 </p>
1550 <p class="fine">
1551 <input type="text" class="datePicker" id="datepickerA" value="${_datiStorico.getDataFinaleString()}" />
1552 </p>
1553 </div>
1554 <p class="reset">Visualizzazione andamento dal <span id="andamentoDa"></span> al <span id="andamentoA"></span></p>
1555 <p class="reset" style="font-style:italic">
1556 Attenzione: i valori passati non sono indicativi di quelli futuri.
1557 <#if getterUtil.getBoolean(hasBenchmark)>
1558 Si evidenzia inoltre che la performance del Fondo risente dei costi gravanti sullo stesso, mentre il benchmark,
1559 in quanto indice teorico, non è gravato da costi.
1560 </#if>
1561 </p>
1562 </#if>
1563 </div>
1564 </div>
1565 </#if>
1566
1567 <!-- FINE SECONDO BLOCCO -->
1568
1569 <!-- BLOCCO PROSPETTO -->
1570
1571 <#if !(
1572 !Colonna_prospetto.getSiblings()?has_content ||
1573 (Colonna_prospetto.getSiblings()?size==1 && Colonna_prospetto.getSiblings()[0].getData()=='' &&
1574 (!Colonna_prospetto.getSiblings()[0].Allegato_prospetto.getSiblings()?has_content ||
1575 (Colonna_prospetto.getSiblings()[0].Allegato_prospetto.getSiblings()?size == 1 && Colonna_prospetto.getSiblings()[0].Allegato_prospetto.getSiblings()[0].getData()=='')
1576 )))>
1577
1578 <div class="boxesDettaglio togliMargin">
1579 <div class="reset">
1580 <p class="">${descrizione_prospetto.getData()}</p>
1581 </div>
1582 <#if Colonna_prospetto.getSiblings()?has_content>
1583 <div class="table">
1584 <div class="row theader">
1585 <div class="cell">
1586 <!-- prima colonnavuota -->
1587 </div>
1588 <#list Colonna_prospetto.getSiblings() as cur_Colonna_prospetto>
1589 <div class="cell">
1590 ${cur_Colonna_prospetto.getData()}
1591 </div>
1592 </#list>
1593 </div>
1594
1595 <#if Tipo_generazione_righe_prospetto.getData()=="dinamico">
1596 <#if Nome_Riga_Prospetto.getSiblings()?has_content>
1597 <#assign contatore_righe = 0>
1598 <#list Nome_Riga_Prospetto.getSiblings() as cur_Nome_Riga_Prospetto>
1599 <div class="row">
1600 <div class="cell">
1601 <div class="">${cur_Nome_Riga_Prospetto.getData()}</div>
1602 </div>
1603 <#list Colonna_prospetto.getSiblings() as cur_Colonna_prospetto1>
1604 <div class="cell">
1605 <#assign contatore_allegati = 0>
1606 <#assign allegatoUrl = ''>
1607
1608 <#list cur_Colonna_prospetto1.Allegato_prospetto.getSiblings() as allegato>
1609
1610 <#if contatore_allegati == contatore_righe>
1611 <#assign allegatoUrl = allegato.getData()>
1612 </#if>
1613 <#assign contatore_allegati = contatore_allegati + 1>
1614 </#list>
1615
1616 <#assign dlFileVersion = ''>
1617 <#if validator.isNotNull(allegatoUrl)>
1618 <#assign dlFileVersion = confTool.getLatestDLFileVersion(allegatoUrl, checkDisplayDate)>
1619 </#if>
1620 <#if validator.isNotNull(dlFileVersion)>
1621 <a class="icona icon-file" href="${allegatoUrl}?version=${dlFileVersion.getVersion()}" target="_blank"></a>
1622 <#else>
1623 <div>—</div>
1624 </#if>
1625 </div>
1626 </#list>
1627 </div>
1628 <#assign contatore_righe = contatore_righe + 1>
1629 </#list>
1630 </#if>
1631 </#if>
1632
1633 <#if Tipo_generazione_righe_prospetto.getData()=="quadrimestrali">
1634 <div class="row">
1635 <div class="cell">
1636 <div class="">Composizione al 31/03</div>
1637 </div>
1638
1639 <#list Colonna_prospetto.getSiblings() as cur_Colonna_prospetto1>
1640 <div class="cell">
1641 <#assign contatore_allegati = 0>
1642 <#assign allegatoUrl = ''>
1643 <#list cur_Colonna_prospetto1.Allegato_prospetto.getSiblings() as allegato>
1644 <#if contatore_allegati == 0>
1645 <#assign allegatoUrl = allegato.getData()>
1646 </#if>
1647 <#assign contatore_allegati = contatore_allegati + 1>
1648 </#list>
1649
1650 <#assign dlFileVersion = ''>
1651 <#if validator.isNotNull(allegatoUrl)>
1652 <#assign dlFileVersion = confTool.getLatestDLFileVersion(allegatoUrl, checkDisplayDate)>
1653 </#if>
1654 <#if validator.isNotNull(dlFileVersion)>
1655 <a class="icona icon-file" href="${allegatoUrl}?version=${dlFileVersion.getVersion()}" target="_blank"></a>
1656 <#else>
1657 <div>—</div>
1658 </#if>
1659 </div>
1660 </#list>
1661 </div>
1662
1663 <div class="row">
1664 <div class="cell">
1665 <div class="">Composizione al 30/06</div>
1666 </div>
1667
1668 <#list Colonna_prospetto.getSiblings() as cur_Colonna_prospetto2>
1669 <div class="cell">
1670 <#assign contatore_allegati = 0>
1671 <#assign allegatoUrl = ''>
1672 <#list cur_Colonna_prospetto2.Allegato_prospetto.getSiblings() as allegato>
1673 <#if contatore_allegati == 1>
1674 <#assign allegatoUrl = allegato.getData()>
1675 </#if>
1676 <#assign contatore_allegati = contatore_allegati + 1>
1677 </#list>
1678
1679 <#assign dlFileVersion = ''>
1680 <#if validator.isNotNull(allegatoUrl)>
1681 <#assign dlFileVersion = confTool.getLatestDLFileVersion(allegatoUrl, checkDisplayDate)>
1682 </#if>
1683 <#if validator.isNotNull(dlFileVersion)>
1684 <a class="icona icon-file" href="${allegatoUrl}?version=${dlFileVersion.getVersion()}" target="_blank"></a>
1685 <#else>
1686 <div>—</div>
1687 </#if>
1688 </div>
1689 </#list>
1690 </div>
1691
1692 <div class="row">
1693 <div class="cell">
1694 <div class="">Composizione al 30/09</div>
1695 </div>
1696
1697 <#list Colonna_prospetto.getSiblings() as cur_Colonna_prospetto3>
1698 <div class="cell">
1699 <#assign contatore_allegati = 0>
1700 <#assign allegatoUrl = ''>
1701 <#list cur_Colonna_prospetto3.Allegato_prospetto.getSiblings() as allegato>
1702 <#if contatore_allegati == 2>
1703 <#assign allegatoUrl = allegato.getData()>
1704 </#if>
1705 <#assign contatore_allegati = contatore_allegati + 1>
1706 </#list>
1707
1708 <#assign dlFileVersion = ''>
1709 <#if validator.isNotNull(allegatoUrl)>
1710 <#assign dlFileVersion = confTool.getLatestDLFileVersion(allegatoUrl, checkDisplayDate)>
1711 </#if>
1712 <#if validator.isNotNull(dlFileVersion)>
1713 <a class="icona icon-file" href="${allegatoUrl}?version=${dlFileVersion.getVersion()}" target="_blank"></a>
1714 <#else>
1715 <div>—</div>
1716 </#if>
1717 </div>
1718 </#list>
1719 </div>
1720
1721 <div class="row">
1722 <div class="cell">
1723 <div class="">Composizione al 31/12</div>
1724 </div>
1725
1726 <#list Colonna_prospetto.getSiblings() as cur_Colonna_prospetto4>
1727 <div class="cell">
1728 <#assign contatore_allegati = 0>
1729 <#assign allegatoUrl = ''>
1730 <#list cur_Colonna_prospetto4.Allegato_prospetto.getSiblings() as allegato>
1731 <#if contatore_allegati == 3>
1732 <#assign allegatoUrl = allegato.getData()>
1733 </#if>
1734 <#assign contatore_allegati = contatore_allegati + 1>
1735 </#list>
1736
1737 <#assign dlFileVersion = ''>
1738 <#if validator.isNotNull(allegatoUrl)>
1739 <#assign dlFileVersion = confTool.getLatestDLFileVersion(allegatoUrl, checkDisplayDate)>
1740 </#if>
1741 <#if validator.isNotNull(dlFileVersion)>
1742 <a class="icona icon-file" href="${allegatoUrl}?version=${dlFileVersion.getVersion()}" target="_blank"></a>
1743 <#else>
1744 <div>—</div>
1745 </#if>
1746 </div>
1747 </#list>
1748 </div>
1749 </#if>
1750 </div>
1751 </#if>
1752 </div>
1753 </#if>
1754
1755
1756 <!-- INIZIO BLOCCO SMARTPHONE PROSPETTO -->
1757
1758 <#if !(
1759 !Colonna_prospetto.getSiblings()?has_content ||
1760 (Colonna_prospetto.getSiblings()?size==1 && Colonna_prospetto.getSiblings()[0].getData()=='' &&
1761 (!Colonna_prospetto.getSiblings()[0].Allegato_prospetto.getSiblings()?has_content ||
1762 (Colonna_prospetto.getSiblings()[0].Allegato_prospetto.getSiblings()?size == 1 && Colonna_prospetto.getSiblings()[0].Allegato_prospetto.getSiblings()[0].getData()=='')
1763 )))>
1764 <div class="table_smart secondaTab prospetto">
1765 <table>
1766 <tbody>
1767 <#assign tipo_colonne_prospetto = Tipo_generazione_righe_prospetto.getData()> <!-- in realta per gli smart le righe sono colonne -->
1768 <#if tipo_colonne_prospetto == "dinamico">
1769
1770 <tr class="intestazione_smart">
1771 <td colspan="1">Anno</td>
1772 <#list Nome_Riga_Prospetto.getSiblings() as cur_Nome_Col_Prospetto>
1773 <td colspan="1">${cur_Nome_Col_Prospetto.getData()}</td>
1774 </#list>
1775 </tr>
1776
1777 <#if Colonna_prospetto.getSiblings()?has_content>
1778 <#list Colonna_prospetto.getSiblings() as cur_Colonna_prospetto>
1779 <#assign velocityCount = cur_Colonna_prospetto?index/>
1780 <#if velocityCount % 2 == 0>
1781 <tr class="pari">
1782 <#elseif velocityCount % 2 == 1>
1783 <tr class="dispari">
1784 </#if>
1785
1786 <td>${cur_Colonna_prospetto.getData()}</td>
1787 <#list cur_Colonna_prospetto.Allegato_prospetto.getSiblings() as allegato>
1788 <#assign allegatoUrl = ''>
1789 <td>
1790 <#assign allegatoUrl = allegato.getData()>
1791 <#assign dlFileVersion = ''>
1792 <#if validator.isNotNull(allegatoUrl)>
1793 <#assign dlFileVersion = confTool.getLatestDLFileVersion(allegatoUrl, checkDisplayDate)>
1794 </#if>
1795 <#if validator.isNotNull(dlFileVersion)>
1796 <a class="icona icon-file" href="${allegatoUrl}?version=${dlFileVersion.getVersion()}" target="_blank"></a>
1797 <#else>
1798 <div>—</div>
1799 </#if>
1800 </td>
1801 </#list>
1802 </tr>
1803 </#list>
1804 </#if>
1805
1806 <#elseif tipo_colonne_prospetto == "quadrimestrali">
1807
1808 <tr class="intestazione_smart">
1809 <td colspan="1">Anno</td>
1810 <td colspan="1">31Mar</td>
1811 <td colspan="1">30Giu</td>
1812 <td colspan="1">30Set</td>
1813 <td colspan="1">31Dic</td>
1814 </tr>
1815
1816 <#if Colonna_prospetto.getSiblings()?has_content>
1817 <#list Colonna_prospetto.getSiblings() as cur_Colonna_prospetto>
1818 <#assign velocityCount = cur_Colonna_prospetto?index/>
1819 <#if velocityCount % 2 == 0>
1820 <tr class="pari">
1821 <#elseif velocityCount % 2 == 1>
1822 <tr class="dispari">
1823 </#if>
1824
1825 <td>${cur_Colonna_prospetto.getData()}</td>
1826
1827 <#assign contatore_allegati = 0>
1828 <#list cur_Colonna_prospetto.Allegato_prospetto.getSiblings() as allegato>
1829 <#assign allegatoUrl = ''>
1830 <td>
1831 <#assign allegatoUrl = allegato.getData()>
1832 <#assign dlFileVersion = ''>
1833 <#if validator.isNotNull(allegatoUrl)>
1834 <#assign dlFileVersion = confTool.getLatestDLFileVersion(allegatoUrl, checkDisplayDate)>
1835 </#if>
1836 <#if validator.isNotNull(dlFileVersion)>
1837 <a class="icona icon-file" href="${allegatoUrl}?version=${dlFileVersion.getVersion()}" target="_blank"></a>
1838 <#else>
1839 <div>—</div>
1840 </#if>
1841 </td>
1842 </#list>
1843 </tr>
1844 </#list>
1845 </#if>
1846 </#if>
1847 </tbody>
1848 </table>
1849 </div>
1850 </#if>
1851
1852 <!-- FINE BLOCCO SMARTPHONE PROSPETTO -->
1853
1854 <!-- BLOCCO INDICI -->
1855
1856 <#if !(
1857 (!Indici_titolo_alto?has_content || Indici_titolo_alto.getData()=='') &&
1858 (!Label_titolo_valore_iniziale_titoli?has_content || Label_titolo_valore_iniziale_titoli.getData()=='') &&
1859 (!Label_titolo_tabella_valore_iniziale_indici?has_content || Label_titolo_tabella_valore_iniziale_indici.getData()=='') &&
1860 (!Label_titolo_tabella_prestazioni_annuali?has_content || Label_titolo_tabella_prestazioni_annuali.getData()=='') &&
1861 (!Indici_titolo_basso?has_content || Indici_titolo_basso.getData()=='') &&
1862 (!titolo_box_tabella?has_content || titolo_box_tabella.getData()=='')
1863 )>
1864
1865 <div class="boxesDettaglio togliMargin">
1866 <div class="reset">
1867 <h5 class="titolo">${Indici_titolo_alto.getData()}</h5>
1868 <p class="">${Indici_descrizione_alta.getData()}</p>
1869
1870 <#if !(!Label_titolo_valore_iniziale_titoli?has_content || Label_titolo_valore_iniziale_titoli.getData()=='')>
1871 <#assign fileEntryPath = Nome_allegato_valore_iniziale_titoli.Allegato_valore_iniziale_titoli.getData()>
1872 <#assign dlFileVersion = ''>
1873 <#if validator.isNotNull(fileEntryPath)>
1874 <#assign dlFileVersion = confTool.getLatestDLFileVersion(fileEntryPath, checkDisplayDate)>
1875 </#if>
1876
1877 <#if validator.isNotNull(dlFileVersion)>
1878 <h6 class="titolo">${Label_titolo_valore_iniziale_titoli.getData()}</h6>
1879 <div class="archivi">
1880 <a href="${fileEntryPath}?version=${dlFileVersion.getVersion()}" target="_blank">
1881 <h6>
1882 <span class="icona icon-file"></span>
1883 <div>${Nome_allegato_valore_iniziale_titoli.getData()}</div>
1884 </h6>
1885 </a>
1886 </div>
1887 </#if>
1888 </#if>
1889
1890 <#if Label_titolo_tabella_valore_iniziale_indici.getData() != "">
1891 <h6 class="titolo indici">${Label_titolo_tabella_valore_iniziale_indici.getData()}</h6>
1892 </div>
1893 <div class="table">
1894
1895 <#if Riga_valore_iniziale_indici_colonna_1.getSiblings()?has_content>
1896
1897 <#list Riga_valore_iniziale_indici_colonna_1.getSiblings() as cur_Riga_valore_iniziale_indici_colonna_1>
1898 <div class="row">
1899 <div class="cell">
1900 ${cur_Riga_valore_iniziale_indici_colonna_1.getData()}
1901 </div>
1902
1903 <div class="cell">
1904 ${cur_Riga_valore_iniziale_indici_colonna_1.Riga_valore_iniziale_indici_data_emissione.getData()}
1905 </div>
1906
1907 <div class="cell">
1908 ${cur_Riga_valore_iniziale_indici_colonna_1.Riga_valore_iniziale_indici_colonna_3.getData()}
1909 </div>
1910 </div>
1911 </#list>
1912
1913 </#if>
1914
1915 </div>
1916
1917 <!-- INIZIO BLOCCO SMARTPHONE SECONDA TABELLA -->
1918 <div class="table_smart secondaTab">
1919 <#if Riga_valore_iniziale_indici_colonna_1.getSiblings()?has_content>
1920 <table>
1921 <tbody>
1922 <#list Riga_valore_iniziale_indici_colonna_1.getSiblings() as cur_Riga_valore_iniziale_indici_colonna_1>
1923 <#assign velocityCount = cur_Riga_valore_iniziale_indici_colonna_1?index/>
1924 <#if velocityCount!=1>
1925 <tr class="intestazione_smart">
1926 <td colspan="2">${cur_Riga_valore_iniziale_indici_colonna_1.getData()}</td>
1927 </tr>
1928 <tr class="pari">
1929 <td>${Riga_valore_iniziale_indici_colonna_1.getSiblings()[0].Riga_valore_iniziale_indici_data_emissione.getData()}</td>
1930 <td>${cur_Riga_valore_iniziale_indici_colonna_1.Riga_valore_iniziale_indici_data_emissione.getData()}</td>
1931 </tr>
1932 <tr class="dispari">
1933 <td>${Riga_valore_iniziale_indici_colonna_1.getSiblings()[0].Riga_valore_iniziale_indici_colonna_3.getData()}</td>
1934 <td>${cur_Riga_valore_iniziale_indici_colonna_1.Riga_valore_iniziale_indici_colonna_3.getData()}</td>
1935 </tr>
1936 </#if>
1937
1938 </#list>
1939 </tbody>
1940 </table>
1941 </#if>
1942 </div>
1943 <!-- FINE BLOCCO SMARTPHONE SECONDA TABELLA -->
1944
1945
1946
1947 <div class="reset tab">
1948 </#if>
1949 <#if Label_titolo_tabella_prestazioni_annuali.getData() != "">
1950 <h6 class="titolo">${Label_titolo_tabella_prestazioni_annuali.getData()}</h6>
1951 <#if Prestazione_annuale_data_label.getSiblings()?has_content>
1952 </div>
1953 <div class="table">
1954
1955 <#list Prestazione_annuale_data_label.getSiblings() as cur_Prestazione_annuale_data_label>
1956 <div class="row">
1957 <div class="cell">
1958 ${cur_Prestazione_annuale_data_label.getData()}
1959 </div>
1960
1961 <div class="cell">
1962 ${cur_Prestazione_annuale_data_label.Prestazione_annuale_percentuale.getData()}
1963 </div>
1964 </div>
1965 </#list>
1966
1967 </div>
1968
1969
1970
1971 <!-- INZIO BLOCCO SMARTPHONE -->
1972 <div class="table_smart terzaTab">
1973 <table>
1974 <tbody>
1975 <#list Prestazione_annuale_data_label.getSiblings() as cur_Prestazione_annuale_data_label>
1976 <#assign velocityCount = cur_Prestazione_annuale_data_label?index/>
1977 <#if velocityCount==1>
1978 <tr class="intestazione_smart">
1979 <td>${cur_Prestazione_annuale_data_label.getData()}</td>
1980 <td class="presta_ann">${cur_Prestazione_annuale_data_label.Prestazione_annuale_percentuale.getData()}</td>
1981 </tr>
1982 <#elseif velocityCount%2==0>
1983 <tr class="pari">
1984 <td>${cur_Prestazione_annuale_data_label.getData()}</td>
1985 <td>${cur_Prestazione_annuale_data_label.Prestazione_annuale_percentuale.getData()}</td>
1986 </tr>
1987 <#elseif velocityCount%2==1>
1988 <tr class="dispari">
1989 <td>${cur_Prestazione_annuale_data_label.getData()}</td>
1990 <td>${cur_Prestazione_annuale_data_label.Prestazione_annuale_percentuale.getData()}</td>
1991 </tr>
1992 </#if>
1993 </#list>
1994 </tbody>
1995 </table>
1996 </div>
1997
1998 <!-- FINE BLOCCO SMARTPHONE -->
1999
2000 </#if>
2001 </#if>
2002
2003 <!-- INIZIO BLOCCO TABELLA NxM -->
2004 <#list titolo_box_tabella.getSiblings() as cur_titolo_box_tabella>
2005 <div class="reset">
2006 <#assign tipoTabella = cur_titolo_box_tabella.tipo_tabella.getData()>
2007 <#assign descrizioneTabella = cur_titolo_box_tabella.descrizione_tabella.getData()>
2008 <#if descrizioneTabella!=''>
2009 <h5 class="titolo prospetto">
2010 ${cur_titolo_box_tabella.getData()}
2011 </h5>
2012 <p class="">${descrizioneTabella}</p>
2013 <#else>
2014 <h6 class="titolo">
2015 ${cur_titolo_box_tabella.getData()}
2016 </h6>
2017 </#if>
2018 </div>
2019
2020 <!-- controllo che la prima riga sia valorizzata altrimenti non la stampo -->
2021 <#assign contTheaderVisible = 0>
2022 <#list cur_titolo_box_tabella.intestazione_tabella.th_tabella.getSiblings() as cur_th_tabella>
2023 <#if cur_th_tabella.getData()?has_content>
2024 <#assign contTheaderVisible = contTheaderVisible + 1>
2025 <#break>
2026 </#if>
2027 </#list>
2028
2029 <#assign contRowVisible = 0>
2030 <#if cur_titolo_box_tabella.tr_tabella?has_content>
2031 <#list cur_titolo_box_tabella.tr_tabella.getSiblings() as cur_tr_tabella>
2032 <#if cur_tr_tabella.getData()?has_content>
2033 <#assign contRowVisible = contRowVisible + 1>
2034 <#break>
2035 <#else>
2036 <#if cur_tr_tabella.td_tabella?has_content>
2037 <#list cur_tr_tabella.td_tabella.getSiblings() as cur_td_tabella>
2038 <!-- se di tipo testo stampo il campo td_tabella -->
2039 <#if tipoTabella?lower_case == 'testo'>
2040 <#if cur_td_tabella.getData()?has_content>
2041 <#assign contRowVisible = contRowVisible + 1>
2042 <#break>
2043 </#if>
2044 </#if>
2045 <!-- se di tipo documento stampo il campo td_allegato_url -->
2046 <#if tipoTabella?lower_case == 'documento'>
2047 <#if cur_td_tabella.td_allegato_url.getData() && cur_td_tabella.td_allegato_url.getData() != ''>
2048 <#assign contRowVisible = contRowVisible + 1>
2049 <#break>
2050 </#if>
2051 </#if>
2052 </#list>
2053 </#if>
2054 </#if>
2055 </#list>
2056 </#if>
2057
2058 <#if (contTheaderVisible gt 0 || cur_titolo_box_tabella.intestazione_tabella.getData()?has_content) || contRowVisible gt 0>
2059 <div class="table">
2060
2061 <#if contTheaderVisible gt 0 || cur_titolo_box_tabella.intestazione_tabella.getData()?has_content>
2062 <div class="row theader">
2063 <#else>
2064 <div class="row theader" style="display:none;">
2065 </#if>
2066
2067 <div class="cell">
2068 ${cur_titolo_box_tabella.intestazione_tabella.getData()}
2069 </div>
2070
2071 <#list cur_titolo_box_tabella.intestazione_tabella.th_tabella.getSiblings() as cur_th_tabella>
2072 <div class="cell">
2073 ${cur_th_tabella.getData()}
2074 </div>
2075 </#list>
2076
2077 </div>
2078 <#if cur_titolo_box_tabella.tr_tabella.isEmpty()?has_content>
2079 <#assign rowCount = 0>
2080 <#assign velocityCount = 0>
2081 <#list cur_titolo_box_tabella.tr_tabella.getSiblings() as cur_tr_tabella>
2082 <#assign velocityCount = cur_tr_tabella?index/>
2083 <#assign rowCount = velocityCount>
2084 <div class="row">
2085 <#if rowCount==1>
2086 <div class="cell" style="border-top-color: #D9E2EA; border-top-style: solid; border-top-width: 1px;">
2087 <#else>
2088 <div class="cell">
2089 </#if>
2090
2091 <div class="">${cur_tr_tabella.getData()}</div>
2092 </div>
2093
2094 <#if cur_tr_tabella.td_tabella.isEmpty()?has_content>
2095 <#list cur_tr_tabella.td_tabella.getSiblings() as cur_td_tabella>
2096 <#if rowCount==1>
2097 <div class="cell" style="border-top-color: #D9E2EA; border-top-style: solid; border-top-width: 1px;">
2098 <#else>
2099 <div class="cell">
2100 </#if>
2101
2102 <!-- se di tipo testo stampo il campo td_tabella -->
2103 <#if tipoTabella?lower_case == 'testo'>
2104 ${cur_td_tabella.getData()}
2105 </#if>
2106
2107 <!-- se di tipo documento stampo il campo td_allegato_url -->
2108 <#if tipoTabella?lower_case == 'documento'>
2109 <#assign fileEntryPath = cur_td_tabella.td_allegato_url.getData()>
2110
2111 <#assign dlFileVersion = ''>
2112 <#if validator.isNotNull(fileEntryPath)>
2113 <#assign dlFileVersion =$confTool.getLatestDLFileVersion(fileEntryPath, checkDisplayDate)>
2114 </#if>
2115 <#if validator.isNotNull(dlFileVersion)>
2116 <a class="icona icon-file" href="${fileEntryPath}?version=${dlFileVersion.getVersion()}" target="_blank"></a>
2117 <#else>
2118 <div>—</div>
2119 </#if>
2120 </#if>
2121 </div>
2122 </#list>
2123 </#if>
2124 </div>
2125 <!-- end if in piu -->
2126 </#list>
2127 </div>
2128 </#if>
2129 </#if>
2130 </#list>
2131 <!-- FINE BLOCCO TABELLA NxM -->
2132
2133
2134 <div class="reset">
2135 <h5 class="titolo">${Indici_titolo_basso.getData()}</h5>
2136
2137 <p class="">${Indici_descrizione_bassa.getData()}</p>
2138 </div>
2139
2140 </div>
2141 </div> <!-- boxesDettaglio togliMargin -->
2142
2143 </#if>
2144
2145
2146
2147 <!-- FINE BLOCCO INDICI -->
2148
2149
2150
2151 <!-- BLOCCO (DOWNLOADS BOXES) -->
2152
2153 <#if !(Download_box_label?? && Download_box_label.getData()?has_content && (!Download_box_label.getSiblings()?has_content ||
2154 (Download_box_label.getSiblings()?size==1 &&
2155 (!Download_box_label.getSiblings()[0].getData()?has_content || Download_box_label.getSiblings()[0].getData()=='') &&
2156 (!Download_box_label.getSiblings()[0].Nome_allegato.getSiblings()?has_content ||
2157 (Download_box_label.getSiblings()[0].Nome_allegato.getSiblings()?size==1 &&
2158 (!Download_box_label.getSiblings()[0].Nome_allegato.getSiblings().getData()?has_content || Download_box_label.getSiblings()[0].Nome_allegato.getSiblings()[0].getData()=='')
2159 )))))>
2160
2161 <#list Download_box_label.getSiblings() as cur_Download_box_label>
2162 <div class="boxesDettaglio togliMargin">
2163 <div class="reset download">
2164 <#if getterUtil.getBoolean(cur_Download_box_label.conteggio_file.getData())>
2165 <#assign file_number = cur_Download_box_label.Nome_allegato.getSiblings()?size>
2166 <h5 class="titolo">${cur_Download_box_label.getData()} ( ${file_number} file )</h5>
2167 <#else>
2168 <h5 class="titolo download">${cur_Download_box_label.getData()}</h5>
2169 </#if>
2170 <#if cur_Download_box_label.Nome_allegato.getSiblings()?has_content>
2171 <div class="archivi">
2172 <#list cur_Download_box_label.Nome_allegato.getSiblings() as cur_Download_box>
2173
2174 <#assign fileEntryPath = cur_Download_box.Allegato_url.getData()>
2175
2176 <#assign dlFileVersion = ''>
2177 <#if validator.isNotNull(fileEntryPath)>
2178 <#assign dlFileVersion = confTool.getLatestDLFileVersion(fileEntryPath, checkDisplayDate)>
2179 </#if>
2180 <#if validator.isNotNull(dlFileVersion)>
2181 <#if cur_Download_box.tipo_allegato.getData()=="excel">
2182 <a href="${fileEntryPath}?version=${dlFileVersion.getVersion()}" target="_blank">
2183 <h6>
2184 <span class="icona icon-copy"></span>
2185 <#else>
2186 <a href="${fileEntryPath}?version=${dlFileVersion.getVersion()}" target="_blank">
2187 <h6>
2188 <span class="icona icon-file"></span>
2189 </#if>
2190 <div>${cur_Download_box.getData()}</div>
2191 </h6>
2192 </a>
2193 </#if>
2194 </#list>
2195 </div>
2196 </#if>
2197 </div>
2198 </div>
2199 </#list>
2200 </#if>
2201
2202 <!-- FINE BLOCCO (DOWNLOADS BOXES) -->
2203
2204 <!-- BLOCCO DISCLAIMER -->
2205
2206 <footer >
2207
2208 <p class="caption disclaimer">${disclaimer.getData()}</p>
2209
2210 </footer>
2211
2212 <!-- FINE BLOCCO DISCLAIMER -->
2213
2214
2215 <!-- LINK AL TOP -->
2216 <a href="#Top" class="back-to-top" title="Torna a inizio pagina">
2217 TORNA A INIZIO PAGINA <span class="icona icon-angle-up"></span>
2218 </a>
2219 <!-- FINE LINK AL TOP -->
2220
2221 <script type="text/javascript">
2222
2223 jQuery(document).ready(function(){
2224
2225 /* Nasconde, se presente lo span che contiene la pagina di dettaglio */
2226 if(jQuery(".breadcrumbs .elementi span").length) {
2227 jQuery(".breadcrumbs .elementi span").hide();
2228 }
2229
2230 if(jQuery("html").is(".smartphone"))
2231 {
2232 convertTableToDivs();
2233 swipeProspetto();
2234 jQuery(".boxesDettaglio.togliMargin .bloccoValori").first().before("<div class='carousel-menu'></div>");
2235 jQuery(".boxesDettaglio.togliMargin .bloccoValori").first().before("<div class='carousel-items'></div>");
2236 jQuery(".boxesDettaglio.togliMargin .bloccoValori").appendTo(".boxesDettaglio.togliMargin .carousel-items");
2237
2238 jQuery(".boxesDettaglio.togliMargin .bloccoValori").wrap("<div class='carousel-item'></div>");
2239
2240 var bullet=jQuery('<span class="carousel-menu-index">•</span>');
2241
2242 /* creo l'elenco delle slide */
2243 jQuery(".boxesDettaglio.togliMargin .carousel-item").each(function(){
2244 bullet.clone().appendTo(".boxesDettaglio.togliMargin .carousel-menu");
2245 });
2246
2247 var car = ISP.carousel('.boxesDettaglio.togliMargin .carousel-items', '.boxesDettaglio.togliMargin .carousel-menu');
2248
2249 car.play();
2250 }
2251 });
2252
2253 function updateAndamentoLabel(){
2254 jQuery("#andamentoDa").html(jQuery("#datepickerDa").val());
2255 jQuery("#andamentoA").html(jQuery("#datepickerA").val());
2256 }
2257
2258 function applyGradientOnPlot(){
2259 var canvasSeries = jQuery(".jqplot-series-canvas")[0];
2260 var ctx = canvasSeries.getContext("2d");
2261 var my_gradient=ctx.createLinearGradient(0,0,0,300);
2262 my_gradient.addColorStop(0, "rgba(251,168,129,0.6)");
2263 my_gradient.addColorStop(1, "rgba(251,168,129,0.1)");
2264 ctx.fillStyle = my_gradient;
2265 ctx.fill();
2266 }
2267
2268 function updateDatePickers(){
2269 //Aggiorniamo i datepicker con i reali valori visualizzati dal grafico. Necessario per via del padding.
2270
2271 var dataInizialeDefault = jQuery("#dataDefaultVisualizzazionediv").text();
2272
2273 if(dataInizialeDefault.length>0){
2274 var dataNuova = new Date (dataInizialeDefault);
2275
2276 jQuery("#datepickerDa").datepicker("setDate", new Date(dataInizialeDefault));
2277 }else{
2278 jQuery("#datepickerDa").datepicker("setDate", new Date(gestioneGrafico.plotter.axes.xaxis.min));
2279 }
2280
2281
2282 jQuery("#datepickerA").datepicker("setDate", new Date(gestioneGrafico.plotter.axes.xaxis.max));
2283 jQuery('#datepickerDa').datepicker('option', 'minDate', new Date(gestioneGrafico.plotter.axes.xaxis.min));
2284 jQuery('#datepickerDa').datepicker('option', 'maxDate', new Date(gestioneGrafico.plotter.axes.xaxis.max));
2285 jQuery('#datepickerA').datepicker('option', 'minDate', new Date(gestioneGrafico.plotter.axes.xaxis.min));
2286 jQuery('#datepickerA').datepicker('option', 'maxDate', new Date(gestioneGrafico.plotter.axes.xaxis.max));
2287 }
2288
2289 function aggiornaPerformance(dataIniziale, dataFinale){
2290 var dati = window.gestioneGrafico.datiTraLeDate(dataIniziale, dataFinale);
2291
2292 var valoreIniziale = dati[0][1];
2293 var valoreFinale = dati[dati.length - 1][1];
2294
2295 var performance = ((valoreFinale - valoreIniziale) / valoreIniziale) * 100;
2296 if(!isNumber(performance)){
2297 performance = 0;
2298 }
2299 var performance_rounded = +performance.toFixed(2);
2300
2301 var performance_split = [];
2302 if(performance_rounded.toString().indexOf(".")>0){
2303 performance_split = performance_rounded.toString().split(".");
2304 }else{
2305 performance_split[0] = performance_rounded;
2306 performance_split[1] = 0;
2307 }
2308 jQuery(".bloccoValori.performance .titoloValuta").html(performance_split[0] + (performance_split[1]!=0?",<span class='decimali'>" + performance_split[1] + "</span>":"") + " %");
2309 }
2310
2311 function postDrawProcessing(){
2312 console.log("postDrawHooks!");
2313 applyGradientOnPlot();
2314
2315 var dataIniziale = new Date(gestioneGrafico.plotter.axes.xaxis.min);
2316 var dataFinale = new Date(gestioneGrafico.plotter.axes.xaxis.max);
2317
2318 aggiornaPerformance(dataIniziale, dataFinale);
2319
2320 var dataInizialeStr = jQuery.datepicker.formatDate('dd/mm/yy', dataIniziale)
2321 var dataFinaleStr = jQuery.datepicker.formatDate('dd/mm/yy', dataFinale);
2322
2323 //aggiorno solo se diverso per evitare di far scattare onchange
2324 //if (dataInizialeStr!=jQuery("#datepickerDa").val()) {
2325 console.log('aggiorno data iniziale da ' + jQuery("#datepickerDa").val() + ' a ' + dataInizialeStr);
2326 jQuery("#datepickerDa").datepicker("setDate", dataIniziale);
2327 //}
2328 //if (dataFinaleStr!=jQuery("#datepickerA").val()) {
2329 console.log('aggiorno data finale da ' + jQuery("#datepickerA").val() + ' a ' + dataFinaleStr);
2330 jQuery("#datepickerA").datepicker("setDate", dataFinale);
2331 //}
2332
2333 updateAndamentoLabel();
2334 }
2335
2336 function isNumber(n) {
2337 return !isNaN(parseFloat(n)) && isFinite(n);
2338 }
2339
2340 jQuery(document).ready(function() {
2341
2342 //window.primavolta = true;
2343
2344 jQuery.jsDate.regional['it-IT'] = {
2345 monthNames: ['Gennaio','Febbraio','Marzo','Aprile','Maggio','Giugno','Luglio','Agosto','Settembre','Ottobre','Novembre','Dicembre'],
2346 monthNamesShort: ['Gen','Feb','Mar','Apr','Mag','Giu','Lug','Ago','Set','Ott','Nov','Dic'],
2347 dayNames: ['Domenica','Lunedi','Martedi','Mercoledi','Giovedi','Venerdi','Sabato'],
2348 dayNamesShort: ['Dom','Lun','Mar','Mer','Gio','Ven','Sab'],
2349 formatString: '%d-%m-%Y %H:%M:%S'
2350 };
2351 jQuery.jsDate.regional.getLocale();
2352
2353 Date.prototype.sameDay = function(d) {
2354
2355
2356 return (this.getFullYear() === d.getFullYear()
2357 && this.getMonth() === d.getMonth()
2358 && this.getDate() === d.getDate());
2359
2360 }
2361
2362 //Spostato qui perché voglio essere sicuro che gestioneGrafico sia inizializzato quando viene chiamato in questa funzione.
2363 //window.gestioneGrafico garantisce che è una variabile globale! -RC
2364 window.gestioneGrafico = {
2365
2366 //Gestione del pad manuale perché quando si impostano un minimo e un massimo per gli assi il pad è ignorato. -RC
2367 pad: 1.1,
2368
2369 tuttiIdatiDelGrafico : function() {
2370
2371 var tuttiIDati =[];
2372
2373 <#list _listaRendimenti as storicoBean>
2374 tuttiIDati.push([this.getADate('${storicoBean.getDataAggiornamentoStr()}'),'${storicoBean.getValoreFondoUno()}']);
2375 </#list>
2376
2377 //ritorno una copia dell'array che contiene tutti i dati
2378 return tuttiIDati.slice();
2379 },
2380 datiBenchmark : function(){
2381 var datiBenchmark = [];
2382 <#list _benchmarkFondoMap?keys as _benchmarkFondoKey>
2383 datiBenchmark.push([this.getADate('${_benchmarkFondoKey}'),'${_benchmarkFondoMap[_benchmarkFondoKey]}']);
2384 </#list>
2385 return datiBenchmark.slice();
2386 },
2387 getADate: function (dataStr)
2388 {
2389 //console.log("getADate dataStr" + dataStr);
2390 if (dataStr == null)
2391 return;
2392 var partiData = dataStr.split("/");
2393 var day = partiData[0];
2394 var month = partiData[1] - 1;
2395 var year = partiData[2];
2396 //console.log("year " + year + " month" + month + " day " + day)
2397 var aDate = new Date(year, month, day, 0, 0, 0, 0);
2398 return aDate;
2399 },
2400
2401 datiTraLeDate : function (dataDa, dataA){
2402 //console.log("datiTraLeDate dataDa " + dataDa + " dataA " + dataA);
2403
2404 var tuttiIdati = this.tuttiIdatiDelGrafico();
2405 //cerco l'elemento minimo superiore a dataDa
2406 //cerco l'elemnto massimo inferiore a dataA
2407 //l'array di dati originali è gia ordinato per data
2408 var indiceDellaDataMinore = -1;
2409 var indiceDellaDataMaggiore = -1;
2410 var currDate;
2411 //cerco la prima data subito superiore a dataDa
2412 for (var i=0; i< tuttiIdati.length; i++) {
2413 currDate = moment(tuttiIdati[i][0]).hours(0).minutes(0).seconds(0);
2414 if((currDate.isAfter(dataDa)||(currDate.isSame(dataDa))) && (currDate.isBefore(dataA)||currDate.isSame(dataA))) {
2415 indiceDellaDataMinore = i;
2416 break;
2417 }
2418 }
2419 //cerco la prima data subito inveriore a dataA
2420 for (var i=tuttiIdati.length -1; i>=0; i--) {
2421 currDate = moment(tuttiIdati[i][0]).hours(0).minutes(0).seconds(0);
2422 if((currDate.isBefore(dataA)|| currDate.isSame(dataA)) && (currDate.isAfter(dataDa)||currDate.isSame(dataDa))) {
2423 indiceDellaDataMaggiore = i;
2424 break;
2425 }
2426 }
2427 //a questo punto ho gli indici delle date minore e maggiore, taglio l'array
2428 var nDiElementi = indiceDellaDataMaggiore - indiceDellaDataMinore + 1;
2429 console.log("nDiElementi" + nDiElementi);
2430 var nuovoRange = tuttiIdati.splice(indiceDellaDataMinore,nDiElementi);
2431 //se 0 risultati creo un array con dati [[dataIniziale, 0], [dataFinale, 0]]
2432 if (nuovoRange.length == 0){
2433 console.log("ritorno un range vuoto");
2434 nuovoRange = [["{$_datiStorico.getDataInizialeString()}"][0],["{$_datiStorico.getDataFinaleString()}"][0]];
2435 }
2436
2437 return nuovoRange;
2438 },
2439 getAxisBounds: function(dati, pad, dataDa, dataA, datiBenchmark){
2440 var _pad = (pad==null||typeof pad == 'undefined')?0:pad;
2441 var _dataDa = typeof dataDa == 'undefined'?null:dataDa;
2442 var _dataA = typeof dataA == 'undefined'?null:dataA;
2443 var _datiBenchmark = typeof datiBenchmark == 'undefined'?null:datiBenchmark;
2444
2445 var minXVal = null;
2446 var maxXVal = null;
2447 //Vogliamo che Y parta da 0 o dal minimo valore minore di 0
2448 var minYVal = null;
2449 var maxYVal = null;
2450
2451 for(var i=0; i<dati.length; i++){
2452 var valY = parseFloat(dati[i][1]);
2453 if(_dataDa==null&&(minXVal==null||dati[i][0]<minXVal)){
2454 minXVal = dati[i][0];
2455 }
2456 if(_dataA==null&&(maxXVal==null||dati[i][0]>maxXVal)){
2457 maxXVal = dati[i][0];
2458 }
2459 if(minYVal==null||valY<minYVal){
2460 minYVal = valY;
2461 }
2462 if(maxYVal==null||valY>maxYVal){
2463 maxYVal = valY;
2464 }
2465 }
2466
2467 if(_datiBenchmark != null){
2468 for(var l=0; l<_datiBenchmark.length; l++){
2469 var valY = parseFloat(_datiBenchmark[l][1]);
2470 if(minYVal==null||valY<minYVal){
2471 minYVal = valY;
2472 }
2473 if(maxYVal==null||valY>maxYVal){
2474 maxYVal = valY;
2475 }
2476 }
2477 }
2478
2479 if(dataDa!=null){
2480 minXVal = dataDa;
2481 }
2482 if(dataA!=null){
2483 maxXVal = dataA;
2484 }
2485
2486 var padX = 0;
2487 var padY = 0;
2488 if(dati.length>1){
2489 padX = ((maxXVal - minXVal)*(pad-1))/2;
2490 // padY = minYVal>0?((maxYVal - 0)*(pad-1))/2:((maxYVal - minYVal)*(pad-1))/2;
2491 padY = ((maxYVal - minYVal)*(pad-1))/2;
2492 }else{
2493 padX = 86401000;
2494 padY = maxYVal*(pad-1);
2495 }
2496
2497 if(padY<0){
2498 padY=-padY;
2499 }else if(padY==0){
2500 padY=2;
2501 }
2502
2503 var bounds = {
2504 minX: dati.length>1?new Date(minXVal.getTime()):new Date(minXVal.getTime()-padX),
2505 maxX: dati.length>1?new Date(maxXVal.getTime()):new Date(maxXVal.getTime()+2*padX),
2506 // minY: minYVal>0?0:minYVal-padY,
2507 minY: (minYVal-padY),
2508 maxY: maxYVal+padY
2509 }
2510
2511 return bounds;
2512 },
2513 zoomHandler: function() {
2514 var c = this.plugins.cursor;
2515 console.log(c);
2516 },
2517
2518 plotter: null,
2519 visualizzaGrafico : function (dati, dataDa, dataA){
2520 var seriesToPlot;
2521 var datiBenchmarkFiltered = [];
2522 try{
2523 if (typeof dataDa === 'undefined') dataDa = new Date(gestore.plotter.axes.xaxis.min);
2524 if (typeof dataA === 'undefined') dataA = new Date(gestore.plotter.axes.xaxis.max);
2525 }catch(e){
2526 //console.log(e);
2527 }
2528 var minDate = jQuery("#datepickerDa").datepicker('getDate'),//.datepicker('option', 'minDate'),
2529 maxDate = jQuery("#datepickerA").datepicker('getDate'),//.datepicker('option', 'maxDate'),
2530 datiFondo = window.gestioneGrafico.tuttiIdatiDelGrafico().slice(),
2531 benchmarkSerie = window.gestioneGrafico.datiBenchmark().slice();
2532 datiFondo.sort(function(a,b){
2533 return a[0] - b[0];
2534 });
2535
2536 var datiBenchmarkRebased = [];
2537 var minFondo = null;
2538
2539 for (var i = 0; i < datiFondo.length; i++){
2540 if (!isNaN(datiFondo[i][0])){
2541 datiFondo[i][0] = new Date(datiFondo[i][0]);
2542 }
2543 }
2544
2545 for (var i = 0; i < datiFondo.length; i++){
2546 if (datiFondo[i][0].sameDay(minDate)){
2547 minFondo = datiFondo[i];
2548 break;
2549 }
2550 }
2551 for (var i = 0; i < datiFondo.length; i++){
2552 if (datiFondo[i][0] >= minDate){
2553 minFondo = datiFondo[i];
2554 break;
2555 }
2556 }
2557 if (minFondo == null) minFondo = datiFondo[0];
2558
2559 var maxFondo = null;
2560
2561 for (var i = 0; i < datiFondo.length; i++){
2562 if (datiFondo[i][0].sameDay(maxDate)){
2563 maxFondo = datiFondo[i];
2564 break;
2565 }
2566 }
2567
2568 if(maxFondo == null){
2569 for (var i = 0; i < datiFondo.length; i++){
2570 if (datiFondo[i][0] > maxDate){
2571 maxFondo = datiFondo[i];
2572 break;
2573 }
2574 }
2575 }
2576 var datiFiltrati=[];
2577 for(var i = 0; i < dati.length; i++){
2578 if (window.gestioneGrafico.checkData(dati[i][0], minFondo[0], maxFondo[0], datiFondo)){
2579 datiFiltrati.push(dati[i]);
2580 }
2581 }
2582 seriesToPlot = [datiFiltrati];
2583 if (window.gestioneGrafico.datiBenchmark().length > 0 ){
2584 console.log("maxFondo[0] "+ maxFondo[0]);
2585 for(var i = 0; i < benchmarkSerie.length; i++){
2586 if (window.gestioneGrafico.checkData(benchmarkSerie[i][0], minFondo[0], maxFondo[0], datiFondo)){
2587 datiBenchmarkFiltered.push(benchmarkSerie[i]);
2588 }
2589 }
2590 //dati ordinati per data
2591 datiBenchmarkFiltered.sort(function(a,b){
2592 return a[0] - b[0];
2593 });
2594
2595 datiFiltrati.sort(function(a,b){
2596 return a[0] - b[0];
2597 });
2598
2599 if (datiBenchmarkFiltered.length > 1){
2600
2601 for(var i=0;i<datiBenchmarkFiltered.length; i++){
2602
2603 if(datiBenchmarkFiltered[i][0].getTime() === minFondo[0].getTime() && (datiBenchmarkRebased == null || datiBenchmarkRebased.length == 0 )){
2604
2605 var rebased = datiBenchmarkFiltered[i].slice();
2606 rebased[0] = rebased[0];
2607 rebased[1] = minFondo[1];
2608
2609 datiBenchmarkRebased.push(rebased);
2610
2611 }else{
2612
2613 if(i<1){
2614 var benchValue = datiBenchmarkFiltered[i][1];
2615 }else{
2616 var benchValue = ((datiBenchmarkFiltered[i][1]/datiBenchmarkFiltered[i-1][1])*datiBenchmarkRebased[i-1][1]).toFixed(5);
2617 }
2618
2619 var rebased = datiBenchmarkFiltered[i].slice();
2620
2621 rebased[0] = rebased[0];
2622 rebased[1] = benchValue;
2623 datiBenchmarkRebased.push(rebased);
2624 }
2625 }
2626 }
2627 seriesToPlot.push(datiBenchmarkRebased);
2628 }
2629 var singlePoint = dati.length==1;
2630 var bounds = this.getAxisBounds(dati, this.pad, dataDa, dataA, datiBenchmarkRebased);
2631 var logaritmica = logaritmica;
2632 console.log("Axis Bounds: " + bounds);
2633 if(this.plotter != null)
2634 this.plotter.destroy();
2635 if(singlePoint){
2636 dati.push(dati[0]);
2637 }
2638 this.plotter = jQuery.jqplot('chartdiv', seriesToPlot,
2639 {
2640 title:{
2641 text: '',
2642 show: false
2643 },
2644 axesDefaults: {
2645 },
2646 cursor:{
2647 show: true,
2648 showTooltip: false,
2649 zoom: false,
2650 constrainZoomTo: 'x'
2651 },
2652 seriesDefaults: {
2653
2654 color: '#fba881', // CSS color spec to use for the line. Determined automatically.
2655 showMarker: singlePoint, // render the data point markers or not.
2656 fill: true, // fill under the line,
2657 fillAndStroke: singlePoint, // *stroke a line at top of fill area.
2658 fillColor: '#fba881',
2659 fillAlpha: 0.001, // *custom alpha to apply to fillColor.
2660 shadow: false // show shadow or not.
2661
2662 },
2663 axes:{
2664 xaxis: {
2665 renderer:jQuery.jqplot.DateAxisRenderer,
2666 min: bounds.minX,
2667 max: bounds.maxX,
2668 //min:minimo,
2669 //max:maximo,
2670 tickOptions: {formatString: '%d/%m/%Y'}
2671 },
2672 yaxis: {
2673 renderer:logaritmica==true?jQuery.jqplot.LogAxisRenderer:jQuery.jqplot.LinearAxisRenderer,
2674 min: bounds.minY,
2675 max: bounds.maxY,
2676 tickOptions: {formatString: '%#.3f' + (divisaSimboloMap['${valutaFondoUno}']!=null?" " + divisaSimboloMap['${valutaFondoUno}']:" " + '${valutaFondoUno}') }
2677 }
2678 },
2679 series:[{
2680 lineWidth:2,
2681 markerOptions:
2682 {
2683 style:'circle'
2684 }
2685 },{
2686 lineWidth: 1,
2687 markerOptions:
2688 {
2689 style:'circle'
2690 },
2691 color: '#0a4379', // CSS color spec to use for the line. Determined automatically.
2692 linePattern: 'dashed',
2693 lineWidth: 0.5,
2694 showMarker: singlePoint, // render the data point markers or not.
2695 fill: false,
2696 shadow: false,
2697 rendererOptions: {
2698 smooth: true
2699 }
2700 }],
2701 highlighter: {
2702 show: true,
2703 sizeAdjust: 7.5,
2704 formatString: "%s - %#.3f"
2705 },
2706 grid: {
2707 drawGridLines: true, // wether to draw lines across the grid or not.
2708 gridLineColor: '#f0f1f6', // *Color of the grid lines.
2709 background: '#fff', // CSS color spec for background color of grid.
2710 borderColor: '#f0f1f6', // CSS color spec for border around grid.
2711 borderWidth: 1.0, // pixel width of border around grid.
2712 shadow: false, // draw a shadow for grid.
2713 }
2714 });
2715
2716
2717 },
2718
2719 checkData: function(data, dStart, dEnd, datiFondo){
2720 var dStart = typeof dStart == 'undefined'?null:dStart;
2721 var dEnd = typeof dEnd == 'undefined'?null:dEnd;
2722
2723 if (dStart == null || dEnd == null){
2724 for(var i=0; i<datiFondo.length; i++){
2725 if(dStart == null || datiFondo[i][0] < dStart){
2726 dStart = datiFondo[i][0];
2727 }
2728 if(dEnd == null || datiFondo[i][0] > dEnd){
2729 dEnd = datiFondo[i][0];
2730 }
2731 }
2732 }
2733 if (data >= dStart && data <= dEnd){
2734 return true;
2735 }
2736 return false;
2737 }
2738 }
2739 <#if !(!usaFondo ||(usaFondo && (!id_fondo?? || id_fondo.getData()=='')))>
2740
2741 <#if _listaRendimenti?size gt 0>
2742
2743 jQuery.jqplot.sprintf.thousandsSeparator = '';
2744 jQuery.jqplot.sprintf.decimalMark = ',';
2745 var gestore = gestioneGrafico;
2746 var datiDaVisualizzare = gestore.tuttiIdatiDelGrafico();
2747 var bounds = gestioneGrafico.getAxisBounds(datiDaVisualizzare,this.pad);
2748 console.log('LIMITS');
2749 console.log(bounds);
2750 // inizializzo i date picker con gli estremi delle date disponibili in base ai dati ricevuti
2751 jQuery("#datepickerDa").datepicker({
2752 //showOtherMonths: false,
2753 //selectOtherMonths: false,
2754 changeMonth : true,
2755 changeYear : true,
2756 dateFormat : "dd/mm/yy",
2757 defaultDate : bounds.minX,
2758 minDate : bounds.minX,
2759 maxDate : bounds.maxX,
2760 onSelect : function() {
2761 jQuery("#datepickerA").datepicker('option', {
2762 minDate : jQuery(this).datepicker('getDate')
2763 });
2764 updateGraphDatesFromDatePickers();
2765 //updateDatePickers();
2766 },
2767 }, jQuery.datepicker.regional['it']);
2768 jQuery("#datepickerDa").datepicker("setDate", bounds.minX);
2769
2770 jQuery("#datepickerA").datepicker({
2771 changeMonth : true,
2772 changeYear : true,
2773 dateFormat : "dd/mm/yy",
2774 defaultDate : bounds.maxX,
2775 minDate : bounds.minX,
2776 maxDate : bounds.maxX,
2777 onSelect : function() {
2778 jQuery("#datepickerDa").datepicker('option', {
2779 maxDate : jQuery(this).datepicker('getDate')
2780 });
2781 updateGraphDatesFromDatePickers();
2782 },
2783 beforeShow : function(input, inst) {
2784 inst.dpDiv.css({marginLeft: -input.offsetWidth + 'px'});
2785 }
2786 }, jQuery.datepicker.regional['it']);
2787 jQuery("#datepickerA").datepicker("setDate",bounds.maxX);
2788 function updateGraphDatesFromDatePickers() {
2789 var dataDaStr = jQuery("#datepickerDa").val();
2790 var dataAStr = jQuery("#datepickerA").val();
2791 console.log("date cambiate: da " + dataDaStr + " a " + dataAStr);
2792 // Se date nulle usa gli estremi
2793 if (dataDaStr == '')
2794 {
2795 dataDaStr = gestore.getADate("${_datiStorico.getDataInizialeString()}");
2796 jQuery("#datepickerDa").val(dataDaStr);
2797 }
2798 if (dataAStr == '')
2799 {
2800 dataAStr = gestore.getADate("${_datiStorico.getDataFinaleString()}");
2801 jQuery("#datepickerA").val(dataAStr);
2802 }
2803 var dataDa = gestore.getADate(dataDaStr);
2804 var dataA = gestore.getADate(dataAStr);
2805 // se la data è maggiore di data a non fare nulla
2806 if (dataDa >= dataA)
2807 return;
2808
2809 gestore.plotter.axes.xaxis.min = dataDa;
2810 gestore.plotter.axes.xaxis.max = dataA;
2811
2812 var interval = (dataA.getTime() - dataDa.getTime()) / 5;
2813 var ticks = [];
2814 var currTick = dataDa.getTime();
2815 ticks.push(currTick);
2816 for (var i = 0; i < 5; i++) {
2817 currTick += interval;
2818 ticks.push(currTick);
2819 }
2820
2821 gestore.plotter.axes.xaxis.ticks = ticks;
2822 //gestore.plotter.replot();
2823 var datiDaVisualizzare = window.gestioneGrafico.tuttiIdatiDelGrafico();
2824 window.gestioneGrafico.visualizzaGrafico(datiDaVisualizzare);
2825
2826 // Necessario per riabilitare zoom
2827 gestore.plotter.axes.xaxis.ticks = [];
2828 };
2829 if (Liferay.Browser.isIe() && Liferay.Browser.getVersion() < 9)
2830 {
2831 // carica script che emula il canvas poiché ie < 9 non lo supoporta
2832 var exCanvasScriptUrl = "${themeDisplay.getPathThemeRoot()}/js/portlet/rendimentiequotazioni/dettaglio/jqplot/excanvas/excanvas.min.js";
2833 jQuery.getScript(exCanvasScriptUrl, function(data, textStatus, jqxhr) {
2834 gestore.visualizzaGrafico(datiDaVisualizzare);
2835
2836 applyGradientOnPlot();
2837 jQuery.jqplot.postDrawHooks.push(postDrawProcessing);
2838 updateAndamentoLabel();
2839 });
2840 }
2841 else
2842 {
2843 gestore.visualizzaGrafico(datiDaVisualizzare);
2844 applyGradientOnPlot();
2845 jQuery.jqplot.postDrawHooks.push(postDrawProcessing);
2846 updateAndamentoLabel();
2847 }
2848 updateDatePickers();
2849 updateGraphDatesFromDatePickers();
2850 aggiornaPerformance(datiDaVisualizzare[0][0], datiDaVisualizzare[datiDaVisualizzare.length - 1][0]);
2851 jQuery( ".datePicker" ).change(updateGraphDatesFromDatePickers);
2852 $('#datepickerDa').focus(function(){
2853 $('#datepickerDa').datepicker('show');
2854 });
2855
2856 jQuery('#datepickerDa').click(function(){
2857 jQuery('#datepickerDa').datepicker('show');
2858 });
2859 jQuery('#datepickerA').focus(function(){
2860 jQuery('#datepickerA').datepicker('show');
2861 });
2862
2863 jQuery('#datepickerA').click(function(){
2864 jQuery('#datepickerA').datepicker('show');
2865 });
2866 </#if>
2867 </#if>
2868 });
2869 </script>
2870
2871
2872 </div>
2873
2874 </#if> <#-- Fine Fondo_In_valuta #IF -->
2875
2876<#else>
2877
2878 <div class="template_rendimenti_e_quotazioni">
2879
2880 <#assign localeIT = localeUtil.fromLanguageId("it")>
2881 <#assign currentGroup = groupLocalService.getGroup(groupId)>
2882 <#assign checkDisplayDate = !currentGroup.isStagingGroup()>
2883 <#assign user = "">
2884
2885 <#if request?has_content && request.getRemoteUser()?has_content && request.getRemoteUser()!="">
2886 <#assign user = userLocalService.getUserById(getterUtil.getLong(request.getRemoteUser()))>
2887 <#else>
2888 <#assign user = userLocalService.getDefaultUser(getterUtil.getLong(companyId))>
2889 </#if>
2890
2891 <#assign current_url = request.getAttribute("CURRENT_URL")>
2892 <#assign catIdStr = httpUtil.decodeURL(httpUtil.getParameter(current_url, "catId", false))>
2893 <#assign catId = getterUtil.getLong(catIdStr)>
2894 <!-- catIdStr - catId -->
2895 <#assign subcatIdStr = httpUtil.decodeURL(httpUtil.getParameter(current_url, "subcatId", false))>
2896 <#assign subcatId = getterUtil.getLong(subcatIdStr)>
2897 <!-- subcatIdStr - subcatId -->
2898 <#assign categoria = httpUtil.decodeURL(httpUtil.getParameter(current_url, "categoria", false))>
2899 <!-- categoria -->
2900 <#assign sottoCategoria = httpUtil.decodeURL(httpUtil.getParameter(current_url, "sottocategoria", false))>
2901 <!-- $sottoCategoria -->
2902
2903 <!-- Take layout id -->
2904 <#assign currentLayoutId = themeDisplay.getPlid()>
2905 <#assign currentLayout = layoutLocalService.getLayout(currentLayoutId)>
2906
2907 <!-- parent layoutId -->
2908 <#assign currentLayoutParentPlid = currentLayout.getParentPlid()>
2909 <#assign currentLayoutParent = layoutLocalService.getLayout(currentLayoutParentPlid?number)>
2910 <#assign catKey = 0>
2911 <#if validator.isNotNull(catId) && catId!=0>
2912 <#assign catKey = assetCategoryPropertyLocalService.fetchCategoryProperty(catId, "chiave").getValue()>
2913 </#if>
2914
2915 <#if validator.isNotNull(catKey)>
2916 <#assign catKey = assetCategoryLocalService.getAssetCategory(catId).getName()>
2917 </#if>
2918
2919 <#if validator.isNotNull(catId) && catId!=0>
2920 <#assign catColor = assetCategoryPropertyLocalService.fetchCategoryProperty(catId, "colore").getValue()>
2921 </#if>
2922
2923 <#assign isOICR = false>
2924
2925
2926 <!-- pretitolo -->
2927 <#if getterUtil.getBoolean(visualizza_label_gestione_separata_associata.getData()) || catKey?lower_case == "rivalutabili">
2928 <#assign pre_titolo_rendimento = "Gestione Separata">
2929 <#elseif categoria?lower_case == "index linked">
2930 <#assign pre_titolo_rendimento = "Indice">
2931 <#elseif categoria?lower_case == "oicr">
2932 <#assign pre_titolo_rendimento = "OICR">
2933 <#assign isOICR = true>
2934 <#else>
2935 <#assign pre_titolo_rendimento = "Fondo">
2936 </#if>
2937
2938 <!-- valore dei fondi dal web content -->
2939 <#assign valoreFondoUno = confTool.getValoreFondoFromStr(valore_1.getData(), locale)>
2940 <#assign valoreFondoDue = confTool.getValoreFondoFromStr(valore_2.getData(), locale)>
2941
2942 <#if getterUtil.getBoolean(usa_valori_da_fondo.getData())>
2943
2944 <#assign usaFondo = true>
2945
2946 <!-- titolo -->
2947 <#assign titolo_rendimento = Titolo_rendimento.getData()>
2948
2949 <#if titolo_rendimento=="">
2950 <#assign titolo_rendimento = Titolo_rendimento.getData()>
2951 </#if>
2952
2953 <!-- valore e valuta dai fondi dal db -->
2954 <#if validator.isNotNull(valoreFondoUno)>
2955
2956 <#if validator.isNull(valoreFondoDue) || valoreFondoDue == "0" || valoreFondoDue == "0,000">
2957 <#assign valoreFondoUno = confTool.getValoreFondoUnoFromDbLocale(id_fondo.getData(), locale)>
2958 <#assign valoreFondoDue = "">
2959 <#else>
2960 <#assign valoreFondoUno = confTool.getValoreFondoUnoFromDbLocale(id_fondo.getData(), locale)>
2961 <#assign valoreFondoDue = confTool.getValoreFondoDueFromDbLocale(id_fondo.getData(), locale)>
2962 </#if>
2963 <#else>
2964 <#assign valoreFondoUno = confTool.getValoreFondoUnoFromDbLocale(id_fondo.getData(),locale)>
2965 <#assign valoreFondoDue = confTool.getValoreFondoDueFromDbLocale(id_fondo.getData(),locale)>
2966 </#if>
2967
2968 <#if valoreFondoDue=="0" || valoreFondoDue == "0,000">
2969 <#assign valoreFondoDue = "">
2970 </#if>
2971
2972 <#assign valutaFondoUno = confTool.getValutaFondoUnoFromDb(id_fondo.getData())>
2973 <#assign valutaFondoDue = confTool.getValutaFondoDueFromDb(id_fondo.getData())>
2974
2975 <!-- data aggiornamento valore -->
2976 <#assign dataAggiornamentoValore = confTool.getDataAggiornamentoFondoFromDb(id_fondo.getData(),'dd MMM yyyy',localeIT)>
2977
2978 <!-- rating -->
2979 <#assign ratings = confTool.getRatingsFromDb(id_fondo.getData())>
2980
2981 <#else>
2982
2983 <#assign usaFondo = false>
2984
2985 <!-- titolo -->
2986 <#assign titolo_rendimento = Titolo_rendimento.getData()>
2987
2988 <!-- valuta dei fondi dal web content -->
2989 <#assign valutaFondoUno = valuta1.getData()>
2990 <#assign valutaFondoDue = valuta_2.getData()>
2991
2992 <!-- data aggiornamento valori -->
2993 <#assign aggiornato_al_DateObj = dateUtil.parseDate("yyyy-MM-dd", getterUtil.getString(aggiornato_al.getData()), localeIT)>
2994 <#assign dataAggiornamentoValore = dateUtil.getDate(aggiornato_al_DateObj, "dd MMM yyyy", localeIT)>
2995
2996 <!-- rating -->
2997 <#assign ratings = Rating.getData()>
2998
2999 </#if>
3000
3001 <!-- PRIMO BLOCCO -->
3002 <#assign breadCrumb = confTool.getBreadcrumb(themeDisplay.getLayout(),themeDisplay) >
3003 <#assign titolo_da_visualizzare = titolo_rendimento>
3004 <div class="boxesDettaglio togliMargin">
3005 <div>
3006 <div class="supTitle capitalize">${pre_titolo_rendimento}</div>
3007 <h1 class="titoloRendimento">${titolo_da_visualizzare}</h1>
3008
3009 <#if Notifica_alert?? && Notifica_alert.getData() != "">
3010
3011 <div class="descrizioni notifica_alert">${Notifica_alert.getData()}</div>
3012
3013 <#assign testoFascetta = confTool.getRendimentoParsed(article, themeDisplay.getLanguageId()).getTestoFascetta(article, themeDisplay.getLanguageId(), catId, subcatId)>
3014 <#if validator.isNotNull(testoFascetta)>
3015 <div class="fascetta_rendimento ${catColor}">${testoFascetta}</div>
3016 </#if>
3017
3018 </#if>
3019
3020 <#assign strippedHtmlDescrizione = confTool.stripHTML(Descrizione_rendimento_e_quotazione.getData())?trim>
3021 <#if validator.isNotNull(titolo_rendimento) && strippedHtmlDescrizione?lower_case != titolo_rendimento?trim?lower_case>
3022 <div class="descrizioni">${Descrizione_rendimento_e_quotazione.getData()}</div>
3023 </#if>
3024 </div>
3025
3026 <!-- blocco valore corrente valore protetto -->
3027 <script type="text/javascript">
3028
3029 var divisaSimboloMap = {
3030 'EUR': '€',
3031 'USD': '$',
3032 '':'',
3033 '%':'%'
3034 };
3035
3036 jQuery(document).ready(function(){
3037 var listaValuta=jQuery(".titoloValuta");
3038 if (listaValuta!=null){
3039 for (var i=0;i<listaValuta.length;i++){
3040 if (listaValuta.get(i).innerHTML.indexOf(',')!=-1){
3041 // var index=listaValuta.get(i).outerHTML.indexOf(',');
3042 // var html = listaValuta.get(i).outerHTML.substring(0,index+1) + "<span class='decimali'>" + listaValuta.get(i).outerHTML.substring(index+1,index+3) + "</span>" + listaValuta.get(i).outerHTML.substring(index+3,listaValuta.get(i).outerHTML.length);
3043 // listaValuta.get(i).outerHTML = html;
3044 var listaValuta_split = listaValuta.get(i).innerHTML.split(',');
3045 var parteIntera = listaValuta_split[0];
3046 if(listaValuta_split[1].indexOf(" ")){
3047 var listaValuta1_split = listaValuta_split[1].split(" ");
3048 var parteDecimale = listaValuta1_split[0];
3049 var parteValuta = listaValuta1_split[1];
3050 }else{
3051 var parteDecimale = listaValuta_split[1];
3052 var parteValuta = "";
3053 }
3054
3055 var parteValutaMap = (parteValuta!=""?" " + divisaSimboloMap[parteValuta]:"");
3056 console.log(parteValutaMap + "-" + parteValuta +" nicola" );
3057 console.log (parteIntera + " parteIntera");
3058 console.log (parteIntera + " parteIntera");
3059
3060 var html = parteIntera + ",<span class='decimali'>" + parteDecimale + "</span>" + (parteValutaMap!=" undefined"? parteValutaMap:parteValuta);
3061 listaValuta.get(i).innerHTML = html;
3062 }else{
3063 console.log(listaValuta.get(i).innerHTML);
3064 if(listaValuta.get(i).innerHTML.indexOf(" ")!=-1){
3065 var listaValuta_split = listaValuta.get(i).innerHTML.split(" ");
3066 var parteIntera = listaValuta_split[0];
3067 var parteValuta = listaValuta_split[1];
3068 var parteValutaMap = (parteValuta!=""?" " + divisaSimboloMap[parteValuta]:"");
3069 console.log(parteValutaMap + "-" + parteValuta );
3070 var html = parteIntera + " " + (parteValutaMap!=" undefined"? parteValutaMap:parteValuta);
3071 listaValuta.get(i).innerHTML = html;
3072 }
3073 }
3074 }
3075 }
3076 });
3077 </script>
3078
3079 <#if valoreFondoDue == "" >
3080 <!-- blocco a singola colonna 3-->
3081
3082 <div class="bloccoValori" >
3083 <h4 class="titoloValori">${Label_valore_corrente.getData()}</h4>
3084 <div class="bloccoValuta">
3085 <h3 class="titoloValuta">${valoreFondoUno} ${valutaFondoUno}</h3>
3086 <h6 class="dataValuta">Aggiornato al ${dataAggiornamentoValore}</h6>
3087 </div>
3088 </div>
3089
3090 <#else>
3091
3092 <!-- blocco a doppia colonna -->
3093 <div class="valoriDoppioWrapper">
3094 <div class="bloccoValori doppio first" >
3095 <h4 class="titoloValori">${Label_valore_corrente.getData()}</h4>
3096 <div class="bloccoValuta">
3097 <h3 class="titoloValuta">${valoreFondoUno} ${valutaFondoUno}</h3>
3098 <h6 class="dataValuta">Aggiornato al ${dataAggiornamentoValore}</h6>
3099 </div>
3100 </div>
3101 <div class="bloccoValori doppio" >
3102 <h4 class="titoloValori">${Label_valore_protetto.getData()}
3103 <#if valore_1_min_garantito.getData()!="">
3104 *
3105 </#if>
3106 </h4>
3107 <div class="bloccoValuta">
3108 <h3 class="titoloValuta">${valoreFondoDue} ${valutaFondoDue}</h3>
3109 <h6 class="dataValuta">Aggiornato al ${dataAggiornamentoValore}</h6>
3110 </div>
3111 </div>
3112 </div>
3113 <#if validator.isNotNull(valore_1_min_garantito.getData())>
3114 <div class="caption">
3115 * ${valore_1_min_garantito.getData()}
3116 </div>
3117 </#if>
3118 </#if>
3119
3120 <div class="reset">
3121 <#if isOICR && validator.isNotNull(Societa_di_gestione.getData())>
3122 <#assign labelSocietaGestione = "Società di gestione">
3123 <#if validator.isNotNull(Label_societa_di_gestione.getData())>
3124 <#assign labelSocietaGestione = Label_societa_di_gestione.getData()>
3125 </#if>
3126 <div class="gestione">
3127 <h6 class="">${labelSocietaGestione}: <strong> ${Societa_di_gestione.getData()}</strong></h6>
3128 </div>
3129 </#if>
3130
3131 <#if Istituto_emittente.getData() != "">
3132 <h5 class="titolo">${Label_obbligazione_strutturata.getData()}</h5>
3133 <div class="istituto">
3134 <h6 class="">${Label_istituto_emittente.getData()}: <strong>${Istituto_emittente.getData()}</strong></h6>
3135 <h6 class="">${Label_rating.getData()}: <strong>${Rating.getData()}</strong></h6>
3136 </div>
3137 </#if>
3138
3139 <#assign Data_scadenza_to_show = ''>
3140 <#if validator.isNotNull(Data_scadenza.getData())>
3141 <#assign Data_scadenza_DateObj = dateUtil.parseDate("yyyy-MM-dd", getterUtil.getString(Data_scadenza.getData()), localeIT)>
3142 <!-- 01/01/2100 -->
3143 <#if dateUtil.compareTo(Data_scadenza_DateObj, dateUtil.newDate(4102441200000)) lt 0 >
3144 <#assign Data_scadenza_to_show = 'Scadenza ' + dateUtil.getDate(Data_scadenza_DateObj, "dd/MM/yyyy", localeIT)>
3145 </#if>
3146 </#if>
3147
3148 <#if validator.isNotNull(Data_scadenza_to_show)>
3149 <h6 class="scadenza nomobile"><strong>${Data_scadenza_to_show}</strong></h6>
3150 </#if>
3151 </div>
3152
3153 <!-- Da agganciare nel momento in cui caricano i contenuti derivati -->
3154 <div class="reset">
3155 <#if Istituto_emittente_derivata?? && Istituto_emittente_derivata.getData() != "">
3156 <h5 class="titolo">${Label_obbligazione_derivata.getData()}</h5>
3157 <div class="istituto derivata">
3158 <h6 class="">${Label_istituto_emittente_derivata.getData()}:<strong>${Istituto_emittente_derivata.getData()}</strong></h6>
3159 <h6 class="">${Label_rating_derivata.getData()}:<strong>${Rating_derivata.getData()}</strong></h6>
3160 </div>
3161 </#if>
3162
3163 <#if validator.isNotNull(Data_scadenza_to_show)>
3164 <h6 class="scadenza onlymobile"><strong>$Data_scadenza_to_show</strong></h6>
3165 </#if>
3166
3167 </div>
3168
3169 </div>
3170
3171 <!-- FINE PRIMO BLOCCO -->
3172
3173
3174 <!-- SECONDO BLOCCO (GRAFICO STORICO) -->
3175
3176 <#assign _listaRendimenti = []>
3177 <#if !(!usaFondo ||(usaFondo && (!id_fondo?? || id_fondo.getData()=='')))>
3178 <div class="boxesDettaglio storicGraph">
3179 <#assign _datiStorico = confTool.getDatiStorico(id_fondo.getData())>
3180 <#assign _listaRendimenti = _datiStorico.getValoriRendimenti()>
3181
3182 <div class="reset">
3183 <h5 class="titolo">
3184 Andamento performance
3185 <small class="">Dati aggiornati al ${confTool.getDataAggiornamentoFondoFromDb(id_fondo.getData(),'dd MMM yyyy',localeIT)}</small>
3186 </h5>
3187
3188 <#if _listaRendimenti?size gt 0>
3189 <div class="graficoRendimento" >
3190 <div id="chartdiv"></div>
3191 </div>
3192 <div class="datePickers reset">
3193 <p class="inizio">
3194 <input type="text" class="datePicker" id="datepickerDa" value="${_datiStorico.getDataInizialeString()}" />
3195 </p>
3196 <p class="fine">
3197 <input type="text" class="datePicker" id="datepickerA" value="${_datiStorico.getDataFinaleString()}" />
3198 </p>
3199 </div>
3200 <p class="reset">Visualizzazione andamento dal <span id="andamentoDa"></span> al <span id="andamentoA"></span></p>
3201 <p class="reset" style="font-style:italic">
3202 Attenzione: i valori passati non sono indicativi di quelli futuri.
3203 </p>
3204 </#if>
3205 </div>
3206 </div>
3207 </#if>
3208
3209 <!-- FINE SECONDO BLOCCO -->
3210
3211 <!-- BLOCCO PROSPETTO -->
3212 <#if !(
3213 !Colonna_prospetto.getSiblings()?has_content ||
3214 (Colonna_prospetto.getSiblings()?size==1 && Colonna_prospetto.getSiblings()[0].getData()=='' &&
3215 (!Colonna_prospetto.getSiblings()[0].Allegato_prospetto.getSiblings()?has_content ||
3216 (Colonna_prospetto.getSiblings()[0].Allegato_prospetto.getSiblings()?size == 1 && Colonna_prospetto.getSiblings()[0].Allegato_prospetto.getSiblings()[0].getData()=='')
3217 )))>
3218
3219 <div class="boxesDettaglio togliMargin">
3220 <div class="reset">
3221
3222 <h5 class="titolo prospetto">${label_prospetto.getData()}</h5>
3223 <p class="">${descrizione_prospetto.getData()}</p>
3224
3225 </div>
3226
3227 <#if Colonna_prospetto.getSiblings()?has_content>
3228 <div class="table">
3229
3230 <div class="row theader">
3231 <div class="cell">
3232 <!-- prima colonnavuota -->
3233 </div>
3234 <#list Colonna_prospetto.getSiblings() as cur_Colonna_prospetto>
3235 <div class="cell">
3236 ${cur_Colonna_prospetto.getData()}
3237 </div>
3238 </#list>
3239 </div>
3240
3241 <#if Tipo_generazione_righe_prospetto.getData()=="dinamico">
3242
3243 <#if Nome_Riga_Prospetto.getSiblings()?has_content>
3244 <#assign contatore_righe = 0>
3245
3246 <#list Nome_Riga_Prospetto.getSiblings() as cur_Nome_Riga_Prospetto>
3247 <div class="row">
3248 <div class="cell">
3249 <div class="">${cur_Nome_Riga_Prospetto.getData()}</div>
3250 </div>
3251
3252 <#list Colonna_prospetto.getSiblings() as cur_Colonna_prospetto1>
3253 <div class="cell">
3254 <#assign contatore_allegati = 0>
3255 <#assign allegatoUrl = ''>
3256
3257 <#list cur_Colonna_prospetto1.Allegato_prospetto.getSiblings() as allegato>
3258
3259 <#if contatore_allegati == contatore_righe>
3260 <#assign allegatoUrl = allegato.getData()>
3261 </#if>
3262 <#assign contatore_allegati = contatore_allegati + 1>
3263 </#list>
3264
3265 <#assign dlFileVersion = ''>
3266 <#if validator.isNotNull(allegatoUrl)>
3267 <#assign dlFileVersion = confTool.getLatestDLFileVersion(allegatoUrl, checkDisplayDate)>
3268 </#if>
3269 <#if validator.isNotNull(dlFileVersion)>
3270 <a class="icona icon-file" href="${allegatoUrl}?version=${dlFileVersion.getVersion()}" target="_blank"></a>
3271 <#else>
3272 <div>—</div>
3273 </#if>
3274 </div>
3275 </#list>
3276 </div>
3277
3278 <#assign contatore_righe = contatore_righe + 1>
3279 </#list>
3280
3281 </div>
3282
3283 </#if>
3284 </#if>
3285 </#if>
3286
3287
3288 <#if Tipo_generazione_righe_prospetto.getData()=="quadrimestrali">
3289 <div class="row">
3290 <div class="cell">
3291 <div class="">Composizione al 31/03</div>
3292 </div>
3293
3294 <#list Colonna_prospetto.getSiblings() as cur_Colonna_prospetto1>
3295 <div class="cell">
3296 <#assign contatore_allegati = 0>
3297 <#assign allegatoUrl = ''>
3298 <#list cur_Colonna_prospetto1.Allegato_prospetto.getSiblings() as allegato>
3299 <#if contatore_allegati == 0>
3300 <#assign allegatoUrl = allegato.getData()>
3301 </#if>
3302 <#assign contatore_allegati = contatore_allegati + 1>
3303 </#list>
3304
3305 <#assign dlFileVersion = ''>
3306 <#if validator.isNotNull(allegatoUrl)>
3307 <#assign dlFileVersion = confTool.getLatestDLFileVersion(allegatoUrl, checkDisplayDate)>
3308 </#if>
3309 <#if validator.isNotNull(dlFileVersion)>
3310 <a class="icona icon-file" href="${allegatoUrl}?version=${dlFileVersion.getVersion()}" target="_blank"></a>
3311 <#else>
3312 <div>—</div>
3313 </#if>
3314 </div>
3315 </#list>
3316 </div>
3317
3318 <div class="row">
3319 <div class="cell">
3320 <div class="">Composizione al 30/06</div>
3321 </div>
3322
3323 <#list Colonna_prospetto.getSiblings() as cur_Colonna_prospetto2>
3324 <div class="cell">
3325 <#assign contatore_allegati = 0>
3326 <#assign allegatoUrl = ''>
3327 <#list cur_Colonna_prospetto2.Allegato_prospetto.getSiblings() as allegato>
3328 <#if contatore_allegati == 1>
3329 <#assign allegatoUrl = allegato.getData()>
3330 </#if>
3331 <#assign contatore_allegati = contatore_allegati + 1>
3332 </#list>
3333
3334 <#assign dlFileVersion = ''>
3335 <#if validator.isNotNull(allegatoUrl)>
3336 <#assign dlFileVersion = confTool.getLatestDLFileVersion(allegatoUrl, checkDisplayDate)>
3337 </#if>
3338 <#if validator.isNotNull(dlFileVersion)>
3339 <a class="icona icon-file" href="${allegatoUrl}?version=${dlFileVersion.getVersion()}" target="_blank"></a>
3340 <#else>
3341 <div>—</div>
3342 </#if>
3343 </div>
3344 </#list>
3345 </div>
3346
3347 <div class="row">
3348 <div class="cell">
3349 <div class="">Composizione al 30/09</div>
3350 </div>
3351
3352 <#list Colonna_prospetto.getSiblings() as cur_Colonna_prospetto3>
3353 <div class="cell">
3354 <#assign contatore_allegati = 0>
3355 <#assign allegatoUrl = ''>
3356 <#list cur_Colonna_prospetto3.Allegato_prospetto.getSiblings() as allegato>
3357 <#if contatore_allegati == 2>
3358 <#assign allegatoUrl = allegato.getData()>
3359 </#if>
3360 <#assign contatore_allegati = contatore_allegati + 1>
3361 </#list>
3362
3363 <#assign dlFileVersion = ''>
3364 <#if validator.isNotNull(allegatoUrl)>
3365 <#assign dlFileVersion = confTool.getLatestDLFileVersion(allegatoUrl, checkDisplayDate)>
3366 </#if>
3367 <#if validator.isNotNull(dlFileVersion)>
3368 <a class="icona icon-file" href="${allegatoUrl}?version=${dlFileVersion.getVersion()}" target="_blank"></a>
3369 <#else>
3370 <div>—</div>
3371 </#if>
3372 </div>
3373 </#list>
3374 </div>
3375
3376 <div class="row">
3377 <div class="cell">
3378 <div class="">Composizione al 31/12</div>
3379 </div>
3380
3381 <#list Colonna_prospetto.getSiblings() as cur_Colonna_prospetto4>
3382 <div class="cell">
3383 <#assign contatore_allegati = 0>
3384 <#assign allegatoUrl = ''>
3385 <#list cur_Colonna_prospetto4.Allegato_prospetto.getSiblings() as allegato>
3386 <#if contatore_allegati == 3>
3387 <#assign allegatoUrl = allegato.getData()>
3388 </#if>
3389 <#assign contatore_allegati = contatore_allegati + 1>
3390 </#list>
3391
3392 <#assign dlFileVersion = ''>
3393 <#if validator.isNotNull(allegatoUrl)>
3394 <#assign dlFileVersion = confTool.getLatestDLFileVersion(allegatoUrl, checkDisplayDate)>
3395 </#if>
3396 <#if validator.isNotNull(dlFileVersion)>
3397 <a class="icona icon-file" href="${allegatoUrl}?version=${dlFileVersion.getVersion()}" target="_blank"></a>
3398 <#else>
3399 <div>—</div>
3400 </#if>
3401 </div>
3402 </#list>
3403 </div>
3404 </#if>
3405 </div>
3406 </#if>
3407
3408 <!-- INIZIO BLOCCO SMARTPHONE PROSPETTO -->
3409 <#if !(
3410 !Colonna_prospetto.getSiblings()?has_content ||
3411 (Colonna_prospetto.getSiblings()?size==1 && Colonna_prospetto.getSiblings()[0].getData()=='' &&
3412 (!Colonna_prospetto.getSiblings()[0].Allegato_prospetto.getSiblings()?has_content ||
3413 (Colonna_prospetto.getSiblings()[0].Allegato_prospetto.getSiblings()?size == 1 && Colonna_prospetto.getSiblings()[0].Allegato_prospetto.getSiblings()[0].getData()=='')
3414 )))>
3415 <div class="table_smart secondaTab prospetto" style="display:none">
3416 <table>
3417 <tbody>
3418
3419 <#assign tipo_colonne_prospetto = Tipo_generazione_righe_prospetto.getData()> <!-- in realta per gli smart le righe sono colonne -->
3420 <#if tipo_colonne_prospetto == "dinamico">
3421
3422 <tr class="intestazione_smart">
3423 <td colspan="1">Anno</td>
3424 <#list Nome_Riga_Prospetto.getSiblings() as cur_Nome_Col_Prospetto>
3425 <td colspan="1">${cur_Nome_Col_Prospetto.getData()}</td>
3426 </#list>
3427 </tr>
3428
3429 <#if Colonna_prospetto.getSiblings()?has_content>
3430 <#list Colonna_prospetto.getSiblings() as cur_Colonna_prospetto>
3431 <#assign velocityCount = cur_Colonna_prospetto?index/>
3432 <#if velocityCount % 2 == 0>
3433 <tr class="pari">
3434 <#elseif velocityCount % 2 == 1>
3435 <tr class="dispari">
3436 </#if>
3437
3438 <td>${cur_Colonna_prospetto.getData()}</td>
3439 <#list cur_Colonna_prospetto.Allegato_prospetto.getSiblings() as allegato>
3440 <#assign allegatoUrl = ''>
3441 <td>
3442 <#assign allegatoUrl = allegato.getData()>
3443 <#assign dlFileVersion = ''>
3444 <#if validator.isNotNull(allegatoUrl)>
3445 <#assign dlFileVersion = confTool.getLatestDLFileVersion(allegatoUrl, checkDisplayDate)>
3446 </#if>
3447 <#if validator.isNotNull(dlFileVersion)>
3448 <a class="icona icon-file" href="${allegatoUrl}?version=${dlFileVersion.getVersion()}" target="_blank"></a>
3449 <#else>
3450 <div>—</div>
3451 </#if>
3452 </td>
3453 </#list>
3454 </tr>
3455 </#list>
3456 </#if>
3457
3458 <#elseif tipo_colonne_prospetto == "quadrimestrali">
3459
3460 <tr class="intestazione_smart">
3461 <td colspan="1">Anno</td>
3462 <td colspan="1">31Mar</td>
3463 <td colspan="1">30Giu</td>
3464 <td colspan="1">30Set</td>
3465 <td colspan="1">31Dic</td>
3466 </tr>
3467
3468 <#if Colonna_prospetto.getSiblings()?has_content>
3469
3470 <#list Colonna_prospetto.getSiblings() as cur_Colonna_prospetto>
3471 <#assign velocityCount = cur_Colonna_prospetto?index/>
3472 <#if velocityCount % 2 == 0>
3473 <tr class="pari">
3474 <#elseif velocityCount % 2 == 1>
3475 <tr class="dispari">
3476 </#if>
3477
3478 <td>${cur_Colonna_prospetto.getData()}</td>
3479
3480 <#assign contatore_allegati = 0>
3481 <#list cur_Colonna_prospetto.Allegato_prospetto.getSiblings() as allegato>
3482 <#assign allegatoUrl = ''>
3483 <td>
3484 <#assign allegatoUrl = allegato.getData()>
3485 <#assign dlFileVersion = ''>
3486 <#if validator.isNotNull(allegatoUrl)>
3487 <#assign dlFileVersion = confTool.getLatestDLFileVersion(allegatoUrl, checkDisplayDate)>
3488 </#if>
3489 <#if validator.isNotNull(dlFileVersion)>
3490 <a class="icona icon-file" href="${allegatoUrl}?version=${dlFileVersion.getVersion()}" target="_blank"></a>
3491 <#else>
3492 <div>—</div>
3493 </#if>
3494 </td>
3495 </#list>
3496 </tr>
3497 </#list>
3498 </#if>
3499 </#if>
3500 </tbody>
3501 </table>
3502 </div>
3503 </#if>
3504
3505 <!-- FINE BLOCCO SMARTPHONE PROSPETTO -->
3506
3507 <!-- BLOCCO INDICI -->
3508
3509 <#if !(
3510 (!Indici_titolo_alto?has_content || Indici_titolo_alto.getData()=='') &&
3511 (!Label_titolo_valore_iniziale_titoli?has_content || Label_titolo_valore_iniziale_titoli.getData()=='') &&
3512 (!Label_titolo_tabella_valore_iniziale_indici?has_content || Label_titolo_tabella_valore_iniziale_indici.getData()=='') &&
3513 (!Label_titolo_tabella_prestazioni_annuali?has_content || Label_titolo_tabella_prestazioni_annuali.getData()=='') &&
3514 (!Indici_titolo_basso?has_content || Indici_titolo_basso.getData()=='') &&
3515 (!titolo_box_tabella?has_content || titolo_box_tabella.getData()=='')
3516 )>
3517 <div class="boxesDettaglio togliMargin">
3518 <div class="reset">
3519 <h5 class="titolo">${Indici_titolo_alto.getData()}</h5>
3520 <p class="">${Indici_descrizione_alta.getData()}</p>
3521
3522 <#if !(!Label_titolo_valore_iniziale_titoli?has_content || Label_titolo_valore_iniziale_titoli.getData()=='')>
3523 <#assign fileEntryPath = Nome_allegato_valore_iniziale_titoli.Allegato_valore_iniziale_titoli.getData()>
3524 <#assign dlFileVersion = ''>
3525 <#if validator.isNotNull(fileEntryPath)>
3526 <#assign dlFileVersion = confTool.getLatestDLFileVersion(fileEntryPath, checkDisplayDate)>
3527 </#if>
3528
3529 <#if validator.isNotNull(dlFileVersion)>
3530 <h6 class="titolo">${Label_titolo_valore_iniziale_titoli.getData()}</h6>
3531 <div class="archivi">
3532 <a href="${fileEntryPath}?version=${dlFileVersion.getVersion()}" target="_blank">
3533 <h6>
3534 <span class="icona icon-file"></span>
3535 <div>${Nome_allegato_valore_iniziale_titoli.getData()}</div>
3536 </h6>
3537 </a>
3538 </div>
3539 </#if>
3540 </#if>
3541
3542 <#if Label_titolo_tabella_valore_iniziale_indici.getData() != "">
3543 <h6 class="titolo indici">${Label_titolo_tabella_valore_iniziale_indici.getData()}</h6>
3544 </div>
3545 <div class="table">
3546
3547 <#if Riga_valore_iniziale_indici_colonna_1.getSiblings()?has_content>
3548
3549 <#list Riga_valore_iniziale_indici_colonna_1.getSiblings() as cur_Riga_valore_iniziale_indici_colonna_1>
3550 <div class="row">
3551 <div class="cell">
3552 ${cur_Riga_valore_iniziale_indici_colonna_1.getData()}
3553 </div>
3554
3555 <div class="cell">
3556 ${cur_Riga_valore_iniziale_indici_colonna_1.Riga_valore_iniziale_indici_data_emissione.getData()}
3557 </div>
3558
3559 <div class="cell">
3560 ${cur_Riga_valore_iniziale_indici_colonna_1.Riga_valore_iniziale_indici_colonna_3.getData()}
3561 </div>
3562 </div>
3563 </#list>
3564
3565 </#if>
3566
3567 </div>
3568
3569 <!-- INIZIO BLOCCO SMARTPHONE SECONDA TABELLA -->
3570 <div class="table_smart secondaTab">
3571 <#if Riga_valore_iniziale_indici_colonna_1.getSiblings()?has_content>
3572 <table>
3573 <tbody>
3574 <#list Riga_valore_iniziale_indici_colonna_1.getSiblings() as cur_Riga_valore_iniziale_indici_colonna_1>
3575 <#assign velocityCount = cur_Riga_valore_iniziale_indici_colonna_1?index/>
3576 <#if velocityCount!=1>
3577 <tr class="intestazione_smart">
3578 <td colspan="2">${cur_Riga_valore_iniziale_indici_colonna_1.getData()}</td>
3579 </tr>
3580 <tr class="pari">
3581 <td>${Riga_valore_iniziale_indici_colonna_1.getSiblings()[0].Riga_valore_iniziale_indici_data_emissione.getData()}</td>
3582 <td>${cur_Riga_valore_iniziale_indici_colonna_1.Riga_valore_iniziale_indici_data_emissione.getData()}</td>
3583 </tr>
3584 <tr class="dispari">
3585 <td>${Riga_valore_iniziale_indici_colonna_1.getSiblings()[0].Riga_valore_iniziale_indici_colonna_3.getData()}</td>
3586 <td>${cur_Riga_valore_iniziale_indici_colonna_1.Riga_valore_iniziale_indici_colonna_3.getData()}</td>
3587 </tr>
3588 </#if>
3589 </#list>
3590 </tbody>
3591 </table>
3592 </#if>
3593 </div>
3594 <!-- FINE BLOCCO SMARTPHONE SECONDA TABELLA -->
3595
3596 <div class="reset tab">
3597 </#if>
3598 <#if Label_titolo_tabella_prestazioni_annuali.getData() != "">
3599 <h6 class="titolo">${Label_titolo_tabella_prestazioni_annuali.getData()}</h6>
3600 <#if Prestazione_annuale_data_label.getSiblings()?has_content>
3601 </div>
3602
3603 <div class="table">
3604 <#list Prestazione_annuale_data_label.getSiblings() as cur_Prestazione_annuale_data_label>
3605 <div class="row">
3606 <div class="cell">
3607 ${cur_Prestazione_annuale_data_label.getData()}
3608 </div>
3609
3610 <div class="cell">
3611 ${cur_Prestazione_annuale_data_label.Prestazione_annuale_percentuale.getData()}
3612 </div>
3613 </div>
3614 </#list>
3615
3616 </div>
3617
3618 <!-- INZIO BLOCCO SMARTPHONE -->
3619 <div class="table_smart terzaTab">
3620 <table>
3621 <tbody>
3622 <#list Prestazione_annuale_data_label.getSiblings() as cur_Prestazione_annuale_data_label>
3623 <#assign velocityCount = cur_Prestazione_annuale_data_label?index/>
3624 <#if velocityCount==1>
3625 <tr class="intestazione_smart">
3626 <td>${cur_Prestazione_annuale_data_label.getData()}</td>
3627 <td class="presta_ann">${cur_Prestazione_annuale_data_label.Prestazione_annuale_percentuale.getData()}</td>
3628 </tr>
3629 <#elseif velocityCount%2==0>
3630 <tr class="pari">
3631 <td>${cur_Prestazione_annuale_data_label.getData()}</td>
3632 <td>${cur_Prestazione_annuale_data_label.Prestazione_annuale_percentuale.getData()}</td>
3633 </tr>
3634 <#elseif velocityCount%2==1>
3635 <tr class="dispari">
3636 <td>${cur_Prestazione_annuale_data_label.getData()}</td>
3637 <td>${cur_Prestazione_annuale_data_label.Prestazione_annuale_percentuale.getData()}</td>
3638 </tr>
3639 </#if>
3640 </#list>
3641 </tbody>
3642 </table>
3643 </div>
3644
3645 <!-- FINE BLOCCO SMARTPHONE -->
3646 </#if>
3647 </#if>
3648
3649 <!-- INIZIO BLOCCO TABELLA NxM -->
3650 <#list titolo_box_tabella.getSiblings() as cur_titolo_box_tabella>
3651 <div class="reset">
3652 <#assign tipoTabella = cur_titolo_box_tabella.tipo_tabella.getData()>
3653 <#assign descrizioneTabella = $cur_titolo_box_tabella.descrizione_tabella.getData()>
3654 <#if descrizioneTabella!=''>
3655 <h5 class="titolo prospetto">
3656 ${cur_titolo_box_tabella.getData()}
3657 </h5>
3658 <p class="">${descrizioneTabella}</p>
3659 <#else>
3660 <h6 class="titolo">
3661 ${cur_titolo_box_tabella.getData()}
3662 </h6>
3663 </#if>
3664 </div>
3665
3666 <!-- controllo che la prima riga sia valorizzata altrimenti non la stampo -->
3667 <#assign contTheaderVisible = 0>
3668 <#list cur_titolo_box_tabella.intestazione_tabella.th_tabella.getSiblings() as cur_th_tabella>
3669 <#if cur_th_tabella.getData()?has_content>
3670 <#assign contTheaderVisible = contTheaderVisible + 1>
3671 <#break>
3672 </#if>
3673 </#list>
3674
3675 <#assign contRowVisible = 0>
3676 <#if cur_titolo_box_tabella.tr_tabella?has_content>
3677 <#list cur_titolo_box_tabella.tr_tabella.getSiblings() as cur_tr_tabella>
3678 <#if cur_tr_tabella.getData()?has_content>
3679 <#assign contRowVisible = contRowVisible + 1>
3680 <#break>
3681 <#else>
3682 <#if cur_tr_tabella.td_tabella?has_content>
3683 <#list cur_tr_tabella.td_tabella.getSiblings() as cur_td_tabella>
3684 <!-- se di tipo testo stampo il campo td_tabella -->
3685 <#if tipoTabella?lower_case == 'testo'>
3686 <#if cur_td_tabella.getData()?has_content>
3687 <#assign contRowVisible = contRowVisible + 1>
3688 <#break>
3689 </#if>
3690 </#if>
3691 <!-- se di tipo documento stampo il campo td_allegato_url -->
3692 <#if tipoTabella?lower_case == 'documento'>
3693 <#if cur_td_tabella.td_allegato_url.getData() && cur_td_tabella.td_allegato_url.getData() != ''>
3694 <#assign contRowVisible = contRowVisible + 1>
3695 <#break>
3696 </#if>
3697 </#if>
3698 </#list>
3699 </#if>
3700 </#if>
3701 </#list>
3702 </#if>
3703
3704 <#if (contTheaderVisible gt 0 || cur_titolo_box_tabella.intestazione_tabella.getData()?has_content) || contRowVisible gt 0>
3705 <div class="table">
3706
3707 <#if contTheaderVisible gt 0 || cur_titolo_box_tabella.intestazione_tabella.getData()?has_content>
3708 <div class="row theader">
3709 <#else>
3710 <div class="row theader" style="display:none;">
3711 </#if>
3712
3713 <div class="cell">
3714 ${cur_titolo_box_tabella.intestazione_tabella.getData()}
3715 </div>
3716
3717 <#list cur_titolo_box_tabella.intestazione_tabella.th_tabella.getSiblings() as cur_th_tabella>
3718 <div class="cell">
3719 ${cur_th_tabella.getData()}
3720 </div>
3721 </#list>
3722
3723 </div>
3724 <#if cur_titolo_box_tabella.tr_tabella.isEmpty()?has_content>
3725 <#assign rowCount = 0>
3726 <#assign velocityCount = 0>
3727 <#list cur_titolo_box_tabella.tr_tabella.getSiblings() as cur_tr_tabella>
3728 <#assign velocityCount = cur_tr_tabella?index/>
3729 <#assign rowCount = velocityCount>
3730 <div class="row">
3731 <#if rowCount==1>
3732 <div class="cell" style="border-top-color: #D9E2EA; border-top-style: solid; border-top-width: 1px;">
3733 <#else>
3734 <div class="cell">
3735 </#if>
3736
3737 <div class="">${cur_tr_tabella.getData()}</div>
3738 </div>
3739
3740 <#if cur_tr_tabella.td_tabella.isEmpty()?has_content>
3741 <#list cur_tr_tabella.td_tabella.getSiblings() as cur_td_tabella>
3742 <#if rowCount==1>
3743 <div class="cell" style="border-top-color: #D9E2EA; border-top-style: solid; border-top-width: 1px;">
3744 <#else>
3745 <div class="cell">
3746 </#if>
3747
3748 <!-- se di tipo testo stampo il campo td_tabella -->
3749 <#if tipoTabella?lower_case == 'testo'>
3750 ${cur_td_tabella.getData()}
3751 </#if>
3752
3753 <!-- se di tipo documento stampo il campo td_allegato_url -->
3754 <#if tipoTabella?lower_case == 'documento'>
3755 <#assign fileEntryPath = cur_td_tabella.td_allegato_url.getData()>
3756
3757 <#assign dlFileVersion = ''>
3758 <#if validator.isNotNull(fileEntryPath)>
3759 <#assign dlFileVersion =$confTool.getLatestDLFileVersion(fileEntryPath, checkDisplayDate)>
3760 </#if>
3761 <#if validator.isNotNull(dlFileVersion)>
3762 <a class="icona icon-file" href="${fileEntryPath}?version=${dlFileVersion.getVersion()}" target="_blank"></a>
3763 <#else>
3764 <div>—</div>
3765 </#if>
3766 </#if>
3767 </div>
3768 </#list>
3769 </#if>
3770 </div>
3771 <!-- end if in piu -->
3772 </#list>
3773 </div>
3774 </#if>
3775 </#if>
3776 </#list>
3777 <!-- FINE BLOCCO TABELLA NxM -->
3778
3779
3780 <div class="reset">
3781 <h5 class="titolo">${Indici_titolo_basso.getData()}</h5>
3782
3783 <p class="">${Indici_descrizione_bassa.getData()}</p>
3784 </div>
3785
3786 </div>
3787 </div> <!-- boxesDettaglio togliMargin -->
3788
3789 </#if>
3790 <!-- FINE BLOCCO INDICI -->
3791
3792 <!-- BLOCCO (DOWNLOADS BOXES) -->
3793
3794 <#if !(Download_box_label?? && Download_box_label.getData()?has_content && (!Download_box_label.getSiblings()?has_content ||
3795 (Download_box_label.getSiblings()?size==1 &&
3796 (!Download_box_label.getSiblings()[0].getData()?has_content || Download_box_label.getSiblings()[0].getData()=='') &&
3797 (!Download_box_label.getSiblings()[0].Nome_allegato.getSiblings()?has_content ||
3798 (Download_box_label.getSiblings()[0].Nome_allegato.getSiblings()?size==1 &&
3799 (!Download_box_label.getSiblings()[0].Nome_allegato.getSiblings().getData()?has_content || Download_box_label.getSiblings()[0].Nome_allegato.getSiblings()[0].getData()=='')
3800 )))))>
3801
3802 <#list Download_box_label.getSiblings() as cur_Download_box_label>
3803 <div class="boxesDettaglio togliMargin">
3804 <div class="reset download">
3805 <#if getterUtil.getBoolean(cur_Download_box_label.conteggio_file.getData())>
3806 <#assign file_number = cur_Download_box_label.Nome_allegato.getSiblings()?size>
3807 <h5 class="titolo">${cur_Download_box_label.getData()} ( ${file_number} file )</h5>
3808 <#else>
3809 <h5 class="titolo download">${cur_Download_box_label.getData()}</h5>
3810 </#if>
3811 <#if cur_Download_box_label.Nome_allegato.getSiblings()?has_content>
3812 <div class="archivi">
3813 <#list cur_Download_box_label.Nome_allegato.getSiblings() as cur_Download_box>
3814
3815 <#assign fileEntryPath = cur_Download_box.Allegato_url.getData()>
3816
3817 <#assign dlFileVersion = ''>
3818 <#if validator.isNotNull(fileEntryPath)>
3819 <#assign dlFileVersion = confTool.getLatestDLFileVersion(fileEntryPath, checkDisplayDate)>
3820 </#if>
3821 <#if validator.isNotNull(dlFileVersion)>
3822 <#if cur_Download_box.tipo_allegato.getData()=="excel">
3823 <a href="${fileEntryPath}?version=${dlFileVersion.getVersion()}" target="_blank">
3824 <h6>
3825 <span class="icona icon-copy"></span>
3826 <#else>
3827 <a href="${fileEntryPath}?version=${dlFileVersion.getVersion()}" target="_blank">
3828 <h6>
3829 <span class="icona icon-file"></span>
3830 </#if>
3831 <div>${cur_Download_box.getData()}</div>
3832 </h6>
3833 </a>
3834 </#if>
3835 </#list>
3836 </div>
3837 </#if>
3838 </div>
3839 </div>
3840 </#list>
3841 </#if>
3842
3843 <!-- FINE BLOCCO (DOWNLOADS BOXES) -->
3844
3845 <!-- BLOCCO DISCLAIMER -->
3846 <footer>
3847 <p class="caption disclaimer">${disclaimer.getData()}</p>
3848 </footer>
3849 <!-- FINE BLOCCO DISCLAIMER -->
3850
3851<#-- LINK AL TOP -->
3852<#-- <a href="#Top" class="back-to-top" title="Torna a inizio pagina"> -->
3853<#-- TORNA A INIZIO PAGINA <span class="icona icon-angle-up"></span> -->
3854<#-- </a> -->
3855<#-- FINE LINK AL TOP -->
3856
3857 <script type="text/javascript">
3858
3859
3860
3861 jQuery(document).ready(function(){
3862
3863 /* Nasconde, se presente lo span che contiene la pagina di dettaglio */
3864 if(jQuery(".breadcrumbs .elementi span").length) {
3865 jQuery(".breadcrumbs .elementi span").hide();
3866 }
3867
3868 if(jQuery("html").is(".smartphone"))
3869 {
3870 convertTableToDivs();
3871 swipeProspetto();
3872 jQuery(".boxesDettaglio.togliMargin .bloccoValori").first().before("<div class='carousel-menu'></div>");
3873 jQuery(".boxesDettaglio.togliMargin .bloccoValori").first().before("<div class='carousel-items'></div>");
3874 jQuery(".boxesDettaglio.togliMargin .bloccoValori").appendTo(".boxesDettaglio.togliMargin .carousel-items");
3875
3876 jQuery(".boxesDettaglio.togliMargin .bloccoValori").wrap("<div class='carousel-item'></div>");
3877
3878 var bullet=jQuery('<span class="carousel-menu-index">•</span>');
3879
3880 /* creo l'elenco delle slide */
3881 jQuery(".boxesDettaglio.togliMargin .carousel-item").each(function(){
3882 bullet.clone().appendTo(".boxesDettaglio.togliMargin .carousel-menu");
3883 });
3884
3885 var car = ISP.carousel('.boxesDettaglio.togliMargin .carousel-items', '.boxesDettaglio.togliMargin .carousel-menu');
3886
3887 car.play();
3888 }
3889 });
3890
3891 function updateAndamentoLabel(){
3892 jQuery("#andamentoDa").html(jQuery("#datepickerDa").val());
3893 jQuery("#andamentoA").html(jQuery("#datepickerA").val());
3894 }
3895
3896 function applyGradientOnPlot(){
3897 var canvasSeries = jQuery(".jqplot-series-canvas")[0];
3898 var ctx = canvasSeries.getContext("2d");
3899 var my_gradient=ctx.createLinearGradient(0,0,0,300);
3900 my_gradient.addColorStop(0, "rgba(251,168,129,0.6)");
3901 my_gradient.addColorStop(1, "rgba(251,168,129,0.1)");
3902 ctx.fillStyle = my_gradient;
3903 ctx.fill();
3904 }
3905
3906 function updateDatePickers(){
3907 //Aggiorniamo i datepicker con i reali valori visualizzati dal grafico. Necessario per via del padding.
3908 //jQuery("#datepickerDa").datepicker("setDate", new Date(gestioneGrafico.plotter.axes.xaxis.min));
3909
3910 var dataInizialeDefault = jQuery("#dataDefaultVisualizzazionediv").text();
3911
3912 if(dataInizialeDefault.length>0){
3913 var dataNuova = new Date (dataInizialeDefault);
3914
3915 jQuery("#datepickerDa").datepicker("setDate", new Date(dataInizialeDefault));
3916 }else{
3917 jQuery("#datepickerDa").datepicker("setDate", new Date(gestioneGrafico.plotter.axes.xaxis.min));
3918 }
3919
3920
3921 jQuery("#datepickerA").datepicker("setDate", new Date(gestioneGrafico.plotter.axes.xaxis.max));
3922 jQuery('#datepickerDa').datepicker('option', 'minDate', new Date(gestioneGrafico.plotter.axes.xaxis.min));
3923 jQuery('#datepickerDa').datepicker('option', 'maxDate', new Date(gestioneGrafico.plotter.axes.xaxis.max));
3924 jQuery('#datepickerA').datepicker('option', 'minDate', new Date(gestioneGrafico.plotter.axes.xaxis.min));
3925 jQuery('#datepickerA').datepicker('option', 'maxDate', new Date(gestioneGrafico.plotter.axes.xaxis.max));
3926 }
3927
3928 function aggiornaPerformance(dataIniziale, dataFinale){
3929 var dati = window.gestioneGrafico.datiTraLeDate(dataIniziale, dataFinale);
3930
3931 var valoreIniziale = dati[0][1];
3932 var valoreFinale = dati[dati.length - 1][1];
3933
3934 var performance = ((valoreFinale - valoreIniziale) / valoreIniziale) * 100;
3935 if(!isNumber(performance)){
3936 performance = 0;
3937 }
3938 var performance_rounded = +performance.toFixed(2);
3939
3940 var performance_split = [];
3941 if(performance_rounded.toString().indexOf(".")>0){
3942 performance_split = performance_rounded.toString().split(".");
3943 }else{
3944 performance_split[0] = performance_rounded;
3945 performance_split[1] = 0;
3946 }
3947 jQuery(".bloccoValori.performance .titoloValuta").html(performance_split[0] + (performance_split[1]!=0?",<span class='decimali'>" + performance_split[1] + "</span>":"") + " %");
3948 }
3949
3950 function postDrawProcessing(){
3951 console.log("postDrawHooks!");
3952 applyGradientOnPlot();
3953
3954 var dataIniziale = new Date(gestioneGrafico.plotter.axes.xaxis.min);
3955 var dataFinale = new Date(gestioneGrafico.plotter.axes.xaxis.max);
3956
3957 aggiornaPerformance(dataIniziale, dataFinale);
3958
3959 var dataInizialeStr = jQuery.datepicker.formatDate('dd/mm/yy', dataIniziale)
3960 var dataFinaleStr = jQuery.datepicker.formatDate('dd/mm/yy', dataFinale);
3961
3962 //aggiorno solo se diverso per evitare di far scattare onchange
3963 if (dataInizialeStr!=jQuery("#datepickerDa").val()) {
3964 console.log('aggiorno data iniziale da ' + jQuery("#datepickerDa").val() + ' a ' + dataInizialeStr);
3965 jQuery("#datepickerDa").datepicker("setDate", dataIniziale);
3966 }
3967 if (dataFinaleStr!=jQuery("#datepickerA").val()) {
3968 console.log('aggiorno data finale da ' + jQuery("#datepickerA").val() + ' a ' + dataFinaleStr);
3969 jQuery("#datepickerA").datepicker("setDate", dataFinale);
3970 }
3971
3972 updateAndamentoLabel();
3973 }
3974
3975 function isNumber(n) {
3976 return !isNaN(parseFloat(n)) && isFinite(n);
3977 }
3978
3979 jQuery(document).ready(function() {
3980
3981 jQuery.jsDate.regional['it-IT'] = {
3982 monthNames: ['Gennaio','Febbraio','Marzo','Aprile','Maggio','Giugno','Luglio','Agosto','Settembre','Ottobre','Novembre','Dicembre'],
3983 monthNamesShort: ['Gen','Feb','Mar','Apr','Mag','Giu','Lug','Ago','Set','Ott','Nov','Dic'],
3984 dayNames: ['Domenica','Lunedi','Martedi','Mercoledi','Giovedi','Venerdi','Sabato'],
3985 dayNamesShort: ['Dom','Lun','Mar','Mer','Gio','Ven','Sab'],
3986 formatString: '%d-%m-%Y %H:%M:%S'
3987 };
3988 jQuery.jsDate.regional.getLocale();
3989
3990 //Spostato qui perché voglio essere sicuro che gestioneGrafico sia inizializzato quando viene chiamato in questa funzione.
3991 //window.gestioneGrafico garantisce che è una variabile globale! -RC
3992 window.gestioneGrafico = {
3993
3994 //Gestione del pad manuale perché quando si impostano un minimo e un massimo per gli assi il pad è ignorato. -RC
3995 pad: 1.1,
3996
3997 tuttiIdatiDelGrafico : function() {
3998
3999 var tuttiIDati =[];
4000
4001 <#list _listaRendimenti as storicoBean>
4002 tuttiIDati.push([this.getADate('${storicoBean.getDataAggiornamentoStr()}'),'${storicoBean.getValoreFondoUno()}']);
4003 </#list>
4004
4005 //ritorno una copia dell'array che contiene tutti i dati
4006 return tuttiIDati.slice();
4007 },
4008
4009 getADate: function (dataStr)
4010 {
4011 //console.log("getADate dataStr" + dataStr);
4012 if (dataStr == null)
4013 return;
4014 var partiData = dataStr.split("/");
4015 var day = partiData[0];
4016 var month = partiData[1] - 1;
4017 var year = partiData[2];
4018 //console.log("year " + year + " month" + month + " day " + day)
4019 var aDate = new Date(year, month, day, 0, 0, 0, 0);
4020 return aDate;
4021 },
4022
4023 datiTraLeDate : function (dataDa, dataA){
4024 //console.log("datiTraLeDate dataDa " + dataDa + " dataA " + dataA);
4025
4026 var tuttiIdati = this.tuttiIdatiDelGrafico();
4027 //cerco l'elemento minimo superiore a dataDa
4028 //cerco l'elemnto massimo inferiore a dataA
4029 //l'array di dati originali è gia ordinato per data
4030 var indiceDellaDataMinore = -1;
4031 var indiceDellaDataMaggiore = -1;
4032 var currDate;
4033 //cerco la prima data subito superiore a dataDa
4034 for (var i=0; i< tuttiIdati.length; i++) {
4035 currDate = moment(tuttiIdati[i][0]).hours(0).minutes(0).seconds(0);
4036 if((currDate.isAfter(dataDa)||(currDate.isSame(dataDa))) && (currDate.isBefore(dataA)||currDate.isSame(dataA))) {
4037 indiceDellaDataMinore = i;
4038 break;
4039 }
4040 }
4041 //cerco la prima data subito inveriore a dataA
4042 for (var i=tuttiIdati.length -1; i>=0; i--) {
4043 currDate = moment(tuttiIdati[i][0]).hours(0).minutes(0).seconds(0);
4044 if((currDate.isBefore(dataA)|| currDate.isSame(dataA)) && (currDate.isAfter(dataDa)||currDate.isSame(dataDa))) {
4045 indiceDellaDataMaggiore = i;
4046 break;
4047 }
4048 }
4049 //a questo punto ho gli indici delle date minore e maggiore, taglio l'array
4050 var nDiElementi = indiceDellaDataMaggiore - indiceDellaDataMinore + 1;
4051 console.log("nDiElementi" + nDiElementi);
4052 var nuovoRange = tuttiIdati.splice(indiceDellaDataMinore,nDiElementi);
4053 //se 0 risultati creo un array con dati [[dataIniziale, 0], [dataFinale, 0]]
4054 if (nuovoRange.length == 0){
4055 console.log("ritorno un range vuoto");
4056 nuovoRange = [["{$_datiStorico.getDataInizialeString()}"][0],["{$_datiStorico.getDataFinaleString()}"][0]];
4057 }
4058 //se il ragendati ha un solo valore ritorno due valori per far si che il valore sia visibile sul grafico
4059 // if (nuovoRange.length == 1){
4060 // console.log("ritorno un range 1");
4061 // nuovoRange.push(nuovoRange[0]);
4062 // }
4063 console.log("nuovo range" + nuovoRange);
4064 return nuovoRange;
4065 },
4066 getAxisBounds: function(dati, pad, dataDa, dataA){
4067 var _pad = (pad==null||typeof pad == 'undefined')?0:pad;
4068 var _dataDa = typeof dataDa == 'undefined'?null:dataDa;
4069 var _dataA = typeof dataA == 'undefined'?null:dataA;
4070
4071 var minXVal = null;
4072 var maxXVal = null;
4073 //Vogliamo che Y parta da 0 o dal minimo valore minore di 0
4074 var minYVal = null;
4075 var maxYVal = null;
4076
4077 for(var i=0; i<dati.length; i++){
4078 var valY = parseFloat(dati[i][1]);
4079 if(_dataDa==null&&(minXVal==null||dati[i][0]<minXVal)){
4080 minXVal = dati[i][0];
4081 }
4082 if(_dataA==null&&(maxXVal==null||dati[i][0]>maxXVal)){
4083 maxXVal = dati[i][0];
4084 }
4085 if(minYVal==null||valY<minYVal){
4086 minYVal = valY;
4087 }
4088 if(maxYVal==null||valY>maxYVal){
4089 maxYVal = valY;
4090 }
4091 }
4092
4093 if(dataDa!=null){
4094 minXVal = dataDa;
4095 }
4096 if(dataA!=null){
4097 maxXVal = dataA;
4098 }
4099
4100 var padX = 0;
4101 var padY = 0;
4102 if(dati.length>1){
4103 padX = ((maxXVal - minXVal)*(pad-1))/2;
4104 // padY = minYVal>0?((maxYVal - 0)*(pad-1))/2:((maxYVal - minYVal)*(pad-1))/2;
4105 padY = ((maxYVal - minYVal)*(pad-1))/2;
4106 }else{
4107 padX = 86401000;
4108 padY = maxYVal*(pad-1);
4109 }
4110
4111 if(padY<0){
4112 padY=-padY;
4113 }else if(padY==0){
4114 padY=2;
4115 }
4116
4117 var bounds = {
4118 minX: dati.length>1?new Date(minXVal.getTime()):new Date(minXVal.getTime()-padX),
4119 maxX: dati.length>1?new Date(maxXVal.getTime()):new Date(maxXVal.getTime()+2*padX),
4120 // minY: minYVal>0?0:minYVal-padY,
4121 minY: minYVal-padY,
4122 maxY: maxYVal+padY
4123 }
4124
4125 return bounds;
4126 },
4127 zoomHandler: function() {
4128 var c = this.plugins.cursor;
4129 console.log(c);
4130 },
4131
4132 plotter: null,
4133
4134 visualizzaGrafico : function (dati, dataDa, dataA){
4135 var singlePoint = dati.length==1;
4136 var bounds = this.getAxisBounds(dati, this.pad, dataDa, dataA);
4137 var logaritmica = logaritmica;
4138 console.log("Axis Bounds: " + bounds);
4139 if(this.plotter != null)
4140 this.plotter.destroy();
4141 if(singlePoint){
4142 dati.push(dati[0]);
4143 }
4144 this.plotter = jQuery.jqplot('chartdiv', [dati],
4145 {
4146 title:{
4147 text: '',
4148 show: false
4149 },
4150 axesDefaults: {
4151 // numberTicks: 5
4152 // a factor multiplied by the data range on the axis to give the
4153 // axis range so that data points don't fall on the edges of the axis.
4154 },
4155 cursor:{
4156 show: true,
4157 showTooltip: false,
4158 zoom: true,
4159 constrainZoomTo: 'x'
4160 },
4161 seriesDefaults: {
4162
4163 color: '#fba881', // CSS color spec to use for the line. Determined automatically.
4164 showMarker: singlePoint, // render the data point markers or not.
4165 fill: true, // fill under the line,
4166 fillAndStroke: singlePoint, // *stroke a line at top of fill area.
4167 fillColor: '#fba881',
4168 fillAlpha: 0.001, // *custom alpha to apply to fillColor.
4169 shadow: false // show shadow or not.
4170
4171 },
4172 axes:{
4173 xaxis: {
4174 renderer:jQuery.jqplot.DateAxisRenderer,
4175 min: bounds.minX,
4176 max: bounds.maxX,
4177 tickOptions: {formatString: '%d/%m/%Y'}
4178 },
4179 yaxis: {
4180 renderer:logaritmica==true?jQuery.jqplot.LogAxisRenderer:jQuery.jqplot.LinearAxisRenderer,
4181 min: bounds.minY,
4182 max: bounds.maxY,
4183 tickOptions: {formatString: '%#.3f' + (divisaSimboloMap['${valutaFondoUno}']!=null?" " + divisaSimboloMap['${valutaFondoUno}']:" " + '${valutaFondoUno}') }
4184 }
4185 },
4186 series:[{
4187 lineWidth:2,
4188 markerOptions:
4189 {
4190 style:'circle'
4191 }
4192 }],
4193 highlighter: {
4194 show: true,
4195 sizeAdjust: 7.5
4196 },
4197 grid: {
4198 drawGridLines: true, // wether to draw lines across the grid or not.
4199 gridLineColor: '#f0f1f6', // *Color of the grid lines.
4200 background: '#fff', // CSS color spec for background color of grid.
4201 borderColor: '#f0f1f6', // CSS color spec for border around grid.
4202 borderWidth: 1.0, // pixel width of border around grid.
4203 shadow: false, // draw a shadow for grid.
4204 }
4205
4206 });
4207
4208 }
4209 }
4210
4211 <#if !(!usaFondo ||(usaFondo && (!id_fondo?? || id_fondo.getData()=='')))>
4212
4213 <#if _listaRendimenti?size gt 0>
4214
4215 jQuery.jqplot.sprintf.thousandsSeparator = '';
4216 jQuery.jqplot.sprintf.decimalMark = ',';
4217
4218 var gestore = gestioneGrafico;
4219 var datiDaVisualizzare = gestore.tuttiIdatiDelGrafico();
4220 var bounds = gestioneGrafico.getAxisBounds(datiDaVisualizzare, this.pad);
4221
4222 // inizializzo i date picker con gli estremi delle date disponibili in base ai dati ricevuti
4223 jQuery("#datepickerDa").datepicker({
4224 // showOtherMonths: true,
4225 // selectOtherMonths: true,
4226 changeMonth : true,
4227 changeYear : true,
4228 dateFormat : "dd/mm/yy",
4229 defaultDate : bounds.minX,
4230 minDate : bounds.minX,
4231 maxDate : bounds.maxX,
4232 onSelect : function() {
4233 jQuery("#datepickerA").datepicker('option', {
4234 minDate : jQuery(this).datepicker('getDate')
4235 });
4236 updateGraphDatesFromDatePickers();
4237 // jQuery(this).change();
4238 // jQuery(this).blur();
4239 }
4240 // defaultDate: gestore.getADate("$_datiStorico.getDataInizialeString()"),
4241 // minDate : gestore.getADate("$_datiStorico.getDataInizialeString()"),
4242 // maxDate : gestore.getADate("$_datiStorico.getDataFinaleString()")
4243 }, jQuery.datepicker.regional['it']);
4244 jQuery("#datepickerA").datepicker({
4245 changeMonth : true,
4246 changeYear : true,
4247 dateFormat : "dd/mm/yy",
4248 defaultDate : bounds.maxX,
4249 minDate : bounds.minX,
4250 maxDate : bounds.maxX,
4251 onSelect : function() {
4252 jQuery("#datepickerDa").datepicker('option', {
4253 maxDate : jQuery(this).datepicker('getDate')
4254 });
4255 updateGraphDatesFromDatePickers();
4256 // jQuery(this).change();
4257 // jQuery(this).blur();
4258 },
4259 beforeShow : function(input, inst) {
4260 inst.dpDiv.css({marginLeft: -input.offsetWidth + 'px'});
4261
4262 }
4263 // defaultDate: gestore.getADate("$_datiStorico.getDataInizialeString()"),
4264 // minDate : gestore.getADate("$_datiStorico.getDataInizialeString()"),
4265 // maxDate : gestore.getADate("$_datiStorico.getDataFinaleString()")
4266 }, jQuery.datepicker.regional['it']);
4267
4268 function updateGraphDatesFromDatePickers() {
4269 var dataDaStr = jQuery("#datepickerDa").val();
4270 var dataAStr = jQuery("#datepickerA").val();
4271 console.log("date cambiate: da " + dataDaStr + " a " + dataAStr);
4272 // Se date nulle usa gli estremi
4273 if (dataDaStr == '')
4274 {
4275 dataDaStr = gestore.getADate("${_datiStorico.getDataInizialeString()}");
4276 jQuery("#datepickerDa").val(dataDaStr);
4277 }
4278 if (dataAStr == '')
4279 {
4280 dataAStr = gestore.getADate("${_datiStorico.getDataFinaleString()}");
4281 jQuery("#datepickerA").val(dataAStr);
4282 }
4283 var dataDa = gestore.getADate(dataDaStr);
4284 var dataA = gestore.getADate(dataAStr);
4285 // se la data è maggiore di data a non fare nulla
4286 if (dataDa >= dataA)
4287 return;
4288
4289 gestore.plotter.axes.xaxis.min = dataDa;
4290 gestore.plotter.axes.xaxis.max = dataA;
4291
4292 var interval = (dataA.getTime() - dataDa.getTime()) / 5;
4293 var ticks = [];
4294 var currTick = dataDa.getTime();
4295 ticks.push(currTick);
4296 for (var i = 0; i < 5; i++) {
4297 currTick += interval;
4298 ticks.push(currTick);
4299 }
4300
4301 gestore.plotter.axes.xaxis.ticks = ticks;
4302
4303 gestore.plotter.replot();
4304
4305 // Necessario per riabilitare zoom
4306 gestore.plotter.axes.xaxis.ticks = [];
4307
4308 // applyGradientOnPlot();
4309
4310 };
4311
4312 if (Liferay.Browser.isIe() && Liferay.Browser.getVersion() < 9)
4313 {
4314 // carica script che emula il canvas poiché ie < 9 non lo supoporta
4315 var exCanvasScriptUrl = "${themeDisplay.getPathThemeRoot()}/js/portlet/rendimentiequotazioni/dettaglio/jqplot/excanvas/excanvas.min.js";
4316 jQuery.getScript(exCanvasScriptUrl, function(data, textStatus, jqxhr) {
4317 gestore.visualizzaGrafico(datiDaVisualizzare);
4318 updateDatePickers();
4319 applyGradientOnPlot();
4320 jQuery.jqplot.postDrawHooks.push(postDrawProcessing);
4321 updateAndamentoLabel();
4322 });
4323
4324 }
4325 else
4326 {
4327 gestore.visualizzaGrafico(datiDaVisualizzare);
4328 updateDatePickers();
4329 applyGradientOnPlot();
4330 jQuery.jqplot.postDrawHooks.push(postDrawProcessing);
4331 updateAndamentoLabel();
4332 }
4333 updateGraphDatesFromDatePickers();
4334 aggiornaPerformance(datiDaVisualizzare[0][0], datiDaVisualizzare[datiDaVisualizzare.length - 1][0]);
4335
4336
4337 jQuery( ".datePicker" ).change(updateGraphDatesFromDatePickers);
4338
4339 </#if>
4340
4341 </#if>
4342
4343
4344 });
4345 </script>
4346
4347 </div>
4348
4349 <style>
4350
4351 .boxesDettaglio .datePickers p .datePicker {
4352 position: absolute;
4353 display: block;
4354 height: 30px;
4355 width: 105px;
4356 margin: 0;
4357 padding: 4px 3px;
4358 background: transparent;
4359 color: #fff;
4360 border: medium none;
4361 box-shadow: none;
4362 cursor: pointer;
4363 z-index: 100;
4364 }
4365 .aui .supTitle {
4366 color: #2d769d;
4367 text-align: left;
4368 padding: 0;
4369 margin: 0;
4370 font-size: 18px;
4371 font-weight: normal;
4372 }
4373
4374 </style>
4375
4376</#if>
4377
4378
4379
4380
4381<script type="text/javascript" src="${themeDisplay.getPathThemeRoot()}/js/portlet/rendimentiequotazioni/dettaglio/jqplot/jquery.jqplot.min.js"></script>
4382<script type="text/javascript" src="${themeDisplay.getPathThemeRoot()}/js/portlet/rendimentiequotazioni/dettaglio/jqplot/excanvas/excanvas.min.js"></script>
4383<script type="text/javascript" src="${themeDisplay.getPathThemeRoot()}/js/portlet/rendimentiequotazioni/dettaglio/jqplot/plugins/jqplot.dateAxisRenderer.min.js"></script>
4384<script type="text/javascript" src="${themeDisplay.getPathThemeRoot()}/js/portlet/rendimentiequotazioni/dettaglio/jqplot/plugins/jqplot.highlighter.min.js"></script>
4385<script type="text/javascript" src="${themeDisplay.getPathThemeRoot()}/js/portlet/rendimentiequotazioni/dettaglio/jqplot/plugins/jqplot.cursor.min.js"></script>
4386<script type="text/javascript" src="${themeDisplay.getPathThemeRoot()}/js/portlet/rendimentiequotazioni/dettaglio/jqplot/plugins/jqplot.logAxisRenderer.js"></script>