Widget:Test3: mudanças entre as edições

De PokeXGames
Ir para navegação Ir para pesquisar
Sem resumo de edição
Etiqueta: Revertido
Sem resumo de edição
Etiquetas: Reversão manual Revertido
Linha 4: Linha 4:
     <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>Filtro de Mapas</title>
     <title>Seleção de Mapas</title>
     <style>
     <style>
         .hidden { display: none; }
         .hidden {
         .image-item { margin: 10px 0; }
            display: none;
         .image-info { margin-top: 5px; }
        }
 
        .input-group {
            margin: 20px 0;
        }
 
        .maps__select,
        .input-group input[type="text"],
        .input-group button {
            width: 100%;
            padding: 10px;
            margin-top: 5px;
            font-size: 16px;
            border-radius: 5px;
            border: 1px solid #ccc;
        }
 
        .image-container {
            display: flex;
            flex-wrap: wrap;
            gap: 10px;
            margin-top: 20px;
        }
 
         .image-item {
            flex: 1 0 30%;
            text-align: center;
        }
 
        .image-item img {
            max-width: 100%;
            height: auto;
        }
 
         .image-info {
            margin-top: 5px;
        }
 
        .tag-button {
            display: inline-block;
            background-color: #f1f1f1;
            color: #333;
            padding: 10px 20px;
            margin: 5px;
            border: 1px solid #ccc;
            border-radius: 20px;
            cursor: pointer;
            font-size: 16px;
        }
 
        .tag-button.selected {
            background-color: #15864e;
            color: #fff;
        }
 
        .filter-container {
            display: flex;
            align-items: center;
            margin-bottom: 20px;
        }
 
        .filter-container input[type="checkbox"] {
            margin-right: 10px;
        }
 
        .filter-container label {
            font-size: 16px;
        }
 
        .selected-tags {
            margin: 20px;
            padding: 10px;
            background-color: #f9f9f9;
            border: 1px solid #ccc;
            border-radius: 5px;
        }
 
        .tag-item {
            display: inline-block;
            background-color: #007BFF;
            color: white;
            padding: 5px 10px;
            margin-right: 5px;
            border-radius: 3px;
            font-size: 14px;
        }
     </style>
     </style>
</head>
</head>
<body>
<body>
     <div>
     <div class="input-group">
         <label for="mapType">Tipo de Mapa:</label>
         <label for="mapType">Tipo de Mapa</label>
         <select id="mapType">
         <select id="mapType" class="maps__select">
             <option value="">Selecione o Tipo de Mapa</option>
             <option value="">Selecione um mapa</option>
             <option value="1">Mapa Vermelho</option>
             <option value="1">Mapa Vermelho</option>
             <option value="2">Mapa Verde</option>
             <option value="2">Mapa Verde</option>
Linha 21: Linha 106:
         </select>
         </select>
     </div>
     </div>
     <div>
 
         <label for="specificOption">Local do X:</label>
     <div class="input-group">
         <select id="specificOption">
         <label for="specificOption">Local do X</label>
             <!-- Opções serão preenchidas dinamicamente -->
         <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>
         </select>
     </div>
     </div>
     <div>
 
     <div class="filter-container">
         <input type="checkbox" id="enableFilter">
         <input type="checkbox" id="enableFilter">
         <label for="enableFilter">Ativar Filtro</label>
         <label for="enableFilter">Ativar filtro</label>
     </div>
     </div>
     <div id="filterSection" class="hidden">
 
         <label for="filterOption">Filtrar por:</label>
     <div id="filterOptions" class="input-group hidden">
         <select id="filterOption">
         <label for="filterType">Filtrar Por</label>
             <option value="number">Número</option>
         <select id="filterType" class="maps__select">
             <option value="tag">Tag</option>
             <option value="">Escolha uma Opção</option>
             <option value="number">Filtrar por Número</option>
         </select>
         </select>
         <input type="text" id="searchIds" placeholder="Digite os números separados por vírgula">
         <input type="text" id="searchIds" placeholder="Digite os números ou tags separados por vírgula">
         <button id="filterButton">Filtrar</button>
         <button id="filterButton" class="maps__select">Filtrar</button>
    </div>
 
    <div id="tagButtons" class="hidden">
        <!-- Botões de tag serão exibidos aqui -->
    </div>
 
    <div id="imageContainer" class="image-container">
        <!-- As imagens e suas informações serão exibidas aqui -->
     </div>
     </div>
    <div id="imageContainer"></div>


     <script>
     <script>
         const specificOptions = {
         const specificOptions = {
             1: {
             1: { // Mapa Vermelho
                 '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' },
                     { 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: '102', local: 'Desert', coordinates: '4500, 5300, 5', tags: ['Areia'], imageUrl: 'https://wiki.pokexgames.com/images/5/55/Mapa_Vermelho_ADV_-_4500%2C_5300%2C_5.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', 'Pedra', 'Árvore'], imageUrl: 'https://wiki.pokexgames.com/images/a/ab/Mapas_de_ADV_VERMELHO_-_4166%2C_3302%2C_7.webp' },
                ],
                'Gelo': [
                    { id: '201', local: 'Frost Peak', coordinates: '4600, 3000, 7', tags: ['Gelo', 'Árvore', 'Pedra'], imageUrl: 'https://wiki.pokexgames.com/images/3/3e/Mapas_de_ADV_VERDE_-_4600%2C_3000%2C_7.webp' },
                    { id: '202', local: 'Ice Fields', coordinates: '4700, 3100, 7', tags: ['Gelo', 'Pedra', 'Árvore'], imageUrl: 'https://wiki.pokexgames.com/images/1/1e/Mapas_de_ADV_VERDE_-_4700%2C_3100%2C_7.webp' },
                 ],
                 ],
                 'Grama': [
                 'Grama': [
                     { id: '301', local: 'Green Meadow', coordinates: '5000, 3400, 7', tags: ['Grama', 'Árvore', 'Pedra'], imageUrl: 'https://wiki.pokexgames.com/images/7/76/Mapas_de_ADV_VERDE_-_5000%2C_3400%2C_7.webp' },
                     { id: '103', local: 'Grassland', coordinates: '5600, 4700, 8', tags: ['Grama'], imageUrl: 'https://wiki.pokexgames.com/images/6/67/Mapa_Vermelho_ADV_-_5600%2C_4700%2C_8.webp' }
                    { id: '302', local: 'Forest Glade', coordinates: '5100, 3500, 7', tags: ['Grama', 'Árvore', 'Água'], imageUrl: 'https://wiki.pokexgames.com/images/8/89/Mapas_de_ADV_VERDE_-_5100%2C_3500%2C_7.webp' },
                 ]
                 ],
            },
            2: {
                // Dados para Mapas Verdes
            },
            3: {
                // Dados para Mapas Roxos
             },
             },
            2: { // Mapa Verde
                'Gelo': [
                    { id: '201', local: 'Snowy Peak', coordinates: '2050, 4850, 10', tags: ['Gelo'], imageUrl: 'https://wiki.pokexgames.com/images/5/56/Mapa_Verde_ADV_-_2050%2C_4850%2C_10.webp' }
                ]
            }
         };
         };


         document.getElementById('mapType').addEventListener('change', updateSpecificOptions);
         const imageContainer = document.getElementById('imageContainer');
         document.getElementById('filterOption').addEventListener('change', toggleSearchInput);
        const tagButtons = document.getElementById('tagButtons');
         document.getElementById('enableFilter').addEventListener('change', toggleFilterSection);
         const filterOptions = document.getElementById('filterOptions');
         document.getElementById('filterButton').addEventListener('click', filterImages);
        const mapTypeSelect = document.getElementById('mapType');
         const specificOptionSelect = document.getElementById('specificOption');
        const enableFilter = document.getElementById('enableFilter');
         const searchIdsInput = document.getElementById('searchIds');
        const filterButton = document.getElementById('filterButton');


         function updateSpecificOptions() {
         function updateTags() {
             const mapType = document.getElementById('mapType').value;
             const selectedMapType = mapTypeSelect.value;
             const specificOption = document.getElementById('specificOption');
             const selectedOption = specificOptionSelect.value;


             specificOption.innerHTML = '<option value="">Selecione uma opção</option>';
             let tags = [];
            if (selectedMapType && selectedOption) {
                const options = specificOptions[selectedMapType];
                if (options && options[selectedOption]) {
                    options[selectedOption].forEach(item => {
                        tags = [...new Set([...tags, ...item.tags])];
                    });
                }
            }


             if (mapType) {
             tagButtons.innerHTML = '';
                 const options = Object.keys(specificOptions[mapType] || {});
            tags.forEach(tag => {
                 options.forEach(option => {
                 const button = document.createElement('button');
                     specificOption.innerHTML += `<option value="${option}">${option}</option>`;
                button.textContent = tag;
                button.classList.add('tag-button');
                 button.addEventListener('click', () => {
                     button.classList.toggle('selected');
                    filterImages();
                 });
                 });
             }
                tagButtons.appendChild(button);
             });
 
            tagButtons.classList.toggle('hidden', tags.length === 0);
         }
         }


         function toggleSearchInput() {
         function filterImages() {
             const filterOption = document.getElementById('filterOption').value;
             const selectedTags = Array.from(document.querySelectorAll('.tag-button.selected')).map(btn => btn.textContent);
             const searchInput = document.getElementById('searchIds');
            const selectedMapType = mapTypeSelect.value;
            searchInput.placeholder = filterOption === 'number' ? 'Digite os números separados por vírgula' : 'Digite as tags separadas por vírgula';
            const selectedOption = specificOptionSelect.value;
        }
             const filterById = searchIdsInput.value.trim();
 
            imageContainer.innerHTML = '';
            if (selectedMapType && selectedOption) {
                const options = specificOptions[selectedMapType];
                if (options && options[selectedOption]) {
                    const filteredItems = options[selectedOption].filter(item => {
                        const matchesTag = selectedTags.length === 0 || selectedTags.some(tag => item.tags.includes(tag));
                        const matchesId = filterById === '' || filterById.split(',').map(id => id.trim()).includes(item.id);
                        return matchesTag && matchesId;
                    });
 
                    filteredItems.forEach(item => {
                        const itemDiv = document.createElement('div');
                        itemDiv.classList.add('image-item');


        function toggleFilterSection() {
                        const img = document.createElement('img');
            const filterSection = document.getElementById('filterSection');
                        img.src = item.imageUrl;
            filterSection.classList.toggle('hidden', !document.getElementById('enableFilter').checked);
                        img.alt = `Mapa ${item.id}`;
        }
                        itemDiv.appendChild(img);


        function filterImages() {
                        const infoDiv = document.createElement('div');
            const searchIds = document.getElementById('searchIds').value.split(',').map(id => id.trim().toLowerCase());
                        infoDiv.classList.add('image-info');
            const filterOption = document.getElementById('filterOption').value;
                        infoDiv.innerHTML = `
            const selectedMapType = document.getElementById('mapType').value;
                            <strong>Número do Mapa:</strong> ${item.id}<br>
            const selectedSpecificOption = document.getElementById('specificOption').value;
                            <strong>Local:</strong> ${item.local}<br>
            const imageContainer = document.getElementById('imageContainer');
                            <strong>Coordenada:</strong> ${item.coordinates}<br>
            let imagesHtml = '';
                            <strong>Tag(s):</strong> ${item.tags.join(', ')}
            let allImages = [];
                        `;
                        itemDiv.appendChild(infoDiv);


            if (filterOption === 'number') {
                         imageContainer.appendChild(itemDiv);
                if (searchIds.length > 0) {
                    Object.keys(specificOptions).forEach(mapType => {
                         if (selectedMapType === '' || selectedMapType == 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 (filteredItems.length === 0) {
                        imageContainer.innerHTML = '<p>Nenhuma imagem encontrada para os critérios selecionados.</p>';
                    }
                 }
                 }
            } else if (filterOption === 'tag' && selectedSpecificOption) {
                Object.keys(specificOptions).forEach(mapType => {
                    if (selectedMapType === '' || selectedMapType == mapType) {
                        const mapOptions = specificOptions[mapType];
                        Object.keys(mapOptions).forEach(option => {
                            const images = mapOptions[option].filter(image => image.tags.includes(selectedSpecificOption));
                            allImages = allImages.concat(images);
                        });
                    }
                });
             }
             }
        }
        mapTypeSelect.addEventListener('change', () => {
            updateTags();
            filterImages();
        });


            if (allImages.length > 0) {
        specificOptionSelect.addEventListener('change', () => {
                allImages.sort((a, b) => a.local.localeCompare(b.local));
            updateTags();
            filterImages();
        });


                allImages.forEach(image => {
        filterButton.addEventListener('click', () => {
                    imagesHtml += `
            filterImages();
                        <div class="image-item">
        });
                            <img src="${image.imageUrl}" alt="Imagem ID ${image.id}">
 
                            <div class="image-info">
        searchIdsInput.addEventListener('input', () => {
                                <b>Número do Mapa</b>: ${image.id} <br>
            filterImages();
                                <b>Local</b>: ${image.local} <br>
        });
                                <b>Coordenada</b>: ${image.coordinates}<br>
 
                                <b>Tag(s)</b>: ${image.tags.join(', ') || 'Nenhuma'}
        enableFilter.addEventListener('change', () => {
                            </div>
            filterOptions.classList.toggle('hidden', !enableFilter.checked);
                        </div>
             if (!enableFilter.checked) {
                    `;
                 filterImages();
                });
             } else {
                 imagesHtml = 'Nenhuma imagem encontrada com os critérios fornecidos.';
             }
             }
        });


             imageContainer.innerHTML = imagesHtml;
        function initializePage() {
             imageContainer.classList.toggle('hidden', allImages.length === 0);
             specificOptionSelect.classList.remove('hidden');
             filterOptions.classList.add('hidden');
            tagButtons.classList.add('hidden');
            updateTags();
         }
         }
        initializePage();
     </script>
     </script>
</body>
</body>
</html>
</html>

Edição das 23h33min 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>Seleção de Mapas</title>
   <style>
       .hidden {
           display: none;
       }
       .input-group {
           margin: 20px 0;
       }
       .maps__select,
       .input-group input[type="text"],
       .input-group button {
           width: 100%;
           padding: 10px;
           margin-top: 5px;
           font-size: 16px;
           border-radius: 5px;
           border: 1px solid #ccc;
       }
       .image-container {
           display: flex;
           flex-wrap: wrap;
           gap: 10px;
           margin-top: 20px;
       }
       .image-item {
           flex: 1 0 30%;
           text-align: center;
       }
       .image-item img {
           max-width: 100%;
           height: auto;
       }
       .image-info {
           margin-top: 5px;
       }
       .tag-button {
           display: inline-block;
           background-color: #f1f1f1;
           color: #333;
           padding: 10px 20px;
           margin: 5px;
           border: 1px solid #ccc;
           border-radius: 20px;
           cursor: pointer;
           font-size: 16px;
       }
       .tag-button.selected {
           background-color: #15864e;
           color: #fff;
       }
       .filter-container {
           display: flex;
           align-items: center;
           margin-bottom: 20px;
       }
       .filter-container input[type="checkbox"] {
           margin-right: 10px;
       }
       .filter-container label {
           font-size: 16px;
       }
       .selected-tags {
           margin: 20px;
           padding: 10px;
           background-color: #f9f9f9;
           border: 1px solid #ccc;
           border-radius: 5px;
       }
       .tag-item {
           display: inline-block;
           background-color: #007BFF;
           color: white;
           padding: 5px 10px;
           margin-right: 5px;
           border-radius: 3px;
           font-size: 14px;
       }
   </style>

</head> <body>

       <label for="mapType">Tipo de Mapa</label>
       <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 for="specificOption">Local do X</label>
       <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>
       <input type="checkbox" id="enableFilter">
       <label for="enableFilter">Ativar filtro</label>
   <script>
       const specificOptions = {
           1: { // Mapa Vermelho
               '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: 'Desert', coordinates: '4500, 5300, 5', tags: ['Areia'], imageUrl: 'https://wiki.pokexgames.com/images/5/55/Mapa_Vermelho_ADV_-_4500%2C_5300%2C_5.webp' }
               ],
               'Grama': [
                   { id: '103', local: 'Grassland', coordinates: '5600, 4700, 8', tags: ['Grama'], imageUrl: 'https://wiki.pokexgames.com/images/6/67/Mapa_Vermelho_ADV_-_5600%2C_4700%2C_8.webp' }
               ]
           },
           2: { // Mapa Verde
               'Gelo': [
                   { id: '201', local: 'Snowy Peak', coordinates: '2050, 4850, 10', tags: ['Gelo'], imageUrl: 'https://wiki.pokexgames.com/images/5/56/Mapa_Verde_ADV_-_2050%2C_4850%2C_10.webp' }
               ]
           }
       };
       const imageContainer = document.getElementById('imageContainer');
       const tagButtons = document.getElementById('tagButtons');
       const filterOptions = document.getElementById('filterOptions');
       const mapTypeSelect = document.getElementById('mapType');
       const specificOptionSelect = document.getElementById('specificOption');
       const enableFilter = document.getElementById('enableFilter');
       const searchIdsInput = document.getElementById('searchIds');
       const filterButton = document.getElementById('filterButton');
       function updateTags() {
           const selectedMapType = mapTypeSelect.value;
           const selectedOption = specificOptionSelect.value;
           let tags = [];
           if (selectedMapType && selectedOption) {
               const options = specificOptions[selectedMapType];
               if (options && options[selectedOption]) {
                   options[selectedOption].forEach(item => {
                       tags = [...new Set([...tags, ...item.tags])];
                   });
               }
           }
           tagButtons.innerHTML = ;
           tags.forEach(tag => {
               const button = document.createElement('button');
               button.textContent = tag;
               button.classList.add('tag-button');
               button.addEventListener('click', () => {
                   button.classList.toggle('selected');
                   filterImages();
               });
               tagButtons.appendChild(button);
           });
           tagButtons.classList.toggle('hidden', tags.length === 0);
       }
       function filterImages() {
           const selectedTags = Array.from(document.querySelectorAll('.tag-button.selected')).map(btn => btn.textContent);
           const selectedMapType = mapTypeSelect.value;
           const selectedOption = specificOptionSelect.value;
           const filterById = searchIdsInput.value.trim();
           imageContainer.innerHTML = ;
           if (selectedMapType && selectedOption) {
               const options = specificOptions[selectedMapType];
               if (options && options[selectedOption]) {
                   const filteredItems = options[selectedOption].filter(item => {
                       const matchesTag = selectedTags.length === 0 || selectedTags.some(tag => item.tags.includes(tag));
                       const matchesId = filterById ===  || filterById.split(',').map(id => id.trim()).includes(item.id);
                       return matchesTag && matchesId;
                   });
                   filteredItems.forEach(item => {
                       const itemDiv = document.createElement('div');
                       itemDiv.classList.add('image-item');
                       const img = document.createElement('img');
                       img.src = item.imageUrl;
                       img.alt = `Mapa ${item.id}`;
                       itemDiv.appendChild(img);
                       const infoDiv = document.createElement('div');
                       infoDiv.classList.add('image-info');
                       infoDiv.innerHTML = `
                           Número do Mapa: ${item.id}
Local: ${item.local}
Coordenada: ${item.coordinates}
Tag(s): ${item.tags.join(', ')} `; itemDiv.appendChild(infoDiv);
                       imageContainer.appendChild(itemDiv);
                   });
                   if (filteredItems.length === 0) {

imageContainer.innerHTML = '

Nenhuma imagem encontrada para os critérios selecionados.

';

                   }
               }
           }
       }
       mapTypeSelect.addEventListener('change', () => {
           updateTags();
           filterImages();
       });
       specificOptionSelect.addEventListener('change', () => {
           updateTags();
           filterImages();
       });
       filterButton.addEventListener('click', () => {
           filterImages();
       });
       searchIdsInput.addEventListener('input', () => {
           filterImages();
       });
       enableFilter.addEventListener('change', () => {
           filterOptions.classList.toggle('hidden', !enableFilter.checked);
           if (!enableFilter.checked) {
               filterImages();
           }
       });
       function initializePage() {
           specificOptionSelect.classList.remove('hidden');
           filterOptions.classList.add('hidden');
           tagButtons.classList.add('hidden');
           updateTags();
       }
       initializePage();
   </script>

</body> </html>