Rails: Chartkick 累计用户图
Rails: Chartkick cummulative user graph
我在活动的管理仪表板中使用 chartkick 并尝试跟踪一段时间内累积的用户群。
使用 groupdate 按周计数我可以成功创建一个显示时间点计数的图表,但很难显示累积结果。
我没有找到类似的问题,有什么关于最佳解决方法的建议吗?
部分图表
<%= javascript_include_tag "https://www.gstatic.com/charts/loader.js" %>
<%= line_chart User.group_by_week(:created_at).count %>
dashboard.rb
column do
panel "Recent User Additions" do
table_for User.order("id desc").limit(10).each do |_user|
column(:email) { |user| link_to(user.email, admin_user_path(user)) }
column(:state_waters) { |user| link_to(user.state_waters, admin_user_path(user)) }
column(:state_waters) { |user| link_to(user.home_port, admin_user_path(user)) }
end
end
如果我理解你的问题,你需要操作数据的散列。
在控制器中做这样的事情:
@data = User.group_by_week(:created_at).count
accumulator = 0
@data.transform_values! do |val|
val += accumulator
accumulator = val
end
然后将图表显示为 <%= line_chart @data %>
如果您检查哈希 <%= User.group_by_week(:created_at).count.inspect %>
,它就会变得清晰。
为了在任何散列上使用累加器,将自定义方法添加到 Class 散列可能很有用。
module HashPatch
def accumulate_values!
accumulator = 0
transform_values! do |val|
val+= accumulator
accumulator = val
end
end
end
Hash.include HashPatch
points = {'x1' => 0, 'x2' => 10, 'x3' => 10, 'x4' => 10.1}
points.accumulate_values! #=> {"x1"=>0, "x2"=>10, "x3"=>20, "x4"=>30.1}
transform_values!
自 Ruby v4.2.1
我在活动的管理仪表板中使用 chartkick 并尝试跟踪一段时间内累积的用户群。
使用 groupdate 按周计数我可以成功创建一个显示时间点计数的图表,但很难显示累积结果。
我没有找到类似的问题,有什么关于最佳解决方法的建议吗?
部分图表
<%= javascript_include_tag "https://www.gstatic.com/charts/loader.js" %>
<%= line_chart User.group_by_week(:created_at).count %>
dashboard.rb
column do
panel "Recent User Additions" do
table_for User.order("id desc").limit(10).each do |_user|
column(:email) { |user| link_to(user.email, admin_user_path(user)) }
column(:state_waters) { |user| link_to(user.state_waters, admin_user_path(user)) }
column(:state_waters) { |user| link_to(user.home_port, admin_user_path(user)) }
end
end
如果我理解你的问题,你需要操作数据的散列。
在控制器中做这样的事情:
@data = User.group_by_week(:created_at).count
accumulator = 0
@data.transform_values! do |val|
val += accumulator
accumulator = val
end
然后将图表显示为 <%= line_chart @data %>
如果您检查哈希 <%= User.group_by_week(:created_at).count.inspect %>
,它就会变得清晰。
为了在任何散列上使用累加器,将自定义方法添加到 Class 散列可能很有用。
module HashPatch
def accumulate_values!
accumulator = 0
transform_values! do |val|
val+= accumulator
accumulator = val
end
end
end
Hash.include HashPatch
points = {'x1' => 0, 'x2' => 10, 'x3' => 10, 'x4' => 10.1}
points.accumulate_values! #=> {"x1"=>0, "x2"=>10, "x3"=>20, "x4"=>30.1}
transform_values!
自 Ruby v4.2.1