Class: Admin::Base::Resource::IndexConfig

Inherits:
Object
  • Object
show all
Defined in:
lib/admin/base/resource.rb

Overview

Index view configuration

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize ⇒ IndexConfig

Returns a new instance of IndexConfig.



257
258
259
260
261
262
263
264
265
266
267
# File 'lib/admin/base/resource.rb', line 257

def initialize
  @searchable_fields = []
  @sortable_fields = []
  @default_sort = nil
  @default_sort_direction = :desc
  @columns_list = []
  @filters_list = []
  @stats_list = []
  @per_page = 25
  @includes_list = []
end

Instance Attribute Details

#columns_list ⇒ Object (readonly)

Returns the value of attribute columns_list.



254
255
256
# File 'lib/admin/base/resource.rb', line 254

def columns_list
  @columns_list
end

#default_sort ⇒ Object (readonly)

Returns the value of attribute default_sort.



254
255
256
# File 'lib/admin/base/resource.rb', line 254

def default_sort
  @default_sort
end

#default_sort_direction ⇒ Object (readonly)

Returns the value of attribute default_sort_direction.



254
255
256
# File 'lib/admin/base/resource.rb', line 254

def default_sort_direction
  @default_sort_direction
end

#filters_list ⇒ Object (readonly)

Returns the value of attribute filters_list.



254
255
256
# File 'lib/admin/base/resource.rb', line 254

def filters_list
  @filters_list
end

#includes_list ⇒ Object (readonly)

Returns the value of attribute includes_list.



254
255
256
# File 'lib/admin/base/resource.rb', line 254

def includes_list
  @includes_list
end

#per_page ⇒ Object (readonly)

Returns the value of attribute per_page.



254
255
256
# File 'lib/admin/base/resource.rb', line 254

def per_page
  @per_page
end

#searchable_fields ⇒ Object (readonly)

Returns the value of attribute searchable_fields.



254
255
256
# File 'lib/admin/base/resource.rb', line 254

def searchable_fields
  @searchable_fields
end

#sortable_fields ⇒ Object (readonly)

Returns the value of attribute sortable_fields.



254
255
256
# File 'lib/admin/base/resource.rb', line 254

def sortable_fields
  @sortable_fields
end

#stats_list ⇒ Object (readonly)

Returns the value of attribute stats_list.



254
255
256
# File 'lib/admin/base/resource.rb', line 254

def stats_list
  @stats_list
end

Instance Method Details

#columns(&block) ⇒ Object



300
301
302
303
304
# File 'lib/admin/base/resource.rb', line 300

def columns(&block)
  builder = ColumnsBuilder.new
  builder.instance_eval(&block) if block_given?
  @columns_list = builder.columns
end

#filters(&block) ⇒ Object



306
307
308
309
310
# File 'lib/admin/base/resource.rb', line 306

def filters(&block)
  builder = FiltersBuilder.new
  builder.instance_eval(&block) if block_given?
  @filters_list = builder.filters
end

#includes(*associations) ⇒ void

This method returns an undefined value.

Kills the index's association N+1 (Task 3 made belongs_to columns render as links, so each one now genuinely dereferences the association -- one query per row without this). The controller applies this to the filtered scope only when the scope actually responds to #includes -- PORO test doubles and some host scopes don't -- and swallows a bad association name (typo, renamed association) by logging and rendering unoptimized rather than 500ing. nil entries (e.g. a stray includes nil) are dropped rather than stored and handed to the scope verbatim.

Parameters:

  • associations (Array<Symbol, String>)


296
297
298
# File 'lib/admin/base/resource.rb', line 296

def includes(*associations)
  @includes_list = associations.flatten.compact
end

#paginate(count) ⇒ Object



279
280
281
# File 'lib/admin/base/resource.rb', line 279

def paginate(count)
  @per_page = count
end

#searchable(*fields) ⇒ Object



269
270
271
# File 'lib/admin/base/resource.rb', line 269

def searchable(*fields)
  @searchable_fields = fields
end

#sortable(*fields, default: nil, direction: :desc) ⇒ Object



273
274
275
276
277
# File 'lib/admin/base/resource.rb', line 273

def sortable(*fields, default: nil, direction: :desc)
  @sortable_fields = fields if fields.any?
  @default_sort = default || fields.first
  @default_sort_direction = direction
end

#stats(&block) ⇒ Object



312
313
314
315
316
# File 'lib/admin/base/resource.rb', line 312

def stats(&block)
  builder = StatsBuilder.new
  builder.instance_eval(&block) if block_given?
  @stats_list = builder.stats
end