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
 
(117 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 () {
  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
  };


<head>
  const url = window.location.origin;
    <meta charset="UTF-8">
  const dzCard = document.getElementById('dz-card');
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
  const today = new Date();
    <title>Seleção e Exibição de Imagens</title>
  let actualWeekNumber = today.getWeekNumber();
    <style>
        .hidden {
            display: none;
        }


        .input-group {
  // Verificar se é sexta-feira (dia 5) e se passou das 7 da manhã
            margin: 20px 0;
  const isFridayAfter7AM = today.getDay() === 5 && today.getHours() >= 7;
        }


        .maps__select,
  // Se for sexta-feira depois das 7 da manhã, incrementa o número da semana
        .input-group input[type="text"],
  if (isFridayAfter7AM) {
        .input-group button {
    actualWeekNumber++;
            width: 100%;
  }
            padding: 10px;
            margin-top: 5px;
            font-size: 16px;
            border-radius: 5px;
            border: 1px solid #ccc;
        }


        .image-container {
  const dzWeeks = [
            display: flex;
    { name: 'Décima segunda semana', image: '/images/1/11/Card_DZ_D%C3%A9cima-Segunda-Semana.png' },
            flex-wrap: wrap;
    { name: 'Primeira semana', image: '/images/b/b2/Card_DZ_Primeira-Semana.png' },
            gap: 10px;
    { name: 'Segunda semana', image: '/images/9/97/Card_DZ_Segunda-Semana.png' },
            margin-top: 20px;
    { 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-item {
  // Ajuste para garantir que a "Décima segunda semana" seja a primeira exibida
            flex: 1 0 30%;
  let weekIndex = actualWeekNumber % 12;
            text-align: center;
        }


        .image-item img {
  // Exibir a imagem correspondente à semana
            max-width: 100%;
  dzCard.src = url + dzWeeks[weekIndex].image;
            height: auto;
  dzCard.alt = dzWeeks[weekIndex].name;
        }
});
 
</script>
        .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>
    <form id="mapForm">
        <div class="input-group">
            <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>
        </div>
 
        <div class="input-group hidden" id="specificOptions">
            <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>
        </div>
 
        <div class="filter-container hidden" id="filterSection">
            <input type="checkbox" id="enableFilter">
            <label for="enableFilter">Ativar filtro</label>
 
            <div class="input-group hidden" id="filterOptions">
                <label for="filterType">Filtrar Por</label>
                <select id="filterType" class="maps__select">
                    <option value="">Escolha uma Opção</option>
                    <option value="number">Filtrar por Número</option>
                </select>
                <input type="text" id="searchIds" placeholder="Digite os números ou tags separados por vírgula">
            </div>
        </div>
 
        <div class="input-group">
            <button type="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>
    </form>
 
    <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 filterButton = document.getElementById('filterButton');
        const enableFilter = document.getElementById('enableFilter');
        const specificOptionSelect = document.getElementById('specificOption');
        const mapTypeSelect = document.getElementById('mapType');
        const filterSection = document.getElementById('filterSection');
        const filterOptions = document.getElementById('filterOptions');
        const searchIdsInput = document.getElementById('searchIds');
 
        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 = `
                            <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', () => {
            specificOptionSelect.classList.toggle('hidden', !mapTypeSelect.value);
            updateTags();
            filterImages();
        });
 
        specificOptionSelect.addEventListener('change', () => {
            updateTags();
            filterImages();
        });
 
        filterButton.addEventListener('click', () => {
            filterImages();
        });
 
        searchIdsInput.addEventListener('input', () => {
            filterImages();
        });
 
        enableFilter.addEventListener('change', () => {
            filterSection.classList.toggle('hidden', !enableFilter.checked);
            filterOptions.classList.toggle('hidden', !enableFilter.checked);
            if (!enableFilter.checked) {
                filterImages();
            }
        });
 
        function initializePage() {
            specificOptionSelect.classList.add('hidden');
            filterSection.classList.add('hidden');
            filterOptions.classList.add('hidden');
            updateTags();
        }
 
        initializePage();
    </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>