문제

지난 7 일 동안 SEER을 사용하여 새로운 사용자를 보여주는 롤링 그래프를 구현하고 싶습니다.

선견자가 설치되었습니다.

http://www.idolhands.com/ruby-on-rails/gems-plugins-and-engines/graphing-for-ruby-n-rails-with-seer

나는 구현 방법에 대해 내 두뇌를 얻기 위해 고군분투하고 있습니다.

플롯하고 싶은 사용자의 배열이 있습니다.

@users = user.all (: 조건 => {: create_at => 7. days.ago..mite.zone.now})

다음을 구현하는 올바른 방법을 볼 수 없습니다 : data_method create_at 날짜에 따라 롤업 할 수 있습니다.

SEER과 이와 비슷한 사람이 있습니까?

SEER 샘플 페이지 (위의 링크)를 살펴본 후 이것을 설명 할 수있는 사람보다 더 똑똑한 사람이 있습니까?

도움이 되었습니까?

해결책

지난 7 일 동안 새로운 사용자 수를 매일 보여 주려고한다고 가정합니다. 그렇다면 다음을 수행 할 수 있습니다

컨트롤러 코드

# 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

코드를 봅니다

<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'
      }
    )
 -%>

그만큼 data_method 차트의 입력으로 사용되는 배열의 각 행에 있어야합니다. 그만큼 ActiveRecord count 메소드는 해시를 반환하며 배열로 변환됩니다. struct 그것은 응답합니다 date 그리고 count 행동 양식.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top