У меня есть API, который возвращает данные в формате JSON, например:
[
{
"name":"Something",
"data":[
{
"x":1541096421,
"y":2
},{
"x":1541436378,
"y":4
},{
"x":1553621371,
"y":2
}
]
},{
"name":"Something else",
"data":[
{
"x":1541096421,
"y":2
},{
"x":1541436378,
"y":4
},{
"x":1553621371,
"y":2
}
]
}
]
Ось x представляет дату / время, а ось y - оценку.Он нанесен на диаграмму, подобную этой, с использованием некоторого форматирования для преобразования даты из метки времени в миллисекунды в читаемый формат даты:
function renderChart(data) {
$('#chartContainer').highcharts({
chart: {
type: 'scatter',
zoomType: 'xy'
},
title: {
text: chartTitle()
},
xAxis: {
allowDecimals: false,
title: {
text: 'Date completed',
scalable: false
},
type: 'datetime',
labels: {
formatter: function () {
if (true) {
return Highcharts.dateFormat('%d-%b-%y', moment.unix(this.value));
}
else {
if (this.value > 0 && this.value < 24) {
return this.value;
}
else
return 0;
}
}
},
tickPixelInterval: 100
},
yAxis: {
title: {
text: 'Score'
}
},
plotOptions: {
scatter: {
marker: {
radius: 5
}
}
},
series: data,
exporting: {
buttons: {
contextButton: {
menuItems: Highcharts.getOptions().exporting.buttons.contextButton.menuItems.filter(item => item !== 'openInCloud')
}
}
// Tried adding this but it doesn't make any difference:
/*,
csv: {
dateFormat: '%d/%m/%Y'
}*/
},
tooltip: {
formatter: function () {
return 'Score of <b>' + this.y + '</b> posted on <b>' + Highcharts.dateFormat('%d-%b-%y', moment.unix(this.x)) + '</b>';
}
}
});
}
Это прекрасно работает.Однако, когда я нажимаю «экспортировать в CSV» на графике Highchart во внешнем интерфейсе, он выводит файл CSV, где дата всегда отображается как «18/01/1970».Очевидно, это как-то связано с тем, что API возвращает значение метки времени, но я не понимаю, как я могу изменить формат в CSV, подобно тому, как это делается в коде рендеринга диаграммы.
МожетКто-нибудь посоветует, как (желательно без изменения данных, возвращаемых API), чтобы CSV вывел правильную дату в формате день / месяц / год?
Большое спасибо