diff --git a/starpilot/system/the_pond/assets/components/tools/longitudinal_maneuvers.js b/starpilot/system/the_pond/assets/components/tools/longitudinal_maneuvers.js index 96292e263..9dba78fb4 100644 --- a/starpilot/system/the_pond/assets/components/tools/longitudinal_maneuvers.js +++ b/starpilot/system/the_pond/assets/components/tools/longitudinal_maneuvers.js @@ -31,6 +31,30 @@ function formatAgeSeconds(value) { return `${Math.round(hr)}h ago` } +function normalizeStatusPayload(payload) { + const normalized = payload && typeof payload === "object" ? { ...payload } : {} + normalized.support = normalized.support && typeof normalized.support === "object" ? normalized.support : {} + normalized.caveats = Array.isArray(normalized.caveats) ? normalized.caveats : [] + normalized.skippedManeuvers = Array.isArray(normalized.skippedManeuvers) ? normalized.skippedManeuvers : [] + normalized.history = Array.isArray(normalized.history) ? normalized.history : [] + return normalized +} + +function getSupportValue(key) { + const data = state.data && typeof state.data === "object" ? state.data : {} + const support = data.support && typeof data.support === "object" ? data.support : {} + return support[key] +} + +function formatSupportBool(key) { + return getSupportValue(key) ? "Yes" : "No" +} + +function formatSupportNumber(key, unit) { + const value = Number(getSupportValue(key)) + return Number.isFinite(value) ? `${value.toFixed(2)} ${unit}` : "n/a" +} + async function fetchStatus() { try { const response = await fetch("/api/longitudinal_maneuvers/status") @@ -39,7 +63,7 @@ async function fetchStatus() { throw new Error(payload.error || response.statusText || "Failed to load maneuver status") } - state.data = payload + state.data = normalizeStatusPayload(payload) state.error = "" } catch (error) { state.error = error?.message || "Failed to load maneuver status" @@ -86,7 +110,7 @@ async function runAction(action) { throw new Error(payload.error || response.statusText || `Failed to ${action} maneuvers`) } - state.data = payload + state.data = normalizeStatusPayload(payload) state.error = "" showSnackbar(payload.message || "Action complete.") } catch (error) { @@ -157,13 +181,13 @@ export function LongitudinalManeuvers() {