1/* 2 Javascript: EventON functions for all calendars 3 version: 0.1 4*/ 5(function($){ 6 7 $.fn.evo_cal_functions = function(O){ 8 el = this; 9 switch(O.return){ 10 // load shortcodes inside calendar data 11 case 'load_shortcodes': 12 return el.find('.evo_cal_data').data('sc'); 13 break; 14 case 'update_shortcodes': 15 el.find('.evo_cal_data').data( 'sc', O.SC ); 16 break; 17 } 18 }; 19 20 // Count down 21 // @+ 3.0 22 $.fn.evo_countdown_get = function(opt){ 23 var defaults = { gap:''}; 24 var OPT = $.extend({}, defaults, opt); 25 26 distance = (OPT.gap * 1000); 27 28 var days = Math.floor(distance / (1000 * 60 * 60 * 24)); 29 var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)); 30 var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60)); 31 var seconds = Math.floor((distance % (1000 * 60)) / 1000); 32 33 minutes = minutes<10? '0'+minutes : minutes; 34 seconds = seconds<10? '0'+seconds : seconds; 35 36 return { 37 'd': days, 38 'h':hours, 39 'm':minutes, 40 's':seconds 41 }; 42 }; 43 $.fn.evo_countdown = function(opt){ 44 var defaults = { S1:''}; 45 var OPT = $.extend({}, defaults, opt); 46 var el = $(this); 47 48 49 50 // intial run 51 var gap = parseInt(el.data('gap')); 52 var text = el.data('t'); 53 if(text === undefined) text = ''; 54 55 if( el.hasClass('evo_cd_on')) return; 56 57 if( gap > 0 ){ 58 dd = el.evo_countdown_get({ 'gap': gap}); 59 el.html( ( dd.d>0 ? dd.d + "d ":'') + dd.h + ":" + dd.m +':'+ dd.s +' '+text ); 60 61 el.data('gap', (gap -1) ); 62 var duration = el.data('dur'); 63 64 el.addClass('evo_cd_on'); 65 66 // maybe adopt moment 67 //var M = moment(); 68 //console.log(M); 69 70 // set intervals 71 var CD = setInterval(function(){ 72 73 gap = el.data('gap'); 74 duration = el.data('dur'); 75 76 if( gap > 0 ){ 77 78 // increase bar width if exists 79 if( duration !== undefined && el.siblings('.evo_ep_bar').length){ 80 perc = ( (duration - gap)/ duration ) * 100; 81 el.siblings('.evo_ep_bar').find('b').css('width',perc+'%'); 82 } 83 84 dd = el.evo_countdown_get({ 'gap': gap}); 85 86 el.html( ( dd.d>0 ? dd.d + "d ":'') + dd.h + ":" + dd.m +':'+ dd.s +' '+text ); 87 el.data('gap', ( gap - 1) ); 88 89 }else{ 90 91 const expire_timer_action = el.data('exp_act'); 92 93 // perform ajax task after expiration 94 if(expire_timer_action !== undefined){ 95 $('body').trigger('runajax_refresh_now_cal',[ 96 el , 97 el.data('n'), 98 ]); 99 } 100 101 const _complete_text = el.evo_get_txt({V:'event_completed'}); 102 103 // live now text 104 if(el.siblings('.evo_ep_bar').length){ 105 el.siblings('.evo_ep_bar').addClass('evo_completed'); 106 el.siblings('.evo_ep_pre').html( _complete_text ); 107 } 108 109 110 // event tag & live elements 111 if( el.closest('.evcal_desc').length){ 112 el.closest('.evcal_desc').find('.eventover').html( _complete_text); 113 el.closest('.evcal_desc').find('.evo_live_now').remove(); 114 } 115 116 // event card 117 if( el.closest('.eventon_list_event').length){ 118 el.closest('.eventon_list_event').find('span.evo_live_now').hide(); 119 } 120 121 el.html(''); 122 clearInterval(CD); 123 } 124 125 },1000); 126 }else{ 127 clearInterval(CD); 128 } 129 }; 130 131 132 // access page GLOBALS 133 $.fn.evo_get_global = function(opt){ 134 var defaults = { S1:'', S2:''}; 135 var OPT = $.extend({}, defaults, opt); 136 137 var BUS = $('#evo_global_data').data('d'); 138 139 if(!(OPT.S1 in BUS)) return false; 140 if(!(OPT.S2 in BUS[OPT.S1])) return false; 141 return BUS[OPT.S1][OPT.S2]; 142 } 143 $.fn.evo_get_txt = function(opt){ 144 var defaults = { V:''} 145 var OPT = $.extend({}, defaults, opt); 146 147 var BUS = $('#evo_global_data').data('d'); 148 if(!('txt' in BUS)) return false; 149 if(!(OPT.V in BUS.txt)) return false; 150 return BUS.txt[OPT.V]; 151 } 152 $.fn.evo_get_cal_def = function(opt){ 153 var defaults = { V:''} 154 var OPT = $.extend({}, defaults, opt); 155 156 var BUS = $('#evo_global_data').data('d'); 157 if(!('cal_def' in BUS)) return false; 158 if(!(OPT.V in BUS.cal_def)) return false; 159 return BUS.cal_def[OPT.V]; 160 } 161 162 // Handlebar process template data into html 163 $.fn.evo_HB_process_template = function(opt){ 164 var defaults = { TD:'', part:''} 165 var OPT = $.extend({}, defaults, opt); 166 167 BUS = $('#evo_global_data').data('d'); 168 169 template = Handlebars.compile( BUS.temp[ OPT.part ] ); 170 return template( OPT.TD ); 171 } 172 173 // Date range and events 174 // Date range and events - from webpage 175 $.fn.evo_cal_events_in_range = function(opt){ 176 var defaults = { S:'', E:'', hide: true, 177 closeEC:true, 178 showEV: false, // show events 179 showEVL: false, // show events list 180 showAllEvs: false // show all events regardless of the range 181 }; 182 var OPT = $.extend({}, defaults, opt); 183 var CAL = $(this); 184 185 eJSON = CAL.find('.evo_cal_events').data('events'); 186 187 R = {}; 188 html = ''; 189 json = {}; 190 191 show = 0; 192 193 $.each(eJSON, function(ind, ED){ 194 eO = CAL.find('#event_'+ ED._ID); 195 if(eO === undefined || eO.length==0) return; 196 197 if(OPT.hide) eO.hide(); // pre hide 198 this_show = false;
199 200 // month long or year long events 201 if( ED.month_long || ED.year_long ){ 202 this_show = true; 203 204 }else{ 205 if(CAL.evo_is_in_range({ 206 'S': OPT.S, 'E': OPT.E, 'start': ED.event_start_unix , 'end':ED.event_end_unix 207 })){ 208 this_show = true; 209 } 210 } 211 212 if( OPT.showAllEvs) this_show = true; 213 214 if( this_show){ 215 // show event 216 if( OPT.showEV) eO.show(); 217 218 // close open event cards 219 if(OPT.closeEC && SC.evc_open == 'no') eO.find('.event_description').hide().removeClass('open'); 220 221 html += eO[0].outerHTML; 222 json[ ED._ID] = ED; 223 show++; 224 } 225 }); 226 227 // No events 228 if( OPT.showEV){ 229 tx_noevents = CAL.evo_get_txt({V:'no_events'}); 230 EL = CAL.find('.eventon_events_list'); 231 EL.find('.eventon_list_event.no_events').remove(); 232 if( show == 0 ) 233 EL.append('<div class="eventon_list_event no_events"><p class="no_events">'+tx_noevents+'</p></div>'); 234 } 235 236 // if show events list 237 if( OPT.showEVL){ 238 CAL.find('.eventon_events_list').show().removeClass('evo_hide'); 239 } 240 241 R['count'] = show; 242 R['html'] = html; 243 R['json'] = json; 244 245 return R; 246 } 247 $.fn.evo_is_in_range = function(opt){ 248 var defaults = { S:'', E:'', start:'',end:''} 249 var OPT = $.extend({}, defaults, opt); 250 251 S = parseInt(OPT.S); 252 E = parseInt(OPT.E); 253 start = parseInt(OPT.start); 254 end = parseInt(OPT.end); 255 256 return ( 257 ( start <= S && end >= E ) || 258 ( start <= S && end >= S && end <= E) || 259 ( start <= E && end >= E ) || 260 ( start >= S && end <= E ) 261 ) ? true: false; 262 } 263 $.fn.evo_cal_hide_events = function(){ 264 CAL = $(this); 265 CAL.find('.eventon_list_event').hide(); 266 } 267 268 // DATE time functions @+2.8 269 $.fn.evo_day_in_month = function(opt){ 270 var defaults = { M:'', Y:''} 271 var OPT = $.extend({}, defaults, opt); 272 273 return new Date(OPT.Y, OPT.M, 0).getDate(); 274 } 275 $.fn.evo_get_day_name_index = function(opt){ 276 var defaults = { M:'', Y:'', D:''} 277 var OPT = $.extend({}, defaults, opt); 278 279 //return moment(OPT.Y+'-'+OPT.M+'-'+OPT.D).utc().day(); 280 281 return new Date( Date.UTC(OPT.Y, OPT.M-1, OPT.D) ).getUTCDay(); 282 } 283 284 // page Lightbox functions @+2.8 285 // append to the lightbox main class name .evo_lightbox 286 $.fn.evo_prepare_lb = function(){ 287 $(this).find('.evo_lightbox_body').html(''); 288 } 289 $.fn.evo_show_lb = function(opt){ 290 var defaults = { RTL:'', calid:''} 291 var OPT = $.extend({}, defaults, opt); 292 293 $(this).addClass('show '+ OPT.RTL).attr('data-cal_id', OPT.calid); 294 $('body').trigger('evolightbox_show'); 295 } 296 $.fn.evo_append_lb = function(opt){ 297 var defaults = { C:''} 298 var OPT = $.extend({}, defaults, opt); 299 $(this).find('.evo_lightbox_body').html( OPT.C); 300 } 301 302 // Shortcodes 303 // update shortcode values from filter changes 304 $.fn.evo_update_sc_from_filters = function(){ 305 var ev_cal = $(this); 306 SC = ev_cal.find('.evo_cal_data').data('sc'); 307 308 var filter_section = ev_cal.find('.eventon_filter_line').first(); 309 310 filter_section.find('.eventon_filter').each(function(index){ 311 O = $(this); 312 var filter_val = O.data('filter_val'); 313 filter_val = filter_val == ''? 'NOT-all': filter_val; 314 315 ADD = (O.data('fl_o') && O.data('fl_o') != 'IN')? O.data('fl_o')+'-': ''; 316 SC[ O.data('filter_field') ] = ADD + filter_val; 317 }); 318 319 ev_cal.find('.evo_cal_data').data( 'sc', SC ); 320 } 321 322 // get shortcodes from evo bottom 323 $.fn.evo_shortcode_data = function(){ 324 var ev_cal = $(this); 325 return ev_cal.find('.evo_cal_data').data('sc'); 326 } 327 328 // get shortcode single value 329 $.fn.evo_get_sc_val = function(opt){ 330 var defaults = { F:''} 331 var OPT = $.extend({}, defaults, opt); 332 var ev_cal = $(this); 333 334 if(OPT.F=='') return false; 335 SC = ev_cal.find('.evo_cal_data').data('sc'); 336 if(!(SC[ OPT.F])) return false; 337 return SC[ OPT.F]; 338 } 339 // UPDATE Single value 340 $.fn.evo_update_cal_sc = function(opt){ 341 var defaults = { 342 F:'', V:'' 343 } 344 var OPT = $.extend({}, defaults, opt); 345 var ev_cal = $(this); 346 SC = ev_cal.find('.evo_cal_data').data('sc'); 347 348 SC[ OPT.F ] = OPT.V; 349 350 ev_cal.find('.evo_cal_data').data( 'sc', SC ); 351 } 352 // UPDATE all shortcode values 353 $.fn.evo_update_all_cal_sc = function(opt){ 354 var defaults = {SC:''} 355 var OPT = $.extend({}, defaults, opt); 356 var CAL = $(this); 357 CAL.find('.evo_cal_data').data( 'sc', OPT.SC ); 358 } 359 360 // OTHERS 361 // hex colors // @+2.8 362 $.fn.evo_is_hex_dark = function(opt){ 363 var defaults = { hex:'808080'} 364 var OPT = $.extend({}, defaults, opt); 365 366 hex = OPT.hex; 367 368 var c = hex.replace('#',''); 369 var is_hex = typeof c === 'string' && c.length === 6 && !isNaN(Number('0x' + c)); 370 371 if(is_hex){ 372 var values = c.split(''); 373 r = parseInt(values[0].toString() + values[1].toString(), 16); 374 g = parseInt(values[2].toString() + values[3].toString(), 16); 375 b = parseInt(values[4].toString() + values[5].toString(), 16); 376 }else{ 377 var vals = c.substring(c.indexOf('(') +1, c.length -1).split(', '); 378 var r = vals[0] // extract red 379 var g = vals[1]; // extract green 380 var b = vals[2]; 381 } 382 383 var luma = ((r * 299) + (g * 587) + (b * 114)) / 1000; // per ITU-R BT.709 384 385 return luma>155? true:false; 386 } 387 // Other data 388 $.fn.evo_get_OD = function(){
389 var ev_cal = $(this); 390 return ev_cal.find('.evo_cal_data').data('od'); 391 } 392 393 // return all filter values for given calendar -- DEP 2.8 394 $.fn.evoGetFilters = function(){ 395 396 var ev_cal = $(this); 397 var evodata = ev_cal.find('.evo-data'); 398 399 var filters_on = ( evodata.attr('data-filters_on')=='true')?'true':'false'; 400 401 // creat the filtering data array if exist 402 if(filters_on =='true'){ 403 var filter_section = ev_cal.find('.eventon_filter_line'); 404 var filter_array = []; 405 406 407 filter_section.find('.eventon_filter').each(function(index){ 408 var filter_val = $(this).attr('data-filter_val'); 409 410 if(filter_val !='all'){ 411 var filter_ar = {}; 412 filter_ar['filter_type'] = $(this).attr('data-filter_type'); 413 filter_ar['filter_name'] = $(this).attr('data-filter_field'); 414 415 if($(this).attr('data-fl_o')=='NOT'){ 416 filter_ar['filter_op']='NOT IN'; 417 } 418 filter_ar['filter_val'] = filter_val; 419 filter_array.push(filter_ar); 420 } 421 }); 422 }else{ 423 var filter_array =''; 424 } 425 return filter_array; 426 } 427 // old shortcode method -- DEP 428 $.fn.evo_item_shortcodes = function(){ 429 var OBJ = $(this); 430 var shortcode_array ={}; 431 OBJ.each(function(){ 432 $.each(this.attributes, function(i, attrib){ 433 var name = attrib.name; 434 if(attrib.name!='class' && attrib.name!='style' && attrib.value !=''){ 435 name__ = attrib.name.split('-'); 436 shortcode_array[name__[1]] = attrib.value; 437 } 438 }); 439 }); 440 return shortcode_array; 441 } 442 $.fn.evo_shortcodes = function(){ 443 var ev_cal = $(this); 444 var shortcode_array ={}; 445 446 ev_cal.find('.cal_arguments').each(function(){ 447 $.each(this.attributes, function(i, attrib){ 448 var name = attrib.name; 449 if(attrib.name!='class' && attrib.name!='style' && attrib.value !=''){ 450 name__ = attrib.name.split('-'); 451 shortcode_array[name__[1]] = attrib.value; 452 } 453 }); 454 }); 455 return shortcode_array; 456 } 457 458 // get evo data for a given calendar 459 $.fn.evo_getevodata = function(){ 460 461 var ev_cal = $(this); 462 var evoData = {}; 463 464 ev_cal.find('.evo-data').each(function(){ 465 $.each(this.attributes, function(i, attrib){ 466 var name = attrib.name; 467 if(attrib.name!='class' && attrib.name!='style' ){ 468 name__ = attrib.name.split('-'); 469 evoData[name__[1]] = attrib.value; 470 } 471 }); 472 }); 473 474 return evoData; 475 } 476 477 // eventon loading functions 478 // v 2.4.5 479 $.fn.evo_loader_animation = function(opt){ 480 var defaults = { 481 direction:'start' 482 } 483 var OPT = $.extend({}, defaults, opt); 484 485 if(OPT.direction == 'start'){ 486 $(this).find('#eventon_loadbar').slideDown(); 487 }else{ 488 $(this).find('#eventon_loadbar').slideUp(); 489 } 490 } 491 492 493 494 495}(jQuery));
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.