2015-10-07 2 views
1

Попытка получить gtt dhtmlx для загрузки данных json при загрузке страницы.dhtmlx gantt динамически загружает данные с помощью jquery

data_file.php (надрез)

$colors = array(1=>"red", 2=>"green", 3=>"blue", 4=>"yellow", 5=>"orange", 6=>"grey"); 
$aryData = array(); 
if($project_tasks) { 
    foreach($project_tasks as $aryTask) { 
     $aryData[] = array(
      "id" => $aryTask["pt_id"], 
      "text" => $aryTask["pt_name"], 
      "start_date" => date("d-m-Y", strtotime($aryTask["pt_start_date"])), 
      "duration" => round((strtotime($aryTask["pt_end_date"]) - strtotime($aryTask["pt_start_date"]))/(60*60)), 
      "open" => true, 
      "color" => $colors[rand(1,6)] 
     ); 
    } 
} 

$strData = json_encode($aryData, JSON_UNESCAPED_SLASHES); 
header("Content-type:application/json;"); 
echo "\"data\" : ".$strData; 

поставляет что-то вроде этого (с хромированной консоли):

"data" : [{"id":"152","text":"test3","start_date":"01-09-2015","duration":600,"open":true,"color":"yellow"},{"id":"153","text":"test1","start_date":"23-09-2015","duration":72,"open":true,"color":"grey"},{"id":"154","text":"test2","start_date":"15-09-2015","duration":264,"open":true,"color":"red"}] 

JS-file.js (СниП)

var data_url = basePath + "system/data_file.php?project_id=" + projectID; 
$(".gantt").dhx_gantt({ 
scale_unit:"week", 
step:1, 
date_scale:"%W" 
}); 
// var tasks = $(".gantt").dhx_gantt().load(data_url); 
$(".gantt").dhx_gantt().load(data_url); 
gantt.parse(tasks); 

I попытаться «оповестить (задачи)»; с результатом «undefined» или null.

Я попытался Синхронный АЯКС загрузку данных:

var tasks = null; 

$.ajax({ 
    url: data_url, 
    async: false, 
    dataType: 'json', 
    success: function(data) { 
     tasks = data; 
    } 
}); 

и это дало тот же результат -> нуль.

Итак, я понимаю, почему gantt не загружается данными - данных в переменной задач нет.

У кого-нибудь есть пример работы?

Сердечные приветы

Lars

ответ

0

Soo ... Я играл с кодом ..

И это то, что я придумал до сих пор. Кажется, это было в формате JSON, который должен был быть определенным образом ..

JS:

/* Gantt Start */ 

     var data_url = basePath + "system/print_gantt_project_data.php?project_id=" + projectID; 

     gantt.config.readonly = true; 
     gantt.config.scale_unit = "month"; 
     gantt.config.step = 1; 
     gantt.config.date_scale = "%M"; 

     gantt.init("gantt_div"); 
     gantt.load(data_url, "json"); 
     gantt.render(); 
/* Gantt End */ 

Единственная проблема с этим подходом - еще раз до сих пор - это то, что dhtmlx_gantt не делает задачи на первом. Кажется, что нужно какое-то обновление. (И я попробовал то, что доступно в API (http://docs.dhtmlx.com/gantt/api__gantt_render.html)

Тем не менее пытается получить, что один фиксированный ..

О, и файл PHP создания данных JSON:

/Начало/

/* Create JSON array and print it for /js/system_project.js */ 
$colors = array(1=>"red", 2=>"green", 3=>"blue", 4=>"yellow", 5=>"orange", 6=>"grey"); 
$aryData = array(); 
if($project_tasks) { 
    foreach($project_tasks as $aryTask) { 
     $aryData[] = array(
      "id" => $aryTask["pt_id"], 
      "text" => $aryTask["pt_name"], 
      "start_date" => date("d-m-Y", strtotime($aryTask["pt_start_date"])), 
      "duration" => round((strtotime($aryTask["pt_end_date"]) - strtotime($aryTask["pt_start_date"]))/(60*60)), 
      "open" => "true", 
      "color" => $colors[rand(1,6)], 
      "parent" => $aryTask["pt_parent"] 
     ); 
    } 
} 

$strData = json_encode($aryData, JSON_UNESCAPED_SLASHES); 
header("Content-type:application/json;"); 
echo "{\"data\":".$strData."}"; 

Любые знания о внесении вещи работать правильно, пожалуйста, не стесняйтесь, чтобы войти ;-)

/Lars