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

De Wiki Gla
Ir para navegação Ir para pesquisar
 
(415 revisões intermediárias por 2 usuários não estão sendo mostradas)
Linha 1: Linha 1:
<div class="language-switch">
  <a data-lang="pt"><img src="https://upload.wikimedia.org/wikipedia/en/0/05/Flag_of_Brazil.svg" width="32" height="24"></a>
  <a data-lang="es"><img src="https://upload.wikimedia.org/wikipedia/commons/9/9a/Flag_of_Spain.svg" width="32" height="24"></a>
  <a data-lang="en"><img src="https://upload.wikimedia.org/wikipedia/en/a/a4/Flag_of_the_United_States.svg" width="32" height="24"></a>
  <a data-lang="pl"><img src="https://upload.wikimedia.org/wikipedia/en/1/12/Flag_of_Poland.svg" width="32" height="24"></a>
</div>


  <script type="text/javascript">
<style>
    (function () {
.language-switch {
      const nombre = '${nombre}';
  display: flex;
      const tier = '${tier}';
  gap: 6px;
      const clase = '${clase}';
  margin: 8px 0;
      const imagen = '${imagen}';
  justify-content: center;
      const habilidades = JSON.parse('${habilidades}');
}
      const skins = JSON.parse('${skins}');
.language-switch img {
  border: 1px solid #ccc;
  border-radius: 6px;
  cursor: pointer;
  transition: transform 0.2s ease, border-color 0.2s ease;
}
.language-switch img:hover {
  transform: scale(1.1);
  border-color: #333;
}
.language-switch img.active {
  border-color: #000;
}
</style>


      // Crear la estructura básica
<script>
      document.write(`
(function () {
        <div class="personaje-box">
  let currentLang = 'pt'; // idioma por defecto
          <div class="personaje-header">
            <div class="personaje-info">
              <div class="nombre">${nombre}</div>
              <div class="tier">Tier: ${tier}</div>
              <div class="clase">Clase: ${clase}</div>
            </div>
            <img src="${imagen}" alt="Arte del personaje">
            <div class="personaje-tabs">
              <button class="tab-btn active" data-tab="habilidades">Habilidades</button>
              <button class="tab-btn" data-tab="skins">Skins</button>
            </div>
          </div>
          <div class="tab-content active" id="habilidades">
            <div class="habilidades-container">
              <div class="prueba">
                <div class="cuadros-container"></div>
                <div class="descripcion-container"></div>
                <div class="atributos-container"></div>
              </div>
              <div class="video-container"></div>
            </div>
          </div>
          <div class="tab-content" id="skins"></div>
        </div>
      `);


      // Activar tabs
  const langSwitch = document.querySelector('.language-switch');
      setTimeout(() => {
  if (langSwitch) {
        const buttons = document.querySelectorAll(".tab-btn");
    langSwitch.querySelectorAll('a[data-lang]').forEach(btn => {
        const contents = document.querySelectorAll(".tab-content");
      btn.addEventListener('click', () => {
        buttons.forEach(btn => {
        currentLang = btn.dataset.lang;
          btn.addEventListener("click", () => {
        langSwitch.querySelectorAll('img').forEach(img => img.classList.remove('active'));
            buttons.forEach(b => b.classList.remove("active"));
        btn.querySelector('img').classList.add('active');
            contents.forEach(c => c.classList.remove("active"));
            btn.classList.add("active");
            document.getElementById(btn.getAttribute("data-tab")).classList.add("active");
          });
        });


        // Renderizar habilidades
         const active = document.querySelector('.skill-icon.active');
         const cuadrosContainer = document.querySelector('.cuadros-container');
         if (active) active.click();
         const descripcionContainer = document.querySelector('.descripcion-container');
      });
        const atributosContainer = document.querySelector('.atributos-container');
    });
        const videoContainer = document.querySelector('.video-container');
        const cuadros = [];


        habilidades.forEach((hab, index) => {
    // Activar la bandera por defecto
          const div = document.createElement('div');
    const defaultBtn = langSwitch.querySelector('a[data-lang="pt"] img');
          div.classList.add('cuadro');
    if (defaultBtn) defaultBtn.classList.add('active');
          div.innerHTML = `<img src="${hab.icon}" alt="${hab.nombre}" style="width: 100%; height: 100%; object-fit: cover;">`;
  }
          div.title = hab.nombre;
          div.addEventListener('click', () => {
            descripcionContainer.innerHTML = `
              <h3 style="margin-bottom: 4px; color: white;">${hab.nombre}</h3>
              <p style="margin: 0 0 6px;">Level: ${hab.level}</p>
              <p>${hab.descripcion}</p>`;
            atributosContainer.innerHTML = generarHTMLAtributos(hab.atributos);
            videoContainer.innerHTML = `<video width="100%" height="250" controls loop playsinline>
              <source src="${hab.video}" type="video/webm">
              Tu navegador no soporta este video.
            </video>`;
            cuadros.forEach(c => c.classList.remove('activo'));
            div.classList.add('activo');
          });
          cuadros.push(div);
          cuadrosContainer.appendChild(div);
        });


        if (cuadros.length > 0) cuadros[0].click();
  const oldClicks = document.querySelectorAll('.skill-icon');
  oldClicks.forEach(el => {
    el.addEventListener('click', () => {
      const name = el.dataset.nome || '';
      const rawDesc = el.dataset.desc || '';
      let descText = '';


        function generarHTMLAtributos(valoresStr) {
      try {
          const valores = valoresStr.split(',').map(v => v.trim());
        const obj = JSON.parse(rawDesc);
          const labels = ["Recarga", "Energía", "Poder PVE", "Poder PVP"];
        descText = obj[currentLang] || obj['pt'] || '';
          const icons = [
      } catch (e) {
            "/images/b/b1/Icon-cooldown.png",
        descText = rawDesc; // fallback si no es un JSON
            "/images/3/38/Icon-energy.png",
      }
            "/images/7/7a/Icon-pve.png",
            "/images/5/5f/Icon-pvp.png"
          ];
          return `
            <h4 class="attribute-title">Atributos</h4>
            <div class="attribute--cardsContainer">
              ${valores.map((valor, i) => {
                let formatted = valor === '-' ? '-' : (i === 1 ? ((parseInt(valor) > 0 ? '+' : '') + valor) : valor);
                return `
                  <span>
                    <div class="cardAttribute">
                      <img src="${icons[i]}" class="cardAttribute--icon">
                      <h2 class="cardAttribute--value">${formatted}${i === 0 && formatted !== '-' ? ' seg' : ''}</h2>
                    </div>
                  </span>`;
              }).join('')}
            </div>`;
        }


        // Renderizar skins
      const attrs = el.dataset.atr || '';
        const contenedorSkins = document.querySelector('#skins');
      const descBox = document.querySelector('.desc-box');
         contenedorSkins.innerHTML = `
      if (descBox) {
          <div class="card-skins">
         descBox.innerHTML = `<div class="skill-title"><h3>${name}</h3></div>${renderAttributes(attrs)}<div class="desc">${descText}</div>`;
            <span class="card-skins-title">Skins</span>
      }
            <div class="skins--container">
    });
              ${skins.map(skin => `
  });
                <span title="${skin.tooltip}">
})();
                  <img class="skins--imageSkin" src="${skin.imagen}" alt="">
</script>
                </span>`).join('')}
            </div>
          </div>`;
      }, 0);
    })();
  </script>

Edição atual tal como às 06h05min de 31 de agosto de 2025

 <a data-lang="pt"><img src="https://upload.wikimedia.org/wikipedia/en/0/05/Flag_of_Brazil.svg" width="32" height="24"></a>
 <a data-lang="es"><img src="https://upload.wikimedia.org/wikipedia/commons/9/9a/Flag_of_Spain.svg" width="32" height="24"></a>
 <a data-lang="en"><img src="https://upload.wikimedia.org/wikipedia/en/a/a4/Flag_of_the_United_States.svg" width="32" height="24"></a>
 <a data-lang="pl"><img src="https://upload.wikimedia.org/wikipedia/en/1/12/Flag_of_Poland.svg" width="32" height="24"></a>

<style> .language-switch {

 display: flex;
 gap: 6px;
 margin: 8px 0;
 justify-content: center;

} .language-switch img {

 border: 1px solid #ccc;
 border-radius: 6px;
 cursor: pointer;
 transition: transform 0.2s ease, border-color 0.2s ease;

} .language-switch img:hover {

 transform: scale(1.1);
 border-color: #333;

} .language-switch img.active {

 border-color: #000;

} </style>

<script> (function () {

 let currentLang = 'pt'; // idioma por defecto
 const langSwitch = document.querySelector('.language-switch');
 if (langSwitch) {
   langSwitch.querySelectorAll('a[data-lang]').forEach(btn => {
     btn.addEventListener('click', () => {
       currentLang = btn.dataset.lang;
       langSwitch.querySelectorAll('img').forEach(img => img.classList.remove('active'));
       btn.querySelector('img').classList.add('active');
       const active = document.querySelector('.skill-icon.active');
       if (active) active.click();
     });
   });
   // Activar la bandera por defecto
   const defaultBtn = langSwitch.querySelector('a[data-lang="pt"] img');
   if (defaultBtn) defaultBtn.classList.add('active');
 }
 const oldClicks = document.querySelectorAll('.skill-icon');
 oldClicks.forEach(el => {
   el.addEventListener('click', () => {
     const name = el.dataset.nome || ;
     const rawDesc = el.dataset.desc || ;
     let descText = ;
     try {
       const obj = JSON.parse(rawDesc);
       descText = obj[currentLang] || obj['pt'] || ;
     } catch (e) {
       descText = rawDesc; // fallback si no es un JSON
     }
     const attrs = el.dataset.atr || ;
     const descBox = document.querySelector('.desc-box');
     if (descBox) {

descBox.innerHTML = `

${name}

${renderAttributes(attrs)}

${descText}

`;

     }
   });
 });

})(); </script>