pcp-tgu-ops-ui: панель «Параметры включения» в инспекторе маршрута

- WorkInspector показывает аппарат, виток, крен, угол захвата, центр контура (съёмка)
  и станцию/сбрасываемые съёмки (сброс)
- planModesToWorks/addShoot прокидывают planModeId, revolution, rollDeg, captureAngleDeg,
  centerLat/Lon, surveyIds в модель включения
- место под перечень заданий маршрута (привязка — позже)
- секция «Станция приёма» рендерится только в режиме правки
This commit is contained in:
Дмитрий Соловьев
2026-06-03 12:40:53 +03:00
parent e060e13b85
commit 80e281dd6d
6 changed files with 141 additions and 15 deletions
@@ -453,7 +453,12 @@ export function TguEditorTab({ selectedSpacecraftId, selectedPlan, appliedRange,
endMs,
label: mode?.label ?? "Съёмка",
modeId,
target
target,
revolution: surveyRoute?.revolution ?? selectedShootPass.revolution,
rollDeg: surveyRoute?.roll ?? routeRoll,
captureAngleDeg: surveyRoute?.captureAngle ?? DEFAULT_CAPTURE_ANGLE_DEG,
centerLat: surveyRoute?.lat,
centerLon: surveyRoute?.longitude
})
);
setSelectedWorkId(id);
@@ -468,6 +473,17 @@ export function TguEditorTab({ selectedSpacecraftId, selectedPlan, appliedRange,
[stationDtos]
);
// Метка съёмки по id режима — для перечня сбрасываемых маршрутов в инспекторе сброса.
const surveyModeLabel = useCallback(
(surveyModeId: number) => {
const mode = planModes.find(
(m): m is PlanSurveyMode => m.type === "SURVEY" && m.id === surveyModeId
);
return mode ? `Съёмка · виток ${mode.revolution}` : `Маршрут #${surveyModeId}`;
},
[planModes]
);
const addDropWork = async () => {
if (!selectedPlan || !selectedZone || selectedDropSurveyIds.size === 0) return;
const numericNorad = noradId ? Number(noradId) : NaN;
@@ -735,6 +751,8 @@ export function TguEditorTab({ selectedSpacecraftId, selectedPlan, appliedRange,
work={selectedWork}
modes={modes}
stations={stations}
spacecraftLabel={activeLabel}
surveyModeLabel={surveyModeLabel}
conflicts={conflicts[selectedWork.id] ?? []}
readOnly={selectedWork.origin === "plan"}
onUpdate={onChangeWork}