I am designing a dashboard where i need to pass labels and data to my chart from django views to Variables in Java Script. This below code is not displaying lables or data in chart.
when i pass values directly into JS it works. But when same values passed through views.py it throws error in console like : ( jQuery.Deferred exception: Cannot read properties of null (reading 'getContext') TypeError: Cannot read properties of null (reading 'getContext'))
Django Views
def chartd(request):
labelss=["JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC"]
datas = [170, 123, 125, 90, 92, 70, 75, 60, 90, 80, 110, 100]
context = {"labelss": mark_safe(json.dumps(labelss)), "datas": mark_safe(json.dumps(datas))}
return render(request, 'charts.html',context)
Java Script for charts.html
var chart_labels =JSON.parse('{{labelss}}');
var chart_data =JSON.parse('{{datas}}');
var ctx = document.getElementById("chartBig1").getContext('2d');
var gradientStroke = ctx.createLinearGradient(0, 230, 0, 50);
gradientStroke.addColorStop(1, 'rgba(72,72,176,0.1)');
gradientStroke.addColorStop(0.4, 'rgba(72,72,176,0.0)');
gradientStroke.addColorStop(0, 'rgba(119,52,169,0)'); //purple colors
var config = {
type: 'line',
data: {
labels: chart_labels,
datasets: [{
label: "My First dataset",
fill: true,
backgroundColor: gradientStroke,
borderColor: '#d346b1',
borderWidth: 2,
borderDash: [],
borderDashOffset: 0.0,
pointBackgroundColor: '#d346b1',
pointBorderColor: 'rgba(255,255,255,0)',
pointHoverBackgroundColor: '#d346b1',
pointBorderWidth: 20,
pointHoverRadius: 4,
pointHoverBorderWidth: 15,
pointRadius: 4,
data: chart_data
}]
}
options: gradientChartOptionsConfigurationWithTooltipPurple
};
var myChartData = new Chart(ctx, config);
$("#0").click(function() {
var data = myChartData.config.data;
data.datasets[0].data = chart_data;
data.labels = chart_labels;
myChartData.update();
});
$("#1").click(function() {
var chart_data = [80, 120, 105, 110, 95, 105, 90, 100, 80, 95, 70, 120];
var data = myChartData.config.data;
data.datasets[0].data = chart_data;
data.labels = chart_labels;
myChartData.update();
});
$("#2").click(function() {
var chart_data = [60, 80, 65, 130, 80, 105, 90, 130, 70, 115, 60, 130];
var data = myChartData.config.data;
data.datasets[0].data = chart_data;
data.labels = chart_labels;
myChartData.update();
});
