Точки данных, исчезающие на высоких диаграммах, перерисовываются в приложении Angular 6 - PullRequest
0 голосов
/ 13 июля 2020

Я вызываю 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);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...