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
Etiqueta: Reversão manual
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>Seleção de Mapas</title>
     <title>Filtro de Mapas</title>
     <style>
     <style>
         .hidden {
         .hidden { display: none; }
            display: none;
         .image-item { margin: 10px 0; }
        }
         .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 class="input-group">
     <div>
         <label for="mapType">Tipo de Mapa</label>
         <label for="mapType">Tipo de Mapa:</label>
         <select id="mapType" class="maps__select">
         <select id="mapType">
             <option value="">Selecione um mapa</option>
             <option value="">Selecione o Tipo de 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 106: Linha 21:
         </select>
         </select>
     </div>
     </div>
 
     <div>
     <div class="input-group">
         <label for="specificOption">Local do X:</label>
         <label for="specificOption">Local do X</label>
         <select id="specificOption">
         <select id="specificOption" class="maps__select">
             <!-- Opções serão preenchidas dinamicamente -->
             <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">
     <div id="filterOptions" class="input-group hidden">
         <label for="filterOption">Filtrar por:</label>
         <label for="filterType">Filtrar Por</label>
         <select id="filterOption">
         <select id="filterType" class="maps__select">
             <option value="number">Número</option>
             <option value="">Escolha uma Opção</option>
             <option value="tag">Tag</option>
             <option value="number">Filtrar por Número</option>
         </select>
         </select>
         <input type="text" id="searchIds" placeholder="Digite os números ou tags separados por vírgula">
         <input type="text" id="searchIds" placeholder="Digite os números separados por vírgula">
         <button id="filterButton" class="maps__select">Filtrar</button>
         <button id="filterButton">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: { // Mapa Vermelho
             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' },
                     { 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: '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', '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: '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: '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: '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' }
                ]
            }
         };
         };


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


        function updateTags() {
             specificOption.innerHTML = '<option value="">Selecione uma opção</option>';
             const selectedMapType = mapTypeSelect.value;
            const selectedOption = specificOptionSelect.value;


            let tags = [];
             if (mapType) {
             if (selectedMapType && selectedOption) {
                 const options = Object.keys(specificOptions[mapType] || {});
                 const options = specificOptions[selectedMapType];
                 options.forEach(option => {
                 if (options && options[selectedOption]) {
                    specificOption.innerHTML += `<option value="${option}">${option}</option>`;
                    options[selectedOption].forEach(item => {
                });
                        tags = [...new Set([...tags, ...item.tags])];
                    });
                }
             }
             }
        }


            tagButtons.innerHTML = '';
        function toggleSearchInput() {
            tags.forEach(tag => {
            const filterOption = document.getElementById('filterOption').value;
                const button = document.createElement('button');
            const searchInput = document.getElementById('searchIds');
                button.textContent = tag;
            searchInput.placeholder = filterOption === 'number' ? 'Digite os números separados por vírgula' : 'Digite as tags separadas por vírgula';
                button.classList.add('tag-button');
        }
                button.addEventListener('click', () => {
                    button.classList.toggle('selected');
                    filterImages();
                });
                tagButtons.appendChild(button);
            });


             tagButtons.classList.toggle('hidden', tags.length === 0);
        function toggleFilterSection() {
            const filterSection = document.getElementById('filterSection');
             filterSection.classList.toggle('hidden', !document.getElementById('enableFilter').checked);
         }
         }


         function filterImages() {
         function filterImages() {
             const selectedTags = Array.from(document.querySelectorAll('.tag-button.selected')).map(btn => btn.textContent);
             const searchIds = document.getElementById('searchIds').value.split(',').map(id => id.trim().toLowerCase());
             const selectedMapType = mapTypeSelect.value;
             const filterOption = document.getElementById('filterOption').value;
             const selectedOption = specificOptionSelect.value;
             const selectedMapType = document.getElementById('mapType').value;
             const filterById = searchIdsInput.value.trim();
             const selectedSpecificOption = document.getElementById('specificOption').value;
            const imageContainer = document.getElementById('imageContainer');
            let imagesHtml = '';
            let allImages = [];


             imageContainer.innerHTML = '';
             if (filterOption === 'number') {
            if (selectedMapType && selectedOption) {
                 if (searchIds.length > 0) {
                const options = specificOptions[selectedMapType];
                     Object.keys(specificOptions).forEach(mapType => {
                 if (options && options[selectedOption]) {
                         if (selectedMapType === '' || selectedMapType == mapType) {
                     const filteredItems = options[selectedOption].filter(item => {
                            const mapOptions = specificOptions[mapType];
                         const matchesTag = selectedTags.length === 0 || selectedTags.some(tag => item.tags.includes(tag));
                            Object.keys(mapOptions).forEach(option => {
                        const matchesId = filterById === '' || filterById.split(',').map(id => id.trim()).includes(item.id);
                                const images = mapOptions[option].filter(image => searchIds.includes(image.id));
                         return matchesTag && matchesId;
                                allImages = allImages.concat(images);
                            });
                         }
                     });
                     });
 
                }
                    filteredItems.forEach(item => {
            } else if (filterOption === 'tag' && selectedSpecificOption) {
                        const itemDiv = document.createElement('div');
                Object.keys(specificOptions).forEach(mapType => {
                        itemDiv.classList.add('image-item');
                    if (selectedMapType === '' || selectedMapType == mapType) {
 
                         const mapOptions = specificOptions[mapType];
                        const img = document.createElement('img');
                         Object.keys(mapOptions).forEach(option => {
                        img.src = item.imageUrl;
                             const images = mapOptions[option].filter(image => image.tags.includes(selectedSpecificOption));
                        img.alt = Mapa ${item.id};
                            allImages = allImages.concat(images);
                        itemDiv.appendChild(img);
                         });
 
                         const infoDiv = document.createElement('div');
                         infoDiv.classList.add('image-info');
                        infoDiv.innerHTML =  
                            <strong>Número do Mapa:</strong> ${item.id}<br>
                             <strong>Local:</strong> ${item.local}<br>
                            <strong>Coordenada:</strong> ${item.coordinates}<br>
                            <strong>Tag(s):</strong> ${item.tags.join(', ')}
                        ;
                        itemDiv.appendChild(infoDiv);
 
                         imageContainer.appendChild(itemDiv);
                    });
 
                    if (filteredItems.length === 0) {
                        imageContainer.innerHTML = '<p>Nenhuma imagem encontrada para os critérios selecionados.</p>';
                     }
                     }
                 }
                 });
             }
             }
        }


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


        specificOptionSelect.addEventListener('change', () => {
                allImages.forEach(image => {
            updateTags();
                    imagesHtml += `
            filterImages();
                        <div class="image-item">
        });
                            <img src="${image.imageUrl}" alt="Imagem ID ${image.id}">
 
                            <div class="image-info">
        filterButton.addEventListener('click', () => {
                                <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'}
        searchIdsInput.addEventListener('input', () => {
                            </div>
            filterImages();
                        </div>
        });
                    `;
 
                });
        enableFilter.addEventListener('change', () => {
             } else {
            filterOptions.classList.toggle('hidden', !enableFilter.checked);
                 imagesHtml = 'Nenhuma imagem encontrada com os critérios fornecidos.';
             if (!enableFilter.checked) {
                 filterImages();
             }
             }
        });


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

Edição das 23h55min 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; }
       .image-item { margin: 10px 0; }
       .image-info { margin-top: 5px; }
   </style>

</head> <body>

       <label for="mapType">Tipo de Mapa:</label>
       <select id="mapType">
           <option value="">Selecione o Tipo de 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">
       </select>
       <input type="checkbox" id="enableFilter">
       <label for="enableFilter">Ativar Filtro</label>
   <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', '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': [
                   { 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: '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
           },
       };
       document.getElementById('mapType').addEventListener('change', updateSpecificOptions);
       document.getElementById('filterOption').addEventListener('change', toggleSearchInput);
       document.getElementById('enableFilter').addEventListener('change', toggleFilterSection);
       document.getElementById('filterButton').addEventListener('click', filterImages);
       function updateSpecificOptions() {
           const mapType = document.getElementById('mapType').value;
           const specificOption = document.getElementById('specificOption');
           specificOption.innerHTML = '<option value="">Selecione uma opção</option>';
           if (mapType) {
               const options = Object.keys(specificOptions[mapType] || {});
               options.forEach(option => {
                   specificOption.innerHTML += `<option value="${option}">${option}</option>`;
               });
           }
       }
       function toggleSearchInput() {
           const filterOption = document.getElementById('filterOption').value;
           const searchInput = document.getElementById('searchIds');
           searchInput.placeholder = filterOption === 'number' ? 'Digite os números separados por vírgula' : 'Digite as tags separadas por vírgula';
       }
       function toggleFilterSection() {
           const filterSection = document.getElementById('filterSection');
           filterSection.classList.toggle('hidden', !document.getElementById('enableFilter').checked);
       }
       function filterImages() {
           const searchIds = document.getElementById('searchIds').value.split(',').map(id => id.trim().toLowerCase());
           const filterOption = document.getElementById('filterOption').value;
           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 => {
                       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);
                           });
                       }
                   });
               }
           } 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);
                       });
                   }
               });
           }
           if (allImages.length > 0) {
               allImages.sort((a, b) => a.local.localeCompare(b.local));
               allImages.forEach(image => {
                   imagesHtml += `
                           <img src="${image.imageUrl}" alt="Imagem ID ${image.id}">
                               Número do Mapa: ${image.id} 
Local: ${image.local}
Coordenada: ${image.coordinates}
Tag(s): ${image.tags.join(', ') || 'Nenhuma'}
                   `;
               });
           } else {
               imagesHtml = 'Nenhuma imagem encontrada com os critérios fornecidos.';
           }
           imageContainer.innerHTML = imagesHtml;
           imageContainer.classList.toggle('hidden', allImages.length === 0);
       }
   </script>

</body> </html>