Widget:TesteBossYawnv3

De Wiki Gla
Revisão de 17h11min de 9 de abril de 2026 por Yawn (discussão | contribs) (Criou página com '<div class="boss-diff-buttons"> <button class="boss-diff-btn active" data-diff="normal">NORMAL</button> <button class="boss-diff-btn" data-diff="elite">ELITE</button>...')
(dif) ← Edição anterior | Revisão atual (dif) | Versão posterior → (dif)
Ir para navegação Ir para pesquisar
   <button class="boss-diff-btn active" data-diff="normal">NORMAL</button>
   <button class="boss-diff-btn" data-diff="elite">ELITE</button>
   <button class="boss-diff-btn" data-diff="hard">HARD</button>

<script> (function() {

   function escapeHtml(str) {
       if (!str) return ;
       return str.replace(/[&<>]/g, function(m) {
           if (m === '&') return '&';
           if (m === '<') return '<';
           if (m === '>') return '>';
           return m;
       });
   }
   async function bossRender(root, diff) {
       const data = JSON.parse(root.dataset.json);
       const d = data[diff];
       const content = root.querySelector(".boss-content");
       
       if (!content) return;
       
       let html = ;
       // Nome do boss
       if (data.nome) {

html += `

${escapeHtml(data.nome)}

`;

       }
       // Introdução
       if (data.introducao) {

html += `

${escapeHtml(data.introducao)}

`;

       }
       // Localização
       if (data.localizacao) {

html += `

Localização

`; html += `

${escapeHtml(data.localizacao.descricao)}

`;

       }
       // Requisitos

html += `

Requisitos

    `;
           if (d.requisitos && d.requisitos.length) {
    
    d.requisitos.forEach(r => html += `
  • ${escapeHtml(r)}
  • `); } else { html += `
  • Nenhum requisito
  • `; } html += `

`;

       // Recompensas Garantidas

html += `

Recompensas Garantidas

    `;
           if (d.recompensas && d.recompensas.length) {
    
    d.recompensas.forEach(r => html += `
  • ${escapeHtml(r)}
  • `); } else { html += `
  • Nenhuma recompensa garantida
  • `; } html += `

`;

       // Possíveis Recompensas

html += `

Possíveis Recompensas

    `;
           if (d.recompensasPossiveis && d.recompensasPossiveis.length) {
    
    d.recompensasPossiveis.forEach(r => html += `
  • ${escapeHtml(r)}
  • `); } else { html += `
  • Nenhuma recompensa possível
  • `; } html += `

`;

       content.innerHTML = html;
       
       // Atualiza botão ativo
       root.querySelectorAll('.boss-diff-btn').forEach(btn => {
           const diffBtn = btn.dataset.diff;
           if (diffBtn === diff) {
               btn.classList.add('active');
           } else {
               btn.classList.remove('active');
           }
       });
   }
   function init() {
       document.querySelectorAll('.boss-component').forEach(root => {
           if (root.dataset.initialized === 'true') return;
           root.dataset.initialized = 'true';
           
           // Adiciona event listeners nos botões
           const buttons = root.querySelectorAll('.boss-diff-btn');
           buttons.forEach(btn => {
               btn.removeEventListener('click', handleClick);
               btn.addEventListener('click', handleClick);
           });
           
           // Renderiza dificuldade normal
           bossRender(root, 'normal');
       });
   }
   function handleClick(e) {
       const btn = e.currentTarget;
       const root = btn.closest('.boss-component');
       const diff = btn.dataset.diff;
       if (root && diff) {
           bossRender(root, diff);
       }
   }
   if (document.readyState === 'loading') {
       document.addEventListener('DOMContentLoaded', init);
   } else {
       init();
   }
   if (typeof mw !== 'undefined' && mw.hook) {
       mw.hook('wikipage.content').add(init);
   }

})(); </script>