Задача планировщика с похожим именем переопределяет предыдущую


0 принят

Скорее всего, вы получаете несколько элементов с одним и тем же идентификатором в вашем массиве, например, у вас есть два элемента с «задачей»: {«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;
}
JavaScript, HTML, DHTMLX,

javascript,html,dhtmlx,

0

Ответов: 1


0 принят

Скорее всего, вы получаете несколько элементов с одним и тем же идентификатором в вашем массиве, например, у вас есть два элемента с «задачей»: {«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;
}
JavaScript, HTML, DHTMLX,
Похожие вопросы