feat(группировка): реальная съёмка/сброс/связь и заполнение борта
Дашборд «Группировка» наполняется из плана: режимы SURVEY/DROP → интервалы съёмки и сброса с контуром и станцией, окна ЗРВ выделены в отдельную «связь» (раньше показывались как сброс). Заполнение бортового накопителя считается из объёмов маршрутов (volumeMb) с модельной ёмкостью 500 ГБ (ONBOARD_CAPACITY_MB) — memAt по таймлайну, подсветка контура/линии сброса на карте.
This commit is contained in:
@@ -31,6 +31,7 @@ const MAP_C = {
|
||||
gratText: "rgba(150,180,178,0.25)",
|
||||
amber: "#d99a4e",
|
||||
blue: "#5b9bd5",
|
||||
link: "#6f8fae",
|
||||
red: "#d9685f",
|
||||
teal: "#5fb3a3",
|
||||
night: "rgba(20,28,46,0.55)",
|
||||
@@ -217,13 +218,32 @@ function MapView({ env, apiRef }) {
|
||||
}
|
||||
strokeTrack(ctx, seg, MAP_C.amber, dim ? 3 : 6, dim ? 0.3 : 0.85);
|
||||
ctx.setLineDash([]);
|
||||
tracePoly(ctx, s.proj, stt.roi.poly);
|
||||
ctx.fillStyle = "rgba(217,154,78,0.16)"; ctx.fill();
|
||||
ctx.strokeStyle = MAP_C.amber; ctx.lineWidth = 1.4; ctx.stroke();
|
||||
// контур съёмки есть не у всех режимов плана — рисуем только когда задан
|
||||
if (stt.roi && stt.roi.poly && stt.roi.poly.length) {
|
||||
tracePoly(ctx, s.proj, stt.roi.poly);
|
||||
ctx.fillStyle = "rgba(217,154,78,0.16)"; ctx.fill();
|
||||
ctx.strokeStyle = MAP_C.amber; ctx.lineWidth = 1.4; ctx.stroke();
|
||||
}
|
||||
}
|
||||
|
||||
// link (связь с КА) — пунктир к станции на всём окне радиовидимости (ЗРВ),
|
||||
// даже когда сброс не идёт. Тоньше/бледнее сброса; реальный сброс ляжет поверх.
|
||||
if (env.sched) {
|
||||
const lk = SIM.intervalAt((env.sched[sat.id] || {}).link, tMs);
|
||||
if (lk && lk.lon != null && lk.lat != null) {
|
||||
const lp = s.proj([lk.lon, lk.lat]);
|
||||
if (lp) {
|
||||
ctx.save();
|
||||
ctx.setLineDash([3, 6]); ctx.lineDashOffset = -dash;
|
||||
ctx.strokeStyle = hexA(MAP_C.link, dim ? 0.22 : 0.55); ctx.lineWidth = 1;
|
||||
ctx.beginPath(); ctx.moveTo(pt[0], pt[1]); ctx.lineTo(lp[0], lp[1]); ctx.stroke();
|
||||
ctx.restore();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// downlink (сброс) — animated dashed line to station
|
||||
if (stt.state === "downlink") {
|
||||
if (stt.state === "downlink" && stt.station && stt.station.lon != null && stt.station.lat != null) {
|
||||
const sp = s.proj([stt.station.lon, stt.station.lat]);
|
||||
if (sp) {
|
||||
ctx.save();
|
||||
|
||||
Reference in New Issue
Block a user