[Perl] DAQ system for the FAPG.
Ensure latest messages are only reported per probe type.
Changed files
roles/dashboard/public/js/dashboard.js
@@ -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
@@ -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
@@ -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>