UNPKG

@devexperts/dxcharts-lite

Version:
67 lines (66 loc) 3.12 kB
/* * Copyright (C) 2019 - 2026 Devexperts Solutions IE Limited * This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. * If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/. */ import { Observable, Subject } from 'rxjs'; import { Unit } from '../../model/scaling/viewport.model'; import { AnimationFrameCache } from '../../utils/performance/animation-frame-cache.utils'; import { YAxisConfig, YAxisConfigTreasuryFormat } from '../../chart.config'; export type PriceAxisType = 'regular' | 'percent' | 'logarithmic'; export interface LabelsGenerator { readonly observeLabelsChanged: () => Observable<NumericAxisLabel[]>; } /** * Generator of axes labels. */ export declare class NumericAxisLabelsGenerator implements LabelsGenerator { private increment; private startEndProvider; private lengthProvider; valueFormatter: (value: number) => string; private withZero; protected axisTypeProvider: () => PriceAxisType; private baseLineProvider; private labelFilter; private singleLabelHeightPixels; private yAxisConfig?; /** * Multipliers which are using for price increments to * calculate horizontal grid and price lines step. */ private gridDistanceMultipliers; labelsCache: AnimationFrameCache<Array<NumericAxisLabel>>; lastSingleLabelHeightValue: number; distanceBetweenLabelsChangeSubject: Subject<NumericAxisLabel[][]>; newGeneratedLabelsSubject: Subject<NumericAxisLabel[]>; private lastStart; private lastEnd; protected treasuryFormat: YAxisConfigTreasuryFormat | undefined; constructor(increment: number | null, startEndProvider: () => [Unit, Unit], lengthProvider: () => Unit, valueFormatter: (value: number) => string, withZero: boolean | undefined, axisTypeProvider: () => PriceAxisType, baseLineProvider: () => number, labelFilter?: (labels: NumericAxisLabel[]) => NumericAxisLabel[], singleLabelHeightPixels?: number, yAxisConfig?: YAxisConfig | undefined); private generateRegularLabels; private generatePercentLabels; private generateLogarithmLabels; doGenerateLabels(): NumericAxisLabel[]; private calculateMinMax; private getAxisStep; observeDistanceBetweenLabelsChanged(): Observable<NumericAxisLabel[][]>; observeLabelsChanged(): Observable<NumericAxisLabel[]>; protected calculateIncrement(valueLength: number): Unit; protected adjustIncrementOnAxisType(increment: number): number; generateNumericLabels(): Array<NumericAxisLabel>; private static getLabelBounds; /** * Calculates the distance between two axis labels as: * - Take increment (0.01 for price or 1 for natural number); * - Take step which was calculated as (chart height / max lines count provided by config (or default 10)); * - Multiplying increment with gridDistanceMultipliers until it will greater then step * @param step * @param increment */ private calculateAxisStep; } export interface NumericAxisLabel { text: string; value: Unit; }