MediaWiki:Common.js: mudanças entre as edições

De Farmland
Ir para navegação Ir para pesquisar
Sem resumo de edição
Sem resumo de edição
Linha 108: Linha 108:
     }
     }
});
});




Linha 205: Linha 200:
     carousel.addEventListener("mouseleave", startCarousel);
     carousel.addEventListener("mouseleave", startCarousel);


    startCarousel();
});
/* =======================================================
  CARROSSEL FARMLAND OFICIAL
======================================================= */
mw.loader.using(['jquery', 'mediawiki.util']).then(function () {
    const carousel = document.getElementById("farmlandCarousel");
    if (!carousel) return;
    const container =
        carousel.querySelector(".carousel-container");
    const slides =
        carousel.querySelectorAll(".carousel-slide");
    const prev =
        carousel.querySelector(".carousel-arrow.left");
    const next =
        carousel.querySelector(".carousel-arrow.right");
    const dotsContainer =
        carousel.querySelector(".carousel-dots");
    let index = 0;
    let auto;
    // CRIAR DOTS
    slides.forEach(function (_, i) {
        const dot = document.createElement("span");
        dot.className = "carousel-dot";
        if (i === 0) {
            dot.classList.add("active");
        }
        dot.onclick = function () {
            index = i;
            updateCarousel();
        };
        dotsContainer.appendChild(dot);
    });
    const dots =
        carousel.querySelectorAll(".carousel-dot");
    function updateCarousel() {
        container.style.transform =
            "translateX(-" + (index * 100) + "%)";
        dots.forEach(function(dot) {
            dot.classList.remove("active");
        });
        dots[index].classList.add("active");
    }
    function nextSlide() {
        index++;
        if (index >= slides.length) {
            index = 0;
        }
        updateCarousel();
    }
    function prevSlide() {
        index--;
        if (index < 0) {
            index = slides.length - 1;
        }
        updateCarousel();
    }
    next.onclick = nextSlide;
    prev.onclick = prevSlide;
    // AUTO PLAY
    function startCarousel() {
        auto = setInterval(function () {
            nextSlide();
        }, 4000);
    }
    function stopCarousel() {
        clearInterval(auto);
    }
    carousel.addEventListener(
        "mouseenter",
        stopCarousel
    );
    carousel.addEventListener(
        "mouseleave",
        startCarousel
    );
    updateCarousel();
     startCarousel();
     startCarousel();


});
});

Edição das 17h58min de 15 de maio de 2026

/* =======================================================
   ARVORE HABILIDADE - WIKI EVERLIGHT
   ======================================================= */


document.addEventListener('DOMContentLoaded', () => {
    const cards = document.querySelectorAll('.skill-card');

    cards.forEach(card => {
        card.addEventListener('click', () => {
            const skillName = card.querySelector('.skill-name').innerText;
            console.log(`Habilidade clicada: ${skillName}`);
            
            // Exemplo de efeito visual simples
            card.style.filter = "brightness(1.2)";
            setTimeout(() => {
                card.style.filter = "brightness(1)";
            }, 150);
        });
    });
});


/* =======================================================
   BOTAO SUBIR TOPO DA PAGINA
   ======================================================= */
$(function() {
    var $button = $('<button id="back-to-top" title="Voltar ao Topo">↑ Topo</button>');
    $('body').append($button);

    $(window).scroll(function() {
        // Verifica se a posição atual + altura da janela é maior que o tamanho total - 100px
        if ($(window).scrollTop() + $(window).height() > $(document).height() - 100) {
            $button.fadeIn();
        } else {
            $button.fadeOut();
        }
    });

    $button.click(function() {
        $('html, body').animate({scrollTop: 0}, 'slow');
        return false;
    });
});


/* =======================================================
   clases testee
   ======================================================= */
document.addEventListener('DOMContentLoaded', function() {
    const cells = document.querySelectorAll('.ragnarok-tree td[class^="evo-"]');

    cells.forEach(cell => {
        // 1. Tornar a célula inteira clicável (redirecionar para o link de texto)
        const link = cell.querySelector('a');
        if (link) {
            cell.style.cursor = 'pointer';
            cell.addEventListener('click', () => { window.location.href = link.href; });
        }

        // 2. Lógica de Hover (Conexão Hierárquica)
        cell.addEventListener('mouseenter', function() {
            const familyClass = Array.from(this.classList).find(c => c.startsWith('evo-')); // ex: evo-sw
            if (!familyClass || familyClass === 'evo-all') return;

            const myPos = this.getAttribute('data-pos'); // Pega 0, 1 ou 2
            const isClass1 = this.closest('table').previousElementSibling?.innerText.includes('Classe 1');
            const isClass2 = this.closest('table').previousElementSibling?.innerText.includes('Classe 2');

            if (isClass1) {
                // Passou no Espadachim: Acende Cav/Temp e Lorde/Paladino
                document.querySelectorAll(`.${familyClass}`).forEach(el => el.classList.add('highlight-active'));
            } else if (isClass2) {
                // Passou no Cavaleiro (pos 0): Acende ele mesmo e o Lorde (pos 0 na Trans)
                this.classList.add('highlight-active'); // Acende si mesmo
                const transRelated = document.querySelector('table:nth-of-type(3)').querySelectorAll(`.${familyClass}`);
                
                // Procura na Transclasse quem tem a mesma posição
                transRelated.forEach(el => {
                    if(el.getAttribute('data-pos') === myPos) {
                        el.classList.add('highlight-active');
                    }
                });
            } else {
                // Passou na Trans: Acende apenas ela mesma
                this.classList.add('highlight-active');
            }
        });

        cell.addEventListener('mouseleave', function() {
            document.querySelectorAll('.highlight-active').forEach(el => el.classList.remove('highlight-active'));
        });
    });
});


$(document).ready(function() {
    // Evita duplicar se a página recarregar
    if ($('.sidebar-logo').length === 0) {
        var logoHtml = '<div class="sidebar-logo">' +
                       '<a href="/everlight/index.php/Página_principal">' +
                       '<img src="http://78.142.242.9/everlight/images/b/b0/Logo_Quadrada.png" alt="Logo Everlight">' +
                       '</a>' +
                       '</div>';
        
        // Coloca a logo no topo do painel lateral
        $('#mw-panel').prepend(logoHtml);
    }
});


mw.loader.using('mediawiki.util').then(function () {

    const carousel = document.getElementById("farmlandCarousel");

    if (!carousel) return;

    const container = carousel.querySelector(".carousel-container");
    const slides = carousel.querySelectorAll(".carousel-slide");

    const prev = carousel.querySelector(".left");
    const next = carousel.querySelector(".right");

    const dotsContainer = carousel.querySelector(".carousel-dots");

    let index = 0;
    let interval;

    // DOTS
    slides.forEach((slide, i) => {

        const dot = document.createElement("span");

        dot.className = "carousel-dot";

        if (i === 0) {
            dot.classList.add("active");
        }

        dot.addEventListener("click", function () {
            index = i;
            updateCarousel();
        });

        dotsContainer.appendChild(dot);
    });

    const dots = carousel.querySelectorAll(".carousel-dot");

    function updateCarousel() {

        container.style.transform =
            "translateX(-" + (index * 100) + "%)";

        dots.forEach(function(dot) {
            dot.classList.remove("active");
        });

        dots[index].classList.add("active");
    }

    function nextSlide() {

        index++;

        if (index >= slides.length) {
            index = 0;
        }

        updateCarousel();
    }

    function prevSlide() {

        index--;

        if (index < 0) {
            index = slides.length - 1;
        }

        updateCarousel();
    }

    next.onclick = nextSlide;
    prev.onclick = prevSlide;

    // AUTO PLAY
    function startCarousel() {

        interval = setInterval(function () {
            nextSlide();
        }, 4000);
    }

    function stopCarousel() {
        clearInterval(interval);
    }

    carousel.addEventListener("mouseenter", stopCarousel);
    carousel.addEventListener("mouseleave", startCarousel);

    startCarousel();

});






/* =======================================================
   CARROSSEL FARMLAND OFICIAL
======================================================= */

mw.loader.using(['jquery', 'mediawiki.util']).then(function () {

    const carousel = document.getElementById("farmlandCarousel");

    if (!carousel) return;

    const container =
        carousel.querySelector(".carousel-container");

    const slides =
        carousel.querySelectorAll(".carousel-slide");

    const prev =
        carousel.querySelector(".carousel-arrow.left");

    const next =
        carousel.querySelector(".carousel-arrow.right");

    const dotsContainer =
        carousel.querySelector(".carousel-dots");

    let index = 0;
    let auto;

    // CRIAR DOTS
    slides.forEach(function (_, i) {

        const dot = document.createElement("span");

        dot.className = "carousel-dot";

        if (i === 0) {
            dot.classList.add("active");
        }

        dot.onclick = function () {
            index = i;
            updateCarousel();
        };

        dotsContainer.appendChild(dot);
    });

    const dots =
        carousel.querySelectorAll(".carousel-dot");

    function updateCarousel() {

        container.style.transform =
            "translateX(-" + (index * 100) + "%)";

        dots.forEach(function(dot) {
            dot.classList.remove("active");
        });

        dots[index].classList.add("active");
    }

    function nextSlide() {

        index++;

        if (index >= slides.length) {
            index = 0;
        }

        updateCarousel();
    }

    function prevSlide() {

        index--;

        if (index < 0) {
            index = slides.length - 1;
        }

        updateCarousel();
    }

    next.onclick = nextSlide;
    prev.onclick = prevSlide;

    // AUTO PLAY
    function startCarousel() {

        auto = setInterval(function () {
            nextSlide();
        }, 4000);
    }

    function stopCarousel() {

        clearInterval(auto);
    }

    carousel.addEventListener(
        "mouseenter",
        stopCarousel
    );

    carousel.addEventListener(
        "mouseleave",
        startCarousel
    );

    updateCarousel();
    startCarousel();

});