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:
committed by
GitVerse
parent
2d007d2359
commit
fe3824b9da
@@ -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>
|
||||
@@ -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) {
|
||||
|
||||
@@ -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
22
public/xlsx.full.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user