javascript — модифицируйте dhtmlxGantt для работы с несколькими проектами — Laravel5

Я интегрировал dhtmlxGantt в проект Laravel5, и все работает как положено. Но я хочу изменить его, чтобы хранить графики для более чем одного проекта. Для этого я хочу добавить дополнительное поле с именем «project_id» и загрузить данные через фильтр.

Я попытался изменить контроллер с помощью следующего кода:

$connector->render_links(
GanttLink::where('user_id', '=', 1)->get(),
"id",
"source,target,type");

$connector->render_table(
GanttTask::where('user_id', '=', 1)->get(),
"id",
"start_date,duration,text,progress,parent");

Это решение позволило мне загрузить график из базы данных так, как я хотел. Но это не сохраняет изменения обратно в базу данных. Я просмотрел документацию dhtmlxGantt, но не нашел для этого решения.

Я нашел эти ссылки в своем исследовании и может быть полезным.

Ссылка 1: Изменение значений перед сохранением

Ссылка 2: Фильтрация результатов по параметру

Пожалуйста, помогите мне изменить мой проект таким образом, который позволяет работать (загружать и редактировать) на разных графиках.

1

Решение

Наконец я нашел решение. Во-первых, вам нужно добавить project_id столбец таблицы базы данных, затем добавьте столбец в конфигурацию соединителя:

$connector->render_table(new GanttTask(), "id", "start_date,duration,text,progress,parent,project_id");

Затем вы должны внести некоторые изменения в код на стороне клиента. Используйте что-то вроде

var project_id = "<?php echo $project['id']; ?>";

чтобы взять переменную в <script>..</script>
Затем измените ваш код, добавив эти два обработчика на стороне клиента:

gantt.attachEvent("onBeforeTaskDisplay", function (id, task) {
if (task.project_id == project_id) {
return true;
}
return false;
});

а также

gantt.attachEvent("onBeforeTaskAdd", function (id, task) {
task.project_id = project_id;
});

Первый обработчик фильтрует результаты так, как вы хотите, прежде чем отображать диаграмму, а второй обработчик присоединяет project_id свойство перед добавлением задачи. Теперь у вас есть dhtmlxGatt, который может отображать несколько проектов.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]