Довольно старая ветка, но информация по-прежнему полезна.
Как отметил @Alvara, в сотнях серий использование .hide()
или .show()
довольно медленное (браузер останавливается несколько секунд).
Использование setVisible(false, false)
и setVisible(true, false)
намного быстрее:
legendItemClick: function (event) {
if (!this.visible) return true;
const series = this.chart.series;
const serieLen = series.length;
if (series.filter(s => s.visible).length === 1) {
for (let i = 0; i < serieLen; i += 1) {
series[i].setVisible(true, false);
}
} else {
for (let i = 0; i < serieLen; i += 1) {
series[i].setVisible(false, false);
}
series[this.index].setVisible(true, false);
}
return false;
};
Даже в больших сериях он работает мгновенно.
Использование .show().hide()
для серии +50 уже занимает более 2 секунд для переключения видимой серии (https://jsfiddle.net/rockshappy/nL5j2rLa/5/)
Здесь использование setVisible
происходит мгновенно (https://jsfiddle.net/rockshappy/nL5j2rLa/2/)