如何在 Highcharts / Highstocks 中 select 列(跨更多窗格)

How to select columns (across more panes) in Highcharts / Highstocks

我有这个例子:http://jsfiddle.net/qzprvohr/1/

我想要实现的目标 - 如果我点击(仅一次)某列,我需要 select 所有具有相同 x 轴值的列。目前它只适用于点击的一个,其余的是 unselected。也有可能为 selected 列(不是列本身)使用一些背景颜色。 xAxis.crosshair.color & xAxis.crosshair.width 之类的东西用于悬停状态。

我对所有列 select 进行了类似的尝试(但它无法正常工作):

plotOptions: {        
              series: {
                      allowPointSelect: true,
                      cursor: 'pointer',
                      point: {
                             events: {
                                    click: function (event)
                                    {
                                        var selectedCategory = this.category;
                                        var chart = this.series.chart;
                                        for (var i = 0; i < chart.series.length; i++)
                                        {
                                            for (var j = 0; j < chart.series[i].data.length; j++)
                                            {
                                                if (typeof chart.series[i].data[j] !== "undefined" &&
                                                    chart.series[i].data[j].category == selectedCategory)
                                                {
                                                    chart.series[i].data[j].select(true, true);

                                                }
                                            }
                                        }
                                    }
                                }
                            }}}

我试了一下这个例子,我想我找到了解决方案。如果我使用 setTimeout 函数进行选择,那么所有选中的列都将保持选中状态。我还使用 plotBands 作为另一种背景颜色。此处示例:http://jsfiddle.net/qzprvohr/2/

plotOptions: {
            series: {
                allowPointSelect: true,
                cursor: 'pointer',
                point: {
                    events: {
                        click: function (event) {
                            var clickedPoint = this;
                            setTimeout(function () {
                                var selectedCategory = clickedPoint.category;
                                var chart = clickedPoint.series.chart;
                                for (var i = 0; i < chart.series.length; i++) {
                                    for (var j = 0; j < chart.series[i].data.length; j++) {
                                        if (typeof chart.series[i].data[j] !== "undefined" &&                                                       chart.series[i].data[j].category == selectedCategory) {
                                            chart.series[i].data[j].select(true, true);
                                            chart.xAxis[i].removePlotBand('selection' + i)
                                            chart.xAxis[i].addPlotBand({
                                                color:'red',
                                                from: selectedCategory - 40000000,
                                                to: selectedCategory + 40000000,
                                                id: 'selection'+i
                                            });
                                        }
                                    }
                                }
                            }, 0);
                        }
                    }
                }
            }
        }