summaryrefslogtreecommitdiff
path: root/app/assets/javascripts/pager.js
diff options
context:
space:
mode:
Diffstat (limited to 'app/assets/javascripts/pager.js')
-rw-r--r--app/assets/javascripts/pager.js64
1 files changed, 64 insertions, 0 deletions
diff --git a/app/assets/javascripts/pager.js b/app/assets/javascripts/pager.js
new file mode 100644
index 00000000000..11538c81587
--- /dev/null
+++ b/app/assets/javascripts/pager.js
@@ -0,0 +1,64 @@
+// Generated by CoffeeScript 1.10.0
+(function() {
+ this.Pager = {
+ init: function(limit, preload, disable, callback) {
+ this.limit = limit != null ? limit : 0;
+ this.disable = disable != null ? disable : false;
+ this.callback = callback != null ? callback : $.noop;
+ this.loading = $('.loading').first();
+ if (preload) {
+ this.offset = 0;
+ this.getOld();
+ } else {
+ this.offset = this.limit;
+ }
+ return this.initLoadMore();
+ },
+ getOld: function() {
+ this.loading.show();
+ return $.ajax({
+ type: "GET",
+ url: $(".content_list").data('href') || location.href,
+ data: "limit=" + this.limit + "&offset=" + this.offset,
+ complete: (function(_this) {
+ return function() {
+ return _this.loading.hide();
+ };
+ })(this),
+ success: function(data) {
+ Pager.append(data.count, data.html);
+ return Pager.callback();
+ },
+ dataType: "json"
+ });
+ },
+ append: function(count, html) {
+ $(".content_list").append(html);
+ if (count > 0) {
+ return this.offset += count;
+ } else {
+ return this.disable = true;
+ }
+ },
+ initLoadMore: function() {
+ $(document).unbind('scroll');
+ return $(document).endlessScroll({
+ bottomPixels: 400,
+ fireDelay: 1000,
+ fireOnce: true,
+ ceaseFire: function() {
+ return Pager.disable;
+ },
+ callback: (function(_this) {
+ return function(i) {
+ if (!_this.loading.is(':visible')) {
+ _this.loading.show();
+ return Pager.getOld();
+ }
+ };
+ })(this)
+ });
+ }
+ };
+
+}).call(this);