当前位置: 首页 > 知识库问答 >
问题:

dhtmlx甘特图使用jquery动态加载数据

熊哲圣
2023-03-14

试图让dhtmlx甘特图在加载页面时加载json数据。

$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;

提供如下内容(从chrome控制台):

"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"}]
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);

我尝试“提醒(任务);”结果为“未定义”或null。

我尝试过同步ajax加载数据:

var tasks = null;

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

结果是一样的

所以我明白了为什么甘特图不会加载数据-tasks变量中没有数据。

有人举过一个例子吗?

亲切的问候

拉斯

共有1个答案

太叔昊苍
2023-03-14

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\U甘特图最初并没有呈现任务。似乎需要一种更新。(我尝试了API中可用的功能(http://docs.dhtmlx.com/gantt/api__gantt_render.html)

还在努力修复那个...

哦,还有创建json数据的PHP文件:

/开始/

/* 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

 类似资料:
  • 我使用order\u branch config拖放任务(http://docs.dhtmlx.com/gantt/api__gantt_order_branch_config.html). 它工作正常,但我发现我不能滚动图表时,我拖动。所以我不能将任务拖出可见区域(顶部和底部)。如何配置dhtmlxGantt来实现这一点?

  • 我正在尝试使用下拉复选框列表筛选甘特图。这是我的密码 指数html 作用 job_category来自JSON文件。 到目前为止,我设法用我选中的任何第一个复选框过滤甘特图,但当我选中另一个复选框时,假设我选中了艺术家和制作,所有内容都会消失,并在控制台日志中显示出来 它会变成那样,如果我只是在这里打印屏幕整个事情会更容易,但我正在使用我的办公室桌面,文件上传被阻止。有人能帮我解决这个问题吗,提前

  • 我想创建交互式甘特图(或序列图),用于显示多个处理器上的任务调度。 我找到了这个库,它产生了非常好的交互式甘特图。不幸的是,ploly-Gantt只适用于日期而不是数值,就像我对计划的运行时值所做的那样。 有没有可能用数值绘制甘特图? 代码示例:(我想使用这样的东西)

  • 甘特图用于比较类别之间的数据。此外,它还可用于识别每个过程所花费的时间。 它显示了一段时间内任务值的进展。它在一段时间内广泛用于项目管理和其他类型的变异研究。 除时间维度外,甘特图也采用维度和度量。 例如,使用Sample-Superstore数据源,可以按照每种类型的发运模式进行运输。对于创建,甘特图遵循程序如下: 第1步:转到工作表。 单击“标记(Marks)”窗格中的下拉按钮。 从给定列表中

  • 主要内容:什么是JFreeChart 甘特图,JFreeChart 甘特图的示例什么是JFreeChart 甘特图 甘特图是一种条形图,常用于计划和安排项目任务和事件。 下图显示了 JFreeChart 库中包含的甘特图的一些演示版本: JFreeChart 甘特图的示例 让我们以人口数量作为样本数据。 软件开发阶段 预计日期 实际日期   需求分析 2017-07-03 2017-07-07 2017-07-03 2017-07-05 需求设计 2017-07-10 201

  • 问题内容: matplotlib如何用该数据绘制图形。问题在于可视化从第2列到第3列的距离。最后,它看起来应该像甘特图。 我需要为列1提供2种颜色。对于y轴,选择列0,对于x轴,请选择列2和3。对于每一行,应绘制一条线。第2列是开始时间,第3列是停止时间。 问题答案: 如果我对您的理解正确,则希望在第3列和第4列的x值之间绘制一条水平线,而y值等于在第0列中的水平线。要在给定的y值上绘制一条水平线