2013-06-24 2 views
1

Я создаю сценарий веб-страницы, на которой отображается таблица данных HighStock от ThingSpeak. Он ограничивает вызовы данных до 8000 точек, поэтому мне нужно сделать несколько вызовов для загрузки всего набора данных. Я планирую показать график, когда появятся последние данные, а затем добавить более ранние данные. Моя первая попытка использования addPoint() расширяет навигатор до 1970 года, но не добавляет данные. Есть ли проблема с добавлением данных с датами раньше текущих данных? Как мне это сделать?Асинхронно добавлять историю в существующую диаграмму HighStock

Вот как я вызываю метод addPoint():

dynamicChart.series[fieldList[fieldIndex].series] 
      .addPoint(fieldList[fieldIndex].data,false); 

и массив [], что я отправить его:

fieldList: Array[3] 
    0: Object 
    data: Array[8000] 
     0: Array[2] 
      0: 1371821816000 
      1: 36.79 
     length: 2 
     __proto__: Array[0] 
     1: Array[2] 
      0: 1371821836000 
      1: 36.75 
     length: 2 
     __proto__: Array[0] 
     2: Array[2] 
     3: Array[2] 
     4: Array[2] 

Я попытался увеличения turboThreshold до 10000, но это Ждут» t помочь.

Тогда я заменил добавления точек линии() с этим:

dynamicChart.series[fieldList[fieldIndex].series].addPoint({},false); 

... и получил тот же результат. Что тут происходит? Что не так с моим объектом данных?

+0

Нет проблем с отображением данных перед текущими данными. Убедитесь, что ваши точки имеют числа в качестве значений, а параметр turboThreshold установлен на достаточно высокий уровень, если вы используете объекты в качестве точек. Кроме того, сделайте пример jsFiddle с этой проблемой. –

+0

Подробнее смотрите на подробнее. – turgo

+0

Извините, но мне нужно увидеть больше кода - как я уже говорил, поиграйте с jsFiddle и воспроизведите там проблему. –

ответ

0

Метод addPoints() добавляет только одну точку.

Моего решения было выдвинуть новые точки в оригинальный массив, сортировать его, а затем использовать УстановитьДанный() для обновления серии:

for (var h=0; h<data.feeds.length; h++) // iterate through each feed (data point) 
{ 
    // if a numerical value exists add it 
    if (!isNaN(parseInt(v))) { fieldList[fieldIndex].data.push(p); } 
} 

fieldList[fieldIndex].data.sort(function(a,b){return a[0]-b[0]}); 
dynamicChart.series[fieldList[fieldIndex].series].setData(fieldList[fieldIndex].data,false); 

Сортировка была важна, если порядок не растет, новые данные не будут отображаться.