Class: ActiveAdmin::Views::IndexAsCalendar

Inherits:
Component
  • Object
show all
Defined in:
lib/activeadmin_calendar/index_as_calendar.rb

Overview

Index as a Calendar

Render the index page as a month calendar grid. Resources are bucketed into day cells by a configurable attribute (default: ‘updated_at`) or via a custom scope.

index as: :calendar, group_by: :paid_at do |date, payments|
  ul { payments.each { |p| li p.amount } }
end

For pre-bucketed scopes (when the group-by column is not on the table or needs custom SQL) pass ‘:group_by_scope`:

scope :on_date, ->(date) { where(paid_at: date.all_day) }
index as: :calendar, group_by_scope: :on_date do |date, items|
  # ...
end

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.index_nameObject



23
24
25
# File 'lib/activeadmin_calendar/index_as_calendar.rb', line 23

def self.index_name
  "calendar"
end

Instance Method Details

#build(page_presenter, collection) ⇒ Object



27
28
29
30
31
32
# File 'lib/activeadmin_calendar/index_as_calendar.rb', line 27

def build(page_presenter, collection)
  @page_presenter = page_presenter
  @collection = collection
  prefetch_month_records!
  build_calendar
end

#group_byObject



34
35
36
# File 'lib/activeadmin_calendar/index_as_calendar.rb', line 34

def group_by
  @page_presenter[:group_by] || :updated_at
end

#group_by_scopeObject



38
39
40
# File 'lib/activeadmin_calendar/index_as_calendar.rb', line 38

def group_by_scope
  @page_presenter[:group_by_scope]
end