如果您使用的是 dhtmlxScheduler 6.0 或更早版本,请查看此处的详细信息。
要为事件显示工具提示,需要在页面上启用 Tooltip 扩展。
scheduler.plugins({
tooltip: true
});
启用后,工具提示会以默认设置显示。
激活扩展后,工具提示会自动以默认配置显示。
默认情况下,工具提示会显示事件的三个属性:
如需自定义工具提示文本,可使用 tooltip_text 模板:
scheduler.templates.tooltip_text = function(start,end,event) {
return "<b>Event:</b> "+event.text+"<br/><b>Start date:</b> "+
scheduler.templates.tooltip_date_format(start)+"<br/>"+
"<b>End date:</b> "+scheduler.templates.tooltip_date_format(end);
};
可以通过 scheduler.ext.tooltips.tooltip 访问 tooltip 对象。它提供了用于控制工具提示位置、内容和可见性的方法:
有几种方法可用于在悬停 DOM 元素时控制工具提示行为。
添加带详细配置的工具提示。接受一个包含工具提示设置的对象,包括:
为特定 Scheduler 元素添加工具提示。这是 attach() 的简化版本。接受一个对象,包括:
移除工具提示。参数为:
默认情况下,工具提示仅添加到 Scheduler 事件上,但也可以为其他 Scheduler 元素设置工具提示。
相关方法见 tooltip API:
注意,scheduler.ext.tooltips.tooltipFor() 需在 Scheduler 初始化后调用。例如,可放在 onSchedulerReady 事件处理函数中:
scheduler.attachEvent("onSchedulerReady", function(){
scheduler.ext.tooltips.tooltipFor({
selector: ".dhx_matrix_scell",
html: function (event, node) {
const sectionId = scheduler.getActionData(event).section;
const timeline = scheduler.getView("timeline");
var section = timeline.y_unit[timeline.order[sectionId]];
return `Tooltip for <b>${section.label}</b>`;
}
});
});
也可以使用如下方式:
scheduler.init("scheduler_here");
scheduler.ext.tooltips.tooltipFor({
selector: ".dhx_matrix_scell",
html: function (event, node) {
const sectionId = scheduler.getActionData(event).section;
const timeline = scheduler.getView("timeline");
var section = timeline.y_unit[timeline.order[sectionId]];
return `Tooltip for <b>${section.label}</b>`;
}
});
通过这种方式添加的工具提示会跟随鼠标指针,并遵循 tooltip_offset_x、tooltip_offset_y、tooltip_timeout 和 tooltip_hide_timeout 的设置。
此方法可根据鼠标移动提供更高级的工具提示行为配置。
您可以通过移除内置处理器并添加自定义处理器来修改默认的工具提示行为。方法如下:
// 从任务中移除内置的工具提示处理器
scheduler.ext.tooltips.detach(`[${scheduler.config.event_attribute}]`);
scheduler.ext.tooltips.tooltipFor({
selector: `[${scheduler.config.event_attribute}]`,
html: (event: MouseEvent) => {
if (scheduler.config.touch && !scheduler.config.touch_tooltip) {
return;
}
const evNode = event.target.closest(`[${scheduler.config.event_attribute}]`);
const evId = evNode.getAttribute(scheduler.config.event_attribute);
if(scheduler.getEvent(evId)){
const ev = scheduler.getEvent(evId);
return scheduler.templates.tooltip_text(ev.start_date, ev.end_date, ev);
}
return null;
},
global: false
});
工具提示的显示和隐藏时间可通过设置进行配置。
要设置任务工具提示显示前的延迟时间(毫秒),请使用 tooltip_timeout 属性:
scheduler.config.tooltip_timeout = 50;
scheduler.init("scheduler_here");
要设置鼠标移开后工具提示保持可见的时间(毫秒),请使用 tooltip_hide_timeout 属性:
scheduler.config.tooltip_hide_timeout = 5000;
scheduler.init("scheduler_here");
可通过以下配置属性调整工具提示的位置偏移:
scheduler.config.tooltip_offset_x = 30;
scheduler.config.tooltip_offset_y = 40;
scheduler.init("scheduler_here");
默认情况下,工具提示会附加到 document.body。如需将工具提示显示限制在特定容器内,可在初始化 Scheduler 前设置:
scheduler.attachEvent("onSchedulerReady", function(){
var tooltips = scheduler.ext.tooltips;
tooltips.tooltip.setViewport(container);
});
scheduler.init("scheduler_here");
返回顶部