Sha256: 8790dd58e2785af01aaa285262b09361c769cb1db6bd7009d1e3c97c1b7ccc9f

Contents?: true

Size: 1.84 KB

Versions: 3

Compression:

Stored size: 1.84 KB

Contents

#require 'will_paginate'
require "will_paginate-bootstrap4"
require "ui_bibz/ui/ux/tables/components/store"
module UiBibz::Ui::Ux::Tables

  # Create a pagination for table
  #
  # ==== Attributes
  #
  # * +options+ - Options of element
  # * +html_options+ - Html Options of element
  #
  # ==== Options
  #
  # You can add HTML attributes using the +html_options+.
  # You can pass arguments in options attribute:
  # * +store+ - Store generate by '+table_search_pagination+' method
  #
  # ==== Signatures
  #
  #   UiBibz::Ui::Ux::Tables::TablePagination.new(store: @store)
  #
  # ==== Helper
  #
  #    table_pagination(options = {})
  #
  class TablePagination < UiBibz::Ui::Base
    include WillPaginate::ActionView
    include ActionView
    #include WillPaginate::ActionView::BootstrapLinkRenderer

    # Initialize pagination with component item
    # pagination require WillPaginate gem
    def initialize options = nil, html_options = nil
      @pagination = UiBibz::Ui::Core::Component.new nil, options, html_options
    end

    # Render html tag with boostrap pagination theme
    def render
      paginate_parameters = { controller: store.controller }
      paginate_parameters = paginate_parameters.merge({ store_id: store.id }) unless store.id.nil?
      paginate_parameters = paginate_parameters.merge(store.parameters)
      will_paginate(store.records, params: paginate_parameters, renderer: WillPaginate::ActionView::BootstrapLinkRenderer)
    end

  private


    # Store must be generated by *table_search_pagination* method
    def store
      @store ||= if @pagination.options[:store].nil?
        raise 'Store is nil!'
      elsif @pagination.options[:store].try(:records).nil?
        raise 'Store can be created only with "table_search_pagination" method!'
      else
        Store.new @pagination.options.delete :store
      end
    end

  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
ui_bibz-2.0.0.alpha28 lib/ui_bibz/ui/ux/tables/table_pagination.rb
ui_bibz-2.0.0.alpha27 lib/ui_bibz/ui/ux/tables/table_pagination.rb
ui_bibz-2.0.0.alpha26 lib/ui_bibz/ui/ux/tables/table_pagination.rb