diff --git a/payload/user/remote_access/pager-webui/www/index.html b/payload/user/remote_access/pager-webui/www/index.html index 3c1efd8..bfa6e7a 100644 --- a/payload/user/remote_access/pager-webui/www/index.html +++ b/payload/user/remote_access/pager-webui/www/index.html @@ -269,7 +269,7 @@ - - + + diff --git a/payload/user/remote_access/pager-webui/www/js/app.js b/payload/user/remote_access/pager-webui/www/js/app.js index 696bf8b..4ca3aa0 100644 --- a/payload/user/remote_access/pager-webui/www/js/app.js +++ b/payload/user/remote_access/pager-webui/www/js/app.js @@ -527,11 +527,21 @@ const Live = (() => { } } function pollRfplan() { - fetch(App.apiBase + '/api/rfplan', { credentials: 'include' }).then((r) => r.json()) - .then((d) => { - rfState = d && typeof d.role === 'string' ? d : null; - renderRfChip(); - }).catch(() => {}); + fetch(App.apiBase + '/api/rfplan', { credentials: 'include' }).then((r) => { + if (!r.ok) throw new Error('http ' + r.status); + return r.json(); + }).then((d) => { + rfState = d && typeof d.role === 'string' ? d : null; + renderRfChip(); + }).catch(() => { + rfState = null; + const el = document.getElementById('rf-chip'); + if (el) { + el.textContent = 'PHY1: ?'; + el.title = 'RF plan unavailable'; + el.className = 'health-chip warn'; + } + }); } function renderRfChip() { const el = document.getElementById('rf-chip'); diff --git a/payload/user/remote_access/pager-webui/www/js/views.js b/payload/user/remote_access/pager-webui/www/js/views.js index d2dcc9a..b5e968e 100644 --- a/payload/user/remote_access/pager-webui/www/js/views.js +++ b/payload/user/remote_access/pager-webui/www/js/views.js @@ -482,6 +482,7 @@ views.pineap = (root) => { const rfResult = h('div', { class: 'mk8-rf-result', text: '' }); function renderRfStatus(d) { const role = d.role || 'idle'; + if (document.activeElement !== rfSel) rfSel.value = role; rfStatusBadge.textContent = role.toUpperCase(); rfStatusBadge.className = 'badge ' + (role === 'uplink' ? (d.assoc ? 'on' : 'warn') : role === 'attack' ? 'warn' : 'off');