fix: Resolve JavaScript undefined error in database reset function

- Added event parameter to resetDatabase function
- Fixed 'Cannot read properties of undefined' error
- Added null checks for date range values
- Improved button state management with fallback selectors
- Enhanced error handling for edge cases
This commit is contained in:
2025-08-14 16:13:24 +03:00
parent 24b8257a1f
commit 87a51c7950

View File

@@ -65,7 +65,7 @@
setInterval(updateTimer, 1000); // Update every second
// Database reset functionality
async function resetDatabase() {
async function resetDatabase(event) {
try {
// First, get database statistics
const statsResponse = await fetch('/database_stats');
@@ -79,8 +79,8 @@
const totalLogs = stats.total_logs;
const uniqueDevices = stats.unique_devices;
if (totalLogs === 0) {
alert(' Database is already empty!\nNo logs to delete.');
if (totalLogs <= 1) { // Only reset log exists
alert(' Database is already empty!\nNo user logs to delete.');
return;
}
@@ -90,7 +90,7 @@
`This will permanently delete:\n` +
`${totalLogs} log entries\n` +
`• Data from ${uniqueDevices} unique devices\n` +
`• Date range: ${stats.earliest_log} to ${stats.latest_log}\n\n` +
`• Date range: ${stats.earliest_log || 'N/A'} to ${stats.latest_log || 'N/A'}\n\n` +
`⚠️ ALL DEVICE HISTORY WILL BE LOST ⚠️\n\n` +
`This action cannot be undone!\n\n` +
`Are you absolutely sure you want to proceed?`
@@ -115,10 +115,12 @@
}
// Show loading indicator
const button = event.target;
const originalText = button.innerHTML;
button.innerHTML = '<span class="spinner-border spinner-border-sm" role="status"></span> Clearing Database...';
button.disabled = true;
const button = event ? event.target : document.querySelector('button[onclick*="resetDatabase"]');
const originalText = button ? button.innerHTML : '';
if (button) {
button.innerHTML = '<span class="spinner-border spinner-border-sm" role="status"></span> Clearing Database...';
button.disabled = true;
}
// Send reset request
const resetResponse = await fetch('/reset_database', {
@@ -142,17 +144,21 @@
location.reload(); // Refresh to show empty database
} else {
alert('❌ Database Reset Failed:\n' + result.error);
button.innerHTML = originalText;
button.disabled = false;
if (button) {
button.innerHTML = originalText;
button.disabled = false;
}
}
} catch (error) {
alert('❌ Network Error:\n' + error.message);
// Restore button if it was changed
try {
const button = event.target;
button.innerHTML = '<i class="fas fa-trash-alt"></i> Clear Database';
button.disabled = false;
const button = event ? event.target : document.querySelector('button[onclick*="resetDatabase"]');
if (button) {
button.innerHTML = '<i class="fas fa-trash-alt"></i> Clear Database';
button.disabled = false;
}
} catch (e) {
// Ignore if button restoration fails
}
@@ -173,7 +179,7 @@
<a href="/server_logs" class="btn btn-info" title="View server operations and system logs">
<i class="fas fa-server"></i> Server Logs
</a>
<button class="btn btn-danger" onclick="resetDatabase()" title="Clear all logs and reset database">
<button class="btn btn-danger" onclick="resetDatabase(event)" title="Clear all logs and reset database">
<i class="fas fa-trash-alt"></i> Clear Database
</button>
</div>