UNPKG

@antv/g2plot

Version:

An interactive and responsive charting library

120 lines (119 loc) 3.4 kB
import { Chart, View } from '@antv/g2'; import EE from '@antv/event-emitter'; import { Options, StateName, StateCondition, StateObject, Annotation } from '../types'; import { Adaptor } from './adaptor'; /** 单独 pick 出来的用于基类的类型定义 */ export declare type PickOptions = Pick<Options, 'width' | 'height' | 'padding' | 'appendPadding' | 'renderer' | 'pixelRatio' | 'autoFit' | 'syncViewPadding' | 'supportCSSTransform' | 'limitInPlot' | 'locale' | 'defaultInteractions'>; /** plot 图表容器的配置 */ export declare const PLOT_CONTAINER_OPTIONS: string[]; /** * 所有 plot 的基类 */ export declare abstract class Plot<O extends PickOptions> extends EE { /** * 获取默认的 options 配置项 * 每个组件都可以复写 */ static getDefaultOptions(): any; /** plot 类型名称 */ abstract readonly type: string; /** plot 的 schema 配置 */ options: O; /** plot 绘制的 dom */ readonly container: HTMLElement; /** G2 chart 实例 */ chart: Chart; /** resizer unbind */ private unbind; constructor(container: string | HTMLElement, options: O); /** * 创建 G2 实例 */ private createG2; /** * 计算默认的 chart 大小。逻辑简化:如果存在 width 或 height,则直接使用,否则使用容器大小 * @param width * @param height */ private getChartSize; /** * 绑定代理所有 G2 的事件 */ private bindEvents; /** * 获取默认的 options 配置项 * 每个组件都可以复写 */ protected getDefaultOptions(): any; /** * 每个组件有自己的 schema adaptor */ protected abstract getSchemaAdaptor(): Adaptor<O>; /** * 绘制 */ render(): void; /** * 更新: 更新配置且重新渲染 * @param options */ update(options: Partial<O>): void; /** * 更新配置 * @param options */ protected updateOption(options: Partial<O>): void; /** * 设置状态 * @param type 状态类型,支持 'active' | 'inactive' | 'selected' 三种 * @param conditions 条件,支持数组 * @param status 是否激活,默认 true */ setState(type: StateName, condition: StateCondition, status?: boolean): void; /** * 获取状态 */ getStates(): StateObject[]; /** * 更新数据 * @override * @param options */ changeData(data: any): void; /** * 修改画布大小 * @param width * @param height */ changeSize(width: number, height: number): void; /** * 增加图表标注。通过 id 标识,如果匹配到,就做更新 */ addAnnotations(annotations: Annotation[], view?: View): void; /** * 删除图表标注。通过 id 标识,如果匹配到,就做删除 */ removeAnnotations(annotations: Array<{ id: string; } & Partial<Annotation>>): void; /** * 销毁 */ destroy(): void; /** * 执行 adaptor 操作 */ protected execAdaptor(): void; /** * 当图表容器大小变化的时候,执行的函数 */ protected triggerResize(): void; /** * 绑定 dom 容器大小变化的事件 */ private bindSizeSensor; /** * 取消绑定 */ private unbindSizeSensor; }