From 22ba9272bd098fd8d2530cb67d1d2f6d1e41a684 Mon Sep 17 00:00:00 2001
From: butubb <1422726308@qq.com>
Date: Tue, 1 Sep 2026 08:58:21 +0800
Subject: [PATCH] =?UTF-8?q?feat:=20=E5=85=A8=E7=AB=99=E9=BB=98=E8=AE=A4?=
=?UTF-8?q?=E5=8F=AA=E7=9C=8B=E5=9C=A8=E7=BA=BF=E2=80=94=E2=80=94=E7=9B=91?=
=?UTF-8?q?=E6=8E=A7=E9=A1=B5/=E5=A4=A7=E5=B1=8F/=E5=BE=85=E8=BF=9E?=
=?UTF-8?q?=E6=8E=A5=E6=B1=A0=E5=90=8C=E6=AD=A5=E8=BF=87=E6=BB=A4=E7=A6=BB?=
=?UTF-8?q?=E7=BA=BF=E8=AE=BE=E5=A4=87=EF=BC=88=E5=8F=AF=E5=88=87=E6=8D=A2?=
=?UTF-8?q?=E6=9F=A5=E7=9C=8B=E5=85=A8=E9=83=A8=EF=BC=89=EF=BC=9B18051=20m?=
=?UTF-8?q?ain=20=E6=97=A7=E5=AE=9E=E4=BE=8B=E5=B7=B2=E5=81=9C=E6=AD=A2?=
=?UTF-8?q?=EF=BC=88STF=20=E5=B7=B2=E5=88=A0=EF=BC=8C=E6=97=A7=E4=BB=A3?=
=?UTF-8?q?=E7=A0=81=E6=97=A0=E4=BF=9D=E7=95=99=E6=84=8F=E4=B9=89=EF=BC=89?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
static/admin/monitor.js | 8 +++++++-
static/admin/tools.js | 4 ++--
templates/admin/monitor.html | 3 +++
templates/admin/wall.html | 12 +++++++++++-
4 files changed, 23 insertions(+), 4 deletions(-)
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;