Module: SortableTable::App::Controllers::ApplicationController::ClassMethods

Defined in:
lib/sortable_table/app/controllers/application_controller.rb

Instance Method Summary collapse

Instance Method Details

#define_sort_order(acceptable_columns, mappings) ⇒ Object



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/sortable_table/app/controllers/application_controller.rb', line 33

def define_sort_order(acceptable_columns, mappings)
  define_method(:default_sort_column) do
    acceptable_columns.first
  end

  attr_accessor :sortable_table_direction

  define_method(:sort_order) do |*default| 
    default = default.first
    direction = default_sort_direction(params[:order], default)
    column    = params[:sort] || default_sort_column
    self.sortable_table_direction = direction
    if params[:sort] && acceptable_columns.include?(column)
      column = mappings[column.to_sym] || column
      handle_compound_sorting(column, sql_sort_direction(direction))
    else
      "#{acceptable_columns.first} #{sql_sort_direction(direction)}"
    end
  end

  helper_method :sort_order, :default_sort_column, :sortable_table_direction
end

#join_array_and_hash_values(array, hash) ⇒ Object



28
29
30
31
# File 'lib/sortable_table/app/controllers/application_controller.rb', line 28

def join_array_and_hash_values(array, hash)
  array.collect { |each| each.to_s } + 
    hash.keys.collect { |each| each.to_s }
end

#pop_hash_from_list(args) ⇒ Object



20
21
22
23
24
25
26
# File 'lib/sortable_table/app/controllers/application_controller.rb', line 20

def pop_hash_from_list(args)
  if args.last.is_a?(Hash)
    args.pop
  else
    {}
  end
end

#sortable_attributes(*args) ⇒ Object



14
15
16
17
18
# File 'lib/sortable_table/app/controllers/application_controller.rb', line 14

def sortable_attributes(*args)
  mappings           = pop_hash_from_list(args)
  acceptable_columns = join_array_and_hash_values(args, mappings)
  define_sort_order(acceptable_columns, mappings)
end