Pokélog Explorer

Revisão de 10h29min de 3 de agosto de 2025 por Oriasa (discussão | contribs) (Criou página com '<center>link=</center> Nesta página, o jogador pode consultar as recompensas de cada etapa do Pokélog, organizadas por Pokémon. É possível filtrar a lista por '''Elemento''' ou buscar um nome específico clicando no botão '''Nome'''. Abaixo estão as legendas dos ícones presentes nas recompensas: <center> {| class="wikitable" style="width: 39%" ! style="width: 40%; text-align: center;" | Ícone ! Descrição |- | styl...')
(dif) ← Edição anterior | Revisão atual (dif) | Versão posterior → (dif)
Banner Pokelog Explorer.webp


Nesta página, o jogador pode consultar as recompensas de cada etapa do Pokélog, organizadas por Pokémon. É possível filtrar a lista por Elemento ou buscar um nome específico clicando no botão Nome. Abaixo estão as legendas dos ícones presentes nas recompensas:


Ícone Descrição
Exp icon.png Experiência Adquirida ao completar determinado estágio do Pokélog.
Pokelog Research Notes.png Pokélog Research Notes Podem ser trocadas por alguns itens.
Pokelog Points.png Pokélog Points Usados para liberar runas lendárias.


Telekinetic-compass.gif Veja mais: Pokélog

`; function skeleton(where) { let html = '
'; for (let i = 0; i
`; } html += ""; where.innerHTML = html; } function loadingGif(where) { where.innerHTML = `
Carregando...
`; } function getElementIconUrl(elementName) { // Busca ignorando case sensitive // Procura por chave igual em minúsculo const normalized = normalize(elementName); for (const key in ELEMENT_ICON_URLS) { if (normalize(key) === normalized) { return ELEMENT_ICON_URLS[key]; } } console.warn("Elemento não encontrado:", elementName); return Erro; } function skeletonInfoUsuario(infoDiv) { infoDiv.innerHTML = `
`; } function mostraResultados(where, results, searchId) { if (!results.length) { where.innerHTML = '
Nenhum resultado.
'; return; } // Pode usar skeleton(where) se quiser, ou loadingGif(where) loadingGif(where); const container = document.createElement("div"); container.className = "image-container"; let loadedCount = 0; results.forEach((r) => { const item = document.createElement("div"); item.className = "image-item"; item.setAttribute("data-nome", r.nome); item.tabIndex = 0; const link = document.createElement("a"); link.className = "poke-clickable"; link.setAttribute("data-nome", r.nome); const img = new Image(); img.src = generateWikiImageUrl(r.foto); img.alt = r.nome; img.title = r.nome; img.className = "poke-img"; img.onload = img.onerror = () => { loadedCount++; if ( loadedCount === results.length && searchId === currentSearchId ) { // Quando todas as imagens carregarem (ou erro), renderiza tudo where.innerHTML = ""; where.appendChild(container); adicionaEventos(); } }; link.appendChild(img); link.appendChild(document.createElement("span")).className = "poke-name"; link.lastChild.textContent = r.nome; item.appendChild(link); const classContainer = document.createElement("div"); classContainer.className = "class-container"; r.elemento.split(",").forEach((e) => { const elImg = document.createElement("img"); elImg.src = getElementIconUrl(e); elImg.className = "element-tag-img"; elImg.title = e; elImg.alt = e; classContainer.appendChild(elImg); }); item.appendChild(classContainer); container.appendChild(item); }); function adicionaEventos() { where .querySelectorAll(".poke-clickable, .image-item") .forEach((btn) => { btn.onclick = function () { let card = this.closest(".image-item") || this; let nome = card.getAttribute("data-nome") || this.getAttribute("data-nome"); mostraInfoUsuarioComSkeleton(nome); }; btn.onkeypress = function (e) { if (e.key === "Enter" || e.key === " ") { let card = this.closest(".image-item") || this; let nome = card.getAttribute("data-nome") || this.getAttribute("data-nome"); mostraInfoUsuarioComSkeleton(nome); } }; }); } where .querySelectorAll(".poke-clickable, .image-item") .forEach((btn) => { btn.onclick = function (e) { let card = this.closest(".image-item") || this; let nome = card.getAttribute("data-nome") || this.getAttribute("data-nome"); mostraInfoUsuarioComSkeleton(nome); }; btn.onkeypress = function (e) { if (e.key === "Enter" || e.key === " ") { let card = this.closest(".image-item") || this; let nome = card.getAttribute("data-nome") || this.getAttribute("data-nome"); mostraInfoUsuarioComSkeleton(nome); } }; }); } function debounce(func, delay) { let timer; return function (...args) { clearTimeout(timer); timer = setTimeout(() => func.apply(this, args), delay); }; } function formatNumber(n) { if (typeof n === "number") return n.toLocaleString("pt-BR"); if (typeof n === "string" && /^\d+$/.test(n)) return parseInt(n).toLocaleString("pt-BR"); return n; } // Exibe skeleton e depois mostra info detalhada function mostraInfoUsuarioComSkeleton(nome) { const pessoa = DATA.find((d) => d.nome === nome); const estagios = pessoa.estagios || []; const infoDiv = widget.querySelector("#usuario-info"); widget.querySelector("#busca-radio-row").style.display = "none"; widget.querySelector("#busca-filtros").style.display = "none"; widget.querySelector("#busca-resultados").style.display = "none"; skeletonInfoUsuario(infoDiv); setTimeout(function () { infoDiv.innerHTML = `
${
            pessoa.nome
          }
${pessoa.elemento .split(",") .map( (e) => `${e}` ) .join("")}
${ pessoa.nome }
1º Estágio 2º Estágio 3º Estágio
Kills ${ estagios[0] ? estagios[0].qtd : "" } ${ estagios[1] ? estagios[1].qtd : "" } ${ estagios[2] ? estagios[2].qtd : "" }
Recompensas
Research ${ estagios[0] ? estagios[0].research : "" } ${ estagios[1] ? estagios[1].research : "" } ${ estagios[2] ? estagios[2].research : "" }
Pokelog ${ estagios[0] ? estagios[0].pokelog : "" } ${ estagios[1] ? estagios[1].pokelog : "" } ${ estagios[2] ? estagios[2].pokelog : "" }
EXP ${ estagios[0] ? estagios[0].exp === 0 ? `` : formatNumber(estagios[0].exp) : "" } ${ estagios[1] ? estagios[1].exp === 0 ? `` : formatNumber(estagios[1].exp) : "" } ${ estagios[2] ? estagios[2].exp === 0 ? `` : formatNumber(estagios[2].exp) : "" }
`; infoDiv.querySelector(".voltar-btn").onclick = function () { infoDiv.innerHTML = ""; widget.querySelector("#busca-radio-row").style.display = ""; widget.querySelector("#busca-filtros").style.display = ""; widget.querySelector("#busca-resultados").style.display = ""; // Limpa busca anterior const filtros = widget.querySelector("#busca-filtros"); const resultados = widget.querySelector("#busca-resultados"); if (filtros.querySelector("input")) { filtros.querySelector("input").value = ""; resultados.innerHTML = ""; } else if (filtros.querySelector("select")) { filtros.querySelector("select").selectedIndex; } }; }, 100); } let currentSearchId = 0; // variável global function buscar(tipo, valor, where) { const searchId = ++currentSearchId; where.innerHTML = ""; loadingGif(where); setTimeout(() => { if (searchId !== currentSearchId) return; let results = []; if (tipo === "elemento") { results = DATA.filter((d) => d.elemento .split(",") .map((e) => normalize(e)) .includes(normalize(valor)) ); } else if (tipo === "nome" && valor.length >= 3) { const normalizedValor = normalize(valor); let exatos = DATA.filter( (d) => normalize(d.nome) === normalizedValor ); let comeca = DATA.filter( (d) => normalize(d.nome).startsWith(normalizedValor) && normalize(d.nome) !== normalizedValor ); let contem = DATA.filter( (d) => normalize(d.nome).includes(normalizedValor) && !normalize(d.nome).startsWith(normalizedValor) ); results = [...exatos, ...comeca, ...contem]; } mostraResultados(where, results, searchId); }, 100); } function atualizaFiltros(widget) { const tipo = widget .querySelector(".tag-button.selected") .getAttribute("data-opcao"); const filtros = widget.querySelector("#busca-filtros"); const resultados = widget.querySelector("#busca-resultados"); const infoDiv = widget.querySelector("#usuario-info"); filtros.innerHTML = ""; resultados.innerHTML = ""; infoDiv.innerHTML = ""; currentSearchId++; if (tipo === "elemento") { const sel = document.createElement("select"); sel.className = "maps__select"; const defaultOption = document.createElement("option"); defaultOption.value = ""; defaultOption.textContent = "Selecione um elemento"; defaultOption.disabled = true; defaultOption.selected = true; sel.appendChild(defaultOption); ELEMENTOS.forEach((e) => { const op = document.createElement("option"); op.value = e; op.textContent = e; sel.appendChild(op); }); filtros.appendChild(sel); sel.addEventListener("change", function () { buscar("elemento", this.value, resultados); }); } else { const inp = document.createElement("input"); inp.type = "text"; inp.placeholder = "Digite o nome (mín. 3 letras)"; inp.className = "search-input"; filtros.appendChild(inp); resultados.innerHTML = ""; inp.addEventListener( "input", debounce(function () { if (this.value.length >= 3) { buscar("nome", this.value, resultados); } else { resultados.innerHTML = ""; } }, 450) ); } } atualizaFiltros(widget); widget.querySelectorAll(".tag-button").forEach((btn) => { btn.addEventListener("click", function () { widget .querySelectorAll(".tag-button") .forEach((b) => b.classList.remove("selected")); btn.classList.add("selected"); atualizaFiltros(widget); }); });