Files
gods-eye-view/src/data/rocketLaunches.js
T
Sameh Khamis 66a60ff67e feat(ui): render the Space Missions roster and selected mission from the launches layer's published view
The launches layer no longer builds the roster or the selected mission
panel as HTML strings in #space-mission-panel-host. It presents both as a
plain view and publishes it through subscribePanel(); MissionRoster and
MissionDetail render it from the gev-context store and call the layer's
panel commands. Replay controls are presented the same way.

The roster keeps keyboard focus on the same mission across refreshes, or
continues beyond the list when the mission departs, and the row under the
pointer takes the preview back on its next movement. Lines a null view
rebuilds are translated through t(). Disposing the shell clears the
Contacts and Space Missions views.
2026-10-31 10:48:20 -07:00

81 lines
4.2 KiB
JavaScript

import { createApplicationLaunches } from '../app/layers/rocketLaunches.js';
import { createSourceSlot } from '../sources/sourceSlot.js';
import { createLaunchSource } from '../layers/launches/index.js';
import * as satellites from './satellites.js';
const sourceSlot = createSourceSlot(
createLaunchSource(),
['getLaunches', 'getActiveTle'],
'Launch source',
);
export const configureLaunchSource = sourceSlot.configure;
const layer = createApplicationLaunches({
source: sourceSlot.source,
satellites,
});
export const satelliteParamsForSpaceMissions =
layer.satelliteParamsForSpaceMissions;
export const satelliteParamsAfterSpaceMissions =
layer.satelliteParamsAfterSpaceMissions;
export const launchStatusAllowsOrbit = layer.launchStatusAllowsOrbit;
export const missionPathPresentation = layer.missionPathPresentation;
export const shouldRetryAfterActiveTle = layer.shouldRetryAfterActiveTle;
export const releaseAircraftTracking = layer.releaseAircraftTracking;
export const launchPadZoneVisible = layer.launchPadZoneVisible;
export const missionAnchorHorizonVisible = layer.missionAnchorHorizonVisible;
export const missionAnchorVisible = layer.missionAnchorVisible;
export const compactLaunchSiteName = layer.compactLaunchSiteName;
export const createRocketMissionMarkerOverlayEntry =
layer.createRocketMissionMarkerOverlayEntry;
export const createRocketMissionElementOverlayEntry =
layer.createRocketMissionElementOverlayEntry;
export const selectRocketMissionMarkerOverlayCohort =
layer.selectRocketMissionMarkerOverlayCohort;
export const replayOverlayMode = layer.replayOverlayMode;
export const replayVehicleScreenRotation = layer.replayVehicleScreenRotation;
export const smoothReplayWindowPosition = layer.smoothReplayWindowPosition;
export const missionDataCompleteness = layer.missionDataCompleteness;
export const missionRosterEntries = layer.missionRosterEntries;
export const missionHoverPreviewRange = layer.missionHoverPreviewRange;
export const createMissionRosterPreviewOwnership =
layer.createMissionRosterPreviewOwnership;
export const resolveMissionRosterPreviewLaunch =
layer.resolveMissionRosterPreviewLaunch;
export const formatMissionEventTime = layer.formatMissionEventTime;
export const parseMissionDurationSeconds = layer.parseMissionDurationSeconds;
export const replayAscentDurationSeconds = layer.replayAscentDurationSeconds;
export const normalizeReplaySpeed = layer.normalizeReplaySpeed;
export const replayStartAfterPause = layer.replayStartAfterPause;
export const replayState = layer.replayState;
export const approximateOrbitPath = layer.approximateOrbitPath;
export const samplePath = layer.samplePath;
export const orbitProgressAtTime = layer.orbitProgressAtTime;
export const reconstructedAscentPath = layer.reconstructedAscentPath;
export const buildMissionPaths = layer.buildMissionPaths;
export const cameraHeadingForPath = layer.cameraHeadingForPath;
export const replayInitialCameraHeading = layer.replayInitialCameraHeading;
export const replayChaseCameraHeading = layer.replayChaseCameraHeading;
export const smoothReplayCameraHeading = layer.smoothReplayCameraHeading;
export const missionZoomPitch = layer.missionZoomPitch;
export const replayCameraView = layer.replayCameraView;
export const replayOrbitGlobeAnchor = layer.replayOrbitGlobeAnchor;
export const replayOrbitCameraTarget = layer.replayOrbitCameraTarget;
export const replayOrbitCameraPose = layer.replayOrbitCameraPose;
export const replayOrbitFrameSphere = layer.replayOrbitFrameSphere;
export const replayOrbitGlobeRange = layer.replayOrbitGlobeRange;
export const missionMarkerColor = layer.missionMarkerColor;
export const normalizeRocketLaunches = layer.normalizeRocketLaunches;
export const _setRocketMissionOverlayHostForTest =
layer._setRocketMissionOverlayHostForTest;
export const _setSelectedRocketMissionForTest =
layer._setSelectedRocketMissionForTest;
export {
ROCKET_MISSION_AMBIENT_OVERLAY_SOURCE_ID,
ROCKET_MISSION_SELECTED_OVERLAY_SOURCE_ID,
ROCKET_MISSION_AMBIENT_OVERLAY_COHORT_LIMIT,
ROCKET_MISSION_AMBIENT_OVERLAY_COLLISION_CAPACITY,
ROCKET_MISSION_SELECTED_OVERLAY_SOURCE_OPTIONS,
LAUNCH_PAD_ZONE_RADIUS_M,
} from '../layers/launches/index.js';
export default layer;