MediaWiki:Common.js
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)
- Edge: Pressione Ctrl enquanto clica Recarregar, ou pressione Ctrl-F5.
- Opera: Pressione Ctrl-F5.
/* =======================================================
CARROSSEL UNIFICADO - WIKI EVERLIGHT
======================================================= */
mw.loader.using(['jquery', 'mediawiki.util'], function () {
$(function() {
const $wrapper = $('.carousel-wrapper');
const $items = $('.carousel-item');
const $next = $('.right-btn');
const $prev = $('.left-btn');
if (!$wrapper.length) return; // Só executa se o carrossel existir na página
let current = 0;
let autoPlayTimer;
function updateCarousel() {
// Atualiza a classe ativa para o efeito visual de destaque
$items.removeClass('active').eq(current).addClass('active');
const activeItem = $items.get(current);
const scrollPosition =
activeItem.offsetLeft -
($wrapper.width() / 2) +
($(activeItem).outerWidth() / 2);
$wrapper.stop().animate({
scrollLeft: scrollPosition
}, 500);
}
// Funções de Navegação
function moveNext() {
current = (current + 1) % $items.length;
updateCarousel();
}
function movePrev() {
current = (current - 1 + $items.length) % $items.length;
updateCarousel();
}
// Eventos de Clique
$next.on('click', function() {
stopAutoPlay();
moveNext();
});
$prev.on('click', function() {
stopAutoPlay();
movePrev();
});
// Auto-Play (4 segundos)
function startAutoPlay() {
autoPlayTimer = setInterval(moveNext, 4000);
}
function stopAutoPlay() {
clearInterval(autoPlayTimer);
}
// Inicialização
updateCarousel();
startAutoPlay();
// Pausa o carrossel se o mouse estiver em cima
$wrapper.hover(stopAutoPlay, startAutoPlay);
});
});
/* =======================================================
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);
});
});
});
document.querySelectorAll('.carousel-track').forEach(track => {
track.addEventListener('mouseenter', () => {
track.querySelectorAll('.carousel-item').forEach(item => {
item.style.animationPlayState = 'paused';
});
});
track.addEventListener('mouseleave', () => {
track.querySelectorAll('.carousel-item').forEach(item => {
item.style.animationPlayState = 'running';
});
});
});
/* =======================================================
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
const link = cell.querySelector('a');
if (link) {
cell.style.cursor = 'pointer';
cell.addEventListener('click', (e) => {
// Impede que o clique na imagem (que geralmente abre o arquivo) interfira
window.location.href = link.href;
});
}
// 2. Lógica de Hover (Destaque Hierárquico)
cell.addEventListener('mouseenter', function() {
const currentClass = this.className; // ex: evo-sw
const allRelated = document.querySelectorAll(`.${currentClass}`);
// Descobre em qual "nível" estamos (Classe 1, 2 ou Transcendental)
const isClass1 = this.closest('table').previousElementSibling?.previousElementSibling?.innerText.includes('Classe 1');
const isClass2 = this.closest('table').previousElementSibling?.previousElementSibling?.innerText.includes('Classe 2');
if (isClass1) {
// Se passar o mouse na Classe 1 (ex: Espadachim), acende TUDO daquela família
allRelated.forEach(el => el.classList.add('highlight-active'));
} else if (isClass2) {
// Se passar na Classe 2 (ex: Cavaleiro), acende ele mesmo e o sucessor direto
// Pegamos o índice dele dentro da categoria dele na tabela atual
const categoryCells = Array.from(this.closest('table').querySelectorAll(`.${currentClass}`));
const myIndex = categoryCells.indexOf(this);
// Adiciona destaque em si mesmo
this.classList.add('highlight-active');
// Acha a tabela Transcendental e destaca o irmão de mesmo índice
const transTable = document.querySelector('table:nth-of-type(3)'); // Ajuste conforme a ordem
const transRelated = transTable.querySelectorAll(`.${currentClass}`);
if (transRelated[myIndex]) {
transRelated[myIndex].classList.add('highlight-active');
}
} else {
// Se for na Transcendental, acende apenas ela mesma
this.classList.add('highlight-active');
}
});
cell.addEventListener('mouseleave', function() {
document.querySelectorAll('.highlight-active').forEach(el => el.classList.remove('highlight-active'));
});
});
});