2015-09-24 4 views
0

Моя диаграмма имеет несколько серий, и когда я пытаюсь добавить новую точку и разрешить сдвиг в true в функции addpoint в серии, кажется, что она занимает слишком много очков. Моя функция requestData запускает запрос ajax, который удаляет мой api и возвращает данные. Начальная загрузка нагрузки в данных просто прекрасна, однако после того, как первые точки добавляются в серию, кажется, что они снимают слишком много очков с некоторых серий.Сдвиг высоких карт сбрасывает слишком много очков в начале

Вот что это выглядит первоначальная нагрузка

https://gyazo.com/51a2afc465f8fbb625e384e75d52b865

и вот что это выглядит как после одного и двух запросов:

https://gyazo.com/0b523e4675c681b7495a38660b4de72c

https://gyazo.com/5cf7e9498ab3b34f3eaac1cf50a0bdc5

Вот мой код для запроса данных:

function requestData(chart1, start, devID, attrib) { 
$.ajax({ 
    url: 'api/MetricsAPI/', 
    data: { 
     deviceID: devID, 
     attribute: attrib, 
     startDate: start 
    }, 
    success: function (dataset) { 
     var chartSeries = chart1.series; 
     for (var index = 0; index < dataset.length; index++) { 
      for (var i = 0; i < chartSeries.length; i++) { 
       if (chartSeries[i].name == dataset[index].attribute) { 
        var shift = chartSeries[i].data.length > 12; 
        chartSeries[i].addPoint([parseInt(dataset[index].epochTime), dataset[index].value], true, shift); 
        console.log('date: ' + dataset[index].epochTime + ', ' + 'value: ' + dataset[index].value); 
       } 
      } 
     } 
     chart1.redraw(); 
     //call it again after one minute 
     setTimeout(requestData, 30000, chart1, dataset[dataset.length - 1].epochTime, devID, attrib); 
    }, 
    failure: function (xhr, error) { 
     console.log(xhr); 
     console.log(error); 
    }, 
    cache: false 
}); 
} 
+0

Невозможно установить 'chartSeries [i] .addPoint ([parseInt (dataset [index] .epochTime), dataset [index] .value], true, shift);' redraw param to false ('true' = > 'false')? –

+0

@Pawel Fus Я попробую это – Johnathon64

+0

Кроме того, я бы предложил дважды проверить это условие: 'chartSeries [i] .name == dataset [index] .attribute' - может случиться, что вы добавляете несколько точек с одинаковой временной меткой для одна серия, поэтому точки не видны, но удалены несколько точек. Рассматривали ли вы установку 'series.id', а затем используя' chart.get (id) ', чтобы добавить точки к соответствующим сериям? Конечно, идентификаторы должны быть четкими. –

ответ

1

Два возможных проблем с текущим кодом:

  • набор redraw параметров ложь, здесь: chartSeries[i].addPoint([parseInt(dataset[index].epochTime), dataset[index].value], true, shift);
  • набор series.id и избежать сравнения chartSeries[i].name == dataset[index].attribute. Вместо этого, чтобы получить правильную серию, используйте chart.get(id).
+0

Несколько точек добавляются в одно и то же место, из-за чего линии удаляются с конца, о котором вы упомянули, вероятно, должны добавить это. Я просто добавил проверку, чтобы увидеть, находится ли эта точка в свойстве xData для этой серии. – Johnathon64