DHTMLX 调度程序中 header 次点击的事件处理程序

Event handler for header clicks in DHTMLX Scheduler

我们使用 DHTMLX Scheduler,我们想为 week viewunit view 等中 header 的点击附加一个侦听器。我们没有找到方法这样做。

我们还需要我们的侦听器中的日期以及执行点击的日期。

我们如何用 DHTMLX Scheduler 做到这一点?

DHTMLX Scheduler 不提供点击 header 的事件,因此要执行此操作,您需要先更改视图的模板:

var toStr = scheduler.date.date_to_str(scheduler.config.day_date);
scheduler.templates.week_scale_date = (dt) => "<span data-scale-date='" + dt.valueOf() + "'>" + toStr(dt) + "</span>";
scheduler.templates.unit_scale_text = (key, label) => "<span data-scale-date='0' data-scale-unitId='" + key + "'>" + label + "</span>";
// ...

更改模板后,您可以将事件侦听器附加到 #scheduler_here 并过滤 header 上的点击:

document.getElementById("scheduler_here").addEventListener("click", (evt) => {
    var event = evt || window.event;
    var target = event.target || event.srcElement;

    if (target && target.nodeName === "SPAN" && target.parentElement && target.parentElement.classList && target.parentElement.classList.contains("dhx_scale_bar")) {
        var dateStr = target.getAttribute("data-scale-date");
        if (dateStr) {
            var dateValue = parseInt(dateStr, 10);
            var date = dateValue === 0 ? scheduler.getState().date : new Date(dateValue);
            var unitId = target.getAttribute("data-scale-unitId") ? target.getAttribute("data-scale-unitId") : {{your unit id in unit view}};
            // ...
        }

        evt.stopPropagation();
        evt.preventDefault();
    }
}, false);

DHTMLX Scheduler 提供当用户单击或双击 x 轴上的单元格(仅限时间轴视图)时触发的事件:

onXScaleClick

onXScaleDblClick