feat: 全站默认只看在线——监控页/大屏/待连接池同步过滤离线设备(可切换查看全部);18051 main 旧实例已停止(STF 已删,旧代码无保留意义)
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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){
|
||||
|
||||
@@ -343,6 +343,9 @@ body{background:var(--bg);font-family:var(--body);color:var(--text);font-size:14
|
||||
<button class="btn" onclick="screenAllDevices('on')" data-perm="devices" title="所有在线设备亮屏并解锁">一键亮屏</button>
|
||||
<button class="btn" onclick="screenAllDevices('off')" data-perm="devices" title="所有在线设备息屏(运行中任务会中断)">一键息屏</button>
|
||||
<button class="btn" onclick="loadMonitor()">刷新</button>
|
||||
<label style="display:inline-flex;align-items:center;gap:4px;margin:0 6px">
|
||||
<input type="checkbox" id="monitor-filter-online" checked onchange="loadMonitor()"> 只看在线
|
||||
</label>
|
||||
<input class="form-control list-search" id="search-devices" placeholder="搜索设备/型号/App/任务...">
|
||||
<span class="hint"><span id="fg-status"></span> · 每 5 秒自动刷新 · <span id="srvTime"></span> · <span id="sel-count">未选中</span></span>
|
||||
</div>
|
||||
|
||||
@@ -116,6 +116,9 @@ main{position:relative;z-index:2;height:calc(100vh - 88px);overflow-y:auto;paddi
|
||||
<header>
|
||||
<div class="title">设备监控大屏</div>
|
||||
<div class="stats" id="wall-stats"></div>
|
||||
<label class="wall-btn" style="display:inline-flex;align-items:center;gap:4px;cursor:pointer">
|
||||
<input type="checkbox" id="wall-filter-online" checked onchange="refreshStatus()"> 只看在线
|
||||
</label>
|
||||
<button class="wall-btn" id="btn-wake-all" onclick="wakeAll()">💡 一键亮屏</button>
|
||||
<div class="clock"><span id="wall-clock">--:--:--</span><div class="date" id="wall-date"></div></div>
|
||||
</header>
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user