mirror of
https://github.com/legop3/MultiRoombaRover.git
synced 2026-09-15 17:12:59 -04:00
84 lines
3.3 KiB
HTML
84 lines
3.3 KiB
HTML
<!doctype html>
|
|
<html>
|
|
<head>
|
|
<meta charset="utf-8" />
|
|
<title>Multi Roomba Rover</title>
|
|
<style>
|
|
body { font-family: sans-serif; margin: 16px; }
|
|
#layout { display: flex; gap: 16px; }
|
|
#roverList { width: 240px; }
|
|
#sensorOutput { font-family: monospace; height: 320px; overflow: auto; border: 1px solid #999; padding: 8px; }
|
|
button { margin: 4px; }
|
|
.row { margin-bottom: 8px; }
|
|
#alerts { margin-top: 12px; max-width: 600px; }
|
|
.alert { background: #fff1d2; border: 1px solid #f0b651; padding: 6px 8px; margin-bottom: 6px; font-size: 0.9rem; }
|
|
#authPanel { margin: 12px 0; display: flex; gap: 8px; align-items: center; }
|
|
#authPanel input { padding: 4px; }
|
|
#activeDriver { margin-bottom: 8px; font-weight: bold; }
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<h1>Multi Roomba Rover</h1>
|
|
<div id="status">Connecting…</div>
|
|
<div id="authPanel">
|
|
<input id="username" placeholder="Username" />
|
|
<input id="password" type="password" placeholder="Password" />
|
|
<button id="loginBtn">Admin Login</button>
|
|
<span id="roleStatus">Role: user</span>
|
|
</div>
|
|
<div id="layout">
|
|
<div id="roverList">
|
|
<label for="roverSelect">Rovers</label>
|
|
<select id="roverSelect" size="10" style="width: 100%"></select>
|
|
<div class="row" id="adminControls">
|
|
<label><input type="checkbox" id="forceControl" /> Force control</label>
|
|
<button id="lockToggle">Lock/Unlock</button>
|
|
</div>
|
|
<div class="row" id="modeControls" style="display:none">
|
|
<label for="modeSelect">Server mode</label>
|
|
<select id="modeSelect">
|
|
<option value="open">Open</option>
|
|
<option value="turns">Turns</option>
|
|
<option value="admin">Admin</option>
|
|
<option value="lockdown">Lockdown</option>
|
|
</select>
|
|
</div>
|
|
<div class="row">
|
|
<button data-oi="start">Start OI</button>
|
|
<button data-oi="safe">Safe</button>
|
|
<button data-oi="full">Full</button>
|
|
<button data-oi="passive">Passive</button>
|
|
<button data-oi="dock">Dock</button>
|
|
</div>
|
|
<div class="row">
|
|
<button id="sensorToggle">Enable Sensor Stream</button>
|
|
</div>
|
|
<div class="row">
|
|
<button id="motorsStop">Stop Motors</button>
|
|
</div>
|
|
</div>
|
|
<div style="flex: 1">
|
|
<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>
|
|
</div>
|
|
</div>
|
|
<script src="/socket.io/socket.io.js"></script>
|
|
<script src="loader.js"></script>
|
|
<script src="src/globals/socket.js"></script>
|
|
<script src="src/helpers/formatters.js"></script>
|
|
<script src="src/services/state.js"></script>
|
|
<script src="src/services/alertFeed.js"></script>
|
|
<script src="src/services/authControls.js"></script>
|
|
<script src="src/services/roverUI.js"></script>
|
|
<script src="src/services/driveControls.js"></script>
|
|
<script src="src/main.js"></script>
|
|
<p><a href="/spectate/">Open spectator view</a></p>
|
|
</body>
|
|
</html>
|