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
 
(167 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 Mapas</title>
  let actualWeekNumber = today.getWeekNumber();
    <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 {
  // Verificar se é sexta-feira (dia 5) e se passou das 7 da manhã
            display: none;
  const isFridayAfter7AM = today.getDay() === 5 && today.getHours() >= 7;
        }


        .image-container {
  // Se for sexta-feira depois das 7 da manhã, incrementa o número da semana
            display: flex;
  if (isFridayAfter7AM) {
            flex-wrap: wrap;
    actualWeekNumber++;
            justify-content: center;
  }
            gap: 10px;
            margin-top: 5px;
        }


        .image-container .image-item {
  const dzWeeks = [
            flex: 1 0 30%;
    { name: 'Décima segunda semana', image: '/images/1/11/Card_DZ_D%C3%A9cima-Segunda-Semana.png' },
            text-align: center;
    { 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-container img {
  // Ajuste para garantir que a "Décima segunda semana" seja a primeira exibida
    object-fit: cover; /* Mantém a proporção da imagem, cortando se necessário */
  let weekIndex = actualWeekNumber % 12;
    margin-bottom: 5px;
}


        .image-info {
  // Exibir a imagem correspondente à semana
            margin-top: 5px;
  dzCard.src = url + dzWeeks[weekIndex].image;
        }
  dzCard.alt = dzWeeks[weekIndex].name;
 
});
        select,
</script>
        input[type="text"],
        button {
            margin: 5px;
        }
 
        #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);
            cursor: pointer;
            /* 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 */
        }
        .hidden {
            display: none;
        }
        .selected {
            border: 2px solid #4CAF50;
        } 
        .checkbox-item {
            display: flex;
            align-items: center;
            margin-bottom: 10px;
        }
 
        .checkbox-item input {
            margin-right: 10px;
        }
    </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>
                <!-- As opções serão adicionadas dinamicamente -->
            </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="saveSection" class="d-flex">
            <button type="button" id="saveButton" class="hover-minimize">
                <img src="https://wiki.pokexgames.com/images/6/6f/Save_Icon.png" alt="Salvar Mapas">
                <span>Salvar Mapas Selecionados</span>
            </button>
            <button type="button" id="loadButton" class="hover-minimize">
                <img src="https://wiki.pokexgames.com/images/6/6f/Load_Icon.png" alt="Carregar Mapas">
                <span>Carregar Mapas Selecionados</span>
            </button>
            <button type="button" id="clearButton" class="hover-minimize">
                <img src="https://wiki.pokexgames.com/images/6/6f/Clear_Icon.png" alt="Limpar Mapas">
                <span>Limpar Mapas Salvos</span>
            </button>
        </div>
 
        <div id="imageContainer" class="image-container hidden">
            <!-- As imagens e suas informações serão exibidas aqui -->
        </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' },
                    // Adicione mais itens conforme necessário
                ],
            },
            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' },
                    // Adicione mais itens conforme necessário
                ],
                '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' },
                    // Adicione mais itens conforme necessário
                ],
            }
        };
 
        const enableFilter = document.getElementById('enableFilter');
        const filterSection = document.getElementById('filterSection');
        const mapType = document.getElementById('mapType');
        const specificOption = document.getElementById('specificOption');
        const filterButton = document.getElementById('filterButton');
        const imageContainer = document.getElementById('imageContainer');
        const searchIds = document.getElementById('searchIds');
        const filterOption = document.getElementById('filterOption');
        const saveButton = document.getElementById('saveButton');
        const loadButton = document.getElementById('loadButton');
        const clearButton = document.getElementById('clearButton');
        const specificOptionsDiv = document.getElementById('specificOptions');
 
        let savedMaps = JSON.parse(localStorage.getItem('savedMaps')) || [];
 
        // Função para atualizar o campo Local do X conforme o Tipo de Mapa selecionado
        mapType.addEventListener('change', () => {
            specificOption.innerHTML = '<option value="">Selecione uma opção</option>'; // Resetar opções
            imageContainer.innerHTML = ''; // Limpar imagens anteriores
            if (mapType.value) {
                specificOptionsDiv.classList.remove('hidden');
 
                const options = specificOptions[mapType.value];
                for (const option in options) {
                    const newOption = document.createElement('option');
                    newOption.value = option;
                    newOption.textContent = option;
                    specificOption.appendChild(newOption);
                }
            } else {
                specificOptionsDiv.classList.add('hidden');
            }
        });
 
        // Função para exibir as imagens correspondentes ao Local do X selecionado
        specificOption.addEventListener('change', () => {
            imageContainer.innerHTML = ''; // Limpar imagens anteriores
            const selectedType = specificOptions[mapType.value];
            if (selectedType && selectedType[specificOption.value]) {
                imageContainer.classList.remove('hidden');
                selectedType[specificOption.value].forEach(item => {
                    const imageItem = document.createElement('div');
                    imageItem.classList.add('image-item');
 
                    const checkbox = document.createElement('input');
                    checkbox.type = 'checkbox';
                    checkbox.id = `map-${item.id}`;
                    checkbox.dataset.id = item.id;
                    checkbox.classList.add('map-checkbox');
 
                    const label = document.createElement('label');
                    label.htmlFor = checkbox.id;
                    label.textContent = item.local;
 
                    const img = document.createElement('img');
                    img.src = 'https://wiki.pokexgames.com/images/2/26/Semvip.png';
                    img.alt = 'Mapa Não Selecionado';
                    img.dataset.id = item.id;
                    img.classList.add('map-image');
 
                    imageItem.appendChild(checkbox);
                    imageItem.appendChild(img);
                    imageItem.appendChild(label);
 
                    imageContainer.appendChild(imageItem);
                });
            }
        });
 
        // Função para salvar mapas selecionados
        saveButton.addEventListener('click', () => {
            const selectedMaps = Array.from(document.querySelectorAll('.map-checkbox:checked'))
                .map(checkbox => checkbox.dataset.id);
 
            localStorage.setItem('savedMaps', JSON.stringify(selectedMaps));
            savedMaps = selectedMaps;
            alert('Mapas salvos com sucesso!');
        });
 
        // Função para carregar mapas salvos
        loadButton.addEventListener('click', () => {
            const selectedMaps = JSON.parse(localStorage.getItem('savedMaps')) || [];
            document.querySelectorAll('.map-checkbox').forEach(checkbox => {
                if (selectedMaps.includes(checkbox.dataset.id)) {
                    checkbox.checked = true;
                    checkbox.nextElementSibling.src = 'https://wiki.pokexgames.com/images/2/2d/Comvip.png';
                } else {
                    checkbox.checked = false;
                    checkbox.nextElementSibling.src = 'https://wiki.pokexgames.com/images/2/26/Semvip.png';
                }
            });
            alert('Mapas salvos carregados com sucesso!');
        });
 
        // Função para limpar os mapas salvos
        clearButton.addEventListener('click', () => {
            localStorage.removeItem('savedMaps');
            savedMaps = [];
            document.querySelectorAll('.map-checkbox').forEach(checkbox => {
                checkbox.checked = false;
                checkbox.nextElementSibling.src = 'https://wiki.pokexgames.com/images/2/26/Semvip.png';
            });
            alert('Mapas salvos foram limpos com sucesso!');
        });
 
        // Função para aplicar o filtro
        filterButton.addEventListener('click', () => {
            const selectedType = mapType.value;
            const selectedOption = specificOption.value;
            const searchText = searchIds.value.toLowerCase();
            const filter = filterOption.value;
 
            imageContainer.innerHTML = ''; // Limpar imagens anteriores
 
            if (filter === 'number') {
                const filteredMaps = selectedType && selectedOption
                    ? specificOptions[selectedType][selectedOption].filter(item => searchText.split(',').map(text => text.trim()).includes(item.id))
                    : [];
 
                filteredMaps.forEach(item => {
                    const imageItem = document.createElement('div');
                    imageItem.classList.add('image-item');
 
                    const checkbox = document.createElement('input');
                    checkbox.type = 'checkbox';
                    checkbox.id = `map-${item.id}`;
                    checkbox.dataset.id = item.id;
                    checkbox.classList.add('map-checkbox');
 
                    const label = document.createElement('label');
                    label.htmlFor = checkbox.id;
                    label.textContent = item.local;
 
                    const img = document.createElement('img');
                    img.src = 'https://wiki.pokexgames.com/images/2/26/Semvip.png';
                    img.alt = 'Mapa Não Selecionado';
                    img.dataset.id = item.id;
                    img.classList.add('map-image');
 
                    imageItem.appendChild(checkbox);
                    imageItem.appendChild(img);
                    imageItem.appendChild(label);
 
                    imageContainer.appendChild(imageItem);
                });
            } else if (filter === 'tag') {
                if (selectedType && selectedOption) {
                    const tags = searchText.split(',').map(text => text.trim());
                    const filteredMaps = specificOptions[selectedType][selectedOption].filter(item => tags.some(tag => item.tags.includes(tag)));
 
                    filteredMaps.forEach(item => {
                        const imageItem = document.createElement('div');
                        imageItem.classList.add('image-item');
 
                        const checkbox = document.createElement('input');
                        checkbox.type = 'checkbox';
                        checkbox.id = `map-${item.id}`;
                        checkbox.dataset.id = item.id;
                        checkbox.classList.add('map-checkbox');
 
                        const label = document.createElement('label');
                        label.htmlFor = checkbox.id;
                        label.textContent = item.local;
 
                        const img = document.createElement('img');
                        img.src = 'https://wiki.pokexgames.com/images/2/26/Semvip.png';
                        img.alt = 'Mapa Não Selecionado';
                        img.dataset.id = item.id;
                        img.classList.add('map-image');
 
                        imageItem.appendChild(checkbox);
                        imageItem.appendChild(img);
                        imageItem.appendChild(label);
 
                        imageContainer.appendChild(imageItem);
                    });
                } else {
                    alert('Selecione pelo menos um tipo de mapa');
                }
            } else {
                alert('Escolha um tipo de filtro');
            }
        });
 
        // Exibir/ocultar a seção de filtro quando o checkbox é ativado
        enableFilter.addEventListener('change', () => {
            if (enableFilter.checked) {
                filterSection.classList.remove('hidden');
            } else {
                filterSection.classList.add('hidden');
            }
        });
    </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>