Skip to content

Commit 5f82ec0

Browse files
committed
Simplify the UI a bit
1 parent 973c74c commit 5f82ec0

File tree

2 files changed

+35
-38
lines changed

2 files changed

+35
-38
lines changed

dnscrypt-proxy/static/js/monitoring.js

Lines changed: 35 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -140,41 +140,55 @@ function safeUpdateDashboard(data) {
140140
: (Array.isArray(data.servers) ? data.servers : []);
141141

142142
if (resolverRows.length > 0) {
143-
resolverRows.forEach(resolver => {
143+
// Sort by total queries (desc), then avg response, name, and last seen.
144+
const sortedResolvers = resolverRows.slice().sort((a, b) => {
145+
const totalQueries = resolver => {
146+
if (typeof resolver.total_queries === 'number') {
147+
return resolver.total_queries;
148+
}
149+
if (typeof resolver.queries === 'number') {
150+
return resolver.queries;
151+
}
152+
return -1;
153+
};
154+
const avgResponse = resolver => {
155+
return typeof resolver.avg_response_ms === 'number' ? resolver.avg_response_ms : Number.POSITIVE_INFINITY;
156+
};
157+
const name = resolver => (resolver.name || '').toLowerCase();
158+
const lastSeen = resolver => {
159+
const value = resolver.last_update;
160+
if (!value) {
161+
return 0;
162+
}
163+
const parsed = Date.parse(value);
164+
return Number.isNaN(parsed) ? 0 : parsed;
165+
};
166+
167+
return (
168+
(totalQueries(b) - totalQueries(a)) ||
169+
(avgResponse(a) - avgResponse(b)) ||
170+
(name(a) > name(b) ? 1 : name(a) < name(b) ? -1 : 0) ||
171+
(lastSeen(b) - lastSeen(a))
172+
);
173+
});
174+
175+
sortedResolvers.forEach(resolver => {
144176
const row = resolverTable.insertRow();
145177
row.insertCell(0).textContent = resolver.name || 'Unknown';
146178
row.insertCell(1).textContent = formatStatus(resolver.status);
147179
row.insertCell(2).textContent = formatPercent(resolver.success_rate);
148180
row.insertCell(3).textContent = formatNumber(resolver.total_queries !== undefined ? resolver.total_queries : resolver.queries);
149181
row.insertCell(4).textContent = formatNumber(resolver.failed_queries);
150182
row.insertCell(5).textContent = formatMilliseconds(resolver.avg_response_ms);
151-
row.insertCell(6).textContent = formatMilliseconds(resolver.avg_rtt_ms);
152-
row.insertCell(7).textContent = formatTimestamp(resolver.last_update);
183+
row.insertCell(6).textContent = formatTimestamp(resolver.last_update);
153184
});
154185
} else {
155186
const row = resolverTable.insertRow();
156187
const cell = row.insertCell(0);
157-
cell.colSpan = 8;
188+
cell.colSpan = 7;
158189
cell.textContent = 'No resolver data yet';
159190
}
160191

161-
// Update server performance table
162-
const serverTable = document.getElementById('server-table').getElementsByTagName('tbody')[0];
163-
serverTable.innerHTML = '';
164-
if (data.servers && Array.isArray(data.servers) && data.servers.length > 0) {
165-
data.servers.forEach(server => {
166-
const row = serverTable.insertRow();
167-
row.insertCell(0).textContent = server.name || 'Unknown';
168-
row.insertCell(1).textContent = formatNumber(server.queries);
169-
row.insertCell(2).textContent = formatMilliseconds(server.avg_response_ms);
170-
});
171-
} else {
172-
const row = serverTable.insertRow();
173-
const cell = row.insertCell(0);
174-
cell.colSpan = 3;
175-
cell.textContent = 'No server samples yet';
176-
}
177-
178192
// Update query types table
179193
const queryTypesTable = document.getElementById('query-types-table').getElementsByTagName('tbody')[0];
180194
queryTypesTable.innerHTML = '';

dnscrypt-proxy/static/templates/dashboard.html

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,6 @@ <h1>DNSCrypt Proxy Monitoring Dashboard</h1>
132132
<a href="#cache-performance">Cache</a>
133133
<a href="#query-types">Query Types</a>
134134
<a href="#resolver-health">Resolvers</a>
135-
<a href="#server-performance">Servers</a>
136135
<a href="#top-domains">Top Domains</a>
137136
<a href="#source-refresh">Sources</a>
138137
<a href="#recent-queries">Recent Queries</a>
@@ -238,7 +237,6 @@ <h2 id="resolver-health">Resolver Health</h2>
238237
<th>Total</th>
239238
<th>Failures</th>
240239
<th>Avg Response</th>
241-
<th>Baseline RTT</th>
242240
<th>Last Seen</th>
243241
</tr>
244242
</thead>
@@ -247,21 +245,6 @@ <h2 id="resolver-health">Resolver Health</h2>
247245
</table>
248246
</div>
249247

250-
<div class="card">
251-
<h2 id="server-performance">Server Performance</h2>
252-
<table id="server-table">
253-
<thead>
254-
<tr>
255-
<th>Server</th>
256-
<th>Queries</th>
257-
<th>Avg Response</th>
258-
</tr>
259-
</thead>
260-
<tbody>
261-
</tbody>
262-
</table>
263-
</div>
264-
265248
<div class="card">
266249
<h2 id="top-domains">Top Domains</h2>
267250
<table id="domains-table">

0 commit comments

Comments
 (0)