MediaWiki:Common.js: Difference between revisions

From Official Gamemode 4 Wiki
Jump to navigation Jump to search
(Fancy Colored Tooltips)
(do you not like let)
 
(20 intermediate revisions by 3 users not shown)
Line 2: Line 2:


// Even More fancy hovers for recipes
// Even More fancy hovers for recipes
$(function() {
$(function () {
    // Tooltip only Text
  // Tooltip only Text
    $('.masterTooltip').hover(function(){
  $('.masterTooltip').hover(
        // Hover over code
    function () {
        var title = $(this).attr('title');
      // Hide non-JS
        $(this).data('tipText', title).removeAttr('title');
      $(this).data('tipText', $(this).attr('title')).removeAttr('title');
        // Add formating with &
 
        var codes = title.match(/&[0-9a-fl-o]/g)
      //Custom Tooltip
        var classes = codes.map(function(x){return 'format-' + x[1]}).join(' ')
      var title = $(this).attr('data-title');
        $('<p class="tooltip ' + classes + '">' + title.slice(codes.length * 2) + '</p>')
      var lore = $(this).attr('data-lore');
        //.text(title + "\n1")
      var tooltip = '<p class="tooltip">' + parseFormatCodes(title);
        .appendTo('body')
      if (lore) tooltip += '<br><span class="lore format-5">' + parseFormatCodes(lore) + '</span>';
        .show();
      tooltip += '</p>';
     }, function() {
      $(tooltip).appendTo('body');
        // Hover out code
     },
        $(this).attr('title', $(this).data('tipText'));
    function () {
        $('.tooltip').remove();
      // Hover out
     }).mousemove(function(e) {
      $('.tooltip').remove();
         var mousex = e.pageX + 20; //Get X coordinates
     }).mousemove(
         var mousey = e.pageY - 40; //Get Y coordinates
      function(e) {
         $('.tooltip').css({ top: mousey, left: mousex });
         var mousex = e.pageX + 20;
         var mousey = e.pageY - 40;
         var tooltip = $('.tooltip');
        if (mousex + tooltip.width() >= $(window).width()) mousex -= tooltip.width() + 40;
        tooltip.css({
          top: mousey,
          left: mousex,
        });
      });
  // Hide the stupid empty newlines after crafting grids
  $('.crafting + p br:only-child').parent().hide();
 
 
  //Code For books
  $('.pageactive').each(function (_, page) {
    setupPage($(page));
  });
  $('.book_leftarrow').click(function () {
    setupPage($(this).siblings('.pageactive').removeClass('pageactive').prev());
  });
  $('.book_rightarrow').click(function () {
    setupPage($(this).siblings('.pageactive').removeClass('pageactive').next());
  });
 
 
  //Code for Cycling
  $('.cyclist > :not(:first-child)').hide();
  setInterval(function() {
    if (!!$('.cyclist').filter(function() { return $(this).is(":hover"); }).length) return;
    $('.cyclist > :not(:hidden)').hide().each(function() {
      var elem = $(this);
      elem.next().show();
      if (elem.is(':last-child')) elem.siblings().first().show();
     });
     });
  // Hide the stupid empty newlines after crafting grids
  }, 2000);
  $('.crafting + p br:only-child').parent().hide();
});
});
function parseFormatCodes (text) {
  var spans = 0;
  var res = '';
  for (var i = 0; i < text.length; i++) {
    if (text[i] == '\\') {
      res += text[i+1];
      i++;
    } else if (/&[0-9a-fl-o]/.test(text.substring(i,i+2))) {
      res += '<span class="format-' + text[i+1] + '">';
      spans++;
      i++;
    } else if (text.substring(i,i+2) == '&r') {
      res += '</span>'.repeat(spans);
      spans = 0;
      i++;
    } else if (/&#[0-9A-Fa-f]{6}/.test(text.substring(i,i+8))) {
      res += '<span style="color: ' + text.substring(i+1,i+8) + '">';
      spans++;
      i += 7;
    } else if (text[i] == '/') {
      res += '<br>';
    } else {
      res += text[i];
    }
  }
  return res + '</span>'.repeat(spans);
}
function setupPage (active) {
  active.addClass('pageactive');
  var index = active.index();
  var length = active.siblings().length - 2;
  active.siblings('.book_pagenum').text('Page ' + index + ' of ' + length);
  active.siblings('.book_leftarrow, .book_rightarrow').show();
  if (index == 1) {
    active.siblings('.book_leftarrow').hide();
  }
  if (index == length) {
    active.siblings('.book_rightarrow').hide();
  }
}

Latest revision as of 23:50, 7 August 2021

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

// Even More fancy hovers for recipes
$(function () {
  // Tooltip only Text
  $('.masterTooltip').hover(
    function () {
      // Hide non-JS
      $(this).data('tipText', $(this).attr('title')).removeAttr('title');

      //Custom Tooltip
      var title = $(this).attr('data-title');
      var lore = $(this).attr('data-lore');
      var tooltip = '<p class="tooltip">' + parseFormatCodes(title);
      if (lore) tooltip += '<br><span class="lore format-5">' + parseFormatCodes(lore) + '</span>';
      tooltip += '</p>';
      $(tooltip).appendTo('body');
    },
    function () {
      // Hover out
      $('.tooltip').remove();
    }).mousemove(
      function(e) {
        var mousex = e.pageX + 20;
        var mousey = e.pageY - 40;
        var tooltip = $('.tooltip');
        if (mousex + tooltip.width() >= $(window).width()) mousex -= tooltip.width() + 40;
        tooltip.css({
          top: mousey,
          left: mousex,
        });
      });
  // Hide the stupid empty newlines after crafting grids
  $('.crafting + p br:only-child').parent().hide();


  //Code For books
  $('.pageactive').each(function (_, page) {
    setupPage($(page));
  });
  $('.book_leftarrow').click(function () {
    setupPage($(this).siblings('.pageactive').removeClass('pageactive').prev());
  });
  $('.book_rightarrow').click(function () {
    setupPage($(this).siblings('.pageactive').removeClass('pageactive').next());
  });


  //Code for Cycling
  $('.cyclist > :not(:first-child)').hide();
  setInterval(function() {
    if (!!$('.cyclist').filter(function() { return $(this).is(":hover"); }).length) return;
    $('.cyclist > :not(:hidden)').hide().each(function() {
      var elem = $(this);
      elem.next().show();
      if (elem.is(':last-child')) elem.siblings().first().show();
    });
  }, 2000);
});

function parseFormatCodes (text) {
  var spans = 0;
  var res = '';
  for (var i = 0; i < text.length; i++) {
    if (text[i] == '\\') {
      res += text[i+1];
      i++;
    } else if (/&[0-9a-fl-o]/.test(text.substring(i,i+2))) {
      res += '<span class="format-' + text[i+1] + '">';
      spans++;
      i++;
    } else if (text.substring(i,i+2) == '&r') {
      res += '</span>'.repeat(spans);
      spans = 0;
      i++;
    } else if (/&#[0-9A-Fa-f]{6}/.test(text.substring(i,i+8))) {
      res += '<span style="color: ' + text.substring(i+1,i+8) + '">';
      spans++;
      i += 7;
    } else if (text[i] == '/') {
      res += '<br>';
    } else {
      res += text[i];
    }
  }

  return res + '</span>'.repeat(spans);
}

function setupPage (active) {
  active.addClass('pageactive');
  var index = active.index();
  var length = active.siblings().length - 2;
  active.siblings('.book_pagenum').text('Page ' + index + ' of ' + length);
  active.siblings('.book_leftarrow, .book_rightarrow').show();
  if (index == 1) {
    active.siblings('.book_leftarrow').hide();
  }
  if (index == length) {
    active.siblings('.book_rightarrow').hide();
  }
}