Тултипы позволяют отображать дополнительную информацию, не перегружая экран лишним текстом. По умолчанию тултипы появляются на задачах Gantt.
Можно добавлять тултипы к любому элементу Gantt с помощью соответствующего API.
Чтобы включить тултипы для задач, просто активируйте плагин tooltip через метод gantt.plugins:
<script>
gantt.plugins({ tooltip: true });
gantt.init("gantt_here");
</script>
После активации расширения тултипы будут отображаться автоматически с настройками по умолчанию.
По умолчанию тултип показывает три свойства задачи:
Если вы хотите изменить текст тултипа, используйте шаблон tooltip_text следующим образом:
gantt.templates.tooltip_text = (start, end, task) =>
`<b>Task:</b> ${task.text}<br/><b>Duration:</b> ${task.duration}`;
Объект тултипа доступен как gantt.ext.tooltips.tooltip. Он предоставляет методы для управления позицией, содержимым и видимостью тултипа:
Несколько методов позволяют управлять поведением тултипов при наведении на DOM-элементы.
добавляет тултип с расширенной конфигурацией. Принимает объект с настройками:
добавляет тултип для конкретного элемента Gantt. Это более простой вариант attach(). Принимает объект с параметрами тултипа:
удаляет тултип. Принимает:
По умолчанию тултипы добавляются только к задачам Gantt, но их можно применять и к другим элементам Gantt, например, к маркеру ресурса:
Здесь полезны два метода из API тултипов:
Например, чтобы добавить тултипы к ячейкам шкалы временной линии:
const domHelper = gantt.utils.dom;
const pos = domHelper.getRelativeEventPosition(event, gantt.$task_scale);
return gantt.templates.task_date(gantt.dateFromPos(pos.x));
Обратите внимание, вызывать gantt.ext.tooltips.tooltipFor() нужно после инициализации Gantt. Например, внутри обработчика события onGanttReady:
gantt.attachEvent("onGanttReady", () => {
const tooltips = gantt.ext.tooltips;
tooltips.tooltipFor({
selector: ".gantt_task_link",
html: (event, node) => {
// ...
}
});
gantt.init("gantt_here");
});
Related sample: Custom Tooltips
Или так:
gantt.init("gantt_here");
gantt.parse(tasks);
gantt.ext.tooltips.tooltipFor({
selector: ".gantt_task_cell",
html: (event, domElement) => {
const id = event.target.parentNode.getAttribute("task_id");
const task = gantt.getTask(id);
return task.text;
}
});
Related sample: Gantt. Custom tooltips for cells
Тултипы, добавленные этим способом, следуют за курсором мыши и учитывают настройки tooltip_offset_x, tooltip_offset_y, tooltip_timeout и tooltip_hide_timeout.
Этот метод позволяет добавить тултипы с более гибкой конфигурацией для детального управления поведением тултипа при движении мыши.
Вы можете изменить стандартное поведение тултипа, удалив встроенный обработчик и добавив свой:
// удалить стандартный обработчик тултипа с задач
gantt.ext.tooltips.detach(`[${gantt.config.task_attribute}]:not(.gantt_task_row)`);
gantt.ext.tooltips.tooltipFor({
selector: `.gantt_grid [${gantt.config.task_attribute}]`,
html: (event: MouseEvent) => {
if (gantt.config.touch && !gantt.config.touch_tooltip) {
return;
}
const targetTaskId = gantt.locate(event);
if (gantt.isTaskExists(targetTaskId)) {
const task = gantt.getTask(targetTaskId);
return gantt.templates.tooltip_text(task.start_date, task.end_date, task);
}
return null;
},
global: false
});
Время показа и скрытия тултипа можно настраивать с помощью соответствующих параметров.
Чтобы задать задержку (в миллисекундах) перед появлением тултипа для задачи, используйте tooltip_timeout:
gantt.config.tooltip_timeout = 50;
gantt.init("gantt_here");
Для управления временем (в миллисекундах), в течение которого тултип остаётся видимым после ухода курсора, используйте tooltip_hide_timeout:
gantt.config.tooltip_hide_timeout = 5000;
gantt.init("gantt_here");
Положение тултипа можно настраивать, изменяя горизонтальный и вертикальный отступы с помощью следующих свойств конфигурации:
gantt.config.tooltip_offset_x = 30;
gantt.config.tooltip_offset_y = 40;
gantt.init("gantt_here");
До версии 6.1 тултипы отображались только внутри области временной линии. Начиная с v6.1, тултипы могут появляться в любом месте и следовать за курсором мыши.
Если вы хотите вернуть прежнее поведение, используйте следующий код до инициализации Gantt:
gantt.attachEvent("onGanttReady", () => {
const tooltips = gantt.ext.tooltips;
tooltips.tooltip.setViewport(gantt.$task_data);
});
gantt.init("gantt_here");
gantt.parse(demo_tasks);
К началу