전략편집기 시간봉 선택오류 수정

This commit is contained in:
Macbook
2026-06-12 21:32:19 +09:00
parent 046bcc6379
commit 6118230471
8 changed files with 164 additions and 97 deletions
+20 -3
View File
@@ -167,6 +167,8 @@ interface TradingChartProps {
crosshairInfoVisible?: boolean;
/** 외부 캔들 데이터 fetch 중 (실시간 차트 초기 로딩) */
dataLoading?: boolean;
/** chartPaintReady 변경 알림 (워크스페이스 전체 로딩 오버레이용) */
onChartPaintReadyChange?: (ready: boolean) => void;
/** 마운트 시 캔들 pane 전체보기(하단 보조지표 pane 숨김) — 가상매매 카드 등 */
defaultCandleOnly?: boolean;
/** 캔들 pane 좌하단 전체보기/복원 버튼 (기본 true) */
@@ -236,6 +238,7 @@ const TradingChart: React.FC<TradingChartProps> = ({
showCandleOverlayControls = false,
crosshairInfoVisible = true,
dataLoading = false,
onChartPaintReadyChange,
defaultCandleOnly = false,
showCandlePaneControls = true,
candleOverlayToggles,
@@ -399,6 +402,14 @@ const TradingChart: React.FC<TradingChartProps> = ({
chartVisibleRef.current = chartVisible;
}, [chartVisible]);
useEffect(() => {
if (dataLoading) setChartPaintReady(false);
}, [dataLoading]);
useEffect(() => {
onChartPaintReadyChange?.(chartPaintReady && !dataLoading);
}, [chartPaintReady, dataLoading, onChartPaintReadyChange]);
useEffect(() => {
const el = containerRef.current;
if (!el) return;
@@ -976,12 +987,18 @@ const TradingChart: React.FC<TradingChartProps> = ({
} while (reloadCoalesceRef.current);
} finally {
reloadInFlightRef.current = false;
if (managerRef.current?.hasMainSeries()) {
setChartPaintReady(true);
}
if (reloadCoalesceRef.current) {
reloadCoalesceRef.current = false;
queueFullReload();
return;
}
const m = managerRef.current;
if (m?.hasMainSeries()) {
const expected = countExpectedVisibleIndicators(indicatorsRef.current);
const loaded = m.getLoadedIndicatorCount();
if (expected === 0 || loaded >= expected) {
setChartPaintReady(true);
}
}
}
}, [normalizeChartViewport, onCandlesReady, onDataLoaded, displayTimezone, timeframe, market, queueFullReload, queueIndicatorRecovery]);