diff --git a/VERSION b/VERSION index c4c475d..3fe43a6 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.2.87 +2.2.88 diff --git a/app/modules/telefoni/templates/log.html b/app/modules/telefoni/templates/log.html index d5a020c..020ac8d 100644 --- a/app/modules/telefoni/templates/log.html +++ b/app/modules/telefoni/templates/log.html @@ -1046,39 +1046,38 @@ async function unlinkCase(callId) { document.addEventListener('DOMContentLoaded', async () => { initLinkContactModalEvents(); initLinkSagModalEvents(); + const userFilter = document.getElementById('filterUser'); const fromFilter = document.getElementById('filterFrom'); const toFilter = document.getElementById('filterTo'); const withoutCaseFilter = document.getElementById('filterWithoutCase'); + const tbody = document.getElementById('telefoniRows'); + const ssrCount = Number(tbody?.dataset?.initialCount || '0'); if (userFilter) userFilter.value = ''; if (fromFilter) fromFilter.value = ''; if (toFilter) toFilter.value = ''; if (withoutCaseFilter) withoutCaseFilter.checked = false; telefoniAutoResetTried = false; - telefoniFiltersArmed = false; + // Filters are already cleared above so we can arm immediately. + telefoniFiltersArmed = true; await loadUsers(); - document.getElementById('btnRefresh').addEventListener('click', () => { - telefoniFiltersArmed = true; - loadCalls(); - }); - document.getElementById('filterUser').addEventListener('change', () => { - telefoniFiltersArmed = true; - loadCalls(); - }); - document.getElementById('filterFrom').addEventListener('change', () => { - telefoniFiltersArmed = true; - loadCalls(); - }); - document.getElementById('filterTo').addEventListener('change', () => { - telefoniFiltersArmed = true; - loadCalls(); - }); - document.getElementById('filterWithoutCase').addEventListener('change', () => { - telefoniFiltersArmed = true; - loadCalls(); - }); + + document.getElementById('btnRefresh').addEventListener('click', () => loadCalls()); + document.getElementById('filterUser').addEventListener('change', () => loadCalls()); + document.getElementById('filterFrom').addEventListener('change', () => loadCalls()); + document.getElementById('filterTo').addEventListener('change', () => loadCalls()); + document.getElementById('filterWithoutCase').addEventListener('change', () => loadCalls()); + + if (ssrCount > 0) { + // SSR already rendered rows - no need for an extra API round-trip. + // loadCalls() will fire when the user interacts with filters or Refresh. + telefoniFirstApiLoadDone = true; + return; + } + + // SSR produced no rows (DB error or truly empty) - load via JS. await loadCalls(); });