diff --git a/public/app.js b/public/app.js index dc491af..dc189de 100644 --- a/public/app.js +++ b/public/app.js @@ -35,6 +35,7 @@ let currentView = 'restaurants'; let refreshTimer = null; let zabbixUrl = ''; let customerTagValue = 'QWE'; +let hasRendered = false; const REFRESH_MS = 30_000; /* ── Boot ────────────────────────────────────────────────────────────────── */ @@ -56,6 +57,7 @@ function initControls() { document.querySelectorAll('.toggle-btn').forEach(b => b.classList.remove('active')); btn.classList.add('active'); currentView = btn.dataset.view; + hasRendered = false; loadData(); }); }); @@ -77,7 +79,7 @@ function initControls() { /* ── Data loading ────────────────────────────────────────────────────────── */ async function loadData() { setRefreshSpinner(true); - showPageLoading(); + if (!hasRendered) showPageLoading(); try { const endpoint = currentView === 'restaurants' ? '/api/restaurants' : '/api/devices'; @@ -88,6 +90,7 @@ async function loadData() { renderCountryColumns(items, stats); updateSummary(items); setLastUpdated(new Date()); + hasRendered = true; } catch (e) { showPageError(e.message); } finally { @@ -102,7 +105,6 @@ function scheduleRefresh() { /* ── Country column layout ───────────────────────────────────────────────── */ function renderCountryColumns(items, stats = {}) { - // Group by country const byCountry = {}; for (const item of items) { const key = item.country || ''; @@ -112,20 +114,20 @@ function renderCountryColumns(items, stats = {}) { const countries = Object.keys(byCountry).sort(); const wrap = document.getElementById('countries-wrap'); - wrap.innerHTML = ''; if (countries.length === 0) { wrap.innerHTML = '
No items found.