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