Асинхронная развертка Highcharts для нескольких уровней данных - PullRequest
0 голосов
/ 25 марта 2019

Настройка старшей диаграммы, которая может вызывать API для нескольких уровней данных асинхронно. По щелчку точек данных я хочу, чтобы старшая диаграмма «addSeriesAsDrilldown» сохранила все события детализации и параметры диаграммы без изменений.

Это для набора данных с иерархической архитектурой. Например, если я хочу получить 10 лучших результатов R & B за май 2010 года, мои данные сначала покажут точки данных, подобные этой: R & B

И затем щелкните точку данных 2010: R & B ^ 2010

А затем нажмите Точка данных мая: R & B ^ 2010 ^ мая

Мы использовали addSeriesAsDrilldown, но это помогает нам только для первого уровня данных.

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

                    var chart = this,
                        drilldowns = {
                            'Animals': {
                                name: 'Animals',
                                data: [
                                    {name: 'Sheep',
                                     y:5,
                                     drilldown: true
                                   },
                                    ['Cow', 3]
                                ]
                            },
                            'Fruits': {
                                name: 'Fruits',
                                data: [
                                    ['Apples', 5],
                                    ['Oranges', 7],
                                    ['Bananas', 2]
                                ]
                            },
                            'Cars': {
                                name: 'Cars',
                                data: [
                                    ['Toyota', 1],
                                    ['Volkswagen', 2],
                                    ['Opel', 5]
                                ]
                            }
                        },
                        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: [{
            name: 'Animals',
            y: 5,
            drilldown: true
        }, {
            name: 'Fruits',
            y: 2,
            drilldown: true
        }, {
            name: 'Cars',
            y: 4,
            drilldown: true
        }]
    }],

    drilldown: {
        series: []
    }
});

Ожидаем, что наши выходные данные будут иметь правильные данные при развертывании и понижении, не нарушая график.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...