Files
homeschool/public/js/debug-analytics.js
T

116 lines
3.7 KiB
JavaScript

// Debug script to test the analytics page
// Save this file to public/js/debug-analytics.js
(function() {
console.log('🔍 Analytics Debug Helper loaded');
// Function to check user dropdowns
function checkUserDropdowns() {
console.log('Checking user dropdowns...');
const selectors = [
'analyticsUserSelect',
'userDropdown',
'wordUserSelect',
'passwordUsername',
'reportUser'
];
selectors.forEach(id => {
const dropdown = document.getElementById(id);
if (dropdown) {
console.log(`✅ Found dropdown: ${id}`);
console.log(` - Options: ${dropdown.options.length}`);
console.log(` - Values: ${Array.from(dropdown.options).map(o => o.value).join(', ')}`);
} else {
console.log(`❌ Dropdown not found: ${id}`);
}
});
}
// Function to manually populate the analytics dropdown
function populateAnalyticsDropdown() {
console.log('🔄 Manually populating analytics dropdown...');
const analyticsDropdown = document.getElementById('analyticsUserSelect');
if (!analyticsDropdown) {
console.error('❌ Analytics dropdown not found');
return;
}
// Clear existing options except the first (All Users)
while (analyticsDropdown.options.length > 1) {
analyticsDropdown.remove(1);
}
// Fetch users directly
fetch('/getUsers')
.then(response => {
if (!response.ok) {
throw new Error(`Server returned ${response.status}`);
}
return response.json();
})
.then(users => {
console.log(`✅ Fetched ${users.length} users:`, users.map(u => u.username));
// Add users to dropdown
users.forEach(user => {
const option = document.createElement('option');
option.value = user.username;
option.textContent = user.username;
analyticsDropdown.appendChild(option);
});
console.log(`✅ Added ${users.length} users to analytics dropdown`);
})
.catch(error => {
console.error('❌ Error fetching users:', error);
});
}
// Add helper buttons
window.addEventListener('DOMContentLoaded', () => {
setTimeout(() => {
// Create debug control panel
const debugPanel = document.createElement('div');
debugPanel.style.position = 'fixed';
debugPanel.style.bottom = '10px';
debugPanel.style.right = '10px';
debugPanel.style.backgroundColor = 'rgba(0,0,0,0.7)';
debugPanel.style.padding = '10px';
debugPanel.style.borderRadius = '5px';
debugPanel.style.color = 'white';
debugPanel.style.zIndex = '9999';
debugPanel.style.fontSize = '12px';
// Add title
const title = document.createElement('div');
title.textContent = '🐞 Debug Tools';
title.style.fontWeight = 'bold';
title.style.marginBottom = '5px';
debugPanel.appendChild(title);
// Add check dropdowns button
const checkBtn = document.createElement('button');
checkBtn.textContent = '👁️ Check Dropdowns';
checkBtn.style.marginRight = '5px';
checkBtn.style.padding = '3px 6px';
checkBtn.addEventListener('click', checkUserDropdowns);
debugPanel.appendChild(checkBtn);
// Add populate button
const populateBtn = document.createElement('button');
populateBtn.textContent = '🔄 Force Populate';
populateBtn.style.padding = '3px 6px';
populateBtn.addEventListener('click', populateAnalyticsDropdown);
debugPanel.appendChild(populateBtn);
document.body.appendChild(debugPanel);
// Initial check after a delay
setTimeout(checkUserDropdowns, 2000);
}, 1000);
});
})();