Изменить dhtmlxGantt для работы с несколькими проектами - Laravel5

javascript php laravel-5 dhtmlx

378 просмотра

1 ответ

145 Репутация автора

Я интегрировал 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: Фильтрация результатов по параметру

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

Автор: Yasas Gunarathne Источник Размещён: 19.07.2016 07:44

Ответы (1)


0 плюса

145 Репутация автора

Решение

Наконец я нашел решение. Во-первых, вам нужно добавить 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> Then, измените ваш код, добавив эти два обработчика на стороне клиента:

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, который может отображать несколько проектов.

Автор: Yasas Gunarathne Размещён: 17.08.2016 05:35
Вопросы из категории :
32x32