import { Dictionary } from 'zrender/lib/core/types.js';
|
import SeriesData from './SeriesData.js';
|
import Model from '../model/Model.js';
|
import Element from 'zrender/lib/Element.js';
|
import { DimensionLoose, ParsedValue } from '../util/types.js';
|
declare class Graph {
|
type: 'graph';
|
readonly nodes: GraphNode[];
|
readonly edges: GraphEdge[];
|
data: SeriesData;
|
edgeData: SeriesData;
|
/**
|
* Whether directed graph.
|
*/
|
private _directed;
|
private _nodesMap;
|
/**
|
* @type {Object.<string, module:echarts/data/Graph.Edge>}
|
* @private
|
*/
|
private _edgesMap;
|
constructor(directed?: boolean);
|
/**
|
* If is directed graph
|
*/
|
isDirected(): boolean;
|
/**
|
* Add a new node
|
*/
|
addNode(id: string | number, dataIndex?: number): GraphNode;
|
/**
|
* Get node by data index
|
*/
|
getNodeByIndex(dataIndex: number): GraphNode;
|
/**
|
* Get node by id
|
*/
|
getNodeById(id: string): GraphNode;
|
/**
|
* Add a new edge
|
*/
|
addEdge(n1: GraphNode | number | string, n2: GraphNode | number | string, dataIndex?: number): GraphEdge;
|
/**
|
* Get edge by data index
|
*/
|
getEdgeByIndex(dataIndex: number): GraphEdge;
|
/**
|
* Get edge by two linked nodes
|
*/
|
getEdge(n1: string | GraphNode, n2: string | GraphNode): GraphEdge;
|
/**
|
* Iterate all nodes
|
*/
|
eachNode<Ctx>(cb: (this: Ctx, node: GraphNode, idx: number) => void, context?: Ctx): void;
|
/**
|
* Iterate all edges
|
*/
|
eachEdge<Ctx>(cb: (this: Ctx, edge: GraphEdge, idx: number) => void, context?: Ctx): void;
|
/**
|
* Breadth first traverse
|
* Return true to stop traversing
|
*/
|
breadthFirstTraverse<Ctx>(cb: (this: Ctx, node: GraphNode, fromNode: GraphNode) => boolean | void, startNode: GraphNode | string, direction: 'none' | 'in' | 'out', context?: Ctx): void;
|
update(): void;
|
/**
|
* @return {module:echarts/data/Graph}
|
*/
|
clone(): Graph;
|
}
|
declare class GraphNode {
|
id: string;
|
inEdges: GraphEdge[];
|
outEdges: GraphEdge[];
|
edges: GraphEdge[];
|
hostGraph: Graph;
|
dataIndex: number;
|
__visited: boolean;
|
constructor(id?: string, dataIndex?: number);
|
/**
|
* @return {number}
|
*/
|
degree(): number;
|
/**
|
* @return {number}
|
*/
|
inDegree(): number;
|
/**
|
* @return {number}
|
*/
|
outDegree(): number;
|
getModel<T = unknown>(): Model<T>;
|
getModel<T = unknown, S extends keyof T = keyof T>(path: S): Model<T[S]>;
|
getAdjacentDataIndices(): {
|
node: number[];
|
edge: number[];
|
};
|
}
|
declare class GraphEdge {
|
/**
|
* The first node. If directed graph, it represents the source node.
|
*/
|
node1: GraphNode;
|
/**
|
* The second node. If directed graph, it represents the target node.
|
*/
|
node2: GraphNode;
|
dataIndex: number;
|
hostGraph: Graph;
|
constructor(n1: GraphNode, n2: GraphNode, dataIndex?: number);
|
getModel<T = unknown>(): Model<T>;
|
getModel<T = unknown, S extends keyof T = keyof T>(path: S): Model<T[S]>;
|
getAdjacentDataIndices(): {
|
node: number[];
|
edge: number[];
|
};
|
}
|
interface GraphDataProxyMixin {
|
getValue(dimension?: DimensionLoose): ParsedValue;
|
setVisual(key: string | Dictionary<any>, value?: any): void;
|
getVisual(key: string): any;
|
setLayout(layout: any, merge?: boolean): void;
|
getLayout(): any;
|
getGraphicEl(): Element;
|
getRawIndex(): number;
|
}
|
interface GraphEdge extends GraphDataProxyMixin {
|
}
|
interface GraphNode extends GraphDataProxyMixin {
|
}
|
export default Graph;
|
export { GraphNode, GraphEdge };
|