REMOVA OS ANÚNCIOS!

Apoiando através de https://apoia.se/arddhu a partir do tier de Apoiador, você pode navegar na wiki sem anúncios e ainda colabora com o projeto!

MediaWiki:Common.js

De Runarcana Wiki
Revisão de 13h33min de 12 de janeiro de 2023 por Arddhu (discussão | contribs)

Nota: Após publicar, você pode ter que limpar o "cache" do seu navegador para ver as alterações.

  • Firefox / Safari: Pressione Shift enquanto clica Recarregar, ou pressione Ctrl-F5 ou Ctrl-R (⌘-R no Mac)
  • Google Chrome: Pressione Ctrl-Shift-R (⌘-Shift-R no Mac)
  • Internet Explorer/Edge: PressioneCtrl enquanto clica Recarregar, ou Pressione Ctrl-F5
  • Opera: Pressione Ctrl-F5.
/* Códigos JavaScript aqui colocados serão carregados por todos aqueles que acessarem alguma página deste wiki */

$(document).ready(function() {
    var tables = document.getElementsByClassName("organize");
    Array.prototype.forEach.call(tables, function(table) {
        var rows, switching, i, x, y, shouldSwitch;
        switching = true;
        /* Make a loop that will continue until
        no switching has been done: */
        while (switching) {
            // start by saying: no switching is done:
            switching = false;
            rows = table.rows;
            /* Loop through all table rows (except the
            first, which contains table headers): */
            for (i = 1; i < (rows.length - 1); i++) {
                // start by saying there should be no switching:
                shouldSwitch = false;
                /* Get the two elements you want to compare,
                one from current row and one from the next: */
                x = rows[i].getElementsByTagName("TD")[0];
                y = rows[i + 1].getElementsByTagName("TD")[0];
                // check if the two rows should switch place:
                if (x.innerHTML.toLowerCase() > y.innerHTML.toLowerCase()) {
                    // if so, mark as a switch and break the loop:
                    shouldSwitch = true;
                    break;
                }
            }
            if (shouldSwitch) {
                /* If a switch has been marked, make the switch
                and mark that a switch has been done: */
                rows[i].parentNode.insertBefore(rows[i + 1], rows[i]);
                switching = true;
            }
        }
    });
});

mw.loader.load( 'https://wiki.runarcana.org/util/ptoc.css', 'text/css' );
mw.loader.using('jquery.throttle-debounce', function(){
    $(function(){
        var $window, $mwPanel, $floatTOC, scrollHandler, tocLimit, headingOffsets, headingThreshold, $toc = $('#toc');
        if(!$toc.length){
            return;
        }
        $window = $(window);
        $mwPanel = $('#mw-panel');
        headingThreshold = $window.height()/5.0;
        $floatTOC = $toc.clone()
                        .removeAttr('id')
                        .addClass('floatTOC')
                        .appendTo('body')
                        .css({visibility:'hidden', opacity:0});
        $floatTOC.find('ul').show();
        
        // sort TOC list alphabetically
        var $listItems = $floatTOC.find("li");
        $listItems.sort(function(a, b) {
            var textA = $(a).text().toUpperCase();
            var textB = $(b).text().toUpperCase();
            return (textA < textB) ? -1 : (textA > textB) ? 1 : 0;
        });
        $floatTOC.find("ul").append($listItems);

        // handle click events on TOC links
        $floatTOC.find('a').click(function(e){
            e.preventDefault(); // prevent default link behavior
            var $target = $(this.hash); // get the target element
            $('html, body').animate({
                scrollTop: $target.offset().top - headingThreshold
            });
        });
        tocLimit = $toc.offset().top + $toc.height();
        headingOffsets = [];
        $('.mw-headline').each(function(){
            headingOffsets.push([$(this).attr('id'), $(this).offset().top]);
        });
        scrollHandler = function(){
            var $current, scrollTop = $window.scrollTop();
            if(scrollTop > tocLimit){
                $floatTOC.css({visibility:'visible', opacity:1});
                $mwPanel.hide();
                var highlight = false;
                $.each(headingOffsets, function(i, v){
                    if(i !== 0 && (scrollTop + headingThreshold) < v[1]){
                        highlight = headingOffsets[i-1][0];
                        return false;
                    }
                });
                if(highlight){
                    $current = $floatTOC.find('a[href="#'+highlight+'"]');
                    $floatTOC.find('a').not($current).css('font-weight','');
                    $current.css('font-weight','bold');
                }
            }
            else{
                $floatTOC.css({visibility:'hidden', opacity:0});
                $mwPanel.show();
            }
        }
        $window.on('scroll', $.throttle(250, scrollHandler));
    });
});