ag-charts-community
Version:
Advanced Charting / Charts supporting Javascript / Typescript / React / Angular / Vue
77 lines (76 loc) • 4.29 kB
TypeScript
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;
};