【问题标题】:d3.json is not accepting the query result to plot in d3 gantt chartd3.json 不接受在 d3 甘特图中绘制的查询结果
【发布时间】:2014-11-02 12:23:23
【问题描述】:

我的问题是这个。我有一个 d3 甘特图,它在第一次加载数据时工作正常,问题是当我使用我的过滤器表单查询另一个数据时。结果查询和 json 编码正常,但 d3.json 不接受我在 d3 甘特图中绘制的新结果。我用console.log查看数据,没问题。

这是我获取 d3 数据的代码

d3.json("json", function(error,json){ 
var tasks = [];
var taskNames = [];
for(var i = 0; i < json.length; i++){
var HANDLERID = json[i].HANDLERID;
taskNames.push(HANDLERID);

tasks.push({"startDate": new Date(json[i].START1),
        "endDate": new Date(json[i].END1),
        "taskName": HANDLERID,
        "status": json[i].VAL1 });

tasks.push({"startDate": new Date(json[i].START2),
        "endDate": new Date(json[i].END2),
        "taskName": HANDLERID,
        "status": json[i].VAL2 });

tasks.push({"startDate": new Date(json[i].START3),
        "endDate": new Date(json[i].END3),
        "taskName": HANDLERID,
        "status": json[i].VAL3 });

}

console.log(tasks);
console.log(taskNames);


tasks.sort(function(a, b) {
    return a.endDate - b.endDate;
});
var maxDate = tasks[tasks.length - 1].endDate;
tasks.sort(function(a, b) {
    return a.startDate - b.startDate;
});
var minDate = tasks[0].startDate;

var format = "%Y-%b-%d";

var gantt = d3.gantt().taskTypes(taskNames).tickFormat(format);
gantt(tasks);

 });

这是我的 jquery 帖子

function searching(){

var input_handlermodel = $("#input_handlermodel").val();
var input_handlerid = $("#handlerid").val();

$.post("../../mini/pm/json",
{input_handlermodel : input_handlermodel, input_handlerid : input_handlerid},
function(data){$("#result").html(data);});


}

这就是我对结果查询进行 json 编码的方式

$sth1 = ibase_query($query);
$items = array();
 while($row1 = ibase_fetch_object($sth1) ) {
  array_push($items, $row1);
   }
 $result["rows"] = $items;

echo json_encode($items); 

【问题讨论】:

  • guyz 如果我有一个表单然后 json 编码查询结果并在同一个甘特图上绘制数据,d3.json 可以捕获新数据??????有人做过吗?????????

标签: javascript jquery json svg d3.js


【解决方案1】:

只需尝试编写一个更新函数并在加载新数据时调用它。除非正确更新图表,否则无法在同一张甘特图上绘制不同的数据。

.on('click', function(d) {  

updateChart();

});

类似的东西。

【讨论】:

  • 基于我的代码先生,我如何在 d3 中的同一个甘特图上绘制不同的数据有一个 gantt.redraw() 我不知道如何使用它。对不起,我是 d3 的新手
  • 函数更新(taskNames,format) { var gantt = d3.gantt().taskTypes(taskNames).tickFormat(format);甘特图(任务); } 当你再次从 json update(a,b) 加载数据时调用它;
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-12
  • 2018-08-04
  • 2021-06-01
  • 2016-09-26
相关资源
最近更新 更多