Обновление данных в Morris.LineChart

Рейтинг: 0Ответов: 1Опубликовано: 31.03.2015

Добрый день.

Для отображения результатов измерений (x:timestamp, у:[value1, value2]) я использую morris.js LineChart.

Все получается хорошо - данные масштабируются, выводится легенда, на графике две линии для []value1 и []value2.

Но когда я хочу получить следующую порцию данных - начинается проблема с масштабированием: одна серия вообще пропадает, вторая жутким образом обрезается. LineChart обновляется при помощи метода setData(dataArray)

var graph;
var gdata = [];

graph = Morris.Line({
    element: 'stat',
    data: gdata,
    xkey: 'x',
    parseTime:false,
    xLabels: 'second',
    ykeys: ['V1','V2'],
    labels: ['Val1', 'Val2']
});
$.get("http://host/getdata", function(data) {
    for (var i=0;i<data.length;i++) {
        t = new Date(data[i]["times"] * 1000).asTimeString('h:i:s');
        tmp = {x:t, V1:data[i]["val1"], V2:data[i]["val2"]};
        gdata.push(tmp);
    }
}).done(function(){
    graph.setData(gdata)
});

$('#next').click(function(){
    gdata = [];
    $.get("http://host/getdata?page="+next_page, function(data) {
        for (var i=0;i<data.length;i++) {
            t = new Date(data[i]["times"] * 1000).asTimeString('h:i:s');
            tmp = {x:t, V1:data[i]["val1"], V2:data[i]["val2"]};
            gdata.push(tmp);
        }
    }).done(function(){
        graph.setData(gdata)
    });
});

$('#prev').click(function(){
    gdata = [];
    $.get("http://host/getdata?page="+prev_page, function(data) {
        for (var i=0;i<data.length;i++) {
            t = new Date(data[i]["times"] * 1000).asTimeString('h:i:s');
            tmp = {x:t, V1:data[i]["val1"], V2:data[i]["val2"]};
            gdata.push(tmp);
        }
    }).done(function(){
        graph.setData(gdata)
    });
});

Есть соображения как можно решить эту проблему с масштабированием?

Ответы

Ответов пока нет.