Основные операции с задачами

В этом разделе рассматриваются основные операции, которые можно выполнять с задачами, включая создание или удаление задач и динамическое обновление их свойств.

Добавление новой задачи

Чтобы добавить задачу в диаграмму Ганта, используйте метод gantt.addTask:

var taskId = gantt.addTask({
    id:10,
    text:"Project #1",
    start_date:"02-09-2020",
    duration:28
});

Ограничение добавления задач на определённых уровнях

Эффективный способ предотвратить добавление пользователями подзадач на определённых уровнях (или на основе других условий) — скрыть кнопку 'Add' с помощью CSS.

Вы можете назначить CSS-класс каждой строке задачи, используя шаблон gantt.templates.grid_row_class:

gantt.templates.grid_row_class = function( start, end, task ){
    if ( task.$level > 1 ){
        return "nested_task"
    }
    return "";
};

Затем примените правило CSS, чтобы скрыть кнопку 'Add' для строк с указанным классом:

.nested_task .gantt_add{
    display: none !important;
}

Related sample:  Predefined Project Structure

Обновление свойства задачи

Чтобы динамически обновить свойство задачи, используйте метод gantt.updateTask:

var task = gantt.getTask(10);//->{id:10,text:"Task #10",start_date:"02-09-2020",...}
 
task.text = "Task #10_1"; gantt.updateTask(10);

Если включен Data Processor, метод updateTask() вызовет отправку изменений на сервер.

После обновления задачи срабатывает событие onAfterTaskUpdate. Это может привести к дополнительным изменениям, таким как автоматическое планирование задачи и её последователей, если автоматическое планирование активно.

Если вам нужно просто перерисовать изменения без отправки обновлений на сервер, используйте refreshTask() вместо updateTask():

var task = gantt.getTask(10);//->{id:10,text:"Task #10",start_date:"02-09-2020",...}
 
task.text = "Task #10_1"; 
gantt.refreshTask(10);

Перерисовка задач

Чтобы обновить все задачи в диаграмме Ганта, используйте метод gantt.refreshData:

var task = gantt.getTask(10);//->{id:10,text:"Task #10",start_date:"02-09-2020",...}
var task2 = gantt.getTask(11);//->{id:11,text:"Task #11",start_date:"05-09-2020",...}
 
task.text = "Task #10_1";  task2.text = "Task #11_1"; gantt.refreshData();

Удаление задач

Чтобы удалить задачу, используйте метод gantt.deleteTask:

gantt.deleteTask(taskId);

Каскадное удаление вложенных задач

Настройка gantt.config.cascade_delete контролирует, как удаляются вложенные задачи. По умолчанию она установлена в true, что означает, что удаление задачи отправит отдельный запрос на сервер для каждой вложенной задачи и ссылки, связанной с удаляемой задачей.

Если вы хотите избежать отправки множества запросов, вы можете отключить эту настройку:

gantt.config.cascade_delete = false;

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

Эта настройка влияет на реализацию на серверной стороне. Для получения более подробной информации, обратитесь к статье Интеграция на стороне сервера.

Удаление всех задач из диаграммы Ганта

Чтобы очистить все задачи из диаграммы Ганта, используйте метод gantt.clearAll:

gantt.clearAll();
К началу