app/views/active_admin/resource/index.html.arb in activeadmin-3.2.5 vs app/views/active_admin/resource/index.html.arb in activeadmin-4.0.0.beta1

- old
+ new

@@ -1,2 +1,95 @@ # frozen_string_literal: true -insert_tag renderer_for(:index) +def wrap_with_batch_action_form(&block) + if active_admin_config.batch_actions.any? + insert_tag(ActiveAdmin::BatchActions::BatchActionForm, &block) + batch_actions_to_display.each do |batch_action| + if batch_action.partial.present? + render(batch_action.partial) + end + end + else + block.call + end +end + +def build_collection + if collection_empty?(collection) + if params[:q] || params[:scope] + render("active_admin/resource/index_empty_results") + else + render("active_admin/resource/index_blank_slate") + end + else + render_index + end +end + +def build_table_tools + div class: "index-data-table-toolbar" do + render "batch_actions_dropdown" + build_scopes + build_index_list + end if any_table_tools? +end + +def any_table_tools? + active_admin_config.batch_actions.any? || + active_admin_config.scopes.any? || + active_admin_config.page_presenters[:index].try(:size).try(:>, 1) +end + +def build_scopes + if active_admin_config.scopes.any? + scope_options = { scope_count: page_presenter.fetch(:scope_count, true) } + insert_tag(ActiveAdmin::Views::Scopes, active_admin_config.scopes, scope_options) + end +end + +def build_index_list + indexes = active_admin_config.page_presenters[:index] + + if indexes.kind_of?(Hash) && indexes.length > 1 + index_classes = [] + active_admin_config.page_presenters[:index].each do |type, page_presenter| + index_classes << find_index_renderer_class(page_presenter[:as]) + end + + insert_tag(ActiveAdmin::Views::IndexList, index_classes) + end +end + +# Returns the actual class for renderering the main content on the index +# page. To set this, use the :as option in the page_presenter block. +def find_index_renderer_class(klass) + if klass.is_a?(Class) + klass + else + ::ActiveAdmin::Views.const_get("IndexAs" + klass.to_s.camelcase) + end +end + +def render_index + renderer_class = find_index_renderer_class(page_presenter[:as]) + + paginator = page_presenter.fetch(:paginator, true) + download_links = page_presenter.fetch(:download_links, active_admin_config.namespace.download_links) + pagination_total = page_presenter.fetch(:pagination_total, true) + per_page = page_presenter.fetch(:per_page, active_admin_config.per_page) + + paginated_collection( + collection, entry_name: active_admin_config.resource_label, + entries_name: active_admin_config.plural_resource_label(count: collection_size), + download_links: download_links, + paginator: paginator, + per_page: per_page, + pagination_total: pagination_total) do + insert_tag(renderer_class, page_presenter, collection) + end +end + +div class: "main-content-container" do + wrap_with_batch_action_form do + build_table_tools + build_collection + end +end