Используя Chart.js с включенным масштабированием / панорамированием, я пытаюсь написать функцию для экспорта в CSV только того, что видно на холсте.
Но я не могу понять, как получить только видимые точки данныхпосле того, как пользователь увеличит / увеличит изображение.
Я знаю, что могу просто посмотреть на myChart.data.datasets
, но при этом будут выбраны все точки на графике, а не только видимые в данный момент.
var config = {
type: 'line',
data: {
// data is from API call
}
pan: {
enabled: true,
mode: 'xy'
},
zoom: {
enabled: true,
mode: 'xy'
},
bezierCurve : false
}
};
var ctx = document.getElementById('myChart').getContext('2d');
window.myChart = new Chart(ctx, config);
$('#exportTheseRunsToCSV').on('click', function() {
// something like myChart.getVisibleDataPoints() ???
console.log(chart)
console.log(chart.data.datasets)
});
Должен быть какой-то внутренний вызов API для получения видимых точек, так как у меня также есть функция для экспорта текущих видимых точек в PNG, которая захватывает только то, что в данный момент нарисовано на холсте:
<a id="exportTheseRuns" class="text-white" href="#" download="image.png" download><i class="fas fa-download"></i> Export to PNG</a>
$('#exportTheseRuns').on('click', function() {
$('#exportTheseRuns').attr('href', myChart.toBase64Image());
})
Кажется, что функция .toBase64Image()
внутренне выполняет то, что я ищу, поскольку она захватывает только видимые точки, но затем возвращает URI Base64, который я не могу использовать для своей функции arrayToCSV
.