Sha256: 300ab08cbf484c04c75b6ec0124157d80f8c2a7a558add972b7560910bef6941

Contents?: true

Size: 970 Bytes

Versions: 5

Compression:

Stored size: 970 Bytes

Contents

module ActiveAdmin
  module Views
    class IndexAsGrid < ActiveAdmin::Component

      def build(page_config, collection)
        @page_config = page_config
        @collection = collection
        build_table
      end

      def number_of_columns
        @page_config[:columns] || default_number_of_columns
      end

      protected

      def build_table
        table :class => "index_grid" do
          collection.in_groups_of(number_of_columns).each do |group|
            build_row(group)
          end
        end
      end

      def build_row(group)
        tr do
          group.each do |item|
            item ? build_item(item) : build_empty_cell
          end
        end
      end

      def build_item(item)
        td :for => item do
          instance_exec(item, &@page_config.block)
        end
      end

      def build_empty_cell
        td '&nbsp;'.html_safe
      end

      def default_number_of_columns
        3
      end

    end
  end
end

Version data entries

5 entries across 5 versions & 2 rubygems

Version Path
saulolso-activeadmin-0.2.2.1 lib/active_admin/views/index_as_grid.rb
saulolso-activeadmin-0.2.2 lib/active_admin/views/index_as_grid.rb
activeadmin-0.2.2 lib/active_admin/views/index_as_grid.rb
activeadmin-0.2.1 lib/active_admin/views/index_as_grid.rb
activeadmin-0.2.0 lib/active_admin/views/index_as_grid.rb