MediaWiki:Common.js: Difference between revisions

From Future Of Mankind
No edit summary
Tag: Reverted
No edit summary
Tag: Reverted
Line 43: Line 43:
     $('.WD-Ausartung').hover(function() {
     $('.WD-Ausartung').hover(function() {
         // Set the tooltip content from the data attribute
         // Set the tooltip content from the data attribute
         $(this).attr('data-tooltip', 'Explanation of the Plejaren language scientists, given to Billy on the 27th of August 2010: Ausartung means a very bad get-out of the control of the good human nature.');
         var tooltipContent = 'Explanation of the Plejaren language scientists, given to Billy on the 27th of August 2010: Ausartung means a very bad get-out of the control of the good human nature.';
    }, function() {
        $(this).attr('data-tooltip', tooltipContent);
         // Clear the tooltip content
 
         $(this).attr('data-tooltip', '');
        // Create a tooltip element
        var $tooltip = $('
').text(tooltipContent).appendTo('body');
 
         // Position the tooltip
         var offset = $(this).offset();
        var tooltipWidth = $tooltip.outerWidth();
        var tooltipHeight = $tooltip.outerHeight();


         // Calculate position
         // Calculate the position
         let top = rect.top - tooltipRect.height - 10; // 10px above the hovered element
         var top = offset.top - tooltipHeight - 10; // 10px above the element
         let left = rect.left + (rect.width / 2) - (tooltipRect.width / 2); // Centered
         var left = offset.left + ($(this).outerWidth() / 2) - (tooltipWidth / 2); // Centered above the element


         // Adjust if off-screen
         // Adjust if the tooltip goes off-screen
        if (top < 0) {
            top = offset.top + $(this).outerHeight() + 10; // Position below the element if it goes off the top
        }
         if (left < 0) {
         if (left < 0) {
             left = 10; // 10px from the left edge
             left = 10; // Position to the left if it goes off the left side
         } else if (left + tooltipRect.width > window.innerWidth) {
         }
             left = window.innerWidth - tooltipRect.width - 10; // 10px from the right edge
        if (left + tooltipWidth > $(window).width()) {
             left = $(window).width() - tooltipWidth - 10; // Position to the right if it goes off the right side
         }
         }


         // Set position
         // Set the position of the tooltip
         tooltipElement.style.top =
         $tooltip.css({
${top}px
            top: top,
;
            left: left,
        tooltipElement.style.left =
            position: 'absolute',
${left}px
            display: 'block'
;
         });
        tooltipElement.style.opacity = 1;
         tooltipElement.style.visibility = 'visible';


         // Remove tooltip on mouse leave
         // Store the tooltip element for later removal
         this.addEventListener('mouseleave', function() {
         $(this).data('tooltipElement', $tooltip);
             tooltipElement.remove();
    }, function() {
         });
        // Clear the tooltip content and remove the tooltip element
        $(this).attr('data-tooltip', '');
        var $tooltip = $(this).data('tooltipElement');
        if ($tooltip) {
             $tooltip.remove();
         }
     });
     });
});

Revision as of 07:16, 13 September 2024

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

//collapsible table column test, based on: https://codepen.io/feger/pen/eDybC
$(".btnHideEnglish").click(function() {
    console.log('Hiding first column of table with an id of report');
    $("table#collapsible_report > tbody:last-child > tr > th:first-child, table#collapsible_report > tbody:last-child > tr > td:first-child").toggle();
    $(this).text($(this).text() == "Hide English" ? "Show English" : "Hide English");
    $("table#collapsible_report").css({
        "width": $(this).text() == "Show English" ? "80%" : "100%"
    });
});

$(".btnHideHigh-German").click(function() {
    console.log('Hiding first column of table with an id of report');
    $("table#collapsible_report > tbody:last-child > tr > th:last-child, table#collapsible_report > tbody:last-child > tr > td:last-child").toggle();
    $(this).text($(this).text() == "Hide High German" ? "Show High German" : "Hide High German");
    $("table#collapsible_report").css({
        "width": $(this).text() == "Show High German" ? "80%" : "100%"
    });
});

$(".btnHideGerman").click(function() {
    console.log('Hiding first column of table with an id of report');
    $("table#collapsible_report > tbody:last-child > tr > th:last-child, table#collapsible_report > tbody:last-child > tr > td:last-child").toggle();
    $(this).text($(this).text() == "Hide German" ? "Show German" : "Hide German");
    $("table#collapsible_report").css({
        "width": $(this).text() == "Show German" ? "80%" : "100%"
    });
});

// hide the german by default, on page load, but only if the btnHideGerman element exists on the page
if (document.getElementById("btnHideGerman")) {
  console.log('btnHideGerman exists');
  //$("#btnHideGerman").click();
} else {
  // do stuff
  console.log('btnHideGerman does not exist');
}



$(document).ready(function() {
    $('.WD-Ausartung').hover(function() {
        // Set the tooltip content from the data attribute
        var tooltipContent = 'Explanation of the Plejaren language scientists, given to Billy on the 27th of August 2010: Ausartung means a very bad get-out of the control of the good human nature.';
        $(this).attr('data-tooltip', tooltipContent);

        // Create a tooltip element
        var $tooltip = $('
').text(tooltipContent).appendTo('body');

        // Position the tooltip
        var offset = $(this).offset();
        var tooltipWidth = $tooltip.outerWidth();
        var tooltipHeight = $tooltip.outerHeight();

        // Calculate the position
        var top = offset.top - tooltipHeight - 10; // 10px above the element
        var left = offset.left + ($(this).outerWidth() / 2) - (tooltipWidth / 2); // Centered above the element

        // Adjust if the tooltip goes off-screen
        if (top < 0) {
            top = offset.top + $(this).outerHeight() + 10; // Position below the element if it goes off the top
        }
        if (left < 0) {
            left = 10; // Position to the left if it goes off the left side
        }
        if (left + tooltipWidth > $(window).width()) {
            left = $(window).width() - tooltipWidth - 10; // Position to the right if it goes off the right side
        }

        // Set the position of the tooltip
        $tooltip.css({
            top: top,
            left: left,
            position: 'absolute',
            display: 'block'
        });

        // Store the tooltip element for later removal
        $(this).data('tooltipElement', $tooltip);
    }, function() {
        // Clear the tooltip content and remove the tooltip element
        $(this).attr('data-tooltip', '');
        var $tooltip = $(this).data('tooltipElement');
        if ($tooltip) {
            $tooltip.remove();
        }
    });