echarts
Version:
Apache ECharts is a powerful, interactive charting and data visualization library for browser
127 lines (126 loc) • 4.17 kB
TypeScript
import * as graphic from '../../util/graphic.js';
import { AxisPointer } from './AxisPointer.js';
import { AxisBaseModel } from '../../coord/AxisBaseModel.js';
import ExtensionAPI from '../../core/ExtensionAPI.js';
import Element from 'zrender/lib/Element.js';
import { VerticalAlign, HorizontalAlign, CommonAxisPointerOption } from '../../util/types.js';
import { PathProps } from 'zrender/lib/graphic/Path.js';
import Model from '../../model/Model.js';
import { TextProps } from 'zrender/lib/graphic/Text.js';
interface Transform {
x: number;
y: number;
rotation: number;
}
declare type AxisValue = CommonAxisPointerOption['value'];
declare type AxisPointerModel = Model<CommonAxisPointerOption>;
interface BaseAxisPointer {
/**
* Should be implemenented by sub-class if support `handle`.
*/
getHandleTransform(value: AxisValue, axisModel: AxisBaseModel, axisPointerModel: AxisPointerModel): Transform;
/**
* * Should be implemenented by sub-class if support `handle`.
*/
updateHandleTransform(transform: Transform, delta: number[], axisModel: AxisBaseModel, axisPointerModel: AxisPointerModel): Transform & {
cursorPoint: number[];
tooltipOption?: {
verticalAlign?: VerticalAlign;
align?: HorizontalAlign;
};
};
}
export interface AxisPointerElementOptions {
graphicKey: string;
pointer: PathProps & {
type: 'Line' | 'Rect' | 'Circle' | 'Sector';
};
label: TextProps;
}
/**
* Base axis pointer class in 2D.
*/
declare class BaseAxisPointer implements AxisPointer {
private _group;
private _lastGraphicKey;
private _handle;
private _dragging;
private _lastValue;
private _lastStatus;
private _payloadInfo;
/**
* If have transition animation
*/
private _moveAnimation;
private _axisModel;
private _axisPointerModel;
private _api;
/**
* In px, arbitrary value. Do not set too small,
* no animation is ok for most cases.
*/
protected animationThreshold: number;
/**
* @implement
*/
render(axisModel: AxisBaseModel, axisPointerModel: AxisPointerModel, api: ExtensionAPI, forceRender?: boolean): void;
/**
* @implement
*/
remove(api: ExtensionAPI): void;
/**
* @implement
*/
dispose(api: ExtensionAPI): void;
/**
* @protected
*/
determineAnimation(axisModel: AxisBaseModel, axisPointerModel: AxisPointerModel): boolean;
/**
* add {pointer, label, graphicKey} to elOption
* @protected
*/
makeElOption(elOption: AxisPointerElementOptions, value: AxisValue, axisModel: AxisBaseModel, axisPointerModel: AxisPointerModel, api: ExtensionAPI): void;
/**
* @protected
*/
createPointerEl(group: graphic.Group, elOption: AxisPointerElementOptions, axisModel: AxisBaseModel, axisPointerModel: AxisPointerModel): void;
/**
* @protected
*/
createLabelEl(group: graphic.Group, elOption: AxisPointerElementOptions, axisModel: AxisBaseModel, axisPointerModel: AxisPointerModel): void;
/**
* @protected
*/
updatePointerEl(group: graphic.Group, elOption: AxisPointerElementOptions, updateProps: (el: Element, props: PathProps) => void): void;
/**
* @protected
*/
updateLabelEl(group: graphic.Group, elOption: AxisPointerElementOptions, updateProps: (el: Element, props: PathProps) => void, axisPointerModel: AxisPointerModel): void;
/**
* @private
*/
_renderHandle(value: AxisValue): void;
private _moveHandleToValue;
private _onHandleDragMove;
/**
* Throttled method.
*/
_doDispatchAxisPointer(): void;
private _onHandleDragEnd;
/**
* @private
*/
clear(api: ExtensionAPI): void;
/**
* @protected
*/
doClear(): void;
buildLabel(xy: number[], wh: number[], xDimIndex: 0 | 1): {
x: number;
y: number;
width: number;
height: number;
};
}
export default BaseAxisPointer;