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
@@ -428,7 +428,7 @@
428
428
 
429
429
  barGroup.add(displaybles.filler = new Rect({
430
430
  draggable: true,
431
- cursor: 'move',
431
+ cursor: getCursor(this._orient),
432
432
  drift: bind(this._onDragMove, this, 'all'),
433
433
  onmousemove: function (e) {
434
434
  // Fot mobile devicem, prevent screen slider on the button.
@@ -461,38 +461,23 @@
461
461
  }
462
462
  })));
463
463
 
464
- var iconStr = dataZoomModel.get('handleIcon');
465
464
  each([0, 1], function (handleIndex) {
466
- var iconOpt = {
467
- style: {
468
- strokeNoScale: true
469
- },
470
- rectHover: true,
471
- cursor: this._orient === 'vertical' ? 'ns-resize' : 'ew-resize',
472
- draggable: true,
473
- drift: bind(this._onDragMove, this, handleIndex),
474
- onmousemove: function (e) {
475
- // Fot mobile devicem, prevent screen slider on the button.
476
- eventTool.stop(e.event);
465
+ var path = graphic.createIcon(
466
+ dataZoomModel.get('handleIcon'),
467
+ {
468
+ cursor: getCursor(this._orient),
469
+ draggable: true,
470
+ drift: bind(this._onDragMove, this, handleIndex),
471
+ onmousemove: function (e) {
472
+ // Fot mobile devicem, prevent screen slider on the button.
473
+ eventTool.stop(e.event);
474
+ },
475
+ ondragend: bind(this._onDragEnd, this),
476
+ onmouseover: bind(this._showDataInfo, this, true),
477
+ onmouseout: bind(this._showDataInfo, this, false)
477
478
  },
478
- ondragend: bind(this._onDragEnd, this),
479
- onmouseover: bind(this._showDataInfo, this, true),
480
- onmouseout: bind(this._showDataInfo, this, false)
481
- };
482
- var iconStyle = {x: -1, y: 0, width: 2, height: 2};
483
-
484
- var path = iconStr.indexOf('image://') === 0
485
- ? (
486
- iconStyle.image = iconStr.slice(8),
487
- iconOpt.style = iconStyle,
488
- new graphic.Image(iconOpt)
489
- )
490
- : graphic.makePath(
491
- iconStr.replace('path://', ''),
492
- iconOpt,
493
- iconStyle,
494
- 'center'
495
- );
479
+ {x: -1, y: 0, width: 2, height: 2}
480
+ );
496
481
 
497
482
  var bRect = path.getBoundingRect();
498
483
  this._handleHeight = numberUtil.parsePercent(dataZoomModel.get('handleSize'), this._size[1]);
@@ -517,7 +502,7 @@
517
502
  x: 0, y: 0, text: '',
518
503
  textVerticalAlign: 'middle',
519
504
  textAlign: 'center',
520
- fill: textStyleModel.getTextColor(),
505
+ textFill: textStyleModel.getTextColor(),
521
506
  textFont: textStyleModel.getFont()
522
507
  },
523
508
  z2: 10
@@ -797,5 +782,9 @@
797
782
  return map[thisDim];
798
783
  }
799
784
 
785
+ function getCursor(orient) {
786
+ return orient === 'vertical' ? 'ns-resize' : 'ew-resize';
787
+ }
788
+
800
789
  module.exports = SliderZoomView;
801
790
 
@@ -62,10 +62,13 @@
62
62
  record.controller = createController(api, record);
63
63
  record.dispatchAction = zrUtil.curry(dispatchAction, api);
64
64
  }
65
- record.controller.enable(
66
- dataZoomInfo.disabled ? false : dataZoomInfo.zoomLock ? 'move' : true,
67
- dataZoomInfo.roamControllerOpt
68
- );
65
+
66
+ // Update reference of dataZoom.
67
+ !(record.dataZoomInfos[theDataZoomId]) && record.count++;
68
+ record.dataZoomInfos[theDataZoomId] = dataZoomInfo;
69
+
70
+ var controllerParams = mergeControllerParams(record.dataZoomInfos);
71
+ record.controller.enable(controllerParams.controlType, controllerParams.opt);
69
72
 
70
73
  // Consider resize, area should be always updated.
71
74
  record.controller.setPointerChecker(dataZoomInfo.containsPoint);
@@ -77,10 +80,6 @@
77
80
  dataZoomInfo.throttleRate,
78
81
  'fixRate'
79
82
  );
80
-
81
- // Update reference of dataZoom.
82
- !(record.dataZoomInfos[theDataZoomId]) && record.count++;
83
- record.dataZoomInfos[theDataZoomId] = dataZoomInfo;
84
83
  },
85
84
 
86
85
  /**
@@ -170,7 +169,7 @@
170
169
 
171
170
  zrUtil.each(record.dataZoomInfos, function (info) {
172
171
  var range = getRange(info);
173
- range && batch.push({
172
+ !info.disabled && range && batch.push({
174
173
  dataZoomId: info.dataZoomId,
175
174
  start: range[0],
176
175
  end: range[1]
@@ -190,5 +189,30 @@
190
189
  });
191
190
  }
192
191
 
192
+ /**
193
+ * Merge roamController settings when multiple dataZooms share one roamController.
194
+ */
195
+ function mergeControllerParams(dataZoomInfos) {
196
+ var controlType;
197
+ var opt = {};
198
+ var typePriority = {
199
+ 'true': 2,
200
+ 'move': 1,
201
+ 'false': 0,
202
+ 'undefined': -1
203
+ };
204
+ zrUtil.each(dataZoomInfos, function (dataZoomInfo) {
205
+ var oneType = dataZoomInfo.disabled ? false : dataZoomInfo.zoomLock ? 'move' : true;
206
+ typePriority[oneType] > typePriority[controlType] && (controlType = oneType);
207
+ // Do not support that different 'shift'/'ctrl'/'alt' setting used in one coord sys.
208
+ zrUtil.extend(opt, dataZoomInfo.roamControllerOpt);
209
+ });
210
+
211
+ return {
212
+ controlType: controlType,
213
+ opt: opt
214
+ };
215
+ }
216
+
193
217
  module.exports = roams;
194
218
 
@@ -1,6 +1,6 @@
1
1
 
2
2
 
3
- require('../../model/Component').registerSubTypeDefaulter('dataZoom', function (option) {
3
+ require('../../model/Component').registerSubTypeDefaulter('dataZoom', function () {
4
4
  // Default 'slider' when no type specified.
5
5
  return 'slider';
6
6
  });
@@ -274,11 +274,23 @@
274
274
  var parentId = elOption.parentId;
275
275
  var targetElParent = parentId != null ? elMap.get(parentId) : rootGroup;
276
276
 
277
- // In top/bottom mode, textVertical should not be used. And textBaseline
278
- // should not be 'alphabetic', which cause inaccurately locating.
279
- if (elOption.hv && elOption.hv[1] && elOption.type === 'text') {
280
- elOption.style = zrUtil.defaults({textBaseline: 'middle'}, elOption.style);
281
- elOption.style.textVerticalAlign = null;
277
+ if (elOption.type === 'text') {
278
+ var elOptionStyle = elOption.style;
279
+
280
+ // In top/bottom mode, textVerticalAlign should not be used, which cause
281
+ // inaccurately locating.
282
+ if (elOption.hv && elOption.hv[1]) {
283
+ elOptionStyle.textVerticalAlign = elOptionStyle.textBaseline = null;
284
+ }
285
+
286
+ // Compatible with previous setting: both support fill and textFill,
287
+ // stroke and textStroke.
288
+ !elOptionStyle.hasOwnProperty('textFill') && elOptionStyle.fill && (
289
+ elOptionStyle.textFill = elOptionStyle.fill
290
+ );
291
+ !elOptionStyle.hasOwnProperty('textStroke') && elOptionStyle.stroke && (
292
+ elOptionStyle.textStroke = elOptionStyle.stroke
293
+ );
282
294
  }
283
295
 
284
296
  // Remove unnecessary props to avoid potential problems.
@@ -200,7 +200,7 @@
200
200
  *
201
201
  * @param {Object} area
202
202
  * @param {Array} targetInfoList
203
- * @return {Obejct|boolean}
203
+ * @return {Object|boolean}
204
204
  */
205
205
  proto.findTargetInfo = function (area, ecModel) {
206
206
  var targetInfoList = this._targetInfoList;
@@ -123,8 +123,8 @@
123
123
 
124
124
  var isGeo = mapOrGeoModel.mainType === 'geo';
125
125
 
126
- // map series has data, geo model that controlled by map series
127
- // has no data, otherwise data exists.
126
+ // Map series has data. GEO model that controlled by map series
127
+ // will be assigned with map data. Other GEO model has no data.
128
128
  var data = mapOrGeoModel.getData && mapOrGeoModel.getData();
129
129
  isGeo && ecModel.eachComponent({mainType: 'series', subType: 'map'}, function (mapSeries) {
130
130
  if (!data && mapSeries.getHostGeoModel() === mapOrGeoModel) {
@@ -199,9 +199,6 @@
199
199
  }
200
200
  }
201
201
 
202
- var textStyleModel = labelModel.getModel('textStyle');
203
- var hoverTextStyleModel = hoverLabelModel.getModel('textStyle');
204
-
205
202
  zrUtil.each(region.geometries, function (geometry) {
206
203
  if (geometry.type !== 'polygon') {
207
204
  return;
@@ -238,29 +235,36 @@
238
235
  (isGeo || isDataNaN && (showLabel || hoverShowLabel))
239
236
  || (itemLayout && itemLayout.showLabel)
240
237
  ) {
241
- var query = data ? dataIdx : region.name;
242
- var formattedStr = mapOrGeoModel.getFormattedLabel(query, 'normal');
243
- var hoverFormattedStr = mapOrGeoModel.getFormattedLabel(query, 'emphasis');
244
- var text = new graphic.Text({
245
- style: {
246
- text: showLabel ? (formattedStr || region.name) : '',
247
- fill: textStyleModel.getTextColor(),
248
- textFont: textStyleModel.getFont(),
249
- textAlign: 'center',
250
- textVerticalAlign: 'middle'
251
- },
252
- hoverStyle: {
253
- text: hoverShowLabel ? (hoverFormattedStr || region.name) : '',
254
- fill: hoverTextStyleModel.getTextColor(),
255
- textFont: hoverTextStyleModel.getFont()
256
- },
238
+ var query = !isGeo ? dataIdx : region.name;
239
+ var labelFetcher;
240
+
241
+ // Consider dataIdx not found.
242
+ if (!data || dataIdx >= 0) {
243
+ labelFetcher = mapOrGeoModel;
244
+ }
245
+
246
+ var textEl = new graphic.Text({
257
247
  position: region.center.slice(),
258
248
  scale: [1 / scale[0], 1 / scale[1]],
259
249
  z2: 10,
260
250
  silent: true
261
251
  });
262
252
 
263
- regionGroup.add(text);
253
+ graphic.setLabelStyle(
254
+ textEl.style, textEl.hoverStyle = {}, labelModel, hoverLabelModel,
255
+ {
256
+ labelFetcher: labelFetcher,
257
+ labelDataIndex: query,
258
+ defaultText: region.name,
259
+ useInsideStyle: false
260
+ },
261
+ {
262
+ textAlign: 'center',
263
+ textVerticalAlign: 'middle'
264
+ }
265
+ );
266
+
267
+ regionGroup.add(textEl);
264
268
  }
265
269
 
266
270
  // setItemGraphicEl, setHoverStyle after all polygons and labels
@@ -113,7 +113,9 @@
113
113
 
114
114
 
115
115
  function mousedown(e) {
116
- if (e.target && e.target.draggable) {
116
+ if (eventTool.notLeftMouse(e)
117
+ || (e.target && e.target.draggable)
118
+ ) {
117
119
  return;
118
120
  }
119
121
 
@@ -130,15 +132,12 @@
130
132
  }
131
133
 
132
134
  function mousemove(e) {
133
- if (!checkKeyBinding(this, 'moveOnMouseMove', e) || !this._dragging) {
134
- return;
135
- }
136
-
137
- if (e.gestureEvent === 'pinch') {
138
- return;
139
- }
140
-
141
- if (interactionMutex.isTaken(this._zr, 'globalPan')) {
135
+ if (eventTool.notLeftMouse(e)
136
+ || !checkKeyBinding(this, 'moveOnMouseMove', e)
137
+ || !this._dragging
138
+ || e.gestureEvent === 'pinch'
139
+ || interactionMutex.isTaken(this._zr, 'globalPan')
140
+ ) {
142
141
  return;
143
142
  }
144
143
 
@@ -160,7 +159,9 @@
160
159
  }
161
160
 
162
161
  function mouseup(e) {
163
- this._dragging = false;
162
+ if (!eventTool.notLeftMouse(e)) {
163
+ this._dragging = false;
164
+ }
164
165
  }
165
166
 
166
167
  function mousewheel(e) {
@@ -4,17 +4,6 @@
4
4
  var formatUtil = require('../../util/format');
5
5
  var graphic = require('../../util/graphic');
6
6
 
7
- function positionGroup(group, model, api) {
8
- layout.positionElement(
9
- group, model.getBoxLayoutParams(),
10
- {
11
- width: api.getWidth(),
12
- height: api.getHeight()
13
- },
14
- model.get('padding')
15
- );
16
- }
17
-
18
7
  module.exports = {
19
8
  /**
20
9
  * Layout list like component.
@@ -24,10 +13,16 @@
24
13
  * @param {module:echarts/ExtensionAPI}
25
14
  */
26
15
  layout: function (group, componentModel, api) {
27
- var rect = layout.getLayoutRect(componentModel.getBoxLayoutParams(), {
28
- width: api.getWidth(),
29
- height: api.getHeight()
30
- }, componentModel.get('padding'));
16
+ var boxLayoutParams = componentModel.getBoxLayoutParams();
17
+ var padding = componentModel.get('padding');
18
+ var viewportSize = {width: api.getWidth(), height: api.getHeight()};
19
+
20
+ var rect = layout.getLayoutRect(
21
+ boxLayoutParams,
22
+ viewportSize,
23
+ padding
24
+ );
25
+
31
26
  layout.box(
32
27
  componentModel.get('orient'),
33
28
  group,
@@ -36,29 +31,37 @@
36
31
  rect.height
37
32
  );
38
33
 
39
- positionGroup(group, componentModel, api);
34
+ layout.positionElement(
35
+ group,
36
+ boxLayoutParams,
37
+ viewportSize,
38
+ padding
39
+ );
40
40
  },
41
41
 
42
- addBackground: function (group, componentModel) {
42
+ makeBackground: function (rect, componentModel) {
43
43
  var padding = formatUtil.normalizeCssArray(
44
44
  componentModel.get('padding')
45
45
  );
46
- var boundingRect = group.getBoundingRect();
47
46
  var style = componentModel.getItemStyle(['color', 'opacity']);
48
47
  style.fill = componentModel.get('backgroundColor');
49
48
  var rect = new graphic.Rect({
50
49
  shape: {
51
- x: boundingRect.x - padding[3],
52
- y: boundingRect.y - padding[0],
53
- width: boundingRect.width + padding[1] + padding[3],
54
- height: boundingRect.height + padding[0] + padding[2]
50
+ x: rect.x - padding[3],
51
+ y: rect.y - padding[0],
52
+ width: rect.width + padding[1] + padding[3],
53
+ height: rect.height + padding[0] + padding[2],
54
+ r: componentModel.get('borderRadius')
55
55
  },
56
56
  style: style,
57
57
  silent: true,
58
58
  z2: -1
59
59
  });
60
- graphic.subPixelOptimizeRect(rect);
60
+ // FIXME
61
+ // `subPixelOptimizeRect` may bring some gap between edge of viewpart
62
+ // and background rect when setting like `left: 0`, `top: 0`.
63
+ // graphic.subPixelOptimizeRect(rect);
61
64
 
62
- group.add(rect);
65
+ return rect;
63
66
  }
64
67
  };
@@ -12,21 +12,28 @@
12
12
  module.exports = {
13
13
 
14
14
  updateSelectedMap: function (targetList) {
15
+ this._targetList = targetList.slice();
15
16
  this._selectTargetMap = zrUtil.reduce(targetList || [], function (targetMap, target) {
16
17
  targetMap.set(target.name, target);
17
18
  return targetMap;
18
19
  }, zrUtil.createHashMap());
19
20
  },
21
+
20
22
  /**
21
- * @param {string} name
23
+ * Either name or id should be passed as input here.
24
+ * If both of them are defined, id is used.
25
+ *
26
+ * @param {string|undefined} name name of data
27
+ * @param {number|undefined} id dataIndex of data
22
28
  */
23
29
  // PENGING If selectedMode is null ?
24
- select: function (name) {
25
- var targetMap = this._selectTargetMap;
26
- var target = targetMap.get(name);
30
+ select: function (name, id) {
31
+ var target = id != null
32
+ ? this._targetList[id]
33
+ : this._selectTargetMap.get(name);
27
34
  var selectedMode = this.get('selectedMode');
28
35
  if (selectedMode === 'single') {
29
- targetMap.each(function (target) {
36
+ this._selectTargetMap.each(function (target) {
30
37
  target.selected = false;
31
38
  });
32
39
  }
@@ -34,31 +41,49 @@
34
41
  },
35
42
 
36
43
  /**
37
- * @param {string} name
44
+ * Either name or id should be passed as input here.
45
+ * If both of them are defined, id is used.
46
+ *
47
+ * @param {string|undefined} name name of data
48
+ * @param {number|undefined} id dataIndex of data
38
49
  */
39
- unSelect: function (name) {
40
- var target = this._selectTargetMap.get(name);
50
+ unSelect: function (name, id) {
51
+ var target = id != null
52
+ ? this._targetList[id]
53
+ : this._selectTargetMap.get(name);
41
54
  // var selectedMode = this.get('selectedMode');
42
55
  // selectedMode !== 'single' && target && (target.selected = false);
43
56
  target && (target.selected = false);
44
57
  },
45
58
 
46
59
  /**
47
- * @param {string} name
60
+ * Either name or id should be passed as input here.
61
+ * If both of them are defined, id is used.
62
+ *
63
+ * @param {string|undefined} name name of data
64
+ * @param {number|undefined} id dataIndex of data
48
65
  */
49
- toggleSelected: function (name) {
50
- var target = this._selectTargetMap.get(name);
66
+ toggleSelected: function (name, id) {
67
+ var target = id != null
68
+ ? this._targetList[id]
69
+ : this._selectTargetMap.get(name);
51
70
  if (target != null) {
52
- this[target.selected ? 'unSelect' : 'select'](name);
71
+ this[target.selected ? 'unSelect' : 'select'](name, id);
53
72
  return target.selected;
54
73
  }
55
74
  },
56
75
 
57
76
  /**
58
- * @param {string} name
77
+ * Either name or id should be passed as input here.
78
+ * If both of them are defined, id is used.
79
+ *
80
+ * @param {string|undefined} name name of data
81
+ * @param {number|undefined} id dataIndex of data
59
82
  */
60
- isSelected: function (name) {
61
- var target = this._selectTargetMap.get(name);
83
+ isSelected: function (name, id) {
84
+ var target = id != null
85
+ ? this._targetList[id]
86
+ : this._selectTargetMap.get(name);
62
87
  return target && target.selected;
63
88
  }
64
89
  };
@@ -6,12 +6,19 @@
6
6
 
7
7
  var LegendModel = require('../../echarts').extendComponentModel({
8
8
 
9
- type: 'legend',
9
+ type: 'legend.plain',
10
10
 
11
11
  dependencies: ['series'],
12
12
 
13
13
  layoutMode: {
14
14
  type: 'box',
15
+ // legend.width/height are maxWidth/maxHeight actually,
16
+ // whereas realy width/height is calculated by its content.
17
+ // (Setting {left: 10, right: 10} does not make sense).
18
+ // So consider the case:
19
+ // `setOption({legend: {left: 10});`
20
+ // then `setOption({legend: {right: 10});`
21
+ // The previous `left` should be cleared by setting `ignoreSize`.
15
22
  ignoreSize: true
16
23
  },
17
24
 
@@ -142,8 +149,8 @@
142
149
  left: 'center',
143
150
  // right: 'center',
144
151
 
145
- top: 'top',
146
- // bottom: 'top',
152
+ top: 0,
153
+ // bottom: null,
147
154
 
148
155
  // 水平对齐
149
156
  // 'auto' | 'left' | 'right'
@@ -153,6 +160,7 @@
153
160
  backgroundColor: 'rgba(0,0,0,0)',
154
161
  // 图例边框颜色
155
162
  borderColor: '#ccc',
163
+ borderRadius: 0,
156
164
  // 图例边框线宽,单位px,默认为0(无边框)
157
165
  borderWidth: 0,
158
166
  // 图例内边距,单位px,默认各方向内边距为5,