smart_pagination 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 38a44adbebe9175085a9987a30fd959f0ccea1f3
4
- data.tar.gz: 41037b399a8913f0774b64883fb18625715dd576
3
+ metadata.gz: f29d971452750acea3f9548fb9db34b667c6f7e9
4
+ data.tar.gz: 8d3f5f61fed10007efd7e610b9ad39edd6edf711
5
5
  SHA512:
6
- metadata.gz: e3876b7f670150061bcce253880684f9076fca8532aa3b2e15cef182214b5177ab1f8136d6d14a5118823ad17885e26a125d3cb61d31996b154f2da6702d8cde
7
- data.tar.gz: ebe79f1369d85c67f38cab3b47135fe43db92b38d44a53e2bb107da5d20979ddb19cd0325acad08d0f6c4577380ad9945836ef895457f911b248f8c38233e4d4
6
+ metadata.gz: 4d2781df39f31e3aaa6545950e5419e955f8ff9d68ce43662edeaddd10482646e68f89ebed13d767d3997232d66d6bb8817e81481aea81ee912cdbb2fb8a8384
7
+ data.tar.gz: 9011741512d6112cc6dc55f50027edfee3cb00a21d345963fef0b51148bfc88b2f2d5732f972bf5e986d33798949baa176d2c9025963fbd3fcb2f9fbef56f358
@@ -16,5 +16,14 @@ module SmartPagination
16
16
 
17
17
  # Alias helper method
18
18
  alias :pager_for :smart_pager_for
19
+
20
+ # Render pagination info text
21
+ def smart_pagination_info_for(collection, options={})
22
+ options = options.merge(info_mode: true)
23
+ SmartPagination::Renderer.new(self, collection, options).render
24
+ end
25
+
26
+ # Alias helper method
27
+ alias :pagination_info_for :smart_pagination_info_for
19
28
  end
20
29
  end
@@ -9,7 +9,13 @@ module SmartPagination
9
9
 
10
10
  # Render pagination links
11
11
  def render
12
- pager_mode? ? pager : pagination
12
+ if info_mode?
13
+ pagination_info
14
+ elsif pager_mode?
15
+ pager
16
+ else
17
+ pagination
18
+ end
13
19
  end
14
20
 
15
21
  private
@@ -17,6 +23,7 @@ module SmartPagination
17
23
  # Default options
18
24
  def default_options
19
25
  {
26
+ info_mode: false,
20
27
  pager_mode: false,
21
28
  item_class: '',
22
29
  previous_text: '«',
@@ -33,6 +40,15 @@ module SmartPagination
33
40
  }
34
41
  end
35
42
 
43
+ # Get collection name
44
+ def collection_name
45
+ if @collection.is_a? ActiveRecord::Relation
46
+ @collection.model_name.human(count: total_entries)
47
+ else
48
+ total_entries == 1 ? 'Item' : 'Items'
49
+ end
50
+ end
51
+
36
52
  # Get current_page
37
53
  def current_page
38
54
  @collection.current_page.to_i
@@ -40,7 +56,7 @@ module SmartPagination
40
56
 
41
57
  # Get total pages
42
58
  def total_pages
43
- @total_pages ||= @collection.total_pages
59
+ @total_pages ||= @collection.total_pages.to_i
44
60
  end
45
61
 
46
62
  # Check if current page
@@ -48,11 +64,32 @@ module SmartPagination
48
64
  page.to_i == current_page
49
65
  end
50
66
 
67
+ # Get entries per page
68
+ def per_page
69
+ @collection.per_page.to_i
70
+ end
71
+
72
+ # Get current entries
73
+ def current_entries
74
+ entries = current_page * per_page
75
+ entries < total_entries ? entries : total_entries
76
+ end
77
+
78
+ # Get total entries
79
+ def total_entries
80
+ @total_entries ||= @collection.total_entries.to_i
81
+ end
82
+
51
83
  # Check if pager mode enabled
52
84
  def pager_mode?
53
85
  @options[:pager_mode].present?
54
86
  end
55
87
 
88
+ # Check if info mode enabled
89
+ def info_mode?
90
+ @options[:info_mode].present?
91
+ end
92
+
56
93
  # Get page numbers
57
94
  def page_numbers
58
95
  inner = @options[:inner_window].to_i
@@ -149,7 +186,7 @@ module SmartPagination
149
186
 
150
187
  # Render link tag
151
188
  def link_to(text, params={}, html_options={})
152
- url = @context.url_for params.merge(per_page: @collection.per_page)
189
+ url = @context.url_for params.merge(per_page: per_page)
153
190
  opt = html_options.to_h
154
191
 
155
192
  opt.merge!(href: url) if params[:page].present?
@@ -166,6 +203,14 @@ module SmartPagination
166
203
  wrap_tag
167
204
  end
168
205
 
206
+ # Render pagination info
207
+ def pagination_info
208
+ current = tag :strong, current_entries, class: 'current'
209
+ total = tag :strong, total_entries, class: 'total'
210
+
211
+ "Displaying #{current} of #{total} #{collection_name}".html_safe
212
+ end
213
+
169
214
  # Render pager
170
215
  def pager
171
216
  items = [previous_link, next_link]
@@ -1,3 +1,3 @@
1
1
  module SmartPagination
2
- VERSION = '0.1.0'
2
+ VERSION = '0.2.0'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: smart_pagination
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jonian Guveli
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-06-01 00:00:00.000000000 Z
11
+ date: 2017-06-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: smart_paginate