Class: ActiveAdmin::Views::TableFor
Defined Under Namespace
Classes: Column
Instance Attribute Summary
#attributes
#children, #parent
Instance Method Summary
collapse
#initialize, #set_table_tag_defaults
#add_class, #class_list, #class_names, #get_attribute, #has_attribute?, #id, #id!, #id=, #initialize, #remove_attribute, #remove_class, #set_attribute, #to_s
#+, #<<, #add_child, #assigns, builder_method, #content, #content=, #document, #each, #get_elements_by_class_name, #get_elements_by_tag_name, #helpers, #html_safe, #indent_level, #initialize, #parent?, #remove_child, #to_ary, #to_s, #to_str
#append_return_block, #build_tag, #current_dom_context, #insert_tag, #with_current_dom_context
#current_dom_context, #helpers, #method_missing
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
in the class Arbre::Builder
Instance Method Details
#build(collection, options = {}) ⇒ Object
10
11
12
13
14
15
16
17
|
# File 'lib/active_admin/views/components/table_for.rb', line 10
def build(collection, options = {})
@sortable = options.delete(:sortable)
@resource_class = options.delete(:i18n)
@collection = collection
@columns = []
build_table
super(options)
end
|
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
# File 'lib/active_admin/views/components/table_for.rb', line 70
def (title, sort_key)
classes = Arbre::HTML::ClassList.new(["sortable"])
if current_sort[0] == sort_key
classes << "sorted-#{current_sort[1]}"
end
= title.downcase.underscore
classes <<
th :class => classes do
link_to(title, params.merge(:order => "#{sort_key}_#{order_for_sort_key(sort_key)}").except(:page))
end
end
|
#build_table ⇒ Object
51
52
53
54
|
# File 'lib/active_admin/views/components/table_for.rb', line 51
def build_table
build_table_head
build_table_body
end
|
#build_table_body ⇒ Object
85
86
87
88
89
90
|
# File 'lib/active_admin/views/components/table_for.rb', line 85
def build_table_body
@tbody = tbody do
@collection.each{|_| tr(:class => cycle('odd', 'even'), :id => dom_id(_)) }
end
end
|
#build_table_cell(col, item) ⇒ Object
92
93
94
95
96
97
98
99
100
|
# File 'lib/active_admin/views/components/table_for.rb', line 92
def build_table_cell(col, item)
td(:class => (col.data.to_s.downcase if col.data.is_a?(Symbol))) do
rvalue = call_method_or_proc_on(item, col.data, :exec => false)
if col.data.is_a?(Symbol)
rvalue = pretty_format(rvalue)
end
rvalue
end
end
|
#build_table_head ⇒ Object
56
57
58
59
60
|
# File 'lib/active_admin/views/components/table_for.rb', line 56
def build_table_head
@thead = thead do
= tr
end
end
|
62
63
64
65
66
67
68
|
# File 'lib/active_admin/views/components/table_for.rb', line 62
def (col)
if sortable? && col.sortable?
(col.title, col.sort_key)
else
th(col.title, :class => (col.data.to_s.downcase.underscore if col.data.is_a?(Symbol)))
end
end
|
#column(*args, &block) ⇒ Object
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
# File 'lib/active_admin/views/components/table_for.rb', line 19
def column(*args, &block)
options = default_options.merge(args.last.is_a?(::Hash) ? args.pop : {})
title = args[0]
data = args[1] || args[0]
col = Column.new(title, data, options, &block)
@columns << col
within do
(col)
end
@collection.each_with_index do |item, i|
within @tbody.children[i] do
build_table_cell(col, item)
end
end
end
|
#current_sort ⇒ Object
Returns an array for the current sort order
current_sort #=> sort_key
current_sort #=> asc | desc
105
106
107
108
109
110
111
|
# File 'lib/active_admin/views/components/table_for.rb', line 105
def current_sort
@current_sort ||= if params[:order] && params[:order] =~ /^([\w\_\.]+)_(desc|asc)$/
[$1,$2]
else
[]
end
end
|
#default_options ⇒ Object
123
124
125
126
127
|
# File 'lib/active_admin/views/components/table_for.rb', line 123
def default_options
{
:i18n => @resource_class
}
end
|
#order_for_sort_key(sort_key) ⇒ Object
Returns the order to use for a given sort key
Default is to use 'desc'. If the current sort key is
'desc' it will return 'asc'
117
118
119
120
121
|
# File 'lib/active_admin/views/components/table_for.rb', line 117
def order_for_sort_key(sort_key)
current_key, current_order = current_sort
return 'desc' unless current_key == sort_key
current_order == 'desc' ? 'asc' : 'desc'
end
|
#sortable? ⇒ Boolean
40
41
42
|
# File 'lib/active_admin/views/components/table_for.rb', line 40
def sortable?
@sortable
end
|
#tag_name ⇒ Object
6
7
8
|
# File 'lib/active_admin/views/components/table_for.rb', line 6
def tag_name
'table'
end
|
#visible_columns ⇒ Object
Returns the columns to display based on the conditional block
45
46
47
|
# File 'lib/active_admin/views/components/table_for.rb', line 45
def visible_columns
@visible_columns ||= @columns.select{|col| col.display_column? }
end
|