2013-06-24 34 views
1

我正在腳本化一個網頁,顯示ThingSpeak的HighStock數據圖表。它將數據調用限制爲8000點,所以我需要多次調用才能加載整個數據集。我打算在最新的數據進入時顯示圖表,然後添加更早的數據。我第一次嘗試使用addPoint()將導航器擴展回1970年,但不添加數據。添加日期早於當前數據的數據有問題嗎?我應該如何編寫腳本?異步將歷史記錄添加到現有HighStock圖表

這是我如何調用addPoint()方法:

dynamicChart.series[fieldList[fieldIndex].series] 
      .addPoint(fieldList[fieldIndex].data,false); 

和數組[]我把它:

fieldList: Array[3] 
    0: Object 
    data: Array[8000] 
     0: Array[2] 
      0: 1371821816000 
      1: 36.79 
     length: 2 
     __proto__: Array[0] 
     1: Array[2] 
      0: 1371821836000 
      1: 36.75 
     length: 2 
     __proto__: Array[0] 
     2: Array[2] 
     3: Array[2] 
     4: Array[2] 

我試圖增加turboThreshold至10000,但它沒」幫助。

然後我更換了加分這個()行:

dynamicChart.series[fieldList[fieldIndex].series].addPoint({},false); 

...並得到了同樣的結果。這裏發生了什麼?我的數據對象有什麼問題?

+0

在當前數據之前顯示數據沒有問題。確保你的點有數字作爲值,並且turboThreshold設置爲足夠高,如果你使用對象作爲點。另外,讓這個問題成爲jsFiddle的例子。 –

+0

請查看我添加到上面問題的詳細信息。 – turgo

+0

對不起,但我需要看到更多的代碼 - 正如我之前所說,與jsFiddle玩了一段時間,並重現那裏的問題。 –

回答

0

addPoints()方法只添加一個點。

我的解決辦法是在新的點推到原始數組排序,然後用使用setData()來更新系列:

for (var h=0; h<data.feeds.length; h++) // iterate through each feed (data point) 
{ 
    // if a numerical value exists add it 
    if (!isNaN(parseInt(v))) { fieldList[fieldIndex].data.push(p); } 
} 

fieldList[fieldIndex].data.sort(function(a,b){return a[0]-b[0]}); 
dynamicChart.series[fieldList[fieldIndex].series].setData(fieldList[fieldIndex].data,false); 

排序是非常重要的,如果訂單沒有增加,新數據將不會顯示。