Class: ActiveAdmin::Views::PaginatedCollection
- Inherits:
-
Component
- Object
- Arbre::Component
- Component
- ActiveAdmin::Views::PaginatedCollection
- Defined in:
- lib/active_admin/views/components/paginated_collection.rb
Overview
Wraps the content with pagination and available formats.
Example:
paginated_collection collection, :entry_name => "Post" do
div do
h2 "Inside the
end
end
This will create a div with a sentence describing the number of posts in one of the following formats:
-
“No Posts found”
-
“Displaying all 10 Posts”
-
“Displaying Posts 1 - 30 of 31 in total”
It will also generate pagination links.
Instance Attribute Summary collapse
-
#collection ⇒ Object
readonly
Returns the value of attribute collection.
Instance Method Summary collapse
-
#add_child(*args, &block) ⇒ Object
Override add_child to insert all children into the @contents div.
-
#build(collection, options = {}) ⇒ Object
Builds a new paginated collection component.
- #build_pagination ⇒ Object protected
- #build_pagination_with_formats(options) ⇒ Object protected
-
#page_entries_info(options = {}) ⇒ Object
protected
modified from will_paginate.
Methods included from ActiveAdmin::ViewHelpers::DownloadFormatLinksHelper
Methods included from Helpers::Collection
#collection_is_empty?, #collection_size
Instance Attribute Details
#collection ⇒ Object (readonly)
Returns the value of attribute collection.
28 29 30 |
# File 'lib/active_admin/views/components/paginated_collection.rb', line 28 def collection @collection end |
Instance Method Details
#add_child(*args, &block) ⇒ Object
Override add_child to insert all children into the @contents div
54 55 56 57 58 59 60 |
# File 'lib/active_admin/views/components/paginated_collection.rb', line 54 def add_child(*args, &block) if @built @contents.add_child(*args, &block) else super end end |
#build(collection, options = {}) ⇒ Object
Builds a new paginated collection component
collection => A paginated collection from kaminari options => These options will be passed to ‘page_entries_info`
entry_name => The name to display for this resource collection
param_name => Parameter name for page number in the links (:page by default)
download_links => Download links override (false or [:csv, :pdf])
38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/active_admin/views/components/paginated_collection.rb', line 38 def build(collection, = {}) @collection = collection @param_name = .delete(:param_name) @download_links = .delete(:download_links) @display_total = .delete(:pagination_total) { true } unless collection.respond_to?(:num_pages) raise(StandardError, "Collection is not a paginated scope. Set collection.page(params[:page]).per(10) before calling :paginated_collection.") end @contents = div(:class => "paginated_collection_contents") build_pagination_with_formats() @built = true end |
#build_pagination ⇒ Object (protected)
78 79 80 81 82 83 |
# File 'lib/active_admin/views/components/paginated_collection.rb', line 78 def build_pagination = request.query_parameters.except(:commit, :format) [:param_name] = @param_name if @param_name text_node paginate(collection, .symbolize_keys) end |
#build_pagination_with_formats(options) ⇒ Object (protected)
64 65 66 67 68 69 70 71 72 73 74 75 76 |
# File 'lib/active_admin/views/components/paginated_collection.rb', line 64 def build_pagination_with_formats() div :id => "index_footer" do build_pagination div(page_entries_info().html_safe, :class => "pagination_information") if @download_links.is_a?(Array) && !@download_links.empty? build_download_format_links @download_links else build_download_format_links unless @download_links == false end end end |
#page_entries_info(options = {}) ⇒ Object (protected)
modified from will_paginate
89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 |
# File 'lib/active_admin/views/components/paginated_collection.rb', line 89 def page_entries_info( = {}) if [:entry_name] entry_name = [:entry_name] entries_name = [:entries_name] || entry_name.pluralize elsif collection_is_empty? entry_name = I18n.t "active_admin.pagination.entry", :count => 1, :default => 'entry' entries_name = I18n.t "active_admin.pagination.entry", :count => 2, :default => 'entries' else key = "activerecord.models." + collection.first.class.model_name.i18n_key.to_s entry_name = I18n.translate key, :count => 1, :default => collection.first.class.name.underscore.sub('_', ' ') entries_name = I18n.translate key, :count => collection.size, :default => entry_name.pluralize end if collection.num_pages < 2 case collection_size when 0; I18n.t('active_admin.pagination.empty', :model => entries_name) when 1; I18n.t('active_admin.pagination.one', :model => entry_name) else; I18n.t('active_admin.pagination.one_page', :model => entries_name, :n => collection.total_count) end else offset = (collection.current_page - 1) * collection.limit_value if @display_total total = collection.total_count I18n.t 'active_admin.pagination.multiple', :model => entries_name, :total => total, :from => offset + 1, :to => offset + collection_size else I18n.t 'active_admin.pagination.multiple_without_total', :model => entries_name, :from => offset + 1, :to => offset + collection_size end end end |