Как поместить всплывающую подсказку в highcharts.js

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

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
324
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Пока нашел два варианта. Сначала будет своего рода внешний, и называется он инструментальной типипсией. Другой — с помощью плагина custom-events highcharts. Третий родной для высоких чартов, я думаю, что это правильный путь.

Пожалуйста, обратитесь к приведенному ниже примеру. Добавляя события mouseover и mouseout к элементу, вы можете вызвать встроенную всплывающую подсказку Highcharts:

chart: {
  ...,
  events: {
    load: function() {
      var chart = this,
        xAxis = chart.xAxis[0],
        halfTooltipWidth,
        posX,
        posY;

      for (var key in xAxis.ticks) {
        (function(label) {
          label
            .on('mouseover', function(e) {
              chart.tooltip.refresh({
                series: chart.series[0],
                getLabelConfig: function() {}
              });

              halfTooltipWidth = chart.tooltip.label.width / 2;
              posX = label.xy.x - halfTooltipWidth;
              posY = label.xy.y;

              chart.tooltip.move(posX, posY, posX + halfTooltipWidth, posY - 10);
            })
            .on('mouseout', function(e) {
              chart.tooltip.hide();
            });
        })(xAxis.ticks[key].label)
      }

    }
  }
},
tooltip: {
  headerFormat: '',
  formatter: function() {
    if (this.y) {
      return 'Point'
    }

    return 'Custom tooltip'
  }
}

Живая демонстрация: http://jsfiddle.net/BlackLabel/2jr0xdcw/

Справочник по API: https://api.highcharts.com/class-reference/Highcharts.Tooltip

Я на самом деле не понимаю логики в вашей скрипке ..... можете ли вы написать подробнее?

Vladimir Despotovic 14.12.2020 20:14

На вашей скрипке всплывающая подсказка всегда говорит «Пользовательская всплывающая подсказка».

Vladimir Despotovic 14.12.2020 20:21

Привет @Vladimir Despotovic, я использовал метод refresh, чтобы показать всплывающую подсказку, и метод move, чтобы расположить ее рядом с меткой. Внутренняя строка определена в tooltip.formatter — это всего лишь пример, вы можете отформатировать ее по своему усмотрению.

ppotaczek 15.12.2020 08:55

Формат идеальный. Однако я не могу получить в нем правильные данные. Кажется, он изолирован таким образом, как вы его реализовали, поэтому я не могу вводить в него какие-либо свои данные.

Vladimir Despotovic 15.12.2020 10:07

Обычный метод доступа к "this.pos" и "this" почему-то не работает. Эти переменные не дают мне значения индекса точки.

Vladimir Despotovic 15.12.2020 10:08

Вы можете добавить необходимые значения в функцию getLabelConfig, например: jsfiddle.net/BlackLabel/897fwohy

ppotaczek 15.12.2020 10:35

Хорошо, это приносит больше по оси x (не совсем то, что я хотел, но приближается). Но теперь всплывающая подсказка для самой точки испорчена (всегда появляется «Точка»).

Vladimir Despotovic 15.12.2020 12:18

Вам нужно отредактировать первую часть функции formatter, например здесь: jsfiddle.net/BlackLabel/5foLd170 Я использовал средство форматирования по умолчанию.

ppotaczek 15.12.2020 14:36

Привет @Potaczek. Я добавил скрипку о том, какие проблемы у меня сейчас. У меня также есть метка, представленная маленьким красным квадратом. Всплывающая подсказка всегда отображается под. Мне нужно, чтобы он отображался над меткой, и, похоже, я не могу этого сделать. Не могли бы вы взглянуть? Большое спасибо, кажется, вы эксперт в highcharts.

Vladimir Despotovic 15.12.2020 17:48

Я приму ваш ответ и открыл новый вопрос для вновь возникшей проблемы, которая у меня возникла:stackoverflow.com/questions/65321590/…

Vladimir Despotovic 16.12.2020 11:38

Другие вопросы по теме