class ActiveAdmin::Views::TableFor
Public Instance Methods
build(obj, options = {})
click to toggle source
Calls superclass method
# File lib/active_admin/views/components/table_for.rb, line 10 def build(obj, options = {}) @sortable = options.delete(:sortable) @resource_class = options.delete(:i18n) @collection = obj.respond_to?(:each) && !obj.is_a?(Hash) ? obj : [obj] @columns = [] build_table super(options) end
column(*args, &block)
click to toggle source
# File lib/active_admin/views/components/table_for.rb, line 19 def column(*args, &block) options = default_options.merge(args.extract_options!) title = args[0] data = args[1] || args[0] col = Column.new(title, data, @resource_class, options, &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
sortable?()
click to toggle source
# File lib/active_admin/views/components/table_for.rb, line 40 def sortable? !!@sortable end
tag_name()
click to toggle source
# File lib/active_admin/views/components/table_for.rb, line 6 def tag_name 'table' end
Protected Instance Methods
build_table()
click to toggle source
# File lib/active_admin/views/components/table_for.rb, line 46 def build_table build_table_head build_table_body end
build_table_body()
click to toggle source
# File lib/active_admin/views/components/table_for.rb, line 75 def build_table_body @tbody = tbody do # Build enough rows for our collection @collection.each{ |elem| tr class: cycle('odd', 'even'), id: dom_id_for(elem) } end end
build_table_cell(col, item)
click to toggle source
# File lib/active_admin/views/components/table_for.rb, line 82 def build_table_cell(col, item) td class: col.html_class do render_data col.data, item end end
build_table_head()
click to toggle source
# File lib/active_admin/views/components/table_for.rb, line 51 def build_table_head @thead = thead do @header_row = tr end end
build_table_header(col)
click to toggle source
# File lib/active_admin/views/components/table_for.rb, line 57 def build_table_header(col) classes = Arbre::HTML::ClassList.new sort_key = sortable? && col.sortable? && col.sort_key params = request.query_parameters.except :page, :order, :commit, :format 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: params, order: "#{sort_key}_#{order_for_sort_key(sort_key)}" end else th col.pretty_title, class: classes end end
current_sort()
click to toggle source
Returns an array for the current sort order
current_sort[0] #=> sort_key current_sort[1] #=> asc | desc
# File lib/active_admin/views/components/table_for.rb, line 110 def current_sort @current_sort ||= begin order_clause = OrderClause.new params[:order] if order_clause.valid? [order_clause.field, order_clause.order] else [] end end end
default_options()
click to toggle source
# File lib/active_admin/views/components/table_for.rb, line 132 def default_options { i18n: @resource_class } end
is_boolean?(data, item)
click to toggle source
# File lib/active_admin/views/components/table_for.rb, line 101 def is_boolean?(data, item) if item.respond_to? :column_for_attribute attr = item.column_for_attribute(data) and attr.type == :boolean end end
order_for_sort_key(sort_key)
click to toggle source
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’
# File lib/active_admin/views/components/table_for.rb, line 126 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
render_data(data, item)
click to toggle source
# File lib/active_admin/views/components/table_for.rb, line 88 def render_data(data, item) value = if data.is_a? Proc data.call item elsif item.respond_to? data item.send data elsif item.respond_to? :[] item[data] end value = pretty_format(value) if data.is_a?(Symbol) value = status_tag value if is_boolean? data, item value end