Spaces:
Running
Running
Remove state info bar (Yaw/Pitch/Roll/Body/Antennas display)
Browse filesSlider values already show current position - no need for separate info panel.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- index.html +1 -55
index.html
CHANGED
|
@@ -218,36 +218,6 @@
|
|
| 218 |
cursor: not-allowed;
|
| 219 |
}
|
| 220 |
|
| 221 |
-
/* State Bar */
|
| 222 |
-
.state-bar {
|
| 223 |
-
display: flex;
|
| 224 |
-
gap: 12px;
|
| 225 |
-
padding: 8px 12px;
|
| 226 |
-
background: var(--pollen-card);
|
| 227 |
-
border-radius: 8px;
|
| 228 |
-
flex-wrap: wrap;
|
| 229 |
-
justify-content: center;
|
| 230 |
-
}
|
| 231 |
-
|
| 232 |
-
.state-item {
|
| 233 |
-
display: flex;
|
| 234 |
-
flex-direction: column;
|
| 235 |
-
align-items: center;
|
| 236 |
-
gap: 2px;
|
| 237 |
-
}
|
| 238 |
-
|
| 239 |
-
.state-item label {
|
| 240 |
-
font-size: 0.65em;
|
| 241 |
-
color: var(--text-muted);
|
| 242 |
-
text-transform: uppercase;
|
| 243 |
-
}
|
| 244 |
-
|
| 245 |
-
.state-item .value {
|
| 246 |
-
font-family: monospace;
|
| 247 |
-
font-size: 0.8em;
|
| 248 |
-
color: var(--pollen-coral);
|
| 249 |
-
}
|
| 250 |
-
|
| 251 |
/* Panels */
|
| 252 |
.panel {
|
| 253 |
background: var(--pollen-card);
|
|
@@ -458,14 +428,9 @@
|
|
| 458 |
grid-row: 1 / 3;
|
| 459 |
}
|
| 460 |
|
| 461 |
-
.state-bar {
|
| 462 |
-
grid-column: 1;
|
| 463 |
-
grid-row: 3;
|
| 464 |
-
}
|
| 465 |
-
|
| 466 |
#robotSelector {
|
| 467 |
grid-column: 1;
|
| 468 |
-
grid-row:
|
| 469 |
}
|
| 470 |
|
| 471 |
.panel:nth-of-type(1) { /* Head Control */
|
|
@@ -596,15 +561,6 @@
|
|
| 596 |
</div>
|
| 597 |
</div>
|
| 598 |
|
| 599 |
-
<!-- State Bar -->
|
| 600 |
-
<div class="state-bar">
|
| 601 |
-
<div class="state-item"><label>Yaw</label><span class="value" id="stateYaw">--</span></div>
|
| 602 |
-
<div class="state-item"><label>Pitch</label><span class="value" id="statePitch">--</span></div>
|
| 603 |
-
<div class="state-item"><label>Roll</label><span class="value" id="stateRoll">--</span></div>
|
| 604 |
-
<div class="state-item"><label>Body</label><span class="value" id="stateBody">--</span></div>
|
| 605 |
-
<div class="state-item"><label>R.Ant</label><span class="value" id="stateRAnt">--</span></div>
|
| 606 |
-
<div class="state-item"><label>L.Ant</label><span class="value" id="stateLAnt">--</span></div>
|
| 607 |
-
</div>
|
| 608 |
|
| 609 |
<!-- Robot Selector -->
|
| 610 |
<div id="robotSelector" class="panel hidden">
|
|
@@ -1047,11 +1003,6 @@
|
|
| 1047 |
const yaw = Math.atan2(m[1][0], m[0][0]) * 180 / Math.PI;
|
| 1048 |
const roll = Math.atan2(m[2][1], m[2][2]) * 180 / Math.PI;
|
| 1049 |
|
| 1050 |
-
// Update state bar
|
| 1051 |
-
document.getElementById('stateYaw').textContent = yaw.toFixed(1) + '°';
|
| 1052 |
-
document.getElementById('statePitch').textContent = pitch.toFixed(1) + '°';
|
| 1053 |
-
document.getElementById('stateRoll').textContent = roll.toFixed(1) + '°';
|
| 1054 |
-
|
| 1055 |
// Update sliders with real position when not being controlled
|
| 1056 |
if (!headSlidersActive) {
|
| 1057 |
document.getElementById('rollSlider').value = roll;
|
|
@@ -1062,14 +1013,9 @@
|
|
| 1062 |
document.getElementById('yawValue').textContent = yaw.toFixed(1) + '°';
|
| 1063 |
}
|
| 1064 |
}
|
| 1065 |
-
if (state.body_yaw !== undefined) {
|
| 1066 |
-
document.getElementById('stateBody').textContent = (state.body_yaw * 180 / Math.PI).toFixed(1) + '°';
|
| 1067 |
-
}
|
| 1068 |
if (state.antennas) {
|
| 1069 |
const r = (state.antennas[0] * 180 / Math.PI).toFixed(0);
|
| 1070 |
const l = (state.antennas[1] * 180 / Math.PI).toFixed(0);
|
| 1071 |
-
document.getElementById('stateRAnt').textContent = r + '°';
|
| 1072 |
-
document.getElementById('stateLAnt').textContent = l + '°';
|
| 1073 |
document.getElementById('rightAntSlider').value = r;
|
| 1074 |
document.getElementById('rightAntValue').textContent = r + '°';
|
| 1075 |
document.getElementById('leftAntSlider').value = l;
|
|
|
|
| 218 |
cursor: not-allowed;
|
| 219 |
}
|
| 220 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 221 |
/* Panels */
|
| 222 |
.panel {
|
| 223 |
background: var(--pollen-card);
|
|
|
|
| 428 |
grid-row: 1 / 3;
|
| 429 |
}
|
| 430 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 431 |
#robotSelector {
|
| 432 |
grid-column: 1;
|
| 433 |
+
grid-row: 3;
|
| 434 |
}
|
| 435 |
|
| 436 |
.panel:nth-of-type(1) { /* Head Control */
|
|
|
|
| 561 |
</div>
|
| 562 |
</div>
|
| 563 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 564 |
|
| 565 |
<!-- Robot Selector -->
|
| 566 |
<div id="robotSelector" class="panel hidden">
|
|
|
|
| 1003 |
const yaw = Math.atan2(m[1][0], m[0][0]) * 180 / Math.PI;
|
| 1004 |
const roll = Math.atan2(m[2][1], m[2][2]) * 180 / Math.PI;
|
| 1005 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1006 |
// Update sliders with real position when not being controlled
|
| 1007 |
if (!headSlidersActive) {
|
| 1008 |
document.getElementById('rollSlider').value = roll;
|
|
|
|
| 1013 |
document.getElementById('yawValue').textContent = yaw.toFixed(1) + '°';
|
| 1014 |
}
|
| 1015 |
}
|
|
|
|
|
|
|
|
|
|
| 1016 |
if (state.antennas) {
|
| 1017 |
const r = (state.antennas[0] * 180 / Math.PI).toFixed(0);
|
| 1018 |
const l = (state.antennas[1] * 180 / Math.PI).toFixed(0);
|
|
|
|
|
|
|
| 1019 |
document.getElementById('rightAntSlider').value = r;
|
| 1020 |
document.getElementById('rightAntValue').textContent = r + '°';
|
| 1021 |
document.getElementById('leftAntSlider').value = l;
|