UNPKG

ag-charts-community

Version:

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

77 lines (76 loc) 4.29 kB
import { type BoxBounds, type ITextMeasurer, type Scale, ScaleAlignment, type ScaleTickParams } from 'ag-charts-core'; import type { AgTimeInterval, AgTimeIntervalUnit, DateFormatterStyle, TextOrSegments } from 'ag-charts-types'; import type { AxisPrimaryTickCount } from '../../util/secondaryAxisTicks'; import type { ChartAxisLabel, ChartAxisLabelFlipFlag } from '../chartAxis'; import type { TickInterval } from './axisTick'; import { NiceMode, type TickDatum } from './axisUtil'; export type AnyTimeInterval = AgTimeInterval | AgTimeIntervalUnit; export interface AxisIntervalOptions<S> { step?: TickInterval<S>; values?: any[]; minSpacing?: number; maxSpacing?: number; } export interface GenerateTicksOptions<TScale extends Scale<TDatum, number, TickInterval<TScale>>, TDatum> { label: ChartAxisLabel; /** Whether labels render parallel to the axis line. Internal axis state — see I2. */ parallel?: boolean; scale: TScale; domain: TDatum[]; range: [number, number]; visibleRange: [number, number]; niceMode: NiceMode[]; reverse: boolean; primaryTickCount: AxisPrimaryTickCount | undefined; defaultTickMinSpacing: number; axisRotation: number; labelOffset: number; sideFlag: ChartAxisLabelFlipFlag; primaryLabel?: ChartAxisLabel; interval: AxisIntervalOptions<TScale> | undefined; minimumTimeGranularity?: AgTimeIntervalUnit; sizeLimit?: number; isVertical?: boolean; inRange?: (value: number) => boolean; tickFormatter(this: void, domain: TDatum[], ticks: TDatum[], primary: boolean, fractionDigits: number | undefined, timeInterval: AnyTimeInterval | undefined, dateStyle: DateFormatterStyle): (value: any, index: number) => TextOrSegments | undefined; } export interface TickData<D = any> { niceDomain: D[]; tickDomain: D[]; rawTicks: D[]; rawTickCount: number | undefined; fractionDigits: number; ticks: TickDatum[]; timeInterval: AnyTimeInterval | undefined; } export declare function axisLabelsOverlap(data: readonly BoxBounds[], padding?: number): boolean; export declare function ticksEqual(a: unknown[], b: unknown[]): boolean; export declare function ticksSpacing(ticks: TickDatum[]): number; export declare function formatTicks<S extends Scale<D, number, TickInterval<S>>, D>(options: GenerateTicksOptions<S, D>, { niceDomain, rawTicks, rawFirstTickIndex, generatePrimaryTicks, primaryTicksIndices, alignment, fractionDigits, timeInterval, }: { niceDomain: D[]; rawTicks: any[]; rawFirstTickIndex: number | undefined; generatePrimaryTicks: boolean; primaryTicksIndices: Set<number> | undefined; alignment: ScaleAlignment | undefined; fractionDigits: number; timeInterval: AnyTimeInterval | undefined; }): TickDatum[]; export declare function withTemporaryDomain<S extends Scale<D, number, TickInterval<S>>, D>(scale: S, temporaryDomain: D[], callback: () => void): void; export declare function getTimeIntervalTicks<S extends Scale<D, number, TickInterval<S>>, D>(scale: S, visibleRange: [number, number], tickCount: number, maxTickCount: number, tickParams: Readonly<ScaleTickParams<any>>, timeInterval: AnyTimeInterval, reverse: boolean, minimumTimeGranularity?: AgTimeIntervalUnit): { ticks: Date[]; primaryTicksIndices: Set<number> | undefined; alignment: ScaleAlignment | undefined; } | undefined; export declare function timeIntervalMaxLabelSize(label: ChartAxisLabel, primaryLabel: ChartAxisLabel | undefined, domain: Date[], timeInterval: AgTimeInterval | AgTimeIntervalUnit, textMeasurer: ITextMeasurer): { width: number; height: number; }; export declare function getTextBaseline(parallel: boolean, labelRotation: number, sideFlag: ChartAxisLabelFlipFlag, parallelFlipFlag: ChartAxisLabelFlipFlag): CanvasTextBaseline; export declare function getTextAlign(parallel: boolean, labelRotation: number, labelAutoRotation: number, sideFlag: ChartAxisLabelFlipFlag, regularFlipFlag: ChartAxisLabelFlipFlag): CanvasTextAlign; export declare function calculateLabelRotation(rotation?: number, parallel?: boolean, axisRotation?: number): { configuredRotation: number; defaultRotation: number; parallelFlipFlag: ChartAxisLabelFlipFlag; regularFlipFlag: ChartAxisLabelFlipFlag; };