Highcharts test tool

by Torstein Hønsi

HTML

<script src="http://code.highcharts.com/highcharts.js"></script>
<script src="http://code.highcharts.com/modules/exporting.js"></script>

<div id="main">
    <a href="javascript:;" tabindex="1">Hit [tab] repeatedly to highlight data</a>
    <div id="container"></div>
</div>

CSS

#main {
    min-width: 300px;
    max-width: 800px;
    margin: 1em auto;
    padding: 1em;
}
#container {
    height: 300px;
}

JavaScript

$('#container').highcharts({
    
    chart: {
        type: 'column'
    },

    xAxis: {
        categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 
            'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
    },

    series: [{
        data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4],
        colorByPoint: true,
        point: {
            events: {
                click: function () {
                    console.log(this.category, this.y);
                }
            }
        }
    }]

});

var selected = {
    chart: 0,
    series: 0,
    point: -1
};

function tabHandler(e) {
    selected.point += 1;
    if (!Highcharts.charts[selected.chart].series[selected.series].points[selected.point]) {
        selected.point = 0;
        selected.series += 1;
    }
    if (!Highcharts.charts[selected.chart].series[selected.series]) {
        selected.series = 0;
    }
    if (!Highcharts.charts[selected.chart]) {
        selected.chart = 0;
    }
    Highcharts.charts[selected.chart].series[selected.series].points[selected.point].select();
    
    return false;
}

function spaceHandler(e) {
    var point = Highcharts.charts[selected.chart].getSelectedPoints()[0];
    if (point) {
        point.firePointEvent('click');
        
        return false;
    }
}

$(document).keydown(function(e) {
    if (e.keyCode === 9) {
        return tabHandler(e);
    }
    if (e.keyCode === 32) {
        return spaceHandler(e);
    }
});