hotfix: ignore restored telephony filters on first load
This commit is contained in:
parent
415abb058a
commit
aa2aea555d
14
RELEASE_NOTES_v2.2.87.md
Normal file
14
RELEASE_NOTES_v2.2.87.md
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
# Release Notes v2.2.87
|
||||||
|
|
||||||
|
Dato: 2026-05-05
|
||||||
|
|
||||||
|
## Hotfix
|
||||||
|
|
||||||
|
- Telefoni: Foerste auto-load ignorerer nu browser-restored filterfelter (dato/user/uden sag).
|
||||||
|
- Dette forhindrer at opkald vises ved load og derefter forsvinder efter ca. 1 sekund.
|
||||||
|
- Filtre aktiveres stadig normalt ved brugerens egen interaktion.
|
||||||
|
|
||||||
|
## Berorte filer
|
||||||
|
|
||||||
|
- `app/modules/telefoni/templates/log.html`
|
||||||
|
- `VERSION`
|
||||||
@ -214,6 +214,7 @@ function escapeHtml(str) {
|
|||||||
let telefoniCurrentUserId = null;
|
let telefoniCurrentUserId = null;
|
||||||
let telefoniAutoResetTried = false;
|
let telefoniAutoResetTried = false;
|
||||||
let telefoniFirstApiLoadDone = false;
|
let telefoniFirstApiLoadDone = false;
|
||||||
|
let telefoniFiltersArmed = false;
|
||||||
const telefoniCallMap = new Map();
|
const telefoniCallMap = new Map();
|
||||||
const linkSagState = {
|
const linkSagState = {
|
||||||
callId: null,
|
callId: null,
|
||||||
@ -862,10 +863,28 @@ async function loadCalls() {
|
|||||||
const hadServerRows = Number.isFinite(initialCount) && initialCount > 0;
|
const hadServerRows = Number.isFinite(initialCount) && initialCount > 0;
|
||||||
tbody.innerHTML = '<tr><td colspan="7" class="text-muted small"><span class="spinner-border spinner-border-sm me-2"></span>Indlæser...</td></tr>';
|
tbody.innerHTML = '<tr><td colspan="7" class="text-muted small"><span class="spinner-border spinner-border-sm me-2"></span>Indlæser...</td></tr>';
|
||||||
|
|
||||||
const userId = document.getElementById('filterUser').value;
|
const userEl = document.getElementById('filterUser');
|
||||||
const from = document.getElementById('filterFrom').value;
|
const fromEl = document.getElementById('filterFrom');
|
||||||
const to = document.getElementById('filterTo').value;
|
const toEl = document.getElementById('filterTo');
|
||||||
const withoutCase = document.getElementById('filterWithoutCase').checked;
|
const withoutCaseEl = document.getElementById('filterWithoutCase');
|
||||||
|
|
||||||
|
let userId = userEl.value;
|
||||||
|
let from = fromEl.value;
|
||||||
|
let to = toEl.value;
|
||||||
|
let withoutCase = withoutCaseEl.checked;
|
||||||
|
|
||||||
|
// On first automatic load, ignore browser-restored filter values.
|
||||||
|
// Filters are only applied after explicit user interaction.
|
||||||
|
if (!telefoniFiltersArmed) {
|
||||||
|
userId = '';
|
||||||
|
from = '';
|
||||||
|
to = '';
|
||||||
|
withoutCase = false;
|
||||||
|
userEl.value = '';
|
||||||
|
fromEl.value = '';
|
||||||
|
toEl.value = '';
|
||||||
|
withoutCaseEl.checked = false;
|
||||||
|
}
|
||||||
|
|
||||||
const qs = new URLSearchParams();
|
const qs = new URLSearchParams();
|
||||||
if (userId) qs.set('user_id', userId);
|
if (userId) qs.set('user_id', userId);
|
||||||
@ -908,6 +927,9 @@ async function loadCalls() {
|
|||||||
|
|
||||||
telefoniAutoResetTried = false;
|
telefoniAutoResetTried = false;
|
||||||
telefoniFirstApiLoadDone = true;
|
telefoniFirstApiLoadDone = true;
|
||||||
|
if (!telefoniFiltersArmed) {
|
||||||
|
telefoniFiltersArmed = true;
|
||||||
|
}
|
||||||
|
|
||||||
tbody.innerHTML = rows.map(r => {
|
tbody.innerHTML = rows.map(r => {
|
||||||
const started = r.started_at ? new Date(r.started_at) : null;
|
const started = r.started_at ? new Date(r.started_at) : null;
|
||||||
@ -1034,13 +1056,29 @@ document.addEventListener('DOMContentLoaded', async () => {
|
|||||||
if (toFilter) toFilter.value = '';
|
if (toFilter) toFilter.value = '';
|
||||||
if (withoutCaseFilter) withoutCaseFilter.checked = false;
|
if (withoutCaseFilter) withoutCaseFilter.checked = false;
|
||||||
telefoniAutoResetTried = false;
|
telefoniAutoResetTried = false;
|
||||||
|
telefoniFiltersArmed = false;
|
||||||
|
|
||||||
await loadUsers();
|
await loadUsers();
|
||||||
document.getElementById('btnRefresh').addEventListener('click', loadCalls);
|
document.getElementById('btnRefresh').addEventListener('click', () => {
|
||||||
document.getElementById('filterUser').addEventListener('change', loadCalls);
|
telefoniFiltersArmed = true;
|
||||||
document.getElementById('filterFrom').addEventListener('change', loadCalls);
|
loadCalls();
|
||||||
document.getElementById('filterTo').addEventListener('change', loadCalls);
|
});
|
||||||
document.getElementById('filterWithoutCase').addEventListener('change', 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();
|
||||||
|
});
|
||||||
await loadCalls();
|
await loadCalls();
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user