Получить значение х дескриптора навигатора highstock при наведении мыши

0

Я искал через API, чтобы узнать, есть ли способ получить x-значения дескриптора после события mouseup, но я ничего не мог найти. Единственное, что я мог найти, это то, как получить значения для главной серии, ничего для самого навигатора. Кто-нибудь знает способ получить эти ценности? Вот пример кода, который я использую в данный момент, у которого есть ползунок навигатора внизу, чтобы вы могли возиться. Я хочу перетащить дескриптор из навигатора, и как только я выпущу его, появится сообщение с предупреждением со значением x.

http://jsfiddle.net/fqptH/2/

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();
});
Теги:
highcharts
highstock

3 ответа

3

Попробуйте это после того, как сюжет будет нарисован:

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

Пример скрипки здесь.

  • 0
    Приятно. Гораздо лучше, чем мой ответ. Я не знал, что вы можете получить доступ к ручкам таким образом.
  • 0
    Спасибо Марк, есть ограничение с этим, хотя, если ваш курсор перемещается от ручки, он не выводит значения, и я также хотел бы вывести значения, если полоса прокрутки перемещена. Теперь у меня есть код, который в некоторой степени делает это, но по какой-то причине ему нравится много переустанавливать себя при перемещении ручки с обновленными данными. Вы знаете, почему этот код делает это? Просто переместите ручки, и вы поймете, что я имею в виду. jsfiddle.net/fqptH/7
Показать ещё 3 комментария
1

Я не уверен, насколько это поможет, но это может помочь вам: 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);
        }
    }
},

Кажется, он несколько раз запускается, когда вы перемещаете дескриптор, поэтому я не уверен, как вы узнаете, когда это будет сделано, а затем запустите всплывающее окно.

  • 0
    Есть идеи, почему это не сработает? jsfiddle.net/fqptH/5
  • 0
    Работал на меня. Похоже, событие afterSetExtremes может быть лучше.
0

С помощью полезных советов от @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:

http://jsfiddle.net/fqptH/9/

Ещё вопросы

Сообщество Overcoder
Наверх
Меню