UNPKG

echarts

Version:

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

127 lines (126 loc) 4.17 kB
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;