Я думаю, что было бы лучше добавить две вкладки с именами ежемесячно и ежегодно, чтобы пользователь мог легко щелкнуть по вкладке, чтобы изменить представления.Например, при просмотре по месяцам будет слишком сложно показывать все месяцы на одном графике (я думаю, что это будет беспорядок с данными), вы должны делать это только с одним месяцем.Просто добавьте datetimepicker только с месяцами (то же самое для лет), при изменении вы можете вызвать функцию, которая также изменит график (см. Здесь, как она работает https://www.tutorialspoint.com/How-does-jQuery-Datepicker-onchange-event-work). Также вы можете установить диапазон лет.
Итак, теперь, когда у вас есть функция, которая будет изменять диаграмму, просто измените данные, получив выбранный месяц, и ваши данные за этот месяц. Есть функция обновления, которую вы можете вызвать, когда обновите данные, и она изменит диаграмму (см. Документы:https://www.chartjs.org/docs/latest/developers/updates.html).
Вот пример кода для добавления нового набора данных к существующей диаграмме, нажав кнопку:
document.getElementById('addDataset').addEventListener('click', function() {
var colorName = colorNames[barChartData.datasets.length % colorNames.length];
var dsColor = window.chartColors[colorName];
var newDataset = {
label: 'Dataset ' + (barChartData.datasets.length + 1),
backgroundColor: color(dsColor).alpha(0.5).rgbString(),
borderColor: dsColor,
borderWidth: 1,
data: []
};
for (var index = 0; index < barChartData.labels.length; ++index) {
newDataset.data.push(randomScalingFactor());
}
barChartData.datasets.push(newDataset);
window.myBar.update();
});