Во-первых, оператор загрузки Google будет ждать загрузки страницы по умолчанию.
, поэтому используйте -> google.charts.load
вместо -> $(document).ready
Как только Google загрузится, создайте диаграмму, параметры и настройте событие выбора изменения.
при условии, что данные ajax имеют следующий формат,
[
['Effort', 'Amount given'],
['Mastered', 80],
['Acquired', 40],
['Under Acquisition', 40],
['Needs More Practice', 20],
['Not started', 20],
]
см. Следующий фрагмент ...
google.charts.load('current', {
packages: ['corechart']
}).then(function () {
var chart = new google.visualization.PieChart(document.getElementById('donutchart'));
var options = {
tooltip: {
trigger: 'none'
},
pieSliceText: "none",
enableInteractivity: false,
pieHole: 0.7,
pieSliceTextStyle: {
color: 'black',
},
slices: {
0: {
color: '#009487'
},
1: {
color: '#88C157'
},
2: {
color: '#FFEA55'
},
3: {
color: '#FF972D'
},
4: {
color: '#FA463D'
}
}
};
$('#class').on('changed.bs.select', function (e, clickedIndex, newValue, oldValue) {
var selected = $(e.currentTarget).val();
if (selected > 0) {
drawChart(selected);
}
});
function drawChart(selected) {
$.ajax({
url: '/reports/?classId=' + selected + '&type=progress',
type: 'get',
dataType: 'html',
beforeSend: function () {
}
}).done(function (learnerProgress) {
var data = google.visualization.arrayToDataTable(learnerProgress);
chart.draw(data, options);
}).fail(function (jqXHR, ajaxOptions, thrownError) {
});
}
// on page load
drawChart($('#class').val());
});
примечание: следующее не нужно, это оператор загрузки из старой версии.
google.load('visualization', '1', options);