Как отформатировать массив Ruby для использования в качестве данных в Highcharts - PullRequest
1 голос
/ 20 февраля 2012

Я пытаюсь отобразить график под названием «Покупки с течением времени» с использованием Highcharts в моем приложении Rails 3.1.

В своей функции я возвращаю массив, состоящий из даты created_at (в датеформат) и стоимость покупки (в целочисленном формате).Когда я отображаю функцию в виде, она выглядит следующим образом:

[2012-01-065002012-01-072502012-01-08130...]

Это означает: [[2012-01-06, 500], [2012-01-07, 250], [2012-01-08, 130]]

В представлении в коде JS Highcharts у меня есть следующее для серии:

    series: [{
      name: '<%= User.product_names_by_user(current_user) %>',
      pointInterval: <%= 1.day * 1000 %>,
      pointStart: <%= User.from_the_first_purchase_date(current_user) %>,
      data: <%= User.purchases_over_time(current_user) %>
    }]

from_the_first_purchase_date - это функция, которая просто возвращает самый первыйдата покупки в формате даты.

purchases_over_time - это рассматриваемая функция (как описано выше).

Из моего понимания (или отсутствия такового) API Highcharts я могу использоватьсписок массивов с двумя значениями в качестве данных диаграммы ( Highcharts docs ), тогда как первое значение массива представляет значение x, а второе - значение y.

Итак, я надеялся, что смогу составить график стоимости покупки с течением времени.В этом окне отображается моя диаграмма, но данные не отображаются, а видимые точки графика отсутствуют.

Я также попытался вернуть массив в следующем формате, но безрезультатно:

[["2012-01-06", 500], ["2012-01-07", 250], ["2012-01-08", 130]]

Есть предложения?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 25 февраля 2012

Или вы можете преобразовать дату и время в вашем контроллере как Date.parse, а затем использовать гем lazy-high-chart для отправки данных в HightChart в программе просмотра.Вот сайт для lazy-high-chart https://github.com/michelson/lazy_high_charts.

0 голосов
/ 20 февраля 2012

Вам нужно будет указать тип datetime для xAxis:

xAxis: { type: 'datetime' }

И ваши значения x должны быть отформатированы как

[[Date.UTC(2012,0,6),500],[Date.UTC(2012,0,7),250],[Date.UTC(2012,0,8),130]]

Внимание, определение месяцаjavascript Date.UTC начинается с 0 (0 = январь ... 11 = декабрь)

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