Получение объекта/ID связи

При работе со связями в диаграмме Gantt важно знать, как получить объект или ID связи. Многие методы требуют объект или ID связи в качестве параметра, и пользовательские сценарии работы со связями также зависят от этой информации.

Получение объекта связи

Для получения объекта связи можно использовать метод gantt.getLink:

gantt.getLink("link1");                //-> {id:"link1", source:1, target:2, type:1}

Получение всех связей из диаграммы Gantt

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

var links = gantt.getLinks();

Это вернет массив, содержащий все объекты связей.

Получение связей, связанных с определенной задачей

Связи, связанные с конкретной задачей, можно получить через свойства $source и $target объекта задачи. Эти свойства автоматически генерируются и содержат ID связанных связей:

  • $source - ID связей, исходящих из задачи.
  • $target - ID связей, направленных на задачу.
var taskObj = gantt.getTask("t1");
 
var sourceLinks = taskObj.$source;        //-> ["l1","l4"] - ID исходящих связей  var targetLinks = taskObj.$target;       //-> ["l5","l8"] - ID входящих связей

task.$source и task.$target являются динамическими свойствами объекта задачи. Они не хранятся в базе данных, но динамически добавляются к объекту задачи после загрузки данных.

const task = gantt.getTask(1);
const source = task.$source;
// Связи, исходящие из задачи,
// где `task #1` выступает в роли предшественника в этих отношениях
 
source.forEach(function(linkId) {
   const link = gantt.getLink(linkId);
   console.log(link);
   // { id: linkId, source: 1, target: targetTaskId, ...}
});
 
const target = task.$target;
// Связи, направленные на задачу,
// где `task #1` выступает в роли последователя в этих отношениях
 
target.forEach(function(linkId) {
   const link = gantt.getLink(linkId);
   console.log(link);
   // { id: linkId, source: sourceTaskId, target: 1, ...}
});

Получение ID связи

ID связи обычно можно найти в объекте links набора данных.

{
    tasks:[...],
    links:[
        { id:1, source:1, target:2, type:"1"},                       //id связи = 1         { id:2, source:2, target:3, type:"0"},                       //id связи = 2         { id:3, source:3, target:4, type:"0"}                        //id связи = 3     ]
}


Если вам нужно найти ID связи с определенными значениями "target", "source" или "type", вы можете использовать следующий подход:

// Поиск связи от задачи с id=1 к задаче с id=2
var links = gantt.serialize().links;                             // Возвращает все связи
for(var i=0; i<links.length; i++){                              // Перебирает все связи
   if ( (links[i].source == 1) && (links[i].target == 2) )
       var linkId = links[i].id;
};

Изменение ID связи

Если вам нужно обновить ID связи, можно использовать метод gantt.changeLinkId:

gantt.changeLinkId(1274, "link14");          // Изменяет ID связи: 1274 -> "link14"
К началу