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
 
(5 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
Linha 1: Linha 1:
document.addEventListener("DOMContentLoaded", function () {
mw.hook("wikipage.content").add(function () {


     var API = "https://api.pkro.com.br";
     var API = "https://api.pkro.com.br";


     function roColorToHtml(text) {
     function roColorToHtml(text) {
         return text
         var html = "";
            .replace(/\^([0-9A-Fa-f]{6})/g, '<span style="color:#$1">')
        var colorStack = false;
             .replace(/\n/g, "<br>") + "</span>";
 
        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];
            }
        }
 
        if (colorStack) html += "</span>";
 
        return html
             .replace(/\\n/g, "<br>")
            .replace(/\n/g, "<br>");
     }
     }


     document.querySelectorAll(".mw-item").forEach(function (el) {
     document.querySelectorAll(".mw-item").forEach(function (el) {
        if (el.dataset.loaded) return; // evita duplicar
        el.dataset.loaded = "1";


         var id = el.dataset.id;
         var id = el.dataset.id;
Linha 17: Linha 38:
             .then(function (item) {
             .then(function (item) {


                // troca texto por ícone
                 el.innerHTML = '<img src="' + API + item.icon + '" width="32">';
                 el.innerHTML = '<img src="' + API + item.icon + '" width="32">';


Linha 26: Linha 46:


                     tip.innerHTML =
                     tip.innerHTML =
                         '<div style="display:flex; gap:10px;">' +
                         '<div class="row">' +
                         '<img src="' + API + item.icon + '" width="42">' +
                         '<img class="icon" src="' + API + item.icon + '">' +
                        '<div>' +
                        '<div class="title">' + item.name + '</div>' +
                         '<b>' + item.name + '</b><br>' +
                         '</div>' +
                        '<div class="text">' +
                         roColorToHtml(item.description) +
                         roColorToHtml(item.description) +
                        '</div>' +
                         '</div>';
                         '</div>';


Linha 37: Linha 57:


                     var move = function (ev) {
                     var move = function (ev) {
                         tip.style.left = (ev.pageX + 15) + "px";
                         var x = ev.clientX + 20;
                         tip.style.top = (ev.pageY + 15) + "px";
                        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);
                     document.addEventListener("mousemove", move);
Linha 51: Linha 81:


             })
             })
             .catch(function () {
             .catch(function (err) {
                 el.innerHTML = "[item erro]";
                console.error("Item API erro:", err);
                 el.innerHTML = "[erro]";
             });
             });


Menu de navegação