Скорее всего, вы получаете несколько элементов с одним и тем же идентификатором в вашем массиве, например, у вас есть два элемента с «задачей»: {«id»: 8, ...}
Поскольку это значение используется как идентификатор элемента, загруженного в gantt, вы получите следующее:
ganttData.data.push({ "id":8, "text":"Composting",...});
ganttData.data.push({ "id":8, "text":"Modelling",...});
И в то время как массив ganttData.data будет содержать оба элемента, элементы с одинаковым значением свойства id будут объединены в один, однажды загруженный в gantt.
Если вы хотите, чтобы эти элементы отображались отдельно, вам нужно предоставить им уникальные идентификаторы и, возможно, сохранить исходный файл item.task.id в другом свойстве, чтобы иметь возможность связывать запись с исходной задачей, которая поступает из вашего бэкэнд, например
function prepareData(rawData){
var ganttData = { data: [], links: []};
for(var i = 0; i < rawData.data.length; i++){
var task = {}
gantt.mixin(task, rawData.data[i]);
gantt.mixin(task, rawData.data[i].task);
task.text = task.name;
task.taskId = task.id;//!!!important
task.id = gantt.uid();//!!!important
ganttData.data.push(task);
}
return ganttData;
}