lib/admino/table/presenter.rb in admino-0.0.4 vs lib/admino/table/presenter.rb in admino-0.0.5

- old
+ new

@@ -7,16 +7,16 @@ class Presenter < Showcase::Presenter attr_reader :collection_klass attr_reader :query def self.tag_helper(name, tag, options = {}) - default_options_method = :"#{name}_html_options" + options_method = :"#{name}_html_options" define_method :"#{name}_tag" do |*args, &block| options = args.extract_options! - if respond_to?(default_options_method, true) - default_options = send(default_options_method, *args) + if respond_to?(options_method, true) + default_options = send(options_method, *args) html_options = Showcase::Helpers::HtmlOptions.new(default_options) html_options.merge_attrs!(options) options = html_options.to_h end h.content_tag(tag, options, &block) @@ -48,15 +48,12 @@ row.to_html end end << tbody_tag do collection.each_with_index.map do |resource, index| - tr_html_options = { - class: zebra_css_classes[index % zebra_css_classes.size], - id: resource.dom_id - } - tbody_tr_tag(resource, index, tr_html_options) do + html_options = base_tbody_tr_html_options(resource, index) + tbody_tr_tag(resource, index, html_options) do row = resource_row(resource, view_context) h.capture(row, resource, &block) if block_given? row.to_html end end.join.html_safe @@ -65,18 +62,30 @@ end private def collection - @collection ||= present_collection(object) + object end def head_row(collection_klass, query, view_context) HeadRow.new(collection_klass, query, view_context) end def resource_row(resource, view_context) ResourceRow.new(resource, view_context) + end + + def base_tbody_tr_html_options(resource, index) + options = { + class: zebra_css_classes[index % zebra_css_classes.size] + } + + if resource.respond_to?(:dom_id) + options[:id] = resource.dom_id + end + + options end def zebra_css_classes %w(is-even is-odd) end