2012-11-02 70 views
0

我有這個json,我需要與amCharts線圖的工作,插入日期對象JSON

 var chartData = [{ 
      date: "2009/10/2", 
      value: 5, 
      name: 5 
     }, { 
      date: "2009/10/3", 
      value: 15, 
      name: 5 

     }, { 
      date: "2009/10/4", 
      value: 13, 
      name: 10 
     }, { 
      date: "2009/10/5", 
      value: 17, 
      name: 30 
     }, { 
      date: "2009/10/6", 
      value: 15, 
      name: 5 
     }, { 
      date: "2009/10/7", 
      value: 19, 
      name: 5 
     }]; 

爲了與amCharts兼容,我需要日期值指定爲Date對象,所以我沒通過下面的函數,

 function parseDate(){ 

      for(var i = 0; i < chartData.length; ++i) { 
       var dateArray = chartData[i]["date"].split("/"); 

       chartData[i]["date"] = new Date(Number(dateArray[0]), Number(dateArray[1])-1, Number(dateArray[2])); 
       window.alert(chartData[i]["date"]);//for debugging purposes 
      } 
      return chartData; 
     } 

但我仍然得到一個空的圖形,沒有線.. :(但如果我硬編碼的JSON如下,

 var chartData = [{ 
      date: new Date(2009, 10, 2), 
      value: 5, 
      name: 5 
     }, { 
      date: new Date(2009, 10, 3), 
      value: 15, 
      name: 5 

     }, { 
      date: new Date(2009, 10, 4), 
      value: 13, 
      name: 10 
     }, { 
      date: new Date(2009, 10, 5), 
      value: 17, 
      name: 30 
     }, { 
      date: new Date(2009, 10, 6), 
      value: 15, 
      name: 5 
     }, { 
      date: new Date(2009, 10, 7), 
      value: 19, 
      name: 5 
     }]; 

圖表顯示,請幫助我解決這個問題。

非常感謝你:)

編輯:代碼來生成圖(僅供參考)

 AmCharts.ready(function() { 

      parseDate(); 

      // SERIAL CHART  
      chart = new AmCharts.AmSerialChart(); 
      chart.pathToImages = "../amcharts/images/"; 
      chart.zoomOutButton = { 
       backgroundColor: '#000000', 
       backgroundAlpha: 0.15 
      }; 
      chart.dataProvider = chartData; 
      chart.categoryField = "date"; 

      // listen for "dataUpdated" event (fired when chart is inited) and call zoomChart method when it happens 
      chart.addListener("dataUpdated", zoomChart); 

      // AXES 
      // category     
      var categoryAxis = chart.categoryAxis; 
      categoryAxis.parseDates = true; // as our data is date-based, we set parseDates to true 
      categoryAxis.minPeriod = "DD"; // our data is daily, so we set minPeriod to DD 
      categoryAxis.dashLength = 2; 
      categoryAxis.gridAlpha = 0.15; 
      categoryAxis.axisColor = "#DADADA"; 


      var i = 0; 
      for (var key in chartData[0]) { 
       if (key != 'date') { 
        var valueAxis = new AmCharts.ValueAxis(); 
        valueAxis.offset = i * 40; 
        valueAxis.dashLength = 4; 
        valueAxis.axisColor = "#FF6600"; 
        valueAxis.axisAlpha = 0; 
        chart.addValueAxis(valueAxis); 

        // GRAPH 
        var graph = new AmCharts.AmGraph(); 
        graph.valueAxis = valueAxis; // we have to indicate which value axis should be used 
        graph.type = "line"; 
        graph.title = "infection # " + i; 
        graph.valueField = key; 

        graph.customBullet = "images/star.gif"; // bullet for all data points 
        graph.bulletSize = 14; // bullet image should be a rectangle (width = height) 
        graph.customBulletField = "customBullet"; // this will make the graph to display custom bullet (red star) 
        chart.addGraph(graph); 
       } 
       i = i + 1; 
      } 


      // CURSOR 
      var chartCursor = new AmCharts.ChartCursor(); 
      chartCursor.cursorPosition = "mouse"; 
      chart.addChartCursor(chartCursor); 

      // SCROLLBAR 
      var chartScrollbar = new AmCharts.ChartScrollbar(); 
      chart.addChartScrollbar(chartScrollbar); 

      // LEGEND 
      var legend = new AmCharts.AmLegend(); 
      legend.marginLeft = 110; 
      chart.addLegend(legend); 

      // WRITE 
      chart.write("chartdiv"); 
     }); 
+0

會發生什麼,如果你硬代碼'chartData [ i] [「date」] = new Date(2009,10,7)'? – MrCode

+0

同樣的結果..我做了'新日期(2010,10,我)'但仍然是一個空的圖......現在我想知道這是一個問題與cde我生成圖...但它工作正常,如果我直接傳遞json與日期對象如下:(@MrCode –

回答

2

試試這個:

function parseDate() { 
    for(var i = 0; i < chartData.length; ++i) 
    chartData[i]["date"] = new Date(chartData[i]["date"]); 
    return chartData; 
} 
+0

儘可能多我希望這個工作,我得到了相同的結果..和空圖:(但謝謝你的回覆:) –

+0

我不知道如果這會產生任何影響,但是你可以試試'chartData [i] .date = new Date(chartData [i] .date);'? –

+0

HEY ...謝謝你.yous working..even mine working ..我認爲它是錯誤的瀏覽器..感謝幫助:) :) –