Spaces:
Running
Running
Update templates/index.html
Browse files- templates/index.html +46 -0
templates/index.html
CHANGED
@@ -309,6 +309,10 @@
|
|
309 |
<span class="status-label">MQTT Connection:</span>
|
310 |
<span id="connectionStatus" class="status-value disconnected">Disconnected</span>
|
311 |
</div>
|
|
|
|
|
|
|
|
|
312 |
<div class="status-row">
|
313 |
<span class="status-label">Last Message:</span>
|
314 |
<span id="lastMessage" class="status-value">Never</span>
|
@@ -319,6 +323,7 @@
|
|
319 |
<button id="toggleBtn" class="toggle-btn">π Toggle Relay</button>
|
320 |
<button id="onBtn" class="on-btn">π’ Turn ON</button>
|
321 |
<button id="offBtn" class="off-btn">π΄ Turn OFF</button>
|
|
|
322 |
</div>
|
323 |
|
324 |
<div class="log-section">
|
@@ -359,6 +364,16 @@
|
|
359 |
connectionStatusEl.textContent = data.connection_status;
|
360 |
connectionStatusEl.className = data.connection_status === 'Connected' ? 'status-value connected' : 'status-value disconnected';
|
361 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
362 |
// Update last message time
|
363 |
document.getElementById('lastMessage').textContent = data.last_message_time;
|
364 |
|
@@ -416,6 +431,8 @@
|
|
416 |
button.innerHTML = 'π΄ Turn OFF';
|
417 |
} else if (button.id === 'clearLogBtn') {
|
418 |
button.innerHTML = 'ποΈ Clear Log';
|
|
|
|
|
419 |
}
|
420 |
}
|
421 |
}
|
@@ -535,6 +552,35 @@
|
|
535 |
setButtonLoading(this, false);
|
536 |
});
|
537 |
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
538 |
</script>
|
539 |
</body>
|
540 |
</html>
|
|
|
309 |
<span class="status-label">MQTT Connection:</span>
|
310 |
<span id="connectionStatus" class="status-value disconnected">Disconnected</span>
|
311 |
</div>
|
312 |
+
<div class="status-row" id="errorRow" style="display: none;">
|
313 |
+
<span class="status-label">Error:</span>
|
314 |
+
<span id="connectionError" class="status-value" style="background: #dc3545; color: white; font-size: 0.9em;"></span>
|
315 |
+
</div>
|
316 |
<div class="status-row">
|
317 |
<span class="status-label">Last Message:</span>
|
318 |
<span id="lastMessage" class="status-value">Never</span>
|
|
|
323 |
<button id="toggleBtn" class="toggle-btn">π Toggle Relay</button>
|
324 |
<button id="onBtn" class="on-btn">π’ Turn ON</button>
|
325 |
<button id="offBtn" class="off-btn">π΄ Turn OFF</button>
|
326 |
+
<button id="reconnectBtn" class="clear-btn">π Reconnect MQTT</button>
|
327 |
</div>
|
328 |
|
329 |
<div class="log-section">
|
|
|
364 |
connectionStatusEl.textContent = data.connection_status;
|
365 |
connectionStatusEl.className = data.connection_status === 'Connected' ? 'status-value connected' : 'status-value disconnected';
|
366 |
|
367 |
+
// Update connection error
|
368 |
+
const errorRow = document.getElementById('errorRow');
|
369 |
+
const errorEl = document.getElementById('connectionError');
|
370 |
+
if (data.connection_error) {
|
371 |
+
errorEl.textContent = data.connection_error;
|
372 |
+
errorRow.style.display = 'flex';
|
373 |
+
} else {
|
374 |
+
errorRow.style.display = 'none';
|
375 |
+
}
|
376 |
+
|
377 |
// Update last message time
|
378 |
document.getElementById('lastMessage').textContent = data.last_message_time;
|
379 |
|
|
|
431 |
button.innerHTML = 'π΄ Turn OFF';
|
432 |
} else if (button.id === 'clearLogBtn') {
|
433 |
button.innerHTML = 'ποΈ Clear Log';
|
434 |
+
} else if (button.id === 'reconnectBtn') {
|
435 |
+
button.innerHTML = 'π Reconnect MQTT';
|
436 |
}
|
437 |
}
|
438 |
}
|
|
|
552 |
setButtonLoading(this, false);
|
553 |
});
|
554 |
});
|
555 |
+
|
556 |
+
document.getElementById('reconnectBtn').addEventListener('click', function() {
|
557 |
+
if (isLoading) return;
|
558 |
+
isLoading = true;
|
559 |
+
setButtonLoading(this, true);
|
560 |
+
|
561 |
+
fetch('/api/reconnect', {
|
562 |
+
method: 'POST',
|
563 |
+
headers: {
|
564 |
+
'Content-Type': 'application/json',
|
565 |
+
}
|
566 |
+
})
|
567 |
+
.then(response => response.json())
|
568 |
+
.then(data => {
|
569 |
+
if (data.success) {
|
570 |
+
showNotification('Reconnecting to MQTT...', 'success');
|
571 |
+
setTimeout(updateStatus, 2000); // Update status after 2 seconds
|
572 |
+
} else {
|
573 |
+
showNotification(data.error || 'Failed to reconnect', 'error');
|
574 |
+
}
|
575 |
+
})
|
576 |
+
.catch(error => {
|
577 |
+
showNotification('Error: ' + error.message, 'error');
|
578 |
+
})
|
579 |
+
.finally(() => {
|
580 |
+
isLoading = false;
|
581 |
+
setButtonLoading(this, false);
|
582 |
+
});
|
583 |
+
});
|
584 |
</script>
|
585 |
</body>
|
586 |
</html>
|