mmtx integration / server installer

This commit is contained in:
legop3
2025-11-13 23:05:41 -05:00
parent 8c79c70520
commit a24e487c51
10 changed files with 345 additions and 1 deletions
+2
View File
@@ -61,6 +61,8 @@
<h3>Sensor Frames</h3>
<div id="currentRover">Active rover: --</div>
<div id="activeDriver">Driver: --</div>
<button id="videoRequest">Get Video URL</button>
<div id="videoLink"></div>
<pre id="sensorOutput"></pre>
<p>Use WASD keys to drive the selected rover. Shift increases speed.</p>
<div id="alerts"></div>
+20
View File
@@ -13,6 +13,8 @@ registerModule('services/roverUI', (require, exports) => {
const modeSelect = document.getElementById('modeSelect');
const activeDriverEl = document.getElementById('activeDriver');
const currentRoverEl = document.getElementById('currentRover');
const videoBtn = document.getElementById('videoRequest');
const videoLinkEl = document.getElementById('videoLink');
let roster = [];
let lastSelection = null;
@@ -100,6 +102,21 @@ registerModule('services/roverUI', (require, exports) => {
}
});
videoBtn?.addEventListener('click', () => {
const roverId = state.getSelected();
if (!roverId) {
if (videoLinkEl) videoLinkEl.textContent = 'Select a rover first';
return;
}
socket.emit('video:request', { roverId }, (resp = {}) => {
if (resp.error) {
videoLinkEl.textContent = `Video error: ${resp.error}`;
return;
}
videoLinkEl.innerHTML = `Video URL: <a href=\"${resp.url}\" target=\"_blank\">${resp.url}</a>`;
});
});
socket.on('connect', () => {
statusEl.textContent = 'Connected';
});
@@ -120,6 +137,9 @@ registerModule('services/roverUI', (require, exports) => {
if (sensorOutput && (clearOutput || roverId !== lastSelection)) {
sensorOutput.textContent = roverId ? 'Waiting for sensor data...' : '';
}
if (clearOutput && videoLinkEl) {
videoLinkEl.textContent = '';
}
lastSelection = roverId;
}
});