Sha256: b0b1c1d64c521d231467ebf0be55225734f93ffae77a2a6d1e1efbd8d80465ed

Contents?: true

Size: 1.91 KB

Versions: 31

Compression:

Stored size: 1.91 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.
    #
    # ```ruby
    # index as: :grid do |product|
    #   link_to image_tag(product.image_path), admin_product_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 columns that are rendered using the columns
    # option:
    #
    # ```ruby
    # index as: :grid, columns: 5 do |product|
    #   link_to image_tag(product.image_path), admin_product_path(product)
    # end
    # ```
    #
    class IndexAsGrid < ActiveAdmin::Component

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

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

      def self.index_name
        "grid"
      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

31 entries across 31 versions & 4 rubygems

Version Path
activeadmin-rb-1.4.0 lib/active_admin/views/index_as_grid.rb
activeadmin_addons-1.7.0 vendor/bundle/ruby/2.3.0/bundler/gems/activeadmin-f71b375325eb/lib/active_admin/views/index_as_grid.rb
activeadmin-1.4.3 lib/active_admin/views/index_as_grid.rb
activeadmin-1.4.2 lib/active_admin/views/index_as_grid.rb
activeadmin-1.4.1 lib/active_admin/views/index_as_grid.rb
activeadmin-1.4.0 lib/active_admin/views/index_as_grid.rb
activeadmin_addons-1.6.0 vendor/bundle/ruby/2.3.0/bundler/gems/activeadmin-f71b375325eb/lib/active_admin/views/index_as_grid.rb
activeadmin_addons-1.5.0 vendor/bundle/ruby/2.2.0/bundler/gems/activeadmin-f71b375325eb/lib/active_admin/views/index_as_grid.rb
activeadmin_addons-1.4.0 vendor/bundle/ruby/2.2.0/bundler/gems/activeadmin-f71b375325eb/lib/active_admin/views/index_as_grid.rb
activeadmin_addons-1.3.0 vendor/bundle/ruby/2.3.0/bundler/gems/activeadmin-f71b375325eb/lib/active_admin/views/index_as_grid.rb
activeadmin_addons-1.2.0 vendor/bundle/ruby/2.3.0/bundler/gems/activeadmin-f71b375325eb/lib/active_admin/views/index_as_grid.rb