Ensure latest messages are only reported per probe type.

Commit
d684b2028996a2afaae63a4c5414d0c6cd9ebb8e
Author
Marius Peter <dev@marius-peter.com>
Author date
Committer
Marius Peter <dev@marius-peter.com>
Committer date
Changed files
roles/dashboard/public/js/dashboard.js
index fb82bb20..6f3f5fd6 100644..100644
@@ -161,7 +161,10 @@
161 161
162 162 function renderMessageTable(probe, rows) {
163 163 const body = messageTableBody(probe);
164 Removed: const latestRows = rows.slice(-10).reverse();
164 Added: const latestRows = rows
165 Added: .filter(row => row.probe === probe)
166 Added: .slice(-10)
167 Added: .reverse();
165 168
166 169 if (!latestRows.length) {
167 170 const emptyRow = document.createElement("tr");
roles/dashboard/t/basic.t
index 8727dc91..d173c1a5 100644..100644
@@ -67,6 +67,19 @@
67 67
68 68 $t->app->sqlite->db->query(
69 69 q{
70 Added: INSERT INTO readings (received_at, timestamp, node, probe, value, unit)
71 Added: VALUES (?, ?, ?, ?, ?, ?)
72 Added: },
73 Added: '2026-07-05T12:00:20Z',
74 Added: '2026-07-05T12:00:15Z',
75 Added: 'fapg-daq-zero-do-01',
76 Added: 'do',
77 Added: 8.34,
78 Added: 'mg/L'
79 Added: );
80 Added:
81 Added: $t->app->sqlite->db->query(
82 Added: q{
70 83 INSERT INTO node_status (
71 84 received_at, topic, schema, timestamp, probe, node, status, message, payload
72 85 ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
@@ -103,7 +116,8 @@
103 116 ->status_is(200)
104 117 ->content_like(qr/FAPG DAQ Dashboard/)
105 118 ->content_like(qr/Dissolved Oxygen/)
106 Removed: ->content_like(qr/Last 10 Reading Messages/)
119 Added: ->content_like(qr/Last 10 pH Reading Messages/)
120 Added: ->content_like(qr/Last 10 Dissolved Oxygen Reading Messages/)
107 121 ->content_like(qr/status-pill-list/)
108 122 ->content_unlike(qr/Pi Zero 01/)
109 123 ->content_unlike(qr/Connection Status/);
@@ -112,7 +126,13 @@
112 126 ->status_is(200)
113 127 ->json_is( '/probe' => 'ph' )
114 128 ->json_is( '/readings/0/received_at' => '2026-07-05T12:00:10Z' )
115 Removed: ->json_is( '/readings/0/value' => 7.12 );
129 Added: ->json_is( '/readings/0/value' => 7.12 )
130 Added: ->json_hasnt('/readings/1');
131 Added:
132 Added: $t->get_ok('/api/readings/do')
133 Added: ->status_is(200)
134 Added: ->json_is( '/probe' => 'do' )
135 Added: ->json_is( '/readings/0/value' => 8.34 );
116 136
117 137 $t->get_ok('/api/status/ph')
118 138 ->status_is(200)
roles/dashboard/templates/dashboard/index.html.ep
index 4596017c..1aae490d 100644..100644
@@ -63,7 +63,7 @@
63 63 </p>
64 64
65 65 <section class="message-log" aria-label="Last ten reading messages for <%= $probe->{label} %>">
66 Removed: <h3>Last 10 Reading Messages</h3>
66 Added: <h3>Last 10 <%= $probe->{label} %> Reading Messages</h3>
67 67 <div class="message-table-wrap">
68 68 <table class="message-table">
69 69 <thead>