a5a6016e0e3e72909057dd6a5276a89e477a99bfc56a6e4fbf859e5fd899cc5bfbdb115490bb3fcbf4d2f691071bdb32d58593fa6da5e5839562308d31499a 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. import SeriesData from '../../data/SeriesData.js';
  2. import { SeriesOption, SeriesOnCartesianOptionMixin, SeriesOnPolarOptionMixin, SeriesOnCalendarOptionMixin, SeriesOnGeoOptionMixin, SeriesOnSingleOptionMixin, OptionDataValue, RoamOptionMixin, SeriesLabelOption, ItemStyleOption, LineStyleOption, SymbolOptionMixin, BoxLayoutOptionMixin, Dictionary, SeriesLineLabelOption, StatesOptionMixin, GraphEdgeItemObject, OptionDataValueNumeric, CallbackDataParams, DefaultEmphasisFocus } from '../../util/types.js';
  3. import SeriesModel from '../../model/Series.js';
  4. import Graph from '../../data/Graph.js';
  5. import GlobalModel from '../../model/Global.js';
  6. import { VectorArray } from 'zrender/lib/core/vector.js';
  7. import { ForceLayoutInstance } from './forceLayout.js';
  8. import { LineDataVisual } from '../../visual/commonVisualTypes.js';
  9. declare type GraphDataValue = OptionDataValue | OptionDataValue[];
  10. interface GraphEdgeLineStyleOption extends LineStyleOption {
  11. curveness?: number;
  12. }
  13. export interface GraphNodeStateOption<TCbParams = never> {
  14. itemStyle?: ItemStyleOption<TCbParams>;
  15. label?: SeriesLabelOption;
  16. }
  17. interface ExtraEmphasisState {
  18. focus?: DefaultEmphasisFocus | 'adjacency';
  19. }
  20. interface GraphNodeStatesMixin {
  21. emphasis?: ExtraEmphasisState;
  22. }
  23. interface GraphEdgeStatesMixin {
  24. emphasis?: ExtraEmphasisState;
  25. }
  26. export interface GraphNodeItemOption extends SymbolOptionMixin, GraphNodeStateOption, GraphNodeStateOption, StatesOptionMixin<GraphNodeStateOption, GraphNodeStatesMixin> {
  27. id?: string;
  28. name?: string;
  29. value?: GraphDataValue;
  30. /**
  31. * Fixed x position
  32. */
  33. x?: number;
  34. /**
  35. * Fixed y position
  36. */
  37. y?: number;
  38. /**
  39. * If this node is fixed during force layout.
  40. */
  41. fixed?: boolean;
  42. /**
  43. * Index or name of category
  44. */
  45. category?: number | string;
  46. draggable?: boolean;
  47. cursor?: string;
  48. }
  49. export interface GraphEdgeStateOption {
  50. lineStyle?: GraphEdgeLineStyleOption;
  51. label?: SeriesLineLabelOption;
  52. }
  53. export interface GraphEdgeItemOption extends GraphEdgeStateOption, StatesOptionMixin<GraphEdgeStateOption, GraphEdgeStatesMixin>, GraphEdgeItemObject<OptionDataValueNumeric> {
  54. value?: number;
  55. /**
  56. * Symbol of both line ends
  57. */
  58. symbol?: string | string[];
  59. symbolSize?: number | number[];
  60. ignoreForceLayout?: boolean;
  61. }
  62. export interface GraphCategoryItemOption extends SymbolOptionMixin, GraphNodeStateOption, StatesOptionMixin<GraphNodeStateOption, GraphNodeStatesMixin> {
  63. name?: string;
  64. value?: OptionDataValue;
  65. }
  66. export interface GraphSeriesOption extends SeriesOption<GraphNodeStateOption<CallbackDataParams>, GraphNodeStatesMixin>, SeriesOnCartesianOptionMixin, SeriesOnPolarOptionMixin, SeriesOnCalendarOptionMixin, SeriesOnGeoOptionMixin, SeriesOnSingleOptionMixin, SymbolOptionMixin<CallbackDataParams>, RoamOptionMixin, BoxLayoutOptionMixin {
  67. type?: 'graph';
  68. coordinateSystem?: string;
  69. legendHoverLink?: boolean;
  70. layout?: 'none' | 'force' | 'circular';
  71. data?: (GraphNodeItemOption | GraphDataValue)[];
  72. nodes?: (GraphNodeItemOption | GraphDataValue)[];
  73. edges?: GraphEdgeItemOption[];
  74. links?: GraphEdgeItemOption[];
  75. categories?: GraphCategoryItemOption[];
  76. /**
  77. * @deprecated
  78. */
  79. focusNodeAdjacency?: boolean;
  80. /**
  81. * Symbol size scale ratio in roam
  82. */
  83. nodeScaleRatio?: 0.6;
  84. draggable?: boolean;
  85. edgeSymbol?: string | string[];
  86. edgeSymbolSize?: number | number[];
  87. edgeLabel?: SeriesLineLabelOption;
  88. label?: SeriesLabelOption;
  89. itemStyle?: ItemStyleOption<CallbackDataParams>;
  90. lineStyle?: GraphEdgeLineStyleOption;
  91. emphasis?: {
  92. focus?: Exclude<GraphNodeItemOption['emphasis'], undefined>['focus'];
  93. scale?: boolean | number;
  94. label?: SeriesLabelOption;
  95. edgeLabel?: SeriesLabelOption;
  96. itemStyle?: ItemStyleOption;
  97. lineStyle?: LineStyleOption;
  98. };
  99. blur?: {
  100. label?: SeriesLabelOption;
  101. edgeLabel?: SeriesLabelOption;
  102. itemStyle?: ItemStyleOption;
  103. lineStyle?: LineStyleOption;
  104. };
  105. select?: {
  106. label?: SeriesLabelOption;
  107. edgeLabel?: SeriesLabelOption;
  108. itemStyle?: ItemStyleOption;
  109. lineStyle?: LineStyleOption;
  110. };
  111. circular?: {
  112. rotateLabel?: boolean;
  113. };
  114. force?: {
  115. initLayout?: 'circular' | 'none';
  116. repulsion?: number | number[];
  117. gravity?: number;
  118. friction?: number;
  119. edgeLength?: number | number[];
  120. layoutAnimation?: boolean;
  121. };
  122. /**
  123. * auto curveness for multiple edge, invalid when `lineStyle.curveness` is set
  124. */
  125. autoCurveness?: boolean | number | number[];
  126. }
  127. declare class GraphSeriesModel extends SeriesModel<GraphSeriesOption> {
  128. static readonly type = "series.graph";
  129. readonly type = "series.graph";
  130. static readonly dependencies: string[];
  131. private _categoriesData;
  132. private _categoriesModels;
  133. /**
  134. * Preserved points during layouting
  135. */
  136. preservedPoints?: Dictionary<VectorArray>;
  137. forceLayout?: ForceLayoutInstance;
  138. hasSymbolVisual: boolean;
  139. init(option: GraphSeriesOption): void;
  140. mergeOption(option: GraphSeriesOption): void;
  141. mergeDefaultAndTheme(option: GraphSeriesOption): void;
  142. getInitialData(option: GraphSeriesOption, ecModel: GlobalModel): SeriesData;
  143. getGraph(): Graph;
  144. getEdgeData(): SeriesData<GraphSeriesModel, LineDataVisual>;
  145. getCategoriesData(): SeriesData;
  146. formatTooltip(dataIndex: number, multipleSeries: boolean, dataType: string): import("../../component/tooltip/tooltipMarkup").TooltipMarkupSection | import("../../component/tooltip/tooltipMarkup").TooltipMarkupNameValueBlock;
  147. _updateCategoriesData(): void;
  148. setZoom(zoom: number): void;
  149. setCenter(center: number[]): void;
  150. isAnimationEnabled(): boolean;
  151. static defaultOption: GraphSeriesOption;
  152. }
  153. export default GraphSeriesModel;