diff --git a/webclient/js/ng-infinite-scroll-matrix.js b/webclient/js/ng-infinite-scroll-matrix.js
new file mode 100644
index 0000000000..045ec8d93e
--- /dev/null
+++ b/webclient/js/ng-infinite-scroll-matrix.js
@@ -0,0 +1,63 @@
+/* ng-infinite-scroll - v1.0.0 - 2013-02-23
+ Matrix: Modified to support scrolling UP to get infinite loading and to listen
+ to scroll events on the PARENT element, not the window.
+*/
+var mod;
+
+mod = angular.module('infinite-scroll', []);
+
+mod.directive('infiniteScroll', [
+ '$rootScope', '$window', '$timeout', function($rootScope, $window, $timeout) {
+ return {
+ link: function(scope, elem, attrs) {
+ var checkWhenEnabled, handler, scrollDistance, scrollEnabled;
+ $window = angular.element($window);
+ scrollDistance = 0;
+ if (attrs.infiniteScrollDistance != null) {
+ scope.$watch(attrs.infiniteScrollDistance, function(value) {
+ return scrollDistance = parseInt(value, 10);
+ });
+ }
+ scrollEnabled = true;
+ checkWhenEnabled = false;
+ if (attrs.infiniteScrollDisabled != null) {
+ scope.$watch(attrs.infiniteScrollDisabled, function(value) {
+ scrollEnabled = !value;
+ if (scrollEnabled && checkWhenEnabled) {
+ checkWhenEnabled = false;
+ return handler();
+ }
+ });
+ }
+ handler = function() {
+ var elementTop, remaining, shouldScroll, windowTop;
+ windowTop = 0;
+ elementTop = elem.offset().top;
+ shouldScroll = elementTop >= 0; // top of list is at the top of the window or further down the page
+ if (shouldScroll && scrollEnabled) {
+ if ($rootScope.$$phase) {
+ return scope.$eval(attrs.infiniteScroll);
+ } else {
+ return scope.$apply(attrs.infiniteScroll);
+ }
+ } else if (shouldScroll) {
+ return checkWhenEnabled = true;
+ }
+ };
+ elem.parent().on('scroll', handler);
+ scope.$on('$destroy', function() {
+ return elem.parent().off('scroll', handler);
+ });
+ return $timeout((function() {
+ if (attrs.infiniteScrollImmediateCheck) {
+ if (scope.$eval(attrs.infiniteScrollImmediateCheck)) {
+ return handler();
+ }
+ } else {
+ return handler();
+ }
+ }), 0);
+ }
+ };
+ }
+]);
|