diff --git a/src/main/resources/static/js/usage.js b/src/main/resources/static/js/usage.js index a9c98ed9e..624e4ec78 100644 --- a/src/main/resources/static/js/usage.js +++ b/src/main/resources/static/js/usage.js @@ -27,7 +27,7 @@ function getChartColors() { } // Watch for theme changes and update chart if needed -function setupThemeChangeListener() { +function setupThemeChangeListener() { // Start observing theme changes document.addEventListener("modeChanged", (event) => { @@ -41,7 +41,7 @@ function setupThemeChangeListener() { } }, 100); }); - + // Also watch for system preference changes window .matchMedia('(prefers-color-scheme: dark)') @@ -60,22 +60,22 @@ function setupThemeChangeListener() { function filterData() { const includeHome = document.getElementById('hideHomeCheckbox').checked; const includeLogin = document.getElementById('hideLoginCheckbox').checked; - + filteredData = allEndpointData.filter(item => { if (!includeHome && item.endpoint === '/') return false; if (!includeLogin && item.endpoint === '/login') return false; return true; }); - + // Sort and calculate sortedData = [...filteredData].sort((a, b) => b.count - a.count); totalEndpoints = filteredData.length; totalVisits = filteredData.reduce((sum, item) => sum + item.count, 0); - + // Update stats document.getElementById('totalEndpoints').textContent = totalEndpoints.toLocaleString(); document.getElementById('totalVisits').textContent = totalVisits.toLocaleString(); - + // Update the chart with current limit const currentLimit = document.getElementById('currentlyShowing').textContent; const limit = (currentLimit === endpointStatsTranslations.all) @@ -96,33 +96,33 @@ async function fetchEndpointData() { ${endpointStatsTranslations.loading} `; chartContainer.appendChild(loadingDiv); - + // Also add animation to refresh button const refreshBtn = document.getElementById('refreshBtn'); refreshBtn.classList.add('refreshing'); refreshBtn.disabled = true; - + const response = await fetch('/api/v1/info/load/all'); if (!response.ok) { throw new Error('Network response was not ok'); } - + const data = await response.json(); allEndpointData = data; - + // Apply filters filterData(); - + // Remove loading state chartContainer.removeChild(loadingDiv); refreshBtn.classList.remove('refreshing'); refreshBtn.disabled = false; - + } catch (error) { console.error('Error fetching endpoint data:', error); // Show error message to user showError(endpointStatsTranslations.failedToLoad); - + // Reset refresh button const refreshBtn = document.getElementById('refreshBtn'); refreshBtn.classList.remove('refreshing'); @@ -141,24 +141,24 @@ function formatEndpointName(endpoint) { function updateTable(data) { const tableBody = document.getElementById('endpointTableBody'); tableBody.innerHTML = ''; - + data.forEach((item, index) => { const percentage = ((item.count / totalVisits) * 100).toFixed(2); const row = document.createElement('tr'); - + // Format endpoint for better readability let displayEndpoint = item.endpoint; if (displayEndpoint.length > 40) { displayEndpoint = displayEndpoint.substring(0, 37) + '...'; } - + row.innerHTML = `