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

Ir para navegação Ir para pesquisar
sem sumário de edição
(Criou página com '→‎Códigos JavaScript aqui colocados serão carregados por todos aqueles que acessarem alguma página deste wiki: document.addEventListener("mouseover", function(e) { if (!e.target.classList.contains("itemdef")) return; const id = e.target.dataset.item; const db = { 1001: { name: "Espada Lendária", icon: "/images/items/sword.png", desc: "Uma espada forjada pelos deuses." } }; const item = db[i...')
 
Sem resumo de edição
 
(10 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) {
         1001: {
        var html = "";
             name: "Espada Lendária",
        var colorStack = false;
            icon: "/images/items/sword.png",
 
             desc: "Uma espada forjada pelos deuses."
        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