45f8dea8729e50e360872af09ba2014a507886dd2e4e8fc632ba353625b253c4d1da3827618a690bada3bab19c75cc330a5e2d2a417a995a7311f2a5b26b96 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. import { Dictionary } from 'zrender/lib/core/types.js';
  2. import SeriesData from './SeriesData.js';
  3. import Model from '../model/Model.js';
  4. import Element from 'zrender/lib/Element.js';
  5. import { DimensionLoose, ParsedValue } from '../util/types.js';
  6. declare class Graph {
  7. type: 'graph';
  8. readonly nodes: GraphNode[];
  9. readonly edges: GraphEdge[];
  10. data: SeriesData;
  11. edgeData: SeriesData;
  12. /**
  13. * Whether directed graph.
  14. */
  15. private _directed;
  16. private _nodesMap;
  17. /**
  18. * @type {Object.<string, module:echarts/data/Graph.Edge>}
  19. * @private
  20. */
  21. private _edgesMap;
  22. constructor(directed?: boolean);
  23. /**
  24. * If is directed graph
  25. */
  26. isDirected(): boolean;
  27. /**
  28. * Add a new node
  29. */
  30. addNode(id: string | number, dataIndex?: number): GraphNode;
  31. /**
  32. * Get node by data index
  33. */
  34. getNodeByIndex(dataIndex: number): GraphNode;
  35. /**
  36. * Get node by id
  37. */
  38. getNodeById(id: string): GraphNode;
  39. /**
  40. * Add a new edge
  41. */
  42. addEdge(n1: GraphNode | number | string, n2: GraphNode | number | string, dataIndex?: number): GraphEdge;
  43. /**
  44. * Get edge by data index
  45. */
  46. getEdgeByIndex(dataIndex: number): GraphEdge;
  47. /**
  48. * Get edge by two linked nodes
  49. */
  50. getEdge(n1: string | GraphNode, n2: string | GraphNode): GraphEdge;
  51. /**
  52. * Iterate all nodes
  53. */
  54. eachNode<Ctx>(cb: (this: Ctx, node: GraphNode, idx: number) => void, context?: Ctx): void;
  55. /**
  56. * Iterate all edges
  57. */
  58. eachEdge<Ctx>(cb: (this: Ctx, edge: GraphEdge, idx: number) => void, context?: Ctx): void;
  59. /**
  60. * Breadth first traverse
  61. * Return true to stop traversing
  62. */
  63. breadthFirstTraverse<Ctx>(cb: (this: Ctx, node: GraphNode, fromNode: GraphNode) => boolean | void, startNode: GraphNode | string, direction: 'none' | 'in' | 'out', context?: Ctx): void;
  64. update(): void;
  65. /**
  66. * @return {module:echarts/data/Graph}
  67. */
  68. clone(): Graph;
  69. }
  70. declare class GraphNode {
  71. id: string;
  72. inEdges: GraphEdge[];
  73. outEdges: GraphEdge[];
  74. edges: GraphEdge[];
  75. hostGraph: Graph;
  76. dataIndex: number;
  77. __visited: boolean;
  78. constructor(id?: string, dataIndex?: number);
  79. /**
  80. * @return {number}
  81. */
  82. degree(): number;
  83. /**
  84. * @return {number}
  85. */
  86. inDegree(): number;
  87. /**
  88. * @return {number}
  89. */
  90. outDegree(): number;
  91. getModel<T = unknown>(): Model<T>;
  92. getModel<T = unknown, S extends keyof T = keyof T>(path: S): Model<T[S]>;
  93. getAdjacentDataIndices(): {
  94. node: number[];
  95. edge: number[];
  96. };
  97. }
  98. declare class GraphEdge {
  99. /**
  100. * The first node. If directed graph, it represents the source node.
  101. */
  102. node1: GraphNode;
  103. /**
  104. * The second node. If directed graph, it represents the target node.
  105. */
  106. node2: GraphNode;
  107. dataIndex: number;
  108. hostGraph: Graph;
  109. constructor(n1: GraphNode, n2: GraphNode, dataIndex?: number);
  110. getModel<T = unknown>(): Model<T>;
  111. getModel<T = unknown, S extends keyof T = keyof T>(path: S): Model<T[S]>;
  112. getAdjacentDataIndices(): {
  113. node: number[];
  114. edge: number[];
  115. };
  116. }
  117. interface GraphDataProxyMixin {
  118. getValue(dimension?: DimensionLoose): ParsedValue;
  119. setVisual(key: string | Dictionary<any>, value?: any): void;
  120. getVisual(key: string): any;
  121. setLayout(layout: any, merge?: boolean): void;
  122. getLayout(): any;
  123. getGraphicEl(): Element;
  124. getRawIndex(): number;
  125. }
  126. interface GraphEdge extends GraphDataProxyMixin {
  127. }
  128. interface GraphNode extends GraphDataProxyMixin {
  129. }
  130. export default Graph;
  131. export { GraphNode, GraphEdge };