class Trestle::Resource::Collection

Public Class Methods

new(admin, options={}) click to toggle source
# File lib/trestle/resource/collection.rb, line 7
def initialize(admin, options={})
  @admin, @options = admin, options
end

Public Instance Methods

decorate?() click to toggle source
# File lib/trestle/resource/collection.rb, line 37
def decorate?
  @options[:decorate] != false
end
finalize?() click to toggle source
# File lib/trestle/resource/collection.rb, line 33
def finalize?
  @options[:finalize] != false
end
paginate?() click to toggle source
# File lib/trestle/resource/collection.rb, line 29
def paginate?
  @options[:paginate] != false
end
prepare(params) click to toggle source
# File lib/trestle/resource/collection.rb, line 11
def prepare(params)
  collection = collection(params)
  collection = apply_scopes(collection, params)  if scope?
  collection = apply_sorting(collection, params) if sort?
  collection = paginate(collection, params)      if paginate?
  collection = finalize_collection(collection)   if finalize?
  collection = decorate_collection(collection)   if decorate?
  collection
end
scope?() click to toggle source
# File lib/trestle/resource/collection.rb, line 21
def scope?
  @options[:scope] != false
end
sort?() click to toggle source
# File lib/trestle/resource/collection.rb, line 25
def sort?
  @options[:sort] != false
end

Private Instance Methods

apply_scopes(collection, params) click to toggle source
# File lib/trestle/resource/collection.rb, line 42
def apply_scopes(collection, params)
  unscoped = collection(params)

  scopes.active(params).reduce(collection) do |collection, scope|
    merge_scopes(collection, scope.apply(unscoped))
  end
end
apply_sorting(collection, params) click to toggle source
# File lib/trestle/resource/collection.rb, line 50
def apply_sorting(collection, params)
  return collection unless params[:sort]

  field = params[:sort].to_sym
  order = params[:order].to_s.downcase == "desc" ? :desc : :asc

  if column_sorts.has_key?(field)
    @admin.instance_exec(collection, order, &column_sorts[field])
  else
    sort(collection, field, order)
  end
end