高图的高效多图表拖动选择

时间:2017-06-15 13:01:46

标签: javascript jquery charts highcharts

我使用了Highcharts文档来为图表启用拖动选择。我正在尝试扩展这个,以便我在第一个图表上选择的任何点,也将在页面上的其他图表上选择(x轴匹配)。

我找到了一种方法来做到这一点,&它适用于页面上的2或3个高图,但当我选择多个点(每个图表总共约1500个点)和4个或更多的高图时,它会有一些严重的延迟。 这可能是因为我使用嵌套for循环,但我想知道是否有人提出了提高此代码效率的任何提示(或者甚至是这个问题)。第一个功能是Highcharts文档中提供的功能;第二个函数(updateCharts())是我做的那个。

我以前从未使用过高级图表,或者之前在javascript中进行了大量编程,所以我对这一切的工作方式还有点不熟悉。

function selectPointsByDrag(e) {

    // Select points
    Highcharts.each(this.series, function (series) {
        Highcharts.each(series.points, function (point) {
            if (point.x >= e.xAxis[0].min && point.x <= e.xAxis[0].max &&
                    point.y >= e.yAxis[0].min && point.y <= e.yAxis[0].max) {
                point.select(true, true);
            }
        });
    });

    // Fire a custom event
    Highcharts.fireEvent(this, 'selectedpoints', { points: this.getSelectedPoints() });
    updateCharts(this);

    return false; // Don't zoom
};

function updateCharts(curr_chart){

    var count;
    var counter;
    var allChartArray = [chart, chart1, chart2, chart3];
    var indexOfCurrentChart = allChartArray.indexOf(curr_chart);

    if (indexOfCurrentChart > -1) {
        allChartArray.splice(indexOfCurrentChart, 1);
    };

    bla = curr_chart.getSelectedPoints();

    for(count = 0; count < allChartArray.length; count++){
        for(counter = 0; counter < bla.length; counter++){
            allChartArray[count].series[0].data[bla[counter].index].select(true, true)
        };
    };

};

0 个答案:

没有答案