scratch – Blame information for rev 117

Subversion Repositories:
Rev:
Rev Author Line No. Line
117 office 1 /*=========================
2 Images Lazy Loading
3 ===========================*/
4 s.lazy = {
5 initialImageLoaded: false,
6 loadImageInSlide: function (index, loadInDuplicate) {
7 if (typeof index === 'undefined') return;
8 if (typeof loadInDuplicate === 'undefined') loadInDuplicate = true;
9 if (s.slides.length === 0) return;
10  
11 var slide = s.slides.eq(index);
12 var img = slide.find('.' + s.params.lazyLoadingClass + ':not(.' + s.params.lazyStatusLoadedClass + '):not(.' + s.params.lazyStatusLoadingClass + ')');
13 if (slide.hasClass(s.params.lazyLoadingClass) && !slide.hasClass(s.params.lazyStatusLoadedClass) && !slide.hasClass(s.params.lazyStatusLoadingClass)) {
14 img = img.add(slide[0]);
15 }
16 if (img.length === 0) return;
17  
18 img.each(function () {
19 var _img = $(this);
20 _img.addClass(s.params.lazyStatusLoadingClass);
21 var background = _img.attr('data-background');
22 var src = _img.attr('data-src'),
23 srcset = _img.attr('data-srcset'),
24 sizes = _img.attr('data-sizes');
25 s.loadImage(_img[0], (src || background), srcset, sizes, false, function () {
26 if (typeof s === 'undefined' || s === null || !s) return;
27 if (background) {
28 _img.css('background-image', 'url("' + background + '")');
29 _img.removeAttr('data-background');
30 }
31 else {
32 if (srcset) {
33 _img.attr('srcset', srcset);
34 _img.removeAttr('data-srcset');
35 }
36 if (sizes) {
37 _img.attr('sizes', sizes);
38 _img.removeAttr('data-sizes');
39 }
40 if (src) {
41 _img.attr('src', src);
42 _img.removeAttr('data-src');
43 }
44  
45 }
46  
47 _img.addClass(s.params.lazyStatusLoadedClass).removeClass(s.params.lazyStatusLoadingClass);
48 slide.find('.' + s.params.lazyPreloaderClass + ', .' + s.params.preloaderClass).remove();
49 if (s.params.loop && loadInDuplicate) {
50 var slideOriginalIndex = slide.attr('data-swiper-slide-index');
51 if (slide.hasClass(s.params.slideDuplicateClass)) {
52 var originalSlide = s.wrapper.children('[data-swiper-slide-index="' + slideOriginalIndex + '"]:not(.' + s.params.slideDuplicateClass + ')');
53 s.lazy.loadImageInSlide(originalSlide.index(), false);
54 }
55 else {
56 var duplicatedSlide = s.wrapper.children('.' + s.params.slideDuplicateClass + '[data-swiper-slide-index="' + slideOriginalIndex + '"]');
57 s.lazy.loadImageInSlide(duplicatedSlide.index(), false);
58 }
59 }
60 s.emit('onLazyImageReady', s, slide[0], _img[0]);
61 });
62  
63 s.emit('onLazyImageLoad', s, slide[0], _img[0]);
64 });
65  
66 },
67 load: function () {
68 var i;
69 var slidesPerView = s.params.slidesPerView;
70 if (slidesPerView === 'auto') {
71 slidesPerView = 0;
72 }
73 if (!s.lazy.initialImageLoaded) s.lazy.initialImageLoaded = true;
74 if (s.params.watchSlidesVisibility) {
75 s.wrapper.children('.' + s.params.slideVisibleClass).each(function () {
76 s.lazy.loadImageInSlide($(this).index());
77 });
78 }
79 else {
80 if (slidesPerView > 1) {
81 for (i = s.activeIndex; i < s.activeIndex + slidesPerView ; i++) {
82 if (s.slides[i]) s.lazy.loadImageInSlide(i);
83 }
84 }
85 else {
86 s.lazy.loadImageInSlide(s.activeIndex);
87 }
88 }
89 if (s.params.lazyLoadingInPrevNext) {
90 if (slidesPerView > 1 || (s.params.lazyLoadingInPrevNextAmount && s.params.lazyLoadingInPrevNextAmount > 1)) {
91 var amount = s.params.lazyLoadingInPrevNextAmount;
92 var spv = slidesPerView;
93 var maxIndex = Math.min(s.activeIndex + spv + Math.max(amount, spv), s.slides.length);
94 var minIndex = Math.max(s.activeIndex - Math.max(spv, amount), 0);
95 // Next Slides
96 for (i = s.activeIndex + slidesPerView; i < maxIndex; i++) {
97 if (s.slides[i]) s.lazy.loadImageInSlide(i);
98 }
99 // Prev Slides
100 for (i = minIndex; i < s.activeIndex ; i++) {
101 if (s.slides[i]) s.lazy.loadImageInSlide(i);
102 }
103 }
104 else {
105 var nextSlide = s.wrapper.children('.' + s.params.slideNextClass);
106 if (nextSlide.length > 0) s.lazy.loadImageInSlide(nextSlide.index());
107  
108 var prevSlide = s.wrapper.children('.' + s.params.slidePrevClass);
109 if (prevSlide.length > 0) s.lazy.loadImageInSlide(prevSlide.index());
110 }
111 }
112 },
113 onTransitionStart: function () {
114 if (s.params.lazyLoading) {
115 if (s.params.lazyLoadingOnTransitionStart || (!s.params.lazyLoadingOnTransitionStart && !s.lazy.initialImageLoaded)) {
116 s.lazy.load();
117 }
118 }
119 },
120 onTransitionEnd: function () {
121 if (s.params.lazyLoading && !s.params.lazyLoadingOnTransitionStart) {
122 s.lazy.load();
123 }
124 }
125 };