From d913064d700cb430a6d8c84180fa6239d27e8e9a Mon Sep 17 00:00:00 2001 From: Henry <63872314+Fingolfin7@users.noreply.github.com> Date: Mon, 13 Apr 2026 14:56:29 +0200 Subject: [PATCH] Fix dashboard timer polling sync behavior --- core/static/core/js/dynamic_timers.js | 16 +++++++++++----- core/templates/core/dashboard.html | 4 ++-- core/templates/core/remove_timer.html | 4 ++-- core/templates/core/stop_timer.html | 4 ++-- core/templates/core/timers.html | 2 +- 5 files changed, 18 insertions(+), 12 deletions(-) diff --git a/core/static/core/js/dynamic_timers.js b/core/static/core/js/dynamic_timers.js index a571c9f..9cb0fee 100644 --- a/core/static/core/js/dynamic_timers.js +++ b/core/static/core/js/dynamic_timers.js @@ -1,6 +1,7 @@ $(document).ready(function() { const ACTIVE_TIMERS_SELECTOR = '#active-timers'; - const TIMER_CARD_SELECTOR = `${ACTIVE_TIMERS_SELECTOR} .card[id^="timer-"]`; + const TIMER_CARD_SELECTOR = `${ACTIVE_TIMERS_SELECTOR} [data-timer-id]`; + const DASHBOARD_PATH = '/'; function updateDurations() { $(TIMER_CARD_SELECTOR).each(function() { @@ -43,7 +44,7 @@ $(document).ready(function() { function getLocalTimerIds() { return $(TIMER_CARD_SELECTOR) .map(function() { - return parseInt($(this).attr('id').replace('timer-', ''), 10); + return parseInt($(this).data('timer-id'), 10); }) .get() .filter(Number.isFinite) @@ -52,9 +53,6 @@ $(document).ready(function() { function syncActiveTimers() { const timersContainer = $(ACTIVE_TIMERS_SELECTOR); - if (timersContainer.length === 0) { - return; - } $.getJSON('/api/list_active_sessions/') .done(function(sessions) { @@ -62,6 +60,14 @@ $(document).ready(function() { .filter(session => session.is_active) .map(session => session.id) .sort((a, b) => a - b); + + if (timersContainer.length === 0) { + if (window.location.pathname === DASHBOARD_PATH && serverIds.length > 0) { + window.location.reload(); + } + return; + } + const localIds = getLocalTimerIds(); const serverSet = new Set(serverIds); const allLocalTimersStillActive = localIds.every(id => serverSet.has(id)); diff --git a/core/templates/core/dashboard.html b/core/templates/core/dashboard.html index 8fa5dd6..bc996ae 100644 --- a/core/templates/core/dashboard.html +++ b/core/templates/core/dashboard.html @@ -35,7 +35,7 @@ {% if active_timers %} -
+

Active Timers