LinesSeries.js 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. var _config = require("../../config");
  2. var __DEV__ = _config.__DEV__;
  3. var SeriesModel = require("../../model/Series");
  4. var List = require("../../data/List");
  5. var zrUtil = require("zrender/lib/core/util");
  6. var _format = require("../../util/format");
  7. var encodeHTML = _format.encodeHTML;
  8. var CoordinateSystem = require("../../CoordinateSystem");
  9. // Convert [ [{coord: []}, {coord: []}] ]
  10. // to [ { coords: [[]] } ]
  11. function preprocessOption(seriesOpt) {
  12. var data = seriesOpt.data;
  13. if (data && data[0] && data[0][0] && data[0][0].coord) {
  14. seriesOpt.data = zrUtil.map(data, function (itemOpt) {
  15. var coords = [itemOpt[0].coord, itemOpt[1].coord];
  16. var target = {
  17. coords: coords
  18. };
  19. if (itemOpt[0].name) {
  20. target.fromName = itemOpt[0].name;
  21. }
  22. if (itemOpt[1].name) {
  23. target.toName = itemOpt[1].name;
  24. }
  25. return zrUtil.mergeAll([target, itemOpt[0], itemOpt[1]]);
  26. });
  27. }
  28. }
  29. var LinesSeries = SeriesModel.extend({
  30. type: 'series.lines',
  31. dependencies: ['grid', 'polar'],
  32. visualColorAccessPath: 'lineStyle.normal.color',
  33. init: function (option) {
  34. // Not using preprocessor because mergeOption may not have series.type
  35. preprocessOption(option);
  36. LinesSeries.superApply(this, 'init', arguments);
  37. },
  38. mergeOption: function (option) {
  39. preprocessOption(option);
  40. LinesSeries.superApply(this, 'mergeOption', arguments);
  41. },
  42. getInitialData: function (option, ecModel) {
  43. var lineData = new List(['value'], this);
  44. lineData.hasItemOption = false;
  45. lineData.initData(option.data, [], function (dataItem, dimName, dataIndex, dimIndex) {
  46. // dataItem is simply coords
  47. if (dataItem instanceof Array) {
  48. return NaN;
  49. } else {
  50. lineData.hasItemOption = true;
  51. var value = dataItem.value;
  52. if (value != null) {
  53. return value instanceof Array ? value[dimIndex] : value;
  54. }
  55. }
  56. });
  57. return lineData;
  58. },
  59. formatTooltip: function (dataIndex) {
  60. var data = this.getData();
  61. var itemModel = data.getItemModel(dataIndex);
  62. var name = itemModel.get('name');
  63. if (name) {
  64. return name;
  65. }
  66. var fromName = itemModel.get('fromName');
  67. var toName = itemModel.get('toName');
  68. var html = [];
  69. fromName != null && html.push(fromName);
  70. toName != null && html.push(toName);
  71. return encodeHTML(html.join(' > '));
  72. },
  73. defaultOption: {
  74. coordinateSystem: 'geo',
  75. zlevel: 0,
  76. z: 2,
  77. legendHoverLink: true,
  78. hoverAnimation: true,
  79. // Cartesian coordinate system
  80. xAxisIndex: 0,
  81. yAxisIndex: 0,
  82. symbol: ['none', 'none'],
  83. symbolSize: [10, 10],
  84. // Geo coordinate system
  85. geoIndex: 0,
  86. effect: {
  87. show: false,
  88. period: 4,
  89. // Animation delay. support callback
  90. // delay: 0,
  91. // If move with constant speed px/sec
  92. // period will be ignored if this property is > 0,
  93. constantSpeed: 0,
  94. symbol: 'circle',
  95. symbolSize: 3,
  96. loop: true,
  97. // Length of trail, 0 - 1
  98. trailLength: 0.2 // Same with lineStyle.normal.color
  99. // color
  100. },
  101. large: false,
  102. // Available when large is true
  103. largeThreshold: 2000,
  104. // If lines are polyline
  105. // polyline not support curveness, label, animation
  106. polyline: false,
  107. label: {
  108. normal: {
  109. show: false,
  110. position: 'end' // distance: 5,
  111. // formatter: 标签文本格式器,同Tooltip.formatter,不支持异步回调
  112. }
  113. },
  114. lineStyle: {
  115. normal: {
  116. opacity: 0.5
  117. }
  118. }
  119. }
  120. });
  121. var _default = LinesSeries;
  122. module.exports = _default;