1/* 2 * Javascript: EventON functions for all calendars 3 * @version: 4.1.2 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 const day_text = ( el.data('d') !== undefined && el.data('d') != '' )? el.data('d'):'Day'; 49 const days_text = ( el.data('ds') !== undefined && el.data('ds') != '' )? el.data('ds'):'Days'; 50 51 // intial run 52 var gap = parseInt(el.data('gap')); 53 var text = el.data('t'); 54 if(text === undefined) text = ''; 55 56 if( el.hasClass('evo_cd_on')) return; 57 58 if( gap > 0 ){ 59 dd = el.evo_countdown_get({ 'gap': gap}); 60 el.html( ( dd.d>0 ? dd.d + ' ' + ( dd.d >1 ? days_text: day_text ) + " " :'') + dd.h + ":" + dd.m +':'+ dd.s +' '+text ); 61 62 el.data('gap', (gap -1) ); 63 var duration = el.data('dur'); 64 65 el.addClass('evo_cd_on'); 66 67 // maybe adopt moment 68 //var M = moment(); 69 //console.log(M); 70 71 // set intervals 72 var CD = setInterval(function(){ 73 74 gap = el.data('gap'); 75 duration = el.data('dur'); 76 77 const bar_elm = el.closest('.evo_event_progress').find('.evo_ep_bar'); 78 79 if( gap > 0 ){ 80 81 // increase bar width if exists 82 if( duration !== undefined && bar_elm.length){ 83 perc = ( (duration - gap)/ duration ) * 100; 84 bar_elm.find('b').css('width',perc+'%'); 85 } 86 87 dd = el.evo_countdown_get({ 'gap': gap}); 88 89 el.html( ( dd.d>0 ? dd.d + ' ' + ( dd.d >1 ? days_text: day_text ) + " ":'') + dd.h + ":" + dd.m +':'+ dd.s +' '+text ); 90 el.data('gap', ( gap - 1) ); 91 92 }else{ 93 94 const expire_timer_action = el.data('exp_act'); 95 96 // perform ajax task after expiration 97 if(expire_timer_action !== undefined){ 98 $('body').trigger('runajax_refresh_now_cal',[ 99 el , 100 el.data('n'), 101 ]); 102 } 103 104 const _complete_text = el.evo_get_txt({V:'event_completed'}); 105 106 // live now text 107 if(bar_elm.length){ 108 bar_elm.addClass('evo_completed'); 109 //el.siblings('.evo_ep_pre').html( _complete_text ); 110 } 111 112 113 // event tag & live elements 114 if( el.closest('.evcal_desc').length){ 115 el.closest('.evcal_desc').find('.eventover').html( _complete_text); 116 el.closest('.evcal_desc').find('.evo_live_now').remove(); 117 } 118 119 // event card 120 if( el.closest('.eventon_list_event').length){ 121 el.closest('.eventon_list_event').find('span.evo_live_now').hide(); 122 } 123 124 el.html(''); 125 clearInterval(CD); 126 } 127 128 },1000); 129 }else{ 130 clearInterval(CD); 131 } 132 }; 133 134 135 // access page GLOBALS 136 $.fn.evo_get_global = function(opt){ 137 var defaults = { S1:'', S2:''}; 138 var OPT = $.extend({}, defaults, opt); 139 140 var BUS = $('#evo_global_data').data('d'); 141 142 if(!(OPT.S1 in BUS)) return false; 143 if(!(OPT.S2 in BUS[OPT.S1])) return false; 144 return BUS[OPT.S1][OPT.S2]; 145 } 146 $.fn.evo_get_txt = function(opt){ 147 var defaults = { V:''} 148 var OPT = $.extend({}, defaults, opt); 149 150 var BUS = $('#evo_global_data').data('d'); 151 if(!('txt' in BUS)) return false; 152 if(!(OPT.V in BUS.txt)) return false; 153 return BUS.txt[OPT.V]; 154 } 155 $.fn.evo_get_cal_def = function(opt){ 156 var defaults = { V:''} 157 var OPT = $.extend({}, defaults, opt); 158 159 var BUS = $('#evo_global_data').data('d'); 160 if(!('cal_def' in BUS)) return false; 161 if(!(OPT.V in BUS.cal_def)) return false; 162 return BUS.cal_def[OPT.V]; 163 } 164 165 // return dms translates values from global data 166 // added 4.0 167 $.fn.evo_get_dms_vals = function(opt){ 168 // type = d, d1,d3, m, m3 169 // V = 0-x 170 var defaults = { type:'d', V:''} 171 var OPT = $.extend({}, defaults, opt); 172 173 var BUS = $('#evo_global_data').data('d'); 174 if(!('dms' in BUS)) return false; 175 if(!(OPT.type in BUS.dms)) return false; 176 177 return BUS.dms[ OPT.type ][ OPT.V ]; 178 179 } 180 181 // GENERAL ACCESS + 4.1.2 182 $.fn.evo_admin_get_ajax = function(opt){ 183 var defs = { 184 'lightbox_key':'', 185 'ajaxdata':'', 186 } 187 188 var OO = $.extend({}, defs, opt); 189 190 var ajaxdata = OO.ajaxdata; 191 192 var returnvals = ''; 193 194 $.ajax({
195 beforeSend: function(){ 196 if( OO.lightbox_key){ 197 $('.'+ OO.lightbox_key).find('.ajde_popup_text').addClass( 'loading'); 198 } 199 }, 200 type: 'POST', 201 url:evo_admin_ajax_handle.ajaxurl, 202 data: ajaxdata, 203 dataType:'json', 204 success:function(data){ 205 returnvals = data; 206 },complete:function(){ 207 if( OO.lightbox_key){ 208 $('.'+ OO.lightbox_key).find('.ajde_popup_text').removeClass( 'loading'); 209 } 210 } 211 }); 212 213 return returnvals; 214 } 215 216 // Handlebar process template data into html 217 $.fn.evo_HB_process_template = function(opt){ 218 var defaults = { TD:'', part:''} 219 var OPT = $.extend({}, defaults, opt); 220 221 BUS = $('#evo_global_data').data('d'); 222 223 template = Handlebars.compile( BUS.temp[ OPT.part ] ); 224 return template( OPT.TD ); 225 } 226 227 // Date range and events 228 // Date range and events - from webpage 229 $.fn.evo_cal_events_in_range = function(opt){ 230 var defaults = { S:'', E:'', 231 hide: true, 232 closeEC:true, 233 showEV: false, // show events 234 showEVL: false, // show events list 235 showAllEvs: false // show all events regardless of the range 236 }; 237 var OPT = $.extend({}, defaults, opt); 238 var CAL = $(this); 239 240 eJSON = CAL.find('.evo_cal_events').data('events'); 241 242 R = {}; 243 html = ''; 244 json = {}; 245 246 show = 0; 247 248 // using events JSON data 249 if( eJSON && eJSON.length > 0){ 250 $.each(eJSON, function(ind, ED){ 251 eO = CAL.find('#event_'+ ED._ID); 252 if(eO === undefined || eO.length==0) return; 253 254 if(OPT.hide) eO.hide(); // pre hide 255 this_show = false; 256 257 // month long or year long events 258 if( ED.month_long || ED.year_long ){ 259 this_show = true; 260 261 }else{ 262 if(CAL.evo_is_in_range({ 263 'S': OPT.S, 'E': OPT.E, 'start': ED.event_start_unix , 'end':ED.event_end_unix 264 })){ 265 this_show = true; 266 } 267 } 268 269 if( OPT.showAllEvs) this_show = true; 270 271 if( this_show){ 272 // show event 273 if( OPT.showEV) eO.show(); 274 275 // close open event cards 276 if(OPT.closeEC && SC.evc_open == 'no') eO.find('.event_description').hide().removeClass('open'); 277 278 html += eO[0].outerHTML; 279 json[ ED._ID] = ED; 280 show++; 281 } 282 }); 283 }else{ 284 // get all the events in the events list 285 var cal_events = CAL.find('.eventon_list_event'); 286 287 cal_events.each(function(index, elm){ 288 var ED = $(elm).evo_cal_get_basic_eventdata(); 289 if( !ED) return; 290 291 if(OPT.hide) $(elm).hide(); // pre hide 292 this_show = false; 293 294 // month long or year long events 295 if( $(elm).hasClass('month_long') || $(elm).hasClass('year_long') ){ 296 this_show = true; 297 298 }else{ 299 if(CAL.evo_is_in_range({ 300 'S': OPT.S, 'E': OPT.E, 'start': ED.event_start_unix , 'end':ED.event_end_unix 301 })){ 302 this_show = true; 303 } 304 } 305 306 if( OPT.showAllEvs) this_show = true; 307 308 if( this_show){ 309 // show event 310 if( OPT.showEV) $(elm).show(); 311 312 // close open event cards 313 if(OPT.closeEC && SC.evc_open == 'no') 314 $(elm).find('.event_description').hide().removeClass('open'); 315 316 html += $(elm)[0].outerHTML; 317 json[ ED.uID ] = ED; 318 show++; 319 } 320 }); 321 } 322 323 324 // No events 325 if( OPT.showEV){ 326 tx_noevents = CAL.evo_get_txt({V:'no_events'}); 327 EL = CAL.find('.eventon_events_list'); 328 EL.find('.eventon_list_event.no_events').remove(); 329 if( show == 0 ) 330 EL.append('<div class="eventon_list_event no_events"><p class="no_events">'+tx_noevents+'</p></div>'); 331 } 332 333 // if show events list 334 if( OPT.showEVL){ 335 CAL.find('.eventon_events_list').show().removeClass('evo_hide'); 336 } 337 338 R['count'] = show; 339 R['html'] = html; 340 R['json'] = json; 341 342 return R; 343 } 344 345 // check if an event is in the given date range 346 $.fn.evo_is_in_range = function(opt){ 347 var defaults = { S:'', E:'', start:'',end:''} 348 var OPT = $.extend({}, defaults, opt); 349 350 S = parseInt(OPT.S); 351 E = parseInt(OPT.E); 352 start = parseInt(OPT.start); 353 end = parseInt(OPT.end); 354 355 return ( 356 ( start <= S && end >= E ) || 357 ( start <= S && end >= S && end <= E) || 358 ( start <= E && end >= E ) || 359 ( start >= S && end <= E ) 360 ) ? true: false; 361 } 362 $.fn.evo_cal_hide_events = function(){ 363 CAL = $(this); 364 CAL.find('.eventon_list_event').hide(); 365 } 366 367 // get event data basics from html event on page
368 // ~@version 4.0.3 369 $.fn.evo_cal_get_basic_eventdata = function(){ 370 var ELM = $(this); 371 372 var _time = ELM.data('time'); 373 if( _time === undefined ) return false; 374 375 const time = _time.split('-'); 376 const ri = ELM.data('ri').replace('r',''); 377 const eID = ELM.data('event_id'); 378 379 var _event_title = ELM.find('.evcal_event_title').text(); 380 _event_title = _event_title.replace(/'/g, '''); 381 382 383 var RR = { 384 'uID': eID + '_' + ri, 385 'ID': eID , 386 'event_id': eID , 387 'ri': ri, 388 'event_start_unix': parseInt(time[0]), 389 'event_end_unix': parseInt(time[1]), 390 'ux_val': ELM.find('.evcal_list_a').data('ux_val'), 391 'event_title': _event_title, 392 'hex_color': ELM.data('colr'), 393 'hide_et': ELM.hasClass('no_et') ? 'y':'n', 394 'evcal_event_color': ELM.data('colr'), 395 }; 396 397 return RR; 398 399 } 400 401 402 // DATE time functions @+2.8 403 $.fn.evo_day_in_month = function(opt){ 404 var defaults = { M:'', Y:''} 405 var OPT = $.extend({}, defaults, opt); 406 407 return new Date(OPT.Y, OPT.M, 0).getDate(); 408 } 409 $.fn.evo_get_day_name_index = function(opt){ 410 var defaults = { M:'', Y:'', D:''} 411 var OPT = $.extend({}, defaults, opt); 412 413 //return moment(OPT.Y+'-'+OPT.M+'-'+OPT.D).utc().day(); 414 415 return new Date( Date.UTC(OPT.Y, OPT.M-1, OPT.D) ).getUTCDay(); 416 } 417 418 // page Lightbox functions @+2.8 419 // append to the lightbox main class name .evo_lightbox 420 421 $.fn.evo_prepare_lb = function(){ 422 $(this).find('.evo_lightbox_body').html(''); 423 } 424 $.fn.evo_show_lb = function(opt){ 425 var defaults = { RTL:'', calid:''} 426 var OPT = $.extend({}, defaults, opt); 427 428 $(this).addClass('show '+ OPT.RTL).attr('data-cal_id', OPT.calid); 429 $('body').trigger('evolightbox_show'); 430 } 431 $.fn.evo_append_lb = function(opt){ 432 var defaults = { C:'', CAL:''} 433 var OPT = $.extend({}, defaults, opt); 434 $(this).find('.evo_lightbox_body').html( OPT.C); 435 436 if( OPT.CAL!= '' && OPT.CAL !== undefined && OPT.CAL.hasClass('color')){ 437 const LIST = $(this).find('.eventon_events_list'); 438 if( LIST.length>0){ 439 LIST.find('.eventon_list_event').addClass('color'); 440 } 441 } 442 } 443 444 // Shortcodes 445 // update shortcode values from filter changes 446 $.fn.evo_update_sc_from_filters = function(){ 447 var ev_cal = $(this); 448 SC = ev_cal.find('.evo_cal_data').data('sc'); 449 450 var filter_section = ev_cal.find('.eventon_filter_line').first(); 451 452 filter_section.find('.eventon_filter').each(function(index){ 453 O = $(this); 454 var filter_val = O.data('filter_val'); 455 filter_val = filter_val == ''? 'NOT-all': filter_val; 456 457 ADD = (O.data('fl_o') && O.data('fl_o') != 'IN')? O.data('fl_o')+'-': ''; 458 SC[ O.data('filter_field') ] = ADD + filter_val; 459 }); 460 461 ev_cal.find('.evo_cal_data').data( 'sc', SC ); 462 } 463 464 // get shortcodes from evo bottom 465 $.fn.evo_shortcode_data = function(){ 466 var ev_cal = $(this); 467 return ev_cal.find('.evo_cal_data').data('sc'); 468 } 469 470 // get shortcode single value 471 $.fn.evo_get_sc_val = function(opt){ 472 var defaults = { F:''} 473 var OPT = $.extend({}, defaults, opt); 474 var ev_cal = $(this); 475 476 if(OPT.F=='') return false; 477 SC = ev_cal.find('.evo_cal_data').data('sc'); 478 479 if(!(SC[ OPT.F])) return false; 480 return SC[ OPT.F]; 481 } 482 // UPDATE Single value 483 $.fn.evo_update_cal_sc = function(opt){ 484 var defaults = { 485 F:'', V:'' 486 } 487 var OPT = $.extend({}, defaults, opt); 488 var ev_cal = $(this); 489 SC = ev_cal.find('.evo_cal_data').data('sc'); 490 491 SC[ OPT.F ] = OPT.V; 492 493 ev_cal.find('.evo_cal_data').data( 'sc', SC ); 494 } 495 // UPDATE all shortcode values 496 $.fn.evo_update_all_cal_sc = function(opt){ 497 var defaults = {SC:''} 498 var OPT = $.extend({}, defaults, opt); 499 var CAL = $(this); 500 CAL.find('.evo_cal_data').data( 'sc', OPT.SC ); 501 } 502 503 // OTHERS 504 // hex colors // @+2.8 505 $.fn.evo_is_hex_dark = function(opt){ 506 var defaults = { hex:'808080'} 507 var OPT = $.extend({}, defaults, opt); 508 509 hex = OPT.hex; 510 511 var c = hex.replace('#',''); 512 var is_hex = typeof c === 'string' && c.length === 6 && !isNaN(Number('0x' + c)); 513 514 if(is_hex){ 515 var values = c.split(''); 516 r = parseInt(values[0].toString() + values[1].toString(), 16); 517 g = parseInt(values[2].toString() + values[3].toString(), 16); 518 b = parseInt(values[4].toString() + values[5].toString(), 16); 519 }else{ 520 var vals = c.substring(c.indexOf('(') +1, c.length -1).split(', '); 521 var r = vals[0] // extract red 522 var g = vals[1]; // extract green 523 var b = vals[2]; 524 } 525 526 var luma = ((r * 299) + (g * 587) + (b * 114)) / 1000; // per ITU-R BT.709 527 528 return luma>155? true:false; 529 } 530 // Other data 531 $.fn.evo_get_OD = function(){
532 var ev_cal = $(this); 533 return ev_cal.find('.evo_cal_data').data('od'); 534 } 535 536 // return all filter values for given calendar -- DEP 2.8 537 $.fn.evoGetFilters = function(){ 538 539 var ev_cal = $(this); 540 var evodata = ev_cal.find('.evo-data'); 541 542 var filters_on = ( evodata.attr('data-filters_on')=='true')?'true':'false'; 543 544 // creat the filtering data array if exist 545 if(filters_on =='true'){ 546 var filter_section = ev_cal.find('.eventon_filter_line'); 547 var filter_array = []; 548 549 550 filter_section.find('.eventon_filter').each(function(index){ 551 var filter_val = $(this).attr('data-filter_val'); 552 553 if(filter_val !='all'){ 554 var filter_ar = {}; 555 filter_ar['filter_type'] = $(this).attr('data-filter_type'); 556 filter_ar['filter_name'] = $(this).attr('data-filter_field'); 557 558 if($(this).attr('data-fl_o')=='NOT'){ 559 filter_ar['filter_op']='NOT IN'; 560 } 561 filter_ar['filter_val'] = filter_val; 562 filter_array.push(filter_ar); 563 } 564 }); 565 }else{ 566 var filter_array =''; 567 } 568 return filter_array; 569 } 570 // old shortcode method -- DEP 571 $.fn.evo_item_shortcodes = function(){ 572 var OBJ = $(this); 573 var shortcode_array ={}; 574 OBJ.each(function(){ 575 $.each(this.attributes, function(i, attrib){ 576 var name = attrib.name; 577 if(attrib.name!='class' && attrib.name!='style' && attrib.value !=''){ 578 name__ = attrib.name.split('-'); 579 shortcode_array[name__[1]] = attrib.value; 580 } 581 }); 582 }); 583 return shortcode_array; 584 } 585 $.fn.evo_shortcodes = function(){ 586 var ev_cal = $(this); 587 var shortcode_array ={}; 588 589 ev_cal.find('.cal_arguments').each(function(){ 590 $.each(this.attributes, function(i, attrib){ 591 var name = attrib.name; 592 if(attrib.name!='class' && attrib.name!='style' && attrib.value !=''){ 593 name__ = attrib.name.split('-'); 594 shortcode_array[name__[1]] = attrib.value; 595 } 596 }); 597 }); 598 return shortcode_array; 599 } 600 601 // get evo data for a given calendar 602 $.fn.evo_getevodata = function(){ 603 604 var ev_cal = $(this); 605 var evoData = {}; 606 607 ev_cal.find('.evo-data').each(function(){ 608 $.each(this.attributes, function(i, attrib){ 609 var name = attrib.name; 610 if(attrib.name!='class' && attrib.name!='style' ){ 611 name__ = attrib.name.split('-'); 612 evoData[name__[1]] = attrib.value; 613 } 614 }); 615 }); 616 617 return evoData; 618 } 619 620 // eventon loading functions 621 // v 2.4.5 622 $.fn.evo_loader_animation = function(opt){ 623 var defaults = { 624 direction:'start' 625 } 626 var OPT = $.extend({}, defaults, opt); 627 628 if(OPT.direction == 'start'){ 629 $(this).find('#eventon_loadbar').slideDown(); 630 }else{ 631 $(this).find('#eventon_loadbar').slideUp(); 632 } 633 } 634 635 636 637 638}(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.