UNPKG

@zhouchangju/standard-chart

Version:

标准范式组件

126 lines (125 loc) 4.69 kB
import Model from 'echarts/lib/model/Model'; import SeriesModel from 'echarts/lib/model/Series'; import type SeriesData from 'echarts/lib/data/SeriesData'; import Tree, { TreeNode, default as TreeType } from 'echarts/lib/data/Tree'; import { TreeSeriesLeavesOption } from 'echarts/lib/chart/tree/TreeSeries'; import type { SeriesOption, BoxLayoutOptionMixin, RoamOptionMixin, ZRColor } from 'echarts/lib/util/types'; import { BoundingRect } from 'echarts/lib/util/graphic'; import { graphic } from 'echarts'; import { Path, PathProps, TextProps, Line, LineProps, PolygonProps } from 'zrender'; import { ECSymbol } from 'echarts/lib/util/symbol'; export type RelationTreeNode = TreeNode & { index: number; open?: boolean; nodeElGroup: graphic.Group; lineElGroup?: graphic.Group; }; export interface GroupNodeArray { [key: number | string]: RelationTreeNode[]; } type RenderOption = { text?: { style?: { text: string; }; }; attachment?: { style?: { text?: string; }; }[]; logo?: string; }; export interface RelationshipDiagramSeriesNodeItemOption { type?: string; /** 优先级 */ priority?: number; /** 节点名字 */ name?: string; /** 水印 */ watermark?: string; /** 节点背景颜色 */ backgroundColor?: string[]; /** 渲染配置 */ render?: RenderOption | RenderOption[]; /** 孩子节点 */ children?: RelationshipDiagramSeriesNodeItemOption[]; /** 是否折叠节点 */ collapsed?: boolean; /** 父节点id */ parentId?: string | number; /** 默认的主树 */ __treeIndex?: number; } export interface RelationshipDiagramSeriesOption extends SeriesOption, BoxLayoutOptionMixin, RoamOptionMixin { type?: 'dvRelationshipDiagram'; data?: RelationshipDiagramSeriesNodeItemOption[]; /** 初始展开的树深度(根节点的深度可认为为 0) */ initialTreeDepth?: number; /** 是否折叠节点 */ collapsed?: boolean; /** 背景颜色 */ dvBackground?: { show?: boolean; color?: string[]; padding?: number[]; }; /** 节点渲染方法 */ dvNodeRender?: (originNodeData?: RelationshipDiagramSeriesNodeItemOption, createEl?: (elOption: { type: string; }) => Path<PathProps>, group?: graphic.Group, createSymbol?: (symbolType: string, x: number, y: number, w: number, h: number, color?: ZRColor, keepAspect?: boolean) => ECSymbol, node?: RelationTreeNode) => graphic.Group; dvLineRender?: (originNodeData?: RelationshipDiagramSeriesNodeItemOption, createEl?: (elOption: { type: string; }) => Path<PathProps>, group?: graphic.Group, node?: RelationTreeNode) => graphic.Group; /** 节点的间距 */ dvNodeGap?: (originNodeData?: RelationshipDiagramSeriesNodeItemOption, node?: RelationTreeNode, spaceArray?: number[], widthArray?: number[]) => void; /** 水印 */ dvWatermark?: { show?: boolean; watermark?: TextProps[]; }; /** 同级分支线 */ dvLevelLine?: { show?: boolean; padding?: (originNodeData?: RelationshipDiagramSeriesNodeItemOption, node?: RelationTreeNode) => number[]; style?: Line; }; /** 每一级节点竖直方向的间距 */ dvVerticalSpacingBetweenNode?: number[]; /** 首屏自适应 */ dvAdapt?: boolean; /** 导向线 */ dvToNextTreeLine?: { show?: boolean; lineStyle?: LineProps & { lineWidth: number; stroke: string; }; arrowStyle: PolygonProps & { lineWidth: number; fill: string; scale: number; }; }; leaves?: TreeSeriesLeavesOption; } export type RelationshipDiagramSeriesModelClazz = RelationshipDiagramSeriesModel; export default class RelationshipDiagramSeriesModel extends SeriesModel<RelationshipDiagramSeriesOption> { static readonly type = "series.dvRelationshipDiagram"; readonly type = "series.dvRelationshipDiagram"; static defaultOption: RelationshipDiagramSeriesOption; /** * Prevent from auto set z, zlevel, z2 by the framework. */ preventAutoZ: boolean; maxDepth: number; treesLength: number; groupNodeArray: GroupNodeArray; treeMaxX: number[]; treeMaxY: number[]; layoutInfo: BoundingRect; trees: TreeType<RelationshipDiagramSeriesModelClazz>[]; getInitialData(this: RelationshipDiagramSeriesModelClazz, option: RelationshipDiagramSeriesOption): SeriesData; createRelationTree(root: RelationshipDiagramSeriesNodeItemOption, leavesModel: Model<TreeSeriesLeavesOption>): Tree<this, any>; } export {};