5 805
edições
Sem resumo de edição |
Sem resumo de edição |
||
Linha 1: | Linha 1: | ||
<!DOCTYPE html> | <!DOCTYPE html> | ||
<html lang="pt-BR"> | <html lang="pt-BR"> | ||
<head> | <head> | ||
<meta charset="UTF-8"> | <meta charset="UTF-8"> | ||
<meta name="viewport" content="width=device-width, initial-scale=1.0"> | <meta name="viewport" content="width=device-width, initial-scale=1.0"> | ||
<title>Seleção de | <title>Seleção e Exibição de Imagens</title> | ||
<style> | |||
.d-flex { | .d-flex { | ||
display: flex; | display: flex; | ||
Linha 175: | Linha 176: | ||
} | } | ||
.tag- | .tag-button.disabled { | ||
background-color: #e0e0e0; | background-color: #e0e0e0; | ||
color: #a0a0a0; | color: #a0a0a0; | ||
Linha 184: | Linha 185: | ||
</head> | </head> | ||
<body> | <body> | ||
< | <form id="mapForm"> | ||
< | <div id="mapTypeSelection" class="input-group"> | ||
<select id="mapType" class="maps__select"> | |||
<option value="">Selecione um mapa</option> | |||
<option value="1">Mapa Vermelho</option> | |||
<option value="2">Mapa Verde</option> | |||
<option value="3">Mapa Roxo</option> | |||
</select> | |||
<label class="maps__label" for="mapType">Tipo de Mapa</label> | |||
</div> | |||
<div id="specificOptions" class="hidden input-group"> | |||
<select id="specificOption" class="maps__select"> | |||
<option value="">Selecione uma opção</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 class="maps__label" for="specificOption">Local do X</label> | |||
</div> | |||
<div class="filter-container"> | |||
<input type="checkbox" id="enableFilter"> | |||
<label for="enableFilter" class="filter-label">Ativar filtro</label> | |||
</div> | |||
<div id="filterSection" class="hidden"> | |||
<div id="filterById" class="input-group"> | |||
<label for="filterOption" class="maps__label">Filtrar Por</label> | |||
<select id="filterOption" class="maps__select"> | |||
<option value="">Escolha uma Opção</option> | |||
<option value="number">Filtrar por Número</option> | |||
<option value="tag">Filtrar por Tag</option> | |||
</select> | |||
<input type="text" id="searchIds" placeholder="Digite os números ou tags separados por vírgula" class="mapsCalc__select"> | |||
</div> | |||
<div class="d-flex justify-center align-center flex-column"> | |||
<button type="button" id="filterButton" class="hover-minimize"> | |||
<img src="https://wiki.pokexgames.com/images/8/82/Botao_Filtrar_Mapas_Adv.png" alt="Imagem botão filtrar"> | |||
</button> | |||
</div> | |||
</div> | |||
<div id="imageContainer" class="image-container hidden"> | |||
<!-- As imagens e suas informações serão exibidas aqui --> | |||
</ | </div> | ||
</form> | |||
<script> | <script> | ||
const specificOptions = { | |||
1: { | |||
'Areia': [ | '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: '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' }, | ||
Linha 243: | Linha 249: | ||
{ 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' }, | { 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' }, | ||
] | ] | ||
}, | |||
}; | |||
document.getElementById('enableFilter').addEventListener('change', function () { | |||
const filterSection = document.getElementById('filterSection'); | |||
if (this.checked) { | |||
filterSection.classList.remove('hidden'); | |||
} else { | |||
filterSection.classList.add('hidden'); | |||
} | |||
}); | |||
document.getElementById('searchIds').addEventListener('keypress', function (event) { | |||
if (event.key === 'Enter') { | |||
event.preventDefault(); | |||
if ( | document.getElementById('filterButton').click(); | ||
} | } | ||
} | }); | ||
document.getElementById('mapType').addEventListener('change', function () { | |||
const selectedMapType = this.value; | |||
const specificOptionSelect = document.getElementById('specificOption'); | |||
if (selectedMapType) { | |||
specificOptionSelect.innerHTML = '<option value="">Selecione uma opção</option>'; | |||
const options = Object.keys(specificOptions[selectedMapType]); | |||
options.forEach(option => { | |||
specificOptionSelect.innerHTML += `<option value="${option}">${option}</option>`; | |||
}); | |||
document.getElementById('specificOptions').classList.remove('hidden'); | |||
} else { | |||
document.getElementById('specificOptions').classList.add('hidden'); | |||
} | } | ||
}); | }); | ||
document.getElementById('specificOption').addEventListener('change', function () { | |||
const selectedMapType = document.getElementById('mapType').value; | |||
const selectedOption = this.value; | |||
const imageContainer = document.getElementById('imageContainer'); | |||
if (selectedMapType && selectedOption) { | |||
const images = specificOptions[selectedMapType][selectedOption]; | |||
let imagesHtml = ''; | |||
if (Array.isArray(images)) { | |||
images.forEach(image => { | |||
imagesHtml += ` | |||
<div class="image-item"> | |||
<img src="${image.imageUrl}" alt="${selectedOption}"> | |||
<div class="image-info"> | |||
<b>Número do Mapa</b>: ${image.id} <br> | |||
<b>Local</b>: ${image.local} <br> | |||
<b>Coordenada</b>: ${image.coordinates}<br> | |||
<b>Tag(s)</b>: ${image.tags.join(', ') || 'Nenhuma'} | |||
</div> | |||
</div> | |||
`; | |||
}); | |||
} | |||
imageContainer.innerHTML = imagesHtml; | |||
imageContainer.classList.remove('hidden'); | |||
} else { | |||
imageContainer.classList.add('hidden'); | |||
} | |||
}); | |||
document.getElementById('filterButton').addEventListener('click', function () { | |||
const searchIds = document.getElementById('searchIds').value.split(',').map(id => id.trim().toLowerCase()); | |||
const filterOption = document.getElementById('filterOption').value; | |||
if ( | const selectedMapType = document.getElementById('mapType').value; | ||
const selectedSpecificOption = document.getElementById('specificOption').value; | |||
const imageContainer = document.getElementById('imageContainer'); | |||
let imagesHtml = ''; | |||
let allImages = []; | |||
if (filterOption === 'number') { | |||
if (searchIds.length > 0) { | |||
Object.keys(specificOptions).forEach(mapType => { | |||
const mapOptions = specificOptions[mapType]; | |||
Object.keys(mapOptions).forEach(option => { | |||
const images = mapOptions[option].filter(image => searchIds.includes(image.id)); | |||
allImages = allImages.concat(images); | |||
}); | |||
}); | |||
} | } | ||
} | |||
if (allImages.length > 0) { | |||
allImages.sort((a, b) => a.local.localeCompare(b.local)); | |||
allImages.forEach(image => { | |||
imagesHtml += ` | |||
<div class="image-item"> | |||
<img src="${image.imageUrl}" alt="Imagem ID ${image.id}"> | |||
<div class="image-info"> | |||
<b>Número do Mapa</b>: ${image.id} <br> | |||
<b>Local</b>: ${image.local} <br> | |||
<b>Coordenada</b>: ${image.coordinates}<br> | |||
<b>Tag(s)</b>: ${image.tags.join(', ') || 'Nenhuma'} | |||
</div> | |||
</div> | |||
`; | |||
}); | |||
img | |||
< | |||
< | |||
< | |||
< | |||
} | |||
} else { | } else { | ||
imagesHtml = 'Nenhuma imagem encontrada com os critérios fornecidos.'; | |||
} | } | ||
imageContainer.innerHTML = imagesHtml; | |||
imageContainer.classList.toggle('hidden', allImages.length === 0); | |||
}); | |||
const tagButtons = document.querySelectorAll('.tag-button'); | |||
const | const selectedTagsDiv = document.getElementById('selectedTags'); | ||
// Função para atualizar as tags selecionadas | |||
function updateSelectedTags() { | |||
// Adiciona as novas tags selecionadas | |||
tagButtons.forEach(button => { | |||
if (button.classList.contains('selected')) { | |||
const tagItem = document.createElement('span'); | |||
tagItem.className = 'tag-item'; | |||
tagItem.textContent = button.dataset.value; | |||
selectedTagsDiv.appendChild(tagItem); | |||
} | |||
}); | }); | ||
} | } | ||
// Adiciona o listener para detectar cliques nos botões | |||
tagButtons.forEach(button => { | |||
button.addEventListener('click', function() { | |||
// Alterna a classe 'selected' para selecionar/deselecionar a tag | |||
button.classList.toggle('selected'); | |||
updateSelectedTags(); | |||
}); | |||
}); | |||
</script> | |||
</body> | </body> | ||
</html> | </html> |