Highcharts shared tooltip between charts with multiple series and shared tooltip

前端 未结 1 1839
小蘑菇
小蘑菇 2021-01-07 00:25

I\'m trying to set shared tooltip between charts. It works nice only if tooltip doesn\'t have shared: true, if I set shared: true I get error:

相关标签:
1条回答
  • 2021-01-07 01:22

    The problem occurs because you have shared: true on one chart, while having it default (false) on the other. This is a problem because the tooltip.refresh method will take different paths and use the input differently based the chart having shared set to true or false.

    You can find this branching in the source code on line 8806, for the tooltip.refresh method:

    // shared tooltip, array is sent over
    if (shared && !(point.series && point.series.noSharedTooltip)) {
        ....
    }
    // single point tooltip
    else {
        ....
    }
    

    You can handle this by doing a branching inside your syncTooltip method to handle the different cases like this (example JFiddle):

    function syncTooltip(container, p) {
        var i = 0;
        for (; i < charts.length; i++) {
            if (container.id != charts[i].container.id) {
                if(charts[i].tooltip.shared) {
                    charts[i].tooltip.refresh([charts[i].series[0].data[p]]);
                }
                else {
                    charts[i].tooltip.refresh(charts[i].series[0].data[p]);
                }
            }
        }
    }
    

    This way you can freely set shared to true or false on both charts.

    Unfortunately your plotOptions.series.point.events.mouseOver-event doesn't capture points that are "selected" through the shared: true functionality, so you will have to find an alternate event to properly capture this situation.

    0 讨论(0)
提交回复
热议问题