Skip to content

Commit f5edfa5

Browse files
authored
Merge pull request #13 from Fingolfin7/codex/fix-polling-issues-on-home-page
Fix dashboard timer polling loop and sync updates
2 parents f9fcd09 + d913064 commit f5edfa5

5 files changed

Lines changed: 18 additions & 12 deletions

File tree

core/static/core/js/dynamic_timers.js

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
$(document).ready(function() {
22
const ACTIVE_TIMERS_SELECTOR = '#active-timers';
3-
const TIMER_CARD_SELECTOR = `${ACTIVE_TIMERS_SELECTOR} .card[id^="timer-"]`;
3+
const TIMER_CARD_SELECTOR = `${ACTIVE_TIMERS_SELECTOR} [data-timer-id]`;
4+
const DASHBOARD_PATH = '/';
45

56
function updateDurations() {
67
$(TIMER_CARD_SELECTOR).each(function() {
@@ -43,7 +44,7 @@ $(document).ready(function() {
4344
function getLocalTimerIds() {
4445
return $(TIMER_CARD_SELECTOR)
4546
.map(function() {
46-
return parseInt($(this).attr('id').replace('timer-', ''), 10);
47+
return parseInt($(this).data('timer-id'), 10);
4748
})
4849
.get()
4950
.filter(Number.isFinite)
@@ -52,16 +53,21 @@ $(document).ready(function() {
5253

5354
function syncActiveTimers() {
5455
const timersContainer = $(ACTIVE_TIMERS_SELECTOR);
55-
if (timersContainer.length === 0) {
56-
return;
57-
}
5856

5957
$.getJSON('/api/list_active_sessions/')
6058
.done(function(sessions) {
6159
const serverIds = sessions
6260
.filter(session => session.is_active)
6361
.map(session => session.id)
6462
.sort((a, b) => a - b);
63+
64+
if (timersContainer.length === 0) {
65+
if (window.location.pathname === DASHBOARD_PATH && serverIds.length > 0) {
66+
window.location.reload();
67+
}
68+
return;
69+
}
70+
6571
const localIds = getLocalTimerIds();
6672
const serverSet = new Set(serverIds);
6773
const allLocalTimersStillActive = localIds.every(id => serverSet.has(id));

core/templates/core/dashboard.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535

3636
<!-- Active Timers (if any) -->
3737
{% if active_timers %}
38-
<section id="active-timers" class="card" style="border-left: 4px solid var(--main-yellow);">
38+
<section id="active-timers" class="card" data-partial-list="true" data-max-visible="5" style="border-left: 4px solid var(--main-yellow);">
3939
<h2 class="section-header collapsible-header" data-target="active-timers-body">
4040
<span><i class="fas fa-play-circle text-yellow"></i> <u>Active Timers</u></span>
4141
<button type="button" class="collapse-toggle" aria-expanded="true" aria-controls="active-timers-body">
@@ -44,7 +44,7 @@ <h2 class="section-header collapsible-header" data-target="active-timers-body">
4444
</h2>
4545
<div id="active-timers-body" class="collapsible-body active-timers-list">
4646
{% for timer in active_timers %}
47-
<div class="active-timer-item card" style="display: flex; justify-content: space-between; align-items: center; padding: 0.75rem; background: rgba(234, 179, 8, 0.1); border: 1px solid rgba(234, 179, 8, 0.2); border-radius: 4px; width: 100%;" data-start-time="{{ timer.start_time|utc_time_formatter }}">
47+
<div class="active-timer-item card" data-timer-id="{{ timer.id }}" style="display: flex; justify-content: space-between; align-items: center; padding: 0.75rem; background: rgba(234, 179, 8, 0.1); border: 1px solid rgba(234, 179, 8, 0.2); border-radius: 4px; width: 100%;" data-start-time="{{ timer.start_time|utc_time_formatter }}">
4848
<div style="display: flex; flex-wrap: wrap; gap: 0.5rem; align-items: center;">
4949
<span class="text-red timer-project" style="font-weight: bold;">{{ timer.project.name }}</span>
5050
{% if timer.subprojects.all %}

core/templates/core/remove_timer.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313
<h3>Are you sure you want to remove this timer?</h3>
1414

15-
<div class="card" id="timer-{{ timer.id }}" data-start-time="{{ timer.start_time|utc_time_formatter }}">
15+
<div class="card" id="timer-{{ timer.id }}" data-timer-id="{{ timer.id }}" data-start-time="{{ timer.start_time|utc_time_formatter }}">
1616
<table class="timer-row">
1717
<tr>
1818
<td class="text-red">
@@ -46,4 +46,4 @@ <h3>Are you sure you want to remove this timer?</h3>
4646
</button>
4747
</div>
4848
</form>
49-
{% endblock %}
49+
{% endblock %}

core/templates/core/stop_timer.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
<form method="post" enctype="multipart/form-data">
1111
{% csrf_token %}
1212

13-
<div class="card" id="timer-{{ timer.id }}" data-start-time="{{ timer.start_time|utc_time_formatter }}">
13+
<div class="card" id="timer-{{ timer.id }}" data-timer-id="{{ timer.id }}" data-start-time="{{ timer.start_time|utc_time_formatter }}">
1414
<table class="timer-row">
1515
<tr>
1616
<td>
@@ -44,4 +44,4 @@
4444
</button>
4545
</div>
4646
</form>
47-
{% endblock %}
47+
{% endblock %}

core/templates/core/timers.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
</section>
1616
<section id="active-timers">
1717
{% for timer in timers %}
18-
<div class="card" id="timer-{{ timer.id }}" data-start-time="{{ timer.start_time|utc_time_formatter }}">
18+
<div class="card" id="timer-{{ timer.id }}" data-timer-id="{{ timer.id }}" data-start-time="{{ timer.start_time|utc_time_formatter }}">
1919
<div class="timer-row-flex">
2020
<span>[{{ forloop.counter0 }}]: Started</span>
2121
<span class="text-red">

0 commit comments

Comments
 (0)