flex_infinite_scroll 0.1.0 → 0.1.1

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
  SHA256:
3
- metadata.gz: c06e8d3f9cc52fcfb5f27ecf04f9aa527fe9d8a68605ab27c8655b9e59a110f6
4
- data.tar.gz: e38bd3e917d5cf558d7c501d450c1331e7bb9ba7e64ab6b34fc5703907a9195e
3
+ metadata.gz: 125e4f628fdad23f1e968f3cc131cd18903577db0450880253f9658aeefd73dc
4
+ data.tar.gz: 2c1ec04e55f76d94fe8444bcd15fd32dcf31c3694d2934e79f7168cb225cf846
5
5
  SHA512:
6
- metadata.gz: 3c289900ff552c532db39185bb4405b2500de066160ee5c4752e2fab2855660be01233d5d16e9e4d4ccbd01bfa5c5e87dd4b6c03bae5b2b0d431e61ae3ca59db
7
- data.tar.gz: 7b9c06824b812f18b52454a520051b0a9d5b1e3b4c5be807b5311a972a7ee44dcd50b6c40026fb547e0f3db5b9e678efe50d3da927defe02db9d2b9591d87199
6
+ metadata.gz: f88222c0722ed0ba5c2fb51464b1ce43019e28daf99494615b807fab79d256d0d854883888f701aa6add9539ae344df447fc4c3419fcf384f4628e67d5f0e34d
7
+ data.tar.gz: d2cd42824a91fca0561c034b548fa87c03e6ad20a7154a4d163594fa54ca661d73b1d4112ea17c7bd091775769aaa4c432f10736e8825d89ae7738c6cbb6809c
@@ -1,11 +1,19 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Infinite scroll module
4
+ require 'flex_infinite_scroll/view_helpers'
5
+ require 'sanitize'
6
+
2
7
  module FlexInfiniteScroll
3
- class Engine < ::Rails::Engine; end
8
+ class Engine < ::Rails::Engine
9
+ ActionView::Base.send :include, FlexInfiniteScroll::ViewHelpers
10
+ end
4
11
  extend ActiveSupport::Concern
5
12
  def infinite_scroll(page = 1, page_size = (ENV['FIS_PAGE_SIZE'] || 20))
13
+ page ||= 1
6
14
  page = page.to_i if page.class == String
7
15
  offset_skip = (page - 1) * page_size
8
- total_page = (count / page_size.to_f).ceil
16
+ total_page = (count('*') / page_size.to_f).ceil
9
17
  {
10
18
  data: offset(offset_skip).limit(page_size),
11
19
  total_page: total_page,
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ module FlexInfiniteScroll
4
+ module ViewHelpers
5
+ include ActionView::Helpers::TagHelper
6
+ include ActionView::Context
7
+
8
+ def fis_init_list(data, partial, config = {})
9
+ result = content_tag :div, class: "fis-container #{config[:container_class] || ''}" do
10
+ fis_get_list(data, partial, 'html')
11
+ end
12
+ config[:scrollContainer] ||= 'body'
13
+ config[:targetContainer] ||= '.fis-container'
14
+ result += javascript_tag do
15
+ "$('#{config[:scrollContainer]}').flexInfiniteScroll(#{config.to_json})".html_safe
16
+ end
17
+ Sanitize.fragment(result,
18
+ Sanitize::Config.merge(Sanitize::Config::RELAXED,
19
+ elements: Sanitize::Config::RELAXED[:elements] + %w(script))).html_safe
20
+ end
21
+
22
+ def fis_next_page(data, partial)
23
+ data[:data] = fis_get_list(data, partial, 'json')
24
+ data
25
+ end
26
+
27
+ def fis_get_list(data, partial, format)
28
+ result = ''
29
+ data[:data].each do |member|
30
+ result += if format == 'json'
31
+ render_to_string(partial: partial, locals: { fis_object: member })
32
+ else
33
+ render partial: partial, locals: { fis_object: member }
34
+ end
35
+ end
36
+ Sanitize.fragment(result, Sanitize::Config::RELAXED).html_safe
37
+ end
38
+ end
39
+ end
@@ -10,7 +10,7 @@ $.fn.extend({
10
10
  var queryParams = config.queryParams;
11
11
  var dataProcess = config.dataProcess;
12
12
  var initialLoad = config.initialLoad;
13
- var loadMargin = config.loadMargin || 50;
13
+ var loadMargin = config.loadMargin || 150;
14
14
  var beforeAction = config.beforeAction;
15
15
  var afterAction = config.afterAction;
16
16
  var targetContainer = config.targetContainer || scrollContainer ;
@@ -19,7 +19,6 @@ $.fn.extend({
19
19
  scrollContainer.dataset.fisNextPage = nextPage;
20
20
  scrollContainer.dataset.fisUrl = dataUrl;
21
21
  scrollContainer.dataset.fisLoading = 0;
22
-
23
22
  function getData(page = 1){
24
23
  // Check for loading process and last page
25
24
  if (scrollContainer.dataset.fisLoading === '1' || page == 'last') return false
@@ -77,7 +76,10 @@ $.fn.extend({
77
76
  var scrollTop=$(eventTarget).scrollTop();
78
77
  var containerSize=$(scrollContainer).innerHeight();
79
78
  var scrollSize=scrollContainer.scrollHeight;
79
+ console.log(scrollSize - loadMargin)
80
+ console.log(scrollTop + containerSize)
80
81
  if (scrollTop + containerSize > scrollSize - loadMargin && scrollContainer.dataset.fisNextPage != 'last'){
82
+ console.log(1)
81
83
  getData(scrollContainer.dataset.fisNextPage);
82
84
  };
83
85
  })
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: flex_infinite_scroll
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Anton Ignatov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-04-14 00:00:00.000000000 Z
12
- dependencies: []
11
+ date: 2019-04-20 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: sanitize
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'
13
27
  description:
14
28
  email: belmek@me.com
15
29
  executables: []
@@ -17,6 +31,7 @@ extensions: []
17
31
  extra_rdoc_files: []
18
32
  files:
19
33
  - lib/flex_infinite_scroll.rb
34
+ - lib/flex_infinite_scroll/view_helpers.rb
20
35
  - vendor/assets/javascript/flex_infinite_scroll.js
21
36
  homepage: https://github.com/aignatov-bio/flex_infinite_scroll
22
37
  licenses:
@@ -36,7 +51,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
36
51
  - - ">="
37
52
  - !ruby/object:Gem::Version
38
53
  version: '0'
39
- requirements: []
54
+ requirements:
55
+ - Rails
56
+ - jQuery
40
57
  rubyforge_project:
41
58
  rubygems_version: 2.7.6
42
59
  signing_key: