UNPKG

echarts

Version:

Apache ECharts is a powerful, interactive charting and data visualization library for browser

93 lines (92 loc) 3.32 kB
import * as clazzUtil from '../util/clazz.js'; import { Dictionary } from 'zrender/lib/core/types.js'; import SeriesData from '../data/SeriesData.js'; import { DimensionName, ScaleDataValue, OptionDataValue, DimensionLoose, ScaleTick } from '../util/types.js'; import { ScaleRawExtentInfo } from '../coord/scaleRawExtentInfo.js'; declare abstract class Scale<SETTING extends Dictionary<unknown> = Dictionary<unknown>> { type: string; private _setting; protected _extent: [number, number]; private _isBlank; readonly rawExtentInfo: ScaleRawExtentInfo; constructor(setting?: SETTING); getSetting<KEY extends keyof SETTING>(name: KEY): SETTING[KEY]; /** * Parse input val to valid inner number. * Notice: This would be a trap here, If the implementation * of this method depends on extent, and this method is used * before extent set (like in dataZoom), it would be wrong. * Nevertheless, parse does not depend on extent generally. */ abstract parse(val: OptionDataValue): number; /** * Whether contain the given value. */ abstract contain(val: ScaleDataValue): boolean; /** * Normalize value to linear [0, 1], return 0.5 if extent span is 0. */ abstract normalize(val: ScaleDataValue): number; /** * Scale normalized value to extent. */ abstract scale(val: number): number; /** * Set extent from data */ unionExtent(other: [number, number]): void; /** * Set extent from data */ unionExtentFromData(data: SeriesData, dim: DimensionName | DimensionLoose): void; /** * Get extent * * Extent is always in increase order. */ getExtent(): [number, number]; /** * Set extent */ setExtent(start: number, end: number): void; /** * If value is in extent range */ isInExtentRange(value: number): boolean; /** * When axis extent depends on data and no data exists, * axis ticks should not be drawn, which is named 'blank'. */ isBlank(): boolean; /** * When axis extent depends on data and no data exists, * axis ticks should not be drawn, which is named 'blank'. */ setBlank(isBlank: boolean): void; /** * Update interval and extent of intervals for nice ticks * * @param splitNumber Approximated tick numbers. Optional. * The implementation of `niceTicks` should decide tick numbers * whether `splitNumber` is given. * @param minInterval Optional. * @param maxInterval Optional. */ abstract calcNiceTicks(splitNumber?: number, minInterval?: number, maxInterval?: number): void; abstract calcNiceExtent(opt?: { splitNumber?: number; fixMin?: boolean; fixMax?: boolean; minInterval?: number; maxInterval?: number; }): void; /** * @return label of the tick. */ abstract getLabel(tick: ScaleTick): string; abstract getTicks(): ScaleTick[]; abstract getMinorTicks(splitNumber: number): number[][]; static registerClass: clazzUtil.ClassManager['registerClass']; static getClass: clazzUtil.ClassManager['getClass']; } export default Scale;