Задача Родитель/Дети

Это руководство охватывает методы, связанные с иерархической структурой задач в диаграмме Ганта.

Для базовых операций с объектом/идентификатором задачи, ознакомьтесь со статьей Объект/ID Задачи.

Родитель задачи

Чтобы найти родителя задачи, вы можете использовать метод gantt.getParent или свойство "parent" объекта задачи:

gantt.getParent("t1");//->"pr_2"
//или
var taskObj = gantt.getTask("t1");//-> {id:"t1", text:"Task #5", parent:"pr_2", ...}
var taskParent = taskObj.parent;  //-> "pr_2"

Если у задачи нет родителя, метод вернет корневой id.

Дети задачи

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

var data = {
  tasks:[
     {id:"p_1", text:"Project #1", start_date:"01-04-2020", duration:18},
     {id:"t_1", text:"Task #1",    start_date:"02-04-2020", duration:8,
     parent:"p_1"}
]};
gantt.getChildren("p_1");//->["t_1"]

Если вам нужны все дочерние задачи, включая задачи на более глубоких уровнях, используйте метод gantt.eachTask и передайте ID родительской задачи в качестве второго параметра:

const children = [];
// итерация по всем дочерним задачам
gantt.eachTask(function(child){
    children.push(child)
}, 11);

Проверка наличия детей у задачи

Чтобы проверить, есть ли у задачи дочерние элементы, можно использовать метод gantt.hasChild:

var data = {
  tasks:[
     {id:"p_1", text:"Project #1", start_date:"01-04-2020", duration:18, 
     open:true},
     {id:"t_1", text:"Task #1", start_date:"02-04-2020", duration:8,
     parent:"p_1"},
     {id:"t_2", text:"Task #2", start_date:"11-04-2020", duration:8,
     parent:"p_1"}
   ]
};
gantt.init("gantt_here");
gantt.parse(data);
 
gantt.hasChild("p_1"); //-> true  gantt.hasChild("t_1"); //-> false

Следующая задача в дереве

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

var data = {
  tasks:[
     {id:"p_1", text:"Project #1", start_date:"01-04-2020", duration:18, 
     open:true},
     {id:"t_1", text:"Task #1", start_date:"02-04-2020", duration:8,
     parent:"p_1"},
     {id:"t_2", text:"Task #2", start_date:"11-04-2020", duration:8,
     parent:"p_1"}
   ]
};
gantt.init("gantt_here");
gantt.parse(data);
 
gantt.getNext("p_1"); -> "t_1"   gantt.getNext("t_1"); -> "t_2"   gantt.getNext("t_2"); -> null

Имейте в виду, что задачи рассматриваются в последовательности, независимо от их уровня в дереве.

Предыдущая задача в дереве

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

var data = {
  tasks:[
     {id:"p_1", text:"Project #1", start_date:"01-04-2020", duration:18, 
     open:true},
     {id:"t_1", text:"Task #1", start_date:"02-04-2020", duration:8,
     parent:"p_1"},
     {id:"t_2", text:"Task #2", start_date:"11-04-2020", duration:8,
     parent:"p_1"}
   ]
};
gantt.init("gantt_here");
gantt.parse(data);
 
gantt.getPrev("p_1"); ->  null   gantt.getPrev("t_1"); -> "p_1"   gantt.getPrev("t_2"); -> "t_1"

Как и в случае с методом gantt.getNext, задачи рассматриваются по порядку, без учета их уровня в дереве.

Сиблинги задачи

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

var data = {
  tasks:[
     {id:"p_1", text:"Project #1", start_date:"01-04-2020", duration:18, 
     open:true},
     {id:"t_1", text:"Task #1", start_date:"02-04-2020", duration:8,
     parent:"p_1"},
     {id:"t_2", text:"Task #2", start_date:"11-04-2020", duration:8,
     parent:"p_1"}
   ]
};
gantt.init("gantt_here");
gantt.parse(data);
 
gantt.getSiblings("t_1"); ->  ["t_1", "t_2"]

Следующий сиблинг задачи

Чтобы получить следующего сиблинга задачи, используйте метод gantt.getNextSibling:

var data = {
  tasks:[
     {id:"p_1", text:"Project #1", start_date:"01-04-2020", duration:18, 
     open:true},
     {id:"t_1", text:"Task #1", start_date:"02-04-2020", duration:8,
     parent:"p_1"},
     {id:"t_2", text:"Task #2", start_date:"11-04-2020", duration:8,
     parent:"p_1"}
   ]
};
gantt.init("gantt_here");
gantt.parse(data);
 
gantt.getNextSibling("t_1"); ->  "t_2" gantt.getNextSibling("t_2"); ->  null (если нет следующего сиблинга)

Предыдущий сиблинг задачи

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

var data = {
  tasks:[
     {id:"p_1", text:"Project #1", start_date:"01-04-2020", duration:18, 
     open:true},
     {id:"t_1", text:"Task #1", start_date:"02-04-2020", duration:8,
     parent:"p_1"},
     {id:"t_2", text:"Task #2", start_date:"11-04-2020", duration:8,
     parent:"p_1"}
   ]
};
gantt.init("gantt_here");
gantt.parse(data);
 
gantt.getPrevSibling("t_2"); ->  "t_1" gantt.getPrevSibling("t_1"); ->  null (если нет предыдущего сиблинга)
К началу