2017-09-04 54 views
1

我正在使用數據加載器生成圖。我的JSON數據看起來與此類似。amCharts動態堆疊列,將urlField或ID添加到JSON

{ 
     "Month": 1, 
     "District1": 2.6, 
     "District2": 5.7, 
     "District3": 6.2, 
     "District4": 7.3, 

    }, { 
     "Month": 2, 
     "District1": 4.6, 
     "District2": 5.7, 
     "District3": 2.2, 
     "District4": 6.3, 
     "District5": 4.3, 
     "District7": 1.3, 

    } 

在我的JavaScrit中,我使用此代碼生成來自PHP文件的圖表。

for (var key in chart.dataProvider[ 0 ]) { 
      if (chart.dataProvider[ 0 ].hasOwnProperty(key) && key != chart.categoryField) { 

var graph = new AmCharts.AmGraph(); 
       graph.valueField = key; 
       graph.type = "column"; 
       graph.title = key; 
       graph.lineThickness = 0; 

       graph.urlField =????????????????????? 
       graph.urlTarget ="_blank"; 
       graph.labelColor = "#cccccc"; 
       graph.connect = false; 
       graph.fillAlphas = 0.8; 
       graph.balloonFunction = adjustBalloonText; 
       graph.labelText = key; 
       chart.addGraph(graph); 

      } 

     } 

的數據是動態的,一些飛蛾有15個對象有的只有12

我想添加一個鏈接到每個區縣或ID,所以我可以生成新的圖表。 我如何將其添加到JSON字符串。我試圖用這樣的對象 來做到這一點。

{ 
"Month":1 
"District1": {"value":1, "url":"url.php?id=1", "id":1} 
"District2": {"value":2, "url":"url.php?id=2", "id":2} 
} 

我不能一個對象分配給graph.valueField =鍵;

這是可以解決的嗎?單擊事件僅返回月份索引而不是關於圖形「ID」的信息。

希望有人能幫助我解決這個問題。我一直在努力工作數小時,沒有任何運氣。

問候

馬丁

回答

1

你應該「扁平化」的dataProvider,如amCharts' urlFieldvalueField不能指鍵嵌套對象內。因此,而不是:

{ 
    "Month":1 
    "District1": {"value":1, "url":"url.php?id=1", "id":1} 
    "District2": {"value":2, "url":"url.php?id=2", "id":2} 
} 

嘗試輸出這樣的事情,而不是:

{ 

    "Month":1 

    "Dist1Value": 1, 
    "Dist1Url": "url.php?id=1", 
    "Dist1id": 1, 

    "Dist2Value": 2, 
    "Dist2Url": "url.php?id=2", 
    "Dist2id": 2 

} 

我也想改變你的for key ... in循環正常for循環遍歷預定義的區(我假設你知道如何許多地區可以)。

var amount_districts = 12; 

for(var i = 0; i < amount_districts.length; i++){ 

    // create a graph for each of our districts 

    var graph = new AmCharts.AmGraph(); 
    graph.type = "column"; 
    graph.title = "District " + (i+1); 
    graph.valueField = "Dist" + (i+1) + "Value"; 
    graph.UrlField = "Dist" + (i+1) + "Url"; 
    // ... etc 

    // finally, add this graph to the chart 
    chart.addGraph(graph); 

} 

如果發生「10區」沒有數據項,圖形將不會顯示(但它會顯示在圖例中)。