Sto usando le schede di bootstrap con i grafici chartjs all'interno di ogni scheda.ChartJS non disegnerà il grafico all'interno della scheda bootstrap fino al ridimensionamento della finestra
Un problema che si è verificato è che la tela del grafico non verrà disegnata prima di ridimensionare la finestra del browser. E questo sta accadendo in entrambe le ultime versioni di Chrome e Firefox.
Ho provato diverse soluzioni come disegnare il grafico dopo che la scheda è stata modificata ma senza risultati.
Purtroppo non è stato possibile duplicare il problema in jsfiddle, in qualche modo sembra funzionare lì. Ma c'è praticamente tutto il codice, oltre al boiler html5.
Qualcuno sa forse perché questo comportamento si verifica? Grazie!
/**
* ChartJS using JSON data and moment.js for time display
* Code is quite ugly due to experimentation
*/
function getJSON(){
$.getJSON("data.json", function(data){
var dataArray = [];
console.log(data);
var series = {};
for (var x in data.Series) {
var dates = [];
var values = [];
// Loop across all the measurements for every serie.
for (var i = 0; i < data.Series[x].length; i++) {
var obj = data.Series[x][i];
dates.push(moment(obj.Date).format("MMMM Mo"));
values.push(obj.Value);
}
// Keep the list of dates and values by serie name.
series[x] = {
dates: dates,
values: values
};
}
//some debug stuff
console.log(series.height.dates);
console.log(series.height.values);
var dataArray = {
labels: series.height.dates,
datasets: [
{
label: "Height",
strokeColor: "rgb(26, 188, 156)",
pointColor: "rgba(220,220,220,1)",
pointStrokeColor: "#fff",
pointHighlightFill: "#fff",
pointHighlightStroke: "rgba(220,220,220,1)",
data: series.height.values
}
]
};
function chartFunc(dataArray) {
var ctx = document.getElementById("heightChart").getContext("2d");
var myLineChart = new Chart(ctx).Line(dataArray, {
scaleShowGridLines : true,
bezierCurve : true,
bezierCurveTension : 0.4,
datasetStroke : false,
fillColor: "rgba(0,0,0,0)",
datasetFill : false,
responsive: true,
showTooltips: true,
animation: false,
});
} //chartFunc
chartFunc(dataArray);
}); //JQ getJSON
}//getJSON
$(document).ready(function() {
getJSON();
$(document).on('shown.bs.tab', 'a[data-toggle="tab"]', function (e) {
console.log("TAB CHANGED");
});
});
http://jsfiddle.net/woqsazau/1/
Invece di 'console.log (" TAB CHANGED ");', è necessario chiamare qualunque "ridisegno" della libreria di grafici soddisfatta Hod è. – cvrebert
Ciao @carl ho lo stesso problema, potresti averlo risolto? Grazie –
Hey @AgustinHaller Mi dispiace dire che non l'ho ancora risolto. Attualmente sto lavorando ad altri progetti. – Carl