diff --git a/static/admin/monitor.js b/static/admin/monitor.js index 2e5a9b3..529b9f0 100644 --- a/static/admin/monitor.js +++ b/static/admin/monitor.js @@ -307,8 +307,14 @@ function renderDevices(){ if(_sig===_devicesSig)return; _devicesSig=_sig; // 排序由 applyListPager 统一处理(sortValue + _lpSort) + // 「只看在线」勾选时过滤离线设备(默认勾选) + const onlyOnline=document.getElementById('monitor-filter-online') + ? document.getElementById('monitor-filter-online').checked : true; setListPager('devices',{ - data:()=>_statusData.devices||[], + data:()=>{ + const all=_statusData.devices||[]; + return onlyOnline? all.filter(d=>d.present) : all; + }, filter:(dev,kw)=>((dev.serial||'').toLowerCase().includes(kw)||(dev.model||'').toLowerCase().includes(kw)||(dev.foreground_app||'').toLowerCase().includes(kw)||(dev.task_job||'').toLowerCase().includes(kw)||(dev.current_action||'').toLowerCase().includes(kw)), sortValue:_sortValue, render:renderDeviceRow, diff --git a/static/admin/tools.js b/static/admin/tools.js index 4c7f1d9..657ca2a 100644 --- a/static/admin/tools.js +++ b/static/admin/tools.js @@ -59,8 +59,8 @@ function loadDiscovery(){ if(r.last_error)txt+=' · ⚠ '+esc(r.last_error); status.textContent=txt; }else{status.textContent='尚未扫描';} - // 待连接表格 - const rows=(r.pending||[]); + // 待连接表格:只显示在线设备(离线候选不可确认连接,隐藏;恢复在线后自动出现) + const rows=(r.pending||[]).filter(x=>x.online); const tb=document.getElementById('tb-discovery'); if(!tb)return; if(!rows.length){ diff --git a/templates/admin/monitor.html b/templates/admin/monitor.html index 5b41db9..93c4534 100644 --- a/templates/admin/monitor.html +++ b/templates/admin/monitor.html @@ -343,6 +343,9 @@ body{background:var(--bg);font-family:var(--body);color:var(--text);font-size:14 + · 每 5 秒自动刷新 · · 未选中 diff --git a/templates/admin/wall.html b/templates/admin/wall.html index e057783..c995fa9 100644 --- a/templates/admin/wall.html +++ b/templates/admin/wall.html @@ -116,6 +116,9 @@ main{position:relative;z-index:2;height:calc(100vh - 88px);overflow-y:auto;paddi
设备监控大屏
+
--:--:--
@@ -203,11 +206,18 @@ async function refreshStatus(){ JSON.stringify(_devices.map(d=>[d.serial,d.present,d.worker_status,d.task_job,d.current_action,d.progress,d.device_name,d.model])); _devices=devs; renderStats(devs); - if(changed)renderGrid(devs); + if(changed)renderGrid(visibleDevs(devs)); // 操作弹窗打开时同步刷新其标题状态 if(_ctrlSerial)updateCtrlHead(); } +// 「只看在线」勾选时过滤离线设备(默认勾选) +function visibleDevs(devs){ + const onlyOnline=document.getElementById('wall-filter-online') + ? document.getElementById('wall-filter-online').checked : true; + return onlyOnline? devs.filter(d=>d.present) : devs; +} + function renderStats(devs){ const online=devs.filter(d=>d.present).length; const running=devs.filter(d=>['running','connecting'].includes(d.worker_status)).length;