Merge remote-tracking branches 'origin/main_laptop_1', 'origin/sub_laptop_2', 'origin/sub_laptop_3' and 'origin/sub_laptop_7' into sub_laptop_8

This commit is contained in:
2026-10-10 11:59:53 +09:00
39 changed files with 936 additions and 147 deletions
+17 -2
View File
@@ -37,6 +37,7 @@ import {
import {
type CrossPlotBase,
crossPlotBase,
crossPlotFromBase,
effectiveCardHalfWidth,
fitPlotBase,
naturalHeightAtWidth,
@@ -561,9 +562,23 @@ export function createSectionView(
// 카드 줌 · 팬은 카드 몫 — 모달 그림은 1배에서 시작(카드 상태는 되돌려 둠)
const cardZoom = cardZoomStates.get(stationId);
cardZoomStates.delete(stationId);
const card = buildCrossCard(section, heightPx, base && fitPlotBase(base, heightPx), widthPx);
const fitted = base && fitPlotBase(base, heightPx);
const card = buildCrossCard(section, heightPx, fitted, widthPx);
if (cardZoom) cardZoomStates.set(stationId, cardZoom);
return card.querySelector<SVGSVGElement>("svg.b06-section__chart");
const svg = card.querySelector<SVGSVGElement>("svg.b06-section__chart");
if (!svg) return null;
// 축 다시 그리기 옵션(179-3) — 카드 `createCrossAxes` 와 같은 기하
const plot = fitted && crossPlotFromBase(fitted, heightPx);
const axes = plot && {
widthPx,
heightPx,
pixelsPerMeter: plot.pixelsPerMeter,
maxOffset: plot.maxOffset,
displayMax: plot.displayMax,
elevationMid: plot.elevationMid,
exaggeration: Math.max(currentExaggeration, 0.1),
};
return { svg, axes };
},
focusStation(stationId) {
if (stationId === null) clearSelection();