diff --git a/webapp/includes/app.js b/webapp/includes/app.js index 69b365d..514ea5c 100644 --- a/webapp/includes/app.js +++ b/webapp/includes/app.js @@ -10,15 +10,21 @@ const csrfToken = ''; // Initialize document.addEventListener('DOMContentLoaded', () => { - loadEntries(); - loadStats(); + // Only run on index page (has entries table) + if (document.getElementById('entriesTableBody')) { + loadEntries(); + loadStats(); + } loadClientLogos(); loadAndApplyWhitelabel(); // Enable clear all button when "DELETE" is typed - document.getElementById('confirmClearInput').addEventListener('input', (e) => { - document.getElementById('confirmClearBtn').disabled = e.target.value !== 'DELETE'; - }); + const confirmClearInput = document.getElementById('confirmClearInput'); + if (confirmClearInput) { + confirmClearInput.addEventListener('input', (e) => { + document.getElementById('confirmClearBtn').disabled = e.target.value !== 'DELETE'; + }); + } }); // Load and apply whitelabel settings on page load @@ -149,10 +155,14 @@ async function loadClientLogos() { // Load entries async function loadEntries(page = 1) { - currentPage = page; - const searchQuery = document.getElementById('searchInput').value; + const tableContent = document.getElementById('tableContent'); + const searchInput = document.getElementById('searchInput'); + if (!tableContent) return; // Not on index page - document.getElementById('tableContent').innerHTML = '
'; + currentPage = page; + const searchQuery = searchInput ? searchInput.value : ''; + + tableContent.innerHTML = '
'; try { const result = await api('list', { page, search: searchQuery }); @@ -303,11 +313,14 @@ function renderTable(entries, pagination) { // Load stats async function loadStats() { + const statTotal = document.getElementById('statTotal'); + if (!statTotal) return; // Not on index page + try { const result = await api('stats'); if (result.success) { - document.getElementById('statTotal').textContent = result.data.total_entries.toLocaleString(); + statTotal.textContent = result.data.total_entries.toLocaleString(); document.getElementById('statIPv4').textContent = (result.data.ip_versions?.ipv4 || 0).toLocaleString(); document.getElementById('statIPv6').textContent = (result.data.ip_versions?.ipv6 || 0).toLocaleString(); document.getElementById('statCountries').textContent = result.data.by_country?.length || 0; @@ -321,6 +334,8 @@ async function loadStats() { async function loadAuditLog(page = 1) { auditPage = page; const container = document.getElementById('auditLogContainer'); + if (!container) return; + container.innerHTML = '
'; try {