1/** 2 * Javascript: Slider for eventon 3 * @version 2.0.4 4 */ 5jQuery(document).ready(function($){ 6 7// INIT 8 sliderfy_events(); 9 10// window resize 11 $( window ).resize(function() { 12 sliderfy_events(); 13 }); 14 15// EVO Slider code 16 function sliderfy_events(){ 17 $('body').find('.evoslider').each(function(){ 18 var CAL = $(this); 19 var SC = CAL.evo_shortcode_data(); 20 //console.log( SC); 21 22 var OUTTER = CAL.find('.evo_slider_slide_out'); 23 var slides = CAL.find('.eventon_list_event').length; 24 var EL = CAL.find('.eventon_events_list'); 25 26 var slider_move_distance = 0; 27 var all_slides_w = 0; 28 var slider_h = 0; 29 var cal_width = CAL.width(); 30 31 // slides visible 32 slides_visible = ('slides_visible' in SC)? SC.slides_visible: 1; 33 34 // slider controls 35 if( SC.control_style == 'tb'|| SC.control_style == 'lr'|| SC.control_style == 'lrc'){ 36 if(CAL.find('.evoslider_dots').length == 0){ 37 html = "<span class='evoslider_nav nav prev'><i class='fa fa-angle-left'></i></span>"; 38 CAL.find('.evo_slider_outter').prepend(html); 39 html = "<span class='evoslider_nav nav next'><i class='fa fa-angle-right'></i></span>"; 40 CAL.find('.evo_slider_outter').append(html); 41 CAL.find('.evosl_footer').append( "<span class='evoslider_dots'></span>" ); 42 } 43 }else{ 44 html = "<span class='evoslider_nav nav prev'><i class='fa fa-angle-left'></i></span>"; 45 html += "<span class='evoslider_dots'></span>"; 46 html += "<span class='evoslider_nav nav next'><i class='fa fa-angle-right'></i></span>"; 47 CAL.find('.evosl_footer').html( html ); 48 } 49 50 slider_w = OUTTER.width(); 51 slider_w = cal_width; 52 53 // colorize events 54 EL.find('.eventon_list_event').each(function(){ 55 var el = $(this); 56 57 var c = el.data('colr'); 58 el.css('background-color', c); 59 if(!el.parent().hasClass('slide')) el.wrap('<div class="slide"></div>'); 60 if(!_hex_is_light( c )) el.addClass('sldark'); 61 }); 62 63 // slide width setting 64 // all verticals 65 if( SC.slider_type == 'vertical'){ 66 EL.fadeIn().data('slideindex',0); 67 68 CAL.find('.evo_slider_slide_out').height(0); 69 70 for (var i = 0; i < slides_visible; i++) { 71 slider_h += CAL.find('.slide').eq( i ).height(); 72 } 73 74 CAL.find('.evo_slider_slide_out').height( slider_h ); 75 76 // all horizontals 77 }else{ 78 one_slide_w = 0; 79 slider_move_distance = slider_w; 80 81 // slides visible 82 if( SC.slider_type == 'micro'){ 83 slv = parseInt( slider_w/ 120); 84 slides_visible = slv; 85 }else if( SC.slider_type == 'mini'){ 86 slv = parseInt( slider_w/ 200); 87 slides_visible = slv; 88 89 }else if( SC.slider_type == 'multi'){ 90 if( slider_w < 400 && SC.slides_visible > 1) 91 slides_visible = 1; 92 if( slider_w > 401 && slider_w < 600 && SC.slides_visible > 2) 93 slides_visible = 2; 94 if( slider_w > 601 && slider_w < 800 && SC.slides_visible > 3) 95 slides_visible = 3; 96 if( slider_w > 801 && SC.slides_visible > 4) 97 slides_visible = 4; 98 } 99 100 var cur_slide_index = parseInt(EL.data('slideindex')); 101 if( cur_slide_index === undefined || !cur_slide_index ) cur_slide_index = 0; 102 103 one_slide_w = parseInt(slider_w/ slides_visible); 104 slider_move_distance = one_slide_w; 105 106 all_slides_w = slides * one_slide_w +1; 107 108 visible_width = one_slide_w * slides_visible; 109 console.log(visible_width); 110 111 EL.width( all_slides_w ).fadeIn().data('slideindex', cur_slide_index); 112 CAL.find('.slide').width( one_slide_w ); 113 OUTTER.width(visible_width); 114 115 // focus slider into the correct slide index 116 go_to_slide_index( cur_slide_index , CAL, true); 117 } 118 119 // slider control dots 120 var dots_html = ''; 121 if( SC.slide_nav_dots == 'yes'){ 122 123 dot_max = slides - slides_visible +1; 124 for(var dc = 0; dc< dot_max; dc++){ 125 dots_html += "<span class='evosl_dot "+ (dc == cur_slide_index? 'f':'') +"' data-index='"+ dc+"'><em></em></span>"; 126 } 127 128 CAL.find('.evoslider_dots').html( dots_html); 129 } 130 131 // set slider data for interaction 132 EL.data({ 133 'slider_move_distance': slider_move_distance, 134 'all_slides_w': all_slides_w, 135 'slides_visible': slides_visible 136 }); 137 138 // hide slider controls 139 if( SC.slide_hide_control == 'yes') CAL.find('.evosl_footer').hide(); 140 141 }); 142 } 143 144// slider works 145 $.fn.slider_work = function (options) { 146 var slide = {}, 147 interval = null, 148 $el = this; 149 slide.$el = this; 150 var SC = $el.evo_shortcode_data(); 151 var EL = $el.find('.eventon_events_list'); 152 var all_slides = $el.find('.eventon_list_event').length; 153 154 slide = { 155 iv: SC.slider_pause, 156 running: false, 157 init: function(){ 158 if( SC.slide_auto == 'yes'){ 159 slide.auto(); 160 161 // pause on hover 162 if( SC.slide_pause_hover == 'yes'){ 163 $el.on('mouseover','.evo_slider_slide_out', function(){ 164 slide.pause(); 165 }).on('mouseout',function(){ 166 slide.auto(); 167 }); 168 } 169 } 170 }, 171 auto: function (){ 172 clearInterval( interval ); 173 174 if( SC.slide_auto == 'yes'){ // if auto slide enabled via shortcode 175 interval = setInterval(function(){ 176 slide.gotoNextSlides(); 177 }, this.iv ); 178 } 179 }, 180 resetInterval: function(){ 181 slide.auto(); 182 }, 183 pause: function(){ 184 clearInterval(interval); 185 }, 186 gotoNextSlides: function(){ 187 var cur_slide_index = parseInt(EL.data('slideindex')); 188 var slides_visible = parseInt(EL.data('slides_visible'));
189 190 new_slide_index = (cur_slide_index == (all_slides- slides_visible) ) ? 0: cur_slide_index + 1; 191 if( new_slide_index<0) new_slide_index = 0; 192 go_to_slide_index(new_slide_index, $el); 193 slide.resetInterval(); 194 }, 195 interaction: function(){ 196 // click on nav arrows 197 $el.on('swiperight','.evo_slider_outter', function(){ 198 slide.changeSlide( 'prev'); 199 }); 200 $el.on('swipeleft','.evo_slider_outter', function(){ 201 slide.changeSlide( 'next'); 202 }); 203 204 $el.on('click','.evoslider_nav',function(){ 205 var direction = $(this).hasClass('next')? 'next':'prev'; 206 slide.changeSlide( direction); 207 }); 208 209 // click on control dots 210 $el.on('click','.evosl_dot', function(){ 211 go_to_slide_index( $(this).data('index') , $el); 212 }); 213 }, 214 changeSlide: function(direction){ 215 var new_slide_index = 0; 216 217 var cur_slide_index = parseInt(EL.data('slideindex')); 218 var slides_visible = parseInt(EL.data('slides_visible')); 219 220 if(direction == 'next'){ 221 new_slide_index = (cur_slide_index == (all_slides- slides_visible) ) ? 0: cur_slide_index + 1; 222 }else{ //previous 223 new_slide_index = (cur_slide_index == 0)? 224 all_slides - slides_visible : 225 cur_slide_index - 1; 226 } 227 228 229 if( new_slide_index<0) new_slide_index = 0; 230 go_to_slide_index(new_slide_index, $el); 231 232 slide.resetInterval(); 233 } 234 }; 235 236 slide.init(); 237 slide.interaction(); 238 }; 239 240 $('body').find('.evoslider').each(function(){ 241 $(this).slider_work(); 242 }); 243 244// slider control interaction 245 // hover over micro slides 246 $('.ajde_evcal_calendar.microSlider').on('mouseover','.eventon_list_event', function(){ 247 O = $(this); 248 OUT = O.closest('.evo_slider_outter'); 249 title = O.find('.evcal_event_title').html(); 250 251 p = O.position(); 252 253 OUT.append('<span class="evo_bub_box" style="">'+ title +"</span>"); 254 B = OUT.find('.evo_bub_box'); 255 256 l = p.left; 257 t = p.top- B.height() -30; 258 259 // adjust bubble to left if event on right edge 260 LM = OUT.width(); 261 tl = p.left + B.width() + O.width(); 262 if( tl > LM){ 263 l = l - B.width() +O.width()-20; 264 } 265 266 B.css({'top':t, 'left':l}); 267 268 OUT.find('.evo_bub_box').addClass('show'); 269 }).on('mouseout',function(){ 270 B = $(this).find('.evo_bub_box').remove(); 271 }); 272 273// go into a focused slide 274 function go_to_slide_index(new_slide_index, CAL, instant = false){ 275 var slider = CAL.find('.evo_slider_slide_out'); 276 var SC = CAL.evo_shortcode_data(); 277 var EL = CAL.find('.eventon_events_list'); 278 var new_marl = new_mart = 0; 279 280 var all_slides = CAL.find('.slide').length; 281 var cur_slide_index = parseInt(EL.data('slideindex')); 282 var slides_visible = parseInt(EL.data('slides_visible')); 283 284 var cur_mart = parseFloat(EL.css('margin-top') ); 285 var cur_slider_height = slider.height(); 286 287 //console.log(all_slides); 288 289 290 // vertical 291 if( SC.slider_type == 'vertical' ){ 292 new_slider_h = 0; 293 for (var i = new_slide_index; i < (new_slide_index + slides_visible); i++) { 294 new_slider_h += CAL.find('.slide').eq( i ).height(); 295 } 296 297 for (var i = 0; i < (new_slide_index ); i++) { 298 new_mart += CAL.find('.slide').eq( i ).height(); 299 } 300 new_mart = -1*new_mart; 301 slider.animate({height: new_slider_h }); 302 // horizontal 303 }else{ 304 var slider_move_distance = EL.data('slider_move_distance'); 305 var cur_marl = parseFloat(EL.css('margin-left')); 306 307 for (var i = 0; i < (new_slide_index ); i++) { 308 new_marl += CAL.find('.slide').eq( i )[0].getBoundingClientRect().width; 309 } 310 311 new_marl = -1*new_marl; 312 313 // end validation 314 if( (new_marl - slider.width())*-1 > ( EL.width() )){ 315 new_marl = 0; new_slide_index = 0; 316 } 317 } 318 319 // set dot focus 320 CAL.find('.evosl_footer .evosl_dot').removeClass('f'); 321 CAL.find('.evosl_footer .evosl_dot').eq( new_slide_index ).addClass('f'); 322 323 EL.data('slideindex', new_slide_index); 324 if( instant){ 325 EL.css({ 326 marginLeft: new_marl, 327 marginTop: new_mart, 328 }); 329 }else{ 330 EL.animate({ 331 marginLeft: new_marl, 332 marginTop: new_mart, 333 }, parseInt(SC.slider_speed) , 'easeOutCirc'); 334 } 335 336 } 337 338// whether an event color is lighter or dark 339 function _hex_is_light(color) { 340 if( color === undefined ) return false; 341 const hex = color.replace('#', ''); 342 const c_r = parseInt(hex.substr(0, 2), 16); 343 const c_g = parseInt(hex.substr(2, 2), 16); 344 const c_b = parseInt(hex.substr(4, 2), 16); 345 const brightness = ((c_r * 299) + (c_g * 587) + (c_b * 114)) / 1000; 346 return brightness > 220; 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.