diff options
Diffstat (limited to 'www/lib/ion-image-lazy-load/ionic-image-lazy-load.js')
| -rw-r--r-- | www/lib/ion-image-lazy-load/ionic-image-lazy-load.js | 124 |
1 files changed, 0 insertions, 124 deletions
diff --git a/www/lib/ion-image-lazy-load/ionic-image-lazy-load.js b/www/lib/ion-image-lazy-load/ionic-image-lazy-load.js deleted file mode 100644 index da9ff94d..00000000 --- a/www/lib/ion-image-lazy-load/ionic-image-lazy-load.js +++ /dev/null @@ -1,124 +0,0 @@ -/** - * Created by PAVEI on 30/09/2014. - * Updated by Ross Martin on 12/05/2014 - * Updated by Davide Pastore on 04/14/2015 - * Updated by Michel Vidailhet on 05/12/2015 - */ - -angular.module('ionicLazyLoad', []); - -angular.module('ionicLazyLoad') - -.directive('lazyScroll', ['$rootScope', '$timeout', - function($rootScope, $timeout) { - return { - restrict: 'A', - link: function ($scope, $element) { - - var scrollTimeoutId = 0; - - $scope.invoke = function () { - $rootScope.$broadcast('lazyScrollEvent'); - }; - - $element.bind('scroll', function () { - - $timeout.cancel(scrollTimeoutId); - - // wait and then invoke listeners (simulates stop event) - scrollTimeoutId = $timeout($scope.invoke, 0); - - }); - - - } - }; -}]) - -.directive('imageLazySrc', ['$document', '$timeout', '$ionicScrollDelegate', '$compile', - function ($document, $timeout, $ionicScrollDelegate, $compile) { - return { - restrict: 'A', - scope: { - lazyScrollResize: "@lazyScrollResize", - imageLazyBackgroundImage: "@imageLazyBackgroundImage" - }, - link: function ($scope, $element, $attributes) { - if (!$attributes.imageLazyDistanceFromBottomToLoad) { - $attributes.imageLazyDistanceFromBottomToLoad = 0; - } - if (!$attributes.imageLazyDistanceFromRightToLoad) { - $attributes.imageLazyDistanceFromRightToLoad = 0; - } - - if ($attributes.imageLazyLoader) { - var loader = $compile('<div class="image-loader-container"><ion-spinner class="image-loader" icon="' + $attributes.imageLazyLoader + '"></ion-spinner></div>')($scope); - $element.after(loader); - } - - var deregistration = $scope.$on('lazyScrollEvent', function () { - //console.log('scroll'); - if (isInView()) { - loadImage(); - deregistration(); - } - } - ); - - function loadImage() { - //Bind "load" event - $element.bind("load", function (e) { - if ($attributes.imageLazyLoader) { - loader.remove(); - } - if ($scope.lazyScrollResize == "true") { - //Call the resize to recalculate the size of the screen - $ionicScrollDelegate.resize(); - } - }); - - if ($scope.imageLazyBackgroundImage == "true") { - var bgImg = new Image(); - bgImg.onload = function () { - if ($attributes.imageLazyLoader) { - loader.remove(); - } - $element[0].style.backgroundImage = 'url(' + $attributes.imageLazySrc + ')'; // set style attribute on element (it will load image) - if ($scope.lazyScrollResize == "true") { - //Call the resize to recalculate the size of the screen - $ionicScrollDelegate.resize(); - } - }; - bgImg.src = $attributes.imageLazySrc; - } else { - $element[0].src = $attributes.imageLazySrc; // set src attribute on element (it will load image) - } - } - - function isInView() { - var clientHeight = $document[0].documentElement.clientHeight; - var clientWidth = $document[0].documentElement.clientWidth; - var imageRect = $element[0].getBoundingClientRect(); - return (imageRect.top >= 0 && imageRect.top <= clientHeight + parseInt($attributes.imageLazyDistanceFromBottomToLoad)) - && (imageRect.left >= 0 && imageRect.left <= clientWidth + parseInt($attributes.imageLazyDistanceFromRightToLoad)); - } - - // bind listener - // listenerRemover = scrollAndResizeListener.bindListener(isInView); - - // unbind event listeners if element was destroyed - // it happens when you change view, etc - $element.on('$destroy', function () { - deregistration(); - }); - - // explicitly call scroll listener (because, some images are in viewport already and we haven't scrolled yet) - $timeout(function () { - if (isInView()) { - loadImage(); - deregistration(); - } - }, 500); - } - }; - }]); |
