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