pagination_ajax 1.0.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,10 @@
1
+ require 'bundler/setup'
2
+ Bundler.setup
3
+
4
+ require 'rspec'
5
+ require 'capybara/rspec'
6
+
7
+ RSpec.configure do |config|
8
+
9
+ end
10
+
@@ -0,0 +1,108 @@
1
+ var ajaxPagination = {
2
+ sendPaginationRequest : function(data_attributes){
3
+ return $.get(data_attributes.url, data_attributes);
4
+ }, drawLinkIcons : function($el, $parent, response){
5
+ var self = this;
6
+ var links_arr = [];
7
+ var new_page = $el.data('element_number');
8
+ var current_page = $parent.data('current_page');
9
+ if(isNaN(new_page)){
10
+ if(response.data.length > 0){
11
+ if(new_page === 'next'){
12
+ current_page+=1
13
+ }else{
14
+ if(current_page !== 0){
15
+ current_page-=1;
16
+ }
17
+ }
18
+ }else{
19
+ //if clicking 'next' returned no results then do nothing
20
+ }
21
+ $parent.data('current_page', current_page);
22
+ }else{
23
+ $parent.data('current_page', new_page);
24
+ }
25
+
26
+ var links_arr = self.buildLinkList($parent, response.data);
27
+
28
+ str_arr = [];
29
+ links_arr.forEach(function(element, index, array){
30
+ var class_name = (element-1 === $parent.data('current_page')) ? 'pagination_link selected_page' : 'pagination_link';
31
+ if(isNaN(element)){
32
+ if(element === '...'){
33
+ str_arr.push("<span>"+element+"</span>");
34
+ }else{
35
+ str_arr.push("<a href='#' class='"+class_name+"' data-element_number='"+element+"'>"+element+"</a>");
36
+ }
37
+ }else{
38
+ str_arr.push("<a href='#' class='"+class_name+"' data-element_number='"+(element-1)+"'>"+element+"</a>");
39
+ }
40
+ });
41
+ $parent.children('a').remove();
42
+ var str = ''
43
+ $parent.find('.link_canvas').html(String.prototype.concat.apply(str,str_arr));
44
+ $parent.find('.link_canvas a').handleLinkClick();
45
+ }, buildDomElements : function($canvas, template, response){
46
+ $canvas.html('');
47
+ if(response.status == 'success'){
48
+ $.each(response.data, function(k,v){
49
+ var content = JST[template](v);
50
+ $canvas.append(content);
51
+ });
52
+ }else{
53
+ $canvas.html('There was an error. Try again or reload the page');
54
+ }
55
+ }, buildLinkList: function($parent, data){
56
+ var current_page = $parent.data('current_page');
57
+ var link_list;
58
+ if($parent.data('per_page') === undefined || $parent.data('total') === undefined || $parent.data('omit_n_and_p')){
59
+ if(data.length < 1){
60
+ link_list = ['prev'];
61
+ }else if(current_page != 0){
62
+ link_list = ['prev','next'];
63
+ }else{
64
+ link_list = ['next'];
65
+ }
66
+ }else{
67
+ var total = $parent.data('total');
68
+ var offset = $parent.data('per_page');
69
+ var new_page = $parent.data('current_page');
70
+ var pages = Math.ceil(total/offset);
71
+ if(pages > 7){
72
+ if(new_page >= 4 && new_page <= pages-5){
73
+ link_list = ['prev',1,'...',new_page-1,new_page,new_page+1,new_page+2,new_page+3,'...',pages,'next'];
74
+ }else if(new_page <= 3){
75
+ link_list = new_page === 0 ? [1,2,3,4,5,'...',pages,'next'] : ['prev',1,2,3,4,5,'...',pages,'next']
76
+ }else if(new_page >= pages-4){ ////// Should be able to cut off the if statement
77
+ link_list = new_page === pages-1 ? ['prev',1,'...',pages-4,pages-3,pages-2,pages-1,pages] : ['prev',1,'...',pages-4,pages-3,pages-2,pages-1,pages,'next'];
78
+ }
79
+ }else{
80
+ link_list = [];
81
+ if(new_page !== 0){
82
+ link_list.push('prev');
83
+ }
84
+ for(var x = 1; x <= pages; x++){
85
+ link_list.push(x);
86
+ }
87
+ if(new_page !== pages-1){
88
+ link_list.push('next');
89
+ }
90
+ }
91
+ }
92
+ return link_list
93
+ }
94
+
95
+ } // end object
96
+
97
+ $(document).ready(function(){
98
+
99
+ if($('.selected_page').length > 0){
100
+ $link = $('.selected_page');
101
+ $link.handleLinkClick();
102
+ $link.trigger('click');
103
+ }
104
+
105
+ });
106
+
107
+
108
+
@@ -0,0 +1,21 @@
1
+ (function ($) {
2
+ $.fn.handleLinkClick = function(){
3
+ $(this).on('click', function(e){
4
+ e.preventDefault();
5
+ var $el = $(this);
6
+ var $parent = $el.closest('.pagination_container');
7
+ var $p_canv = $el.parent().siblings('.pagination_canvas');
8
+ var data_attributes = $parent.data();
9
+ var server_response = ajaxPagination.sendPaginationRequest(data_attributes);
10
+ var response;
11
+ server_response.done(function(data){
12
+ response = {status: 'success', data: data};
13
+ ajaxPagination.buildDomElements($p_canv, data_attributes.template, response);
14
+ ajaxPagination.drawLinkIcons($el, $parent, response);
15
+ }).fail(function(jqXHR, textStatus, errorThrown){
16
+ response = {status: 'fail', data: []};
17
+ ajaxPagination.buildDomElements($p_canv, data_attributes.template, response);
18
+ });
19
+ });
20
+ };
21
+ })(jQuery);
metadata ADDED
@@ -0,0 +1,178 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: pagination_ajax
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.5
5
+ platform: ruby
6
+ authors:
7
+ - louism2
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-06-09 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: jquery-rails
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: bundler
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.6'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.6'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: actionpack
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 4.1.1
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 4.1.1
69
+ - !ruby/object:Gem::Dependency
70
+ name: rspec
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '2.6'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '2.6'
83
+ - !ruby/object:Gem::Dependency
84
+ name: jasmine
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: 2.0.1
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: 2.0.1
97
+ description: "Designed to provide basic pagination functionality using ajax with minimal
98
+ effort. \n If you provide a JST(Javascript Template) file
99
+ and a url to send requests to this gem will\n essentially
100
+ do the rest."
101
+ email:
102
+ - louiscmancini@gmail.com
103
+ executables: []
104
+ extensions: []
105
+ extra_rdoc_files: []
106
+ files:
107
+ - ".DS_Store"
108
+ - ".gitignore"
109
+ - ".rspec"
110
+ - Gemfile
111
+ - LICENSE.txt
112
+ - README.md
113
+ - Rakefile
114
+ - lib/generators/pagination_ajax/install/install_generator.rb
115
+ - lib/pagination_ajax.rb
116
+ - lib/pagination_ajax/railtie.rb
117
+ - lib/pagination_ajax/version.rb
118
+ - lib/pagination_ajax/view_helpers.rb
119
+ - pagination_ajax.gemspec
120
+ - spec/.DS_Store
121
+ - spec/helpers/view_helper_spec.rb
122
+ - spec/javascripts/.DS_Store
123
+ - spec/javascripts/fixtures/complete_pagination_dom.html
124
+ - spec/javascripts/fixtures/pagination_canvas.html
125
+ - spec/javascripts/helpers/.gitkeep
126
+ - spec/javascripts/helpers/jasmine_jquery.js
127
+ - spec/javascripts/helpers/jquery.js
128
+ - spec/javascripts/helpers/jst_obj.js
129
+ - spec/javascripts/helpers/plugin.js
130
+ - spec/javascripts/link_generation_spec.js
131
+ - spec/javascripts/link_interaction_spec.js
132
+ - spec/javascripts/support/jasmine.yml
133
+ - spec/javascripts/support/jasmine_helper.rb
134
+ - spec/javascripts/template_rendering_spec.js
135
+ - spec/spec_helper.rb
136
+ - vendor/assets/javascripts/pagination_ajax.js
137
+ - vendor/assets/javascripts/pagination_ajax_plugin.js
138
+ homepage: ''
139
+ licenses:
140
+ - MIT
141
+ metadata: {}
142
+ post_install_message:
143
+ rdoc_options: []
144
+ require_paths:
145
+ - lib
146
+ required_ruby_version: !ruby/object:Gem::Requirement
147
+ requirements:
148
+ - - ">="
149
+ - !ruby/object:Gem::Version
150
+ version: '0'
151
+ required_rubygems_version: !ruby/object:Gem::Requirement
152
+ requirements:
153
+ - - ">="
154
+ - !ruby/object:Gem::Version
155
+ version: '0'
156
+ requirements: []
157
+ rubyforge_project:
158
+ rubygems_version: 2.2.2
159
+ signing_key:
160
+ specification_version: 4
161
+ summary: Extremely simple pagination using ajax
162
+ test_files:
163
+ - spec/.DS_Store
164
+ - spec/helpers/view_helper_spec.rb
165
+ - spec/javascripts/.DS_Store
166
+ - spec/javascripts/fixtures/complete_pagination_dom.html
167
+ - spec/javascripts/fixtures/pagination_canvas.html
168
+ - spec/javascripts/helpers/.gitkeep
169
+ - spec/javascripts/helpers/jasmine_jquery.js
170
+ - spec/javascripts/helpers/jquery.js
171
+ - spec/javascripts/helpers/jst_obj.js
172
+ - spec/javascripts/helpers/plugin.js
173
+ - spec/javascripts/link_generation_spec.js
174
+ - spec/javascripts/link_interaction_spec.js
175
+ - spec/javascripts/support/jasmine.yml
176
+ - spec/javascripts/support/jasmine_helper.rb
177
+ - spec/javascripts/template_rendering_spec.js
178
+ - spec/spec_helper.rb