Как я могу обновить общее значение диаграммы в обратном вызове legendItemClick? - PullRequest
4 голосов
/ 05 декабря 2011

Название практически говорит само за себя.Вот изображение с объяснением того, что я хочу.

on series

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

  plotOptions: {
    series: {
        events: {
            legendItemClick: function(event) {
              // if visible, sum == 0, because this series will be hidden
              // if hidden, sum == total, because this series will be shown
              var sum = (this.visible ? this.data[0].stackTotal : 0),
                  index = this.index;
              $.each(this.chart.series, function(){
                if (this.visible && this.index != index) {
                    sum += this.data[0].stackTotal;
                }
              });
              $('.chart_total', '#doc_chart').text(sum);
            }
        }
    }
  },

Как я могу сделать так, чтобы на графике отображалась правильная сумма?

1 Ответ

6 голосов
/ 05 декабря 2011

Посмотрите, выполняет ли этот пример на jsfiddle то, что вы ищете.

При нажатии legendItem обработчик начинается с chartTotal = 0, затем он проходит по каждой сериина диаграмме.

Если текущий цикл в цикле равен , а не тот, на котором нажали (проверено с помощью series.index), то он вычисляет seriesTotal и добавляет его к chartTotal только если он виден .

В противном случае, если текущая серия - это , которая нажала , то она добавляет seriesTotal к chartTotal , только если она будет видимой .

Наконец, он обновляет дисплей со значением chartTotal.

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