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 = '' + - '' + - '' + + sortTh('observer', 'Observer') + + sortTh('neighbor', 'Neighbor') + '' + - '' + - '' + - '' + + sortTh('evidence', 'Packet Evidence') + + sortTh('status', 'Status') + + sortTh('reportedAt', 'Reported') + '' + rows + '
Observer' + sortArrow('observer') + 'Neighbor' + sortArrow('neighbor') + 'Configured ScopePacket Evidence' + sortArrow('evidence') + 'Status' + sortArrow('status') + 'Reported' + sortArrow('reportedAt') + '
'; 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;