create: admin.html, admin.js, help.html, index.html, info.html, info.js, k.html, k.js, login.html, main.js, style.css, xlsx.full.min.js, auth.js, package.json, server.js, sqllite.js

This commit is contained in:
Калугин Олег Александрович
2026-04-13 12:30:38 +00:00
committed by GitVerse
parent 2d007d2359
commit fe3824b9da
7 changed files with 80 additions and 9 deletions

View File

@@ -14,6 +14,7 @@
<main>
<div class="admin-controls">
<button id="addLessonBtn">+ Добавить урок</button>
<button id="clearDbBtn" class="danger-btn">🧹 Полная очистка базы</button>
<div class="filters">
<div class="filter-group">
<label>Класс</label>
@@ -94,7 +95,8 @@
</div>
</div>
</main>
<!--<script src="https://cdn.sheetjs.com/xlsx-0.20.2/package/dist/xlsx.full.min.js"></script>-->
<!-- <script src="https://cdn.sheetjs.com/xlsx-0.20.2/package/dist/xlsx.full.min.js"></script>-->
<script src="/xlsx.full.min.js"></script>
<script src="admin.js"></script>
</body>
</html>

View File

@@ -1,4 +1,4 @@
// public/admin.js панель администратора
// public/admin.js панель администратора (локальная XLSX)
let currentUser = null;
let currentPreviewLessons = [];
@@ -258,13 +258,37 @@ function setupEventListeners() {
window.location.href = '/';
});
// Импорт
// Кнопка очистки всей базы
document.getElementById('clearDbBtn')?.addEventListener('click', async () => {
const confirmed = confirm('⚠️ ВНИМАНИЕ! Вы собираетесь УДАЛИТЬ ВСЕ уроки и все записи родителей. Это действие необратимо. Продолжить?');
if (!confirmed) return;
try {
const res = await fetch('/api/admin/clear-db', { method: 'POST' });
const data = await res.json();
if (res.ok && data.success) {
alert('База данных успешно очищена.');
loadLessons(getCurrentFilters());
} else {
alert('Ошибка при очистке: ' + (data.error || 'неизвестная ошибка'));
}
} catch (err) {
alert('Ошибка соединения: ' + err.message);
}
});
// Импорт (теперь XLSX всегда глобально доступен)
function parseExcelToRecords(file) {
return new Promise((resolve, reject) => {
const reader = new FileReader();
reader.onload = function(e) {
const data = new Uint8Array(e.target.result);
const workbook = XLSX.read(data, { type: 'array' });
let workbook;
try {
workbook = XLSX.read(data, { type: 'array' });
} catch (err) {
reject(new Error('Ошибка чтения Excel: ' + err.message));
return;
}
const firstSheet = workbook.Sheets[workbook.SheetNames[0]];
const rows = XLSX.utils.sheet_to_json(firstSheet, { header: 1, defval: "" });
if (!rows || rows.length < 2) {

View File

@@ -244,4 +244,11 @@ form input, form textarea {
margin-left: 0;
text-align: center;
}
}
.danger-btn {
background: #b91c1c;
margin-left: 1rem;
}
.danger-btn:hover {
background: #991b1b;
}

22
public/xlsx.full.min.js vendored Normal file

File diff suppressed because one or more lines are too long