Salve, ho un problema con 2 array, nonostante vengano dichiarati credo in maniera giusta, quando cerco di recuperare i valori, risultano vuoti.Gli array da prendere in esame sono "articoliPiuConsumati" e "totQuantita", li dichiaro all' interno di setResHtml ma come già detto quando cerco di recuperare il loro valore all' interno di <script> tramite "JSON.stringify"essi risultano vuoti.
Grazie a chi risponderà dedicandomi il suo tempo prezioso.
const http = require('http');
var BlueBird = require('bluebird')
const mysql = require('mysql');
var Chart = require('chart.js');
const connection = mysql.createConnection({
host: '127.0.0.1',
user: 'andrea',
password: 'password',
database: 'spesa',
charset: 'utf8'
});
//html string that will be send to browser
var template ="<html><head><title>Grafici Analisi Spesa</title><script src='https://cdnjs.cloudflare.com/ajax/libs/Chart.js/1.0.2/Chart.min.js'></script></head><body><h1>Grafici Analisi Spesa</h1>{${table}}</body></html>";
var sqlQueryArticoliPiuConsumati ='SELECT articolo,SUM(quantita)as quantita FROM registro GROUP BY articolo ORDER BY SUM(quantita) DESC LIMIT 0, 20';
var sqlQueryDoveSiSpendeDiPiu ='SELECT articolo,SUM(costo)as costo FROM registro GROUP BY articolo ORDER BY SUM(costo) DESC LIMIT 0, 20';
function setResHtml(sql1, sql2, cb){
var table = '';
var articoliPiuConsumati = new Array();
var totQuantita = new Array();
db = BlueBird.promisifyAll(connection);
db.queryAsync(sql1).then(function(rows){
for (let i = 0; i < rows.length; i++) {
articoliPiuConsumati.push(rows[i].articolo);
totQuantita.push(rows[i].quantita);
//console.log(articoliPiuConsumati[i] + " " + totQuantita[i]);
};
});
table = `<canvas id="piuConsumatiChart" width="600" height="400" ></canvas>`;
table += `<script>
console.log(${JSON.stringify(articoliPiuConsumati)});
var barDataPiuConsumati = {
labels : ${JSON.stringify(articoliPiuConsumati)},
datasets : [
{
fillColor : "rgba(73,188,170,0.4)",
strokeColor : "rgba(72,174,209,0.4)",
data : ${JSON.stringify(totQuantita)}
}
]
}
// get bar chart canvas
var piuConsumatiChart = window.document.getElementById("piuConsumatiChart").getContext("2d");
// draw bar chart
new Chart(piuConsumatiChart).Bar(barDataPiuConsumati);
</script>`;
/*
table = `<canvas id="piuConsumatiChart" width="600" height="400" ></canvas>`;
table += `<script>
var barDataPiuConsumati = {
labels : ['1', '2', '3', '4'],
datasets : [
{
fillColor : "rgba(73,188,170,0.4)",
strokeColor : "rgba(72,174,209,0.4)",
data : [1, 2, 3, 4]
}
]
}
// get bar chart canvas
var piuConsumatiChart = window.document.getElementById("piuConsumatiChart").getContext("2d");
// draw bar chart
new Chart(piuConsumatiChart).Bar(barDataPiuConsumati);
</script>`;
*/
//console.log("table="+table);
cb(table);
};
//create the server for browser access
//resql è il parametro che si passa alla funzione di callback nel nostro caso diventerà "table"
const server = http.createServer((req, res)=>{
setResHtml(sqlQueryArticoliPiuConsumati, sqlQueryDoveSiSpendeDiPiu, resql=>{
reo = template.replace('{${table}}', resql);
res.writeHead(200, {'Content-Type':'text/html; charset=utf-8'});
res.write(reo, 'utf-8');
res.end();
});
}).listen(8081);