События — это отличный способ сделать ваш диаграмму Ганта интерактивной и реагирующей на действия пользователя. Всякий раз, когда пользователь выполняет действие на диаграмме Ганта, dhtmlxGantt вызывает событие. Эти события могут использоваться для обнаружения действия и выполнения определенного кода в ответ.
Чтобы настроить событие, вы можете использовать метод gantt.attachEvent
.
gantt.attachEvent("onTaskClick", function(id, e) {
alert("Вы только что кликнули по элементу с id=" + id);
});
Примечание:
Чтобы удалить обработчик события, метод gantt.detachEvent
окажется полезным:
Общий способ прикрепления/открепления обработчика событий
// Прикрепить событие
var eventId = gantt.attachEvent("onTaskClick", function(id, e) {
alert("Вы только что кликнули по элементу с id=" + id);
});
// Открепить событие
gantt.detachEvent(eventId);
Если вам нужно удалить все обработчики событий сразу, вы можете использовать следующий подход:
// Сохраните ID обработчиков при присоединении событий
var events = [];
events.push(gantt.attachEvent("onTaskClick", function(id, e) {
alert("Вы только что кликнули по элементу с id=" + id);
}));
events.push(gantt.attachEvent("onTaskDblClick", function(id, e) {
alert("Вы только что дважды кликнули по элементу с id=" + id);
}));
// Удалить все сохраненные события
while (events.length)
gantt.detachEvent(events.pop());
Чтобы узнать, есть ли у конкретного события какие-либо присоединенные обработчики, вы можете использовать метод gantt.checkEvent
:
gantt.attachEvent("onTaskClick", function(id, e) {
alert("Вы только что кликнули по задаче с id=" + id);
});
gantt.checkEvent("onTaskClick"); // Возвращает 'true'
События, которые начинаются с 'onBefore', могут быть отменены.
Чтобы остановить выполнение события, просто верните false в обработчике события.
Отмена обработчика события
gantt.attachEvent("onBeforeTaskChanged", function(id, mode, old_task) {
var task = gantt.getTask(id);
if (mode == gantt.config.drag_mode.progress) {
if (task.progress < old_task.progress) {
dhtmlx.message(task.text + " прогресс не может быть отменен!");
return false; }
}
return true;
});
Когда вы находитесь внутри обработчика события, вы можете обратиться к объекту Gantt, используя ключевое слово this.
Обращение внутри обработчика события
gantt.attachEvent("onTaskClick", function(id, e) {
parentId = this.getTask(id).parent;
});
К началу