Representação gráfica de novos usuários por data em um aplicativo de Rails usando Seer
-
19-09-2019 - |
Pergunta
Eu gostaria de implementar um gráfico de rolamento mostrando novos usuários por dia nos últimos 7 dias, utilizando Seer.
Eu tenho Seer instalado:
http://www.idolhands.com/ruby-on-rails/gems-plugins-and-engines/graphing-for-ruby-on-rails-with-seer
Eu estou lutando para obter o meu cérebro em torno de como implementar.
Eu tenho uma matriz dos Usuários eu quero parcela:
= @users User.all (: condições => {: created_at => 7.days.ago..Time.zone.now})
Não é possível ver o caminho certo para implementar a:. Data_method para enrolá-las por data created_at
Qualquer um feito isso ou similar com Seer?
Qualquer um mais esperto do que me capaz de explicar isso depois de olhar para a página de exemplo Seer (ligada acima)?
Solução
Eu estou supondo que você está tentando mostrar a nova contagem de usuários por dia nos últimos 7 dias. Se assim você pode fazer o seguinte
Código de Controlador
# 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
código Ver
<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'
}
)
-%>
O data_method
deve estar presente em cada linha da matriz usada como a entrada para o gráfico. O método ActiveRecord count
retorna um hash, o qual é convertido para uma matriz de struct
que responde a métodos date
e count
.