Difference between revisions of "MediaWiki:Common.js"

From Final Fantasy XIV Online Wiki
Jump to navigation Jump to search
Line 8: Line 8:


var isInViewport = function (elem) {
var isInViewport = function (elem) {
        console.log('elem', elem)
var distance = elem.getBoundingClientRect();
var distance = elem.getBoundingClientRect();
return (
return (

Revision as of 01:18, 25 October 2020

/* Any JavaScript here will be loaded for all users on every page load. */

// Scripts to use when viewing articles
/* if (mw.config.get('wgIsArticle') || window.location.href.indexOf('action=submit') > -1 || mw.config.get('wgNamespaceNumber') == -1) {
    mw.loader.load( '/index.php?title=MediaWiki:CollapsibleTables.js&action=raw&ctype=text/javascript' );
}
*/

var isInViewport = function (elem) {
        console.log('elem', elem)
	var distance = elem.getBoundingClientRect();
	return (
		distance.top >= 0 &&
		distance.left >= 0 &&
		distance.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&
		distance.right <= (window.innerWidth || document.documentElement.clientWidth)
	);
};

window.addEventListener("scroll", function(){
    console.log('scrolling')
    if (isInViewport($('#taboola-below-article-thumbnails'))) {
        console.log('it is in viewport!')
    } else {
        console.log('it is not in viewport')
    }
})

/*
$(window).scroll(function () {
    console.log('scrolling')
    if (isInViewport($('#taboola-below-article-thumbnails'))) {
        console.log('it is in viewport!')
    } else {
        console.log('it is not in viewport')
    }
});
*/

window.addEventListener("load", function(){

 var positionAdDivs= function () {
  console.log('version 2.7')

  var fixed = $("#IL_INSEARCH");
  
  var fixed_position = $("#IL_INSEARCH").offset().top;
  var fixed_height = $("#IL_INSEARCH").height();

  var toCross = $("#taboola-below-article-thumbnails")

  var toCross_position = $("#taboola-below-article-thumbnails").offset().top;
  var toCross_height = $("#taboola-below-article-thumbnails").height();

  console.log('toCross is visible: ', toCross.is(":visible"))
 
/*
  console.log('fixed_position', fixed_position)
  console.log('fixed_height', fixed_height)
  console.log('toCross_position', toCross_position)
  console.log('toCross_height', toCross_height)
*/


  if (fixed_position + fixed_height  < toCross_position) {
    console.log('fixed_position', fixed_position)

  } else if (fixed_position > toCross_position + toCross_height) {
    console.log('remove displaynone class')

    console.log('fixed_position', fixed_position)
    console.log('fixed_height', fixed_height)
    console.log('toCross_position', toCross_position)
    console.log('toCross_height', toCross_height)

    fixed.removeClass('displaynone');
  } else {
    var fixed_classes = fixed.attr('class')
    if (fixed_classes.includes('displaynone')){
      console.log('already has displaynone class!', 'fixed_position', fixed_position)
    } else {
      console.log('add displaynone class!')

      console.log('fixed_position', fixed_position)
      console.log('fixed_height', fixed_height)
      console.log('toCross_position', toCross_position)
      console.log('toCross_height', toCross_height)

      fixed.addClass('displaynone');
    }
  }

  /*
  if (fixed_position + fixed_height  < toCross_position) {
    var fixed_classes = fixed.attr('class')
    console.log('fixed_classes', fixed_classes)

    if (fixed_classes.includes('displaynone')){
      console.log('remove displaynone class!')
      fixed.removeClass('displaynone')
    } else {
      console.log('already removed displaynone class')
    }
   
  } else {
    var fixed_classes = fixed.attr('class')
    console.log('fixed_classes', fixed_classes)
    
    if (fixed_classes.includes('displaynone')){
      console.log('already has displaynone class')
    } else {
      console.log('add displaynone class!')
      fixed.addClass('displaynone')
    }
  }
  */
  
 };


 // if fixed_position is Not found, do nothing
 if (!$("#IL_INSEARCH").offset()){
 
 // otherwise start the interval
 } else {
   setInterval(positionAdDivs, 200);
 }
});