@antv/g2
Version:
the Grammar of Graphics in Javascript
65 lines (64 loc) • 1.76 kB
TypeScript
import { ComponentOption } from '../../interface';
import View from '../view';
/** Component controller class type define */
export declare type ControllerCtor<O = any> = new (view: View) => Controller<O>;
/**
* Component Controller 规范需要定义的基类
* 1. 规范的 option 输入
* 2. 统一的信息获取 API
* 3. 明确定义的组件事件(名称、数据)
*/
export declare abstract class Controller<O = unknown> {
/** 是否可见 */
visible: boolean;
protected view: View;
/** option 配置,不同组件有自己不同的配置结构 */
protected option: O;
/** 所有的 component */
protected components: ComponentOption[];
constructor(view: View);
abstract get name(): string;
/**
* init the component
*/
abstract init(): any;
/**
* render the components
*/
abstract render(): any;
/**
* update the components
*/
/**
* do layout
*/
abstract layout(): any;
/**
* 组件的更新逻辑
* - 根据字段为标识,为每一个组件生成一个 id,放到 option 中
* - 更新的时候按照 id 去做 diff,然后对同的做处理
* - 创建增加的
* - 更新已有的
* - 销毁删除的
*/
abstract update(): any;
/**
* clear
* @param includeOption 是否清空 option 配置项(used in annotation)
*/
clear(includeOption?: boolean): void;
/**
* destroy the component
*/
destroy(): void;
/**
* get all components
* @returns components array
*/
getComponents(): ComponentOption[];
/**
* change visibility of component
* @param visible
*/
changeVisible(visible: boolean): void;
}