Обновление оси объекта диаграммы старших графиков с использованием jquery после начального рендеринга (django) - PullRequest
0 голосов
/ 31 марта 2020

Кажется, я могу выяснить базовый c вопрос

В моем приложении django, загружаемом в шаблон, есть график высоких диаграмм. Данные для диаграммы заполняются через ajax.

. Я хотел бы добавить кнопку над диаграммой, которая при нажатии переключает ось на логарифмическую c (вместо значения по умолчанию, линейное), но Я не могу сделать эту работу

Вот мой код

HTML

<button id="target" type='button' > switch to log </button>   
<div id="container1" style="width:100%; height:400px;"></div>

Javascript

<script>

$(document).ready(function() {

     var chartOptions = {
        chart: {
            renderTo: 'container1',
            type: 'line',
        },
        title: {text: null},
        xAxis: {title: {text: null}, labels: {rotation: -45}},
        yAxis: {title: {text: 'Item counts'}, 
                type: 'linear',
                stackLabels: {enabled: true},
        },
        plotOptions: {column: {dataLabels: {enabled: false}, stacking: 'normal'}},
        series: [{}],        
    };

    var chartDataUrl = "{% url 'global_trend_chart' %}" ;  

    $.getJSON(chartDataUrl,
        function(data) {
            chartOptions.xAxis.categories = data['chart_data']['date'];
            chartOptions.series[0].name = 'Global counts';
            chartOptions.series[0].data = data['chart_data']['item_counts'];
            var chartA = new Highcharts.Chart(chartOptions);
    });

    $( "#target" ).click(function() {    
        chartA.update({
            yAxis: {
                type: 'logarithmic',
            }

        });

    });

} );

</script>

Я ценю помощь

1 Ответ

0 голосов
/ 31 марта 2020
Переменная

Tha chartA не существует в области функции обратного вызова click. Вам необходимо объявить это на более высоком уровне, например:

var chartDataUrl = "{% url 'global_trend_chart' %}";  
var chartA;

$.getJSON(chartDataUrl,
    function(data) {
        chartOptions.xAxis.categories = data['chart_data']['date'];
        chartOptions.series[0].name = 'Global counts';
        chartOptions.series[0].data = data['chart_data']['item_counts'];
        chartA = new Highcharts.Chart(chartOptions);
});

$( "#target" ).click(function() {    
    chartA.update({
        yAxis: {
            type: 'logarithmic',
        }
    });
});

Живая демоверсия: http://jsfiddle.net/BlackLabel/6m4e8x0y/4935/

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