Changeset 443 for trunk


Ignore:
Timestamp:
Mar 31, 2025, 6:41:57 PM (8 months ago)
Author:
roby
Message:
  • ADMIN

-- Correzione ai numeri assegnati ai candidati in importa da dait

  • CLIENT

-- Correzioni alla generazione dei pdf
-- Aggiunti i grafici per affluenze, votanti, voto di gruppo e voto di lista

Location:
trunk
Files:
1 added
7 deleted
10 edited

Legend:

Unmodified
Added
Removed
  • trunk/admin/admin.php

    r436 r443  
    478478$_SESSION=array();
    479479
    480 session_regenerate_id();
    481480session_write_close();
    482481session_cache_expire (0);
     482session_destroy();
    483483Header($ref);
    484484
  • trunk/admin/versione.php

    r442 r443  
    11<?php
    22
    3 $versione = "3.0 rev 442";
     3$versione = "3.0 rev 443";
    44$version_number = $versione;
    5 $datarel = "30 marzo 2025";
     5$datarel = "31 marzo 2025";
    66$version = "Eleonline $version_number (<i>Data Release: $datarel</i>)";
    77
  • trunk/client/temi/bootstrap/pagine/candidatilistapercirco.php

    r441 r443  
    66        $sezioni=elenco_circoscrizioni();
    77        # Blocco opendata
     8        $nosez=1;
    89        $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";
    910        include 'opendata.php';
  • trunk/client/temi/bootstrap/pagine/candidatopercirco.php

    r441 r443  
    88        $sezioni=elenco_circoscrizioni();
    99        # Blocco opendata
     10        $nosez=1;
    1011        $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=";
    1112        include 'opendata.php';
  • trunk/client/temi/bootstrap/pagine/grafici/affluenza.php

    r442 r443  
    179179                            const text = value + '% (' + votoValue + ' voti)';
    180180
    181                             const x = meta.base + (meta.width / 2);
     181                            const x = meta.base + (meta.width + 65);
    182182                            const y = meta.y;
    183183
  • trunk/client/temi/bootstrap/pagine/grafici/votidigruppo.php

    r442 r443  
    110110                        var numero_voti = dataVoti[index];
    111111                       
    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;
    114114                       
    115115                        // Calcolo verticale per il centro della barra
  • trunk/client/temi/bootstrap/pagine/grafici/votidilista.php

    r442 r443  
    11<?php
    22// Simulazione dei dati da un database o altra fonte
    3 $dati=voti_tot_lista();
     3$dati = voti_tot_lista();
    44# 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;
     10foreach ($dati as $val)
     11    $tot += $val[4];
     12foreach ($dati as $val) {
     13    $descr[] = $val[3];
     14    $perc[] = number_format($val[4] / $tot * 100, 2);
     15    $voti[] = $val[4];
     16    $i++;
    1817}
    19 $labels = $descr; //Nomi di Lista
    20 $voti_percentuali = $perc; //Percentuali di Lista
     18$labels = $descr; // Nomi di Lista
     19$voti_percentuali = $perc; // Percentuali di Lista
    2120$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];
    2228?>
    2329
    2430<!-- Chart.js -->
    2531<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>
    2633
    2734<style>
    2835    #chartContainer {
    2936        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 */
    3138        margin: 0 auto;
    3239    }
    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;
    3747    }
    3848</style>
     
    4252        <h4 class="fw-semibold text-primary mobile-expanded mt-2">Voti espressi di Lista</h4>
    4353    </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
    4462    <div id="chartContainer">
    4563        <canvas id="affluenzaChart"></canvas>
     
    5169    var ctx = document.getElementById('affluenzaChart').getContext('2d');
    5270
    53     // Passaggio dei dati PHP a JavaScript
    5471    var labels = <?php echo json_encode($labels); ?>;
    5572    var dataPercentuali = <?php echo json_encode($voti_percentuali); ?>;
    5673    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    }];
    5785
    5886    var affluenzaChart = new Chart(ctx, {
    5987        type: 'bar',
    6088        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
    7091        },
    7192        options: {
     
    7798                    stacked: true,
    7899                    beginAtZero: true,
    79                     max: 100
     100                    max: 100,
     101                    ticks: {
     102                        stepSize: 10 // Aumenta la dimensione dei tick dell'asse X
     103                    }
    80104                },
    81105                y: {
    82                     stacked: true
     106                    stacked: true,
     107                    ticks: {
     108                        beginAtZero: true,
     109                        padding: 15 // Spazio tra le barre
     110                    }
    83111                }
    84112            },
    85113            plugins: {
     114                legend: {
     115                    display: false // Nasconde la legenda di Chart.js, verrà gestita manualmente
     116                },
    86117                tooltip: {
    87118                    callbacks: {
     
    93124                        }
    94125                    }
     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
    95142                }
    96143            }
    97144        },
    98         plugins: [
    99             {
    100                 id: 'insideBarPercentage',
    101                 afterDatasetDraw: function(chart) {
    102                     const ctx = chart.ctx;
     145        plugins: [ChartDataLabels]
     146    });
    103147
    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);
    127154    });
    128155</script>
  • trunk/client/temi/bootstrap/pagine/listapercirco.php

    r441 r443  
    1111        $sezioni=elenco_circoscrizioni();
    1212        # Blocco opendata
     13        $nosez=1;
    1314        if($genere==2)
    1415                $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  
    283283                                                                                <?php if($genere>0) { ?>
    284284                                                                                        <?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 }?>
    286301                                                                                <?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                                                                               
    290310                                                                                <?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 }?>
    316311                                                                          </ul>
    317312                                                                        </div>
  • trunk/client/versione.php

    r442 r443  
    11<?php
    22
    3 $versione = "3.0 rev 442";
     3$versione = "3.0 rev 443";
    44$version_number = $versione;
    5 $datarel = "30 marzo 2024";
     5$datarel = "31 marzo 2024";
    66$version = "Eleonline $version_number (<i>Data Release: $datarel</i>)";
    77
Note: See TracChangeset for help on using the changeset viewer.