Changeset 443
- Timestamp:
- Mar 31, 2025, 6:41:57 PM (8 months ago)
- Location:
- trunk
- Files:
-
- 1 added
- 7 deleted
- 10 edited
-
admin/admin.php (modified) (1 diff)
-
admin/modules/Elezioni/collegi_senato.txt (added)
-
admin/versione.php (modified) (1 diff)
-
client/temi/bootstrap/pagine - Copia/img/affluenzagrafico.php (deleted)
-
client/temi/bootstrap/pagine - Copia/img/ore12.svg (deleted)
-
client/temi/bootstrap/pagine - Copia/img/ore19.svg (deleted)
-
client/temi/bootstrap/pagine - Copia/img/ore22.svg (deleted)
-
client/temi/bootstrap/pagine - Copia/loghi/logo1.jpg (deleted)
-
client/temi/bootstrap/pagine - Copia/loghi/logo2.jpg (deleted)
-
client/temi/bootstrap/pagine - Copia/loghi/logo3.jpg (deleted)
-
client/temi/bootstrap/pagine/candidatilistapercirco.php (modified) (1 diff)
-
client/temi/bootstrap/pagine/candidatopercirco.php (modified) (1 diff)
-
client/temi/bootstrap/pagine/grafici/affluenza.php (modified) (1 diff)
-
client/temi/bootstrap/pagine/grafici/votidigruppo.php (modified) (1 diff)
-
client/temi/bootstrap/pagine/grafici/votidilista.php (modified) (5 diffs)
-
client/temi/bootstrap/pagine/listapercirco.php (modified) (1 diff)
-
client/temi/bootstrap/top_nav.php (modified) (1 diff)
-
client/versione.php (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/admin/admin.php
r436 r443 478 478 $_SESSION=array(); 479 479 480 session_regenerate_id();481 480 session_write_close(); 482 481 session_cache_expire (0); 482 session_destroy(); 483 483 Header($ref); 484 484 -
trunk/admin/versione.php
r442 r443 1 1 <?php 2 2 3 $versione = "3.0 rev 44 2";3 $versione = "3.0 rev 443"; 4 4 $version_number = $versione; 5 $datarel = "3 0marzo 2025";5 $datarel = "31 marzo 2025"; 6 6 $version = "Eleonline $version_number (<i>Data Release: $datarel</i>)"; 7 7 -
trunk/client/temi/bootstrap/pagine/candidatilistapercirco.php
r441 r443 6 6 $sezioni=elenco_circoscrizioni(); 7 7 # Blocco opendata 8 $nosez=1; 8 9 $linkopendata="modules.php?name=Elezioni&op=candidato_circo&id_cons_gen=$id_cons_gen&id_comune=$id_comune$cirpar&csv=1&min=1&minsez=1&id_lista=$id_lista"; 9 10 include 'opendata.php'; -
trunk/client/temi/bootstrap/pagine/candidatopercirco.php
r441 r443 8 8 $sezioni=elenco_circoscrizioni(); 9 9 # Blocco opendata 10 $nosez=1; 10 11 $linkopendata="modules.php?name=Elezioni&op=gruppo_circo&id_cons_gen=$id_cons_gen&id_comune=$id_comune&csv=1&min=1&minsez=1&id_lista="; 11 12 include 'opendata.php'; -
trunk/client/temi/bootstrap/pagine/grafici/affluenza.php
r442 r443 179 179 const text = value + '% (' + votoValue + ' voti)'; 180 180 181 const x = meta.base + (meta.width / 2);181 const x = meta.base + (meta.width + 65); 182 182 const y = meta.y; 183 183 -
trunk/client/temi/bootstrap/pagine/grafici/votidigruppo.php
r442 r443 110 110 var numero_voti = dataVoti[index]; 111 111 112 // Calcolo orizzontale per il centro della barra (meta.width / 2) 113 const x = meta.base + (value * 11);112 // Calcolo orizzontale per il centro della barra (meta.width / 2)(value * 11); 113 const x = meta.base + meta.width + 5; 114 114 115 115 // Calcolo verticale per il centro della barra -
trunk/client/temi/bootstrap/pagine/grafici/votidilista.php
r442 r443 1 1 <?php 2 2 // Simulazione dei dati da un database o altra fonte 3 $dati =voti_tot_lista();3 $dati = voti_tot_lista(); 4 4 # t1.id_lista,t2.num_gruppo,t2.num_lista,t2.descrizione,sum(t1.voti) 5 $descr=array(); 6 $perc=array(); 7 $voti=array(); 8 $tot=0; 9 $i=0; 10 foreach($dati as $val) 11 $tot+=$val[4]; 12 foreach($dati as $val) { 13 # if($i) $perc.=", "; 14 $descr[]=$val[3]; 15 $perc[]=number_format($val[4]/$tot*100,2); 16 $voti[]=$val[4]; 17 $i++; 5 $descr = []; 6 $perc = []; 7 $voti = []; 8 $tot = 0; 9 $i = 0; 10 foreach ($dati as $val) 11 $tot += $val[4]; 12 foreach ($dati as $val) { 13 $descr[] = $val[3]; 14 $perc[] = number_format($val[4] / $tot * 100, 2); 15 $voti[] = $val[4]; 16 $i++; 18 17 } 19 $labels = $descr; // Nomi di Lista20 $voti_percentuali = $perc; // Percentuali di Lista18 $labels = $descr; // Nomi di Lista 19 $voti_percentuali = $perc; // Percentuali di Lista 21 20 $voti_lista = $voti; // Aggiungi i voti per ciascuna lista 21 22 // Palette di colori per le barre (fino a 30 liste) 23 $palette = [ 24 '#1f77b4', '#ff7f0e', '#2ca02c', '#d62728', '#9467bd', '#8c564b', '#e377c2', '#7f7f7f', '#bcbd22', '#17becf', 25 '#aec7e8', '#ffbb78', '#98df8a', '#ff9896', '#c5b0d5', '#c49c94', '#f7b6d2', '#c7c7c7', '#dbdb8d', '#9edae5', 26 '#393b79', '#637939', '#8c6d31', '#843c39', '#7b4173', '#5254a3', '#8ca252', '#bd9e39', '#ad494a', '#d6616b' 27 ]; 22 28 ?> 23 29 24 30 <!-- Chart.js --> 25 31 <script src="temi/bootstrap/pagine/grafici/js/chart.umd.js"></script> 32 <script src="https://cdn.jsdelivr.net/npm/chartjs-plugin-datalabels@2.0.0"></script> 26 33 27 34 <style> 28 35 #chartContainer { 29 36 width: 100%; 30 height: <?php echo 30*$i; ?>px;37 height: <?php echo min(500 + count($labels) * 20, 900); ?>px; /* L'altezza si adatta al numero di liste */ 31 38 margin: 0 auto; 32 39 } 33 34 /* Applica il font Titillium Web al grafico */ 35 body, .chartjs-tooltip, .chartjs-legend, .chartjs-tooltip-table, .chartjs-title { 36 font-family: 'Titillium Web', sans-serif; 40 #legendContainer { 41 text-align: center; 42 margin-bottom: 20px; 43 } 44 #legendContainer div { 45 display: inline-block; 46 margin-right: 15px; 37 47 } 38 48 </style> … … 42 52 <h4 class="fw-semibold text-primary mobile-expanded mt-2">Voti espressi di Lista</h4> 43 53 </div> 54 55 <!-- Legenda sopra il grafico --> 56 <div class="row mb-3"> 57 <div class="col"> 58 <div id="legendContainer"></div> 59 </div> 60 </div> 61 44 62 <div id="chartContainer"> 45 63 <canvas id="affluenzaChart"></canvas> … … 51 69 var ctx = document.getElementById('affluenzaChart').getContext('2d'); 52 70 53 // Passaggio dei dati PHP a JavaScript54 71 var labels = <?php echo json_encode($labels); ?>; 55 72 var dataPercentuali = <?php echo json_encode($voti_percentuali); ?>; 56 73 var dataVoti = <?php echo json_encode($voti_lista); ?>; 74 var palette = <?php echo json_encode($palette); ?>; 75 76 var datasets = [{ 77 label: 'Voti %', 78 data: dataPercentuali, 79 backgroundColor: palette.slice(0, dataPercentuali.length), 80 borderWidth: 1, 81 barThickness: 30, // Larghezza delle barre 82 categoryPercentage: 1.0, // Occupa tutta la larghezza disponibile 83 barPercentage: 0.8 // Percentuale della larghezza della barra 84 }]; 57 85 58 86 var affluenzaChart = new Chart(ctx, { 59 87 type: 'bar', 60 88 data: { 61 labels: labels, // Dati delle etichette (Lista A, Lista B, ecc.) 62 datasets: [ 63 { // Percentuali di voti 64 label: 'Voti %', 65 data: dataPercentuali, // Dati percentuali 66 backgroundColor: 'rgba(135,206,250, 0.8)', // Azzurro 67 borderWidth: 1 68 } 69 ] 89 labels: labels, 90 datasets: datasets 70 91 }, 71 92 options: { … … 77 98 stacked: true, 78 99 beginAtZero: true, 79 max: 100 100 max: 100, 101 ticks: { 102 stepSize: 10 // Aumenta la dimensione dei tick dell'asse X 103 } 80 104 }, 81 105 y: { 82 stacked: true 106 stacked: true, 107 ticks: { 108 beginAtZero: true, 109 padding: 15 // Spazio tra le barre 110 } 83 111 } 84 112 }, 85 113 plugins: { 114 legend: { 115 display: false // Nasconde la legenda di Chart.js, verrà gestita manualmente 116 }, 86 117 tooltip: { 87 118 callbacks: { … … 93 124 } 94 125 } 126 }, 127 // Plugin per inserire i valori percentuali fuori dalla barra 128 datalabels: { 129 display: true, 130 color: '#000000', // Colore del testo 131 align: 'end', // Posiziona il testo alla fine della barra 132 formatter: function(value, context) { 133 var percentuale = dataPercentuali[context.dataIndex]; 134 return percentuale + '%'; // Mostra solo la percentuale 135 }, 136 font: { 137 weight: 'bold', 138 size: 14 139 }, 140 anchor: 'end', // Ancorato alla fine della barra 141 offset: 5 // Distanza tra la barra e la percentuale 95 142 } 96 143 } 97 144 }, 98 plugins: [ 99 { 100 id: 'insideBarPercentage', 101 afterDatasetDraw: function(chart) { 102 const ctx = chart.ctx; 145 plugins: [ChartDataLabels] 146 }); 103 147 104 chart.data.datasets[0].data.forEach((value, index) => { 105 const meta = chart.getDatasetMeta(0).data[index]; // Seleziona la barra corretta 106 107 // Voti numerici da mostrare 108 var numero_voti = dataVoti[index]; 109 110 // Calcolo orizzontale per il centro della barra (meta.width / 2) 111 const x = meta.base + (value * 11); 112 113 // Calcolo verticale per il centro della barra 114 const y = meta.y; 115 116 ctx.save(); 117 ctx.fillStyle = '#000000'; // Colore del testo nero per un buon contrasto 118 ctx.font = 'bold 14px "Titillium Web", sans-serif'; // Usa il font Titillium Web 119 ctx.textAlign = 'left'; 120 ctx.textBaseline = 'middle'; // Centro del testo verticalmente 121 ctx.fillText(value + '% (' + numero_voti.toLocaleString() + ' voti)', x, y); // Testo centrato 122 ctx.restore(); 123 }); 124 } 125 } 126 ] 148 // Creazione della legenda personalizzata sopra il grafico 149 var legendContainer = document.getElementById('legendContainer'); 150 labels.forEach((label, index) => { 151 var legendItem = document.createElement('div'); 152 legendItem.innerHTML = `<span style="display:inline-block;width:12px;height:12px;background-color:${palette[index]};margin-right:5px;"></span>${label}`; 153 legendContainer.appendChild(legendItem); 127 154 }); 128 155 </script> -
trunk/client/temi/bootstrap/pagine/listapercirco.php
r441 r443 11 11 $sezioni=elenco_circoscrizioni(); 12 12 # Blocco opendata 13 $nosez=1; 13 14 if($genere==2) 14 15 $linkopendata="modules.php?name=Elezioni&op=gruppo_circo&id_cons_gen=$id_cons_gen&id_comune=$id_comune&csv=1&id_lista="; -
trunk/client/temi/bootstrap/top_nav.php
r442 r443 283 283 <?php if($genere>0) { ?> 284 284 <?php if(count(affluenze_totali(0))) $stato=''; else $stato='disabled'; ?> 285 <li><a class="dropdown-item <?php echo $stato; ?> list-item left-icon" href="modules.php?op=41&id_comune=<?php echo $id_comune.$cirpar;?>&file=index&id_cons_gen=<?php echo $id_cons_gen;?>"><svg class="icon icon-sm icon-primary left"><use href="<?php echo $curdir?>/svg/sprites.svg#it-chart-line"></use></svg><span> Affluenze</span></a></li> 285 <li><a class="dropdown-item <?php echo $stato; ?> list-item left-icon" href="modules.php?op=41&id_comune=<?php echo $id_comune.$cirpar;?>&id_cons_gen=<?php echo $id_cons_gen;?>"><svg class="icon icon-sm icon-primary left"><use href="<?php echo $curdir?>/svg/sprites.svg#it-chart-line"></use></svg><span> Affluenze</span></a></li> 286 287 <li><a class="dropdown-item <?php echo $stato; ?> list-item left-icon" href="modules.php?op=42&id_comune=<?php echo $id_comune.$cirpar;?>&id_cons_gen=<?php echo $id_cons_gen;?>"><svg class="icon icon-sm icon-primary left"><use href="<?php echo $curdir?>/svg/sprites.svg#it-chart-line"></use></svg><span> Votanti</span></a></li> 288 <li><span class="divider"></span></li> 289 <?php if(($genere==1 or $genere==3 or $genere==5) and !$votogruppo) {?> 290 <?php if(count(voti_gruppo('gruppo'))>0) $stato=''; else $stato='disabled'; ?> 291 <li><a class="dropdown-item <?php echo $stato; ?> list-item left-icon" href="modules.php?op=43&id_comune=<?php echo $id_comune.$cirpar;?>&id_cons_gen=<?php echo $id_cons_gen;?>"><svg class="icon icon-sm icon-primary left"><use href="<?php echo $curdir?>/svg/sprites.svg#it-chart-line"></use></svg><span> <?php echo _GRUPPO; ?></span></a></li> 292 <?php }?> 293 <?php if($genere>1) { 294 if($genere==2) ?> 295 <?php if(count(voti_gruppo('gruppo'))>0) $stato=''; else $stato='disabled'; ?> 296 <?php if(($genere>2) and !$votolista) {?> 297 <?php if(count(voti_tot_lista())>0) $stato=''; else $stato='disabled'; ?> 298 <?php }?> 299 <li><a class="dropdown-item <?php echo $stato; ?> list-item left-icon" href="modules.php?op=44&id_comune=<?php echo $id_comune.$cirpar;?>&id_cons_gen=<?php echo $id_cons_gen;?>"><svg class="icon icon-sm icon-primary left"><use href="<?php echo $curdir?>/svg/sprites.svg#it-chart-line"></use></svg><span> Voti di Lista </span></a></li> 300 <?php }?> 286 301 <?php }else{ ?> 287 <?php $tmp=voti_tot_referendum();if($tmp and $tmp[0][4]>0) $stato=''; else $stato='disabled'; ?> 288 <li><a class="dropdown-item <?php echo $stato; ?> list-item left-icon" href="modules.php?op=51"> 289 <svg class="icon icon-sm icon-primary left"><use href="<?php echo $curdir?>/svg/sprites.svg#it-chart-line"></use></svg><span>Affluenze Referendum</span></a></li> 302 <?php $tmp=affluenze_referendum(0); if($tmp and $tmp[0][1]>0) $stato=''; else $stato='disabled'; ?> 303 <li><a class="dropdown-item <?php echo $stato; ?> list-item left-icon" href="modules.php?op=51&id_comune=<?php echo $id_comune.$cirpar;?>&id_cons_gen=<?php echo $id_cons_gen;?>"> 304 <svg class="icon icon-sm icon-primary left"><use href="<?php echo $curdir?>/svg/sprites.svg#it-chart-line"></use></svg><span>Affluenze Referendum</span></a></li> 305 <?php $tmp=voti_tot_referendum();if($tmp and ($tmp[0][4]+$tmp[0][5])>0) $stato=''; else $stato='disabled'; ?> 306 <li><a class="dropdown-item <?php echo $stato; ?> list-item left-icon" href="modules.php?op=52&id_comune=<?php echo $id_comune.$cirpar;?>&id_cons_gen=<?php echo $id_cons_gen;?>"><svg class="icon icon-sm icon-primary left"><use href="<?php echo $curdir?>/svg/sprites.svg#it-chart-line"></use></svg><span> Votanti</span></a></li> 307 <?php $tmp=voti_tot_referendum();if($tmp and ($tmp[0][2]+$tmp[0][3])>0) $stato=''; else $stato='disabled'; ?> 308 <li><a class="dropdown-item <?php echo $stato; ?> list-item left-icon" href="modules.php?op=52&id_comune=<?php echo $id_comune.$cirpar;?>&id_cons_gen=<?php echo $id_cons_gen;?>"><svg class="icon icon-sm icon-primary left"><use href="<?php echo $curdir?>/svg/sprites.svg#it-chart-line"></use></svg><span> Voti</span></a></li> 309 290 310 <?php }?> 291 <?php if($genere>0) { ?>292 <?php $tmp=voti_totali();if($tmp and array_sum($tmp[0])>0) $stato=''; else $stato='disabled'; ?>293 <li><a class="dropdown-item <?php echo $stato; ?> list-item left-icon" href="modules.php?op=42&id_comune=<?php echo $id_comune.$cirpar;?>&file=index&id_cons_gen=<?php echo $id_cons_gen;?>"><svg class="icon icon-sm icon-primary left"><use href="<?php echo $curdir?>/svg/sprites.svg#it-chart-line"></use></svg><span> Votanti</span></a></li>294 <li><span class="divider"></span></li>295 <?php }else{ ?>296 <?php if(count(voti_tot_referendum())>0) $stato=''; else $stato='disabled'; ?>297 <li><a class="dropdown-item <?php echo $stato; ?> list-item left-icon" href="modules.php?op=52">298 <svg class="icon icon-sm icon-primary left"><use href="<?php echo $curdir?>/svg/sprites.svg#it-chart-line"></use></svg><span>Distribuzione dei Voti Referendum</span></a></li>299 <?php }?>300 <?php if(($genere==1 or $genere==3 or $genere==5) and !$votogruppo) { ?>301 <li><a class="dropdown-item <?php echo $stato; ?> list-item left-icon" href="modules.php?op=43&id_comune=<?php echo $id_comune.$cirpar;?>&file=index&id_cons_gen=<?php echo $id_cons_gen;?>"><svg class="icon icon-sm icon-primary left"><use href="<?php echo $curdir?>/svg/sprites.svg#it-chart-line"></use></svg><span> Voto per Gruppo</span></a></li>302 <?php }?>303 304 <?php if($genere>1) {305 if($genere==2) ?>306 <?php if(count(voti_gruppo('lista'))>0) $stato=''; else $stato='disabled'; ?>307 <?php if(($genere>2) and !$votolista) {?>308 <?php if(count(voti_tot_lista())>0) $stato=''; else $stato='disabled'; ?>309 <?php }?>310 <li><a class="dropdown-item <?php echo $stato; ?> list-item left-icon" href="modules.php?op=44&id_comune=<?php echo $id_comune.$cirpar;?>&file=index&id_cons_gen=<?php echo $id_cons_gen;?>"><svg class="icon icon-sm icon-primary left"><use href="<?php echo $curdir?>/svg/sprites.svg#it-chart-line"></use></svg><span> Voto per Lista</span></a></li>311 <?php }?>312 <?php if(($genere==4 or $genere==5) and !$votocandidato) {?>313 <?php if(count(voti_tot_candidato(0))>0) $stato=''; else $stato='disabled'; ?>314 <li><a class="dropdown-item <?php echo $stato; ?> list-item left-icon" href="modules.php?op=62&id_comune=<?php echo $id_comune.$cirpar;?>&file=index&id_cons_gen=<?php echo $id_cons_gen;?>"><svg class="icon icon-sm icon-primary left"><use href="<?php echo $curdir?>/svg/sprites.svg#it-chart-line"></use></svg><span> Candidato Lista per Sezioni</span></a></li>315 <?php }?>316 311 </ul> 317 312 </div> -
trunk/client/versione.php
r442 r443 1 1 <?php 2 2 3 $versione = "3.0 rev 44 2";3 $versione = "3.0 rev 443"; 4 4 $version_number = $versione; 5 $datarel = "3 0marzo 2024";5 $datarel = "31 marzo 2024"; 6 6 $version = "Eleonline $version_number (<i>Data Release: $datarel</i>)"; 7 7
Note:
See TracChangeset
for help on using the changeset viewer.
