will_paginate_infinite 0.0.1
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 +7 -0
- data/.gitignore +22 -0
- data/README.md +76 -0
- data/app/assets/javascripts/will_paginate_infinite.js +13 -0
- data/app/assets/stylesheets/will_paginate_infinite.scss +0 -0
- data/app/helpers/infinite_helper.rb +17 -0
- data/lib/will_paginate_infinite.rb +19 -0
- data/lib/will_paginate_infinite/infinite_renderer.rb +64 -0
- data/will_paginate_infinite.gemspec +22 -0
- metadata +65 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 444accbac3d55cc4911441991f917eb880910a8e
|
4
|
+
data.tar.gz: f03ff150b2cf27a6957f6aefce1dd9e5f57cf372
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 7ccd2018c75d9ac4f45f7b546b7a2713b364f6f8f4486245547904b17a070c8319a0651ffe539730bb08e0506ff0b3ecb96640780072c73baf017c6b819a8115
|
7
|
+
data.tar.gz: 606d9b6cc2f19561c1676870671e9e5b45dd9b675749207d3791c7b2b2795a9b47e14bd4a5779ca19089fbfd8d79ec023a14f0e4f01f62b24767b539af7cbc35
|
data/.gitignore
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
*.gem
|
2
|
+
*.rbc
|
3
|
+
.bundle
|
4
|
+
.config
|
5
|
+
.yardoc
|
6
|
+
Gemfile.lock
|
7
|
+
InstalledFiles
|
8
|
+
_yardoc
|
9
|
+
coverage
|
10
|
+
doc/
|
11
|
+
lib/bundler/man
|
12
|
+
pkg
|
13
|
+
rdoc
|
14
|
+
spec/reports
|
15
|
+
test/tmp
|
16
|
+
test/version_tmp
|
17
|
+
tmp
|
18
|
+
*.bundle
|
19
|
+
*.so
|
20
|
+
*.o
|
21
|
+
*.a
|
22
|
+
mkmf.log
|
data/README.md
ADDED
@@ -0,0 +1,76 @@
|
|
1
|
+
# Instalation
|
2
|
+
|
3
|
+
Include the gem in your Gemfile:
|
4
|
+
```
|
5
|
+
gem 'will_paginate_infinite'
|
6
|
+
```
|
7
|
+
And then execute:
|
8
|
+
```
|
9
|
+
$ bundle install
|
10
|
+
```
|
11
|
+
|
12
|
+
|
13
|
+
Adds to `app/assets/stylesheets/application.scss`:
|
14
|
+
```
|
15
|
+
*= require will_paginate_infinite
|
16
|
+
```
|
17
|
+
|
18
|
+
And javascript to `app/assets/javascripts/application.js`:
|
19
|
+
```
|
20
|
+
//= require will_paginate_infinite
|
21
|
+
```
|
22
|
+
|
23
|
+
|
24
|
+
# Configuration
|
25
|
+
In your index view pagination :
|
26
|
+
```
|
27
|
+
# app/views/news/index.html.erb
|
28
|
+
<h1>News List</h1>
|
29
|
+
|
30
|
+
<div class="list-news">
|
31
|
+
<ul>
|
32
|
+
<% @news.each do |item| %>
|
33
|
+
<%= render item %>
|
34
|
+
<% end %>
|
35
|
+
</ul>
|
36
|
+
|
37
|
+
<%= will_paginate @news, renderer: WillPaginateInfinite::InfinitePagination %>
|
38
|
+
</div>
|
39
|
+
```
|
40
|
+
Will paginate renderer: `WillPaginateInfinite::InfinitePagination`
|
41
|
+
|
42
|
+
|
43
|
+
In content partial view:
|
44
|
+
```
|
45
|
+
# app/views/news/_news.html.erb
|
46
|
+
<li>
|
47
|
+
<%= item.title %>
|
48
|
+
</li>
|
49
|
+
```
|
50
|
+
|
51
|
+
And in controller/action with items to be paginated:
|
52
|
+
```
|
53
|
+
# app/controllers/news_controller.rb
|
54
|
+
class NewsController < ApplicationController
|
55
|
+
def index
|
56
|
+
@news = News.order(:created_at).paginate(:page => params[:page], :per_page => 30)
|
57
|
+
# ...
|
58
|
+
|
59
|
+
respond_to do |format|
|
60
|
+
format.html
|
61
|
+
format.js
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
```
|
66
|
+
|
67
|
+
Creates a javascript version from your index view:
|
68
|
+
```
|
69
|
+
# app/views/news/index.js.erb
|
70
|
+
<%= infinite_append ".list-news ul", @news %>
|
71
|
+
```
|
72
|
+
or
|
73
|
+
```
|
74
|
+
# app/views/news/index.js.erb
|
75
|
+
<%= infinite_append ".list-news ul", { partial: "news/news", collection: @news } %>
|
76
|
+
```
|
@@ -0,0 +1,13 @@
|
|
1
|
+
jQuery(function() {
|
2
|
+
if ($('.infinite-pagination').size() > 0) {
|
3
|
+
$(window).on('scroll', function() {
|
4
|
+
var more_posts_url = $('.infinite-pagination a.next_page').attr('href');
|
5
|
+
var bottom_distance = 20;
|
6
|
+
|
7
|
+
if (more_posts_url && $(window).scrollTop() > $(document).height() - $(window).height() - bottom_distance) {
|
8
|
+
$('.infinite-pagination').html('Carregando...');
|
9
|
+
$.getScript(more_posts_url);
|
10
|
+
}
|
11
|
+
});
|
12
|
+
}
|
13
|
+
});
|
File without changes
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module InfiniteHelper
|
2
|
+
def infinite_append(containerSelector, render_options)
|
3
|
+
collection = render_options
|
4
|
+
collection = render_options[:collection] unless render_options.is_a?(ActiveRecord::Relation)
|
5
|
+
|
6
|
+
html = "$('" + containerSelector + "').append('"+ j(render render_options) + "');"
|
7
|
+
|
8
|
+
if collection.next_page
|
9
|
+
html += "$('.infinite-pagination').replaceWith('" + j(will_paginate(collection, renderer: WillPaginateInfinite::InfinitePagination)) + "');"
|
10
|
+
else
|
11
|
+
html += "$(window).off('scroll');"
|
12
|
+
html += "$('.infinite-pagination').remove();"
|
13
|
+
end
|
14
|
+
|
15
|
+
html.html_safe
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# require 'will_paginate'
|
2
|
+
#
|
3
|
+
# module WillPaginateInfinite
|
4
|
+
# module Willpaginate
|
5
|
+
# class Engine < ::Rails::Engine
|
6
|
+
# end
|
7
|
+
# end
|
8
|
+
# end
|
9
|
+
require "will_paginate/view_helpers/action_view"
|
10
|
+
require "will_paginate_infinite/infinite_renderer"
|
11
|
+
|
12
|
+
module WillPaginateInfinite
|
13
|
+
class InfinitePagination < WillPaginate::ActionView::LinkRenderer
|
14
|
+
include WillPaginateInfinite::InfiniteRenderer
|
15
|
+
end
|
16
|
+
|
17
|
+
class Engine < ::Rails::Engine
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
# require "bootstrap_pagination/version"
|
2
|
+
|
3
|
+
module WillPaginateInfinite
|
4
|
+
# Contains functionality shared by all renderer classes.
|
5
|
+
module InfiniteRenderer
|
6
|
+
|
7
|
+
def to_html
|
8
|
+
list_items = pagination.map do |item|
|
9
|
+
case item
|
10
|
+
when Fixnum
|
11
|
+
page_number(item)
|
12
|
+
else
|
13
|
+
send(item)
|
14
|
+
end
|
15
|
+
end.join(@options[:link_separator])
|
16
|
+
|
17
|
+
tag("ul", list_items, class: ul_class)
|
18
|
+
end
|
19
|
+
|
20
|
+
def container_attributes
|
21
|
+
super.except(*[:link_options])
|
22
|
+
end
|
23
|
+
|
24
|
+
protected
|
25
|
+
|
26
|
+
# def page_number(page)
|
27
|
+
# link_options = @options[:link_options] || {}
|
28
|
+
#
|
29
|
+
# if page == current_page
|
30
|
+
# tag("li", tag("span", page), class: "active")
|
31
|
+
# else
|
32
|
+
# tag("li", link(page, page, link_options.merge(rel: rel_value(page))))
|
33
|
+
# end
|
34
|
+
# end
|
35
|
+
|
36
|
+
# def previous_or_next_page(page, text, classname)
|
37
|
+
# link_options = @options[:link_options] || {}
|
38
|
+
#
|
39
|
+
# if page
|
40
|
+
# tag("li", link(text, page, link_options), class: classname)
|
41
|
+
# else
|
42
|
+
# tag("li", tag("span", text), class: "%s disabled" % classname)
|
43
|
+
# end
|
44
|
+
# end
|
45
|
+
|
46
|
+
# def gap
|
47
|
+
# tag("li", tag("span", ELLIPSIS), class: "disabled")
|
48
|
+
# end
|
49
|
+
|
50
|
+
# def previous_page
|
51
|
+
# num = @collection.current_page > 1 && @collection.current_page - 1
|
52
|
+
# previous_or_next_page(num, @options[:previous_label], "prev")
|
53
|
+
# end
|
54
|
+
#
|
55
|
+
# def next_page
|
56
|
+
# num = @collection.current_page < @collection.total_pages && @collection.current_page + 1
|
57
|
+
# previous_or_next_page(num, @options[:next_label], "next")
|
58
|
+
# end
|
59
|
+
|
60
|
+
def ul_class
|
61
|
+
["infinite-pagination", @options[:class]].compact.join(" ")
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
lib = File.expand_path('../lib', __FILE__)
|
2
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
|
+
require 'version'
|
4
|
+
Gem::Specification.new do |s|
|
5
|
+
s.name = 'will_paginate_infinite'
|
6
|
+
s.version = '0.0.1'
|
7
|
+
s.date = '2016-07-15'
|
8
|
+
s.summary = "Will Paginate with infinite scroll"
|
9
|
+
s.description = "Will Paginate with infinite scroll"
|
10
|
+
s.authors = ["Adriano Godoy"]
|
11
|
+
s.email = 'godoy.ccp@gmail.com'
|
12
|
+
|
13
|
+
s.files = `git ls-files -z`.split("\x0")
|
14
|
+
s.require_paths = ["lib"]
|
15
|
+
|
16
|
+
|
17
|
+
s.homepage =
|
18
|
+
'http://rubygems.org/gems/will_paginate_infinite'
|
19
|
+
s.license = 'MIT'
|
20
|
+
|
21
|
+
s.add_runtime_dependency "will_paginate"
|
22
|
+
end
|
metadata
ADDED
@@ -0,0 +1,65 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: will_paginate_infinite
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Adriano Godoy
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-07-15 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: will_paginate
|
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
|
+
description: Will Paginate with infinite scroll
|
28
|
+
email: godoy.ccp@gmail.com
|
29
|
+
executables: []
|
30
|
+
extensions: []
|
31
|
+
extra_rdoc_files: []
|
32
|
+
files:
|
33
|
+
- ".gitignore"
|
34
|
+
- README.md
|
35
|
+
- app/assets/javascripts/will_paginate_infinite.js
|
36
|
+
- app/assets/stylesheets/will_paginate_infinite.scss
|
37
|
+
- app/helpers/infinite_helper.rb
|
38
|
+
- lib/will_paginate_infinite.rb
|
39
|
+
- lib/will_paginate_infinite/infinite_renderer.rb
|
40
|
+
- will_paginate_infinite.gemspec
|
41
|
+
homepage: http://rubygems.org/gems/will_paginate_infinite
|
42
|
+
licenses:
|
43
|
+
- MIT
|
44
|
+
metadata: {}
|
45
|
+
post_install_message:
|
46
|
+
rdoc_options: []
|
47
|
+
require_paths:
|
48
|
+
- lib
|
49
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - ">="
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
55
|
+
requirements:
|
56
|
+
- - ">="
|
57
|
+
- !ruby/object:Gem::Version
|
58
|
+
version: '0'
|
59
|
+
requirements: []
|
60
|
+
rubyforge_project:
|
61
|
+
rubygems_version: 2.5.1
|
62
|
+
signing_key:
|
63
|
+
specification_version: 4
|
64
|
+
summary: Will Paginate with infinite scroll
|
65
|
+
test_files: []
|