alphabetical_paginate 0.2.8 → 0.2.10
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/alphabetical_paginate/.array.rb.swo +0 -0
- data/lib/alphabetical_paginate/.view_helpers.rb.swo +0 -0
- data/lib/alphabetical_paginate/array.rb +9 -10
- data/lib/alphabetical_paginate/version.rb +1 -1
- data/lib/alphabetical_paginate/view_helpers.rb +7 -5
- data/spec/alphabetical_paginate_spec.rb +84 -1
- data/spec/support/helpers.rb +2 -1
- data/vendor/assets/javascripts/.alphabetical_paginate.js.swp +0 -0
- data/vendor/assets/javascripts/alphabetical_paginate.js +15 -1
- metadata +4 -1
Binary file
|
Binary file
|
@@ -2,11 +2,14 @@ class Array
|
|
2
2
|
def alpha_paginate current_field, params = {enumerate:false, default_field: "a",
|
3
3
|
paginate_all: false, numbers: true,
|
4
4
|
others: true, pagination_class: "pagination-centered"}
|
5
|
+
params[:paginate_all] ||= false
|
6
|
+
params[:numbers] = true if !params.has_key? :numbers
|
7
|
+
params[:others] = true if !params.has_key? :numbers
|
8
|
+
params[:pagination_class] ||= "pagination-centered"
|
5
9
|
output = []
|
6
|
-
params = {}
|
7
10
|
availableLetters = {}
|
8
11
|
if current_field == nil
|
9
|
-
current_field = default_field
|
12
|
+
current_field = params[:default_field]
|
10
13
|
end
|
11
14
|
self.each do |x|
|
12
15
|
field_val = block_given? ? yield(x).to_s : x.id.to_s
|
@@ -20,20 +23,16 @@ class Array
|
|
20
23
|
availableLetters[field_letter] = true if !availableLetters.has_key? field_letter
|
21
24
|
output << x if current_field =~ /[0-9]/ && field_letter == current_field
|
22
25
|
else
|
23
|
-
availableLetters['
|
24
|
-
output << x if current_field == "
|
26
|
+
availableLetters['0'] = true if !availableLetters.has_key? 'numbers'
|
27
|
+
output << x if current_field == "0"
|
25
28
|
end
|
26
29
|
else
|
27
|
-
availableLetters['
|
28
|
-
output << x if current_field == "
|
30
|
+
availableLetters['#'] = true if !availableLetters.has_key? 'other'
|
31
|
+
output << x if current_field == "#"
|
29
32
|
end
|
30
33
|
end
|
31
34
|
params[:availableLetters] = availableLetters.collect{|k,v| k.to_s}
|
32
35
|
params[:currentField] = current_field
|
33
|
-
params[:paginate_all] ||= false
|
34
|
-
params[:numbers] ||= true
|
35
|
-
params[:others] ||= true
|
36
|
-
params[:pagination_class] ||= "pagination-centered"
|
37
36
|
return output, params
|
38
37
|
end
|
39
38
|
end
|
@@ -3,6 +3,7 @@ module AlphabeticalPaginate
|
|
3
3
|
def alphabetical_paginate params
|
4
4
|
|
5
5
|
output = javascript_include_tag 'alphabetical_paginate'
|
6
|
+
links = ""
|
6
7
|
|
7
8
|
if params[:paginate_all]
|
8
9
|
range = ('a'..'z').to_a
|
@@ -14,16 +15,17 @@ module AlphabeticalPaginate
|
|
14
15
|
elsif params[:numbers]
|
15
16
|
range = ["0"] + range
|
16
17
|
end
|
17
|
-
range.each
|
18
|
+
range.each do |l|
|
18
19
|
if l == params[:currentField]
|
19
20
|
links += '<li class="active"><a href="#" data-letter="' + l + '">' + l + "</a></li>\n"
|
20
|
-
elsif params[:availableLetters].
|
21
|
+
elsif params[:availableLetters].include? l
|
21
22
|
links += '<li><a href="#" data-letter="' + l + '">' + l + "</a></li>\n"
|
22
23
|
else
|
23
24
|
links += '<li class="disabled"><a href="#" data-letter="' + l + '">' + l + "</a></li>\n"
|
24
25
|
end
|
26
|
+
end
|
25
27
|
else
|
26
|
-
params[:availableLetters] -= (
|
28
|
+
params[:availableLetters] -= (1..9).to_a.map{|x| x.to_s} if !params[:numbers]
|
27
29
|
params[:availableLetters] -= ["#"] if !params[:others]
|
28
30
|
|
29
31
|
params[:availableLetters].each do |l|
|
@@ -43,8 +45,8 @@ module AlphabeticalPaginate
|
|
43
45
|
end
|
44
46
|
pagination +=
|
45
47
|
"<ul>\n" +
|
46
|
-
"<li><a id='paginate-prev' href='#'>Prev</a></li>"
|
47
|
-
|
48
|
+
"<li><a id='paginate-prev' href='#'>Prev</a></li>" +
|
49
|
+
links +
|
48
50
|
"</ul\n" +
|
49
51
|
"<li><a id='paginate-next' href='#'>Next</a></li>" +
|
50
52
|
"</div>"
|
@@ -1,5 +1,16 @@
|
|
1
1
|
require 'alpha_example'
|
2
2
|
require 'alphabetical_paginate'
|
3
|
+
require_relative '#{File.dirname(__FILE__)}/../../lib/alphabetical_paginate/view_helpers'
|
4
|
+
|
5
|
+
# stub methods
|
6
|
+
def javascript_include_tag x
|
7
|
+
return ""
|
8
|
+
end
|
9
|
+
class String
|
10
|
+
def html_safe
|
11
|
+
return self
|
12
|
+
end
|
13
|
+
end
|
3
14
|
|
4
15
|
module AlphabeticalPaginate
|
5
16
|
|
@@ -48,6 +59,78 @@ module AlphabeticalPaginate
|
|
48
59
|
expectedParams.to_s
|
49
60
|
end
|
50
61
|
end
|
62
|
+
include ViewHelpers
|
63
|
+
|
64
|
+
describe "#alphabetical_paginate" do
|
65
|
+
before :each do
|
66
|
+
@list = []
|
67
|
+
(["@!#"] + (0..9).to_a.map{|x| x.to_s} + ("a".."z").to_a).each do |x|
|
68
|
+
("a".."y").to_a.each do |y|
|
69
|
+
@list << x + y
|
70
|
+
end
|
71
|
+
end
|
72
|
+
@list.map! do |x|
|
73
|
+
AlphaExample.new(x)
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
it "should have div tags and pagination classes" do
|
78
|
+
index, params = @list.alpha_paginate(nil)
|
79
|
+
pagination = alphabetical_paginate(params)
|
80
|
+
pagination.should include "div", "pagination"
|
81
|
+
end
|
82
|
+
|
83
|
+
it "should include a numbers and others field" do
|
84
|
+
index, params = @list.alpha_paginate(nil)
|
85
|
+
pagination = alphabetical_paginate(params)
|
86
|
+
(["#"] + ["0"] + ("a".."z").to_a.map{|x|
|
87
|
+
'data-letter="%s"'%x}).each do |x|
|
88
|
+
pagination.should include x
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
it "should default all values when necessary" do
|
93
|
+
index, params = @list.alpha_paginate(nil, {})
|
94
|
+
pagination = alphabetical_paginate(params)
|
95
|
+
(["#"] + ["0"] + ("a".."z").to_a.map{|x|
|
96
|
+
'data-letter="%s"'%x}).each do |x|
|
97
|
+
pagination.should include x
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
it "should hide values that don't exist" do
|
102
|
+
index, params = @list.alpha_paginate(nil){|x| x.word}
|
103
|
+
pagination = alphabetical_paginate(params)
|
104
|
+
(("a".."y").to_a.map{|x|
|
105
|
+
'data-letter="%s"'%x}).each do |x|
|
106
|
+
pagination.should include x
|
107
|
+
end
|
108
|
+
pagination.should_not include 'data-letter="z"', 'data-letter="#"',
|
109
|
+
'data-letter="0"'
|
110
|
+
end
|
111
|
+
|
112
|
+
it "should enumerate when asked" do
|
113
|
+
index, params = @list.alpha_paginate(nil, {enumerate: true})
|
114
|
+
pagination = alphabetical_paginate(params)
|
115
|
+
(("0".."9").to_a.map{|x|
|
116
|
+
'data-letter="%s"'% x.to_s }).each do |x|
|
117
|
+
pagination.should include x
|
118
|
+
end
|
119
|
+
|
120
|
+
end
|
121
|
+
it "should display all when asked" do
|
122
|
+
index, params = @list.alpha_paginate(nil, {paginate_all: true,
|
123
|
+
enumerate: true}){|x| x.word}
|
124
|
+
pagination = alphabetical_paginate(params)
|
125
|
+
(["#"] + (0..9).to_a.map{|x| x.to_s} + ("a".."z").to_a.map{|x|
|
126
|
+
'data-letter="%s"'%x}).each do |x|
|
127
|
+
pagination.should include x
|
128
|
+
end
|
129
|
+
end
|
130
|
+
|
131
|
+
|
132
|
+
|
133
|
+
end
|
134
|
+
end
|
51
135
|
|
52
|
-
end
|
53
136
|
end
|
data/spec/support/helpers.rb
CHANGED
Binary file
|
@@ -1 +1,15 @@
|
|
1
|
-
|
1
|
+
$(function() {
|
2
|
+
var text = "<span class='loading'>Loading...</span>"
|
3
|
+
|
4
|
+
$(".pagination a").live("click", function(e) {
|
5
|
+
jQuery.getScript(location.href.replace("(letter=?)", "letter=" + this.data("letter")));
|
6
|
+
jQuery(".pagination").html(text);
|
7
|
+
history.pushState(null, document.title, location.href.replace("(letter=?)", "letter=" + this.data("letter")));
|
8
|
+
e.preventDefault();
|
9
|
+
});
|
10
|
+
|
11
|
+
$(window).bind("popstate", function() {
|
12
|
+
$.getScript(location.href);
|
13
|
+
$(".pagination").html(text);
|
14
|
+
});
|
15
|
+
});
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: alphabetical_paginate
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.10
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -89,6 +89,8 @@ files:
|
|
89
89
|
- Rakefile
|
90
90
|
- alphabetical_paginate.gemspec
|
91
91
|
- lib/alphabetical_paginate.rb
|
92
|
+
- lib/alphabetical_paginate/.array.rb.swo
|
93
|
+
- lib/alphabetical_paginate/.view_helpers.rb.swo
|
92
94
|
- lib/alphabetical_paginate/array.rb
|
93
95
|
- lib/alphabetical_paginate/engine.rb
|
94
96
|
- lib/alphabetical_paginate/railtie.rb
|
@@ -97,6 +99,7 @@ files:
|
|
97
99
|
- spec/alpha_example.rb
|
98
100
|
- spec/alphabetical_paginate_spec.rb
|
99
101
|
- spec/support/helpers.rb
|
102
|
+
- vendor/assets/javascripts/.alphabetical_paginate.js.swp
|
100
103
|
- vendor/assets/javascripts/alphabetical_paginate.js
|
101
104
|
- vendor/assets/javascripts/index.js
|
102
105
|
homepage: http://google.com
|