2013-02-18 31 views
3

我使用highcharts來顯示每日統計信息,我希望用戶能夠選擇日期範圍。動態更新pointStart和pointInterval

function requestData(chart, from, to, group) { 
    $.ajax({ 
     url: '/stats/chart?from='+from+'&to='+to+'&group='+group, 
     success: function(data) { 
      chart.series[0].setData(data.data); 
      chart.series[0].pointStart = data.start; 
      chart.series[0].pointInterval = data.interval; 
     }, 
     cache: false 
    }); 
} 

JS的功能做一個Ajax調用和返回是這樣的: -

{ 
"start":1358467200000, 
"interval":86400000, 
"data":[24,9,46,66,19,93,11,10,66,75,70,52,35,91,69,0,50,24,5,14,83,9,26,5,53,32,27,30,34,25,57,100] 
} 

如何更新圖表pointStart和pointInterval價值?

+0

你目前'success'功能的結果,發生在'當你'的console.log(數據)是什麼?服務器是否在響應的標題中設置了mimetype? – 2013-02-18 23:55:44

+0

繪製新的繪圖,但軸標籤不會更改爲正確的日期。我使用Content-type:application/json頭部類型傳回數據。 – pjknight 2013-02-19 00:29:07

+0

好的,所以對象回來並被正確識別並解析爲json - 這意味着這幾乎肯定是一個高難度的問題。 – 2013-02-19 00:39:42

回答

0

chart.series[0]沒有可編輯的pointStartpointInterval屬性。您需要通過像chart.series[0].setData()這樣的動態方法分配這些參數,並創建一個完整的options對象(現在您只發送值data.data,這是該函數的可接受參數,但它也可以接受對象 - check out the docs for setData()series options) 。

我建議改變你的JSON對象以匹配options對象的形式:

{ 
    "pointStart":1358467200000, 
    "pointInterval":86400000, 
    "data":[24,9,46,66,19,93,11,10,66,75,70,52,35,91,69,0,50,24,5,14,83,9,26,5,53,32,27,30,34,25,57,100] 
} 

然後直接發送JSON對象chart.series[0].setData(data)

1

我編輯了原始問題以顯示解釋問題的jsFiddle示例,但我已經提供了一個工作解決方案。

使用我的解決方案,圖表不必完全重新初始化,但所有系列都將被刪除,然後通過Chart.addSeries()方法添加新系列。我有一種感覺,Series.setData()會更有效率,但我不知道如何讓它工作 - 也許有人會在那裏!

我目前的解決方案(吮吸):jsFiddle solution

所以,在回答原來的海報,你必須這樣做,因爲@ jacobdalton的回答狀態,改變JSON對象以匹配options對象的形式,然後將這些對象提供給Chart.setData()函數。

此外,您可能會注意到false參數Series.remove(false)Chart.addSeries(false) - 這些論點確保圖表這些調用由每次不重新描繪,和一個Chart.redraw()可後來被稱爲以節省處理。

5

由於Highcharts 3,你可以使用series.update()

chart.series[0].update({ 
    pointStart: data.start 
    pointInterval: data.interval, 
    data: data.data 
}, false); // true if you want redraw 
+0

你應該考慮在一個電話中進行更新,我猜... – Guian 2013-04-22 13:59:47

+0

更新了我的評論,很好! ;) – Guian 2013-04-22 14:00:18