2015-09-06 66 views
2

我正在使用amCharts通过dataLoader功能提取数据来生成图表等。amCharts:如何优雅地管理dataLoader中的数据缺失

我一直在研究如何优雅地处理从API不时传递的数据缺失问题,以便图形显示诸如“无数据可用”之类的消息。

示例图表代码:

var chart = new AmCharts.AmSerialChart(); 

chart.dataLoader = { url: "/api/blobs"}; 
chart.categoryField = "site"; 
chart.type="serial"; 
chart.theme = "light"; 

var graph = new AmCharts.AmGraph(); 
graph.valueField = "visit"; 
graph.type = "column"; 
graph.fillAlphas = 1; 
graph.lineAlpha = 0; 

var valuesAxis = new AmCharts.ValueAxis(); 
valuesAxis.integersOnly = true; 

graph.balloonText = "[[category]]: <b>Total: [[value]]</b>"; 
chart.depth3D = 45; 
chart.angle = 45; 
chart.addGraph(graph); 
chart.addValueAxis(valuesAxis); 

chart.write("blob_chart"); 

任何人都有一个线索,我怎么能管理检查的DataLoader返回null,如果是这样写计划“无可用数据”的图表,而不是吗?

回答

2

您可以使用Data Loader的postProcess处理程序检查数据是否为空,然后添加相对标签。 postProcess是一个自定义函数,它在传递给图表之前将加载的数据传入。

此时,您可以对其进行修改以及基于它执行任何其他任务,例如添加“无数据”标签。

即:

chart.dataLoader = { 
    url: "/api/blobs", 
    postProcess: function(data, options) { 
    if (data === null) { 
     data = []; 
     options.chart.addLabel("50%", "50%", "No Data Available"); 
    } 
    return data; 
    } 
}; 
+0

的伎俩,谢谢 – Aeseir

相关问题