MCPcopy
hub / github.com/apache/echarts / createGraphFromNodeEdge

Function createGraphFromNodeEdge

src/chart/helper/createGraphFromNodeEdge.ts:35–111  ·  view source on GitHub ↗
(
    nodes: OptionSourceDataOriginal<OptionDataValue, OptionDataItemObject<OptionDataValue>>,
    edges: OptionSourceDataOriginal<OptionDataValue, GraphEdgeItemObject<OptionDataValue>>,
    seriesModel: SeriesModel,
    directed: boolean,
    beforeLink: (nodeData: SeriesData, edgeData: SeriesData) => void
)

Source from the content-addressed store, hash-verified

33import { convertOptionIdName } from '../../util/model';
34
35export default function createGraphFromNodeEdge(
36 nodes: OptionSourceDataOriginal<OptionDataValue, OptionDataItemObject<OptionDataValue>>,
37 edges: OptionSourceDataOriginal<OptionDataValue, GraphEdgeItemObject<OptionDataValue>>,
38 seriesModel: SeriesModel,
39 directed: boolean,
40 beforeLink: (nodeData: SeriesData, edgeData: SeriesData) => void
41): Graph {
42 // ??? TODO
43 // support dataset?
44 const graph = new Graph(directed);
45 for (let i = 0; i < nodes.length; i++) {
46 graph.addNode(zrUtil.retrieve(
47 // Id, name, dataIndex
48 nodes[i].id, nodes[i].name, i
49 ), i);
50 }
51
52 const linkNameList = [];
53 const validEdges = [];
54 let linkCount = 0;
55 for (let i = 0; i < edges.length; i++) {
56 const link = edges[i];
57 const source = link.source;
58 const target = link.target;
59 // addEdge may fail when source or target not exists
60 if (graph.addEdge(source, target, linkCount)) {
61 validEdges.push(link);
62 linkNameList.push(zrUtil.retrieve(
63 convertOptionIdName(link.id, null),
64 source + ' > ' + target
65 ));
66 linkCount++;
67 }
68 }
69
70 const coordSys = seriesModel.get('coordinateSystem');
71 let nodeData;
72 if (coordSys === 'cartesian2d' || coordSys === 'polar' || coordSys === 'matrix') {
73 nodeData = createSeriesData(nodes, seriesModel);
74 }
75 else {
76 const coordSysCtor = CoordinateSystem.get(coordSys);
77 const coordDimensions = coordSysCtor
78 ? (coordSysCtor.dimensions || []) : [];
79 // FIXME: Some geo do not need `value` dimenson, whereas `calendar` needs
80 // `value` dimension, but graph need `value` dimension. It's better to
81 // uniform this behavior.
82 if (zrUtil.indexOf(coordDimensions, 'value') < 0) {
83 coordDimensions.concat(['value']);
84 }
85
86 const { dimensions } = prepareSeriesDataSchema(nodes, {
87 coordDimensions: coordDimensions,
88 encodeDefine: seriesModel.getEncode()
89 });
90 nodeData = new SeriesData(dimensions, seriesModel);
91 nodeData.initData(nodes);
92 }

Callers 3

getInitialDataMethod · 0.85
getInitialDataMethod · 0.85
getInitialDataMethod · 0.85

Calls 11

addNodeMethod · 0.95
addEdgeMethod · 0.95
initDataMethod · 0.95
updateMethod · 0.95
convertOptionIdNameFunction · 0.90
createSeriesDataFunction · 0.85
prepareSeriesDataSchemaFunction · 0.85
linkSeriesDataFunction · 0.85
getEncodeMethod · 0.80
getMethod · 0.45
initDataMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…