This commit is contained in:
legop3
2025-11-16 02:12:03 -05:00
parent e8f03ab405
commit c35928b458
7 changed files with 35 additions and 26 deletions
+7 -1
View File
@@ -4,4 +4,10 @@
- video stream currently unloads and reloads based on the tab being active - video stream currently unloads and reloads based on the tab being active
- just remove this feature. It needs to stay running all the time. - just remove this feature. It needs to stay running all the time.
## ## server sensor decoding
- OI mode is not decoded properly
- says "safe" when in passive, and "unknown" when in full.
## react UI and auth
- after logging in as an admin and selecting a rover, the UI is still greyed out anc blocked. No video shows
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+2 -2
View File
@@ -5,8 +5,8 @@
<link rel="icon" type="image/svg+xml" href="/vite.svg" /> <link rel="icon" type="image/svg+xml" href="/vite.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>webui</title> <title>webui</title>
<script type="module" crossorigin src="/assets/index-CIaYxqas.js"></script> <script type="module" crossorigin src="/assets/index-MmT1vZc4.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index-DbekZdBV.css"> <link rel="stylesheet" crossorigin href="/assets/index-CQMHW1dj.css">
</head> </head>
<body> <body>
<div id="root"></div> <div id="root"></div>
+7 -7
View File
@@ -32,7 +32,7 @@ export default function DrivePanel() {
tone="emerald" tone="emerald"
onClick={runStartDockFull} onClick={runStartDockFull}
disabled={!roverId} disabled={!roverId}
footnote={updated ? `Sensor ping ${updated}` : null} // footnote={updated ? `Sensor ping ${updated}` : null}
/> />
<ActionCard <ActionCard
title="Dock and Charge" title="Dock and Charge"
@@ -45,8 +45,8 @@ export default function DrivePanel() {
onClick={seekDock} onClick={seekDock}
disabled={!roverId} disabled={!roverId}
/> />
<SpeedRow left={speeds.left} right={speeds.right} /> {/* <SpeedRow left={speeds.left} right={speeds.right} /> */}
<div> {/* <div>
<p className="text-sm text-slate-300">Manual OI</p> <p className="text-sm text-slate-300">Manual OI</p>
<div className="mt-1 flex flex-wrap gap-1"> <div className="mt-1 flex flex-wrap gap-1">
{manualOiButtons.map((btn) => ( {manualOiButtons.map((btn) => (
@@ -61,8 +61,8 @@ export default function DrivePanel() {
</button> </button>
))} ))}
</div> </div>
</div> </div> */}
<div className="flex flex-wrap gap-1"> {/* <div className="flex flex-wrap gap-1">
<button <button
type="button" type="button"
onClick={stopMotors} onClick={stopMotors}
@@ -71,9 +71,9 @@ export default function DrivePanel() {
> >
Stop motors Stop motors
</button> </button>
</div> </div> */}
</div> </div>
<p className="mt-1 text-sm text-slate-400">Sensor streaming auto-starts after each OI change.</p> {/* <p className="mt-1 text-sm text-slate-400">Sensor streaming auto-starts after each OI change.</p> */}
</section> </section>
); );
} }
+7 -4
View File
@@ -50,7 +50,7 @@ export default function TelemetryPanel() {
) : !frame ? ( ) : !frame ? (
<p className="mt-1 text-[0.75rem] text-slate-400">Waiting for sensor frames</p> <p className="mt-1 text-[0.75rem] text-slate-400">Waiting for sensor frames</p>
) : ( ) : (
<div className="mt-1 space-y-1 text-base"> <div className="mt-1 space-y-1 text-base flex">
<Metric label="Charge" value={formatMetric(charge != null && capacity != null ? `${charge}/${capacity} mAh` : null)} /> <Metric label="Charge" value={formatMetric(charge != null && capacity != null ? `${charge}/${capacity} mAh` : null)} />
<Metric label="Charging" value={formatMetric(sensors.chargingState?.label)} /> <Metric label="Charging" value={formatMetric(sensors.chargingState?.label)} />
<Metric label="OI mode" value={formatMetric(sensors.oiMode?.label)} /> <Metric label="OI mode" value={formatMetric(sensors.oiMode?.label)} />
@@ -98,9 +98,12 @@ export default function TelemetryPanel() {
function Metric({ label, value }) { function Metric({ label, value }) {
return ( return (
<div className="flex items-center justify-between"> // <div className="flex items-center justify-between">
<span className="text-slate-400">{label}</span> // <span className="text-slate-400">{label}</span>
<span className="text-slate-200">{value}</span> // <span className="text-slate-200">{value}</span>
// </div>
<div className="bg-gray-500 rounded-sm p-0.5">
{label}: {value}
</div> </div>
); );
} }