pcp-tgu: связь планов на таймлайне по basePlanId вместо стрелок/нумерации по времени

Стрелки и бейджи-цифры цепочки строились по ВРЕМЕНИ (соседние по времени
планы КА) и ложно сцепляли два черновика с одной предысторией как «один —
предок другого». Убираем эту логику целиком (buildSequentialLinks,
buildPlanChains, CHAIN_COLORS/chainColor, тип TimelineLink) и показываем
связь только по реальному basePlanId:

- В деталях плана — строка basePlanId (рендерится, если задан).
- При выборе плана на таймлайне подсвечиваем гало два соседних звена по
  basePlanId: предыдущий (planId == basePlanId выбранного) — тёплый янтарь,
  следующий (basePlanId == выбранный) — бирюза. Следующих может быть
  несколько (черновики с одной предысторией) — подсвечиваются все.

Бэкенд: basePlanId/projected проброшены через PlanResponse (pcp-tgu-service)
и TguPlanResponse (pcp-ui-service — прокси /api/tgu-planning/plans, иначе
Jackson срезал бы неизвестные поля). Требует рестарт обоих сервисов.

Заодно: очистка нотиса деталей при смене фокуса (план/ЗРВ) и блок
«Включения» (счётчики съёмок/сбросов) в правой панели.
This commit is contained in:
Дмитрий Соловьев
2026-06-04 11:44:28 +03:00
parent 294b17757d
commit a5a1cdfa64
10 changed files with 150 additions and 96 deletions
@@ -422,13 +422,6 @@
font-weight: 700;
}
.tgu-timeline__arrow {
fill: none;
stroke: #8aa2a6;
stroke-width: 1.5;
opacity: 0.8;
}
.tgu-timeline-plan {
cursor: pointer;
}
@@ -450,6 +443,21 @@
opacity: 0.85;
}
/* Гало вокруг соседнего по цепочке плана при выборе: прошлое — тёплый янтарь, будущее — бирюза. */
.tgu-timeline-plan__neighbor {
stroke-linecap: round;
stroke-width: 19;
opacity: 0.7;
}
.tgu-timeline-plan__neighbor--prev {
stroke: #e0a23c;
}
.tgu-timeline-plan__neighbor--next {
stroke: #46b3c4;
}
.tgu-timeline-plan__label {
fill: #101214;
font-size: 11px;
@@ -916,6 +924,22 @@
pointer-events: none;
}
.tgu-2d-map__coords {
position: absolute;
left: 50%;
bottom: 0.5rem;
transform: translateX(-50%);
border-radius: 4px;
padding: 0.2rem 0.55rem;
background: rgba(8, 16, 15, 0.72);
color: var(--text);
font-family: "SFMono-Regular", Consolas, monospace;
font-size: 0.66rem;
letter-spacing: 0.02em;
white-space: nowrap;
pointer-events: none;
}
.tgu-2d-map__zoom {
position: absolute;
right: 0.75rem;