Я вызываю API на основе выбора списка и перерисовываю диаграмму рассеяния highcharts, используя данные, которые я получаю из вызова API. График состоит из 11 серий. У меня на графиках 600 точек данных. Диаграмма dr aws 600 точек данных при начальной загрузке без каких-либо проблем.
Но последующие вызовы API не перерисовывают 600 точек данных. Я получаю все данные из API, но количество точек данных, отображаемых на диаграмме, непоследовательно (оно случайное и меньше 600 точек данных). Файл кода огромен, я добавлю только необходимые блоки кода.
private drawHistoryForTools(histories: Map<string, Array<DhtToolHistory>>): void {
if (!this.globalConfiguration)
return;
histories.forEach((value, key, map) => {
this.drawToolHistory(value, key);
});
}
private drawToolHistory(histories: Array<DhtToolHistory>, chartSeriesId: string) {
let chartData = [];
for (let i = 0; i < histories.length; i++) {
let depth = histories[i].x;
let density = histories[i].y;
if (density && depth) {
chartData.push({
timestamp: histories[i].timestamp,
x: depth,
y: density
});
}
}
this.chart.get(chartSeriesId).setData(chartData, false);
}
При выборе я вызываю следующее:
self.drawHistoryForTools(toolsHistory);
self.chart.redraw();
Дополнительная информация введите описание изображения здесь
Ладно, копал глубже. Я заставил его работать, установив данные в пустой массив, а затем снова заполнив его. Проблема здесь в том, что я должен повторно визуализировать диаграмму с пустыми данными и обновить серию новыми данными. Есть узкое место, так как у меня 5 серия. Есть ли способ лучше?
this.chart.get (chartSeriesId) .setData ([], true); this.chart.get (chartSeriesId) .setData (chartData, false);