Highcharts Demo

author(s): Torstein Hønsi

by shruti patil

HTML

<script src="https://code.highcharts.com/highcharts.js"></script>
<script src="https://code.highcharts.com/modules/series-label.js"></script>
<script src="https://code.highcharts.com/modules/exporting.js"></script>
<script src="https://code.highcharts.com/modules/export-data.js"></script>

<div id="container"></div>

CSS

#container {
  min-width: 310px;
  max-width: 800px;
  height: 400px;
  margin: 0 auto
}

JavaScript

Highcharts.chart('container', {
  chart: {
    events: {
      load: function() {
        var series = this.series;
        console.log(localStorage)
        // If there is no legend items visibility flags saved in local storage, save them.
        if (!localStorage.legendItems) {
          let legend = []
          series.forEach(function(series) {
            legend.push(series.visible)
          })
          localStorage.legendItems = legend.toString()
        } else {
          let legend = localStorage.legendItems.split(',')
          let legendBooleans = []
          legend.forEach(function(elem) {
            var isTrueSet = (elem === 'true')
            legendBooleans.push(isTrueSet)
          })
          legendBooleans.forEach(function(state, i) {
          	series[i].update({
            	visible: state
            })
          })
        }
      }
    }
  },
  plotOptions: {
    series: {
      events: {
        legendItemClick: function() {
          var series = this.chart.series
          var index = this.index
          var legend = localStorage.legendItems.split(',')
          var legendBooleans = []
          legend.forEach(function(elem) {
            var isTrueSet = (elem === 'true')
            legendBooleans.push(isTrueSet)
          })
          // toggle series visibility flag and override it in local storage
          legendBooleans[index] = !legendBooleans[index]
          localStorage.legendItems = legendBooleans.toString()
        }
      }
    }
  },
  series: [{
    name: 'Installation',
    data: [43934, 52503, 57177, 69658, 97031, 119931, 137133, 154175]
  }, {
    name: 'Manufacturing',
    data: [24916, 24064, 29742, 29851, 32490, 30282, 38121, 40434]
  }, {
    name: 'Sales & Distribution',
    data: [11744, 17722, 16005, 19771, 20185, 24377, 32147, 39387]
  }]

});