ref: dockerize
public/javascripts/pagination.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
pagination = { loading: false, showMore: function(newPagination, appendFunction) { if (newPagination) { $('.pagination').replaceWith(newPagination); $('.pagination').addClass('infinite-scroll'); } else $('.pagination').remove(); appendFunction(); }, click: function(callback) { $(document).on('click', '.pagination a', function(e) { e.preventDefault(); if (callback) callback(e, this) else { // what to have as default? } }); }, // inspired by http://stackoverflow.com/questions/13555101/infinite-scroll-and-will-paginate-appending-the-next-page-of-items-multiple-ti infiniteScroll: function(text, options) { options = options || {}; $(function() { $('.pagination').addClass('infinite-scroll'); }); $(window).scroll(function () { // Bail out right away if we're busy loading the next chunk. if (pagination.loading) return; var url = $('.pagination .next_page').attr('href') if (url && $(window).scrollTop() > ($('.pagination').offset().top - $(window).height() - 50)) { $('.pagination').html( $('<div class=loading>').text(text) ); pagination.loading = true if (options.load) // don't forget to set pagination.loading to false! options.load(url) else $.getScript(url).always(function() { pagination.loading = false }); } }); }, }; |