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

De PokeXGames
Ir para navegação Ir para pesquisar
Sem resumo de edição
Sem resumo de edição
 
(122 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
Linha 1: Linha 1:
<!DOCTYPE html>
<script>
<html lang="pt-br">
document.addEventListener('DOMContentLoaded', function () {
<head>
  Date.prototype.getWeekNumber = function () {
     <meta charset="UTF-8">
     let d = new Date(Date.UTC(this.getFullYear(), this.getMonth(), this.getDate()));
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     let dayNum = d.getUTCDay() || 7; // Garante que domingo (0) seja o último dia da semana
     <title>Filtro de Mapas</title>
     let yearStart = new Date(Date.UTC(d.getUTCFullYear(), 0, 1));
        .d-flex {
    return Math.ceil((((d - yearStart) / 86400000) + 1) / 7); // Calcula o número da semana
            display: flex;
  };
            justify-content: center;
            align-items: center;
            flex-direction: column;
            margin-top: -15px;
            /* Ajuste este valor conforme necessário para subir o botão */
        }


        .hidden {
  const url = window.location.origin;
            display: none;
  const dzCard = document.getElementById('dz-card');
        }
  const today = new Date();
  let actualWeekNumber = today.getWeekNumber();


        .image-container {
  // Verificar se é sexta-feira (dia 5) e se passou das 7 da manhã
            display: flex;
  const isFridayAfter7AM = today.getDay() === 5 && today.getHours() >= 7;
            flex-wrap: wrap;
            justify-content: center;
            gap: 10px;
            margin-top: 5px;
        }


        .image-container .image-item {
  // Se for sexta-feira depois das 7 da manhã, incrementa o número da semana
            flex: 1 0 30%;
  if (isFridayAfter7AM) {
            text-align: center;
    actualWeekNumber++;
        }
  }


.image-container img {
  const dzWeeks = [
     object-fit: cover; /* Mantém a proporção da imagem, cortando se necessário */
    { name: 'Décima segunda semana', image: '/images/1/11/Card_DZ_D%C3%A9cima-Segunda-Semana.png' },
     margin-bottom: 5px;
    { name: 'Primeira semana', image: '/images/b/b2/Card_DZ_Primeira-Semana.png' },
}
    { name: 'Segunda semana', image: '/images/9/97/Card_DZ_Segunda-Semana.png' },
     { name: 'Terceira semana', image: '/images/f/fd/Card_DZ_Terceira-Semana.png' },
    { name: 'Quarta semana', image: '/images/1/17/Card_DZ_Quarta-Semana.png' },
    { name: 'Quinta semana', image: '/images/4/40/Card_DZ_Quinta-Semana.png' },
    { name: 'Sexta semana', image: '/images/2/23/Card_DZ_Sexta-Semana.png' },
    { name: 'Sétima semana', image: '/images/f/f2/Card_DZ_S%C3%A9tima-Semana.png' },
    { name: 'Oitava semana', image: '/images/9/97/Card_DZ_Oitava-Semana.png' },
     { name: 'Nona semana', image: '/images/b/b3/Card_DZ_Nona-Semana.png' },
    { name: 'Décima semana', image: '/images/3/30/Card_DZ_D%C3%A9cima-Semana.png' },
    { name: 'Décima primeira semana', image: '/images/4/49/Card_DZ_D%C3%A9cima-Primeira-Semana.png' },
  ];


        .image-info {
  // Ajuste para garantir que a "Décima segunda semana" seja a primeira exibida
            margin-top: 5px;
  let weekIndex = actualWeekNumber % 12;
        }


        select,
  // Exibir a imagem correspondente à semana
        input[type="text"],
  dzCard.src = url + dzWeeks[weekIndex].image;
        button {
  dzCard.alt = dzWeeks[weekIndex].name;
            margin: 5px;
});
        }
</script>
 
        #filterButton,
        #searchButton {
            background: none;
            /* Remove o fundo do botão */
            border: none;
            /* Remove a borda do botão */
            padding: 0;
            /* Remove o padding do botão */
            cursor: pointer;
            /* Mostra o cursor de ponteiro ao passar sobre o botão */
            margin-top: 5px;
            /* Ajuste a margem superior para subir o botão */
        }
 
        #filterButton img,
        #searchButton img {
            border-radius: 12px;
            width: auto;
            /* Garante que a largura se ajuste ao tamanho original da imagem */
            height: auto;
            /* Garante que a altura se ajuste ao tamanho original da imagem */
        }
 
        .mw-body-content {
            display: flex;
        }
 
        .mw-parser-output {
            display: inline-block;
            padding: .5rem 2rem;
            margin: 0 auto;
            border: 30px solid transparent;
            border-image: url(https://wiki.pokexgames.com/images/3/37/Calculadora-de-Boost.png) 38;
            min-width: 410px;
            min-height: 320px;
          }
 
        .input-group {
            position: relative;
            margin: 20px 0;
            /* Ajuste a margem para mover o campo para cima */
        }
 
        .input-group label {
            position: absolute;
            top: -18px;
            /* Eleva o texto para cima */
            background: none;
            padding: 0 5px;
            font-size: 14px;
            font-weight: bold;
            color: #0d0d0d;
        }
 
        .maps__select {
            width: 100%;
            /* Mantém a largura total disponível */
            padding: 10px;
            font-size: 16px;
            border-radius: 5px;
            border: 1px solid #ccc;
            appearance: none;
            background-color: #fff;
            /* Adiciona um fundo branco */
            box-sizing: border-box;
            /* Inclui o padding e a borda na largura total */
        }
 
 
        .input-group input[type="text"] {
            width: 100%;
            /* Mantém a largura total disponível */
            padding: 10px;
            font-size: 16px;
            border-radius: 5px;
            border: 1px solid #ccc;
            box-sizing: border-box;
            /* Inclui o padding e a borda na largura total */
        }
 
        .maps__label {
            position: absolute;
            top: -18px;
            /* Eleva o texto um pouco mais para cima */
            background: none;
            padding: 0 5px;
            font-size: 14px;
            font-weight: bold;
            /* Deixa o texto em negrito */
            color: #0d0d0d;
        }
 
        .hover-minimize:hover {
            transform: scale(0.95);
            /* Adiciona um efeito de minimizar ao passar o mouse */
        }
 
        .filter-container {
            display: flex;
            align-items: center;
 
        }
 
        .filter-container input[type="checkbox"] {
            margin: 0;
            padding: 0;
            width: auto;
            /* Ajusta o tamanho da checkbox conforme necessário */
            height: auto;
            /* Ajusta o tamanho da checkbox conforme necessário */
            /* Alinha verticalmente a checkbox com o texto */
            vertical-align: middle;
        }
 
        .filter-label {
            margin-left: 10px;
            /* Espaço entre a checkbox e o texto */
            font-size: 14px;
            font-weight: bold;
            color: #0d0d0d;
            line-height: 1.5;
            /* Ajusta a altura da linha para um alinhamento adequado */
        }
        .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: rgb(159, 5, 219);
        }
 
        .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;
        }
</head>
<body>
    <div class="filter-section">
        <label for="mapType">Tipo de Mapa:</label>
        <select id="mapType">
            <option value="">Selecione um Tipo de Mapa</option>
            <option value="1">Tipo 1</option>
            <!-- Adicione outros tipos de mapas aqui -->
        </select>
       
        <label for="specificOption">Local do X:</label>
        <select id="specificOption">
            <option value="">Selecione um Local do X</option>
            <!-- As opções serão preenchidas dinamicamente -->
        </select>
    </div>
 
    <div id="tagSection" class="tag-section hidden">
        <label>Selecione as Tags:</label>
        <div id="tagButtons"></div>
    </div>
 
    <button id="filterButton" class="hidden">Filtrar</button>
 
    <div id="imageContainer" class="hidden"></div>
 
    <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: '3750, 3450, 7', tags: ['Areia', 'Grama'], imageUrl: 'https://wiki.pokexgames.com/images/6/6b/Mapas_de_ADV_VERMELHO_-_3750%2C_3450%2C_7.webp' }
                ],
                'Gelo': [
                    { id: '201', local: 'Snowy Hill', coordinates: '3050, 3575, 7', tags: ['Gelo', 'Árvore'], imageUrl: 'https://wiki.pokexgames.com/images/a/aa/Mapas_de_ADV_VERMELHO_-_3050%2C_3575%2C_7.webp' },
                    { id: '202', local: 'Frozen Lake', coordinates: '2900, 3400, 7', tags: ['Gelo', 'Água'], imageUrl: 'https://wiki.pokexgames.com/images/2/2a/Mapas_de_ADV_VERMELHO_-_2900%2C_3400%2C_7.webp' }
                ],
                // Adicione outros tipos de mapas e locais aqui
            }
        };
 
        // Atualiza o dropdown de opções baseado no Tipo de Mapa selecionado
        function updateSpecificOptions() {
            const mapType = document.getElementById('mapType').value;
            const specificOptionSelect = document.getElementById('specificOption');
            specificOptionSelect.innerHTML = '<option value="">Selecione um Local do X</option>'; // Limpa e define opção padrão
 
            if (mapType) {
                const options = Object.keys(specificOptions[mapType]);
                options.forEach(option => {
                    const opt = document.createElement('option');
                    opt.value = option;
                    opt.textContent = option;
                    specificOptionSelect.appendChild(opt);
                });
            }
            document.getElementById('tagSection').classList.add('hidden');
            document.getElementById('imageContainer').classList.add('hidden');
        }
 
        // Atualiza o dropdown de tags baseado no Tipo de Mapa e Local do X selecionados
        function updateTagButtons() {
            const mapType = document.getElementById('mapType').value;
            const specificOption = document.getElementById('specificOption').value;
            const tagButtonsContainer = document.getElementById('tagButtons');
 
            tagButtonsContainer.innerHTML = '';
 
            if (mapType && specificOption) {
                const tags = specificOptions[mapType][specificOption].map(option => option.tags).flat();
                const uniqueTags = [...new Set(tags)];
 
                uniqueTags.forEach(tag => {
                    const button = document.createElement('button');
                    button.classList.add('tag-button');
                    button.textContent = tag;
                    tagButtonsContainer.appendChild(button);
                });
 
                document.getElementById('tagSection').classList.remove('hidden');
                document.getElementById('filterButton').classList.remove('hidden');
            } else {
                document.getElementById('tagSection').classList.add('hidden');
                document.getElementById('filterButton').classList.add('hidden');
            }
        }
 
        // Atualiza o estado dos botões de tags ao selecionar uma tag
        function toggleTagButton(e) {
            if (e.target.classList.contains('tag-button')) {
                e.target.classList.toggle('selected');
                filterImages();
            }
        }
 
        // Filtra as imagens baseadas no Tipo de Mapa, Local do X e Tags selecionadas
        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.textContent);
 
            const imageContainer = document.getElementById('imageContainer');
            imageContainer.innerHTML = '';
 
            if (mapType && specificOption) {
                const images = specificOptions[mapType][specificOption] || [];
 
                const filteredImages = images.filter(image => {
                    if (selectedTags.length > 0) {
                        return selectedTags.some(tag => image.tags.includes(tag));
                    }
                    return true;
                });
 
                filteredImages.forEach(image => {
                    const div = document.createElement('div');
                    div.classList.add('image-item');
                    div.innerHTML = `
                        <img src="${image.imageUrl}" alt="Imagem do Mapa">
                        <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>
                    `;
                    imageContainer.appendChild(div);
                });
 
                imageContainer.classList.remove('hidden');
            } else {
                imageContainer.classList.add('hidden');
            }
        }
 
        // Inicializa os eventos
        document.getElementById('mapType').addEventListener('change', () => {
            updateSpecificOptions();
            updateTagButtons();
        });
        document.getElementById('specificOption').addEventListener('change', updateTagButtons);
        document.getElementById('filterButton').addEventListener('click', filterImages);
        document.getElementById('tagButtons').addEventListener('click', toggleTagButton);
    </script>
</body>
</html>

Edição atual tal como às 15h45min de 7 de setembro de 2024

<script> document.addEventListener('DOMContentLoaded', function () {

 Date.prototype.getWeekNumber = function () {
   let d = new Date(Date.UTC(this.getFullYear(), this.getMonth(), this.getDate()));
   let dayNum = d.getUTCDay() || 7; // Garante que domingo (0) seja o último dia da semana
   let yearStart = new Date(Date.UTC(d.getUTCFullYear(), 0, 1));
   return Math.ceil((((d - yearStart) / 86400000) + 1) / 7); // Calcula o número da semana
 };
 const url = window.location.origin;
 const dzCard = document.getElementById('dz-card');
 const today = new Date();
 let actualWeekNumber = today.getWeekNumber();
 // Verificar se é sexta-feira (dia 5) e se passou das 7 da manhã
 const isFridayAfter7AM = today.getDay() === 5 && today.getHours() >= 7;
 // Se for sexta-feira depois das 7 da manhã, incrementa o número da semana
 if (isFridayAfter7AM) {
   actualWeekNumber++;
 }
 const dzWeeks = [
   { name: 'Décima segunda semana', image: '/images/1/11/Card_DZ_D%C3%A9cima-Segunda-Semana.png' },
   { name: 'Primeira semana', image: '/images/b/b2/Card_DZ_Primeira-Semana.png' },
   { name: 'Segunda semana', image: '/images/9/97/Card_DZ_Segunda-Semana.png' },
   { name: 'Terceira semana', image: '/images/f/fd/Card_DZ_Terceira-Semana.png' },
   { name: 'Quarta semana', image: '/images/1/17/Card_DZ_Quarta-Semana.png' },
   { name: 'Quinta semana', image: '/images/4/40/Card_DZ_Quinta-Semana.png' },
   { name: 'Sexta semana', image: '/images/2/23/Card_DZ_Sexta-Semana.png' },
   { name: 'Sétima semana', image: '/images/f/f2/Card_DZ_S%C3%A9tima-Semana.png' },
   { name: 'Oitava semana', image: '/images/9/97/Card_DZ_Oitava-Semana.png' },
   { name: 'Nona semana', image: '/images/b/b3/Card_DZ_Nona-Semana.png' },
   { name: 'Décima semana', image: '/images/3/30/Card_DZ_D%C3%A9cima-Semana.png' },
   { name: 'Décima primeira semana', image: '/images/4/49/Card_DZ_D%C3%A9cima-Primeira-Semana.png' },
 ];
 // Ajuste para garantir que a "Décima segunda semana" seja a primeira exibida
 let weekIndex = actualWeekNumber % 12;
 // Exibir a imagem correspondente à semana
 dzCard.src = url + dzWeeks[weekIndex].image;
 dzCard.alt = dzWeeks[weekIndex].name;

}); </script>