Highcharts - 动态获取可见的系列名称

时间:2016-12-27 19:22:03

标签: javascript php highcharts twig symfony

我想创建一个函数,它将Highchart实例中的所有可见系列名称动态发送到PHP函数。 例如,在此图表中,我想获得此数组:[Salle,PR]。 如果我点击互联网,系列就会变得可见,我想获得[Salle,Internet,PR]。

为此,我尝试使用legendItemClick事件并创建一个函数来检查每个系列是否可见以将其添加到数组中,但我无法弄清楚如何使用visible选项来执行此操作。 / p>

你有什么想法吗?

截至目前,我没有太多代码要分享:

plotOptions: {
        series: {
            events: {
                legendItemClick: function(){

                }
            }
        }
    }

enter image description here

1 个答案:

答案 0 :(得分:5)

如果您保留指向图表的指针,请执行以下操作:

var ch = Highcharts.chart(_chart_data_);

然后您可以访问整个图表结构。你会感兴趣的是系列阵列。

ch.series[]

它包含所有系列的数组。可见属性设置为true的系列是当前显示的系列。所以,它可能是这样的:

var ch = Highcharts.chart(...

plotOptions: {
        series: {
            events: {
                legendItemClick: function(){
                   ch.series.forEach(function(sr){
                         if(sr.visible){
                            console.log(sr.name, "visible!");
                         }
                   });
                }
            }
        }
    }

...);

但是,您的方法有一个问题,即在实际图例上单击您当前的图例操作尚未处理。因此,您将看到的输出是当前单击之前的前一状态的输出。

因此,您可以尝试使用setTimeout在应用事件后获取您的商家信息:

         events: {
            legendItemClick: function(){
               setTimeout(
                  function(){ 
                      ch.series.forEach(
                          function(sr){
                              if(sr.visible){
                                 console.log(sr.name, "visible!");
                              }
                           }
                       )
                    },20);
                }
            }

尝试此操作并检查控制台日志:http://jsfiddle.net/op8142z0/