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:
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user