Mudanças entre as edições de "Widget:TesteBossYawn"

De Wiki Gla
Ir para navegação Ir para pesquisar
 
(15 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
Linha 4: Linha 4:
   <button onclick="bossSetDiff(this,'elite')">ELITE</button>
   <button onclick="bossSetDiff(this,'elite')">ELITE</button>
   <button onclick="bossSetDiff(this,'hard')">HARD</button>
   <button onclick="bossSetDiff(this,'hard')">HARD</button>
  <h1> Tudo Certo </h1>
</tabber>
</tabber>


Linha 9: Linha 10:


</div>
</div>


<script>
<script>
Linha 29: Linha 29:
     }
     }
     return null;
     return null;
}
  }
async function loadSkills(moduleName) {
    const apiUrl = `https://wiki.gla.com.br/api.php?action=parse&text={{BossSkills|module=${moduleName}|lang=pt}}&format=json&origin=*`;
   
    try {
        const response = await fetch(apiUrl);
        console.log("api conectada");
        const data = await response.json();
        return data.parse.text['*'];
    } catch(e) {
        console.error('Erro ao carregar skills:', e);
        return '';
    }
}
 
async function bossRender(root, diff) {


  async function bossRender(root, diff) {
     const data = JSON.parse(root.dataset.json);
     const data = JSON.parse(root.dataset.json);
     const d = data[diff];
     const d = data[diff];
Linha 52: Linha 38:
     let html = "";
     let html = "";


     // Nome do boss (se existir)
     // Nome do boss
     if (data.nome) {
     if (data.nome) {
console.log("Nome achadas")
      console.log("Nome achado");
       html += `<h2>${data.nome}</h2>`;
       html += `<h2>${data.nome}</h2>`;
     }
     }


     // Introdução (se existir)
     // Introdução
     if (data.introducao) {
     if (data.introducao) {
       html += `<p><em>${data.introducao}</em></p>`;
       html += `<p><em>${data.introducao}</em></p>`;
     }
     }


     // Localização (se existir)
     // Localização
     if (data.localizacao && data.localizacao.caminho) {
     if (data.localizacao && data.localizacao.caminho) {
    html += `<h3>Localização</h3>`;
      html += `<h3>Localizaçãoooo</h3>`;
    html += `<p>${data.localizacao.descricao}</p>`;
      html += `<p>${data.localizacao.descricao}</p>`;
   
     
    const imageName = data.localizacao.caminho;
      const imageName = data.localizacao.caminho;
    const imageUrl = await getImageUrlFromWiki(imageName);
      const imageUrl = await getImageUrlFromWiki(imageName);
   
     
    if (imageUrl) {
      if (imageUrl) {
         html += `<div style="text-align: center;">
         html += `<div style="text-align: center;">
                     <img src="${imageUrl}" style="max-width: 100%;">
                     <img src="${imageUrl}" style="max-width: 100%;">
                     <p><small>Caminho para o boss</small></p>
                     <p><small>Caminho para o boss</small></p>
                 </div>`;
                 </div>`;
      }
     }
     }
    }
   


     // Requisitos
     // Requisitos
     html += `<h3>Requisitos</h3><ul>`;
     html += `<h3>Requisitos</h3><ul>`;
     d.requisitos.forEach(r => html += `<li>${r}</li>`);
     console.log("Requisitos antes");
    if (d.requisitos && d.requisitos.length) {
      d.requisitos.forEach(r => html += `<li>${r}</li>`);
    }
     html += `</ul>`;
     html += `</ul>`;
    console.log("Requisitos depois");


     // Recompensas
     // Recompensas
     html += `<h3>Recompensas</h3><ul>`;
     html += `<h3>Recompensas</h3><ul>`;
     d.recompensas.forEach(r => html += `<li>${r}</li>`);
     if (d.recompensas && d.recompensas.length) {
      d.recompensas.forEach(r => html += `<li>${r}</li>`);
    }
     html += `</ul>`;
     html += `</ul>`;
    //
    if (data.skillsModule) {
      const skillsHTML = await loadSkills(data.skillsModule);
      console.log(skillsHTML);
      html += skillsHTML;
    }
    // Skills
    if (d.skills && d.skills.length > 0) {
      html += `<h3>Skills</h3><ul>`;
      d.skills.forEach(s => html += `<li><strong>${s.nome}</strong>: ${s.desc}</li>`);
      html += `</ul>`;
    }


     content.innerHTML = html;
     content.innerHTML = html;

Edição atual tal como às 17h01min de 9 de abril de 2026

"bossSetDiff(this,'normal')">NORMAL</button>

 <button onclick="bossSetDiff(this,'elite')">ELITE</button>
 <button onclick="bossSetDiff(this,'hard')">HARD</button>

Tudo Certo

<script> (function() {

 async function getImageUrlFromWiki(imageName) {
   const apiUrl = `https://wiki.gla.com.br/api.php?action=query&titles=${encodeURIComponent(imageName)}&prop=imageinfo&iiprop=url&format=json&origin=*`;
   
   try {
       const response = await fetch(apiUrl);
       const data = await response.json();
       const pages = data.query.pages;
       const page = Object.values(pages)[0];
       
       if (page.imageinfo && page.imageinfo[0]) {
           return page.imageinfo[0].url;
       }
   } catch(e) {
       console.error('Erro ao buscar imagem:', e);
   }
   return null;
 }
 async function bossRender(root, diff) {
   const data = JSON.parse(root.dataset.json);
   const d = data[diff];
   const content = root.querySelector(".boss-content");
   let html = "";
   // Nome do boss
   if (data.nome) {
     console.log("Nome achado");

html += `

${data.nome}

`;

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

html += `

${data.introducao}

`;

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

html += `

Localizaçãoooo

`; html += `

${data.localizacao.descricao}

`;

     const imageName = data.localizacao.caminho;
     const imageUrl = await getImageUrlFromWiki(imageName);
     
     if (imageUrl) {

html += `

                   <img src="${imageUrl}" style="max-width: 100%;">

Caminho para o boss

`;

     }
   }
   // Requisitos

html += `

Requisitos

    `;
       console.log("Requisitos antes");
       if (d.requisitos && d.requisitos.length) {
    
    d.requisitos.forEach(r => html += `
  • ${r}
  • `); } html += `

`;

   console.log("Requisitos depois");
   // Recompensas

html += `

Recompensas

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

`;

   content.innerHTML = html;
 }
 function init() {
   document.querySelectorAll(".boss-component").forEach(root => {
     if (root.dataset.rendered === 'true') return;
     root.dataset.rendered = 'true';
     bossRender(root, "normal");
   });
 }
 window.bossSetDiff = function(el, diff) {
   const root = el.closest(".boss-component");
   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>

<style> .boss-component .box { ... } </style>