Есть функция рисования графика использующая chart.js. По оси x расположены даты, для этого используется moment.js. Хочу написать функцию обновляющую график. Данные по оси y обновляются без проблем, но данные по оси y - нет. Не изменяются максимальная и минимальная даты. Выдает ошибку.
var mainChart;
function draw(type, title, start_date, end_date) {
function arrayFill(values, consumed_values) {
for (var i = 0; i < consumed_values.length; i++) {
values[i] = consumed_values[i].innerHTML;
}
}
var date = new Array;
var i = 0;
date[i] = new Date(moment(start_date).add(1, 'days'));
do {
date[i + 1] = new Date(moment(date[i]).add(1, 'days'));
i++;
} while (date[i] < end_date);
var values = new Array;
arrayFill(values, document.querySelectorAll('ul.values.' + type + ' li'));
var resultData = {
labels: date,
datasets: [{
label: title,
fontSize: 18,
backgroundColor: 'rgba(184,202,222,0.9)',
borderColor: 'rgba(37,78,136, 1)',
data: values
}]
};
var options = {
responsiveAnimationDuration: 1000,
scales: {
yAxes: [{
scaleLabel: {
display: true,
labelString: 'Расход',
fontSize: 17
},
ticks: {
beginAtZero: true
}
}],
xAxes: [{
type: 'time',
time: {
min: start_date,
max: end_date
}
}]
},
legend: {
display: false
},
title: {
display: true,
text: title,
fontSize: 19
}
};
var canvas = document.querySelector('canvas#canvas');
var ctx = canvas.getContext('2d');
mainChart = new Chart(ctx, {
type: 'bar',
data: resultData,
options: options
});
}
function redraw() {
var value = document.getElementById('time_calendar').value;
var new_start_date = value.slice(0,8);
new_start_date = new Date(moment(new_start_date, 'DD.MM.YY'));
var new_end_date = value.slice(10);
new_end_date = new Date(moment(new_end_date, 'DD.MM.YY'));
var new_date = new Array;
var i = 0;
new_date[i] = new Date(moment(new_start_date).add(1, 'days'));
do {
new_date[i + 1] = new Date(moment(new_date[i]).add(1, 'days'));
i++;
} while (new_date[i] < new_end_date);
console.log(new_start_date); //дата выводится нормально
console.log(new_end_date); //дата выводится нормально
mainChart.data.labels = new_date; //работает
mainChart.options.scales.xAxes.time.min = new_start_date; //не работает
mainChart.options.scales.xAxes.time.max = new_end_date; //не работает
mainChart.update();
}
Как изменить максимальную и минимальную даты корректно?
Сборка персонального компьютера от Artline: умный выбор для современных пользователей