Невозможно отобразить графики высоких диаграмм с setextremes - PullRequest
2 голосов
/ 23 мая 2019

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

Я использую python, sqlite3 и Flask и пытаюсь скопировать этот примериз Highcharts

https://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/stock/demo/lazy-loading/

В примере они используют php, который здесь код

https://github.com/highcharts/highcharts/blob/master/samples/data/from-sql.php

Это моя setextreme функция вhtml page

function setExtremes(e)
// detect zoom button
{
if(typeof(e.rangeSelectorButton)!== 'undefined')
{
    if (e.rangeSelectorButton.type=='all')
    {
        var chart = Highcharts.charts[0];
        chart.showLoading('Loading data from server...');
        $.getJSON('http://192.168.0.74:5000/rango?start=' + Math.round(e.min) +'&end=' + Math.round(e.max) + '&callback=?', function (data) {



    // Arrange data

    alert('I am in')        
    for (i = 0; i< data.length; i++)
    {
        processed_json_temperatura.push(data[i][0], data[i][1]);
        processed_json_presion.push(data[i][0], data[i][2]);
        processed_json_humedad.push(data[i][0], data[i][3]);
        processed_json_lluvia.push(data[i][0], data[i][4]);
        processed_json_horas_frio.push(data[i][0], data[i][5]);
    }

    temperatura_matriz =  listToMatrix( processed_json_temperatura,2);
    presion_matriz = listToMatrix( processed_json_presion,2);
    humedad_matriz = listToMatrix( processed_json_humedad,2);
    lluvia_matriz = listToMatrix( processed_json_lluvia,2);
    horas_frio_matriz = listToMatrix(processed_json_horas_frio,2);

//update graphs with new values

    chart.series[0].setData(temperatura_matriz);
    chart.series[1].setData(presion_matriz);
    chart.series[2].setData(humedad_matriz);
    chart.series[3].setData(lluvia_matriz);
    chart.series[4].setData(horas_frio_matriz);
    chart.hideLoading();
        });
    }
}
}

На стороне сервера это мой код на python с флягой

@app.route("/rango")
def rango():
start=request.args.get('start')
end=request.args.get('end')
range = int(end)/1000 - int(start)/1000


# find the right table
# two days range loads minute data
if (range < 2 * 24 * 3600 * 1000):

connection = sqlite3.connect("/var/www/nueva_estacion.db")
cursor = connection.cursor()
cursor.execute("select (julianday(timestamp)-2440587.5)*86400000, round(temp1,2) as temp1, presion, round(humedad,2) as humedad, lluvia,aux1 from raw_all_sensors where datetime(timestamp) >=datetime('now', '-6 Day')")
results = cursor.fetchall()
print json.dumps(results)
return json.dumps(results)

Когда я нажимаю кнопку увеличения (на самом деле на highstock), я вижу сообщение "Загрузкаdata from Server ... ", но никогда не показывает новые графики и никогда не получает консольное сообщение" Я в сети "..

При мониторинге сообщений на стороне сервера я получаю

192.168.0,122 - - [22 мая / 2019 19:47:22] "GET / rango? start = 1558050049000 & end = 1558551372000 & callback = jQuery18307335687220269529_1558565228146 & _ = 1558565238543 HTTP / 1.1 "200 -

, где указаны точная дата начала, дата окончания, а затем я не понимаю обратный вызов и следующие 1026 * цифры * 10 *.* На всякий случай, это информация, поступающая с сервера [1558546562999.989, 17.82, 1021, 76.15, 0, 1]

Кто-нибудь может принести сюда немного света?

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