edgeVisual.js 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. function normalize(a) {
  2. if (!(a instanceof Array)) {
  3. a = [a, a];
  4. }
  5. return a;
  6. }
  7. function _default(ecModel) {
  8. ecModel.eachSeriesByType('graph', function (seriesModel) {
  9. var graph = seriesModel.getGraph();
  10. var edgeData = seriesModel.getEdgeData();
  11. var symbolType = normalize(seriesModel.get('edgeSymbol'));
  12. var symbolSize = normalize(seriesModel.get('edgeSymbolSize'));
  13. var colorQuery = 'lineStyle.normal.color'.split('.');
  14. var opacityQuery = 'lineStyle.normal.opacity'.split('.');
  15. edgeData.setVisual('fromSymbol', symbolType && symbolType[0]);
  16. edgeData.setVisual('toSymbol', symbolType && symbolType[1]);
  17. edgeData.setVisual('fromSymbolSize', symbolSize && symbolSize[0]);
  18. edgeData.setVisual('toSymbolSize', symbolSize && symbolSize[1]);
  19. edgeData.setVisual('color', seriesModel.get(colorQuery));
  20. edgeData.setVisual('opacity', seriesModel.get(opacityQuery));
  21. edgeData.each(function (idx) {
  22. var itemModel = edgeData.getItemModel(idx);
  23. var edge = graph.getEdgeByIndex(idx);
  24. var symbolType = normalize(itemModel.getShallow('symbol', true));
  25. var symbolSize = normalize(itemModel.getShallow('symbolSize', true)); // Edge visual must after node visual
  26. var color = itemModel.get(colorQuery);
  27. var opacity = itemModel.get(opacityQuery);
  28. switch (color) {
  29. case 'source':
  30. color = edge.node1.getVisual('color');
  31. break;
  32. case 'target':
  33. color = edge.node2.getVisual('color');
  34. break;
  35. }
  36. symbolType[0] && edge.setVisual('fromSymbol', symbolType[0]);
  37. symbolType[1] && edge.setVisual('toSymbol', symbolType[1]);
  38. symbolSize[0] && edge.setVisual('fromSymbolSize', symbolSize[0]);
  39. symbolSize[1] && edge.setVisual('toSymbolSize', symbolSize[1]);
  40. edge.setVisual('color', color);
  41. edge.setVisual('opacity', opacity);
  42. });
  43. });
  44. }
  45. module.exports = _default;