From 470eb299b656f6741668948e62d0a5021f864530 Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Wed, 1 Oct 2014 04:56:42 -0400 Subject: [PATCH] Issue #49, add scrollstop event support and use it to optimize document page image loading --- .../main/static/packages/jquery.scrollstop.js | 72 +++++++++++++++++++ mayan/apps/main/templates/base.html | 5 +- 2 files changed, 75 insertions(+), 2 deletions(-) create mode 100644 mayan/apps/main/static/packages/jquery.scrollstop.js diff --git a/mayan/apps/main/static/packages/jquery.scrollstop.js b/mayan/apps/main/static/packages/jquery.scrollstop.js new file mode 100644 index 0000000000..a0bb637100 --- /dev/null +++ b/mayan/apps/main/static/packages/jquery.scrollstop.js @@ -0,0 +1,72 @@ +/* http://james.padolsey.com/javascript/special-scroll-events-for-jquery/ */ + +(function(){ + + var special = jQuery.event.special, + uid1 = "D" + (+new Date()), + uid2 = "D" + (+new Date() + 1); + + special.scrollstart = { + setup: function() { + + var timer, + handler = function(evt) { + + var _self = this, + _args = arguments; + + if (timer) { + clearTimeout(timer); + } else { + evt.type = "scrollstart"; + jQuery.event.dispatch.apply(_self, _args); + } + + timer = setTimeout( function(){ + timer = null; + }, special.scrollstop.latency); + + }; + + jQuery(this).bind("scroll", handler).data(uid1, handler); + + }, + teardown: function(){ + jQuery(this).unbind( "scroll", jQuery(this).data(uid1) ); + } + }; + + special.scrollstop = { + latency: 300, + setup: function() { + + var timer, + handler = function(evt) { + + var _self = this, + _args = arguments; + + if (timer) { + clearTimeout(timer); + } + + timer = setTimeout( function(){ + + timer = null; + evt.type = "scrollstop"; + jQuery.event.dispatch.apply(_self, _args); + + + }, special.scrollstop.latency); + + }; + + jQuery(this).bind("scroll", handler).data(uid2, handler); + + }, + teardown: function() { + jQuery(this).unbind( "scroll", jQuery(this).data(uid2) ); + } + }; + +})(); \ No newline at end of file diff --git a/mayan/apps/main/templates/base.html b/mayan/apps/main/templates/base.html index ff9c7055b0..e9fef86ba6 100644 --- a/mayan/apps/main/templates/base.html +++ b/mayan/apps/main/templates/base.html @@ -116,6 +116,7 @@ {% block web_theme_javascript %} + @@ -242,10 +243,10 @@ $('img.lazy-load-carousel').lazyload({ container: $(".carousel-container"), - appear: function(elements_left, settings) { load_document_image($(this)); - } + }, + event: 'scrollstop' }); $('img.lazy-load-interactive').lazyload({