MediaWiki:Common.js: mudanças entre as edições

Ir para navegação Ir para pesquisar
sem sumário de edição
Sem resumo de edição
Sem resumo de edição
 
(9 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
Linha 1: Linha 1:
/* Códigos JavaScript aqui colocados serão carregados por todos aqueles que acessarem alguma página deste wiki */
mw.hook("wikipage.content").add(function () {
document.addEventListener("mouseover", function(e) {
    if (!e.target.classList.contains("itemdef")) return;


     const id = e.target.dataset.item;
     var API = "https://api.pkro.com.br";


     const db = {
     function roColorToHtml(text) {
         601: {
        var html = "";
             name: "Pokébola",
        var colorStack = false;
            icon: "/images/items/sword.png",
 
             desc: "Pokebola para usar."
        var parts = text.split(/\^([0-9A-Fa-f]{6})/);
 
         for (var i = 0; i < parts.length; i++) {
             if (i % 2 === 1) {
                if (colorStack) html += "</span>";
                html += '<span style="color:#' + parts[i] + '">';
                colorStack = true;
            } else {
                html += parts[i];
             }
         }
         }
    };


     const item = db[id];
        if (colorStack) html += "</span>";
    if (!item) return;
 
        return html
            .replace(/\\n/g, "<br>")
            .replace(/\n/g, "<br>");
    }
 
 
     document.querySelectorAll(".mw-item").forEach(function (el) {
 
        if (el.dataset.loaded) return; // evita duplicar
        el.dataset.loaded = "1";
 
        var id = el.dataset.id;
 
        fetch(API + "/item/" + id)
            .then(function (r) { return r.json(); })
            .then(function (item) {
 
                el.innerHTML = '<img src="' + API + item.icon + '" width="32">';
 
                el.addEventListener("mouseenter", function () {
 
                    var tip = document.createElement("div");
                    tip.className = "item-tooltip";
 
                    tip.innerHTML =
                        '<div class="row">' +
                        '<img class="icon" src="' + API + item.icon + '">' +
                        '<div class="title">' + item.name + '</div>' +
                        '</div>' +
                        '<div class="text">' +
                        roColorToHtml(item.description) +
                        '</div>';
 
                    document.body.appendChild(tip);
 
                    var move = function (ev) {
                        var x = ev.clientX + 20;
                        var y = ev.clientY + 20;
 
                        if (x + 280 > window.innerWidth)
                            x = ev.clientX - 300;
 
                        if (y + 120 > window.innerHeight)
                            y = ev.clientY - 140;
 
                        tip.style.left = x + "px";
                        tip.style.top = y + "px";
                    };
 
 
                    document.addEventListener("mousemove", move);


    const tooltip = document.createElement("div");
                    el.addEventListener("mouseleave", function () {
    tooltip.className = "item-tooltip";
                        tip.remove();
    tooltip.innerHTML = `
                        document.removeEventListener("mousemove", move);
        <b>${item.name}</b><br>
                    }, { once: true });
        ${item.desc}
    `;


    document.body.appendChild(tooltip);
                });


    const move = (ev) => {
            })
        tooltip.style.left = ev.pageX + 15 + "px";
            .catch(function (err) {
        tooltip.style.top = ev.pageY + 15 + "px";
                console.error("Item API erro:", err);
    };
                el.innerHTML = "[erro]";
            });


     document.addEventListener("mousemove", move);
     });


    e.target.addEventListener("mouseout", () => {
        tooltip.remove();
        document.removeEventListener("mousemove", move);
    }, { once: true });
});
});

Menu de navegação