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
 
(177 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 () {
<head>
     let d = new Date(Date.UTC(this.getFullYear(), this.getMonth(), this.getDate()));
    <meta charset="UTF-8">
     let dayNum = d.getUTCDay() || 7; // Garante que domingo (0) seja o último dia da semana
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     let yearStart = new Date(Date.UTC(d.getUTCFullYear(), 0, 1));
     <title>Seleção e Exibição de Imagens</title>
    return Math.ceil((((d - yearStart) / 86400000) + 1) / 7); // Calcula o número da semana
     <style>
  };
        .d-flex {
            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: 340px;
            min-height: 270px;
          }
 
        .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 */
        }
        .selected-image {
            border: 2px solid green;
        }
        .unselected-image {
            border: 2px solid red;
        }
        .hidden {
            display: none;
        }
    </style>
</head>
 
<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>
                <!-- Options will be populated dynamically -->
            </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">
                <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>
 
        <div class="d-flex">
            <button type="button" id="clearSavedMaps">Limpar Mapas Salvos</button>
        </div>
    </form>
 
    <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' },
                    // Add more images as needed
                ]
            },
            3: {
                'Grama': [
                    { id: '30001', local: 'Respawn de Darkrai', coordinates: '30792, 20621, 5', tags: ['Grama','Árvore','Pedra'], imageUrl: 'https://wiki.pokexgames.com/images/2/23/Mapas_de_ADV_ROXO_-_30792%2C_20621%2C_5.webp' },
                    // Add more images as needed
                ],
                'Pisos': [
                    { id: '70001', local: 'Respawn de Infernape', coordinates: '30793, 20532, 3', tags: ['Piso','Construção', 'Fogo'], imageUrl: 'https://wiki.pokexgames.com/images/6/6f/Mapas_de_ADV_ROXO_-_30793%2C_20532%2C_3.webp' },
                    // Add more images as needed
                ]
            }
        };
 
        let savedMaps = JSON.parse(localStorage.getItem('savedMaps')) || {};
 
        function renderSavedMaps() {
            const imageContainer = document.getElementById('imageContainer');
            let imagesHtml = '';
            for (const mapId in savedMaps) {
                const map = savedMaps[mapId];
                imagesHtml += `
                    <div class="image-item">
                        <img src="${map.imageUrl}" alt="Imagem ID ${map.id}" class="selected-image">
                        <div class="image-info">
                            <b>Número do Mapa</b>: ${map.id} <br>
                            <b>Local</b>: ${map.local} <br>
                            <b>Coordenada</b>: ${map.coordinates}<br>
                            <b>Tag(s)</b>: ${map.tags.join(', ') || 'Nenhuma'}
                        </div>
                    </div>
                `;
            }
            imageContainer.innerHTML = imagesHtml;
            imageContainer.classList.toggle('hidden', !Object.keys(savedMaps).length);
        }
 
        function toggleMapSelection(mapId, mapData) {
            if (savedMaps[mapId]) {
                delete savedMaps[mapId];
            } else {
                savedMaps[mapId] = mapData;
            }
            localStorage.setItem('savedMaps', JSON.stringify(savedMaps));
            renderSavedMaps();
        }
 
        function handleImageClick(event) {
            const mapId = event.target.dataset.mapId;
            const mapData = event.target.dataset.mapData;
            if (mapId && mapData) {
                toggleMapSelection(mapId, JSON.parse(mapData));
                event.target.src = savedMaps[mapId] ? 'https://wiki.pokexgames.com/images/2/2d/Comvip.png' : 'https://wiki.pokexgames.com/images/2/26/Semvip.png';
            }
        }
 
        document.getElementById('enableFilter').addEventListener('change', function () {
            const filterSection = document.getElementById('filterSection');
            filterSection.classList.toggle('hidden', !this.checked);
        });
 
        document.getElementById('searchIds').addEventListener('keypress', function (event) {
            if (event.key === 'Enter') {
                event.preventDefault();
                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 map-selection">
                                <img src="${savedMaps[image.id] ? 'https://wiki.pokexgames.com/images/2/2d/Comvip.png' : 'https://wiki.pokexgames.com/images/2/26/Semvip.png'}"
                                    alt="Selecionar/Desmarcar Mapa"
                                    data-map-id="${image.id}"
                                    data-map-data='${JSON.stringify(image)}'
                                    onclick="handleImageClick(event)">
                                <img src="${image.imageUrl}" alt="${selectedOption}">
                                <div class="image-info">
                                    <b>ID</b>: ${image.id} <br>
                                    <b>Local</b>: ${image.local} <br>
                                    <b>Coordenadas</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 filterOption = document.getElementById('filterOption').value;
            const searchIds = document.getElementById('searchIds').value.trim().toLowerCase().split(',').map(id => id.trim());
           
            if (filterOption === 'tag' && searchIds.length > 0) {
                const images = Object.values(specificOptions).flat().flatMap(option => option.filter(map => map.tags.some(tag => searchIds.includes(tag.toLowerCase()))));
                // Render images based on the tags
            } else if (filterOption === 'number' && searchIds.length > 0) {
                const images = Object.values(specificOptions).flat().flatMap(option => option.filter(map => searchIds.includes(map.id)));
                // Render images based on the numbers
            }
        });
 
        document.getElementById('clearSavedMaps').addEventListener('click', function () {
            savedMaps = {};
            localStorage.removeItem('savedMaps');
            renderSavedMaps();
        });
 
        renderSavedMaps();
    </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>