chart-0714
Version:
Professional trading chart library with advanced customization for trading journal apps
243 lines (242 loc) • 7.84 kB
TypeScript
import { ChartOptions, Candle, Theme, ChartType, DrawingOptions, DrawingToolType } from '../types';
import { StopLossOptions, StopLossLine } from '../types/stopLoss';
import { IndicatorConfig } from '../plugins/IndicatorPlugin';
import { Marker } from '../types/marker';
import { DataManager } from './DataManager';
import { LineSeriesOptions } from './LineSeriesManager';
import { UnifiedCoordinateSystem } from './UnifiedCoordinateSystem';
import { ChartEventHandler } from './chart/ChartEventHandler';
export declare class Chart {
private container;
private dataManager;
private interactionManager;
private renderingManager;
private pluginManager;
private theme;
private options;
private eventHandler;
private lifecycle;
private lineSeriesHelper;
private stopLossHelper;
private styleHelper;
private viewportHelper;
private dataHelper;
private drawingHelper;
private markerHelper;
private exportHelper;
private uiHelper;
private indicatorHelper;
private animationFrameId;
private isDirty;
private debugMode;
private debugCallbacks;
private zoomMode;
private pendingData;
private pendingDataTimeout;
constructor(options: ChartOptions);
/**
* 디버그 로깅
*/
debugLog(message: string): void;
startRenderLoop(): void;
stopRenderLoop(): void;
private render;
/**
* 데이터 설정
* @param candles 캔들 데이터
* @param immediateRender 즉시 렌더링 여부 (React 환경에서 유용)
*/
setData(candles: Candle[], immediateRender?: boolean): void;
resampleData(groupSize: number): void;
resampleDataByTime(targetMinutes: number, sourceMinutes?: number): void;
convertTo65Min(): void;
restoreOriginalData(): void;
isDataResampled(): boolean;
getOriginalData(): Candle[] | null;
/**
* 차트 크기 조정
*/
resize(): void;
/**
* 초기화 완료 대기
*/
waitUntilReady(): Promise<void>;
/**
* 리소스 정리
*/
dispose(): void;
getContainer(): HTMLElement;
getDataManager(): DataManager;
getTheme(): Theme;
getOptions(): ChartOptions;
getEventHandler(): ChartEventHandler;
getZoomMode(): 'mouse' | 'latest';
getPendingData(): {
candles: Candle[];
immediateRender: boolean;
} | null;
clearPendingData(): void;
setDirty(value: boolean): void;
isReady(): boolean;
getState(): string;
on(event: 'stateChange', callback: (state: string) => void): void;
off(event: 'stateChange', callback: (state: string) => void): void;
addIndicator(config: IndicatorConfig): string;
removeIndicator(id: string): void;
clearIndicators(): void;
toggleIndicator(id: string): void;
getIndicators(): IndicatorConfig[];
updateIndicator(id: string, updates: Partial<IndicatorConfig>): void;
addSMA(period: number, options?: {
color?: string;
lineWidth?: number;
source?: 'open' | 'high' | 'low' | 'close';
}): string;
addEMA(period: number, options?: {
color?: string;
lineWidth?: number;
source?: 'open' | 'high' | 'low' | 'close';
}): string;
addBollingerBands(period?: number, stdDev?: number, options?: {
upperColor?: string;
lowerColor?: string;
middleColor?: string;
}): string;
toggleAllMA(): void;
applyTimeframeMA(customConfigs?: Record<string, Array<{
type: 'SMA' | 'EMA';
period: number;
color: string;
}>>): void;
clearTimeframeMA(): void;
getTimeframeMAInfo(): {
timeframe: string | null;
indicatorIds: string[];
};
addDrawing(type: string, options?: DrawingOptions): void;
exportDrawings(): string;
importDrawings(jsonData: string): void;
clearDrawings(): void;
setDrawingTool(tool: DrawingToolType | null): void;
getDrawingTool(): DrawingToolType | null;
setMagneticMode(enabled: boolean): void;
getMagneticMode(): boolean;
addMarker(marker: Marker): string;
setMarkers(markers: Marker[]): void;
removeMarker(id: string): void;
clearMarkers(): void;
getMarkers(): Marker[];
toImage(format?: 'png' | 'jpeg', quality?: number, scaleFactor?: number): Promise<Blob>;
/**
* 차트를 고화질(QHD+) 이미지로 내보내기
*/
toHighResImage(format?: 'png' | 'jpeg', quality?: number): Promise<Blob>;
/**
* 차트를 지정된 해상도로 내보내기
*/
toCustomResolution(targetWidth: number, format?: 'png' | 'jpeg', quality?: number): Promise<Blob>;
setChartType(type: ChartType): void;
setTheme(theme: 'dark' | 'light'): void;
setCursorType(type: 'default' | 'crosshair' | 'dot'): void;
setZoomMode(mode: 'mouse' | 'latest'): void;
updateSettings(settings: Partial<ChartOptions>): void;
getViewport(): UnifiedCoordinateSystem | null;
addLineSeries(options: LineSeriesOptions): string;
updateLineSeries(id: string, data: Array<{
time: number;
value: number;
}>): void;
removeLineSeries(id: string): void;
toggleLineSeriesVisibility(id: string): void;
updateLineSeriesStyle(id: string, style: {
color?: string;
lineWidth?: number;
}): void;
getAllLineSeries(): import('../types').LineSeriesData[];
clearLineSeries(): void;
addStopLossLine(price: number, options?: StopLossOptions): string;
removeStopLossLine(id: string): boolean;
clearStopLossLines(): void;
updateStopLossLine(id: string, updates: Partial<StopLossOptions & {
price?: number;
}>): boolean;
getStopLossLines(): StopLossLine[];
updateCandleColors(colors: {
upColor?: string;
downColor?: string;
borderUpColor?: string;
borderDownColor?: string;
wickColor?: string;
}): void;
updateVolumeColors(colors: {
up?: string;
down?: string;
maColor?: string;
}): void;
updateMovingAverageStyle(id: string, style: {
color?: string;
lineWidth?: number;
lineStyle?: 'solid' | 'dashed' | 'dotted';
opacity?: number;
}): void;
updateAllMovingAveragesStyle(style: {
color?: string;
lineWidth?: number;
lineStyle?: 'solid' | 'dashed' | 'dotted';
opacity?: number;
}): void;
updateMarkerStyle(id: string, style: {
color?: string;
text?: string;
size?: number;
}): void;
updateMarkersStyleByType(type: 'buy' | 'sell', style: {
color?: string;
text?: string;
size?: number;
shape?: 'arrowUp' | 'arrowDown' | 'circle' | 'square';
}): void;
updateStopLossStyle(id: string, style: {
color?: string;
lineWidth?: number;
label?: string;
opacity?: number;
}): void;
addAveragePriceLine(price: number, options?: {
label?: string;
color?: string;
lineWidth?: number;
dashed?: boolean;
}): string;
updateAveragePriceLine(id: string, updates: {
price?: number;
label?: string;
color?: string;
lineWidth?: number;
}): boolean;
updatePriceRangeForVisibleData(): void;
/**
* 차트뷰를 초기 설정대로 리셋
*/
applyInitialView(): void;
/**
* 설정값으로 뷰 적용 (헬퍼 메서드)
*/
private applySettingsView;
/**
* 차트뷰 고정/해제 토글
*/
toggleViewLock(): void;
/**
* 드로잉 기본 스타일 설정
*/
setDefaultDrawingStyle(style: {
color?: string;
lineWidth?: number;
opacity?: number;
}): void;
/**
* 텍스트 기본 스타일 설정
*/
setTextDefaults(textDefaults: any): void;
}