전략편집기 시간봉 선택오류 수정
This commit is contained in:
@@ -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}
|
||||
|
||||
Reference in New Issue
Block a user