가상매매 화면 멀티 레이아웃 수정

This commit is contained in:
Macbook
2026-05-30 04:03:51 +09:00
parent 961609242c
commit 33c2d4b337
12 changed files with 476 additions and 217 deletions
+12 -4
View File
@@ -151,6 +151,10 @@ interface TradingChartProps {
crosshairInfoVisible?: boolean;
/** 외부 캔들 데이터 fetch 중 (실시간 차트 초기 로딩) */
dataLoading?: boolean;
/** 마운트 시 캔들 pane 전체보기(하단 보조지표 pane 숨김) — 가상매매 카드 등 */
defaultCandleOnly?: boolean;
/** 캔들 pane 좌하단 전체보기/복원 버튼 (기본 true) */
showCandlePaneControls?: boolean;
}
const TradingChart: React.FC<TradingChartProps> = ({
@@ -188,6 +192,8 @@ const TradingChart: React.FC<TradingChartProps> = ({
showPaneLegend = true,
crosshairInfoVisible = true,
dataLoading = false,
defaultCandleOnly = false,
showCandlePaneControls = true,
}) => {
const containerRef = useRef<HTMLDivElement>(null);
const wrapperRef = useRef<HTMLDivElement>(null); // 스크롤 래퍼
@@ -259,7 +265,8 @@ const TradingChart: React.FC<TradingChartProps> = ({
/** 초기 reloadAll 완료 전 — pane 구분선·부분 레이아웃 노출 방지 */
const [chartPaintReady, setChartPaintReady] = useState(false);
/** 캔들 pane 전체보기 (오버레이 지표 유지, 하단 보조지표 pane 숨김) */
const [candleOnlyMode, setCandleOnlyMode] = useState(false);
const candleOnlyLocked = defaultCandleOnly;
const [candleOnlyMode, setCandleOnlyMode] = useState(defaultCandleOnly);
const paneDragRef = useRef<((id: string, e: React.PointerEvent) => void) | null>(null);
useEffect(() => {
@@ -289,8 +296,9 @@ const TradingChart: React.FC<TradingChartProps> = ({
}, [chartMgr]);
const toggleCandleOnly = useCallback(() => {
if (candleOnlyLocked) return;
setCandleOnlyMode(v => !v);
}, []);
}, [candleOnlyLocked]);
useEffect(() => { toggleCandleOnlyRef.current = toggleCandleOnly; }, [toggleCandleOnly]);
useEffect(() => { candleOnlyModeRef.current = candleOnlyMode; }, [candleOnlyMode]);
@@ -970,7 +978,7 @@ const TradingChart: React.FC<TradingChartProps> = ({
if (m.isClickOnMainSeries(chartX, chartY)) {
onSeriesDoubleClickRef.current?.('__main__', { x: e.clientX, y: e.clientY });
} else {
} else if (!candleOnlyLocked) {
toggleCandleOnlyRef.current();
}
};
@@ -1577,7 +1585,7 @@ const TradingChart: React.FC<TradingChartProps> = ({
/>
)}
{/* PaneLegend: containerRef 를 상태에 저장해 React 렌더와 동기화 */}
{chartMgr && (
{chartMgr && showCandlePaneControls && !candleOnlyLocked && (
<CandlePaneControlsPortal
manager={chartMgr}
getContainer={() => containerRef.current}