UNPKG

@zhouchangju/standard-chart

Version:

标准范式组件

146 lines (145 loc) 5.17 kB
import type SeriesModelType from 'echarts/types/src/model/Series'; import SeriesModel from 'echarts/lib/model/Series'; import type { default as TreeType, TreeNode } from 'echarts/types/src/data/Tree'; import type SeriesData from 'echarts/types/src/data/SeriesData'; import type { SeriesOption, BoxLayoutOptionMixin, RoamOptionMixin } from 'echarts/types/src/util/types'; import type { LayoutRect } from 'echarts/types/src/util/layout'; import type { GroupProps, PathProps, PathState, TextProps } from 'zrender'; import { NODE_TYPE, STATE } from './twoWayTreeLayout'; type State = { [key in typeof STATE[keyof typeof STATE]]: PathState; }; export type RootNodeRenderOption = { /** 项目(节点)的渲染配置 */ item?: GroupProps & { /** 子元素节点 */ children?: { [name: string]: PathProps & { type?: string; } & { states?: State; }; /** 主文本元素 */ text?: TextProps & { states?: State; }; /** 副文本元素 */ attachment?: TextProps & { states?: State; }; }; }; /** 线(边)的渲染配置 */ line?: { /** 子元素节点 */ children?: { [name: string]: PathProps & { type?: string; } & { states?: State; }; line?: PathProps & { states?: State; }; }; }; }; export type NormalNodeRenderOption = RootNodeRenderOption; export type GroupNodeRenderOption = { /** 项目(节点)的渲染配置 */ item?: GroupProps & { /** 子元素节点 */ children?: { [name: string]: PathProps & { type?: string; } & { states?: State; }; /** 标签文本元素 */ labelText?: TextProps & { states?: State; }; }; }; /** 线(边)的渲染配置 */ line?: { /** 子元素节点 */ children?: { [name: string]: PathProps & { type?: string; } & { states?: State; }; line?: PathProps & { states?: State; }; }; }; }; type RenderOption = { [NODE_TYPE.ROOT]?: RootNodeRenderOption; [NODE_TYPE.NORMAL]?: NormalNodeRenderOption; [NODE_TYPE.GROUP]?: GroupNodeRenderOption; }; export interface TwoWayTreeSeriesNodeItemOption { type: typeof NODE_TYPE[keyof typeof NODE_TYPE]; /** 节点的位置(左子树,还是右子树) */ position?: 'left' | 'right'; /** 节点的名称,用来标识每一个节点 */ name?: string; /** 节点的值,在 tooltip 中显示 */ value?: string; /** 是否折叠起来(只对 type = 'group' 的节点有效) */ collapsed?: boolean; /** v0.0.23+ 是否默认选中(只对 type = 'root' | 'normal' 的节点有效),且只在该节点的父节点默认展开时有效 */ selected?: boolean; /** 渲染配置 */ render: RootNodeRenderOption | NormalNodeRenderOption | GroupNodeRenderOption; /** 孩子节点 */ children?: TwoWayTreeSeriesNodeItemOption[]; } export interface TwoWayTreeSeriesOption extends SeriesOption, BoxLayoutOptionMixin, RoamOptionMixin { type: 'dvTwoWayTree'; data: TwoWayTreeSeriesNodeItemOption; /** 画布的背景色 */ backgroundColor?: string; /** 是否支持折叠和展开 */ expandAndCollapse?: boolean; /** 初始展开的树深度(根节点的深度可认为为 0) */ initialTreeDepth?: number; /** 选中时高亮祖先节点 */ selectedHighlightAncestor?: boolean; /** v0.2.2+ 点击 group 类型节点之后清除选中状态 */ clearSelectedAfterClickGroupNode?: boolean; /** v0.2.2+ 点击交互后聚焦的画布视区中心位置 */ viewCenterAfterClick?: [number, number] | ((arg: { node: TreeNode; data: TwoWayTreeSeriesNodeItemOption; isExpand?: boolean; isSelected?: boolean; }) => [number, number]); /** 节点的渲染配置 */ render?: RenderOption; } export type TwoWayTreeSeriesModelClazz = TwoWayTreeSeriesModel & SeriesModelType<TwoWayTreeSeriesOption>; /** * 设置为初始状态 */ export declare function setToInitialState(seriesModel: TwoWayTreeSeriesModelClazz): void; export default class TwoWayTreeSeriesModel extends SeriesModel<TwoWayTreeSeriesOption> { static readonly type = "series.dvTwoWayTree"; readonly type = "series.dvTwoWayTree"; static defaultOption: TwoWayTreeSeriesOption; /** * Prevent from auto set z, zlevel, z2 by the framework. */ preventAutoZ: boolean; layoutInfo: LayoutRect; leftTree: TreeType<TwoWayTreeSeriesModelClazz>; rightTree: TreeType<TwoWayTreeSeriesModelClazz>; /** * Init a tree data structure from data in option series */ getInitialData(this: TwoWayTreeSeriesModelClazz, option: TwoWayTreeSeriesOption): SeriesData; } export {};