1(function(){ 2 3 4var Categories = { 5 6 init: function(){ 7 8 var slideshows = document.querySelectorAll( '.category-films' ); 9 10 if( ! slideshows || ! slideshows.length ) return; 11 12 for( var slideshow of slideshows ) { 13 Categories.initSlideshow( slideshow ); 14 } 15 16 }, 17 18 initSlideshow: function( slideshow ){ 19 20 var slides = slideshow.querySelectorAll( '.slide' ); 21 22 if( slides.length <= 2 ) return; 23 24 slideshow.classList.add('inited'); 25 26 var tinySlider = tns({ 27 container: slideshow, 28 nav: true, 29 controlsPosition: 'bottom', 30 controlsText: [ 'zurück', 'weiter' ], 31 lazyload: false, 32 items: 2, 33 center: true, 34 gutter: 10, 35 responsive: { 36 680: { 37 items: 3, 38 gutter: 20 39 } 40 } 41 }); 42 43 } 44 45}; 46 47 48var Timetable = { 49 50 init: function(){ 51 52 var timetable = document.getElementById( 'timetable' ); 53 54 if( ! timetable ) return; 55 56 var prev = document.createElement( 'div' ); 57 prev.classList.add( 'timetable-nav', 'prev' ); 58 var next = document.createElement( 'div' ); 59 next.classList.add( 'timetable-nav', 'next' ); 60 61 prev.addEventListener( 'click', Timetable.scroll ); 62 next.addEventListener( 'click', Timetable.scroll ); 63 64 timetable.appendChild( prev ); 65 timetable.appendChild( next ); 66 67 Timetable.updateArrows(); 68 69 timetable.querySelector( '.timetable-container' ).addEventListener( 'scroll', Timetable.updateArrows); 70 71 }, 72 73 scroll: function(e){ 74 var scrollDistance = 300, 75 direction = 1; 76 77 if( window.innerWidth <= 680 ) scrollDistance = 260; 78 79 if( this.classList.contains('prev') ) { 80 direction = -1; 81 } 82 83 scrollDistance *= direction; 84 85 var container = document.getElementById( 'timetable' ).querySelector( '.timetable-container' ); 86 if( ! container ) return; 87 88 container.scrollLeft += scrollDistance; 89 90 }, 91 92 updateArrows: function(){ 93 94 var timetable = document.getElementById( 'timetable' ); 95 if( ! timetable ) return; 96 97 var container = document.getElementById( 'timetable' ).querySelector( '.timetable-container' ); 98 if( ! container ) return; 99 100 var leftArrow = timetable.querySelector('.prev'), 101 rightArrow = timetable.querySelector('.next'); 102 103 104 var maxScroll = parseInt(container.querySelector('.timetable-days').style.maxWidth, 10) - window.innerWidth; 105 106 if( maxScroll < 10 ) { 107 leftArrow.classList.add('hidden'); 108 rightArrow.classList.add('hidden'); 109 } 110 111 var scrollLeft = container.scrollLeft; 112 113 if( scrollLeft > 50 ) { 114 leftArrow.classList.remove('hidden'); 115 } else { 116 leftArrow.classList.add('hidden'); 117 } 118 119 if( scrollLeft > maxScroll - 100 ) { 120 rightArrow.classList.add('hidden'); 121 } else { 122 rightArrow.classList.remove('hidden'); 123 } 124 125 } 126 127}; 128 129 130var Lineup = { 131 132 init: function(){ 133 134 var wrapper = document.querySelector( '.block.current-lineup' ); 135 136 if( ! wrapper ) return; 137 138 var overlay = wrapper.querySelector('#pdf-generator-overlay'), 139 overlayButton = wrapper.querySelector('#open-overlay'); 140 141 if( ! overlay || ! overlayButton) return; 142 143 overlayButton.addEventListener( 'click', function(e){ 144 overlay.classList.remove('hidden'); 145 e.preventDefault(); 146 }); 147 148 var overlayCloseButton = overlay.querySelector( '.close-button' ); 149 if( overlayCloseButton ) { 150 overlayCloseButton.addEventListener( 'click', function(e){ 151 overlay.classList.add('hidden'); 152 e.preventDefault(); 153 }); 154 } 155 156 var allFilmsButton = overlay.querySelector('#check_all'); 157 if( allFilmsButton ) { 158 allFilmsButton.addEventListener( 'click', function(e){ 159 var button = this; 160 161 var checkboxes = overlay.querySelectorAll( 'input[type="checkbox"]' ); 162 if( ! checkboxes || ! checkboxes.length ) return; 163 164 for( var checkbox of checkboxes ) { 165 if( checkbox.id == 'check_all' ) continue; 166 167 checkbox.checked = button.checked; 168 } 169 170 }); 171 } 172 173 var filmsCheckboxes = overlay.querySelectorAll('input[name^="film_"]'); 174 for( var filmsCheckbox of filmsCheckboxes ) { 175 filmsCheckbox.addEventListener( 'click', function(e){ 176 var button = this; 177 178 if( button.checked ) { 179 var checked = true; 180 for( var testBox of filmsCheckboxes ) { 181 if( ! testBox.checked ) { 182 checked = false; 183 break; 184 } 185 } 186 if( checked ) { 187 allFilmsButton.checked = true; 188 } 189 } else { 190 allFilmsButton.checked = false;
191 } 192 }); 193 } 194 195 var generatorButton = overlay.querySelector( '#pdf-generator-button' ); 196 if( generatorButton ) { 197 generatorButton.addEventListener( 'click', Lineup.generate ); 198 } 199 200 overlay.addEventListener( 'click', function(e){ 201 if( e.target.id != 'pdf-generator-overlay' ) return; 202 overlay.classList.add('hidden'); 203 }, false ); 204 205 }, 206 207 generate: function(e){ 208 e.preventDefault(); 209 210 var wrapper = document.querySelector( '.block.current-lineup' ), 211 overlay = wrapper.querySelector('#pdf-generator-overlay'), 212 checkboxes = overlay.querySelectorAll( 'input[type="checkbox"]' ); 213 214 var films = []; 215 216 for( var checkbox of checkboxes ) { 217 if( checkbox.id == 'check_all' ) continue; 218 if( ! checkbox.checked ) continue; 219 if( ! checkbox.name ) continue; 220 221 films.push(checkbox.name); 222 } 223 224 225 overlay.classList.add('loading'); 226 227 228 // AJAX call 229 230 var formData = new FormData(); 231 232 formData.set( 'films', films ); 233 formData.append( 'ajax_nonce', Playmaker.ajax_nonce ); 234 formData.append( 'action', 'lineup_generate_pdf' ); 235 236 237 fetch( Playmaker.ajax_url, { 238 method: 'POST', 239 body: formData 240 } ).then( function( response ){ 241 242 if( ! response.ok ) return Promise.reject( response ); 243 244 return response.json(); 245 246 } ).then( function( data ){ 247 248 overlay.classList.remove('loading'); 249 250 if( ! data.success || ! data.data ) { 251 // something went wrong with the query 252 console.warn(data); 253 return; 254 } 255 256 // success! 257 258 var filename = data.data, 259 download_filename = 'Playmaker_Lineup.pdf', 260 url = Playmaker.pdf_baseurl+filename; 261 262 // force download: 263 const a = document.createElement('a'); 264 a.style.display = 'none'; 265 a.href = url; 266 a.download = download_filename; 267 document.body.appendChild(a); 268 a.click(); 269 270 } ).catch( function( error ){ 271 272 overlay.classList.remove('loading'); 273 274 // something went wrong with the ajax call (or return value was not json) 275 console.warn(error); 276 277 } ); 278 279 } 280 281}; 282 283 284function init(){ 285 Categories.init(); 286 Timetable.init(); 287 Lineup.init(); 288} 289document.addEventListener( 'DOMContentLoaded', init, false ); 290 291})();
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.