2013-08-23 73 views
3

我正在使用highcharts和highstock,並且有一些使用rangeSelector的圖表。從HighSearch中的RangeSelector獲取當前選擇的範圍

一切工作正常,但我想獲取當前選擇的範圍(當用戶點擊rangeSelector按鈕之一),以便我可以將它存儲在cookie中以知道默認顯示哪個範圍下次。

到目前爲止,我已經嘗試了各種各樣的東西,比如增加一個chart.events.redraw測試來試圖捕獲chart.rangeSelector.buttons對象,但它似乎並沒有包含任何有趣的東西。

對我來說,理想的情況是rangeselector.buttons上的事件回調,具有簡單的getter函數,就像chart.rangeSelector.buttons[x].setState()的等價物,名爲chart.rangeSelector.buttons[x].getState()

我很驚訝這不存在...我必須錯過一些東西。任何人都可以幫忙嗎?

+0

後你已經嘗試或http://jsfiddle.net –

+1

拿來看的相關主題http://stackoverflow.com/questions/15846859/which-rangeselector-button-被選中的高分辨率 –

+0

來自http://jsfiddle.net/E6GHC/1/的jsfiddle似乎部分回答了這個問題(儘管我仍然很驚訝這裏沒有事件回調)。 –

回答

5

jsfiddle.net/E6GHC/1的的jsfiddle似乎部分地回答這個問題(雖然我依然驚訝它是這個事件沒有回調)

在x軸的setExtremes事件做工作:

xAxis: { 
     events: { 
      setExtremes: function(e) { 
       console.log(this); 
       if(typeof(e.rangeSelectorButton)!== 'undefined') 
       { 
        alert('count: '+e.rangeSelectorButton.count + 'text: ' +e.rangeSelectorButton.text + ' type:' + e.rangeSelectorButton.type); 
       } 
      } 
     } 
    } 
4

http://jsfiddle.net/E6GHC/5/應該做你想做的:

xAxis: { 
    events: { 
    setExtremes: function(e) { 
     if(typeof(e.rangeSelectorButton)!== 'undefined') { 
     var c = e.rangeSelectorButton.count; 
     var t = e.rangeSelectorButton.type; 
     var btn_index = null; 
     if(c == 1 && t == "month"){ 
      btn_index = 0; 
     } else if(c == 3 && t == "month"){ 
      btn_index = 1; 
     } else if(c == 6 && t == "month"){ 
      btn_index = 2; 
     } else if(t == "ytd"){ 
      btn_index = 3; 
     } else if(c == 1 && t == "year"){ 
      btn_index = 4; 
     } else if(t == "all"){ 
      btn_index = 5; 
     } 
     // Store btn_index in a cookie here and use it 
     // to initialise rangeSelector -> selected next 
     // time the chart is loaded 
     alert(btn_index); 
     } 
    } 
    } 
} 
2

圖表事件:重畫可以得到顯示範圍。代碼在highstock測試3.10

events: { 
    redraw: function(event) { 
     console.log('==============> chart redraw <=============='); 
     console.log(
      Highcharts.dateFormat('%Y-%m-%d %H:%M:%S', event.currentTarget.xAxis[0].min), 
      Highcharts.dateFormat('%Y-%m-%d %H:%M:%S', event.currentTarget.xAxis[0].max) 
     ); 
     // log the min and max of the y axis 
     console.log(event.currentTarget.yAxis[0].min, event.currentTarget.yAxis[0].max); 
    } 
}