График новых пользователей по дате в приложении Rails с использованием Seer
-
19-09-2019 - |
Вопрос
Я хотел бы реализовать скользящий график, показывающий новых пользователей по дням за последние 7 дней с помощью Seer.
У меня установлен Seer:
http://www.idolhands.com/ruby-on-rails/gems-plugins-and-engines/graphing-for-ruby-on-rails-with-seer
Я изо всех сил пытаюсь понять, как это реализовать.
У меня есть массив пользователей, которых я хочу построить:
@users = User.all( :conditions => {:created_at => 7.дней.назад..Временная зона.сейчас})
Не вижу правильного способа реализовать :data_method для свертывания их по дате создания.
Кто-нибудь делал это или подобное с Seer?
Кто-нибудь умнее меня может объяснить это после просмотра образца страницы Seer (ссылка выше)?
Решение
Я предполагаю, что вы пытаетесь показать количество новых пользователей по дням за последние 7 дней.Если это так, вы можете сделать следующее
Код контроллера
# declare a struct to hold the results
UserCountByDate = Struct.new(:date, :count)
def report
@user_counts = User.count( :group => "DATE(created_at)",
:conditions => ["created_at >= ? ", 7.days.ago],
:order => "DATE(created_at) ASC"
).collect do |date, count|
UserCountByDate.new(date, count)
end
end
Посмотреть код
<div id="chart"></div>
<%= Seer::visualize(
@user_counts,
:as => :column_chart,
:in_element =>'chart',
:series => {
:series_label => 'date',
:data_method => 'count'
},
:chart_options => {
:height => 300,
:width => 100 * @user_counts.size,
:is_3_d => true,
:legend => 'none',
:colors => "[{color:'#990000', darker:'#660000'}]",
:title => "New users in last 7 days",
:title_x => 'date',
:title_y => 'count'
}
)
-%>
А data_method
должен присутствовать в каждой строке массива, используемого в качестве входных данных для диаграммы.А ActiveRecord count
метод возвращает хеш, который преобразуется в массив struct
который реагирует на date
и count
методы.