Rails: Chartkick cummulative user graph

前端 未结 1 1407
死守一世寂寞
死守一世寂寞 2021-01-24 06:14

I\'m using chartkick in an active admin dashboard and trying to track a cumulative user base over time.

Using groupdate to count by week I can successfully create a ch

相关标签:
1条回答
  • 2021-01-24 06:44

    If I understand your question, you need to manipulate the hash of data.

    In controller do somehing like this:

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

    Then show the chart in view as <%= line_chart @data %>

    If you inspect the hash <%= User.group_by_week(:created_at).count.inspect %> it becomes clear.

    In order to use accumulator over any hash, could be useful to add a custom method to Class hash.

    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! since Ruby v4.2.1

    0 讨论(0)
提交回复
热议问题