Скрытие _групп_ серий в Highcharts и jQuery: как добиться приемлемой производительности?

Я использую Highcharts для представления групп временных рядов. Таким образом, точки данных, собранные от одного и того же человека, соединяются линиями, а точки данных от людей, принадлежащих к одной группе, имеют один и тот же цвет. Легенда Highcharts отображает каждый индивидуальный временной ряд вместо групп, а у меня их более сотни, так что скрывать и показывать данные таким образом некрасиво и непрактично.

Вместо этого я сделал кнопки и использовал jQuery, чтобы связать их с функциями, которые будут искать совпадающие цвета среди временных рядов и переключать видимость каждой совпадающей серии.

Вот пример с небольшим набором данных: http://jsfiddle.net/bokov/VYkmg/6/

Вот функция скрытия серий из этого примера:

$("#button").click(function() {
    if ($(this).hasClass("hideseries")) {
        hs = true;
    } else {
        hs = false;
    }
    $(chart.series).each(function(idx, item) {
        if (item.color == 'green') {
            if (hs) {
                item.show();
            } else {
                item.hide();
            }
        }
    });
    $(this).toggleClass("hideseries");
});

Вышеупомянутое работает. Проблема в том, что мои реальные данные могут иметь более сотни отдельных временных рядов, и похоже, что проверка цвета каждого ряда очень медленная. Итак, может ли кто-нибудь предложить более эффективный способ решения этой проблемы? Есть ли какие-то встроенные методы Highcharts, которые уже это делают? Или я могу дать jQuery более конкретный селектор?

Я попытался раскопаться в элементе , созданном Highcharts, но я не могу понять, какие дочерние элементы соответствуют серии в диаграмме.

Спасибо.

13
задан bokov 16 January 2012 в 03:57
поделиться