ruby-on-rails - rails : Chartkick cummulative user graph

标签 ruby-on-rails ruby chartkick

我在事件管理仪表板中使用 Chartkick 并尝试跟踪一段时间内的累积用户群。

使用 groupdate 按周计数,我可以成功创建一个显示时间点计数的图表,但很难显示累积结果。

因为我没有找到类似的问题,所以有关于最佳处理方法的建议吗?

图表部分

            <%= javascript_include_tag "https://www.gstatic.com/charts/loader.js" %>
            <%= line_chart User.group_by_week(:created_at).count %>

仪表板.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

最佳答案

如果我理解你的问题,你需要操纵数据的哈希值。

在 Controller 中执行如下操作:

@data = User.group_by_week(:created_at).count
accumulator = 0
@data.transform_values! do |val|
  val += accumulator
  accumulator = val
end

然后将 View 中的图表显示为 <%= line_chart @data %>

如果您检查哈希 <%= User.group_by_week(:created_at).count.inspect %>事情变得很清楚。

为了在任何哈希上使用累加器,向类哈希添加自定义方法可能会很有用。

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 起

关于ruby-on-rails - rails : Chartkick cummulative user graph,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51142556/

相关文章:

ruby-on-rails - 动态 URL -> Rails 中路由的 Controller 映射

ruby - 如何在执行下一行之前等待所有线程完成

ruby-on-rails - 在 Rails 应用程序中使用带有 Chartkick 的实例方法

ruby-on-rails - 使用Erubis 2.6.2与Rails 2.2.2不兼容?

ruby-on-rails - 使用 Chartkick 和 Rails 的多系列折线图

ruby - 如何消除条形图的透明度?

MySQL/Rails - Mysql2::Error(用户 'rails_user' @'localhost' 对数据库 'simple_cms_development' 的访问被拒绝):

ruby-on-rails - 使用部分,如何以 DRY 方式呈现 `striped` 表行?

ruby-on-rails - 如何为 Rails 4.1 枚举编写 i18n 字符串?

ruby-on-rails - ActiveRecord 范围不起作用