actionpager 0.0.2 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile.lock +22 -0
- data/lib/action_pager/pager.rb +40 -2
- data/lib/action_pager/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ae90863fad5a3f30f9572dee02a8fb5011b684e6b320efb7229158c70644af08
|
4
|
+
data.tar.gz: b7341df2d718988c8e06a8f76ba78421fabb3f305cdcc43e82a87e17b1adc2e7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a298e3b66538f5872af6e7c4fe97c1f0cf8f24ca2422ce27753567368d73ad7e906535d7ef7cacd68b81923e4d18f7f06dbd932692e2db38102e6689924898a6
|
7
|
+
data.tar.gz: '03509d9f2a60cdd25ccfe50f9080bb56323212f0432ed805f4f4efcc4afde65ec93a54b8fdadb8485951c7ec124ef80e30cc21cda65dbba1070a62efec226ea8'
|
data/Gemfile.lock
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
actionpager (0.0.2)
|
5
|
+
|
6
|
+
GEM
|
7
|
+
remote: https://rubygems.org/
|
8
|
+
specs:
|
9
|
+
minitest (5.11.3)
|
10
|
+
rake (10.5.0)
|
11
|
+
|
12
|
+
PLATFORMS
|
13
|
+
ruby
|
14
|
+
|
15
|
+
DEPENDENCIES
|
16
|
+
actionpager!
|
17
|
+
bundler (~> 1.16)
|
18
|
+
minitest (~> 5.0)
|
19
|
+
rake (~> 10.0)
|
20
|
+
|
21
|
+
BUNDLED WITH
|
22
|
+
1.16.6
|
data/lib/action_pager/pager.rb
CHANGED
@@ -2,19 +2,25 @@
|
|
2
2
|
|
3
3
|
module ActionPager
|
4
4
|
class Pager
|
5
|
-
DEFAULTS = { page: 1, per: 20 }.freeze
|
5
|
+
DEFAULTS = { page: 1, per: 20, near: 2 }.freeze
|
6
6
|
|
7
|
-
attr_reader :current_page, :per_page, :collection, :options
|
7
|
+
attr_reader :current_page, :per_page, :near, :collection, :options
|
8
8
|
|
9
9
|
def initialize(collection, options={})
|
10
10
|
@options = options
|
11
11
|
opts = DEFAULTS.merge(options)
|
12
12
|
@current_page = opts[:page]
|
13
13
|
@per_page = opts[:per]
|
14
|
+
@near = opts[:near]
|
14
15
|
@collection = collection
|
15
16
|
end
|
16
17
|
|
17
18
|
def scoped
|
19
|
+
warn "[DEPRECATION] `scoped` is deprecated. Please use `current_collection` instead."
|
20
|
+
current_collection
|
21
|
+
end
|
22
|
+
|
23
|
+
def current_collection
|
18
24
|
if collection.is_a?(Array)
|
19
25
|
collection.drop(offset).first(per_page)
|
20
26
|
else # for ActiveRecord::Relation and other OR mapper collections
|
@@ -41,6 +47,7 @@ module ActionPager
|
|
41
47
|
def last_page
|
42
48
|
@last_page ||= collection_count / per_page + 1
|
43
49
|
end
|
50
|
+
alias_method :total_pages, :last_page
|
44
51
|
|
45
52
|
def last_page?
|
46
53
|
current_page == last_page
|
@@ -55,5 +62,36 @@ module ActionPager
|
|
55
62
|
page = current_page + 1
|
56
63
|
page <= last_page ? page : nil
|
57
64
|
end
|
65
|
+
|
66
|
+
def shown_page_count
|
67
|
+
near * 2 + 1
|
68
|
+
end
|
69
|
+
|
70
|
+
# pages that numbers are displayed
|
71
|
+
def near_pages
|
72
|
+
@near_pages ||= begin
|
73
|
+
if current_page <= near + 1
|
74
|
+
upper_page = shown_page_count >= last_page ? last_page : shown_page_count
|
75
|
+
1..upper_page
|
76
|
+
elsif current_page >= last_page - near - 1
|
77
|
+
bottom_page = last_page - shown_page_count + 1
|
78
|
+
(bottom_page > 1 ? bottom_page : 1)..last_page
|
79
|
+
else
|
80
|
+
bottom_page = current_page - near
|
81
|
+
upper_page = current_page + near
|
82
|
+
(bottom_page > 1 ? bottom_page : 1)..(upper_page < last_page ? upper_page : last_page)
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
# show bottom (left) gap mark in pager?
|
88
|
+
def bottom_gap?
|
89
|
+
near_pages.first > 1
|
90
|
+
end
|
91
|
+
|
92
|
+
# show upper (right) gap mark in pager?
|
93
|
+
def upper_gap?
|
94
|
+
near_pages.last < last_page
|
95
|
+
end
|
58
96
|
end
|
59
97
|
end
|
data/lib/action_pager/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: actionpager
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryo Hashimoto
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-11-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -63,6 +63,7 @@ files:
|
|
63
63
|
- ".gitignore"
|
64
64
|
- CODE_OF_CONDUCT
|
65
65
|
- Gemfile
|
66
|
+
- Gemfile.lock
|
66
67
|
- LICENSE
|
67
68
|
- README.md
|
68
69
|
- Rakefile
|