PageSourceSearch

https://www.waldbronn.de/site/Waldbronn/resourceCached/10.4.2.6/js/functions-swiper.js

js waldbronn.de collected 2026-10-02 16:43:08 UTC 11,655 bytes, 349 lines download raw bytes

1//=======Swiper========
2var arr=[];
3var i = 0;
4
5jQuery(document).ready(function(){
6  setTimeout(function () {
7    //createSwiper(
8    //   Element das zum Swiper werden soll, 
9    //   Elemente die als Slide verwendet werden sollen, 
10    //   Klassen die dem Element zugefügt werden sollen
11    //   centerSlide?, 
12    //   Spacebetween mit breakpoints
13    //   Spalten -- alternativ über Klassenname
14    //   Spalten mobil beibehalten
15    //)
16      // jQuery('.basecontent-stage .bx-wrapper').addClass('bx-wrapper_stage')
17      // jQuery('.basecontent-stage .bx-wrapper').removeClass('bx-wrapper')
18
19      // createSwiper('.bx-wrapper_stage', '.image_slider > figure',  '', false, [36, 20, 10, 0], 0, false)
20       createSwiper('.bx-wrapper', '.bxSlider > div',  '', false, [0, 0, 0, 0], 0, false)
21      // createSwiper('.pm-topnews', '.c-pm-meldung-wrapper',  '', false, [36, 20, 10, 0], 4, false)
22      // createSwiper('.imageGallery.swiperGallery', '.galleryImage', '', true, [36, 20, 10, 0], 0, false)
23
24  }, 200);
25});
26
27function createSwiper(element, child, className, center, space, cols, colsMo){
28  jQuery(element).css('display', 'none')
29  var auto = false;
30  //Klassennamen beibehalten - bei bx-wrapper irrelevant
31  var swiperName = ''
32  var slideName = ''
33  if(element != '.bx-wrapper'){
34    swiperName = element.split('.')[1]
35    slideName = child.split('.')[1]
36  }
37  if(jQuery(element).length > 0){
38    jQuery(element).each(function(){
39      var gallery = false;
40      var currentSwiper = '.swiper-' + i
41      var currentSwiperName = 'swiper-' + i
42
43      //Prüfen ob Slider automatisch durchlaufen soll - wenn JA dann start/stopp hinzufügen
44      if(jQuery(this).hasClass('auto') || jQuery('.bx-controls-auto', this).length > 0){
45        auto = true;
46      }
47
48      //Grundkonstrukt aufbauen
49      jQuery('<div class="swiper ' + currentSwiperName + ' ' + swiperName + '"></div>').insertAfter(jQuery(this))
50      jQuery(currentSwiper).append('<div class="swiper-wrapper ' + className + '"></div>')
51      jQuery(child, this).addClass('swiper-slide' + ' ' + slideName);
52
53      jQuery(currentSwiper + ' .swiper-wrapper').append(jQuery('.swiper-slide', this))
54
55      jQuery(currentSwiper).wrap('<div class="swiperParent"></div>')
56      jQuery('.swiperParent', jQuery(this).parent()).parent().addClass('swiperArticle')
57
58      //Parent markieren
59      if(jQuery(this).hasClass('pm-topnews')){
60        jQuery('.swiperParent', jQuery(this).parent()).addClass('topnews')
61      }
62      if(jQuery(this).hasClass('imageGallery')){
63        jQuery('.swiperParent', jQuery(this).parent()).addClass('gallery')
64      }
65
66      //Bildergalerie Zusatz
67      if(jQuery(this).hasClass('imageGallery')){
68        gallery = true
69        jQuery('img', this).unwrap(); //Lightbox entfernen
70
71        //Klon erstellen für die Thumbs
72        jQuery(currentSwiper).clone().insertAfter(jQuery(currentSwiper)).removeClass('swiper').removeClass(currentSwiperName).addClass('swiper-thumbs-' + i).addClass('swiper-thumbs');  
73      }
74
75      //Controls zufügen
76      var pause = '<div class="swiper-button-pause swiper-button-pause-' + i + '" aria-label="Stop" tabindex="0"></div>'
77      var play = '<div class="swiper-button-play swiper-button-play-' + i + '" aria-label="Start" tabindex="0"></div>'
78      var prev = '<div class="swiper-button-prev swiper-button-prev-' + i + '" aria-label="Vorherige Folie" tabindex="0"></div>'
79      var pagination = '<div class="swiper-pagination swiper-pagination-' + i + '"></div>'
80      var next = '<div class="swiper-button-next swiper-button-next-' + i + '" aria-label="Nächste Folie" tabindex="0"></div>'
81      
82      if(auto){
83        var controls = '<div class="controls">' + pause + play + prev + pagination + next + '</div>'
84      }
85      else{
86        var controls = '<div class="controls">' + prev + pagination + next + '</div>'
87      }
88      jQuery(currentSwiper).parent().prepend(controls)
89
90      //Spaltenanzahl
91      if(cols == 0){
92        for(var z = 0; z < 6; z++){
93          var name = 'spalten-' + z;
94          var nameClass = '.' + name
95          if(jQuery(nameClass, this).length > 0 || jQuery(this).hasClass(name)){
96            jQuery(currentSwiper).addClass(name)
97            jQuery(currentSwiper).parent().addClass('moreCols')
98
99          }
100        }
101      }
102      else{
103        var name = 'spalten-' + cols;
104        jQuery(currentSwiper).addClass(name)
105        console.log(jQuery(currentSwiper))
106        jQuery(currentSwiper).parent().addClass('moreCols')
107        if(colsMo){
108          jQuery(currentSwiper).addClass('mobileColsSame')
109        }
110
111      }
112      
113      //Swipernummer abspeichern
114      arr.push(i)
115      i++
116
117      //Momentanes Element entfernen
118      jQuery(this).remove()
119    });
120
121    //Swiper initialisieren
122    console.log(arr, element, center)
123    var settings = [arr, '.swiper-', '.swiper-button-next-', '.swiper-button-prev-', '.swiper-button-pause-', '.swiper-button-play-', '.swiper-pagination-', center, space]
124    initSwiper(settings)
125  }
126}
127
128//Swiper initialisieren
129var swiperClass = ''
130var swiperClassGalleryThumbs = '';
131var swiperNextClass = ''
132var swiperPrevClass = ''
133var swiperPauseClass = ''
134var swiperPlayClass = ''
135var swiperPagClass = ''
136var slideView = ''
137var centerSlide = ''
138var spaceBetween1 = '';
139var spaceBetween2 = '';
140var spaceBetween3 = '';
141var spaceBetween4 = '';
142var slideView1 = '';
143var slideView2 = '';
144var slideView3 = '';
145var slideView4 = '';
146
147function initSwiper(settings){
148  //Jeden Swiper für sich initialisieren
149  var counter = settings[0]
150  for(var e=0; e < counter.length; e++){
151    //Klassen mit der jeweiligen Nummerierung des swipers
152    swiperClass = settings[1] + counter[e];
153    swiperClassGalleryThumbs = '.swiper-thumbs-' + counter[e];
154
155    swiperPauseClass = settings[4] + counter[e];
156    swiperPlayClass = settings[5] + counter[e];
157    swiperPrevClass = settings[3] + counter[e];
158    swiperPagClass = settings[6] + counter[e];
159    swiperNextClass = settings[2] + counter[e];
160
161    centerSlide = settings[7];
162
163    spaceBetween1 = settings[8][0];
164    spaceBetween2 = settings[8][1];
165    spaceBetween3 = settings[8][2];
166    spaceBetween4 = settings[8][3];
167
168    slideView1 = 'auto'
169    slideView2 = 'auto'
170    slideView3 = 'auto'
171    slideView4 = 'auto'
172    console.log(e, settings[7], swiperClass, settings[8])
173    //bei mehrspaltigkeit
174    for(var x = 0; x < 6; x++){
175      var name = 'spalten-' + x;
176      if(jQuery(swiperClass).hasClass(name)){
177        if(x > 1){
178          slideView1 = x;
179          slideView2 = 2;
180          slideView3 = 2;
181        }
182        if(x > 4){
183          slideView2 = 3;
184        }
185        if(jQuery(swiperClass).hasClass('mobileColsSame')){
186          if(x > 1){
187            slideView1 = x;
188            slideView2 = x;
189            slideView3 = x;
190            slideView4 = x;
191          }
192          if(x == 3){
193            slideView1 = x;
194            slideView2 = x;
195            slideView3 = x;
196            slideView4 = 2;
197          }
198          if(x > 4){
199            slideView2 = x;
200          }
201        }
202      }
203    }
204
205    const swiper = new Swiper(swiperClass, {
206      keyboard: true,
207      watchSlidesVisibility: true,
208      loopFillGroupWithBlank: false,
209      centeredSlidesBounds: true,
210      centeredSlides: centerSlide,
211      loop: false,
212
213      nextButton: swiperNextClass,
214      prevButton: swiperPrevClass,
215      pagination: {
216        el: swiperPagClass,
217        clickable: true,
218        dynamicBullets: true,
219        dynamicMainBullets: 3,
220      },
221
222      autoplay:{
223        delay: 6500,
224      },
225
226      slidesPerView: slideView4,
227      spaceBetween: spaceBetween4,
228
229      breakpoints: {
230        500: {
231          slidesPerView: slideView3,
232          spaceBetween: spaceBetween3,
233        },
234
235        800: {
236          slidesPerView: slideView2,
237          spaceBetween: spaceBetween2,
238        },
239
240        1100: {
241          slidesPerView: slideView1,
242          spaceBetween: spaceBetween1,
243        }
244      },
245      on: {
246        init(swiper) {
247          //Looping selber triggern - da loop:true nicht barrierefrei
248          const totalSlidesLen = swiper.slides.length;
249          document.querySelector(swiperPrevClass).addEventListener('click', () => {
250            if (swiper.isBeginning) {
251              swiper.slideTo(totalSlidesLen - 1);
252            } else {
253              swiper.slideTo(swiper.realIndex - 1);
254            }
255          });
256          document.querySelector(swiperNextClass).addEventListener('click', () => {
257            if (swiper.isEnd) {
258              swiper.slideTo(0);
259            } else {
260              swiper.slideTo(swiper.realIndex + 1);
261            }
262          });
263          document.querySelector(swiperPrevClass).addEventListener('keydown', (z) => {
264            if(z.key == "Enter"){
265              if (swiper.isBeginning) {
266                swiper.slideTo(totalSlidesLen - 1);
267              } else {
268                swiper.slideTo(swiper.realIndex - 1);
269              }
270            }
271          });
272          document.querySelector(swiperNextClass).addEventListener('keydown', (z) => {
273            if(z.key == "Enter"){
274              if (swiper.isEnd) {
275                swiper.slideTo(0);
276              } else {
277                swiper.slideTo(swiper.realIndex + 1);
278              }
279            }
280          });
281          
282          //Autoplay
283          if(document.querySelector(swiperPlayClass)){
284            var pause = swiperPauseClass
285            var play = swiperPlayClass
286            document.querySelector(swiperPlayClass).classList.add('active')
287            document.querySelector(swiperPauseClass).addEventListener('click', () => {
288              document.querySelector(play).classList.remove('active')
289              document.querySelector(pause).classList.add('active')
290              this.autoplay.stop();
291            });
292            document.querySelector(swiperPlayClass).addEventListener('click', () => {
293              this.autoplay.start();
294              document.querySelector(pause).classList.remove('active')
295              document.querySelector(play).classList.add('active')
296            });
297          }
298          else{
299            this.autoplay.stop();
300          }
301
302          //Buttons disable wenn keine weitere Slide
303          // console.log(swiper)
304          // if(swiper.slides.length <= swiper.params.slidesPerView ){
305          //   swiper.$el[0].parentElement.classList.add('disabled')
306          // }
307          // else{
308          //   swiper.$el[0].parentElement.classList.remove('disabled')
309          // }
310        },
311      }
312    });
313
314    //Bildergalerie
315    if(jQuery(swiperClassGalleryThumbs).length > 0){
316      var swiperThumbs = new Swiper(swiperClassGalleryThumbs, {
317        spaceBetween: 10,
318        centeredSlides: true,
319        slidesPerView: 6,
320        touchRatio: 0.2,
321        slideToClickedSlide: true,
322        loop: false,
323        loopedSlides: 4,
324
325        slidesPerView: slideView4,
326
327        breakpoints: {
328          500: {
329            slidesPerView: slideView3 * 2,
330          },
331
332          800: {
333            slidesPerView: slideView2 * 2,
334          },
335
336          1100: {
337            slidesPerView: slideView1 * 2,
338          }
339        },
340      });
341      swiper.controller.control = swiperThumbs;
342      swiperThumbs.controller.control = swiper;
343    }
344
345    jQuery(swiperClass).css('display', 'block')
346
347  }
348}
349

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.