Как диагностировать ошибку графиков?

Если вы только начинаете осваивать систему MajorDoMo и чего-то не знаете или не можете понять, то задавайте свои вопросы в этой ветке.

Модератор: immortal

Ответить
ksv
Сообщения: 102
Зарегистрирован: Вт июл 17, 2018 10:19 am
Благодарил (а): 23 раза
Поблагодарили: 4 раза

Как диагностировать ошибку графиков?

Сообщение ksv » Чт июн 06, 2019 10:09 am

Я пока для теста использую два типа графиков, встроенный модуль и Highstock. В течение месяца это работало хорошо, собирались данные с датчиков температуры, отображалось всё нормально. Недавно хайсток отказался отрисовываться. А встроенный модуль графиков при этом продолжает хорошо всё рисовать. Оба типа графиков работают по одним и тем же исходным данным. Но на странице с хайстоком просто пусто, ничего нет. Как такую проблему диагностировать, подскажите плз?

Код хайстока брал из примера откуда-то и немного правил (свои датчики, цвета и толщины линиям задал свои, это всё работало):

Код: Выделить всё

<script type="text/javascript" src="../../highcharts/js/jquery-1.8.2.min.js"></script>
<script type="text/javascript" src="../../highcharts/js/highstock.js"></script>
<script type="text/javascript">

$(function () {
    var seriesOptions = [],
          obsss = 0,
          seriesCounter = 0,
          timeback = 0,
          names = ['Датчик 1','Датчик 2','Датчик 3'], 
          sensornames = ['oThermoSensor0.value', 
                         'oThermoSensor1.value', 
                         'oThermoSensor2.value'],
 		  chartcolor = ['#ff0000','#00ff00','#0000ff'];

    Highcharts.setOptions({
        lang: {
            months: ['Январь','Февраль','Март','Апрель','Май','Июнь','Июль', 
                          'Август','Сентябрь','Октябрь','Ноябрь','Декабрь'],

            shortMonths: ['Янв','Фев','Мар','Апр','Май','Июн','Июл', 
                                     'Авг','Сен','Окт','Ноя','Дек'],

            weekdays: ['Вск','Пнд','Втр','Срд','Чтв','Птн','Сбт'],

            rangeSelectorZoom: 'Маcштаб',
            rangeSelectorFrom: 'От',
            rangeSelectorTo: 'До',
            thousandsSep: ' '
        },
            global: {
                useUTC: false
            }
    });


    // create the chart when all data is loaded
    createChart = function () {
        $('#container').highcharts('StockChart', {
            rangeSelector: {
                buttons: [{ type: 'hour',    count: 1, text: '1 ч' },
                               { type: 'day',     count: 1, text: '1 д' },
                               { type: 'day',     count: 2, text: '2 д' },
                               { type: 'week',   count: 1, text: 'нед' },
                               { type: 'month', count: 1, text: 'мес' },
                               { type: 'month', count: 6, text: '6 мес' },
                               { type: 'year',    count: 1, text: 'год' },
                               { type: 'all', text: 'Всё' }],
                selected: 1  // Какая кнопка выбрана по умолчанию
            },
  
            title: { text : 'График температур в доме'},
            legend: { enabled : true,
                           layout : 'horizontal',
                           align : 'center',
                           verticalAlign : 'top',
                           borderWidth: 0,
                           x : 0,
                           y : 20 },

            xAxis : {
 				ordinal: false,
                minRange: 3600 * 1000 // one hour
            },

            yAxis: {
                title: {
                    text: 'Температура (°C)'
                }
            },

            plotOptions: {
                series: {
                    lineWidth: 2,
 					
                    point: {
                        events: {
                            'click': function () {
                                if (this.series.data.length > 1) {
                                    this.remove();
                                }
                            }
                        }
                    }
                }
            },

            exporting: {
                enabled: false
            },

            series: seriesOptions 			
        });
    };

    $.each(names, function (i, name) {
        $.getJSON('/objects/?script=jconhs&name='+sensornames[i]+'&callback=?', function (data) {

            seriesOptions[i] = {
                name: name,
                data: data,
                type: 'spline',
 				color: chartcolor[i]
            };

            // As we're loading the data asynchronously, we don't know what order it will arrive. So
            // we keep a counter and create the chart when all the data is loaded.
            seriesCounter += 1;

            if (seriesCounter === names.length) {
                createChart();
            }
        });
    });

});
</script>

<div id="container" style="height: 1000px; min-width: 500px"></div>
JackOfShadows
Сообщения: 108
Зарегистрирован: Ср янв 09, 2019 8:37 pm
Благодарил (а): 27 раз
Поблагодарили: 28 раз

Re: Как диагностировать ошибку графиков?

Сообщение JackOfShadows » Чт июн 06, 2019 11:37 am

Посмотрите, нет ли ошибок в консоли браузера. В хроме - F12.
ksv
Сообщения: 102
Зарегистрирован: Вт июл 17, 2018 10:19 am
Благодарил (а): 23 раза
Поблагодарили: 4 раза

Re: Как диагностировать ошибку графиков?

Сообщение ksv » Чт июн 06, 2019 12:00 pm

Спасибо за подсказку, да, ошибка есть:

JAVASCRIPT ERROR: URL: http://172.16.0.73/page/18.html - Uncaught TypeError: $.publish is not a function; line: 75

Но легче не стало, ибо причины её возникновения я не понимаю.
Вот этот кусок кода, где ошибка возникает:

Код: Выделить всё

            wsSocket.binaryType = 'blob';
            wsSocket.onopen = function(msg) {
             ///connected
              console.log('WS connected (/page/18.html)');
              startedWebSockets=1;
              clearTimeout(wsTimer);
              $.publish('wsConnected');
            };
JackOfShadows
Сообщения: 108
Зарегистрирован: Ср янв 09, 2019 8:37 pm
Благодарил (а): 27 раз
Поблагодарили: 28 раз

Re: Как диагностировать ошибку графиков?

Сообщение JackOfShadows » Чт июн 06, 2019 1:26 pm

Рublish/subscribe pattern in JS/jQuery


https://github.com/sergejey/majordomo/b ... ckets.html

<#ROOTHTML#>js/jquery.tiny-pubsub.js - есть этот файл?
ksv
Сообщения: 102
Зарегистрирован: Вт июл 17, 2018 10:19 am
Благодарил (а): 23 раза
Поблагодарили: 4 раза

Re: Как диагностировать ошибку графиков?

Сообщение ksv » Чт июн 06, 2019 1:32 pm

Да, присутствует.
ksv
Сообщения: 102
Зарегистрирован: Вт июл 17, 2018 10:19 am
Благодарил (а): 23 раза
Поблагодарили: 4 раза

Re: Как диагностировать ошибку графиков?

Сообщение ksv » Пт июн 07, 2019 10:43 am

Мне всё ещё нужна помощь, если кто что может подсказать куда копать - буду рад.
JackOfShadows
Сообщения: 108
Зарегистрирован: Ср янв 09, 2019 8:37 pm
Благодарил (а): 27 раз
Поблагодарили: 28 раз

Re: Как диагностировать ошибку графиков?

Сообщение JackOfShadows » Пт июн 07, 2019 11:50 am

https://gist.github.com/cowboy/661855
https://github.com/cowboy/jquery-tiny-p ... -pubsub.js
Убедиться, что файл действительно подключается.
Натыкать console.log().
Ответить