fix: auto-send continues when switching to Telemetry tab, uses random payload

This commit is contained in:
Naeel
2026-04-05 09:17:54 +03:00
parent 233e28579d
commit 911f2bdafe
+12 -7
View File
@@ -267,6 +267,7 @@ const S = {
mqttConnecting: false, mqttConnecting: false,
mqttLog: [], mqttLog: [],
autoTimer: null, autoTimer: null,
autoTopic: '', // топик сохраняется при старте авто — не зависит от DOM
// Телеметрия // Телеметрия
telemetryRows: [], // загруженные строки [{id, device_id, ts, payload}] telemetryRows: [], // загруженные строки [{id, device_id, ts, payload}]
@@ -841,12 +842,12 @@ function deviceLayout(d) {
// switchTab — переключить вкладку без перезагрузки данных устройства // switchTab — переключить вкладку без перезагрузки данных устройства
function switchTab(tab) { function switchTab(tab) {
if (tab !== 'emulator') { // Останавливаем авто-отправку только когда УХОДИМ с вкладки эмулятора
// Останавливаем авто-отправку при уходе с вкладки эмулятора if (S.activeTab === 'emulator' && tab !== 'emulator') {
mqttStopAuto(); mqttStopAuto();
} }
if (tab !== 'telemetry') { // Останавливаем авто-рефреш только когда УХОДИМ с вкладки телеметрии
// Останавливаем авто-рефреш при уходе с вкладки телеметрии if (S.activeTab === 'telemetry' && tab !== 'telemetry') {
clearInterval(S.telemetryRefreshTimer); clearInterval(S.telemetryRefreshTimer);
S.telemetryRefreshTimer = null; S.telemetryRefreshTimer = null;
S.telemetryAutoRefresh = false; S.telemetryAutoRefresh = false;
@@ -1064,10 +1065,14 @@ function toggleAuto() {
if (btn) btn.textContent = 'Запустить'; if (btn) btn.textContent = 'Запустить';
return; return;
} }
const sec = parseInt((document.getElementById('auto-sec') || {}).value) || 5; const sec = parseInt((document.getElementById('auto-sec') || {}).value) || 5;
const topic = (document.getElementById('emu-topic') || {}).value || ''; // Топик читаем из DOM один раз при старте и сохраняем в S.autoTopic —
// чтобы авто-отправка продолжалась при переходе на вкладку Телеметрии
S.autoTopic = (document.getElementById('emu-topic') || {}).value || '';
if (!S.autoTopic) return;
if (btn) btn.textContent = 'Стоп'; if (btn) btn.textContent = 'Стоп';
mqttStartAuto(topic, () => (document.getElementById('emu-payload') || {value:'{}'}).value.trim(), sec); // getPayload генерирует случайные данные каждый тик — не зависит от DOM
mqttStartAuto(S.autoTopic, generateSensorPayload, sec);
} }
// ============================================================= // =============================================================