Как динамически обновить jQuery Flot из Native JSON - PullRequest
2 голосов
/ 05 июля 2010

Предварительная информация: (Если вам интересно, откуда я)

Первый вопрос: Как задать переменную JS каждую n сек для массива JSON.

Благодаря помощи получили, что все идет хорошо :) 1011 *

Затем я работал над ограничением общего количества в массиве, пытался установить его равным 10, но каждый раз, когда он останавливался на 7 ... с помощью отсюда получалось это прекрасно работать.

Второй вопрос: Как ограничить собственный массив JSON 10 местами.

Опять работает отлично ..


Вопрос:

Теперь я застрял на этапе, когда у меня есть форматирование массива JSON в точном контексте, который я хотел бы. например: [["0", "7"], ["0", "7"], ["0", "7"]] И я стремлюсь построить это в Jquery Flot Graph . Теперь, если я вручную установлю переменную:

var PlotData= [["0", "7"], ["0", "7"], ["0", "7"]]

Jquery Flot отобразит это идеально , но в качестве возрастающего значения, которое начинается с нуля, оно добавит пустой график, а затем никогда не обновит его. Мой код выглядит следующим образом:

var numbers = [];
var jsonString = "";
var PlotData;

function EveryOneSec() {
  if (numbers.length == 10) {
      numbers.shift();
  }
  numbers.push(['0", "' Math.random()]);
  jsonString = JSON.stringify({'numbers': numbers});
  PlotData = numbers; //set to numbers for now rather than the JSON just for testing.
  $.plot($("#PlaceHolder"), [{ data: PlotData, points: { show: true}}]);
  setTimeout(EveryOneSec, 1000);
}

Теперь функция запускается каждую секунду. Но не буду обновлять сюжет. Кто-нибудь знает, что мне не хватает или что мне нужно сделать, чтобы иметь возможность динамически обновлять Jquery Flot Graph ?

Ответы [ 2 ]

3 голосов
/ 05 апреля 2013

Создание нового сюжета, как полагает Рейгель, - это не тот путь, которым он мог бы быть - это было в 2010 году, когда он был написан.

В настоящее время вы должны использовать setData(), redraw() и, возможно, setupGrid().

var oldData = [[0,0],[1,1]],
    newData = [[1,1],[2,2]],
    graph = $.plot($("#plot"), oldData, options);

graph.setData(newData);  // Replace oldData with newData
graph.setupGrid();       // Adjust axes to match new values
graph.draw();            // Update actual plot
0 голосов
/ 05 июля 2010

попробуйте что-то вроде этого ...

$.plot($("#PlaceHolder"), PlotData, {points: { show: true}});

также я думаю, у вас есть непарные кавычки здесь

numbers.push(['0", "' Math.random()]); // typo? should it be like ["0", Math.random()]
...