diff --git a/server/server.ts b/server/server.ts index 8c94b68..801959b 100644 --- a/server/server.ts +++ b/server/server.ts @@ -427,6 +427,47 @@ router.get('/', async (req, res) => { alert('Произошла ошибка: ' + error.message); } }); + + // Обработчик кнопок очистки коллекций + document.querySelectorAll('.clear-model-btn').forEach(button => { + button.addEventListener('click', async function() { + const modelName = this.getAttribute('data-model'); + if (!modelName) return; + + if (!confirm(\`Вы уверены, что хотите очистить коллекцию \${modelName}?\`)) { + return; + } + + try { + const response = await fetch('' + getUrl('/clear-collection'), { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ modelName }) + }); + + if (!response.ok) { + throw new Error('Ошибка при очистке коллекции'); + } + + const data = await response.json(); + + // Показываем сообщение об успехе + successAction.textContent = 'Коллекция ' + data.model + ' очищена. Удалено ' + data.deletedCount + ' записей'; + successAction.style.display = 'block'; + + // Перезагружаем страницу через 2 секунды + setTimeout(() => { + window.location.reload(); + }, 2000); + + } catch (error) { + console.error('Ошибка:', error); + alert('Произошла ошибка: ' + error.message); + } + }); + }); }); `; @@ -792,6 +833,52 @@ router.get('/', async (req, res) => { font-weight: 500; } + .progress-bar-container { + width: 100%; + background-color: #f0f0f0; + border-radius: 10px; + margin: 10px 0; + overflow: hidden; + } + + .progress-bar { + height: 10px; + background: linear-gradient(90deg, var(--primary-color), #5c6bc0); + border-radius: 10px; + transition: width 0.5s ease; + } + + .model-actions { + display: flex; + justify-content: flex-end; + margin-top: 10px; + } + + .model-button { + background-color: var(--primary-color); + color: white; + border: none; + padding: 5px 10px; + border-radius: var(--border-radius); + cursor: pointer; + font-size: 0.8rem; + font-weight: 500; + transition: var(--transition); + } + + .model-button:hover { + background-color: #303f9f; + box-shadow: var(--shadow); + } + + .model-button-danger { + background-color: #f44336; + } + + .model-button-danger:hover { + background-color: #d32f2f; + } + .model-details { padding: 15px; } @@ -1007,6 +1094,9 @@ router.get('/', async (req, res) => {
${count} документов