Я создаю веб-сайт валютного кошелька, и на домашней странице я хотел разместить график со значением Bitcoin в долларах США, обновляемым каждую минуту. Я получил диаграмму, значение bitcoin, значения вставляются, но я хочу, чтобы всякий раз, когда в моем графике есть 21 набор данных, я хочу удалить первый и добавить другой в конце. Поэтому каждый раз я хочу иметь 20 наборов данных. Например, когда у меня есть, скажем, 2 набора данных, один со временем 16:40:00 и второй со временем 16:41:00, тогда, когда другой должен go на графике, я хочу удалить это 16:40: 00 и добавьте 16:42:00, чтобы на графике было 2 набора данных: 16:41:00 и 16:42:00. Но я не могу понять, как это делать. Я пробовал несколько раз, но каждый раз, даже когда я удалял первый набор данных, длина массива все равно увеличивалась.
Вот мой код JavaScript (обновление диаграммы происходит в первом интервале, вот где проблема):
var index = 1;
var data = [];
var labels = [];
var ctx = document.getElementById('myChart').getContext('2d');
var curDate;
function pad(value) {
if(value < 10) {
return '0' + value;
} else {
return value;
}
}
var req = new XMLHttpRequest();
req.open('GET', 'https://blockchain.info/ticker', false);
req.send(null);
if(req.status == 200)
data[0] = JSON.parse(req.responseText).USD.last;
curDate = new Date();
labels[0] = pad(curDate.getHours()) + ":" + pad(curDate.getMinutes()) + ":" + pad(curDate.getSeconds());
setInterval(function() {
req.open('GET', 'https://blockchain.info/ticker', false);
req.send(null);
if(req.status == 200) {
if(data.length < 20) {
data[index] = JSON.parse(req.responseText).USD.last;
curDate = new Date();
labels[index] = pad(curDate.getHours()) + ":" + pad(curDate.getMinutes()) + ":" + pad(curDate.getSeconds());
index++;
} else {
myChart.data.labels.splice(1);
myChart.data.datasets.data.splice(1);
data[index] = JSON.parse(req.responseText).USD.last;
curDate = new Date();
labels[index] = pad(curDate.getHours()) + ":" + pad(curDate.getMinutes()) + ":" + pad(curDate.getSeconds());
index++;
}
console.log(data);
console.log(labels);
myChart.update();
}
}, 1000);
var myChart = new Chart(ctx, {
"type": "line",
"data": {
"labels": labels,
"datasets": [{
"label": "Bitcoin worth in USD",
"data": data,
"fill": false,
"borderColor": "rgb(255, 255, 255)",
"lineTension": 0
}]
},
"options": {
"responsive": true,
"scales": {
"xAxes": [{
gridLines: {
display: false
},
}],
"yAxes": [{
gridLines: {
color: "#666666"
},
}]
}
}
});