Widget:Grafico: differenze tra le versioni

Da WikiLectio.
m test
m test
Riga 38: Riga 38:
</div>
</div>


<!-- Carica Chart.js (se il CDN è bloccato, vedi nota in fondo) -->
<!-- Chart.js (CDN) -->
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>


{literal}
<script>
<script>
(function(){
(function(){
Riga 48: Riga 49:
   function numOrUndef(s){ const n = Number(s); return isNaN(n) ? undefined : n; }
   function numOrUndef(s){ const n = Number(s); return isNaN(n) ? undefined : n; }


   var id  = "<!--{$id|escape:'html'}-->";
   var id  = document.currentScript.previousElementSibling.previousElementSibling.id.replace('canvas_',''); // robusto
   var c  = document.getElementById("canvas_" + id);
   var c  = document.getElementById("canvas_" + id);
   var msg = document.getElementById("chartmsg_" + id);
   var msg = document.getElementById("chartmsg_" + id);
Riga 59: Riga 60:
     var labels = csvToArray(ds.labels);
     var labels = csvToArray(ds.labels);


    // Usa camelCase per leggere i data-attributes
     var seriesDefs = [
     var seriesDefs = [
       { t: ds.series1Title, d: ds.series1Data, ty: ds.series1Type, c: ds.series1Color },
       { t: ds.series1Title, d: ds.series1Data, ty: ds.series1Type, c: ds.series1Color },
Riga 83: Riga 83:
     });
     });


    // Punto di equilibrio opzionale
     var eqx = Number(ds.eqx), eqy = Number(ds.eqy);
     var eqx = Number(ds.eqx), eqy = Number(ds.eqy);
     if(!isNaN(eqx) && !isNaN(eqy)){
     if(!isNaN(eqx) && !isNaN(eqy)){
Riga 103: Riga 102:
       data: { labels: labels, datasets: datasets },
       data: { labels: labels, datasets: datasets },
       options: {
       options: {
         responsive: truthy(ds.responsive),
         responsive: (ds.responsive||'true').toLowerCase() !== 'false',
         maintainAspectRatio: false,
         maintainAspectRatio: false,
         plugins: {
         plugins: {
           title:  { display: !!ds.title, text: ds.title },
           title:  { display: !!ds.title, text: ds.title },
           legend:  { display: truthy(ds.showLegend) },
           legend:  { display: (ds.showLegend||'true').toLowerCase() !== 'false' },
           tooltip: { enabled: true }
           tooltip: { enabled: true }
         },
         },
Riga 115: Riga 114:
             type: 'linear',
             type: 'linear',
             title: { display: true, text: ds.xTitle || 'Quantità di appartamenti' },
             title: { display: true, text: ds.xTitle || 'Quantità di appartamenti' },
             min: numOrUndef(ds.xmin), max: numOrUndef(ds.xmax)
             min: Number.isNaN(Number(ds.xmin)) ? undefined : Number(ds.xmin),
            max: Number.isNaN(Number(ds.xmax)) ? undefined : Number(ds.xmax)
           } : {
           } : {
             type: 'category',
             type: 'category',
Riga 122: Riga 122:
           y: {
           y: {
             title: { display: true, text: ds.yTitle || "Prezzo dell'affitto" },
             title: { display: true, text: ds.yTitle || "Prezzo dell'affitto" },
             min: numOrUndef(ds.ymin), max: numOrUndef(ds.ymax),
             min: Number.isNaN(Number(ds.ymin)) ? undefined : Number(ds.ymin),
            max: Number.isNaN(Number(ds.ymax)) ? undefined : Number(ds.ymax),
             beginAtZero: false
             beginAtZero: false
           }
           }
Riga 136: Riga 137:
})();
})();
</script>
</script>
{/literal}


<!--
<!--

Versione delle 17:23, 19 set 2025