<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>API Request</title> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/notyf/notyf.min.css"> <style> body { font-family: Arial, sans-serif; text-align: center; background-color: #f0f0f0; margin: 0; padding: 0; } h1 { background-color: #4CAF50; color: white; padding: 20px; margin: 0; border-bottom: 2px solid #388E3C; font-size: 28px; text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.3); } .form-group { margin: 20px auto; width: 100%; max-width: 400px; /* Устанавливаем максимальную ширину */ text-align: left; } .form-group label { display: block; margin-bottom: 8px; font-size: 16px; } .form-group input, .form-group select { width: 100%; padding: 12px; /* Увеличиваем внутренний отступ */ font-size: 16px; border: 1px solid #ccc; border-radius: 5px; box-sizing: border-box; margin-bottom: 20px; } button { display: block; margin: 20px auto; color: white; background-color: #4CAF50; border: none; cursor: pointer; padding: 12px 24px; /* Увеличиваем внутренний отступ */ font-size: 16px; border-radius: 5px; transition: background-color 0.3s ease; } button:hover { background-color: #388E3C; } #dropdown-container { margin-top: 20px; } #dropdown-container select { width: 100%; /* Устанавливаем ширину выпадающего списка */ padding: 12px; /* Увеличиваем внутренний отступ */ font-size: 16px; border: 1px solid #ccc; border-radius: 5px; box-sizing: border-box; } </style> </head> <body> <h1>WhatsGRM - Принудительное обновление базы данных с Бизон 365</h1> <div class="form-group"> <label for="tokenInput">API-токен администратора Бизон 365:</label> <input type="text" id="tokenInput" placeholder="Введите токен"> </div> <div class="form-group"> <label for="dateSelect">Выбор даты:</label> <select id="dateSelect"> <option value="2021-01-01T00:00:00">2021-01-01</option> <option value="2022-01-01T00:00:00">2022-01-01</option> <option value="2023-01-01T00:00:00">2023-01-01</option> <option value="2024-01-01T00:00:00">2024-01-01</option> </select> </div> <div class="form-group"> <label for="typeSelect">Выбор формата вебинара:</label> <select id="typeSelect"> <option value="AutoWebinars">Автовебинарные комнаты</option> <option value="LiveWebinars">Вебинарные комнаты</option> </select> </div> <button id="sendRequestButton">Получить список комнат Бизон 365</button> <div id="dropdown-container"></div> <button id="sendGetRequestButton">Обновить базу пользователей WhatCRM</button> <script src="https://cdn.jsdelivr.net/npm/notyf/notyf.min.js"></script> <script> const notyf = new Notyf({ duration: 5000, position: { x: 'right', y: 'top', }, }); let requestButtonClicked = false; // Привязываем обработчики событий только один раз document.getElementById('sendRequestButton').addEventListener('click', function() { if (requestButtonClicked) return; // Если уже нажимали, выходим requestButtonClicked = true; // Устанавливаем флаг, что кнопка уже была нажата const token = document.getElementById('tokenInput').value; const minDate = document.getElementById('dateSelect').value; const type = document.getElementById('typeSelect').value; const url = '/send_request'; fetch(url, { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, body: 'token=' + encodeURIComponent(token) + '&minDate=' + encodeURIComponent(minDate) + '&type=' + encodeURIComponent(type) }) .then(response => response.json()) .then(data => { console.log('JSON Response:', data); createDropdown(data); }) .catch(error => { console.error('Error:', error); notyf.error('Error: ' + error.message); }) .finally(() => { requestButtonClicked = false; // Сбрасываем флаг после завершения запроса }); }); function createDropdown(data) { const container = document.getElementById('dropdown-container'); container.innerHTML = ''; // Очистить контейнер перед добавлением нового списка const select = document.createElement('select'); select.id = 'dropdown'; select.classList.add('form-group'); data.forEach(item => { const option = document.createElement('option'); option.value = item; option.text = item; select.appendChild(option); }); container.appendChild(select); // Привязываем обработчик событий только один раз const sendGetRequestButton = document.getElementById('sendGetRequestButton'); sendGetRequestButton.removeEventListener('click', handleGetRequest); // Удаляем старый обработчик, если есть sendGetRequestButton.addEventListener('click', handleGetRequest); } function handleGetRequest() { const selectedValue = document.getElementById('dropdown').value; const token = document.getElementById('tokenInput').value; const getUrl = '/send_get_request?token=' + encodeURIComponent(token) + '&webinarId=' + encodeURIComponent(selectedValue); fetch(getUrl, { method: 'GET' }) .then(response => response.json()) .then(data => { console.log('GET Response:', data); notyf.success('Пользователи добавлены в базу данных WhatsGRM'); }) .catch(error => { console.error('Error:', error); notyf.error('Error: ' + error.message); }); } </script> </body> </html>