Widget:Test3: mudanças entre as edições
Ir para navegação
Ir para pesquisar
Sem resumo de edição |
Sem resumo de edição |
||
Linha 43: | Linha 43: | ||
</select> | </select> | ||
</label> | </label> | ||
<div id="tagButtons"> | <div id="tagButtons" class="hidden"> | ||
<!-- Tags serão adicionadas dinamicamente aqui --> | <!-- Tags serão adicionadas dinamicamente aqui --> | ||
</div> | </div> | ||
Linha 107: | Linha 107: | ||
} | } | ||
}); | }); | ||
document.getElementById('tagButtons').classList.remove('hidden'); | |||
} | } | ||
Linha 174: | Linha 176: | ||
document.getElementById('mapType').addEventListener('change', function () { | document.getElementById('mapType').addEventListener('change', function () { | ||
document.getElementById('specificOptionsContainer').classList.remove('hidden'); | const mapType = this.value; | ||
const specificOptionContainer = document.getElementById('specificOptionsContainer'); | |||
if (mapType) { | |||
specificOptionContainer.classList.remove('hidden'); | |||
} else { | |||
specificOptionContainer.classList.add('hidden'); | |||
document.getElementById('specificOption').value = ''; | |||
document.getElementById('tagButtons').innerHTML = ''; | |||
document.getElementById('tagButtons').classList.add('hidden'); | |||
} | |||
updateTagButtons(); | updateTagButtons(); | ||
filterImages(); | filterImages(); | ||
Linha 186: | Linha 197: | ||
document.getElementById('filterButton').addEventListener('click', filterImages); | document.getElementById('filterButton').addEventListener('click', filterImages); | ||
function populateTagButtons() { | function populateTagButtons() { | ||
const tags = Object.keys(tagMap); | const tags = Object.keys(tagMap); | ||
Linha 199: | Linha 209: | ||
container.appendChild(button); | container.appendChild(button); | ||
}); | }); | ||
container.classList.remove('hidden'); | |||
} | } | ||
Linha 206: | Linha 218: | ||
// Initialize the page | // Initialize the page | ||
document.getElementById('specificOptionsContainer').classList. | document.getElementById('specificOptionsContainer').classList.add('hidden'); | ||
document.getElementById('filterButton').classList. | document.getElementById('filterButton').classList.add('hidden'); | ||
</script> | </script> | ||
</body> | </body> | ||
</html> | </html> |
Edição das 22h46min de 3 de setembro de 2024
<!DOCTYPE html> <html lang="pt-BR"> <head>
<meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Filtro de Mapas</title> <style> .hidden { display: none; } .disabled { opacity: 0.5; pointer-events: none; } .selected { background-color: #ccc; } .tag-button { cursor: pointer; padding: 5px; border: 1px solid #ccc; margin: 2px; display: inline-block; } .map-image { width: 100px; height: 100px; } .image-item { margin-bottom: 10px; } .image-info { margin-top: 5px; } </style>
</head> <body>
<label> <input type="checkbox" id="filterActive"> Ativar Filtro </label>
<label> Tipo de Mapa: <select id="mapType"> <option value="">Selecione</option> <option value="1">Mapa Vermelho</option> </select> </label>
<label> Local do X: <select id="specificOption"> <option value="">Selecione</option> <option value="Areia">Areia</option> <option value="Gelo">Gelo</option> <option value="Grama">Grama</option> <option value="Pedra">Pedra</option> <option value="Subaquático">Subaquático</option> <option value="Terra">Terra</option> <option value="Pisos">Pisos</option> </select> </label>
<button id="filterButton" class="hidden">Filtrar</button>
<script> const specificOptions = { 1: { 'Areia': [ { id: '101', local: 'Green Island', coordinates: '3780, 3326, 7', tags: ['Areia', 'Água', 'Grama', 'Árvore'], imageUrl: 'https://wiki.pokexgames.com/images/4/4c/Mapas_de_ADV_VERMELHO_-_3780%2C_3326%2C_7.webp' }, { id: '102', local: 'Wildwind Island', coordinates: '3969, 3300, 7', tags: ['Areia', 'Terra', 'Árvore'], imageUrl: 'https://wiki.pokexgames.com/images/5/58/Mapas_de_ADV_VERMELHO_-_3969%2C_3300%2C_7.webp' }, { id: '103', local: 'Wildwind Island', coordinates: '4002, 3320, 7', tags: ['Areia', 'Árvore', 'Pedra'], imageUrl: 'https://wiki.pokexgames.com/images/0/07/Mapas_de_ADV_VERMELHO_-_4002%2C_3320%2C_7.webp' }, { id: '104', local: 'Saffron', coordinates: '4009, 3601, 7', tags: ['Areia', 'Árvore', 'Terra', 'Água'], imageUrl: 'https://wiki.pokexgames.com/images/f/f5/Mapas_de_ADV_VERMELHO_-_4009%2C_3601%2C_7.webp' }, { id: '105', local: 'Hurricane Island', coordinates: '4166, 3302, 7', tags: ['Areia', 'Árvore', 'Água'], imageUrl: 'https://wiki.pokexgames.com/images/0/0d/Mapas_de_ADV_VERMELHO_-_4166%2C_3302%2C_7.webp' } ], 'Gelo': [ { id: '201', local: 'Frozen Tundra', coordinates: '5600, 5200, 7', tags: ['Gelo'], imageUrl: 'https://wiki.pokexgames.com/images/6/6f/Mapas_de_ADV_VERDE_-_5600%2C_5200%2C_7.webp' } ], 'Grama': [ { id: '301', local: 'Grassland Fields', coordinates: '3300, 2200, 7', tags: ['Grama'], imageUrl: 'https://wiki.pokexgames.com/images/7/70/Mapas_de_ADV_ROXO_-_3300%2C_2200%2C_7.webp' } ], 'Pedra': [ { id: '401', local: 'Rocky Ridge', coordinates: '4800, 4600, 7', tags: ['Pedra'], imageUrl: 'https://wiki.pokexgames.com/images/8/80/Mapas_de_ADV_VERMELHO_-_4800%2C_4600%2C_7.webp' } ], 'Subaquático': [ { id: '501', local: 'Underwater Cave', coordinates: '5700, 5200, 7', tags: ['Água'], imageUrl: 'https://wiki.pokexgames.com/images/9/90/Mapas_de_ADV_VERMELHO_-_5700%2C_5200%2C_7.webp' } ], 'Terra': [ { id: '601', local: 'Mountain Pass', coordinates: '6100, 5300, 7', tags: ['Terra'], imageUrl: 'https://wiki.pokexgames.com/images/a/a0/Mapas_de_ADV_VERMELHO_-_6100%2C_5300%2C_7.webp' } ], 'Pisos': [ { id: '701', local: 'Concrete Jungle', coordinates: '6000, 5500, 7', tags: ['Piso'], imageUrl: 'https://wiki.pokexgames.com/images/b/b0/Mapas_de_ADV_VERMELHO_-_6000%2C_5500%2C_7.webp' } ] } };
const tagMap = { 'Areia': 'Areia', 'Gelo': 'Gelo', 'Grama': 'Grama', 'Pedra': 'Pedra', 'Subaquático': 'Água', 'Terra': 'Terra', 'Pisos': 'Piso' };
function updateTagButtons() { const specificOption = document.getElementById('specificOption').value; const tagButtons = document.querySelectorAll('.tag-button'); tagButtons.forEach(button => { const tagValue = button.getAttribute('data-value'); if (tagMap[specificOption] === tagValue) { button.classList.add('selected'); button.classList.add('disabled'); button.setAttribute('disabled', 'true'); } else { button.classList.remove('disabled'); button.removeAttribute('disabled'); } });
document.getElementById('tagButtons').classList.remove('hidden'); }
function toggleTagButton(e) { if (e.target.classList.contains('tag-button')) { if (e.target.classList.contains('disabled')) return; e.target.classList.toggle('selected'); filterImages(); } }
function filterImages() { const mapType = document.getElementById('mapType').value; const specificOption = document.getElementById('specificOption').value; const selectedTags = Array.from(document.querySelectorAll('.tag-button.selected')).map(button => button.getAttribute('data-value'));
let filteredMaps = [];
if (mapType && specificOption) { filteredMaps = specificOptions[mapType][specificOption] || []; }
if (selectedTags.length > 0) { filteredMaps = filteredMaps.filter(map => { return selectedTags.some(tag => map.tags.includes(tag)); }); }
displayMaps(filteredMaps); }
function displayMaps(maps) { const container = document.getElementById('imageContainer'); container.innerHTML = ; // Clear previous results
maps.forEach(map => { const imageItem = document.createElement('div'); imageItem.className = 'image-item';
const image = document.createElement('img'); image.src = map.imageUrl; image.alt = map.local; image.className = 'map-image';
const info = document.createElement('div'); info.className = 'image-info'; info.innerHTML = ` Número do Mapa: ${map.id}
Local: ${map.local}
Coordenada: ${map.coordinates}
Tag(s): ${map.tags.join(', ') || 'Nenhuma'} `;
imageItem.appendChild(image); imageItem.appendChild(info);
container.appendChild(imageItem); });
container.classList.remove('hidden'); }
document.getElementById('filterActive').addEventListener('change', function () { const isActive = this.checked; document.getElementById('filterButton').classList.toggle('hidden', !isActive); });
document.getElementById('mapType').addEventListener('change', function () { const mapType = this.value; const specificOptionContainer = document.getElementById('specificOptionsContainer'); if (mapType) { specificOptionContainer.classList.remove('hidden'); } else { specificOptionContainer.classList.add('hidden'); document.getElementById('specificOption').value = ; document.getElementById('tagButtons').innerHTML = ; document.getElementById('tagButtons').classList.add('hidden'); } updateTagButtons(); filterImages(); });
document.getElementById('specificOption').addEventListener('change', function () { updateTagButtons(); filterImages(); });
document.getElementById('filterButton').addEventListener('click', filterImages);
function populateTagButtons() { const tags = Object.keys(tagMap); const container = document.getElementById('tagButtons'); container.innerHTML = ; // Clear existing buttons
tags.forEach(tag => { const button = document.createElement('div'); button.className = 'tag-button'; button.setAttribute('data-value', tag); button.textContent = tag; container.appendChild(button); });
container.classList.remove('hidden'); }
populateTagButtons();
document.getElementById('tagButtons').addEventListener('click', toggleTagButton);
// Initialize the page document.getElementById('specificOptionsContainer').classList.add('hidden'); document.getElementById('filterButton').classList.add('hidden'); </script>
</body> </html>