Режим взаимодействия в Chart.js определяет принцип выбора элементов графика при наведении курсора, касании на сенсорных устройствах и обработке событий навигации. Он управляет тем, какие точки данных, элементы наборов данных и оси считаются активными в конкретный момент времени.
Система взаимодействия строится на двух ключевых параметрах:
Дополнительно учитываются настройки осей и контекста событий (hover, tooltip, events).
Параметр mode определяет логику выбора элементов
графика.
Режим nearest выбирает ближайший элемент к позиции
курсора независимо от того, пересекается ли курсор с самим
элементом.
Особенности поведения:
Применение:
Режим index группирует элементы по индексу оси X.
Активными становятся все точки, соответствующие одному и тому же
индексу.
Характеристика:
Применение:
Режим dataset активирует целый набор данных при
наведении на любой его элемент.
Особенности:
Применение:
Режим point ограничивает взаимодействие только
конкретной точкой данных.
Характеристика:
Применение:
Режим x активирует все элементы, имеющие одинаковое
значение по оси X.
Особенности:
Применение:
Режим y активирует элементы с совпадающим значением по
оси Y.
Характеристика:
Применение:
Режим none отключает автоматическое выделение
элементов.
Особенности:
Применение:
intersect определяет, требуется ли точное пересечение
курсора с элементом.
Поведение:
Использование:
Поведение:
Использование:
Комбинация параметров формирует итоговую стратегию взаимодействия.
Наиболее гибкая модель:
Характеристика:
Строгая модель:
Характеристика:
Групповая модель:
Характеристика:
Tooltip использует те же правила, что и interaction mode, если не задано отдельно.
Особенности:
При mode: index tooltip отображает набор значений по
одной позиции оси X, при mode: dataset — значения одного
набора данных.
Оси могут влиять на поведение взаимодействия через:
axis: 'x'axis: 'y'При указании оси взаимодействие ограничивается соответствующим направлением, что уменьшает количество активных элементов.
Параметр events задаёт список событий, на которые
реагирует график:
Если событие отсутствует в списке, interaction mode не применяется.
Механизм взаимодействия внутри Chart.js строится на следующих этапах:
modeintersectКаждый этап выполняется последовательно при каждом событии pointer input.
При большом количестве точек:
nearest снижает нагрузку на выбор элемента за счёт
простого поиска ближайшего расстоянияindex уменьшает вычисления, работая с группамиpoint увеличивает точность, но снижает удобство
взаимодействияОптимизация interaction mode напрямую влияет на производительность визуализации.
Поведение может быть переопределено через:
onHoveronClickexternal tooltip handlerПри использовании внешних обработчиков стандартный interaction mode может использоваться только как источник данных, без влияния на UI.
В графиках с несколькими типами данных:
interaction mode применяется ко всем элементам одновременно, но с учётом их типа и масштаба координат. Это приводит к различным результатам выбора активных элементов в зависимости от структуры datasets.