Highcharts Demo

author(s): Torstein Hønsi

by anikettiwari

HTML

<script src="https://code.highcharts.com/highcharts.js"></script>

<div id="container"></div>

JavaScript

(function(H) {
  var each = H.each,
    addEvent = H.addEvent,
    pick = H.pick,
    charts = H.charts;

  H.wrap(H.Pointer.prototype, 'runPointActions', function(proceed, e, p) {
    var pointer = this,
      chart = pointer.chart,
      series = chart.series,
      tooltip = chart.tooltip,
      shared = tooltip ? tooltip.shared : false,
      hoverPoint = p || chart.hoverPoint,
      hoverSeries = hoverPoint && hoverPoint.series || chart.hoverSeries,
      // onMouseOver or already hovering a series with directTouch
      isDirectTouch = !!p || (
        (hoverSeries && hoverSeries.directTouch) &&
        pointer.isDirectTouch
      ),
      hoverData = this.getHoverData(
        hoverPoint,
        hoverSeries,
        series,
        isDirectTouch,
        shared,
        e
      ),
      useSharedTooltip,
      followPointer,
      anchor,
      points;
    // Update variables from hoverData.
    hoverPoint = hoverData.hoverPoint;
    points = hoverData.hoverPoints;
    hoverSeries = hoverData.hoverSeries;
    followPointer = hoverSeries && hoverSeries.tooltipOptions.followPointer;
    useSharedTooltip = shared && hoverSeries && !hoverSeries.noSharedTooltip;

    // Refresh tooltip for kdpoint if new hover point or tooltip was hidden
    // #3926, #4200
    if (
      hoverPoint &&
      // !(hoverSeries && hoverSeries.directTouch) &&
      (hoverPoint !== chart.hoverPoint || (tooltip && tooltip.isHidden))
    ) {
      each(chart.hoverPoints || [], function(p) {
        if (H.inArray(p, points) === -1) {
          p.setState();
        }
      });
      // Do mouseover on all points (#3919, #3985, #4410, #5622)
      each(points || [], function(p) {
        p.setState('hover');
      });
      // set normal state to previous series
      if (chart.hoverSeries !== hoverSeries) {
        hoverSeries.onMouseOver();
      }

      // If tracking is on series in stead of on each point, 
      // fire mouseOver on hover point. // #4448
      if...