Class: ActiveAdmin::Views::TableFor
- Inherits:
-
Arbre::HTML::Table
- Object
- Arbre::HTML::Element
- Arbre::HTML::Tag
- Arbre::HTML::Table
- ActiveAdmin::Views::TableFor
- Defined in:
- lib/active_admin/views/components/table_for.rb
Direct Known Subclasses
Defined Under Namespace
Classes: Column
Instance Attribute Summary
Attributes inherited from Arbre::HTML::Tag
Attributes inherited from Arbre::HTML::Element
Instance Method Summary collapse
- #build(collection, options = {}) ⇒ Object
- #build_sortable_header_for(title, sort_key) ⇒ Object protected
- #build_table ⇒ Object protected
- #build_table_body ⇒ Object protected
- #build_table_cell(col, item) ⇒ Object protected
- #build_table_head ⇒ Object protected
- #build_table_header(col) ⇒ Object protected
- #column(*args, &block) ⇒ Object
-
#current_sort ⇒ Object
protected
Returns an array for the current sort order current_sort #=> sort_key current_sort #=> asc | desc.
- #default_options ⇒ Object protected
-
#order_for_sort_key(sort_key) ⇒ Object
protected
Returns the order to use for a given sort key.
- #sortable? ⇒ Boolean
- #tag_name ⇒ Object
-
#visible_columns ⇒ Object
Returns the columns to display based on the conditional block.
Methods inherited from Arbre::HTML::Table
#initialize, #set_table_tag_defaults
Methods inherited from Arbre::HTML::Tag
#add_class, #class_list, #class_names, #get_attribute, #has_attribute?, #id, #id!, #id=, #initialize, #remove_attribute, #remove_class, #set_attribute, #to_s
Methods inherited from Arbre::HTML::Element
#+, #<<, #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
Methods included from Arbre::Builder::BuilderMethods
#append_return_block, #build_tag, #current_dom_context, #insert_tag, #with_current_dom_context
Methods included from Arbre::Builder
#current_dom_context, #helpers, #method_missing
Constructor Details
This class inherits a constructor from Arbre::HTML::Table
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, = {}) @sortable = .delete(:sortable) @resource_class = .delete(:i18n) @collection = collection @columns = [] build_table super() end |
#build_sortable_header_for(title, sort_key) ⇒ Object (protected)
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 build_sortable_header_for(title, sort_key) classes = Arbre::HTML::ClassList.new(["sortable"]) if current_sort[0] == sort_key classes << "sorted-#{current_sort[1]}" end header_class = title.downcase.underscore classes << header_class 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 (protected)
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 (protected)
85 86 87 88 89 90 |
# File 'lib/active_admin/views/components/table_for.rb', line 85 def build_table_body @tbody = tbody do # Build enough rows for our collection @collection.each{|_| tr(:class => cycle('odd', 'even'), :id => dom_id(_)) } end end |
#build_table_cell(col, item) ⇒ Object (protected)
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 (protected)
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 |
#build_table_header(col) ⇒ Object (protected)
62 63 64 65 66 67 68 |
# File 'lib/active_admin/views/components/table_for.rb', line 62 def build_table_header(col) if sortable? && col.sortable? build_sortable_header_for(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) = .merge(args.last.is_a?(::Hash) ? args.pop : {}) title = args[0] data = args[1] || args[0] col = Column.new(title, data, , &block) @columns << col # Build our header item within @header_row do build_table_header(col) end # Add a table cell for each item @collection.each_with_index do |item, i| within @tbody.children[i] do build_table_cell(col, item) end end end |
#current_sort ⇒ Object (protected)
Returns an array for the current sort order
current_sort[0] #=> sort_key
current_sort[1] #=> 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 (protected)
123 124 125 126 127 |
# File 'lib/active_admin/views/components/table_for.rb', line 123 def { :i18n => @resource_class } end |
#order_for_sort_key(sort_key) ⇒ Object (protected)
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 |