Class: Pagy
- Inherits:
-
Object
- Object
- Pagy
- Defined in:
- lib/pagy-extras/compact.rb,
lib/pagy-extras.rb,
lib/pagy-extras/bootstrap.rb,
lib/pagy-extras/responsive.rb
Overview
See the Pagy Extras documentation: ddnexus.github.io/pagy/pagy-extras
Defined Under Namespace
Modules: Frontend
Class Method Summary collapse
Instance Method Summary collapse
-
#responsive ⇒ Object
Helper for building the page_nav with javascript.
Class Method Details
.extras_root ⇒ Object
6 |
# File 'lib/pagy-extras.rb', line 6 def self.extras_root; Pathname.new(__FILE__).dirname end |
Instance Method Details
#responsive ⇒ Object
Helper for building the page_nav with javascript. For example: with an object like:
Pagy.new count:1000, page: 20, breakpoints: {0 => [1,2,2,1], 350 => [2,3,3,2], 550 => [3,4,4,3]}
it returns something like:
{ :items => [1, :gap, 18, 19, "20", 21, 22, 50, 2, 17, 23, 49, 3, 16, 24, 48],
:series => { 0 =>[1, :gap, 18, 19, "20", 21, 22, :gap, 50],
350 =>[1, 2, :gap, 17, 18, 19, "20", 21, 22, 23, :gap, 49, 50],
550 =>[1, 2, 3, :gap, 16, 17, 18, 19, "20", 21, 22, 23, 24, :gap, 48, 49, 50] },
:widths => [550, 350, 0] }
where :items is the unordered array union of all the page numbers for all sizes (passed to the PagyResponsive javascript function)
:series is the hash of the series keyed by width (used by the *_responsive helpers to create the JSON string)
:widths is the desc-ordered array of widths (passed to the PagyResponsive javascript function)
21 22 23 24 25 26 27 |
# File 'lib/pagy-extras/responsive.rb', line 21 def responsive @responsive ||= {items: [], series: {}, widths:[]}.tap do |r| @vars[:breakpoints].key?(0) || raise(ArgumentError, "expected :breakpoints to contain the 0 size; got #{@vars[:breakpoint].inspect}") @vars[:breakpoints].each {|width, size| r[:items] |= r[:series][width] = series(size)} r[:widths] = r[:series].keys.sort!{|a,b| b <=> a} end end |