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

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
+28 -4
View File
@@ -200,6 +200,9 @@ export interface ChartWorkspaceViewProps {
liveQuote: ReturnType<typeof import('../utils/chartLiveQuote').resolveChartLiveQuote>;
isLoading: boolean;
error: string | null;
chartConfigReady: boolean;
chartAreaLoading: boolean;
chartDataLoading: boolean;
bulkSettingsIndicators: IndicatorConfig[];
chartIndicatorsForSettings: IndicatorConfig[];
getParams: ReturnType<typeof import('../hooks/useIndicatorSettings').useIndicatorSettings>['getParams'];
@@ -298,6 +301,8 @@ export interface ChartWorkspaceViewProps {
handleSaveCustomOverlaySelection: (slot: ChartCustomOverlaySlotId, selection: ChartCustomOverlaySelection) => void;
syncCustomOverlaysToManager: (mgr: ChartManager) => void;
handleCandlesReady: () => void;
handleSingleChartPaintReadyChange: (ready: boolean) => void;
handleSlotPaintReadyChange: (slotIndex: number, ready: boolean) => void;
applyBacktestMarkersWhenReady: (payload: NonNullable<ChartWorkspaceViewProps['btMarkerPayloadRef']['current']>, attempt?: number) => void;
btRun: ReturnType<typeof import('../hooks/useBacktest').useBacktest>['run'];
refreshPaperAccount: (forMarket?: string) => Promise<void>;
@@ -339,7 +344,7 @@ function ChartWorkspaceViewInner(props: ChartWorkspaceViewProps) {
obWsStatus, spread, orderbookPrevClose, chartTicker, tradeFill,
paperCashBalance, paperCoinQty, paperTradingEnabled, paperAutoTradeEnabled,
appDefaults, stats, priceMap, alerts, hoverBar, quoteBar, liveQuote,
isLoading, error, bulkSettingsIndicators, chartIndicatorsForSettings,
isLoading, error, chartConfigReady, chartAreaLoading, chartDataLoading, bulkSettingsIndicators, chartIndicatorsForSettings,
getParams, getVisualConfig, activeSlotIndicators,
setSymbol, setLegend, setChartType, setMode, setLogScale, setShowGrid,
setDrawingTool, setDrawings, setDrawingsLocked, setDrawingsVisible,
@@ -368,7 +373,8 @@ function ChartWorkspaceViewInner(props: ChartWorkspaceViewProps) {
handleTogglePriceExtremeLabels,
handleCustomOverlayActiveChange, handleCustom1OverlayActiveChange,
handleSaveCustomOverlaySelection, syncCustomOverlaysToManager,
handleCandlesReady, applyBacktestMarkersWhenReady, btRun, refreshPaperAccount,
handleCandlesReady, handleSingleChartPaintReadyChange, handleSlotPaintReadyChange,
applyBacktestMarkersWhenReady, btRun, refreshPaperAccount,
handlePaperOrderFilled, handleLiveSettingsChange, clearLiveMarkers,
handleTimezoneChange,
} = props;
@@ -587,8 +593,15 @@ function ChartWorkspaceViewInner(props: ChartWorkspaceViewProps) {
gridTemplateColumns: layoutDef.cols,
gridTemplateRows: layoutDef.rows,
gridTemplateAreas: layoutDef.areas,
position: 'relative',
}}
>
{chartAreaLoading && (
<div className="chart-loading chart-loading--chart-area chart-loading--workspace" role="status" aria-live="polite">
<div className="loading-spinner" />
<span> ...</span>
</div>
)}
{/* 슬롯 0 = 메인 차트 영역 (a) */}
<div className="multi-slot-wrap" style={{ gridArea: 'a', minHeight: 0, minWidth: 0 }}>
<ChartSlot
@@ -629,6 +642,8 @@ function ChartWorkspaceViewInner(props: ChartWorkspaceViewProps) {
marketTickers={marketTickers}
compactMode
chartVisible={chartVisible}
chartConfigReady={chartConfigReady}
onPaintReadyChange={handleSlotPaintReadyChange}
/>
</div>
{/* 슬롯 1~7 */}
@@ -673,6 +688,8 @@ function ChartWorkspaceViewInner(props: ChartWorkspaceViewProps) {
marketTickers={marketTickers}
compactMode
chartVisible={chartVisible}
chartConfigReady={chartConfigReady}
onPaintReadyChange={handleSlotPaintReadyChange}
/>
</div>
))}
@@ -680,7 +697,13 @@ function ChartWorkspaceViewInner(props: ChartWorkspaceViewProps) {
)}
{/* ── 싱글 레이아웃 (기존) ─────────────────────────────────────── */}
<div className="tv-chart-col" style={{ display: layoutDef.count > 1 ? 'none' : undefined }}>
<div className="tv-chart-col" style={{ display: layoutDef.count > 1 ? 'none' : undefined, position: 'relative' }}>
{chartAreaLoading && (
<div className="chart-loading chart-loading--chart-area chart-loading--workspace" role="status" aria-live="polite">
<div className="loading-spinner" />
<span> ...</span>
</div>
)}
<ChartLegendBar
visibility={chartLegendOptions}
crosshairInfoVisible={chartCrosshairInfoVisible}
@@ -698,7 +721,8 @@ function ChartWorkspaceViewInner(props: ChartWorkspaceViewProps) {
<TradingChart
key={chartMountKey}
chartVisible={chartVisible}
dataLoading={useUpbit && isLoading}
dataLoading={chartDataLoading}
onChartPaintReadyChange={handleSingleChartPaintReadyChange}
bars={bars} barsMarket={barsMarket} market={symbol} timeframe={timeframe} displayTimezone={displayTimezone}
chartType={chartType} theme={theme} mode={mode}
indicators={effectiveIndicators} drawingTool={drawingTool}