Sha256: 0b51d52d894e1cc8c0d0641d662dd392c13bedfc62dddc15853aabb7eaaaeef0

Contents?: true

Size: 1.87 KB

Versions: 46

Compression:

Stored size: 1.87 KB

Contents

module ActiveAdmin
  module Views

     # = Index as a Grid
     #
     # Sometimes you want to display the index screen for a set of resources as a grid
     # (possibly a grid of thumbnail images). To do so, use the :grid option for the
     # index block.
     #
     #     index :as => :grid do |product|
     #       link_to(image_tag(product.image_path), admin_products_path(product))
     #     end
     #
     # The block is rendered within a cell in the grid once for each resource in the
     # collection. The resource is passed into the block for you to use in the view.
     #
     # You can customize the number of colums that are rendered using the columns
     # option:
     #
     #     index :as => :grid, :columns => 5 do |product|
     #       link_to(image_tag(product.image_path), admin_products_path(product))
     #     end
     #
     class IndexAsGrid < ActiveAdmin::Component

      def build(page_presenter, collection)
        @page_presenter = page_presenter
        @collection = collection
        add_class "index"
        build_table
      end

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

      protected

      def build_table
        resource_selection_toggle_panel if active_admin_config.batch_actions.any?
        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_presenter.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

46 entries across 46 versions & 2 rubygems

Version Path
lalala-4.0.0.dev.141 vendor/deps/active_admin/lib/active_admin/views/index_as_grid.rb
lalala-4.0.0.dev.136 vendor/deps/active_admin/lib/active_admin/views/index_as_grid.rb
lalala-4.0.0.dev.135 vendor/deps/active_admin/lib/active_admin/views/index_as_grid.rb
lalala-4.0.0.dev.134 vendor/deps/active_admin/lib/active_admin/views/index_as_grid.rb
lalala-4.0.0.dev.133 vendor/deps/active_admin/lib/active_admin/views/index_as_grid.rb
lalala-4.0.0.dev.132 vendor/deps/active_admin/lib/active_admin/views/index_as_grid.rb
lalala-4.0.0.dev.131 vendor/deps/active_admin/lib/active_admin/views/index_as_grid.rb
lalala-4.0.0.dev.129 vendor/deps/active_admin/lib/active_admin/views/index_as_grid.rb
lalala-4.0.0.dev.128 vendor/deps/active_admin/lib/active_admin/views/index_as_grid.rb
lalala-4.0.0.dev.126 vendor/deps/active_admin/lib/active_admin/views/index_as_grid.rb
lalala-4.0.0.dev.125 vendor/deps/active_admin/lib/active_admin/views/index_as_grid.rb
lalala-4.0.0.dev.124 vendor/deps/active_admin/lib/active_admin/views/index_as_grid.rb
lalala-4.0.0.dev.123 vendor/deps/active_admin/lib/active_admin/views/index_as_grid.rb
lalala-4.0.0.dev.118 vendor/deps/active_admin/lib/active_admin/views/index_as_grid.rb
lalala-4.0.0.dev.116 vendor/deps/active_admin/lib/active_admin/views/index_as_grid.rb
lalala-4.0.0.dev.114 vendor/deps/active_admin/lib/active_admin/views/index_as_grid.rb
lalala-4.0.0.dev.113 vendor/deps/active_admin/lib/active_admin/views/index_as_grid.rb
lalala-4.0.0.dev.111 vendor/deps/active_admin/lib/active_admin/views/index_as_grid.rb
lalala-4.0.0.dev.109 vendor/deps/active_admin/lib/active_admin/views/index_as_grid.rb
lalala-4.0.0.dev.107 vendor/deps/active_admin/lib/active_admin/views/index_as_grid.rb