pcp-tgu: слоты по факту закладки, запрет ранней закладки, шире рейл редактора
- слоты (acceptedPlanSlotsUpdate) занимаются на LAID_IN, а не на ACCEPT — до закладки план ещё может быть вытеснен коррекцией - «Подтвердить закладку» недоступно, пока начало плана в будущем - левая панель редактора 15.5rem → 17rem (цифры статистики у границы)
This commit is contained in:
@@ -1032,7 +1032,7 @@ export function TguEditorTab({ selectedSpacecraftId, selectedPlan, appliedRange,
|
||||
{applyError && <div className="tgu-alert tgu-alert--danger tgu-editor-notice">{applyError}</div>}
|
||||
</div>
|
||||
|
||||
<div className="tgu-editor-layout" style={{ gridTemplateColumns: rightMode === "none" ? "15.5rem minmax(0, 1fr) 0" : "15.5rem minmax(0, 1fr) 21rem" }}>
|
||||
<div className="tgu-editor-layout" style={{ gridTemplateColumns: rightMode === "none" ? "17rem minmax(0, 1fr) 0" : "17rem minmax(0, 1fr) 21rem" }}>
|
||||
<EditorRail
|
||||
selectedSpacecraftId={selectedSpacecraftId}
|
||||
selectedPlan={selectedPlan}
|
||||
|
||||
@@ -82,6 +82,9 @@ export function TguPlanDetails({
|
||||
const duration = formatDuration(plan.endMs - plan.startMs);
|
||||
// Окно решения закрылось, если с момента старта плана прошло больше grace-периода.
|
||||
const decisionWindowClosed = Date.now() > plan.startMs + DECISION_GRACE_MINUTES * 60_000;
|
||||
// Закладку нельзя подтверждать, пока начало плана ещё в будущем: план закладывается на КА
|
||||
// по факту наступления своего старта, а не заранее.
|
||||
const layinStartInFuture = plan.startMs > Date.now();
|
||||
// «Создать черновик на основе плана» (replace, окно 1:1, все включения) доступно для
|
||||
// персистентных правимых баз. DRAFT уже имеет свои действия; PLANNED — виртуальная проекция,
|
||||
// не база; LAID_IN — replace 1:1 запрещён (слот зафиксирован, только fork-forward).
|
||||
@@ -232,17 +235,24 @@ export function TguPlanDetails({
|
||||
<button
|
||||
className="tgu-button tgu-button--accept"
|
||||
type="button"
|
||||
disabled={decisionInFlight || layinConflict}
|
||||
disabled={decisionInFlight || layinConflict || layinStartInFuture}
|
||||
title={
|
||||
layinConflict
|
||||
? "По КА уже заложен план со стартом в пределах ±10 минут — закладка недоступна"
|
||||
: "Сымитировать событие «план заложен» (AWAITING_LAYIN → LAID_IN)"
|
||||
layinStartInFuture
|
||||
? "Начало плана ещё не наступило — подтвердить закладку можно только после его старта"
|
||||
: layinConflict
|
||||
? "По КА уже заложен план со стартом в пределах ±10 минут — закладка недоступна"
|
||||
: "Сымитировать событие «план заложен» (AWAITING_LAYIN → LAID_IN)"
|
||||
}
|
||||
onClick={confirmLayin}
|
||||
>
|
||||
Подтвердить закладку
|
||||
</button>
|
||||
{layinConflict && (
|
||||
{layinStartInFuture && (
|
||||
<div className="tgu-details__test-hint">
|
||||
Начало плана ещё в будущем — подтвердить закладку можно только после наступления его старта.
|
||||
</div>
|
||||
)}
|
||||
{!layinStartInFuture && layinConflict && (
|
||||
<div className="tgu-details__test-hint">
|
||||
По КА уже есть заложенный план со стартом в пределах ±10 минут — подтвердить нельзя.
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user