Widget:Test4: mudanças entre as edições
Ir para navegação
Ir para pesquisar
Sem resumo de edição |
Sem resumo de edição |
||
(27 revisões intermediárias pelo mesmo usuário não estão sendo mostradas) | |||
Linha 13: | Linha 13: | ||
margin: 0 auto; | margin: 0 auto; | ||
border: 42px solid transparent; | border: 42px solid transparent; | ||
border-image: url(https://wiki.pokexgames.com/images/3/ | border-image: url(https://wiki.pokexgames.com/images/3/37/Calculadora-de-Boost.png) 38; | ||
border-image-repeat: round; | border-image-repeat: round; | ||
width: 100%; | width: 100%; | ||
Linha 51: | Linha 51: | ||
text-align: left; | text-align: left; | ||
} | } | ||
.image-info p { | |||
margin-bottom: 6px; /* Reduz o espaço entre os parágrafos */ | |||
margin-left: 40px; | |||
line-height: 1.5; | |||
} | |||
.image-info img { | |||
vertical-align: middle; | |||
display: inline-block; | |||
margin-right: 5px; | |||
transform: translateY(-3px); /* Sobe a imagem 5px */ | |||
} | |||
.class-icons img { | |||
vertical-align: middle; | |||
display: inline-block; | |||
margin-right: 5px; | |||
transform: translateY(-3px); /* Sobe a imagem 5px */ | |||
} | |||
.image-item { | .image-item { | ||
Linha 72: | Linha 84: | ||
max-width: 400px; | max-width: 400px; | ||
width: 100%; | width: 100%; | ||
margin-bottom: 35px; | |||
} | } | ||
Linha 95: | Linha 109: | ||
align-items: center; | align-items: center; | ||
gap: 10px; | gap: 10px; | ||
margin-top: -5px; /* Aproxima "Clãs:" do item anterior */ | |||
} | } | ||
.type-dropdown { | .type-dropdown { | ||
Linha 162: | Linha 174: | ||
} | } | ||
</style> | </style> | ||
</head> | </head> | ||
<body> | <body> | ||
<div class="borda-container"> | <div class="borda-container"> | ||
<div class="input-group"> | <div class="input-group"> | ||
<label for="difficulty"><b>Dificuldade:</b></label> | <label for="difficulty"><b>Dificuldade:</b></label> | ||
Linha 180: | Linha 184: | ||
</select> | </select> | ||
</div> | </div> | ||
<div class="input-group"> | <div class="input-group"> | ||
<div class="toggle-group"> | <div class="toggle-group"> | ||
Linha 190: | Linha 194: | ||
</div> | </div> | ||
</div> | </div> | ||
<div class="input-group"> | <div class="input-group"> | ||
<label for="search"><b>Buscar por Nome:</b></label> | <label for="search"><b>Buscar por Nome:</b></label> | ||
<input type="text" id="search" class="maps__select" placeholder="Digite o nome..."> | <input type="text" id="search" class="maps__select" placeholder="Digite o nome..."> | ||
</div> | </div> | ||
<div class="switch-container"> | <div class="switch-container"> | ||
<div class="switch-button" id="switchClans"> | <div class="switch-button" id="switchClans"> | ||
Linha 204: | Linha 208: | ||
</div> | </div> | ||
</div> | </div> | ||
<div id="clanFilter" class="input-group"> | <div id="clanFilter" class="input-group"> | ||
<label><b>Filtro de Clãs do Jogador:</b></label> | <label><b>Filtro de Clãs do Jogador:</b></label> | ||
<div id="tagButtons"></div> | <div id="tagButtons"></div> | ||
</div> | </div> | ||
<div id="typeFilter" class="input-group hidden"> | <div id="typeFilter" class="input-group hidden"> | ||
<label><b>Filtro de dano causado pelo Pokémon selvagem:</b></label> | <label><b>Filtro de dano causado pelo Pokémon selvagem:</b></label> | ||
<div id="typeButtons"></div> | <div id="typeButtons"></div> | ||
</div> | </div> | ||
<div id="imageContainer" class="image-container"></div> | <div id="imageContainer" class="image-container"></div> | ||
</div> | </div> | ||
<script> | <script> | ||
const classIcons = { | const classIcons = { | ||
"Volcanic": "https://wiki.pokexgames.com/images/6/64/Volcanic1.png", | "Volcanic": "https://wiki.pokexgames.com/images/6/64/Volcanic1.png", | ||
Linha 301: | Linha 259: | ||
document.addEventListener("DOMContentLoaded", function () { | document.addEventListener("DOMContentLoaded", function () { | ||
const difficultySelect = document.getElementById("difficulty"); | const difficultySelect = document.getElementById("difficulty"); | ||
const tagButtonsContainer = document.getElementById("tagButtons"); | const tagButtonsContainer = document.getElementById("tagButtons"); | ||
Linha 317: | Linha 274: | ||
let selectedTypes = []; | let selectedTypes = []; | ||
let showNeutro = false; | let showNeutro = false; | ||
const neutroIconAtivado = "https://wiki.pokexgames.com/images/7/73/Vetor_Toggle_Wiki_On.png"; | const neutroIconAtivado = "https://wiki.pokexgames.com/images/7/73/Vetor_Toggle_Wiki_On.png"; | ||
const neutroIconDesativado = "https://wiki.pokexgames.com/images/2/27/Vetor_Toggle_Wiki_Off.png"; | const neutroIconDesativado = "https://wiki.pokexgames.com/images/2/27/Vetor_Toggle_Wiki_Off.png"; | ||
if (!toggleNeutro || !toggleNeutroIcon) { | if (!toggleNeutro || !toggleNeutroIcon) { | ||
console.error("Elementos do toggle não encontrados!"); | console.error("Elementos do toggle não encontrados!"); | ||
return; | return; | ||
} | } | ||
toggleNeutro.addEventListener("click", () => { | toggleNeutro.addEventListener("click", () => { | ||
showNeutro = !showNeutro; | showNeutro = !showNeutro; | ||
toggleNeutro.classList.toggle("active"); | toggleNeutro.classList.toggle("active"); | ||
if (showNeutro) { | if (showNeutro) { | ||
toggleNeutroIcon.src = neutroIconAtivado; | toggleNeutroIcon.src = neutroIconAtivado; | ||
} else { | } else { | ||
toggleNeutroIcon.src = neutroIconDesativado; | toggleNeutroIcon.src = neutroIconDesativado; | ||
} | } | ||
filterHunts(); | filterHunts(); | ||
}); | }); | ||
Object.entries(classIcons).forEach(([cls, icon]) => { | Object.entries(classIcons).forEach(([cls, icon]) => { | ||
const button = document.createElement("button"); | const button = document.createElement("button"); | ||
Linha 350: | Linha 307: | ||
tagButtonsContainer.appendChild(button); | tagButtonsContainer.appendChild(button); | ||
}); | }); | ||
Object.entries(typeIcons).forEach(([type, icon]) => { | Object.entries(typeIcons).forEach(([type, icon]) => { | ||
const button = document.createElement("button"); | const button = document.createElement("button"); | ||
Linha 375: | Linha 332: | ||
filterHunts(); | filterHunts(); | ||
} | } | ||
switchClans.addEventListener("click", () => { | switchClans.addEventListener("click", () => { | ||
clearFilters(); | clearFilters(); | ||
Linha 391: | Linha 349: | ||
switchTypes.classList.add("active"); | switchTypes.classList.add("active"); | ||
}); | }); | ||
searchInput.addEventListener("input", () => { | searchInput.addEventListener("input", () => { | ||
filterHunts(); | filterHunts(); | ||
}); | }); | ||
function filterHunts() { | function filterHunts() { | ||
const selectedDifficulty = difficultySelect.value; | const selectedDifficulty = difficultySelect.value; | ||
const searchTerm = searchInput.value.toLowerCase(); | const searchTerm = searchInput.value.toLowerCase(); | ||
imageContainer.innerHTML = ""; | imageContainer.innerHTML = ""; | ||
if (! | // Se nenhuma dificuldade for selecionada, não exibe nada | ||
if (!selectedDifficulty) { | |||
return; | |||
} | |||
const huntList = hunts[ | const huntList = hunts["NW"]; // Assume que a database é sempre "NW" | ||
huntList.forEach(hunt => { | huntList.forEach(hunt => { | ||
const hasAllClasses = hunt.classes.includes("Todos"); | const hasAllClasses = hunt.classes.includes("Todos"); | ||
const hasAllTypes = hunt.huntTypes.includes("Todos"); | const hasAllTypes = hunt.huntTypes.includes("Todos"); | ||
const matchesTags = hasAllClasses || selectedTags.length === 0 || selectedTags.some(tag => hunt.classes.includes(tag)); | const matchesTags = hasAllClasses || selectedTags.length === 0 || selectedTags.some(tag => hunt.classes.includes(tag)); | ||
const matchesTypes = hasAllTypes || selectedTypes.length === 0 || selectedTypes.some(type => hunt.huntTypes.includes(type)); | const matchesTypes = hasAllTypes || selectedTypes.length === 0 || selectedTypes.some(type => hunt.huntTypes.includes(type)); | ||
const matchesDifficulty = | const matchesDifficulty = hunt.difficulty === selectedDifficulty; | ||
const isNeutro = hunt.huntTipo === "Neutro"; | const isNeutro = hunt.huntTipo === "Neutro"; | ||
const matchesSearch = hunt.name.toLowerCase().includes(searchTerm) || (hunt.altName && hunt.altName.toLowerCase().includes(searchTerm)); | const matchesSearch = hunt.name.toLowerCase().includes(searchTerm) || (hunt.altName && hunt.altName.toLowerCase().includes(searchTerm)); | ||
if (matchesTags && matchesTypes && matchesDifficulty && (!isNeutro || (isNeutro && showNeutro)) && matchesSearch) { | if (matchesTags && matchesTypes && matchesDifficulty && (!isNeutro || (isNeutro && showNeutro)) && matchesSearch) { | ||
const imageItem = document.createElement("div"); | const imageItem = document.createElement("div"); | ||
imageItem.className = "image-item"; | imageItem.className = "image-item"; | ||
imageItem.innerHTML = ` | imageItem.innerHTML = ` | ||
<div class="image-content"> | |||
<a href="${hunt.link}" target="_blank"> | |||
<img src="${hunt.imageUrl}" alt="${hunt.name}" title="Clique para mais informações"> | |||
</a> | |||
<div class="image-info"> | |||
<p><b>Resistência: </b> ${Array.isArray(hunt.local) ? hunt.local.join(", ") : hunt.local}</p> | |||
<p><b>Dificuldade: </b> ${hunt.difficulty}</p> | |||
<p><b>Dano: </b> ${hunt.huntTypes.includes("Todos") ? "Todos" : hunt.huntTypes.map(type => `<img src="${typeIcons[type]}" alt="${type}" title="${type}" class="class-icon">`).join(" ")}</p> | |||
<div class="class-container"> | |||
<p><b>Clãs: </b></p> | |||
<div class="class-icons"> | |||
${hunt.classes.includes("Todos") ? "Todos" : hunt.classes.map(cls => `<img src="${classIcons[cls]}" alt="${cls}" title="${cls}" class="class-icon">`).join("")} | |||
</div> | |||
</div> | |||
</div> | |||
`; | |||
imageContainer.appendChild(imageItem); | imageContainer.appendChild(imageItem); | ||
} | } | ||
}); | }); | ||
} | } | ||
difficultySelect.addEventListener("change", filterHunts); | |||
// Preenche as dificuldades disponíveis | |||
const difficulties = new Set(hunts["NW"].map(hunt => hunt.difficulty)); | |||
difficulties.forEach(difficulty => { | |||
const option = document.createElement("option"); | |||
option.value = difficulty; | |||
option.textContent = difficulty; | |||
difficultySelect.appendChild(option); | |||
}); | |||
// Não exibe as hunts inicialmente (só após selecionar uma dificuldade) | |||
imageContainer.innerHTML = ""; | |||
}); | }); | ||
</script> | </script> |
Edição atual tal como às 23h16min de 23 de março de 2025
<!DOCTYPE html> <html lang="pt-BR">
<head>
<meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Seleção de Hunts</title> <style> .borda-container { display: flex; flex-direction: column; padding: .5rem 2rem; margin: 0 auto; border: 42px solid transparent; border-image: url(https://wiki.pokexgames.com/images/3/37/Calculadora-de-Boost.png) 38; border-image-repeat: round; width: 100%; box-sizing: border-box; min-height: 620px; overflow: hidden; }
.hidden { display: none; }
.input-group { margin: 20px 0; }
.maps__select { width: 100%; padding: 10px; font-size: 16px; border-radius: 5px; border: 1px solid #ccc; background-color: #fff; margin-top: 15px; box-sizing: border-box; }
.image-container { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 20px; }
.image-item { flex: 1 0 30%; text-align: left; }
.image-info p {
margin-bottom: 6px; /* Reduz o espaço entre os parágrafos */ margin-left: 40px; line-height: 1.5;
}
.image-info img {
vertical-align: middle; display: inline-block; margin-right: 5px; transform: translateY(-3px); /* Sobe a imagem 5px */
}
.class-icons img {
vertical-align: middle; display: inline-block; margin-right: 5px; transform: translateY(-3px); /* Sobe a imagem 5px */
}
.image-item { display: flex; justify-content: center; width: 100%; }
.image-content { text-align: left; max-width: 400px; width: 100%; margin-bottom: 35px;
}
.tag-button { display: inline-flex; color: #333; padding: 5px 12px; margin: 5px; border-radius: 20px; cursor: pointer; font-size: 16px; }
.tag-button.selected { background-color: #d586e1; color: #050000; border: #9d4cea solid 2px; font-weight: bolder; }
.class-container { display: flex; align-items: center; gap: 10px; margin-top: -5px; /* Aproxima "Clãs:" do item anterior */ }
.type-dropdown { margin-top: 10px; }
.disabled { opacity: 0.5; pointer-events: none; }
.switch-container { display: flex; gap: 10px; margin: 20px 0; }
.switch-button { background-color: #f1f1f1; border: 1px solid #ccc; padding: 10px; border-radius: 5px; cursor: pointer; display: flex; align-items: center; gap: 5px; }
.switch-button.active { background-color: #d586e1; border-color: #9d4cea; }
.icon-filter { width: 24px; height: 24px; }
.toggle-button { display: flex; align-items: center; gap: 5px; cursor: pointer; }
.toggle-group { display: flex; align-items: center; gap: 10px; }
.toggle-container { display: flex; align-items: center; cursor: pointer; }
.toggle-container img { width: 60px; height: 28px; } </style>
</head>
<body>
<label for="difficulty">Dificuldade:</label> <select id="difficulty" class="maps__select"> <option value="">Selecione uma Dificuldade</option> </select>
<label>Mostrar Hunts Neutras </label>
<img src="https://wiki.pokexgames.com/images/2/27/Vetor_Toggle_Wiki_Off.png" alt="Desativado" id="toggleNeutroIcon">
<label for="search">Buscar por Nome:</label> <input type="text" id="search" class="maps__select" placeholder="Digite o nome...">
<label>Filtro de Clãs do Jogador:</label>
<script> const classIcons = { "Volcanic": "https://wiki.pokexgames.com/images/6/64/Volcanic1.png", "Raibolt": "https://wiki.pokexgames.com/images/b/b4/Raibol1t.png", "Orebound": "https://wiki.pokexgames.com/images/e/e2/Orebound1.png", "Naturia": "https://wiki.pokexgames.com/images/3/30/Naturia1.png", "Gardestrike": "https://wiki.pokexgames.com/images/3/39/Gardestrike1.png", "Ironhard": "https://wiki.pokexgames.com/images/9/9a/Ironhard1.png", "Wingeon": "https://wiki.pokexgames.com/images/0/0c/Wingeon1.png", "Psycraft": "https://wiki.pokexgames.com/images/5/59/Psycraft1.png", "Seavell": "https://wiki.pokexgames.com/images/2/2c/Seave1ll.png", "Malefic": "https://wiki.pokexgames.com/images/5/56/Malefi1c.png" };
const typeIcons = { "Steel": "https://wiki.pokexgames.com/images/c/c9/Steel.png", "Dragon": "https://wiki.pokexgames.com/images/c/c7/Dragon.png", "Fairy": "https://wiki.pokexgames.com/images/4/43/Fairy.png", "Psychic": "https://wiki.pokexgames.com/images/2/21/Psychic.png", "Fighting": "https://wiki.pokexgames.com/images/3/30/Fighting.png", "Ice": "https://wiki.pokexgames.com/images/7/77/Ice.png", "Fire": "https://wiki.pokexgames.com/images/3/30/Fire.png", "Rock": "https://wiki.pokexgames.com/images/0/0b/Rock.png", "Ground": "https://wiki.pokexgames.com/images/8/8f/Ground.png", "Poison": "https://wiki.pokexgames.com/images/0/03/Poison1.png", "Electric": "https://wiki.pokexgames.com/images/2/2f/Electric.png", "Water": "https://wiki.pokexgames.com/images/9/9d/Water.png", "Bug": "https://wiki.pokexgames.com/images/7/7d/Bug.png", "Grass": "https://wiki.pokexgames.com/images/c/c5/Grass.png", "Flying": "https://wiki.pokexgames.com/images/7/7f/Flying.png", "Normal": "https://wiki.pokexgames.com/images/e/e8/Normal1.png", "Ghost": "https://wiki.pokexgames.com/images/5/59/Ghost1.png", "Dark": "https://wiki.pokexgames.com/images/9/98/Dark1.png", "Neutral": "https://wiki.pokexgames.com/images/0/08/NeutralICON.png" };
document.addEventListener("DOMContentLoaded", function () { const difficultySelect = document.getElementById("difficulty"); const tagButtonsContainer = document.getElementById("tagButtons"); const typeButtonsContainer = document.getElementById("typeButtons"); const imageContainer = document.getElementById("imageContainer"); const toggleNeutro = document.getElementById("toggleNeutro"); const toggleNeutroIcon = document.getElementById("toggleNeutroIcon"); const searchInput = document.getElementById("search"); const switchClans = document.getElementById("switchClans"); const switchTypes = document.getElementById("switchTypes"); const clanFilter = document.getElementById("clanFilter"); const typeFilter = document.getElementById("typeFilter");
let selectedTags = []; let selectedTypes = []; let showNeutro = false;
const neutroIconAtivado = "https://wiki.pokexgames.com/images/7/73/Vetor_Toggle_Wiki_On.png"; const neutroIconDesativado = "https://wiki.pokexgames.com/images/2/27/Vetor_Toggle_Wiki_Off.png";
if (!toggleNeutro || !toggleNeutroIcon) { console.error("Elementos do toggle não encontrados!"); return; }
toggleNeutro.addEventListener("click", () => { showNeutro = !showNeutro; toggleNeutro.classList.toggle("active");
if (showNeutro) { toggleNeutroIcon.src = neutroIconAtivado; } else { toggleNeutroIcon.src = neutroIconDesativado; }
filterHunts(); });
Object.entries(classIcons).forEach(([cls, icon]) => { const button = document.createElement("button"); button.className = "tag-button"; button.innerHTML = `<img src="${icon}" alt="${cls}" class="class-icon" title="${cls}">`; button.addEventListener("click", () => { button.classList.toggle("selected"); selectedTags.includes(cls) ? selectedTags.splice(selectedTags.indexOf(cls), 1) : selectedTags.push(cls); filterHunts(); }); tagButtonsContainer.appendChild(button); });
Object.entries(typeIcons).forEach(([type, icon]) => { const button = document.createElement("button"); button.className = "tag-button"; button.innerHTML = `<img src="${icon}" alt="${type}" class="class-icon" title="${type}">`; button.addEventListener("click", () => { button.classList.toggle("selected"); selectedTypes.includes(type) ? selectedTypes.splice(selectedTypes.indexOf(type), 1) : selectedTypes.push(type); filterHunts(); }); typeButtonsContainer.appendChild(button); });
function clearFilters() { document.querySelectorAll("#tagButtons .tag-button.selected").forEach(button => { button.classList.remove("selected"); });
document.querySelectorAll("#typeButtons .tag-button.selected").forEach(button => { button.classList.remove("selected"); }); selectedTags = []; selectedTypes = [];
filterHunts(); }
switchClans.addEventListener("click", () => { clearFilters(); clanFilter.classList.remove("hidden"); typeFilter.classList.add("hidden"); switchClans.classList.add("active"); switchTypes.classList.remove("active"); });
switchTypes.addEventListener("click", () => { clearFilters(); clanFilter.classList.add("hidden"); typeFilter.classList.remove("hidden"); switchClans.classList.remove("active"); switchTypes.classList.add("active"); });
searchInput.addEventListener("input", () => { filterHunts(); });
function filterHunts() { const selectedDifficulty = difficultySelect.value; const searchTerm = searchInput.value.toLowerCase(); imageContainer.innerHTML = "";
// Se nenhuma dificuldade for selecionada, não exibe nada if (!selectedDifficulty) { return; }
const huntList = hunts["NW"]; // Assume que a database é sempre "NW" huntList.forEach(hunt => { const hasAllClasses = hunt.classes.includes("Todos"); const hasAllTypes = hunt.huntTypes.includes("Todos");
const matchesTags = hasAllClasses || selectedTags.length === 0 || selectedTags.some(tag => hunt.classes.includes(tag));
const matchesTypes = hasAllTypes || selectedTypes.length === 0 || selectedTypes.some(type => hunt.huntTypes.includes(type));
const matchesDifficulty = hunt.difficulty === selectedDifficulty;
const isNeutro = hunt.huntTipo === "Neutro";
const matchesSearch = hunt.name.toLowerCase().includes(searchTerm) || (hunt.altName && hunt.altName.toLowerCase().includes(searchTerm));
if (matchesTags && matchesTypes && matchesDifficulty && (!isNeutro || (isNeutro && showNeutro)) && matchesSearch) { const imageItem = document.createElement("div"); imageItem.className = "image-item"; imageItem.innerHTML = `
<a href="${hunt.link}" target="_blank"> <img src="${hunt.imageUrl}" alt="${hunt.name}" title="Clique para mais informações"> </a>
Resistência: ${Array.isArray(hunt.local) ? hunt.local.join(", ") : hunt.local}
Dificuldade: ${hunt.difficulty}
Dano: ${hunt.huntTypes.includes("Todos") ? "Todos" : hunt.huntTypes.map(type => `<img src="${typeIcons[type]}" alt="${type}" title="${type}" class="class-icon">`).join(" ")}
Clãs:
`; imageContainer.appendChild(imageItem); } }); }
difficultySelect.addEventListener("change", filterHunts);
// Preenche as dificuldades disponíveis const difficulties = new Set(hunts["NW"].map(hunt => hunt.difficulty)); difficulties.forEach(difficulty => { const option = document.createElement("option"); option.value = difficulty; option.textContent = difficulty; difficultySelect.appendChild(option); });
// Não exibe as hunts inicialmente (só após selecionar uma dificuldade) imageContainer.innerHTML = ""; }); </script>
</body>
</html>