(nodes, edges, seriesModel, directed, beforeLink)
| 58670 | mixin(GraphEdge, createGraphDataProxyMixin('hostGraph', 'edgeData')); |
| 58671 | |
| 58672 | function createGraphFromNodeEdge(nodes, edges, seriesModel, directed, beforeLink) { |
| 58673 | // ??? TODO |
| 58674 | // support dataset? |
| 58675 | var graph = new Graph(directed); |
| 58676 | |
| 58677 | for (var i = 0; i < nodes.length; i++) { |
| 58678 | graph.addNode(retrieve( // Id, name, dataIndex |
| 58679 | nodes[i].id, nodes[i].name, i), i); |
| 58680 | } |
| 58681 | |
| 58682 | var linkNameList = []; |
| 58683 | var validEdges = []; |
| 58684 | var linkCount = 0; |
| 58685 | |
| 58686 | for (var i = 0; i < edges.length; i++) { |
| 58687 | var link = edges[i]; |
| 58688 | var source = link.source; |
| 58689 | var target = link.target; // addEdge may fail when source or target not exists |
| 58690 | |
| 58691 | if (graph.addEdge(source, target, linkCount)) { |
| 58692 | validEdges.push(link); |
| 58693 | linkNameList.push(retrieve(convertOptionIdName(link.id, null), source + ' > ' + target)); |
| 58694 | linkCount++; |
| 58695 | } |
| 58696 | } |
| 58697 | |
| 58698 | var coordSys = seriesModel.get('coordinateSystem'); |
| 58699 | var nodeData; |
| 58700 | |
| 58701 | if (coordSys === 'cartesian2d' || coordSys === 'polar') { |
| 58702 | nodeData = createListFromArray(nodes, seriesModel); |
| 58703 | } else { |
| 58704 | var coordSysCtor = CoordinateSystemManager.get(coordSys); |
| 58705 | var coordDimensions = coordSysCtor ? coordSysCtor.dimensions || [] : []; // FIXME: Some geo do not need `value` dimenson, whereas `calendar` needs |
| 58706 | // `value` dimension, but graph need `value` dimension. It's better to |
| 58707 | // uniform this behavior. |
| 58708 | |
| 58709 | if (indexOf(coordDimensions, 'value') < 0) { |
| 58710 | coordDimensions.concat(['value']); |
| 58711 | } |
| 58712 | |
| 58713 | var dimensionNames = createDimensions(nodes, { |
| 58714 | coordDimensions: coordDimensions |
| 58715 | }); |
| 58716 | nodeData = new List(dimensionNames, seriesModel); |
| 58717 | nodeData.initData(nodes); |
| 58718 | } |
| 58719 | |
| 58720 | var edgeData = new List(['value'], seriesModel); |
| 58721 | edgeData.initData(validEdges, linkNameList); |
| 58722 | beforeLink && beforeLink(nodeData, edgeData); |
| 58723 | linkList({ |
| 58724 | mainData: nodeData, |
| 58725 | struct: graph, |
| 58726 | structAttr: 'graph', |
| 58727 | datas: { |
| 58728 | node: nodeData, |
| 58729 | edge: edgeData |
no test coverage detected
searching dependent graphs…