Highcharts Demo

author(s): Torstein Hønsi

by gauravsingh

HTML

<script src="https://code.highcharts.com/highcharts.js"></script>
<script src="https://code.highcharts.com/modules/drilldown.js"></script>

<div id="container" style="min-width: 310px; height: 400px; margin: 0 auto"></div>



<div id="demo"></div>

JavaScript

// Create the chart
var data_drilldown = [];
data_drilldown.push({ name: 'q1', y: 500});
data_drilldown.push({ name: 'q2', y: 200});

var data_drilldown1 = [];
data_drilldown1.push({ name: 'q1', y: 100});
data_drilldown1.push({ name: 'q2', y: 50});
data_drilldown1.push({ name: 'q3', y: 500});


var keys = [2019, '2020', '2021'];
var values = [data_drilldown, data_drilldown1, data_drilldown]

var result =  Object.assign.apply({}, keys.map( (v, i) => ( {[v]: { data: values[i]}} ) ) );
console.log(result); //returns {"foo": 11, "bar": 22, "baz": 33}


var json = result;

/*
var json = {
  "2019": {
    data: data_drilldown
  },
  "ipId2": {
    "name":"value",
    "anotherName":"another value"
  }
} */
        
var data = [];
data.push({ name: '2019', y: 500,  drilldown: true});
data.push({ name: '2020', y: 200, drilldown: true});

Highcharts.chart('container', {
    chart: {
        type: 'column',
        events: {
            drilldown: function (e) {
                if (!e.seriesOptions) {

                    var chart = this,
                        drilldowns = json,
                        series = drilldowns[e.point.name];

                    // Show the loading label
                    chart.showLoading('Simulating Ajax ...');

                    setTimeout(function () {
                        chart.hideLoading();
                        chart.addSeriesAsDrilldown(e.point, series);
                    }, 1000);
                }

            }
        }
    },
    title: {
        text: 'Async drilldown'
    },
    xAxis: {
        type: 'category'
    },

    legend: {
        enabled: false
    },

    plotOptions: {
        series: {
            borderWidth: 0,
            dataLabels: {
                enabled: true
            }
        }
    },

    series: [{
        name: 'Things',
        colorByPoint: true,
        data: data
    }],

    drilldown: {
        series: []
    }
});