JAVASCRIPT   103

ajax reload scripts

Guest on 8th June 2022 09:23:52 AM

  1. function Utils() {}
  2. Utils.prototype = {
  3.         constructor: Utils,
  4.         isElementInView: function (element, fullyInView) {
  5.                 var pageTop = jQuery(window).scrollTop();
  6.                 var pageBottom = pageTop + jQuery(window).height();
  7.                 var elementTop = jQuery(element).offset().top;
  8.                 var elementBottom = elementTop + jQuery(element).height();
  9.  
  10.                 if (fullyInView === true) {
  11.                         return ((pageTop < elementTop) && (pageBottom > elementBottom));
  12.                 } else {
  13.                         return ((elementTop <= pageBottom) && (elementBottom >= pageTop));
  14.                 }
  15.         }
  16. };
  17. var Utils = new Utils();       
  18.  
  19. function childOf(c,p){
  20.         while((c=c.parentNode)&&c!==p);
  21.         return !!c;
  22. }      
  23.  
  24. function isBehindOtherElement(element) {
  25.         const boundingRect = element.getBoundingClientRect()
  26.         // adjust coordinates to get more accurate results
  27.         const left = boundingRect.left + 1
  28.         const right = boundingRect.right - 1
  29.         const top = boundingRect.top + 1
  30.         const bottom = boundingRect.bottom - 1
  31.  
  32.         var leftTop = document.elementFromPoint(left, top);
  33.         var rightTop = document.elementFromPoint(right, top);
  34.         var leftBottom = document.elementFromPoint(left, bottom);
  35.         var rightBottom = document.elementFromPoint(right, bottom);
  36.  
  37.         if( !(leftTop instanceof HTMLElement) ) return false
  38.         if( !(rightTop instanceof HTMLElement) ) return false
  39.         if( !(leftBottom instanceof HTMLElement) ) return false
  40.         if( !(rightBottom instanceof HTMLElement) ) return false
  41.  
  42.         if(     (leftTop !== element) && (!childOf(leftTop, element)) &&
  43.                         (rightTop !== element) && (!childOf(rightTop, element)) &&
  44.                         (leftBottom !== element) && (!childOf(leftBottom, element)) &&
  45.                         (rightBottom !== element) && (!childOf(rightBottom, element))   ) return true;
  46.  
  47.         return false
  48. }
  49.  
  50. 'use strict';
  51. let RotateFade = class User {
  52.         constructor(tp, tm, fd, rt) {
  53.                 this.tp = tp;
  54.                 this.tm = tm;
  55.                 this.fd = fd;
  56.                 this.rt = rt;
  57.                 this.tmi = null;
  58.                 this.box = '.'+this.tp+'-'+this.rt;
  59.                 var jQuery = jQuery;
  60.         }
  61.        
  62.         onPageScroll() {
  63.                 var c = this;
  64.                 jQuery(document).ready(function() {
  65.                         jQuery(window).scroll(function() {
  66.                                 jQuery(c.box).each(function() {
  67.                                         var t = jQuery(this);
  68.                                         if ( Utils.isElementInView(jQuery(this), false) && !isBehindOtherElement(jQuery(this)[0]) ) {
  69.                                                 if(c.tmi == null) {
  70.                                                         c.tmi = setTimeout(function() {
  71.                                                                 var prev = t.children('div[class$="-'+c.rt+'-inner"]').data('id');
  72.                                                                 var shortcode = t.children('div[class$="-'+c.rt+'-inner"]').data('shortcode');
  73.                                                                 c.reloadBox(prev,shortcode);
  74.                                                         }, c.tm);
  75.                                                 } else {
  76.                                                 }
  77.                                         } else {
  78.                                                 clearTimeout(c.tmi);
  79.                                                 c.tmi = null;
  80.                                         }
  81.                                 });
  82.                         });
  83.                 });
  84.         }
  85.  
  86.         onPageLoad() {
  87.                 var c = this;
  88.                 jQuery(document).ready(function(){     
  89.                         jQuery(c.box).each(function() {
  90.                                 var t = jQuery(this);
  91.                                 c.tmi = setTimeout( function() {
  92.                                         var prev = t.children('div[class$="-'+c.rt+'-inner"]').data('id');
  93.                                         var shortcode = t.children('div[class$="-'+c.rt+'-inner"]').data('shortcode');
  94.                                         c.reloadBox(prev,shortcode);
  95.                                 }, c.tm );
  96.                         });
  97.                         c.onPageScroll();
  98.                 });
  99.         }
  100.  
  101.         reloadBox(prev,shortcode) {    
  102.                 var c = this;
  103. //              console.log('PREV '+prev);
  104.                 jQuery.ajax({
  105.                         type: 'post',
  106.                         url: ajaxurl,
  107.                         data: {
  108.                                 action: 'ajax_load_type',
  109.                                 type: c.tp,
  110.                                 prev: prev,
  111.                                 shortcode: shortcode
  112.                         },
  113.                         success: function(result) {
  114.                                 jQuery(c.box).find('.cri').animate({opacity: 0}, c.fd, function() { // hide box, then show more
  115.                                         jQuery(c.box).html(result);
  116.                                         crTruncate(c.box);
  117.                                         jQuery(c.box).find('.cri').animate({opacity: 1}, c.fd, function() { // show box, then do:
  118.                                                 var t = jQuery(this);
  119.                                                 if (Utils.isElementInView(t, false) && !isBehindOtherElement(t[0])) {
  120.                                                         clearTimeout(c.tmi);
  121.                                                         c.tmi = setTimeout(function() {
  122.                                                                 var prev = t.closest('div[class$="-'+c.rt+'-inner"]').data('id');
  123.                                                                 var shortcode = t.closest('div[class$="-'+c.rt+'-inner"]').data('shortcode');
  124.                                                                 c.reloadBox(prev,shortcode);
  125.                                                         }, c.tm);
  126.                                                 }
  127.                                         });
  128.  
  129.                                 });
  130.                         }
  131.                 })
  132.                 return false;
  133.         }
  134.  
  135. }

Raw Paste


Login or Register to edit or fork this paste. It's free.