2016-12-15 6 views
1

У меня есть HighStock заряд с скроллингом очень похож на этот одинHighcharts/Highstock положения прокрутки по умолчанию

http://jsfiddle.net/gh/get/jquery/3.1.1/highslide-software/highcharts.com/tree/master/samples/stock/demo/navigator-disabled/

Highcharts.stockChart('container', { 


     rangeSelector: { 
      selected: 1 
     }, 

     title: { 
      text: 'AAPL Stock Price' 
     }, 

     navigator: { 
      enabled: false 
     }, 

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

Я хочу позицию прокрутки по умолчанию, чтобы быть где-то в середине графика, хотя , Есть какой-либо способ сделать это?

ответ

1

Вы можете сделать это с помощью xAxis.setExtremes по вызову chart.events.load. Простой пример (используя произвольный диапазон 1 год):

chart: { 
    events: { 
     load: function() { 
     this.xAxis[0].setExtremes(
      Date.UTC(2013, 0, 1), 
      Date.UTC(2013, 11, 31) 
     ); 
     } 
    } 
    }, 

Пример jsFiddle.

Если вам нужно определить, что означает ваш «средний», это может зависеть от вашего источника данных, где вы могли бы его предварительно вычислить, или вы могли бы сделать это также по вызову chart.events.load.

Для удовольствия я добавил расчеты средней точки. Это использует moment.js, потому что это намного проще, чем перенос ваших собственных методов времени.

minX = data[0][0]; 
maxX = data[data.length - 1][0]; 
midX = minX + ((maxX - minX)/2); 

var midDate = new Date(midX); 
var startDate = moment(midDate); 
var endDateMoment = moment(midDate); 
startDate.subtract(1.5, 'months'); 
endDateMoment.add(1.5, 'months'); 

Обратите внимание, что я добавляю/вычитаю 1,5 месяца, чтобы сделать ваш 3-месячный селектор диапазона действительным. Библиотека moment.js обходится до двух месяцев. Вы понимаете эту идею. Так что ваш setExtremes становится:

this.xAxis[0].setExtremes(
     startDate.valueOf(), //.valueOf() in this context converts to javascript time 
     endDateMoment.valueOf() 
    ); 

И здесь живут jsFiddle.