Multi-Chart Sync API
API reference for synchronizing multiple TradeX charts.
ChartSynchronizer
Constructor
class ChartSynchronizer {
constructor(options?: SyncOptions)
}
interface SyncOptions {
syncCrosshair?: boolean
syncZoom?: boolean
syncScroll?: boolean
syncTimeRange?: boolean
}
Parameters:
options(optional): Configuration options for synchronization
Example:
const sync = new ChartSynchronizer({
syncCrosshair: true,
syncZoom: true,
syncScroll: true
})
Methods
addChart()
Add a chart to the synchronization group.
addChart(id: string, chart: TradeXChart, config?: ChartSyncConfig): void
interface ChartSyncConfig {
syncCrosshair?: boolean
syncZoom?: boolean
syncScroll?: boolean
syncTimeRange?: boolean
}
Parameters:
id: Unique identifier for the chartchart: TradeX chart instanceconfig(optional): Chart-specific sync configuration
Returns: void
Example:
const chart1 = document.getElementById('chart1')
const chart2 = document.getElementById('chart2')
sync.addChart('btc', chart1)
sync.addChart('eth', chart2, {
syncZoom: false // Don't sync zoom for this chart
})
removeChart()
Remove a chart from the synchronization group.
removeChart(id: string): void
Parameters:
id: Chart identifier
Returns: void
Example:
sync.removeChart('btc')
toggleSync()
Toggle a specific synchronization feature.
toggleSync(type: 'Crosshair' | 'Zoom' | 'Scroll' | 'TimeRange'): void
Parameters:
type: Type of synchronization to toggle
Returns: void
Example:
sync.toggleSync('Zoom') // Disable zoom sync
sync.toggleSync('Zoom') // Re-enable zoom sync
syncCrosshair()
Manually trigger crosshair synchronization.
syncCrosshair(sourceId: string, event: CrosshairEvent): void
interface CrosshairEvent {
timestamp: number
price: number
}
Parameters:
sourceId: ID of the source chartevent: Crosshair event data
Returns: void
syncZoom()
Manually trigger zoom synchronization.
syncZoom(sourceId: string, event: ZoomEvent): void
interface ZoomEvent {
level: number
}
Parameters:
sourceId: ID of the source chartevent: Zoom event data
Returns: void
syncScroll()
Manually trigger scroll synchronization.
syncScroll(sourceId: string, event: ScrollEvent): void
interface ScrollEvent {
position: number
}
Parameters:
sourceId: ID of the source chartevent: Scroll event data
Returns: void
Events
crosshair
Fired when crosshair position changes.
chart.on('crosshair', (event: CrosshairEvent) => void)
interface CrosshairEvent {
timestamp: number
price: number
x: number
y: number
}
Example:
chart.on('crosshair', (event) => {
console.log('Crosshair at:', event.timestamp, event.price)
})
zoom
Fired when zoom level changes.
chart.on('zoom', (event: ZoomEvent) => void)
interface ZoomEvent {
level: number
scale: number
}
Example:
chart.on('zoom', (event) => {
console.log('Zoom level:', event.level)
})
scroll
Fired when chart is scrolled.
chart.on('scroll', (event: ScrollEvent) => void)
interface ScrollEvent {
position: number
offset: number
}
Example:
chart.on('scroll', (event) => {
console.log('Scroll position:', event.position)
})
timeRangeChange
Fired when visible time range changes.
chart.on('timeRangeChange', (event: TimeRangeEvent) => void)
interface TimeRangeEvent {
start: number
end: number
}
Example:
chart.on('timeRangeChange', (event) => {
console.log('Time range:', event.start, event.end)
})
Chart Methods
setCrosshair()
Set crosshair position programmatically.
chart.setCrosshair(timestamp: number, price: number): void
Parameters:
timestamp: Unix timestamp in millisecondsprice: Price value
Returns: void
Example:
chart.setCrosshair(1609459200000, 45000)
setZoom()
Set zoom level programmatically.
chart.setZoom(level: number): void
Parameters:
level: Zoom level (1.0 = 100%)
Returns: void
Example:
chart.setZoom(1.5) // 150% zoom
scrollTo()
Scroll to a specific position.
chart.scrollTo(position: number): void
Parameters:
position: Scroll position (0-1)
Returns: void
Example:
chart.scrollTo(0.5) // Scroll to middle
setTimeRange()
Set visible time range.
chart.setTimeRange(start: number, end: number): void
Parameters:
start: Start timestampend: End timestamp
Returns: void
Example:
const start = Date.now() - 24 * 60 * 60 * 1000 // 24 hours ago
const end = Date.now()
chart.setTimeRange(start, end)
TypeScript Definitions
declare module 'tradex-chart' {
export class ChartSynchronizer {
constructor(options?: SyncOptions)
addChart(id: string, chart: TradeXChart, config?: ChartSyncConfig): void
removeChart(id: string): void
toggleSync(type: 'Crosshair' | 'Zoom' | 'Scroll' | 'TimeRange'): void
syncCrosshair(sourceId: string, event: CrosshairEvent): void
syncZoom(sourceId: string, event: ZoomEvent): void
syncScroll(sourceId: string, event: ScrollEvent): void
}
export interface SyncOptions {
syncCrosshair?: boolean
syncZoom?: boolean
syncScroll?: boolean
syncTimeRange?: boolean
}
export interface ChartSyncConfig {
syncCrosshair?: boolean
syncZoom?: boolean
syncScroll?: boolean
syncTimeRange?: boolean
}
export interface CrosshairEvent {
timestamp: number
price: number
x: number
y: number
}
export interface ZoomEvent {
level: number
scale: number
}
export interface ScrollEvent {
position: number
offset: number
}
export interface TimeRangeEvent {
start: number
end: number
}
}
Related Documentation
- Example - Multi-chart sync example
- Events - Event reference
- Configuration - Chart configuration