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;
|