2016-12-20 1 views

ответ

1

Вы можете сделать это с помощью метода setExtremes. Сначала вам нужно получить текущее минимальное время на xAxis, используя getExtremes. Затем вы устанавливаете новое максимальное время на минимальное время. Я использовал moment.js для обработки вычитаемых месяцев (или независимо от вашего выбора диапазона). Я узнаю, какая кнопка диапазона выбрана, а затем используйте value и type, чтобы определить, сколько из того типа даты вычесть, чтобы получить мое новое время начала. Я только сделал это с настройкой 3m, установленной в вашей демонстрации. Вам нужно будет добавить логику для любого другого типа. Вам также придется обрабатывать слишком много назад, чтобы вы оказались вне диапазона данных - это можно сделать, но я оставлю это вам.

Basic "назад" Кнопка функции:

$("#btnBack").click(function() { 
    var theChart = $('#container').highcharts(), 
     extremes = theChart.xAxis[0].getExtremes(), 
     minTime = extremes.min, 
     maxTime = extremes.max, 
     currRangeIndex = theChart.rangeSelector.selected, 
     currRange = theChart.rangeSelector.buttonOptions[currRangeIndex], 
     newMaxTime = minTime; 

    // new start/end times 
    var startTime, 
     endTime; 

    if (currRange.type == 'month') { 
     var endDate = new Date(newMaxTime); 
     var startDate = moment(endDate);  
     startDate.subtract(currRange.count, 'months'); 

     startTime = startDate.valueOf(); 
     endTime = newMaxTime; 
    } 
    theChart.xAxis[0].setExtremes(startTime, endTime); 
}); 

Рабочая "назад" Кнопка jsFiddle.

+0

Кроме того, пользовательские кнопки могут быть отображены с помощью http://api.highcharts.com/highcharts/Renderer.button http://jsfiddle.net/x0Lnp977/3/, поэтому функциональность селекторов диапазона может быть изменена в более обычном режиме путь. – morganfree

+0

Большое спасибо. Это то, что мне нужно. –

+0

Вперед не работает. Есть ли у меня что-то неправильно –