Обработка событий

События — это отличный способ сделать ваш диаграмму Ганта интерактивной и реагирующей на действия пользователя. Всякий раз, когда пользователь выполняет действие на диаграмме Ганта, dhtmlxGantt вызывает событие. Эти события могут использоваться для обнаружения действия и выполнения определенного кода в ответ.

Присоединение событий

Чтобы настроить событие, вы можете использовать метод gantt.attachEvent.

gantt.attachEvent("onTaskClick", function(id, e) {  
    alert("Вы только что кликнули по элементу с id=" + id);  
});

Related sample:  D'n'D Events

Примечание:

  • Названия событий не чувствительны к регистру.
  • Вы можете назначить несколько обработчиков для одного события.

Открепление событий

Чтобы удалить обработчик события, метод 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;  
});

Related sample:  D'n'D Events

Доступ к объекту gantt внутри обработчика

Когда вы находитесь внутри обработчика события, вы можете обратиться к объекту Gantt, используя ключевое слово this.

Обращение внутри обработчика события

gantt.attachEvent("onTaskClick", function(id, e) {  
    parentId = this.getTask(id).parent;  
});
К началу