Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从Highstock中的RangeSelector获取当前选定的范围_Javascript_Charts_Highcharts_Highstock - Fatal编程技术网

Javascript 从Highstock中的RangeSelector获取当前选定的范围

Javascript 从Highstock中的RangeSelector获取当前选定的范围,javascript,charts,highcharts,highstock,Javascript,Charts,Highcharts,Highstock,我同时使用highcharts和highstock,有些图表使用了范围选择器 一切正常,但我希望获得当前选定的范围(当用户单击其中一个rangeSelector按钮时),以便我可以将其存储在cookie中,以了解下次默认情况下要显示的范围 到目前为止,我已经尝试了各种方法,比如添加一个chart.events.redrawtest来尝试捕获chart.rangeSelector.buttons对象,但在我的例子中,它似乎没有包含任何有趣的内容 对我来说,理想的方法是对rangeselector.

我同时使用highcharts和highstock,有些图表使用了
范围选择器

一切正常,但我希望获得当前选定的范围(当用户单击其中一个
rangeSelector
按钮时),以便我可以将其存储在cookie中,以了解下次默认情况下要显示的范围

到目前为止,我已经尝试了各种方法,比如添加一个
chart.events.redraw
test来尝试捕获
chart.rangeSelector.buttons
对象,但在我的例子中,它似乎没有包含任何有趣的内容

对我来说,理想的方法是对rangeselector.buttons进行事件回调,并使用一个简单的getter函数,类似于
chart.rangeselector.buttons[x].setState()
,名为
chart.rangeselector.buttons[x].getState()

我很惊讶这不存在。。。我一定错过了什么。任何人都可以在这方面提供帮助?

来自的JSFIDLE似乎部分地回答了这个问题(尽管我仍然很惊讶没有针对这个问题的事件回调)

xaxis上的SetExtrems事件执行以下操作:

 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);
                }
            }
        }
    }
这应该满足您的要求:

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);
      }
    }
  }
}

图表事件:重画可以获得显示范围。代码在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);
    }
}
事件:{
重画:函数(事件){

log('=============>图表重画您尝试过的内容或查看JSFIDLE的相关主题似乎部分地回答了这个问题(尽管我仍然很惊讶没有针对这个问题的事件回调)。