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

De Wiki Gla
Ir para navegação Ir para pesquisar
Linha 13: Linha 13:
<script>
<script>
(function () {
(function () {
  let habilidades = [];
   const raw= document.getElementById('infoboxboss-data');
   const raw= document.getElementById('infoboxboss-data');
   console.log(raw);
   console.log(raw);
Linha 20: Linha 21:
         }
         }


        // Extração de dados
    for (let i = 1; i <= 10; i++) {
        let habilidades = [];
    const nome = raw.dataset[`hab${i}`];
    const descricao = raw.dataset[`de${i}`];
    const video = raw.dataset[`vid${i}`];


        const tempRawHabs = (raw.dataset.habs || '').trim();
    if (!nome) continue;
        rawHabs = tempRawHabs.replace(/<!--[\s\S]*?-->/g, '').trim();
        rawHabs.split('||').forEach(line => {
            if (!line.trim()) return;


            const parts = line.split('|').map(x => x.trim()).filter(Boolean);
    habilidades.push({
            const habData = {};
        nome,
            parts.forEach(part => {
        descricao: descricao || '',
                const [key, ...valParts] = part.split('=');
        video: video || ''
                if (!key || valParts.length === 0) return;
    });
                habData[key.trim()] = valParts.join('=').trim();
}
            });
 
            const { nome, desc = '', video = '' } = habData;
 
            if (nome) {
                habilidades.push({
                    nome,
                    descricao: desc,
                    video
                });
            } else {
                console.warn("Habilidad omitida por falta de campos obligatorios:", line);
            }
        });


   const tabsContainer = document.getElementById('skill-tabs');
   const tabsContainer = document.getElementById('skill-tabs');
Linha 64: Linha 50:


     // Video
     // Video
     const vid = document.createElement('video');
     const container = document.createElement('div');
    vid.id = id;
container.id = id;
    vid.className = 'skill-video';
container.className = 'skill-video';
    vid.controls = true;
container.style.display = idx === 0 ? '' : 'none';
    vid.autoplay = false;
 
    vid.loop = true;
// Usar o widget, renderizando como HTML MediaWiki:
    vid.style.display = idx === 0 ? '' : 'none';
container.innerHTML = `{{#widget:infovideo|src=${hab.video}|class=infobox-skill-video}}`;
    const source = document.createElement('source');
videoContainer.appendChild(container);
    source.src = hab.video;
 
    source.type = "video/mp4";
    vid.appendChild(source);
    videoContainer.appendChild(vid);
   });
   });



Edição das 19h30min de 21 de maio de 2025

<script> (function () {

 let habilidades = [];
 const raw= document.getElementById('infoboxboss-data');
 console.log(raw);
       if (!raw) {
           console.error('Persona widget: no se encontró #persona-data');
           return;
       }
   for (let i = 1; i <= 10; i++) {
   const nome = raw.dataset[`hab${i}`];
   const descricao = raw.dataset[`de${i}`];
   const video = raw.dataset[`vid${i}`];
   if (!nome) continue;
   habilidades.push({
       nome,
       descricao: descricao || ,
       video: video || 
   });

}

 const tabsContainer = document.getElementById('skill-tabs');
 const videoContainer = document.getElementById('skill-videos');
 const descText = document.getElementById('desc-text');
 habilidades.forEach((hab, idx) => {
   const id = `video${idx + 1}`;
   // Botón
   const btn = document.createElement('button');
   btn.className = 'infobox-skill-tab' + (idx === 0 ? ' active' : );
   btn.dataset.video = id;
   btn.textContent = hab.nome;
   tabsContainer.appendChild(btn);
   // Video
   const container = document.createElement('div');

container.id = id; container.className = 'skill-video'; container.style.display = idx === 0 ?  : 'none';

// Usar o widget, renderizando como HTML MediaWiki:

container.innerHTML = `

Erro em widget infovideo: Unable to load template 'wiki:infovideo'

`;

videoContainer.appendChild(container);

 });
 // Descripción inicial
 descText.innerHTML = `${habilidades[0].nome}: ${habilidades[0].descricao}`;
 // Lógica tabs
 const tabs = document.querySelectorAll('.infobox-skill-tab');
 const videos = document.querySelectorAll('.skill-video');
 tabs.forEach((tab, idx) => {
   tab.addEventListener('click', () => {
     tabs.forEach(t => t.classList.remove('active'));
     tab.classList.add('active');
     const vidId = tab.dataset.video;
     descText.innerHTML = `${habilidades[idx].nome}: ${habilidades[idx].descricao}`;
     videos.forEach(v => {
       if (v.id === vidId) {
         v.style.display = ;
         v.load();
         v.play();
       } else {
         v.pause();
         v.style.display = 'none';
       }
     });
   });
 });
 document.getElementById('infoboxboss-data')?.remove();

})(); </script>


<style> .skill-box {

 background: none;;
 color: #222;
 border-radius: 12px;
 box-shadow: none;
 width: 100%;
 max-width: 700px;
 box-sizing: border-box;
 padding: 24px 24px 20px 24px;
 display: flex;
 flex-direction: column;
 align-items: center;
 gap: 18px;
 backdrop-filter: blur(2px);
 margin: 0 auto 24px auto;

} </style>