javascript - 带有自定义范围选择器按钮的 Highstock setExtremes

标签 javascript jquery highcharts highstock

在 highstock 范围选择器中,我添加了一个自定义范围选择器按钮(名为:我的日期),并希望在调用此按钮时设置自定义极值。我知道如果您将简单的按钮放在图表外并调用:chart.xAxis[0].setExtremes(30,80);。

但我的情况有所不同,我想在“1m 1y All”范围选择器按钮旁边添加一个按钮,并希望该新按钮设置自定义极值日期。使用 xAxis 事件 setExtremes 似乎不起作用,除非我遗漏了什么。 http://jsfiddle.net/Aeaz3/1/

$(function() {

  $.getJSON('http://www.highcharts.com/samples/data/jsonp.php?filename=aapl-c.json&callback=?', function(data) {
    // Create the chart
    $('#container').highcharts('StockChart', {


        rangeSelector: {
                    buttons: [{
                        type: '',
                        count: 2,
                        text: 'My dates'
                    },{
                        type: 'hour',
                        count: 1,
                        text: '1h'
                    }, {
                        type: 'day',
                        count: 1,
                        text: '1d'
                    }, {
                        type: 'month',
                        count: 1,
                        text: '1m'
                    }, {
                        type: 'year',
                        count: 1,
                        text: '1y'
                    }, {
                        type: 'all',
                        text: 'All'
                    }],
        },

        title : {
            text : 'AAPL Stock Price'
        },
        xAxis: {    
                        events:{
                            setExtremes: function(e) {
                                  var xMin = e.min;
                                 var xMax = e.max; 
                                var zmRange = computeTickInterval(xMin, xMax);
                                    this.chart.xAxis[0].options.tickInterval =zmRange;
                                    this.chart.xAxis[0].isDirty = true;


                            },
                        }
        },
        series : [{
            name : 'AAPL',
            data : data,
            tooltip: {
                valueDecimals: 2
            }
        }]
    });
  });

});

最佳答案

setExtremes 回调:

Fires when the minimum and maximum is set for the axis, either by calling the .setExtremes() method or by selecting an area in the chart. The this keyword refers to the axis object itself. One parameter, event, is passed to the function. This contains common event information based on jQuery or MooTools depending on which library is used as the base for Highcharts.

所以它并不是真的要用来设置极端,而是当其他东西做了一些极端设置时发出通知。

也就是说,我仍然认为可以通过在单击按钮时捕获调用然后将其重置为自定义范围来将其用于您的用例:

xAxis: {    
    events:{
        if (e.trigger == "rangeSelectorButton" && 
            e.rangeSelectorButton.text == "My dates"){
            // it is your button that caused this,
            // so setExtrememes to your custom
            // have to do in timeout to let
            // highcharts finish processing events...
            setTimeout(function(){
                Highcharts.charts[0].xAxis[0].setExtremes(1198681756385,1368144000000)
            }, 1);
        }
    }
}, 

更新 fiddle here .

关于javascript - 带有自定义范围选择器按钮的 Highstock setExtremes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21364527/

相关文章:

javascript - 是否可以在CSS3或Javascript中将字母映射到圆柱体或球体?

javascript - JS - 未捕获的语法错误 : Unexpected Token

javascript - 制作一个 JQuery 计算器,更改 innerHTML 但没有任何反应

jquery - IE9 中的动画问题。需要一个 jquery 回退

javascript - 去除 Highcharts 曲线上的抗锯齿

javascript - this"指的是窗口对象

javascript 我可以动态构建一个函数名来调用吗?

javascript - 空间树切换功能

r - 使用 highcharter 自定义气泡图

javascript - 如何更改圆环图中文本的颜色