Highcharts Tooltip Показать стрелку / каретку, когда флаг followPointer включен - PullRequest
0 голосов
/ 03 мая 2018

Я пытаюсь, чтобы на декартовых диаграммах Highcharts была отображена каретка / стрелка на моей подсказке, несмотря на то, что followPointer включено.

При чтении документов один из способов показать каретку - отключить followPointer. Тем не менее, для моего использования было бы идеально, если бы я мог включить его для всех ситуаций.

Я попытался проверить исходный код всплывающих подсказок здесь , чтобы увидеть, как реализован код followPointer, возможно, он немного подскажет, есть ли флаг, который включает или выключает стрелку, но это не не похоже, что я могу найти что-нибудь из этого рода.

Если вам нужно, вот скрипка, с которой можно поиграться: http://jsfiddle.net/Malinga/oo2njkhs/2/

1 Ответ

0 голосов
/ 03 мая 2018

Я нашел ответ здесь

Вам необходимо переопределить метод move, реализованный в Highcharts, чтобы установить skipAnchor в false.

(function(H) {
  H.wrap(H.Tooltip.prototype, 'move', function(proceed, x, y, anchorX, anchorY) {
    var tooltip = this,
      now = tooltip.now,
      animate = tooltip.options.animation !== false && !tooltip.isHidden &&
      // When we get close to the target position, abort animation and land on the right place (#3056)
      (Math.abs(x - now.x) > 1 || Math.abs(y - now.y) > 1),
      skipAnchor = tooltip.followPointer || tooltip.len > 1;

    skipAnchor = false;

    // Get intermediate values for animation
    H.extend(now, {
      x: animate ? (2 * now.x + x) / 3 : x,
      y: animate ? (now.y + y) / 2 : y,
      anchorX: skipAnchor ? undefined : animate ? (2 * now.anchorX + anchorX) / 3 : anchorX,
      anchorY: skipAnchor ? undefined : animate ? (now.anchorY + anchorY) / 2 : anchorY
    });

    // Move to the intermediate value
    tooltip.getLabel().attr(now);


    // Run on next tick of the mouse tracker
    if (animate) {

      // Never allow two timeouts
      clearTimeout(this.tooltipTimeout);

      // Set the fixed interval ticking for the smooth tooltip
      this.tooltipTimeout = setTimeout(function() {
        // The interval function may still be running during destroy,
        // so check that the chart is really there before calling.
        if (tooltip) {
          tooltip.move(x, y, anchorX, anchorY);
        }
      }, 32);

    }
  });
}(Highcharts));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...