UNPKG

ag-charts-types

Version:

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

198 lines (197 loc) 9.02 kB
import type { LabelBoxOptions } from '../series/cartesian/commonOptions'; import type { Formatter } from './callbackOptions'; import type { ContextDefault, CssColor, Degree, FontFamilyFull, FontSize, FontStyle, FontWeight, PixelSize, Ratio } from './types'; export interface AgAxisBoundSeries { /** ID of the series for values on the related axis. */ seriesId: string; /** Key used by the series for values on the related axis. */ key: string; /** Optional name used by the series for values on the related axis. */ name?: string; } export interface AgAxisCaptionFormatterParams { /** Default value to be used for the axis title (as specified in chart options or theme). */ defaultValue?: string; /** Direction of the axis the title belongs to. */ direction: 'x' | 'y' | 'angle' | 'radius'; /** Metadata about series bound to the axis the title belongs to. */ boundSeries: AgAxisBoundSeries[]; /** Computed domain of the axis */ domain: any[]; } export interface AgAxisCaptionOptions { /** Whether the title should be shown. */ enabled?: boolean; /** The text to show in the title. */ text?: string; /** The font style to use for the title. */ fontStyle?: FontStyle; /** The font weight to use for the title. */ fontWeight?: FontWeight; /** The font size in pixels to use for the title. */ fontSize?: FontSize; /** The font family to use for the title. */ fontFamily?: FontFamilyFull; /** The colour to use for the title. */ color?: CssColor; /** Spacing between the axis labels and the axis title. */ spacing?: PixelSize; /** Formatter to allow dynamic axis title calculation. */ formatter?: Formatter<AgAxisCaptionFormatterParams>; } export interface AgBaseAxisOptions<LabelType = any, TContext = ContextDefault> { /** Axis type identifier. */ type: string; /** Context object to use in callbacks. */ context?: TContext; /** Reverse the axis scale domain if `true`. */ reverse?: boolean; /** Configuration for the axis line. */ line?: AgAxisLineOptions; /** Configuration for the axis grid lines. */ gridLine?: AgAxisGridLineOptions; /** Configuration for the axis labels, shown next to the ticks. */ label?: LabelType; /** Configuration for the axis ticks. */ tick?: AgAxisBaseTickOptions; /** Configuration for the axis ticks interval. */ interval?: AgAxisBaseIntervalOptions; } export interface AgBaseContinuousAxisOptions<TDatum extends Date | number = number> { /** User override for the automatically determined min value (based on series data). */ min?: TDatum; /** User override for the automatically determined max value (based on series data). */ max?: TDatum; } export interface AgContinuousAxisOptions<TDatum extends Date | number = number, TInterval extends AgTimeInterval | AgTimeIntervalUnit | number = number> extends AgBaseContinuousAxisOptions<TDatum> { /** If `true`, the range will be rounded up to ensure nice equal spacing between the ticks. */ nice?: boolean; /** Configuration for the axis ticks interval. */ interval?: AgAxisContinuousIntervalOptions<TInterval>; } export interface AgAxisContinuousIntervalOptions<T extends AgTimeInterval | AgTimeIntervalUnit | number> extends AgAxisBaseIntervalOptions { /** The axis interval. Expressed in the units of the axis. If the configured interval results in too many items given the chart size, it will be ignored. */ step?: T; /** Maximum gap in pixels between items. */ maxSpacing?: PixelSize; } export interface AgAxisLineOptions { /** Set to `false` to hide the axis line. */ enabled?: boolean; /** The width in pixels of the axis line. */ width?: PixelSize; /** The colour of the axis line. */ stroke?: CssColor; } export interface AgAxisGridLineOptions { /** Set to `false` to hide the axis grid lines. */ enabled?: boolean; /** The width in pixels of the axis grid lines. */ width?: PixelSize; /** Configuration of the lines used to form the grid in the chart series area. */ style?: AgAxisGridStyle[]; } export interface AgAxisBaseTickOptions { /** Set to `false` to hide the axis ticks. */ enabled?: boolean; /** The width in pixels of the axis ticks. */ width?: PixelSize; /** The length in pixels of the axis ticks. */ size?: PixelSize; /** The colour of the axis ticks. */ stroke?: CssColor; } export interface AgAxisBaseIntervalOptions { /** Array of values in axis units for specified intervals along the axis. The values in this array must be compatible with the axis type. */ values?: any[]; /** Minimum gap in pixels between intervals. */ minSpacing?: PixelSize; } export interface AgBaseAxisLabelStyleOptions extends LabelBoxOptions { /** The font style to use for the labels. */ fontStyle?: FontStyle; /** The font weight to use for the labels. */ fontWeight?: FontWeight; /** The font size in pixels to use for the labels. */ fontSize?: FontSize; /** The font family to use for the labels */ fontFamily?: FontFamilyFull; /** Spacing in pixels between the axis label and the tick. */ spacing?: PixelSize; /** The colour to use for the labels */ color?: CssColor; } export interface AgAxisLabelFormatterParams<TContext = ContextDefault> { readonly value: any; readonly index: number; readonly fractionDigits?: number; readonly unit?: AgTimeIntervalUnit; readonly step?: number; readonly boundSeries: AgAxisBoundSeries[]; readonly domain: any[]; /** Context for this callback. */ readonly context?: TContext; } export interface AgAxisLabelStylerParams<TContext = ContextDefault> extends AgBaseAxisLabelStyleOptions { /** The label value that would be used, after applying formating. */ readonly value: any; /** Context for this callback. */ readonly context?: TContext; } export interface AgBaseAxisLabelOptions<TContext = ContextDefault> extends AgBaseAxisLabelStyleOptions { /** Set to `false` to hide the axis labels. */ enabled?: boolean; /** The rotation of the axis labels in degrees. Note: for integrated charts the default is 335 degrees, unless the axis shows grouped or default categories (indexes). The first row of labels in a grouped category axis is rotated perpendicular to the axis line. */ rotation?: Degree; /** Avoid axis label collision by automatically reducing the number of ticks displayed. If set to `false`, axis labels may collide. */ avoidCollisions?: boolean; /** Minimum gap in pixels between the axis labels before being removed to avoid collisions. */ minSpacing?: PixelSize; /** Function used to render axis labels. If `value` is a number, `fractionDigits` will also be provided, which indicates the number of fractional digits used in the step between ticks; for example, a tick step of `0.0005` would have `fractionDigits` set to `4` */ formatter?: Formatter<AgAxisLabelFormatterParams<TContext>>; } export interface AgNumericAxisFormattableLabelOptions<TContext = ContextDefault> extends AgBaseAxisLabelOptions<TContext> { /** Format string used when rendering labels. */ format?: string; } export interface AgTimeAxisFormattableLabelUnitFormat { millisecond?: string; second?: string; hour?: string; day?: string; month?: string; year?: string; } export type AgTimeAxisFormattableLabelFormat = string | AgTimeAxisFormattableLabelUnitFormat; export interface AgTimeAxisFormattableLabelOptions<TContext = ContextDefault> extends AgBaseAxisLabelOptions<TContext> { /** Format string used when rendering labels. */ format?: AgTimeAxisFormattableLabelFormat; } export interface AgAxisGridStyle { /** The colour of the fill between grid lines. */ fill?: CssColor; /** The opacity of the fill between grid lines. */ fillOpacity?: Ratio; /** The colour of the grid line. */ stroke?: CssColor; /** The width of the grid line in pixels. */ strokeWidth?: PixelSize; /** Defines how the grid lines are rendered. Every number in the array specifies the length in pixels of alternating dashes and gaps. For example, `[6, 3]` means dashes with a length of `6` pixels with gaps between of `3` pixels. */ lineDash?: PixelSize[]; } export type AgTimeIntervalUnit = 'millisecond' | 'second' | 'minute' | 'hour' | 'day' | 'month' | 'year'; export interface AgTimeInterval { /** The base duration of the time interval. */ unit: AgTimeIntervalUnit; /** A multiplier of the `unit`. * * For example, a unit of `'week'` and a step of `2` would be every two weeks. */ step?: number; /** Defines the alignment of time interval. * * For example, a unit of `'week'` with an epoch date of a Monday would be every Monday. * */ epoch?: Date; /** Whether all dates should be in UTC, or local time. */ utc?: boolean; }