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