import { HashMap } from 'zrender/lib/core/util.js';
|
import AxisProxy from './AxisProxy.js';
|
import ComponentModel from '../../model/Component.js';
|
import { LayoutOrient, ComponentOption, LabelOption } from '../../util/types.js';
|
import Model from '../../model/Model.js';
|
import GlobalModel from '../../model/Global.js';
|
import { AxisBaseModel } from '../../coord/AxisBaseModel.js';
|
import { DataZoomAxisDimension } from './helper.js';
|
export interface DataZoomOption extends ComponentOption {
|
mainType?: 'dataZoom';
|
/**
|
* Default auto by axisIndex
|
*/
|
orient?: LayoutOrient;
|
/**
|
* Default the first horizontal category axis.
|
*/
|
xAxisIndex?: number | number[];
|
xAxisId?: string | string[];
|
/**
|
* Default the first vertical category axis.
|
*/
|
yAxisIndex?: number | number[];
|
yAxisId?: string | string[];
|
radiusAxisIndex?: number | number[];
|
radiusAxisId?: string | string[];
|
angleAxisIndex?: number | number[];
|
angleAxisId?: string | string[];
|
singleAxisIndex?: number | number[];
|
singleAxisId?: string | string[];
|
/**
|
* Possible values: 'filter' or 'empty' or 'weakFilter'.
|
* 'filter': data items which are out of window will be removed. This option is
|
* applicable when filtering outliers. For each data item, it will be
|
* filtered if one of the relevant dimensions is out of the window.
|
* 'weakFilter': data items which are out of window will be removed. This option
|
* is applicable when filtering outliers. For each data item, it will be
|
* filtered only if all of the relevant dimensions are out of the same
|
* side of the window.
|
* 'empty': data items which are out of window will be set to empty.
|
* This option is applicable when user should not neglect
|
* that there are some data items out of window.
|
* 'none': Do not filter.
|
* Taking line chart as an example, line will be broken in
|
* the filtered points when filterModel is set to 'empty', but
|
* be connected when set to 'filter'.
|
*/
|
filterMode?: 'filter' | 'weakFilter' | 'empty' | 'none';
|
/**
|
* Dispatch action by the fixed rate, avoid frequency.
|
* default 100. Do not throttle when use null/undefined.
|
* If animation === true and animationDurationUpdate > 0,
|
* default value is 100, otherwise 20.
|
*/
|
throttle?: number | null | undefined;
|
/**
|
* Start percent. 0 ~ 100
|
*/
|
start?: number;
|
/**
|
* End percent. 0 ~ 100
|
*/
|
end?: number;
|
/**
|
* Start value. If startValue specified, start is ignored
|
*/
|
startValue?: number | string | Date;
|
/**
|
* End value. If endValue specified, end is ignored.
|
*/
|
endValue?: number | string | Date;
|
/**
|
* Min span percent, 0 - 100
|
* The range of dataZoom can not be smaller than that.
|
*/
|
minSpan?: number;
|
/**
|
* Max span percent, 0 - 100
|
* The range of dataZoom can not be larger than that.
|
*/
|
maxSpan?: number;
|
minValueSpan?: number;
|
maxValueSpan?: number;
|
rangeMode?: ['value' | 'percent', 'value' | 'percent'];
|
realtime?: boolean;
|
textStyle?: LabelOption;
|
}
|
declare type RangeOption = Pick<DataZoomOption, 'start' | 'end' | 'startValue' | 'endValue'>;
|
export declare type DataZoomExtendedAxisBaseModel = AxisBaseModel & {
|
__dzAxisProxy: AxisProxy;
|
};
|
declare class DataZoomAxisInfo {
|
indexList: number[];
|
indexMap: boolean[];
|
add(axisCmptIdx: number): void;
|
}
|
export declare type DataZoomTargetAxisInfoMap = HashMap<DataZoomAxisInfo, DataZoomAxisDimension>;
|
declare class DataZoomModel<Opts extends DataZoomOption = DataZoomOption> extends ComponentModel<Opts> {
|
static type: string;
|
type: string;
|
static dependencies: string[];
|
static defaultOption: DataZoomOption;
|
private _autoThrottle;
|
private _orient;
|
private _targetAxisInfoMap;
|
private _noTarget;
|
/**
|
* It is `[rangeModeForMin, rangeModeForMax]`.
|
* The optional values for `rangeMode`:
|
* + `'value'` mode: the axis extent will always be determined by
|
* `dataZoom.startValue` and `dataZoom.endValue`, despite
|
* how data like and how `axis.min` and `axis.max` are.
|
* + `'percent'` mode: `100` represents 100% of the `[dMin, dMax]`,
|
* where `dMin` is `axis.min` if `axis.min` specified, otherwise `data.extent[0]`,
|
* and `dMax` is `axis.max` if `axis.max` specified, otherwise `data.extent[1]`.
|
* Axis extent will be determined by the result of the percent of `[dMin, dMax]`.
|
*
|
* For example, when users are using dynamic data (update data periodically via `setOption`),
|
* if in `'value`' mode, the window will be kept in a fixed value range despite how
|
* data are appended, while if in `'percent'` mode, whe window range will be changed alone with
|
* the appended data (suppose `axis.min` and `axis.max` are not specified).
|
*/
|
private _rangePropMode;
|
/**
|
* @readonly
|
*/
|
settledOption: Opts;
|
init(option: Opts, parentModel: Model, ecModel: GlobalModel): void;
|
mergeOption(newOption: Opts): void;
|
private _doInit;
|
private _resetTarget;
|
private _fillSpecifiedTargetAxis;
|
private _fillAutoTargetAxisByOrient;
|
private _makeAutoOrientByTargetAxis;
|
private _setDefaultThrottle;
|
private _updateRangeUse;
|
noTarget(): boolean;
|
getFirstTargetAxisModel(): AxisBaseModel;
|
/**
|
* @param {Function} callback param: axisModel, dimNames, axisIndex, dataZoomModel, ecModel
|
*/
|
eachTargetAxis<Ctx>(callback: (this: Ctx, axisDim: DataZoomAxisDimension, axisIndex: number) => void, context?: Ctx): void;
|
/**
|
* @return If not found, return null/undefined.
|
*/
|
getAxisProxy(axisDim: DataZoomAxisDimension, axisIndex: number): AxisProxy;
|
/**
|
* @return If not found, return null/undefined.
|
*/
|
getAxisModel(axisDim: DataZoomAxisDimension, axisIndex: number): AxisBaseModel;
|
/**
|
* If not specified, set to undefined.
|
*/
|
setRawRange(opt: RangeOption): void;
|
setCalculatedRange(opt: RangeOption): void;
|
getPercentRange(): number[];
|
/**
|
* For example, chart.getModel().getComponent('dataZoom').getValueRange('y', 0);
|
*
|
* @return [startValue, endValue] value can only be '-' or finite number.
|
*/
|
getValueRange(axisDim: DataZoomAxisDimension, axisIndex: number): number[];
|
/**
|
* @param axisModel If axisModel given, find axisProxy
|
* corresponding to the axisModel
|
*/
|
findRepresentativeAxisProxy(axisModel?: AxisBaseModel): AxisProxy;
|
getRangePropMode(): DataZoomModel['_rangePropMode'];
|
getOrient(): LayoutOrient;
|
}
|
export default DataZoomModel;
|