UNPKG

ag-charts-enterprise

Version:

Advanced Charting / Charts supporting Javascript / Typescript / React / Angular / Vue

137 lines (136 loc) 7.19 kB
import { type AgCandlestickSeriesItemOptions, type AgOhlcSeriesItemOptions, type AgOhlcSeriesItemType, _ModuleSupport } from 'ag-charts-community'; import type { AgOhlcSeriesBaseOptions, SelectionState } from 'ag-charts-community'; import { ChartAxisDirection, type DynamicContext, type FillStrokeMorph, type Normalised } from 'ag-charts-core'; import type { AgNumericValue } from 'ag-charts-types'; import { OhlcBaseNode } from './ohlcNode'; import type { OhlcSeriesBaseProperties } from './ohlcSeriesProperties'; interface OhlcCandleStickSeriesStyle extends AgCandlestickSeriesItemOptions, AgOhlcSeriesItemOptions { } /** Post-resolution style: colour refs are resolved to concrete colours before reaching the scene node. */ type NormalisedOhlcCandleStickSeriesStyle = Normalised<OhlcCandleStickSeriesStyle, never, FillStrokeMorph>; export interface OhlcNodeDatum extends Omit<_ModuleSupport.CartesianSeriesNodeDatum, 'yKey' | 'yValue'> { readonly itemId?: never; readonly itemType: AgOhlcSeriesItemType; readonly openValue: AgNumericValue; readonly closeValue: AgNumericValue; readonly highValue?: AgNumericValue; readonly lowValue?: AgNumericValue; readonly aggregatedValue: AgNumericValue; readonly isRising: boolean; readonly centerX: number; readonly width: number; readonly y: number; readonly height: number; readonly yOpen: number; readonly yClose: number; readonly crisp: boolean; style?: Required<NormalisedOhlcCandleStickSeriesStyle>; } declare class OhlcSeriesNodeEvent<TEvent extends string = _ModuleSupport.SeriesNodeEventTypes> extends _ModuleSupport.SeriesNodeEvent<OhlcNodeDatum, TEvent> { readonly xKey?: string; readonly openKey?: string; readonly closeKey?: string; readonly highKey?: string; readonly lowKey?: string; constructor(type: TEvent, nativeEvent: Event, datum: OhlcNodeDatum, series: OhlcSeriesBase<OhlcSeriesBaseTypes>, selectionState: SelectionState | undefined); } interface OhlcSeriesBaseNodeDataContext extends _ModuleSupport.AbstractBarSeriesNodeDataContext<OhlcNodeDatum> { styles: Record<'up' | 'down', _ModuleSupport.SeriesNodeStyleContext<NormalisedOhlcCandleStickSeriesStyle>>; } /** * Base type interface for OHLC series types. * Template parameter TNode allows subclasses to specify their node type. */ export interface OhlcSeriesBaseTypes extends _ModuleSupport.AbstractBarSeriesTypes { readonly node: OhlcBaseNode<OhlcNodeDatum>; readonly options: AgOhlcSeriesBaseOptions; readonly properties: OhlcSeriesBaseProperties<this['options']>; readonly datum: OhlcNodeDatum; readonly label: OhlcNodeDatum; readonly context: OhlcSeriesBaseNodeDataContext; } export declare abstract class OhlcSeriesBase<TTypes extends OhlcSeriesBaseTypes> extends _ModuleSupport.AbstractBarSeries<TTypes> { protected readonly NodeEvent: typeof OhlcSeriesNodeEvent; private readonly aggregationManager; constructor(moduleCtx: DynamicContext<_ModuleSupport.ChartRegistry>); processData(dataController: _ModuleSupport.DataController): Promise<void>; private aggregateData; private estimateTargetRange; protected createBucketLookupFeature(): _ModuleSupport.BucketLookupFeature; getSeriesDomain(direction: ChartAxisDirection): import("ag-charts-core").DomainWithMetadata<any>; getSeriesRange(_direction: ChartAxisDirection, visibleRange: [number, number]): [number, number]; getZoomRangeFittingItems(xVisibleRange: [number, number], yVisibleRange: [number, number] | undefined, minVisibleItems: number): { x: [number, number]; y: [number, number] | undefined; } | undefined; getVisibleItems(xVisibleRange: [number, number], yVisibleRange: [number, number] | undefined, minVisibleItems: number): number; /** * Creates shared context for node datum creation/update operations. * This context is instantiated once and reused across all datum operations * to minimize memory allocations. Only caches values that are expensive to * compute - cheap property lookups use `this` directly. */ private buildDatumContext; /** * Validates and prepares state for a single OHLC datum. * Mutates ctx.nodeDatumStateScratch with computed values. * Returns the scratch object if valid, undefined if invalid. */ private prepareOhlcNodeDatumState; /** * Creates a skeleton OhlcNodeDatum from prepared state. * Takes pre-computed positioning and state from scratch object. */ private createSkeletonNodeDatum; /** * Updates an existing OhlcNodeDatum in-place for value-only changes. * This is more efficient than recreating the entire node when only data values change * but the structure (insertions/removals) remains the same. */ private updateNodeDatum; /** * Handles node creation/update - reuses existing nodes when possible for incremental updates. * This method decides whether to update existing nodes in-place or create new ones. */ private upsertNodeDatum; createNodeData(): { itemId: string; nodeData: OhlcNodeDatum[]; labelData: never[]; scales: { x?: import("ag-charts-core").Scaling | undefined; y?: import("ag-charts-core").Scaling | undefined; angle?: import("ag-charts-core").Scaling | undefined; radius?: import("ag-charts-core").Scaling | undefined; }; groupScale: import("ag-charts-core").Scaling | undefined; visible: boolean; styles: Record<"up" | "down", Record<_ModuleSupport.HighlightState, Required<NormalisedOhlcCandleStickSeriesStyle> & { opacity: number; }>>; } | undefined; protected isVertical(): boolean; protected isLabelEnabled(): boolean; protected resetDatumAnimation(data: _ModuleSupport.CartesianAnimationData<OhlcNodeDatum, TTypes['node'], OhlcNodeDatum, OhlcSeriesBaseNodeDataContext>): void; protected updateDatumSelection(opts: { nodeData: OhlcNodeDatum[]; datumSelection: _ModuleSupport.Selection<OhlcNodeDatum, TTypes['node']>; seriesIdx: number; }): _ModuleSupport.Selection<OhlcNodeDatum, TTypes["node"]>; protected updateLabelNodes(_opts: { labelSelection: _ModuleSupport.Selection<OhlcNodeDatum, _ModuleSupport.Text<OhlcNodeDatum>>; seriesIdx: number; }): void; protected updateLabelSelection(opts: { labelData: OhlcNodeDatum[]; labelSelection: _ModuleSupport.Selection<OhlcNodeDatum, _ModuleSupport.Text<OhlcNodeDatum>>; seriesIdx: number; }): _ModuleSupport.Selection<OhlcNodeDatum, _ModuleSupport.Text<OhlcNodeDatum>>; protected getItemStyle(datumIndex: number | undefined, isHighlight: boolean, highlightState?: _ModuleSupport.HighlightState, itemType?: 'up' | 'down'): Required<NormalisedOhlcCandleStickSeriesStyle> & { opacity: number; }; private makeItemStylerParams; getTooltipContent(datumIndex: number): _ModuleSupport.TooltipContent | undefined; computeFocusBounds(opts: _ModuleSupport.PickFocusInputs): _ModuleSupport.BBox | undefined; } export {};