MediaWiki:Common.js: mudanças entre as edições
Ir para navegação
Ir para pesquisar
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: | ||
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) { | ||
var html = ""; | |||
var colorStack = false; | |||
.replace(/\n/g, "<br>") | |||
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) { | ||
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 | '<div class="row">' + | ||
'<img src="' + API + item.icon + '" | '<img class="icon" src="' + API + item.icon + '">' + | ||
'<div class="title">' + item.name + '</div>' + | |||
'< | '</div>' + | ||
'<div class="text">' + | |||
roColorToHtml(item.description) + | roColorToHtml(item.description) + | ||
'</div>'; | '</div>'; | ||
| Linha 37: | Linha 57: | ||
var move = function (ev) { | var move = function (ev) { | ||
var x = ev.clientX + 20; | |||
tip.style.top = | 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 = "[ | console.error("Item API erro:", err); | ||
el.innerHTML = "[erro]"; | |||
}); | }); | ||
Edição atual tal como às 22h44min de 2 de fevereiro de 2026
mw.hook("wikipage.content").add(function () {
var API = "https://api.pkro.com.br";
function roColorToHtml(text) {
var html = "";
var colorStack = false;
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) {
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);
el.addEventListener("mouseleave", function () {
tip.remove();
document.removeEventListener("mousemove", move);
}, { once: true });
});
})
.catch(function (err) {
console.error("Item API erro:", err);
el.innerHTML = "[erro]";
});
});
});