ag-charts-enterprise
Version:
Advanced Charting / Charts supporting Javascript / Typescript / React / Angular / Vue
161 lines (160 loc) • 9.27 kB
TypeScript
import { type AgDrawingMode, type AgRangeAreaSeriesOptions, type AgSeriesMarkerStyle, type SelectionState, _ModuleSupport } from 'ag-charts-community';
import { ChartAxisDirection, type DomainWithMetadata, type DynamicContext } from 'ag-charts-core';
import { type RangeAreaSeriesDataAggregationFilter } from './rangeAreaAggregation';
import { type RangeAreaMarkerDatum, RangeAreaProperties } from './rangeAreaProperties';
import { type RangeAreaContext, type RangeAreaLabelDatum } from './rangeAreaUtil';
/**
* Context object for efficient node datum creation.
* Caches expensive-to-compute values that are reused across all datum iterations.
*/
interface RangeAreaSeriesNodeDatumContext extends _ModuleSupport.CartesianCreateNodeDataContext<RangeAreaMarkerDatum> {
readonly yHighValues: any[];
readonly yLowValues: any[];
readonly xOffset: number;
readonly xAxisRange: [number, number];
readonly dataAggregationFilter: RangeAreaSeriesDataAggregationFilter | undefined;
readonly range: number;
readonly labelsEnabled: boolean;
readonly yLowKey: string;
readonly yHighKey: string;
readonly item: RangeAreaProperties['item'];
readonly yDomain: any[];
readonly connectMissingData: boolean;
readonly interpolation: RangeAreaProperties['interpolation'];
labelData: RangeAreaLabelDatum[];
spanPoints: Array<RangeAreaSpanPointDatum[] | {
skip: number;
}>;
}
declare class RangeAreaSeriesNodeEvent<TEvent extends string = _ModuleSupport.SeriesNodeEventTypes> extends _ModuleSupport.SeriesNodeEvent<RangeAreaMarkerDatum, TEvent> {
readonly xKey?: string;
readonly yLowKey?: string;
readonly yHighKey?: string;
constructor(type: TEvent, nativeEvent: Event, datum: RangeAreaMarkerDatum, series: RangeAreaSeries, selectionState: SelectionState | undefined);
}
interface RangeAreaSpanPointDatum {
high: _ModuleSupport.LineSpanPointDatum;
low: _ModuleSupport.LineSpanPointDatum;
}
/**
* Consolidated type interface for RangeAreaSeries.
*/
interface RangeAreaSeriesTypes extends _ModuleSupport.CartesianSeriesTypes {
readonly node: _ModuleSupport.Marker<RangeAreaMarkerDatum>;
readonly options: AgRangeAreaSeriesOptions;
readonly properties: RangeAreaProperties;
readonly datum: RangeAreaMarkerDatum;
readonly label: RangeAreaLabelDatum;
readonly context: RangeAreaContext;
readonly stackContext: never;
readonly createNodeDataContext: RangeAreaSeriesNodeDatumContext;
}
type GetMarkerStyleArg<I extends number> = Parameters<_ModuleSupport.CartesianSeries<RangeAreaSeriesTypes>['getMarkerStyle']>[I];
export declare class RangeAreaSeries extends _ModuleSupport.CartesianSeries<RangeAreaSeriesTypes> {
static readonly className = "RangeAreaSeries";
static readonly type: "range-area";
properties: RangeAreaProperties;
protected readonly NodeEvent: typeof RangeAreaSeriesNodeEvent;
private readonly aggregationManager;
private hideWithSize0;
constructor(moduleCtx: DynamicContext<_ModuleSupport.ChartRegistry>);
renderToOffscreenCanvas(): boolean;
processData(dataController: _ModuleSupport.DataController): Promise<void>;
private aggregateData;
protected createBucketLookupFeature(): _ModuleSupport.BucketLookupFeature;
private estimateTargetRange;
/**
* Creates the context object for efficient node datum creation.
* Caches expensive-to-compute values that are reused across all datum iterations.
*/
protected createNodeDatumContext(xAxis: _ModuleSupport.ChartAxis, yAxis: _ModuleSupport.ChartAxis): RangeAreaSeriesNodeDatumContext | undefined;
xCoordinateRange(xValue: any): [number, number];
yCoordinateRange(yValues: any[]): [number, number];
getSeriesDomain(direction: ChartAxisDirection): DomainWithMetadata<any>;
getSeriesRange(_direction: ChartAxisDirection, visibleRange: [number, number]): [number, number];
/**
* Processes a single datum and updates the context's marker, label, and span arrays.
* Uses the scratch object to avoid per-iteration allocations.
*
* @param yHighValueOverride - Optional override for yHighValue, used in aggregation mode
* when the extreme values come from different data points
* @param yLowValueOverride - Optional override for yLowValue, used in aggregation mode
*/
private handleDatumPoint;
private pushGapMarker;
private hasInvalidDatumsInRange;
/**
* Creates or updates marker datum for a single boundary (high or low).
* Supports incremental updates by reusing existing marker data objects when possible.
*/
private upsertMarkerDatum;
protected populateNodeData(ctx: RangeAreaSeriesNodeDatumContext): void;
protected finalizeNodeData(ctx: RangeAreaSeriesNodeDatumContext): void;
protected initializeResult(ctx: RangeAreaSeriesNodeDatumContext): RangeAreaContext;
protected assembleResult(ctx: RangeAreaSeriesNodeDatumContext, result: RangeAreaContext): RangeAreaContext;
private getLowOrHighMarkerStyles;
private createLabelData;
protected isPathOrSelectionDirty(): boolean;
protected strokewidthChange(): boolean;
protected updatePathNodes(opts: {
paths: _ModuleSupport.SegmentedPath[];
visible: boolean;
animationEnabled: boolean;
}): void;
protected updatePaths(opts: {
contextData: RangeAreaContext;
paths: _ModuleSupport.Path[];
}): void;
private updateAreaPaths;
private updateFillPath;
private updateStrokePath;
protected resetDatumAnimation(data: _ModuleSupport.CartesianAnimationData<RangeAreaMarkerDatum, _ModuleSupport.Marker<RangeAreaMarkerDatum>, RangeAreaLabelDatum, RangeAreaContext>): void;
protected updateDatumSelection(opts: {
nodeData: RangeAreaMarkerDatum[];
datumSelection: _ModuleSupport.Selection<RangeAreaMarkerDatum, _ModuleSupport.Marker<RangeAreaMarkerDatum>>;
}): _ModuleSupport.Selection<RangeAreaMarkerDatum, _ModuleSupport.Marker<RangeAreaMarkerDatum>>;
private static computeNoStylerMarkerStyle;
private static computeStylerStyle;
private static applyStylerDatum;
protected updateDatumStyles({ datumSelection, isHighlight, }: {
datumSelection: _ModuleSupport.Selection<RangeAreaMarkerDatum, _ModuleSupport.Marker<RangeAreaMarkerDatum>>;
isHighlight: boolean;
}): void;
protected updateDatumNodes(opts: {
datumSelection: _ModuleSupport.Selection<RangeAreaMarkerDatum, _ModuleSupport.Marker<RangeAreaMarkerDatum>>;
isHighlight: boolean;
drawingMode: AgDrawingMode;
}): void;
protected updateLabelSelection(opts: {
labelData: RangeAreaLabelDatum[];
labelSelection: _ModuleSupport.Selection<RangeAreaLabelDatum, _ModuleSupport.Text<RangeAreaLabelDatum>>;
}): _ModuleSupport.Selection<RangeAreaLabelDatum, _ModuleSupport.Text<RangeAreaLabelDatum>>;
protected updateLabelNodes(opts: {
labelSelection: _ModuleSupport.Selection<RangeAreaLabelDatum, _ModuleSupport.Text<RangeAreaLabelDatum>>;
isHighlight?: boolean;
}): void;
protected getHighlightLabelData(labelData: RangeAreaLabelDatum[], highlightedItem: RangeAreaMarkerDatum): RangeAreaLabelDatum[];
protected getHighlightData(nodeData: RangeAreaMarkerDatum[], highlightedItem: RangeAreaMarkerDatum): RangeAreaMarkerDatum[] | undefined;
private getStyle;
private getStylerMarkerOptions;
private getStylerCouple;
private makeStylerParams;
private makeItemStylerParams;
getTooltipContent(datumIndex: number, removeThisDatum: RangeAreaMarkerDatum | undefined): _ModuleSupport.TooltipContent | undefined;
private legendItemSymbol;
getLegendData(legendType: _ModuleSupport.ChartLegendType): _ModuleSupport.CategoryLegendDatum[];
protected isLabelEnabled(): boolean;
protected nodeFactory(): _ModuleSupport.Marker<RangeAreaMarkerDatum>;
animateEmptyUpdateReady(animationData: _ModuleSupport.CartesianAnimationData<RangeAreaMarkerDatum, _ModuleSupport.Marker<RangeAreaMarkerDatum>, RangeAreaLabelDatum, RangeAreaContext>): void;
protected animateReadyResize(animationData: _ModuleSupport.CartesianAnimationData<RangeAreaMarkerDatum, _ModuleSupport.Marker<RangeAreaMarkerDatum>, RangeAreaLabelDatum, RangeAreaContext>): void;
animateWaitingUpdateReady(animationData: _ModuleSupport.CartesianAnimationData<RangeAreaMarkerDatum, _ModuleSupport.Marker<RangeAreaMarkerDatum>, RangeAreaLabelDatum, RangeAreaContext>): void;
getFormattedMarkerStyle(datum: RangeAreaMarkerDatum): AgSeriesMarkerStyle & {
size: number;
opacity?: number | undefined;
};
getMarkerStyle<TParams>(marker: _ModuleSupport.SeriesMarker<TParams>, datum: GetMarkerStyleArg<1>, params?: TParams, opts?: GetMarkerStyleArg<3>, defaultOverrideStyle?: GetMarkerStyleArg<4>, inheritedStyle?: GetMarkerStyleArg<5>): ReturnType<_ModuleSupport.CartesianSeries<RangeAreaSeriesTypes>['getMarkerStyle']>;
protected computeFocusBounds(opts: _ModuleSupport.PickFocusInputs): _ModuleSupport.BBox | undefined;
protected isDatumEnabled(nodeData: RangeAreaMarkerDatum[], datumIndex: number): boolean;
protected hasItemStylers(): boolean;
}
export {};