При работе со связями в диаграмме Gantt важно понимать, как получить объект или id связи. Большинство методов требуют передачи объекта (или id) связи в качестве входного параметра. Кроме того, для корректной работы пользовательских сценариев, связанных со связями, также необходимо ссылаться на объект или id связи.
Для получения объекта связи используйте метод getLink:
gantt.getLink("link1"); //-> {id:"link1", source:1, target:2, type:1}
Чтобы получить все связи, которые в данный момент отображаются на диаграмме, используйте метод getLinks следующим образом:
var links = gantt.getLinks();
В результате будет возвращён массив, содержащий все объекты связей.
Чтобы найти связи, связанные с конкретной задачей, проверьте свойства $source и $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 — это динамические свойства объекта задачи, которые содержат id связей, связанных с задачей. Эти свойства не сохраняются в базе данных, а динамически добавляются к объекту задачи после загрузки данных.
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 связи можно найти в объекте 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 существующей связи, используйте метод changeLinkId:
gantt.changeLinkId(1274, "link14"); // меняет id связи с 1274 на "link14"
К началу