feat: 添加双屏控制功能,支持在第二块屏幕上全屏展示内容;更新相关 UI 和逻辑以适应新功能
This commit is contained in:
@@ -1147,6 +1147,13 @@ button { font-family: "Poppins", "PingFang SC", sans-serif; cursor: pointer; tra
|
||||
background: rgba(0, 189, 125, 0.14);
|
||||
transform: translateY(-1px);
|
||||
}
|
||||
.screen-target.active {
|
||||
background: #1D5DCE;
|
||||
border-color: #1D5DCE;
|
||||
color: #fff;
|
||||
box-shadow: 0 4px 12px rgba(29, 93, 206, 0.3);
|
||||
}
|
||||
.screen-target.active:hover { background: #174fb0; }
|
||||
.media-url {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
+15
-1
@@ -10,6 +10,9 @@
|
||||
var fullscreen = !!init.fullscreen;
|
||||
var autostart = !!init.autostart;
|
||||
|
||||
/* 目标屏(双屏独立控制):both | main | secondary */
|
||||
var screenTarget = 'both';
|
||||
|
||||
/* ---------- Toast ---------- */
|
||||
var toastContainer = document.getElementById('toastContainer');
|
||||
function toast(msg, type) {
|
||||
@@ -107,10 +110,19 @@
|
||||
});
|
||||
|
||||
document.addEventListener('click', function (e) {
|
||||
var btn = e.target.closest ? e.target.closest('[data-nav], [data-mqtt], [data-control], [data-action], .copy-btn, [data-preview], #mqttAiSend, #mqttAlertSend') : null;
|
||||
var btn = e.target.closest ? e.target.closest('[data-nav], [data-mqtt], [data-control], [data-action], .copy-btn, [data-preview], .screen-target, #mqttAiSend, #mqttAlertSend') : null;
|
||||
if (!btn) return;
|
||||
e.stopPropagation();
|
||||
|
||||
// 目标屏选择(双屏独立控制)
|
||||
if (btn.classList.contains('screen-target')) {
|
||||
screenTarget = btn.getAttribute('data-screen') || 'both';
|
||||
var btns = document.querySelectorAll('.screen-target');
|
||||
for (var i = 0; i < btns.length; i++) btns[i].classList.toggle('active', btns[i] === btn);
|
||||
toast('目标屏:' + ({ both: '全部(镜像)', main: '仅主屏', secondary: '仅副屏' }[screenTarget] || screenTarget));
|
||||
return;
|
||||
}
|
||||
|
||||
// 预览
|
||||
if (btn.hasAttribute('data-preview')) { openPreview(btn.closest('.media-card')); return; }
|
||||
|
||||
@@ -129,6 +141,8 @@
|
||||
if (btn.hasAttribute('data-mqtt')) {
|
||||
var cmd = null;
|
||||
try { cmd = JSON.parse(btn.getAttribute('data-mqtt')); } catch (err) { toast('指令 JSON 错误', 'error'); return; }
|
||||
// 双屏独立控制:除「双屏开关」外,注入目标屏(main/secondary/both)
|
||||
if (cmd.action !== 'dual_screen') cmd.screen = screenTarget;
|
||||
post('/api/display/command', cmd, function (d) {
|
||||
toast(d && d.ok !== false ? '指令已发送:' + (cmd.action || '') : '发送失败(MQTT 未连接?)',
|
||||
d && d.ok !== false ? 'ok' : 'error');
|
||||
|
||||
Reference in New Issue
Block a user