Rails: совокупный пользовательский график Chartkick

Я использую chartkick в активной панели администратора и пытаюсь отслеживать совокупную базу пользователей с течением времени.

Используя групповую дату для подсчета по неделям, я могу успешно создать диаграмму, отображающую подсчет времени, но изо всех сил пытаюсь отобразить совокупные результаты.

Любое предложение о наилучшем подходе, поскольку я не нашел подобного вопроса?

частичная диаграмма

            <%= 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

person AJC    schedule 02.07.2018    source источник


Ответы (1)


Если я понимаю ваш вопрос, вам нужно манипулировать хэшем данных.

В контроллере сделайте что-то вроде этого:

@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 %>, станет ясно.

Чтобы использовать аккумулятор для любого хэша, может быть полезно добавить пользовательский метод в хэш класса.

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

person iGian    schedule 02.07.2018
comment
Спасибо, я добавил к пользовательской модели с момента использования devise. - person AJC; 08.08.2018