2015-09-06 24 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

相關問題