diff --git a/public/observer-neighbors-tool.js b/public/observer-neighbors-tool.js
index aa150856..cc17225d 100644
--- a/public/observer-neighbors-tool.js
+++ b/public/observer-neighbors-tool.js
@@ -83,6 +83,11 @@
return '' + (sortState.dir === 'asc' ? '↑' : '↓') + '';
}
+ function sortTh(col, label) {
+ var cls = 'sortable' + (col === sortState.col ? ' sort-active' : '');
+ return '
' + label + sortArrow(col) + ' | ';
+ }
+
function matchesFilter(row) {
if (!filterText) return true;
var observer = (row.observerName || row.observerId || '').toLowerCase();
@@ -149,12 +154,12 @@
wrap.innerHTML =
'' +
- '| Observer' + sortArrow('observer') + ' | ' +
- 'Neighbor' + sortArrow('neighbor') + ' | ' +
+ sortTh('observer', 'Observer') +
+ sortTh('neighbor', 'Neighbor') +
'Configured Scope | ' +
- 'Packet Evidence' + sortArrow('evidence') + ' | ' +
- 'Status' + sortArrow('status') + ' | ' +
- 'Reported' + sortArrow('reportedAt') + ' | ' +
+ sortTh('evidence', 'Packet Evidence') +
+ sortTh('status', 'Status') +
+ sortTh('reportedAt', 'Reported') +
'
' + rows + '
';
var table = document.getElementById('obs-nb-table');
diff --git a/test-observer-neighbors-tool.js b/test-observer-neighbors-tool.js
index 6bee2e33..4a19a51b 100644
--- a/test-observer-neighbors-tool.js
+++ b/test-observer-neighbors-tool.js
@@ -151,6 +151,15 @@ function waitForLoad() {
assert.strictEqual(sv({ neighborPubkey: 'AABB' }, 'neighbor'), 'aabb');
});
+ await test('the default-sorted column (Observer) header carries sort-active', async () => {
+ const sb = initWith([makeRow(), makeRow({ observerId: 'obs2', observerName: 'Observer Two' })]);
+ await waitForLoad();
+ const wrap = sb.__docStore['obs-nb-table-wrap'];
+ assert.ok(/data-sort-col="observer"[^>]*class="sortable sort-active"|class="sortable sort-active"[^>]*data-sort-col="observer"/.test(wrap.innerHTML),
+ `expected Observer header to carry sort-active by default; got: ${wrap.innerHTML.slice(0, 400)}`);
+ assert.ok(!/data-sort-col="neighbor"[^>]*sort-active/.test(wrap.innerHTML), 'Neighbor header should not be marked active');
+ });
+
await test('sortValue: evidence sorts booleans as 1/0', () => {
const sb = createSandbox([]);
const sv = sb.window.ObserverNeighborsTool.sortValue;