code: function drawLinearArrowNeedle(context, options, sX, sY, eX, eY, length,
                                 isRight)
  {
      //noinspection JSUnresolvedFunction
      let peakLength = round(length * 0.4);
      let bodyLength = length - peakLength;
      let isVertical = sX === eX;
      let halfWidth = options.needleWidth / 2;
  
      context.fillStyle = needleStyle(context, options, length, isRight);
  
      context.beginPath();
  
      if (isVertical) {
          if (sY > eY) bodyLength *= -1;
  
          context.moveTo(sX - halfWidth, sY);
          context.lineTo(sX + halfWidth, sY);
          context.lineTo(sX + halfWidth, sY + bodyLength);
          context.lineTo(sX, eY);
          context.lineTo(sX - halfWidth, sY + bodyLength);
          context.lineTo(sX - halfWidth, sY);
      }
  
      else {
          if (sX > eX) bodyLength *= -1;
  
          context.moveTo(sX, sY - halfWidth);
          context.lineTo(sX, sY + halfWidth);
          context.lineTo(sX + bodyLength, sY + halfWidth);
          context.lineTo(eX, sY);
          context.lineTo(sX + bodyLength, sY - halfWidth);
          context.lineTo(sX, sY - halfWidth);
      }
  
      context.fill();
      context.closePath();
  }
docs: /* istanbul ignore next: private, not testable 
  Draws arrow needle shape
  
  @access private
  @param {Canvas2DContext} context
  @param {LinearGaugeOptions} options
  @param {number} sX
  @param {number} sY
  @param {number} eX
  @param {number} eY
  @param {number} length
  @param {boolean} [isRight]