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.