Class: ActiveAdmin::Views::TableFor
- Inherits:
-
Arbre::HTML::Table
- Object
- Arbre::HTML::Table
- ActiveAdmin::Views::TableFor
show all
- Defined in:
- lib/active_admin/views/components/table_for.rb
Defined Under Namespace
Classes: Column
Instance Method Summary
collapse
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
|
#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
79
80
81
82
83
84
|
# File 'lib/active_admin/views/components/table_for.rb', line 79
def build_table_body
@tbody = tbody do
@collection.each{|elem| tr(:class => cycle('odd', 'even'), :id => dom_id(elem)) }
end
end
|
#build_table_cell(col, item) ⇒ Object
86
87
88
89
90
91
92
93
94
|
# File 'lib/active_admin/views/components/table_for.rb', line 86
def build_table_cell(col, item)
td(:class => col.html_class) 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
@header_row = tr
end
end
|
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
|
# File 'lib/active_admin/views/components/table_for.rb', line 62
def (col)
classes = Arbre::HTML::ClassList.new
sort_key = sortable? && col.sortable? && col.sort_key
classes << 'sortable' if sort_key
classes << "sorted-#{current_sort[1]}" if sort_key && current_sort[0] == sort_key
classes << col.html_class
if sort_key
th :class => classes do
link_to(col.pretty_title, params.merge(:order => "#{sort_key}_#{order_for_sort_key(sort_key)}").except(:page))
end
else
th(col.pretty_title, :class => classes)
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.)
title = args[0]
data = args[1] || args[0]
col = Column.new(title, data, @resource_class, options, &block)
@columns << col
within @header_row 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[0] current_sort[1]
99
100
101
102
103
104
105
|
# File 'lib/active_admin/views/components/table_for.rb', line 99
def current_sort
@current_sort ||= if params[:order] && params[:order] =~ /^([\w\_\.]+)_(desc|asc)$/
[$1,$2]
else
[]
end
end
|
#default_options ⇒ Object
117
118
119
120
121
|
# File 'lib/active_admin/views/components/table_for.rb', line 117
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’
111
112
113
114
115
|
# File 'lib/active_admin/views/components/table_for.rb', line 111
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
|