Тултипы удобны для предоставления дополнительных сведений пользователям без загромождения экрана. По умолчанию тултипы уже настроены для задач Gantt.
Вы также можете добавить тултипы к другим элементам Gantt с помощью соответствующего API.
Чтобы включить тултипы для задач, необходимо активировать плагин tooltip. Это делается через метод gantt.plugins:
<script>
gantt.plugins({ tooltip: true });
gantt.init("gantt_here");
</script>
После активации тултипы будут отображаться автоматически с настройками по умолчанию.
По умолчанию тултипы показывают три свойства задачи:
Если вы хотите изменить текст, используйте шаблон tooltip_text следующим образом:
gantt.templates.tooltip_text = function(start, end, task){
return "<b>Task:</b> " + task.text + "<br/><b>Duration:</b> " + task.duration;
};
Объект tooltip, доступный как gantt.ext.tooltips.tooltip, предлагает методы для управления положением, содержимым и видимостью тултипа:
document.body
. Метод поддерживает:
Несколько методов помогают контролировать поведение тултипов при наведении на элементы DOM.
Добавляет тултип с расширенными настройками. Принимает объект со следующими параметрами конфигурации:
Упрощает добавление тултипа к определенному элементу Gantt. Принимает объект с:
Удаляет тултип. Требует:
Хотя тултипы обычно привязаны к задачам Gantt, вы можете применять их и к другим элементам, например, маркерам ресурсов:
Для этого используйте API тултипов, в частности:
Вот пример добавления тултипов к ячейкам шкалы временной линии:
var domHelper = gantt.utils.dom;
var 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", function () {
var tooltips = gantt.ext.tooltips;
tooltips.tooltipFor({
selector: ".gantt_task_link",
html: function (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: function (event, domElement) {
var id = event.target.parentNode.attributes['task_id'].nodeValue;
var 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
});
Вы можете контролировать, сколько времени требуется для появления или исчезновения тултипов:
gantt.config.tooltip_timeout = 50;
gantt.init("gantt_here");
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, тултипы больше не ограничены областью временной шкалы и будут следовать за указателем мыши. Если вы предпочитаете старое поведение, вы можете вернуть его:
gantt.attachEvent("onGanttReady", function(){
var tooltips = gantt.ext.tooltips;
tooltips.tooltip.setViewport(gantt.$task_data);
});
gantt.init("gantt_here");
gantt.parse(demo_tasks);
К началу