echarts 3.6.1 → 3.7.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (321) hide show
  1. package/README.md +1 -0
  2. package/dist/echarts-en.js +77756 -0
  3. package/dist/echarts-en.min.js +38 -0
  4. package/dist/echarts.common-en.js +50169 -0
  5. package/dist/echarts.common-en.min.js +30 -0
  6. package/dist/echarts.common.js +5799 -3093
  7. package/dist/echarts.common.min.js +14 -13
  8. package/dist/echarts.js +7628 -4679
  9. package/dist/echarts.min.js +22 -22
  10. package/dist/echarts.simple-en.js +34988 -0
  11. package/dist/echarts.simple-en.min.js +27 -0
  12. package/dist/echarts.simple.js +4472 -2493
  13. package/dist/echarts.simple.min.js +11 -9
  14. package/dist/extension/bmap.js +50 -11
  15. package/dist/extension/bmap.min.js +1 -1
  16. package/dist/extension/dataTool.js +10 -10
  17. package/extension/bmap/BMapCoordSys.js +40 -1
  18. package/index.blank.js +4 -0
  19. package/index.common.js +1 -1
  20. package/index.js +1 -1
  21. package/lib/action/createDataSelectAction.js +6 -2
  22. package/lib/chart/bar/BarView.js +6 -3
  23. package/lib/chart/bar/BaseBarSeries.js +4 -3
  24. package/lib/chart/bar/PictorialBarSeries.js +1 -1
  25. package/lib/chart/bar/PictorialBarView.js +29 -7
  26. package/lib/chart/bar/helper.js +14 -31
  27. package/lib/chart/candlestick/candlestickLayout.js +49 -6
  28. package/lib/chart/chord/chordCircularLayout.js +2 -2
  29. package/lib/chart/custom.js +135 -21
  30. package/lib/chart/funnel/FunnelSeries.js +0 -1
  31. package/lib/chart/funnel/FunnelView.js +15 -22
  32. package/lib/chart/funnel/funnelLayout.js +1 -1
  33. package/lib/chart/gauge/GaugeSeries.js +7 -12
  34. package/lib/chart/gauge/GaugeView.js +32 -53
  35. package/lib/chart/graph/GraphSeries.js +2 -1
  36. package/lib/chart/graph/GraphView.js +39 -45
  37. package/lib/chart/graph/forceHelper.js +5 -0
  38. package/lib/chart/graph/forceLayout.js +1 -1
  39. package/lib/chart/heatmap/HeatmapLayer.js +7 -0
  40. package/lib/chart/heatmap/HeatmapView.js +10 -9
  41. package/lib/chart/helper/EffectSymbol.js +3 -3
  42. package/lib/chart/helper/LargeSymbolDraw.js +6 -1
  43. package/lib/chart/helper/Line.js +40 -22
  44. package/lib/chart/helper/Symbol.js +20 -7
  45. package/lib/chart/helper/SymbolDraw.js +2 -1
  46. package/lib/chart/helper/labelHelper.js +0 -17
  47. package/lib/chart/helper/whiskerBoxCommon.js +11 -3
  48. package/lib/chart/line/LineSeries.js +1 -0
  49. package/lib/chart/line/LineView.js +14 -2
  50. package/lib/chart/line/poly.js +5 -0
  51. package/lib/chart/lines/LinesView.js +22 -7
  52. package/lib/chart/map/MapSeries.js +3 -7
  53. package/lib/chart/map/MapView.js +29 -18
  54. package/lib/chart/pie/PieSeries.js +20 -6
  55. package/lib/chart/pie/PieView.js +20 -23
  56. package/lib/chart/pie/labelLayout.js +3 -3
  57. package/lib/chart/radar/RadarView.js +16 -20
  58. package/lib/chart/sankey/SankeySeries.js +2 -4
  59. package/lib/chart/sankey/SankeyView.js +13 -29
  60. package/lib/chart/sankey/sankeyLayout.js +1 -1
  61. package/lib/chart/scatter/ScatterSeries.js +2 -1
  62. package/lib/chart/themeRiver/ThemeRiverSeries.js +2 -4
  63. package/lib/chart/themeRiver/ThemeRiverView.js +2 -5
  64. package/lib/chart/themeRiver/themeRiverLayout.js +1 -1
  65. package/lib/chart/treemap/Breadcrumb.js +1 -1
  66. package/lib/chart/treemap/TreemapSeries.js +28 -8
  67. package/lib/chart/treemap/TreemapView.js +88 -77
  68. package/lib/chart/treemap/treemapLayout.js +29 -13
  69. package/lib/component/axis/AngleAxisView.js +13 -19
  70. package/lib/component/axis/AxisBuilder.js +260 -186
  71. package/lib/component/axis/CartesianAxisView.js +15 -3
  72. package/lib/component/axis/ParallelAxisView.js +1 -1
  73. package/lib/component/axis/RadiusAxisView.js +1 -1
  74. package/lib/component/axis/SingleAxisView.js +8 -2
  75. package/lib/component/axis/cartesianAxisHelper.js +11 -15
  76. package/lib/component/axisPointer/AxisPointerModel.js +1 -3
  77. package/lib/component/axisPointer/BaseAxisPointer.js +15 -38
  78. package/lib/component/axisPointer/axisTrigger.js +36 -20
  79. package/lib/component/axisPointer/modelHelper.js +3 -4
  80. package/lib/component/axisPointer/viewHelper.js +4 -6
  81. package/lib/component/axisPointer.js +1 -14
  82. package/lib/component/calendar/CalendarView.js +22 -39
  83. package/lib/component/dataZoom/AxisProxy.js +3 -2
  84. package/lib/component/dataZoom/DataZoomModel.js +16 -4
  85. package/lib/component/dataZoom/InsideZoomView.js +5 -3
  86. package/lib/component/dataZoom/SliderZoomView.js +21 -32
  87. package/lib/component/dataZoom/roams.js +33 -9
  88. package/lib/component/dataZoom/typeDefaulter.js +1 -1
  89. package/lib/component/graphic.js +17 -5
  90. package/lib/component/helper/BrushTargetManager.js +1 -1
  91. package/lib/component/helper/MapDraw.js +26 -22
  92. package/lib/component/helper/RoamController.js +12 -11
  93. package/lib/component/helper/listComponent.js +27 -24
  94. package/lib/component/helper/selectableMixin.js +40 -15
  95. package/lib/component/legend/LegendModel.js +11 -3
  96. package/lib/component/legend/LegendView.js +151 -70
  97. package/lib/component/legend/ScrollableLegendModel.js +75 -0
  98. package/lib/component/legend/ScrollableLegendView.js +367 -0
  99. package/lib/component/legend/legendAction.js +1 -0
  100. package/lib/component/legend/scrollableLegendAction.js +24 -0
  101. package/lib/component/legend.js +8 -3
  102. package/lib/component/legendScroll.js +11 -0
  103. package/lib/component/marker/MarkAreaView.js +12 -26
  104. package/lib/component/marker/MarkLineView.js +5 -5
  105. package/lib/component/marker/MarkPointView.js +4 -4
  106. package/lib/component/marker/MarkerModel.js +1 -4
  107. package/lib/component/marker/markerHelper.js +1 -0
  108. package/lib/component/radar/RadarView.js +6 -3
  109. package/lib/component/timeline/SliderTimelineModel.js +4 -6
  110. package/lib/component/timeline/SliderTimelineView.js +14 -16
  111. package/lib/component/timeline/TimelineAxis.js +1 -1
  112. package/lib/component/timeline/TimelineModel.js +1 -3
  113. package/lib/component/title.js +9 -10
  114. package/lib/component/toolbox/ToolboxModel.js +2 -0
  115. package/lib/component/toolbox/ToolboxView.js +15 -27
  116. package/lib/component/toolbox/feature/Brush.js +3 -8
  117. package/lib/component/toolbox/feature/DataView.js +5 -5
  118. package/lib/component/toolbox/feature/DataZoom.js +3 -4
  119. package/lib/component/toolbox/feature/MagicType.js +3 -6
  120. package/lib/component/toolbox/feature/Restore.js +2 -1
  121. package/lib/component/toolbox/feature/SaveAsImage.js +23 -9
  122. package/lib/component/tooltip/TooltipContent.js +4 -4
  123. package/lib/component/tooltip/TooltipView.js +29 -6
  124. package/lib/component/visualMap/ContinuousModel.js +2 -2
  125. package/lib/component/visualMap/ContinuousView.js +12 -8
  126. package/lib/component/visualMap/PiecewiseModel.js +1 -2
  127. package/lib/component/visualMap/PiecewiseView.js +2 -2
  128. package/lib/component/visualMap/VisualMapModel.js +18 -12
  129. package/lib/coord/Axis.js +1 -1
  130. package/lib/coord/axisDefault.js +3 -3
  131. package/lib/coord/axisHelper.js +18 -1
  132. package/lib/coord/axisModelCommonMixin.js +12 -2
  133. package/lib/coord/calendar/Calendar.js +65 -21
  134. package/lib/coord/calendar/CalendarModel.js +6 -12
  135. package/lib/coord/cartesian/Cartesian2D.js +0 -14
  136. package/lib/coord/cartesian/Grid.js +47 -28
  137. package/lib/coord/geo/Geo.js +2 -18
  138. package/lib/coord/geo/GeoModel.js +6 -13
  139. package/lib/coord/geo/fix/diaoyuIsland.js +30 -0
  140. package/lib/coord/geo/geoCreator.js +6 -1
  141. package/lib/coord/polar/Polar.js +0 -13
  142. package/lib/coord/radar/Radar.js +1 -1
  143. package/lib/coord/radar/RadarModel.js +6 -2
  144. package/lib/data/DataDiffer.js +14 -7
  145. package/lib/data/Graph.js +3 -0
  146. package/lib/data/List.js +1 -1
  147. package/lib/data/Tree.js +2 -2
  148. package/lib/data/helper/completeDimensions.js +2 -11
  149. package/lib/echarts.js +33 -10
  150. package/lib/lang/cn.js +4 -0
  151. package/lib/lang/default.js +42 -0
  152. package/lib/lang/en.js +42 -0
  153. package/lib/lang.js +42 -0
  154. package/lib/langEN.js +42 -0
  155. package/lib/layout/barGrid.js +11 -3
  156. package/lib/layout/barPolar.js +9 -2
  157. package/lib/model/Model.js +2 -1
  158. package/lib/model/Series.js +14 -6
  159. package/lib/model/mixin/textStyle.js +11 -9
  160. package/lib/preprocessor/backwardCompat.js +5 -4
  161. package/lib/preprocessor/helper/compatStyle.js +157 -45
  162. package/lib/scale/Interval.js +10 -4
  163. package/lib/scale/Time.js +14 -6
  164. package/lib/scale/helper.js +15 -2
  165. package/lib/util/format.js +4 -24
  166. package/lib/util/graphic.js +412 -21
  167. package/lib/util/layout.js +28 -16
  168. package/lib/util/model.js +26 -11
  169. package/lib/util/number.js +106 -21
  170. package/lib/visual/VisualMapping.js +4 -4
  171. package/package.json +3 -3
  172. package/rollup.config.js +49 -0
  173. package/src/action/createDataSelectAction.js +6 -2
  174. package/src/chart/bar/BarView.js +6 -3
  175. package/src/chart/bar/BaseBarSeries.js +4 -3
  176. package/src/chart/bar/PictorialBarSeries.js +1 -1
  177. package/src/chart/bar/PictorialBarView.js +29 -7
  178. package/src/chart/bar/helper.js +13 -30
  179. package/src/chart/candlestick/candlestickLayout.js +49 -6
  180. package/src/chart/chord/chordCircularLayout.js +2 -2
  181. package/src/chart/custom.js +135 -21
  182. package/src/chart/funnel/FunnelSeries.js +0 -1
  183. package/src/chart/funnel/FunnelView.js +15 -22
  184. package/src/chart/funnel/funnelLayout.js +1 -1
  185. package/src/chart/gauge/GaugeSeries.js +7 -12
  186. package/src/chart/gauge/GaugeView.js +32 -53
  187. package/src/chart/graph/GraphSeries.js +2 -1
  188. package/src/chart/graph/GraphView.js +39 -45
  189. package/src/chart/graph/forceHelper.js +5 -0
  190. package/src/chart/graph/forceLayout.js +1 -1
  191. package/src/chart/heatmap/HeatmapLayer.js +7 -0
  192. package/src/chart/heatmap/HeatmapView.js +10 -9
  193. package/src/chart/helper/EffectSymbol.js +3 -3
  194. package/src/chart/helper/LargeSymbolDraw.js +6 -1
  195. package/src/chart/helper/Line.js +40 -22
  196. package/src/chart/helper/Symbol.js +20 -7
  197. package/src/chart/helper/SymbolDraw.js +2 -1
  198. package/src/chart/helper/labelHelper.js +0 -17
  199. package/src/chart/helper/whiskerBoxCommon.js +11 -4
  200. package/src/chart/line/LineSeries.js +1 -0
  201. package/src/chart/line/LineView.js +14 -2
  202. package/src/chart/line/poly.js +5 -0
  203. package/src/chart/lines/LinesView.js +22 -7
  204. package/src/chart/map/MapSeries.js +3 -7
  205. package/src/chart/map/MapView.js +29 -18
  206. package/src/chart/pie/PieSeries.js +20 -6
  207. package/src/chart/pie/PieView.js +20 -23
  208. package/src/chart/pie/labelLayout.js +3 -3
  209. package/src/chart/radar/RadarView.js +16 -20
  210. package/src/chart/sankey/SankeySeries.js +2 -4
  211. package/src/chart/sankey/SankeyView.js +13 -29
  212. package/src/chart/sankey/sankeyLayout.js +1 -1
  213. package/src/chart/scatter/ScatterSeries.js +2 -1
  214. package/src/chart/themeRiver/ThemeRiverSeries.js +2 -4
  215. package/src/chart/themeRiver/ThemeRiverView.js +2 -5
  216. package/src/chart/themeRiver/themeRiverLayout.js +1 -1
  217. package/src/chart/treemap/Breadcrumb.js +1 -1
  218. package/src/chart/treemap/TreemapSeries.js +28 -8
  219. package/src/chart/treemap/TreemapView.js +88 -77
  220. package/src/chart/treemap/treemapLayout.js +29 -13
  221. package/src/component/axis/AngleAxisView.js +13 -19
  222. package/src/component/axis/AxisBuilder.js +260 -186
  223. package/src/component/axis/CartesianAxisView.js +15 -3
  224. package/src/component/axis/ParallelAxisView.js +1 -1
  225. package/src/component/axis/RadiusAxisView.js +1 -1
  226. package/src/component/axis/SingleAxisView.js +8 -2
  227. package/src/component/axis/cartesianAxisHelper.js +11 -15
  228. package/src/component/axisPointer/AxisPointerModel.js +1 -3
  229. package/src/component/axisPointer/BaseAxisPointer.js +15 -38
  230. package/src/component/axisPointer/axisTrigger.js +36 -20
  231. package/src/component/axisPointer/modelHelper.js +3 -4
  232. package/src/component/axisPointer/viewHelper.js +4 -6
  233. package/src/component/axisPointer.js +1 -14
  234. package/src/component/calendar/CalendarView.js +22 -39
  235. package/src/component/dataZoom/AxisProxy.js +3 -2
  236. package/src/component/dataZoom/DataZoomModel.js +16 -4
  237. package/src/component/dataZoom/InsideZoomView.js +5 -3
  238. package/src/component/dataZoom/SliderZoomView.js +21 -32
  239. package/src/component/dataZoom/roams.js +33 -9
  240. package/src/component/dataZoom/typeDefaulter.js +1 -1
  241. package/src/component/graphic.js +17 -5
  242. package/src/component/helper/BrushTargetManager.js +1 -1
  243. package/src/component/helper/MapDraw.js +26 -22
  244. package/src/component/helper/RoamController.js +12 -11
  245. package/src/component/helper/listComponent.js +27 -24
  246. package/src/component/helper/selectableMixin.js +40 -15
  247. package/src/component/legend/LegendModel.js +11 -3
  248. package/src/component/legend/LegendView.js +151 -70
  249. package/src/component/legend/ScrollableLegendModel.js +76 -0
  250. package/src/component/legend/ScrollableLegendView.js +368 -0
  251. package/src/component/legend/legendAction.js +1 -0
  252. package/src/component/legend/scrollableLegendAction.js +25 -0
  253. package/src/component/legend.js +8 -3
  254. package/src/component/legendScroll.js +12 -0
  255. package/src/component/marker/MarkAreaView.js +12 -26
  256. package/src/component/marker/MarkLineView.js +5 -5
  257. package/src/component/marker/MarkPointView.js +4 -4
  258. package/src/component/marker/MarkerModel.js +1 -4
  259. package/src/component/marker/markerHelper.js +1 -0
  260. package/src/component/radar/RadarView.js +6 -3
  261. package/src/component/timeline/SliderTimelineModel.js +4 -6
  262. package/src/component/timeline/SliderTimelineView.js +14 -16
  263. package/src/component/timeline/TimelineAxis.js +1 -1
  264. package/src/component/timeline/TimelineModel.js +1 -3
  265. package/src/component/title.js +9 -10
  266. package/src/component/toolbox/ToolboxModel.js +2 -0
  267. package/src/component/toolbox/ToolboxView.js +15 -27
  268. package/src/component/toolbox/feature/Brush.js +3 -8
  269. package/src/component/toolbox/feature/DataView.js +5 -5
  270. package/src/component/toolbox/feature/DataZoom.js +3 -4
  271. package/src/component/toolbox/feature/MagicType.js +3 -6
  272. package/src/component/toolbox/feature/Restore.js +2 -1
  273. package/src/component/toolbox/feature/SaveAsImage.js +23 -10
  274. package/src/component/tooltip/TooltipContent.js +4 -4
  275. package/src/component/tooltip/TooltipView.js +29 -7
  276. package/src/component/visualMap/ContinuousModel.js +2 -2
  277. package/src/component/visualMap/ContinuousView.js +12 -8
  278. package/src/component/visualMap/PiecewiseModel.js +1 -2
  279. package/src/component/visualMap/PiecewiseView.js +2 -2
  280. package/src/component/visualMap/VisualMapModel.js +18 -12
  281. package/src/coord/Axis.js +1 -1
  282. package/src/coord/axisDefault.js +3 -3
  283. package/src/coord/axisHelper.js +18 -1
  284. package/src/coord/axisModelCommonMixin.js +12 -2
  285. package/src/coord/calendar/Calendar.js +65 -21
  286. package/src/coord/calendar/CalendarModel.js +6 -12
  287. package/src/coord/cartesian/Cartesian2D.js +0 -14
  288. package/src/coord/cartesian/Grid.js +47 -28
  289. package/src/coord/geo/Geo.js +2 -18
  290. package/src/coord/geo/GeoModel.js +6 -13
  291. package/src/coord/geo/fix/diaoyuIsland.js +30 -0
  292. package/src/coord/geo/geoCreator.js +6 -1
  293. package/src/coord/polar/Polar.js +0 -13
  294. package/src/coord/radar/Radar.js +1 -1
  295. package/src/coord/radar/RadarModel.js +6 -2
  296. package/src/data/DataDiffer.js +14 -7
  297. package/src/data/Graph.js +3 -0
  298. package/src/data/List.js +1 -1
  299. package/src/data/Tree.js +2 -2
  300. package/src/data/helper/completeDimensions.js +2 -11
  301. package/src/echarts.js +33 -10
  302. package/src/lang.js +43 -0
  303. package/src/langEN.js +43 -0
  304. package/src/layout/barGrid.js +11 -3
  305. package/src/layout/barPolar.js +9 -2
  306. package/src/model/Model.js +2 -1
  307. package/src/model/Series.js +14 -6
  308. package/src/model/mixin/textStyle.js +11 -9
  309. package/src/preprocessor/backwardCompat.js +5 -4
  310. package/src/preprocessor/helper/compatStyle.js +157 -45
  311. package/src/scale/Interval.js +10 -4
  312. package/src/scale/Time.js +14 -6
  313. package/src/scale/helper.js +15 -2
  314. package/src/util/format.js +4 -24
  315. package/src/util/graphic.js +412 -21
  316. package/src/util/layout.js +28 -16
  317. package/src/util/model.js +26 -11
  318. package/src/util/number.js +106 -21
  319. package/src/visual/VisualMapping.js +4 -4
  320. package/webpack.config.js +21 -7
  321. package/.npmignore +0 -10
@@ -83,6 +83,11 @@ define(function (require) {
83
83
  vec2.sub(v12, n2.p, n1.p);
84
84
  var d = vec2.len(v12) - e.d;
85
85
  var w = n2.w / (n1.w + n2.w);
86
+
87
+ if (isNaN(w)) {
88
+ w = 0;
89
+ }
90
+
86
91
  vec2.normalize(v12, v12);
87
92
 
88
93
  !n1.fixed && scaleAndAdd(n1.p, n1.p, v12, w * d * friction);
@@ -49,7 +49,6 @@ define(function (require) {
49
49
 
50
50
  var nodes = nodeData.mapArray('value', function (value, idx) {
51
51
  var point = nodeData.getItemLayout(idx);
52
- // var w = numberUtil.linearMap(value, nodeDataExtent, [0, 50]);
53
52
  var rep = numberUtil.linearMap(value, nodeDataExtent, repulsion);
54
53
  if (isNaN(rep)) {
55
54
  rep = (repulsion[0] + repulsion[1]) / 2;
@@ -57,6 +56,7 @@ define(function (require) {
57
56
  return {
58
57
  w: rep,
59
58
  rep: rep,
59
+ fixed: nodeData.getItemModel(idx).get('fixed'),
60
60
  p: (!point || isNaN(point[0]) || isNaN(point[1])) ? null : point
61
61
  };
62
62
  });
@@ -60,8 +60,15 @@ define(function (require) {
60
60
  ctx.drawImage(brush, x - r, y - r);
61
61
  }
62
62
 
63
+ if (!canvas.width || !canvas.height) {
64
+ // Avoid "Uncaught DOMException: Failed to execute 'getImageData' on
65
+ // 'CanvasRenderingContext2D': The source height is 0."
66
+ return canvas;
67
+ }
68
+
63
69
  // colorize the canvas using alpha value and set with gradient
64
70
  var imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
71
+
65
72
  var pixels = imageData.data;
66
73
  var offset = 0;
67
74
  var pixelLen = pixels.length;
@@ -191,17 +191,18 @@ define(function (require) {
191
191
  if (rawValue && rawValue[2] != null) {
192
192
  defaultText = rawValue[2];
193
193
  }
194
- if (labelModel.getShallow('show')) {
195
- graphic.setText(style, labelModel);
196
- style.text = seriesModel.getFormattedLabel(idx, 'normal') || defaultText;
197
- }
198
- if (hoverLabelModel.getShallow('show')) {
199
- graphic.setText(hoverStl, hoverLabelModel);
200
- hoverStl.text = seriesModel.getFormattedLabel(idx, 'emphasis') || defaultText;
201
- }
202
194
 
203
- rect.setStyle(style);
195
+ graphic.setLabelStyle(
196
+ style, hoverStl, labelModel, hoverLabelModel,
197
+ {
198
+ labelFetcher: seriesModel,
199
+ labelDataIndex: idx,
200
+ defaultText: defaultText,
201
+ isRectText: true
202
+ }
203
+ );
204
204
 
205
+ rect.setStyle(style);
205
206
  graphic.setHoverStyle(rect, data.hasItemOption ? hoverStl : zrUtil.extend({}, hoverStl));
206
207
 
207
208
  group.add(rect);
@@ -112,7 +112,7 @@ define(function (require) {
112
112
 
113
113
  // Must reinitialize effect if following configuration changed
114
114
  var DIFFICULT_PROPS = ['symbolType', 'period', 'rippleScale'];
115
- for (var i = 0; i < DIFFICULT_PROPS; i++) {
115
+ for (var i = 0; i < DIFFICULT_PROPS.length; i++) {
116
116
  var propName = DIFFICULT_PROPS[i];
117
117
  if (oldEffectCfg[propName] !== effectCfg[propName]) {
118
118
  this.stopEffectAnimation();
@@ -198,13 +198,13 @@ define(function (require) {
198
198
  this.stopEffectAnimation();
199
199
  var symbol = this.childAt(0);
200
200
  var onEmphasis = function () {
201
- symbol.trigger('emphasis');
201
+ symbol.highlight();
202
202
  if (effectCfg.showEffectOn !== 'render') {
203
203
  this.startEffectAnimation(effectCfg);
204
204
  }
205
205
  };
206
206
  var onNormal = function () {
207
- symbol.trigger('normal');
207
+ symbol.downplay();
208
208
  if (effectCfg.showEffectOn !== 'render') {
209
209
  this.stopEffectAnimation();
210
210
  }
@@ -22,6 +22,11 @@ define(function (require) {
22
22
  var symbolProxyShape = symbolProxy.shape;
23
23
  for (var i = 0; i < points.length; i++) {
24
24
  var pt = points[i];
25
+
26
+ if (isNaN(pt[0]) || isNaN(pt[1])) {
27
+ continue;
28
+ }
29
+
25
30
  var size = sizes[i];
26
31
  if (size[0] < 4) {
27
32
  // Optimize for small symbol
@@ -121,7 +126,7 @@ define(function (require) {
121
126
  symbolEl.on('mousemove', function (e) {
122
127
  symbolEl.dataIndex = null;
123
128
  var dataIndex = symbolEl.findDataIndex(e.offsetX, e.offsetY);
124
- if (dataIndex > 0) {
129
+ if (dataIndex >= 0) {
125
130
  // Provide dataIndex for tooltip
126
131
  symbolEl.dataIndex = dataIndex;
127
132
  }
@@ -264,7 +264,7 @@ define(function (require) {
264
264
  }
265
265
 
266
266
  var visualColor = lineData.getItemVisual(idx, 'color');
267
- var visualOpacity = zrUtil.retrieve(
267
+ var visualOpacity = zrUtil.retrieve3(
268
268
  lineData.getItemVisual(idx, 'opacity'),
269
269
  lineStyle.opacity,
270
270
  1
@@ -298,6 +298,8 @@ define(function (require) {
298
298
  var label = this.childOfName('label');
299
299
  var defaultLabelColor;
300
300
  var defaultText;
301
+ var normalText;
302
+ var emphasisText;
301
303
 
302
304
  if (showLabel || hoverShowLabel) {
303
305
  var rawVal = seriesModel.getRawValue(idx);
@@ -307,42 +309,50 @@ define(function (require) {
307
309
  ? numberUtil.round(rawVal)
308
310
  : rawVal;
309
311
  defaultLabelColor = visualColor || '#000';
312
+
313
+ normalText = zrUtil.retrieve2(
314
+ seriesModel.getFormattedLabel(idx, 'normal', lineData.dataType),
315
+ defaultText
316
+ );
317
+ emphasisText = zrUtil.retrieve2(
318
+ seriesModel.getFormattedLabel(idx, 'emphasis', lineData.dataType),
319
+ normalText
320
+ );
310
321
  }
311
322
 
312
323
  // label.afterUpdate = lineAfterUpdate;
313
324
  if (showLabel) {
314
- var textStyleModel = labelModel.getModel('textStyle');
315
- label.setStyle({
316
- text: zrUtil.retrieve(
317
- seriesModel.getFormattedLabel(idx, 'normal', lineData.dataType),
318
- defaultText
319
- ),
320
- textFont: textStyleModel.getFont(),
321
- fill: textStyleModel.getTextColor() || defaultLabelColor
325
+ var labelStyle = graphic.setTextStyle(label.style, labelModel, {
326
+ text: normalText
327
+ }, {
328
+ autoColor: defaultLabelColor
322
329
  });
323
330
 
324
- label.__textAlign = textStyleModel.get('align');
325
- label.__verticalAlign = textStyleModel.get('baseline');
326
- label.__position = labelModel.get('position');
331
+ label.__textAlign = labelStyle.textAlign;
332
+ label.__verticalAlign = labelStyle.textVerticalAlign;
333
+ // 'start', 'middle', 'end'
334
+ label.__position = labelModel.get('position') || 'middle';
327
335
  }
328
336
  else {
329
- label.setStyle('text', '');
337
+ label.setStyle('text', null);
330
338
  }
331
- if (hoverShowLabel) {
332
- var textStyleHoverModel = hoverLabelModel.getModel('textStyle');
333
339
 
340
+ if (hoverShowLabel) {
341
+ // Only these properties supported in this emphasis style here.
334
342
  label.hoverStyle = {
335
- text: zrUtil.retrieve(
336
- seriesModel.getFormattedLabel(idx, 'emphasis', lineData.dataType),
337
- defaultText
338
- ),
339
- textFont: textStyleHoverModel.getFont(),
340
- fill: textStyleHoverModel.getTextColor() || defaultLabelColor
343
+ text: emphasisText,
344
+ textFill: hoverLabelModel.getTextColor(true),
345
+ // For merging hover style to normal style, do not use
346
+ // `hoverLabelModel.getFont()` here.
347
+ fontStyle: hoverLabelModel.getShallow('fontStyle'),
348
+ fontWeight: hoverLabelModel.getShallow('fontWeight'),
349
+ fontSize: hoverLabelModel.getShallow('fontSize'),
350
+ fontFamily: hoverLabelModel.getShallow('fontFamily')
341
351
  };
342
352
  }
343
353
  else {
344
354
  label.hoverStyle = {
345
- text: ''
355
+ text: null
346
356
  };
347
357
  }
348
358
 
@@ -351,6 +361,14 @@ define(function (require) {
351
361
  graphic.setHoverStyle(this);
352
362
  };
353
363
 
364
+ lineProto.highlight = function () {
365
+ this.trigger('emphasis');
366
+ };
367
+
368
+ lineProto.downplay = function () {
369
+ this.trigger('normal');
370
+ };
371
+
354
372
  lineProto.updateLayout = function (lineData, idx) {
355
373
  this.setLinePoints(lineData.getItemLayout(idx));
356
374
  };
@@ -178,6 +178,7 @@ define(function (require) {
178
178
  var labelModel = seriesScope && seriesScope.labelModel;
179
179
  var hoverLabelModel = seriesScope && seriesScope.hoverLabelModel;
180
180
  var hoverAnimation = seriesScope && seriesScope.hoverAnimation;
181
+ var cursorStyle = seriesScope && seriesScope.cursorStyle;
181
182
 
182
183
  if (!seriesScope || data.hasItemOption) {
183
184
  var itemModel = data.getItemModel(idx);
@@ -193,6 +194,7 @@ define(function (require) {
193
194
  labelModel = itemModel.getModel(normalLabelAccessPath);
194
195
  hoverLabelModel = itemModel.getModel(emphasisLabelAccessPath);
195
196
  hoverAnimation = itemModel.getShallow('hoverAnimation');
197
+ cursorStyle = itemModel.getShallow('cursor');
196
198
  }
197
199
  else {
198
200
  hoverItemStyle = zrUtil.extend({}, hoverItemStyle);
@@ -209,6 +211,8 @@ define(function (require) {
209
211
  ]);
210
212
  }
211
213
 
214
+ cursorStyle && symbolPath.attr('cursor', cursorStyle);
215
+
212
216
  // PENDING setColor before setStyle!!!
213
217
  symbolPath.setColor(color);
214
218
 
@@ -220,12 +224,19 @@ define(function (require) {
220
224
  }
221
225
 
222
226
  var valueDim = labelHelper.findLabelValueDim(data);
223
- labelHelper.setTextToStyle(
224
- data, idx, valueDim, elStyle, seriesModel, labelModel, color
225
- );
226
- labelHelper.setTextToStyle(
227
- data, idx, valueDim, hoverItemStyle, seriesModel, hoverLabelModel, color
228
- );
227
+
228
+ if (valueDim != null) {
229
+ graphic.setLabelStyle(
230
+ elStyle, hoverItemStyle, labelModel, hoverLabelModel,
231
+ {
232
+ labelFetcher: seriesModel,
233
+ labelDataIndex: idx,
234
+ defaultText: data.get(valueDim, idx),
235
+ isRectText: true,
236
+ autoColor: color
237
+ }
238
+ );
239
+ }
229
240
 
230
241
  symbolPath.off('mouseover')
231
242
  .off('mouseout')
@@ -234,6 +245,8 @@ define(function (require) {
234
245
 
235
246
  symbolPath.hoverStyle = hoverItemStyle;
236
247
 
248
+ // FIXME
249
+ // Do not use symbol.trigger('emphasis'), but use symbol.highlight() instead.
237
250
  graphic.setHoverStyle(symbolPath);
238
251
 
239
252
  var scale = getScale(symbolSize);
@@ -265,7 +278,7 @@ define(function (require) {
265
278
  // Avoid mistaken hover when fading out
266
279
  this.silent = symbolPath.silent = true;
267
280
  // Not show text when animating
268
- symbolPath.style.text = '';
281
+ symbolPath.style.text = null;
269
282
  graphic.updateProps(symbolPath, {
270
283
  scale: [0, 0]
271
284
  }, this._seriesModel, this.dataIndex, cb);
@@ -48,7 +48,8 @@ define(function (require) {
48
48
  hoverAnimation: seriesModel.get('hoverAnimation'),
49
49
 
50
50
  labelModel: seriesModel.getModel('label.normal'),
51
- hoverLabelModel: seriesModel.getModel('label.emphasis')
51
+ hoverLabelModel: seriesModel.getModel('label.emphasis'),
52
+ cursorStyle: seriesModel.get('cursor')
52
53
  };
53
54
 
54
55
  data.diff(oldData)
@@ -3,8 +3,6 @@
3
3
  */
4
4
  define(function (require) {
5
5
 
6
- var graphic = require('../../util/graphic');
7
- var zrUtil = require('zrender/core/util');
8
6
  var modelUtil = require('../../util/model');
9
7
 
10
8
  var helper = {};
@@ -30,20 +28,5 @@ define(function (require) {
30
28
  return valueDim;
31
29
  };
32
30
 
33
- helper.setTextToStyle = function (
34
- data, dataIndex, valueDim, elStyle, seriesModel, labelModel, color
35
- ) {
36
- if (valueDim != null && labelModel.getShallow('show')) {
37
- graphic.setText(elStyle, labelModel, color);
38
- elStyle.text = zrUtil.retrieve(
39
- seriesModel.getFormattedLabel(dataIndex, 'normal'),
40
- data.get(valueDim, dataIndex)
41
- );
42
- }
43
- else {
44
- elStyle.text = '';
45
- }
46
- };
47
-
48
31
  return helper;
49
32
  });
@@ -55,9 +55,14 @@ define(function(require) {
55
55
  var data = option.data;
56
56
 
57
57
  addOrdinal && zrUtil.each(data, function (item, index) {
58
- zrUtil.isArray(item) && item.unshift(index);
58
+ if (item.value && zrUtil.isArray(item.value)) {
59
+ item.value.unshift(index);
60
+ } else {
61
+ zrUtil.isArray(item) && item.unshift(index);
62
+ }
59
63
  });
60
64
 
65
+ var defaultValueDimensions = this.defaultValueDimensions;
61
66
  var dimensions = [{
62
67
  name: baseAxisDim,
63
68
  otherDims: {
@@ -66,12 +71,14 @@ define(function(require) {
66
71
  dimsDef: ['base']
67
72
  }, {
68
73
  name: otherAxisDim,
69
- dimsDef: this.defaultValueDimensions.slice()
74
+ dimsDef: defaultValueDimensions.slice()
70
75
  }];
71
76
 
72
77
  dimensions = completeDimensions(dimensions, data, {
73
78
  encodeDef: this.get('encode'),
74
- dimsDef: this.get('dimensions')
79
+ dimsDef: this.get('dimensions'),
80
+ // Consider empty data entry.
81
+ dimCount: defaultValueDimensions.length + 1
75
82
  });
76
83
 
77
84
  var list = new List(dimensions, this);
@@ -118,4 +125,4 @@ define(function(require) {
118
125
  seriesModelMixin: seriesModelMixin,
119
126
  viewMixin: viewMixin
120
127
  };
121
- });
128
+ });
@@ -36,6 +36,7 @@ define(function(require) {
36
36
 
37
37
  // If clip the overflow value
38
38
  clipOverflow: true,
39
+ // cursor: null,
39
40
 
40
41
  label: {
41
42
  normal: {
@@ -54,8 +54,20 @@ define(function(require) {
54
54
  function getStackedOnPoints(coordSys, data) {
55
55
  var baseAxis = coordSys.getBaseAxis();
56
56
  var valueAxis = coordSys.getOtherAxis(baseAxis);
57
- var valueStart = baseAxis.onZero
58
- ? 0 : valueAxis.scale.getExtent()[0];
57
+
58
+ var valueStart = 0;
59
+ if (!baseAxis.onZero) {
60
+ var extent = valueAxis.scale.getExtent();
61
+ if (extent[0] > 0) {
62
+ // Both positive
63
+ valueStart = extent[0];
64
+ }
65
+ else if (extent[1] < 0) {
66
+ // Both negative
67
+ valueStart = extent[1];
68
+ }
69
+ // If is one positive, and one negative, onZero shall be true
70
+ }
59
71
 
60
72
  var valueDim = valueAxis.dim;
61
73
 
@@ -3,6 +3,7 @@ define(function (require) {
3
3
 
4
4
  var Path = require('zrender/graphic/Path');
5
5
  var vec2 = require('zrender/core/vector');
6
+ var fixClipWithShadow = require('zrender/graphic/helper/fixClipWithShadow');
6
7
 
7
8
  var vec2Min = vec2.min;
8
9
  var vec2Max = vec2.max;
@@ -154,6 +155,8 @@ define(function (require) {
154
155
  stroke: '#000'
155
156
  },
156
157
 
158
+ brush: fixClipWithShadow(Path.prototype.brush),
159
+
157
160
  buildPath: function (ctx, shape) {
158
161
  var points = shape.points;
159
162
 
@@ -206,6 +209,8 @@ define(function (require) {
206
209
  connectNulls: false
207
210
  },
208
211
 
212
+ brush: fixClipWithShadow(Path.prototype.brush),
213
+
209
214
  buildPath: function (ctx, shape) {
210
215
  var points = shape.points;
211
216
  var stackedOnPoints = shape.stackedOnPoints;
@@ -48,9 +48,13 @@ define(function (require) {
48
48
  var zr = api.getZr();
49
49
  // Avoid the drag cause ghost shadow
50
50
  // FIXME Better way ?
51
- zr.painter.getLayer(zlevel).clear(true);
51
+ // SVG doesn't support
52
+ var isSvg = zr.painter.getType() === 'svg';
53
+ if (!isSvg) {
54
+ zr.painter.getLayer(zlevel).clear(true);
55
+ }
52
56
  // Config layer with motion blur
53
- if (this._lastZlevel != null) {
57
+ if (this._lastZlevel != null && !isSvg) {
54
58
  zr.configLayer(this._lastZlevel, {
55
59
  motionBlur: false
56
60
  });
@@ -66,10 +70,12 @@ define(function (require) {
66
70
  notInIndividual && console.warn('Lines with trail effect should have an individual zlevel');
67
71
  }
68
72
 
69
- zr.configLayer(zlevel, {
70
- motionBlur: true,
71
- lastFrameAlpha: Math.max(Math.min(trailLength / 10 + 0.9, 1), 0)
72
- });
73
+ if (!isSvg) {
74
+ zr.configLayer(zlevel, {
75
+ motionBlur: true,
76
+ lastFrameAlpha: Math.max(Math.min(trailLength / 10 + 0.9, 1), 0)
77
+ });
78
+ }
73
79
  }
74
80
 
75
81
  this.group.add(lineDraw.group);
@@ -83,11 +89,20 @@ define(function (require) {
83
89
  this._lineDraw.updateLayout(seriesModel);
84
90
  // Not use motion when dragging or zooming
85
91
  var zr = api.getZr();
86
- zr.painter.getLayer(this._lastZlevel).clear(true);
92
+ var isSvg = zr.painter.getType() === 'svg';
93
+ if (!isSvg) {
94
+ zr.painter.getLayer(this._lastZlevel).clear(true);
95
+ }
87
96
  },
88
97
 
89
98
  remove: function (ecModel, api) {
90
99
  this._lineDraw && this._lineDraw.remove(api, true);
100
+ // Clear motion when lineDraw is removed
101
+ var zr = api.getZr();
102
+ var isSvg = zr.painter.getType() === 'svg';
103
+ if (!isSvg) {
104
+ zr.painter.getLayer(this._lastZlevel).clear(true);
105
+ }
91
106
  },
92
107
 
93
108
  dispose: function () {}
@@ -82,7 +82,7 @@ define(function (require) {
82
82
  // Shallow clone
83
83
  option = zrUtil.extend({}, option);
84
84
 
85
- option.data = geoCreator.getFilledRegions(option.data, mapName);
85
+ option.data = geoCreator.getFilledRegions(option.data, mapName, option.nameMap);
86
86
 
87
87
  return option;
88
88
  },
@@ -216,15 +216,11 @@ define(function (require) {
216
216
  label: {
217
217
  normal: {
218
218
  show: false,
219
- textStyle: {
220
- color: '#000'
221
- }
219
+ color: '#000'
222
220
  },
223
221
  emphasis: {
224
222
  show: true,
225
- textStyle: {
226
- color: 'rgb(100,0,0)'
227
- }
223
+ color: 'rgb(100,0,0)'
228
224
  }
229
225
  },
230
226
  // scaleLimit: null,
@@ -2,6 +2,7 @@ define(function (require) {
2
2
 
3
3
  // var zrUtil = require('zrender/core/util');
4
4
  var graphic = require('../../util/graphic');
5
+ var zrUtil = require('zrender/core/util');
5
6
 
6
7
  var MapDraw = require('../../component/helper/MapDraw');
7
8
 
@@ -98,42 +99,52 @@ define(function (require) {
98
99
  r: 3
99
100
  },
100
101
  silent: true,
101
- z2: 10
102
+ // Do not overlap the first series, on which labels are displayed.
103
+ z2: !offset ? 10 : 8
102
104
  });
103
105
 
104
106
  // First data on the same region
105
107
  if (!offset) {
106
108
  var fullData = mapModel.mainSeries.getData();
107
109
  var name = originalData.getName(idx);
108
- var labelText = name;
110
+
109
111
  var fullIndex = fullData.indexOfName(name);
110
112
 
111
113
  var itemModel = originalData.getItemModel(idx);
112
114
  var labelModel = itemModel.getModel('label.normal');
113
115
  var hoverLabelModel = itemModel.getModel('label.emphasis');
114
116
 
115
- var textStyleModel = labelModel.getModel('textStyle');
116
- var hoverTextStyleModel = hoverLabelModel.getModel('textStyle');
117
-
118
117
  var polygonGroups = fullData.getItemGraphicEl(fullIndex);
119
- circle.setStyle({
120
- textPosition: 'bottom'
121
- });
118
+
119
+ var normalText = zrUtil.retrieve2(
120
+ mapModel.getFormattedLabel(idx, 'normal'),
121
+ name
122
+ );
123
+ var emphasisText = zrUtil.retrieve2(
124
+ mapModel.getFormattedLabel(idx, 'emphasis'),
125
+ normalText
126
+ );
122
127
 
123
128
  var onEmphasis = function () {
124
- circle.setStyle({
125
- text: hoverLabelModel.get('show') ? labelText : '',
126
- textFill: hoverTextStyleModel.getTextColor(),
127
- textFont: hoverTextStyleModel.getFont()
128
- });
129
+ var hoverStyle = graphic.setTextStyle({}, hoverLabelModel, {
130
+ text: hoverLabelModel.get('show') ? emphasisText : null
131
+ }, {isRectText: true, useInsideStyle: false}, true);
132
+ circle.style.extendFrom(hoverStyle);
133
+ // Make label upper than others if overlaps.
134
+ circle.__mapOriginalZ2 = circle.z2;
135
+ circle.z2 += 1;
129
136
  };
130
137
 
131
138
  var onNormal = function () {
132
- circle.setStyle({
133
- text: labelModel.get('show') ? labelText : '',
134
- textFill: textStyleModel.getTextColor(),
135
- textFont: textStyleModel.getFont()
136
- });
139
+ graphic.setTextStyle(circle.style, labelModel, {
140
+ text: labelModel.get('show') ? normalText : null,
141
+ textPosition: labelModel.getShallow('position') || 'bottom'
142
+ }, {isRectText: true, useInsideStyle: false});
143
+
144
+ if (circle.__mapOriginalZ2 != null) {
145
+ circle.z2 = circle.__mapOriginalZ2;
146
+ circle.__mapOriginalZ2 = null;
147
+ }
137
148
  };
138
149
 
139
150
  polygonGroups.on('mouseover', onEmphasis)
@@ -5,6 +5,7 @@ define(function(require) {
5
5
  var List = require('../../data/List');
6
6
  var zrUtil = require('zrender/core/util');
7
7
  var modelUtil = require('../../util/model');
8
+ var numberUtil = require('../../util/number');
8
9
  var completeDimensions = require('../../data/helper/completeDimensions');
9
10
 
10
11
  var dataSelectableMixin = require('../../component/helper/selectableMixin');
@@ -45,11 +46,18 @@ define(function(require) {
45
46
  getDataParams: function (dataIndex) {
46
47
  var data = this.getData();
47
48
  var params = PieSeries.superCall(this, 'getDataParams', dataIndex);
48
- var sum = data.getSum('value');
49
49
  // FIXME toFixed?
50
- //
51
- // Percent is 0 if sum is 0
52
- params.percent = !sum ? 0 : +(data.get('value', dataIndex) / sum * 100).toFixed(2);
50
+
51
+ var valueList = [];
52
+ data.each('value', function (value) {
53
+ valueList.push(value);
54
+ });
55
+
56
+ params.percent = numberUtil.getPercentWithPrecision(
57
+ valueList,
58
+ dataIndex,
59
+ data.hostModel.get('percentPrecision')
60
+ );
53
61
 
54
62
  params.$vars.push('percent');
55
63
  return params;
@@ -82,8 +90,10 @@ define(function(require) {
82
90
  startAngle: 90,
83
91
  // 最小角度改为0
84
92
  minAngle: 0,
85
- // 选中是扇区偏移量
93
+ // 选中时扇区偏移量
86
94
  selectedOffset: 10,
95
+ // 高亮扇区偏移量
96
+ hoverOffset: 10,
87
97
 
88
98
  // If use strategy to avoid label overlapping
89
99
  avoidLabelOverlap: true,
@@ -92,9 +102,13 @@ define(function(require) {
92
102
  // 南丁格尔玫瑰图模式,'radius'(半径) | 'area'(面积)
93
103
  // roseType: null,
94
104
 
105
+ percentPrecision: 2,
106
+
95
107
  // If still show when all data zero.
96
108
  stillShowZeroSum: true,
97
109
 
110
+ // cursor: null,
111
+
98
112
  label: {
99
113
  normal: {
100
114
  // If rotate around circle
@@ -103,7 +117,7 @@ define(function(require) {
103
117
  // 'outer', 'inside', 'center'
104
118
  position: 'outer'
105
119
  // formatter: 标签文本格式器,同Tooltip.formatter,不支持异步回调
106
- // textStyle: null // 默认使用全局文本样式,详见TEXTSTYLE
120
+ // 默认使用全局文本样式,详见TEXTSTYLE
107
121
  // distance: 当position为inner时有效,为label位置到圆心的距离与圆半径(环状图为内外半径和)的比例系数
108
122
  },
109
123
  emphasis: {}