Show Hide Series - More Faster

Example illustrates how you can fast up show/hide series

by mhardik

HTML

<script src="http://highcharts.com/js/testing.js"></script>
<div id="container" style="height: 400px"></div>
<button id="slow">Slow Toggle</button>
<button id="fast">Fast Toggle</button>

JavaScript

var group1 = [];
var chart = new Highcharts.Chart({
    chart: {
        renderTo: 'container'
    },
    series: [
    { color: 'green', data: [29.9, 71.5, 106.4, 129.2]},
    { color: 'green', data: [29.9, 71.5, 106.4, 129.2]},
    { color: 'green', data: [29.9, 71.5, 106.4, 129.2]},
    { color: 'green', data: [29.9, 71.5, 106.4, 129.2]},
    { color: 'green', data: [29.9, 71.5, 106.4, 129.2]},
    { color: 'green', data: [29.9, 71.5, 106.4, 129.2]},
    { color: 'green', data: [29.9, 71.5, 106.4, 129.2]},
    { color: 'green', data: [29.9, 71.5, 106.4, 129.2]},
    { color: 'green', data: [29.9, 71.5, 106.4, 129.2]},
    { color: 'green', data: [29.9, 71.5, 106.4, 129.2]},
    { color: 'green', data: [29.9, 71.5, 106.4, 129.2]},
    { color: 'green', data: [144.0, 176.0, 135.6, 148.5]},
    { data: [216.4, 194.1, 95.6, 54.4]}] 
}, 
    function(chart) {
    $(chart.series).each(function(i, serie) {
        if (serie.color == 'green') {
            group1.push(i);
        }
    });
});


$("#fast").click(function() {
    
    
    
    var _redraw = chart.redraw;
    chart.redraw = function(){};
    
    toggleSeries(this);
    
    chart.redraw = _redraw;
    chart.redraw();
    
    logTimeEnd('fast')
});

$("#slow").click(function() {
    logTimeStart();
    toggleSeries(this);
    logTimeEnd('slow');
});

function toggleSeries(context) {
    if ($(context).hasClass("hideseries")) {
        hs = true;
    } else {
        hs = false;
    }
    $(chart.series).each(function(idx, item) {
        if (item.color == 'green') {
            if (hs) {
                item.show();
            } else {
                item.hide();
            }
        }
    });
    $(context).toggleClass("hideseries");
}

var lastTime;
function logTimeStart() {
    lastTime = new Date();
}

function logTimeEnd(type) {
    var nowTime = new Date();
    var elapsed = nowTime - lastTime;
    
    console.log(type + ': ' + elapsed);
}