Я искал через API, чтобы узнать, есть ли способ получить x-значения дескриптора после события mouseup, но я ничего не мог найти. Единственное, что я мог найти, это то, как получить значения для главной серии, ничего для самого навигатора. Кто-нибудь знает способ получить эти ценности? Вот пример кода, который я использую в данный момент, у которого есть ползунок навигатора внизу, чтобы вы могли возиться. Я хочу перетащить дескриптор из навигатора, и как только я выпущу его, появится сообщение с предупреждением со значением x.
var highPoint=0;
var highCount=0;
$(function() {
function getPoints() {
var dataPoints = [];
for (var i=0; i<=100; i++) {
if (i == highPoint && highCount < 20) {
dataPoints[i]=[i,8];
highCount++;
} else {
var randomnumber=Math.floor(Math.random()*2);
dataPoints[i]=[i,randomnumber];
}
if (highCount == 20) { highCount = 0; }
}
if (highPoint == 100) { highPoint=0; }
if (highCount == 19) { highPoint++; }
return dataPoints;
}
var chart = new Highcharts.StockChart({
chart: {
renderTo: 'container'
},
navigator : {
series: {
//data: [[1,1],[2,2],[3,1]]
data: getPoints()
}
},
series: [{
data: [[1,1],[2,2],[3,1]]
//data: getPoints()
}]
});
function update() {
//chart.series[0].setData(getPoints());
setTimeout(update, 100);
}
update();
});
Попробуйте это после того, как сюжет будет нарисован:
// left handle
$(Highcharts.charts[0].scroller.handles[0].element).mouseup(function(){
var minPixel = Highcharts.charts[0].scroller.zoomedMin;
alert(Highcharts.charts[0].scroller.xAxis.toValue(minPixel));
});
// right handle
$(Highcharts.charts[0].scroller.handles[1].element).mouseup(function(){
var maxPixel = Highcharts.charts[0].scroller.zoomedMax;
alert(Highcharts.charts[0].scroller.xAxis.toValue(maxPixel));
});
Пример скрипки здесь.
Я не уверен, насколько это поможет, но это может помочь вам: http://jsfiddle.net/fqptH/3/
xAxis: {
events: {
setExtremes: function(e) {
console.log('<b>Set extremes:</b> e.min: '+ e.min +
' | e.max: '+ e.max + ' | e.trigger: ' + e.trigger);
}
}
},
Кажется, он несколько раз запускается, когда вы перемещаете дескриптор, поэтому я не уверен, как вы узнаете, когда это будет сделано, а затем запустите всплывающее окно.
С помощью полезных советов от @Mark я придумал следующее. toValue не правильно разрешает числа, но, просматривая источник, вы можете сделать что-то очень похожее.translate(value, true). Это преобразует положение пикселя в значение оси.
var scroller = Highcharts.charts[0].scroller;
var navMin = scroller.xAxis.translate(scroller.zoomedMin, true);
var navMax = scroller.xAxis.translate(scroller.zoomedMax, true);
alert('min: '+Math.round(navMin)+"\nmax: "+Math.round(navMax));
Здесь приведен полный пример jsfiddle: