score:1

Accepted answer

All the blue lines are created by one svg path element. The only way to change a navigator outline is to wrap the function responsible for drawing it and change its path.

For example:

(function(H) {
  H.wrap(H.Navigator.prototype, 'drawOutline', function(procced, zoomedMin, zoomedMax, inverted, verb) {
    var navigator = this,
      maskInside = navigator.navigatorOptions.maskInside,
      outlineWidth = navigator.outline.strokeWidth(),
      halfOutline = outlineWidth / 2,
      outlineCorrection = (outlineWidth % 2) / 2, // #5800
      outlineHeight = navigator.outlineHeight,
      scrollbarHeight = navigator.scrollbarHeight,
      navigatorSize = navigator.size,
      left = navigator.left - scrollbarHeight,
      navigatorTop = navigator.top,
      verticalMin,
      path;

    if (inverted) {
      left -= halfOutline;
      verticalMin = navigatorTop + zoomedMax + outlineCorrection;
      zoomedMax = navigatorTop + zoomedMin + outlineCorrection;

      path = [
        'M',
        left + outlineHeight,
        navigatorTop - scrollbarHeight - outlineCorrection, // top edge
        'L',
        left + outlineHeight,
        verticalMin, // top right of zoomed range
        'L',
        left,
        verticalMin, // top left of z.r.
        'L',
        left,
        zoomedMax, // bottom left of z.r.
        'L',
        left + outlineHeight,
        zoomedMax, // bottom right of z.r.
        'L',
        left + outlineHeight,
        navigatorTop + navigatorSize + scrollbarHeight // bottom edge
      ].concat(maskInside ? [
        'M',
        left + outlineHeight,
        verticalMin - halfOutline, // upper left of zoomed range
        'L',
        left + outlineHeight,
        zoomedMax + halfOutline // upper right of z.r.
      ] : []);
    } else {
      zoomedMin += left + scrollbarHeight - outlineCorrection;
      zoomedMax += left + scrollbarHeight - outlineCorrection;
      navigatorTop += halfOutline;

      path = [
        'M',
        zoomedMin,
        navigatorTop, // upper left of zoomed range
        'L',
        zoomedMin,
        navigatorTop + outlineHeight, // lower left of z.r.
        'L',
        zoomedMax,
        navigatorTop + outlineHeight, // lower right of z.r.
        'L',
        zoomedMax,
        navigatorTop, // upper right of z.r.
      ].concat(maskInside ? [
        'M',
        zoomedMin - halfOutline,
        navigatorTop, // upper left of zoomed range
        'L',
        zoomedMax + halfOutline,
        navigatorTop // upper right of z.r.
      ] : []);
    }
    navigator.outline[verb]({
      d: path
    });

  });
}(Highcharts));

Live example: https://jsfiddle.net/BlackLabel/Lrgok19a/

Useful thread: https://www.highcharts.com/forum/viewtopic.php?t=41155


Related Query