echarts 3.5.1 → 3.6.0

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 (261) hide show
  1. package/LICENSE +21 -18
  2. package/README.md +10 -0
  3. package/dist/echarts.common.js +11010 -9830
  4. package/dist/echarts.common.min.js +13 -13
  5. package/dist/echarts.js +13291 -10852
  6. package/dist/echarts.min.js +22 -21
  7. package/dist/echarts.simple.js +9904 -8990
  8. package/dist/echarts.simple.min.js +9 -10
  9. package/index.js +1 -0
  10. package/lib/ExtensionAPI.js +2 -4
  11. package/lib/chart/bar/BarView.js +141 -49
  12. package/lib/chart/bar/BaseBarSeries.js +2 -6
  13. package/lib/chart/bar.js +1 -0
  14. package/lib/chart/boxplot/BoxplotSeries.js +1 -1
  15. package/lib/chart/boxplot/boxplotLayout.js +23 -7
  16. package/lib/chart/candlestick/CandlestickSeries.js +3 -22
  17. package/lib/chart/candlestick/candlestickLayout.js +23 -7
  18. package/lib/chart/custom.js +442 -0
  19. package/lib/chart/funnel/funnelLayout.js +10 -3
  20. package/lib/chart/gauge/GaugeView.js +1 -1
  21. package/lib/chart/graph/GraphView.js +15 -9
  22. package/lib/chart/graph/categoryVisual.js +3 -2
  23. package/lib/chart/heatmap/HeatmapLayer.js +1 -1
  24. package/lib/chart/heatmap/HeatmapView.js +75 -73
  25. package/lib/chart/helper/Symbol.js +8 -31
  26. package/lib/chart/helper/createListFromArray.js +15 -10
  27. package/lib/chart/helper/labelHelper.js +48 -0
  28. package/lib/chart/helper/whiskerBoxCommon.js +25 -44
  29. package/lib/chart/map/mapDataStatistic.js +9 -8
  30. package/lib/chart/parallel/ParallelSeries.js +2 -0
  31. package/lib/chart/parallel/ParallelView.js +13 -12
  32. package/lib/chart/parallel/parallelVisual.js +9 -1
  33. package/lib/chart/pie/pieLayout.js +25 -17
  34. package/lib/chart/radar/RadarSeries.js +1 -1
  35. package/lib/chart/sankey/sankeyLayout.js +1 -1
  36. package/lib/chart/scatter/ScatterSeries.js +2 -3
  37. package/lib/chart/themeRiver/ThemeRiverSeries.js +6 -5
  38. package/lib/chart/themeRiver/themeRiverVisual.js +1 -1
  39. package/lib/chart/treemap/TreemapSeries.js +3 -3
  40. package/lib/chart/treemap/TreemapView.js +1 -1
  41. package/lib/chart/treemap/treemapLayout.js +6 -1
  42. package/lib/component/axis/AxisBuilder.js +53 -34
  43. package/lib/component/axis/ParallelAxisView.js +45 -37
  44. package/lib/component/axisPointer/AxisPointerModel.js +1 -1
  45. package/lib/component/axisPointer/BaseAxisPointer.js +20 -15
  46. package/lib/component/axisPointer/CartesianAxisPointer.js +9 -6
  47. package/lib/component/axisPointer/PolarAxisPointer.js +10 -8
  48. package/lib/component/axisPointer/SingleAxisPointer.js +11 -7
  49. package/lib/component/axisPointer/axisTrigger.js +87 -72
  50. package/lib/component/axisPointer/viewHelper.js +6 -3
  51. package/lib/component/axisPointer.js +2 -2
  52. package/lib/component/brush/BrushModel.js +6 -4
  53. package/lib/component/brush/BrushView.js +1 -1
  54. package/lib/component/brush/visualEncoding.js +6 -4
  55. package/lib/component/calendar/CalendarView.js +5 -5
  56. package/lib/component/dataZoom/AxisProxy.js +76 -13
  57. package/lib/component/dataZoom/DataZoomModel.js +21 -5
  58. package/lib/component/dataZoom/InsideZoomModel.js +4 -1
  59. package/lib/component/dataZoom/InsideZoomView.js +17 -27
  60. package/lib/component/dataZoom/SliderZoomView.js +63 -26
  61. package/lib/component/dataZoom/roams.js +9 -4
  62. package/lib/component/graphic.js +13 -12
  63. package/lib/component/helper/BrushController.js +75 -114
  64. package/lib/component/helper/BrushTargetManager.js +16 -8
  65. package/lib/component/helper/MapDraw.js +25 -11
  66. package/lib/component/helper/RoamController.js +111 -139
  67. package/lib/component/helper/brushHelper.js +25 -213
  68. package/lib/component/helper/cursorHelper.js +21 -0
  69. package/lib/component/helper/roamHelper.js +54 -0
  70. package/lib/component/helper/selectableMixin.js +7 -7
  71. package/lib/component/helper/sliderMove.js +66 -37
  72. package/lib/component/legend/LegendView.js +6 -6
  73. package/lib/component/legend/legendAction.js +1 -1
  74. package/lib/component/marker/MarkAreaView.js +3 -6
  75. package/lib/component/marker/MarkLineView.js +3 -5
  76. package/lib/component/marker/MarkPointView.js +3 -5
  77. package/lib/component/marker/MarkerView.js +10 -12
  78. package/lib/component/marker/markerHelper.js +1 -1
  79. package/lib/component/parallel.js +94 -29
  80. package/lib/component/polar.js +5 -0
  81. package/lib/component/timeline/SliderTimelineView.js +1 -1
  82. package/lib/component/toolbox/feature/Brush.js +7 -0
  83. package/lib/component/toolbox/feature/DataZoom.js +17 -4
  84. package/lib/component/tooltip/TooltipView.js +92 -20
  85. package/lib/component/visualMap/ContinuousView.js +6 -4
  86. package/lib/coord/Axis.js +34 -2
  87. package/lib/coord/axisDefault.js +4 -1
  88. package/lib/coord/axisHelper.js +32 -26
  89. package/lib/coord/axisModelCommonMixin.js +1 -1
  90. package/lib/coord/calendar/Calendar.js +14 -17
  91. package/lib/coord/calendar/prepareCustom.js +31 -0
  92. package/lib/coord/cartesian/Axis2D.js +0 -12
  93. package/lib/coord/cartesian/Cartesian2D.js +1 -0
  94. package/lib/coord/cartesian/Grid.js +5 -2
  95. package/lib/coord/cartesian/prepareCustom.js +36 -0
  96. package/lib/coord/geo/Geo.js +9 -14
  97. package/lib/coord/geo/GeoModel.js +5 -5
  98. package/lib/coord/geo/geoCreator.js +3 -3
  99. package/lib/coord/geo/parseGeoJson.js +11 -4
  100. package/lib/coord/geo/prepareCustom.js +36 -0
  101. package/lib/coord/parallel/Parallel.js +225 -101
  102. package/lib/coord/parallel/ParallelModel.js +7 -1
  103. package/lib/coord/polar/Polar.js +2 -1
  104. package/lib/coord/polar/prepareCustom.js +53 -0
  105. package/lib/coord/single/Single.js +9 -8
  106. package/lib/coord/single/SingleAxis.js +0 -27
  107. package/lib/coord/single/prepareCustom.js +33 -0
  108. package/lib/data/DataDiffer.js +2 -1
  109. package/lib/data/Graph.js +11 -7
  110. package/lib/data/List.js +59 -20
  111. package/lib/data/helper/completeDimensions.js +184 -23
  112. package/lib/echarts.js +68 -36
  113. package/lib/helper.js +1 -8
  114. package/lib/layout/barGrid.js +91 -19
  115. package/lib/layout/barPolar.js +286 -0
  116. package/lib/layout/points.js +22 -16
  117. package/lib/model/Global.js +34 -31
  118. package/lib/model/Series.js +41 -29
  119. package/lib/model/globalDefault.js +4 -1
  120. package/lib/model/mixin/colorPalette.js +2 -1
  121. package/lib/model/mixin/textStyle.js +7 -13
  122. package/lib/scale/Interval.js +46 -76
  123. package/lib/scale/Log.js +5 -7
  124. package/lib/scale/Scale.js +10 -1
  125. package/lib/scale/Time.js +34 -12
  126. package/lib/scale/helper.js +93 -0
  127. package/lib/util/format.js +20 -9
  128. package/lib/util/graphic.js +70 -8
  129. package/lib/util/layout.js +7 -3
  130. package/lib/util/model.js +63 -7
  131. package/lib/util/number.js +59 -19
  132. package/lib/util/throttle.js +14 -3
  133. package/map/js/world.js +1 -1
  134. package/map/json/world.json +1 -1
  135. package/package.json +3 -3
  136. package/src/ExtensionAPI.js +2 -4
  137. package/src/chart/bar/BarView.js +141 -49
  138. package/src/chart/bar/BaseBarSeries.js +2 -6
  139. package/src/chart/bar.js +1 -0
  140. package/src/chart/boxplot/BoxplotSeries.js +1 -1
  141. package/src/chart/boxplot/boxplotLayout.js +23 -7
  142. package/src/chart/candlestick/CandlestickSeries.js +3 -22
  143. package/src/chart/candlestick/candlestickLayout.js +23 -7
  144. package/src/chart/custom.js +442 -0
  145. package/src/chart/funnel/funnelLayout.js +10 -4
  146. package/src/chart/gauge/GaugeView.js +1 -1
  147. package/src/chart/graph/GraphView.js +15 -9
  148. package/src/chart/graph/categoryVisual.js +3 -2
  149. package/src/chart/heatmap/HeatmapLayer.js +1 -1
  150. package/src/chart/heatmap/HeatmapView.js +75 -73
  151. package/src/chart/helper/Symbol.js +8 -31
  152. package/src/chart/helper/createListFromArray.js +15 -10
  153. package/src/chart/helper/labelHelper.js +49 -0
  154. package/src/chart/helper/whiskerBoxCommon.js +25 -44
  155. package/src/chart/map/mapDataStatistic.js +9 -8
  156. package/src/chart/parallel/ParallelSeries.js +2 -0
  157. package/src/chart/parallel/ParallelView.js +13 -12
  158. package/src/chart/parallel/parallelVisual.js +9 -1
  159. package/src/chart/pie/pieLayout.js +25 -17
  160. package/src/chart/radar/RadarSeries.js +1 -1
  161. package/src/chart/sankey/sankeyLayout.js +1 -1
  162. package/src/chart/scatter/ScatterSeries.js +2 -3
  163. package/src/chart/themeRiver/ThemeRiverSeries.js +6 -5
  164. package/src/chart/themeRiver/themeRiverVisual.js +1 -1
  165. package/src/chart/treemap/TreemapSeries.js +3 -3
  166. package/src/chart/treemap/TreemapView.js +1 -1
  167. package/src/chart/treemap/treemapLayout.js +6 -1
  168. package/src/component/axis/AxisBuilder.js +53 -34
  169. package/src/component/axis/ParallelAxisView.js +45 -37
  170. package/src/component/axisPointer/AxisPointerModel.js +1 -1
  171. package/src/component/axisPointer/BaseAxisPointer.js +20 -15
  172. package/src/component/axisPointer/CartesianAxisPointer.js +9 -6
  173. package/src/component/axisPointer/PolarAxisPointer.js +10 -8
  174. package/src/component/axisPointer/SingleAxisPointer.js +11 -7
  175. package/src/component/axisPointer/axisTrigger.js +87 -72
  176. package/src/component/axisPointer/viewHelper.js +6 -3
  177. package/src/component/axisPointer.js +2 -2
  178. package/src/component/brush/BrushModel.js +6 -4
  179. package/src/component/brush/BrushView.js +1 -1
  180. package/src/component/brush/visualEncoding.js +6 -4
  181. package/src/component/calendar/CalendarView.js +5 -5
  182. package/src/component/dataZoom/AxisProxy.js +76 -13
  183. package/src/component/dataZoom/DataZoomModel.js +21 -5
  184. package/src/component/dataZoom/InsideZoomModel.js +4 -1
  185. package/src/component/dataZoom/InsideZoomView.js +17 -27
  186. package/src/component/dataZoom/SliderZoomView.js +63 -26
  187. package/src/component/dataZoom/roams.js +9 -4
  188. package/src/component/graphic.js +13 -12
  189. package/src/component/helper/BrushController.js +75 -114
  190. package/src/component/helper/BrushTargetManager.js +16 -8
  191. package/src/component/helper/MapDraw.js +25 -11
  192. package/src/component/helper/RoamController.js +111 -139
  193. package/src/component/helper/brushHelper.js +41 -0
  194. package/src/component/helper/cursorHelper.js +22 -0
  195. package/src/component/helper/roamHelper.js +55 -0
  196. package/src/component/helper/selectableMixin.js +7 -7
  197. package/src/component/helper/sliderMove.js +66 -37
  198. package/src/component/legend/LegendView.js +6 -6
  199. package/src/component/legend/legendAction.js +1 -1
  200. package/src/component/marker/MarkAreaView.js +3 -6
  201. package/src/component/marker/MarkLineView.js +3 -5
  202. package/src/component/marker/MarkPointView.js +3 -5
  203. package/src/component/marker/MarkerView.js +10 -12
  204. package/src/component/marker/markerHelper.js +1 -1
  205. package/src/component/parallel.js +94 -29
  206. package/src/component/polar.js +5 -0
  207. package/src/component/timeline/SliderTimelineView.js +1 -1
  208. package/src/component/toolbox/feature/Brush.js +7 -0
  209. package/src/component/toolbox/feature/DataZoom.js +17 -4
  210. package/src/component/tooltip/TooltipView.js +92 -20
  211. package/src/component/visualMap/ContinuousView.js +6 -4
  212. package/src/coord/Axis.js +34 -2
  213. package/src/coord/axisDefault.js +4 -1
  214. package/src/coord/axisHelper.js +32 -26
  215. package/src/coord/axisModelCommonMixin.js +1 -1
  216. package/src/coord/calendar/Calendar.js +14 -17
  217. package/src/coord/calendar/prepareCustom.js +32 -0
  218. package/src/coord/cartesian/Axis2D.js +0 -12
  219. package/src/coord/cartesian/Cartesian2D.js +1 -0
  220. package/src/coord/cartesian/Grid.js +5 -2
  221. package/src/coord/cartesian/prepareCustom.js +37 -0
  222. package/src/coord/geo/Geo.js +9 -14
  223. package/src/coord/geo/GeoModel.js +5 -5
  224. package/src/coord/geo/geoCreator.js +3 -3
  225. package/src/coord/geo/parseGeoJson.js +11 -4
  226. package/src/coord/geo/prepareCustom.js +37 -0
  227. package/src/coord/parallel/Parallel.js +225 -101
  228. package/src/coord/parallel/ParallelModel.js +7 -1
  229. package/src/coord/polar/Polar.js +2 -1
  230. package/src/coord/polar/prepareCustom.js +54 -0
  231. package/src/coord/single/Single.js +9 -8
  232. package/src/coord/single/SingleAxis.js +0 -27
  233. package/src/coord/single/prepareCustom.js +34 -0
  234. package/src/data/DataDiffer.js +2 -1
  235. package/src/data/Graph.js +11 -7
  236. package/src/data/List.js +59 -20
  237. package/src/data/helper/completeDimensions.js +184 -23
  238. package/src/echarts.js +68 -36
  239. package/src/helper.js +1 -8
  240. package/src/layout/barGrid.js +91 -19
  241. package/src/layout/barPolar.js +287 -0
  242. package/src/layout/points.js +22 -16
  243. package/src/model/Global.js +34 -31
  244. package/src/model/Series.js +41 -29
  245. package/src/model/globalDefault.js +4 -1
  246. package/src/model/mixin/colorPalette.js +2 -1
  247. package/src/model/mixin/textStyle.js +7 -13
  248. package/src/scale/Interval.js +46 -76
  249. package/src/scale/Log.js +5 -7
  250. package/src/scale/Scale.js +10 -1
  251. package/src/scale/Time.js +34 -12
  252. package/src/scale/helper.js +94 -0
  253. package/src/util/format.js +20 -9
  254. package/src/util/graphic.js +70 -8
  255. package/src/util/layout.js +7 -3
  256. package/src/util/model.js +63 -7
  257. package/src/util/number.js +59 -19
  258. package/src/util/throttle.js +14 -3
  259. package/src/coord/cartesian/axisLabelInterval.js +0 -26
  260. package/theme/default.js +0 -23
  261. package/theme/halloween.js +0 -528
@@ -45,19 +45,27 @@
45
45
 
46
46
  zrUtil.each(coordInfoList, function (coordInfo) {
47
47
  var coordModel = coordInfo.model;
48
+ var dataZoomOption = dataZoomModel.option;
48
49
 
49
50
  roams.register(
50
51
  api,
51
52
  {
52
53
  coordId: roams.generateCoordId(coordModel),
53
54
  allCoordIds: allCoordIds,
54
- containsPoint: function (x, y) {
55
+ containsPoint: function (e, x, y) {
55
56
  return coordModel.coordinateSystem.containPoint([x, y]);
56
57
  },
57
58
  dataZoomId: dataZoomModel.id,
58
59
  throttleRate: dataZoomModel.get('throttle', true),
59
60
  panGetRange: bind(this._onPan, this, coordInfo, coordSysName),
60
- zoomGetRange: bind(this._onZoom, this, coordInfo, coordSysName)
61
+ zoomGetRange: bind(this._onZoom, this, coordInfo, coordSysName),
62
+ zoomLock: dataZoomOption.zoomLock,
63
+ disabled: dataZoomOption.disabled,
64
+ roamControllerOpt: {
65
+ zoomOnMouseWheel: dataZoomOption.zoomOnMouseWheel,
66
+ moveOnMouseMove: dataZoomOption.moveOnMouseMove,
67
+ preventDefaultMouseMove: dataZoomOption.preventDefaultMouseMove
68
+ }
61
69
  }
62
70
  );
63
71
  }, this);
@@ -78,10 +86,6 @@
78
86
  * @private
79
87
  */
80
88
  _onPan: function (coordInfo, coordSysName, controller, dx, dy, oldX, oldY, newX, newY) {
81
- if (this.dataZoomModel.option.disabled) {
82
- return this._range;
83
- }
84
-
85
89
  var range = this._range.slice();
86
90
 
87
91
  // Calculate transform by the first axis.
@@ -98,7 +102,7 @@
98
102
  * (range[1] - range[0])
99
103
  * directionInfo.pixel / directionInfo.pixelLength;
100
104
 
101
- sliderMove(percentDelta, range, [0, 100], 'rigid');
105
+ sliderMove(percentDelta, range, [0, 100], 'all');
102
106
 
103
107
  return (this._range = range);
104
108
  },
@@ -107,12 +111,6 @@
107
111
  * @private
108
112
  */
109
113
  _onZoom: function (coordInfo, coordSysName, controller, scale, mouseX, mouseY) {
110
- var option = this.dataZoomModel.option;
111
-
112
- if (option.disabled || option.zoomLock) {
113
- return this._range;
114
- }
115
-
116
114
  var range = this._range.slice();
117
115
 
118
116
  // Calculate transform by the first axis.
@@ -131,7 +129,12 @@
131
129
  scale = Math.max(1 / scale, 0);
132
130
  range[0] = (range[0] - percentPoint) * scale + percentPoint;
133
131
  range[1] = (range[1] - percentPoint) * scale + percentPoint;
134
- return (this._range = fixRange(range));
132
+
133
+ // Restrict range.
134
+ var minMaxSpan = this.dataZoomModel.findRepresentativeAxisProxy().getMinMaxSpan();
135
+ sliderMove(0, range, [0, 100], 0, minMaxSpan.minSpan, minMaxSpan.maxSpan);
136
+
137
+ return (this._range = range);
135
138
  }
136
139
 
137
140
  });
@@ -214,17 +217,4 @@
214
217
  }
215
218
  };
216
219
 
217
- function fixRange(range) {
218
- // Clamp, using !(<= or >=) to handle NaN.
219
- // jshint ignore:start
220
- var bound = [0, 100];
221
- !(range[0] <= bound[1]) && (range[0] = bound[1]);
222
- !(range[1] <= bound[1]) && (range[1] = bound[1]);
223
- !(range[0] >= bound[0]) && (range[0] = bound[0]);
224
- !(range[1] >= bound[0]) && (range[1] = bound[0]);
225
- // jshint ignore:end
226
-
227
- return range;
228
- }
229
-
230
220
  module.exports = InsideZoomView;
@@ -248,11 +248,12 @@
248
248
  return [0, this._size[0]];
249
249
  },
250
250
 
251
- _renderBackground : function () {
251
+ _renderBackground: function () {
252
252
  var dataZoomModel = this.dataZoomModel;
253
253
  var size = this._size;
254
+ var barGroup = this._displayables.barGroup;
254
255
 
255
- this._displayables.barGroup.add(new Rect({
256
+ barGroup.add(new Rect({
256
257
  silent: true,
257
258
  shape: {
258
259
  x: 0, y: 0, width: size[0], height: size[1]
@@ -262,6 +263,18 @@
262
263
  },
263
264
  z2: -40
264
265
  }));
266
+
267
+ // Click panel, over shadow, below handles.
268
+ barGroup.add(new Rect({
269
+ shape: {
270
+ x: 0, y: 0, width: size[0], height: size[1]
271
+ },
272
+ style: {
273
+ fill: 'transparent'
274
+ },
275
+ z2: 0,
276
+ onclick: zrUtil.bind(this._onClickPanelClick, this)
277
+ }));
265
278
  },
266
279
 
267
280
  _renderDataShadow: function () {
@@ -450,7 +463,7 @@
450
463
 
451
464
  var iconStr = dataZoomModel.get('handleIcon');
452
465
  each([0, 1], function (handleIndex) {
453
- var path = graphic.makePath(iconStr, {
466
+ var iconOpt = {
454
467
  style: {
455
468
  strokeNoScale: true
456
469
  },
@@ -465,12 +478,21 @@
465
478
  ondragend: bind(this._onDragEnd, this),
466
479
  onmouseover: bind(this._showDataInfo, this, true),
467
480
  onmouseout: bind(this._showDataInfo, this, false)
468
- }, {
469
- x: -0.5,
470
- y: 0,
471
- width: 1,
472
- height: 1
473
- }, 'center');
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
+ );
474
496
 
475
497
  var bRect = path.getBoundingRect();
476
498
  this._handleHeight = numberUtil.parsePercent(dataZoomModel.get('handleSize'), this._size[1]);
@@ -520,25 +542,29 @@
520
542
  /**
521
543
  * @private
522
544
  * @param {(number|string)} handleIndex 0 or 1 or 'all'
523
- * @param {number} dx
524
- * @param {number} dy
545
+ * @param {number} delta
525
546
  */
526
547
  _updateInterval: function (handleIndex, delta) {
548
+ var dataZoomModel = this.dataZoomModel;
527
549
  var handleEnds = this._handleEnds;
528
550
  var viewExtend = this._getViewExtent();
551
+ var minMaxSpan = dataZoomModel.findRepresentativeAxisProxy().getMinMaxSpan();
552
+ var percentExtent = [0, 100];
529
553
 
530
554
  sliderMove(
531
555
  delta,
532
556
  handleEnds,
533
557
  viewExtend,
534
- (handleIndex === 'all' || this.dataZoomModel.get('zoomLock'))
535
- ? 'rigid' : 'cross',
536
- handleIndex
558
+ dataZoomModel.get('zoomLock') ? 'all' : handleIndex,
559
+ minMaxSpan.minSpan != null
560
+ ? linearMap(minMaxSpan.minSpan, percentExtent, viewExtend, true) : null,
561
+ minMaxSpan.maxSpan != null
562
+ ? linearMap(minMaxSpan.maxSpan, percentExtent, viewExtend, true) : null
537
563
  );
538
564
 
539
565
  this._range = asc([
540
- linearMap(handleEnds[0], viewExtend, [0, 100], true),
541
- linearMap(handleEnds[1], viewExtend, [0, 100], true)
566
+ linearMap(handleEnds[0], viewExtend, percentExtent, true),
567
+ linearMap(handleEnds[1], viewExtend, percentExtent, true)
542
568
  ]);
543
569
  },
544
570
 
@@ -556,7 +582,7 @@
556
582
  var handle = displaybles.handles[handleIndex];
557
583
  var handleHeight = this._handleHeight;
558
584
  handle.attr({
559
- scale: [handleHeight, handleHeight],
585
+ scale: [handleHeight / 2, handleHeight / 2],
560
586
  position: [handleEnds[handleIndex], size[1] / 2 - handleHeight / 2]
561
587
  });
562
588
  }, this);
@@ -682,7 +708,8 @@
682
708
  this._dragging = true;
683
709
 
684
710
  // Transform dx, dy to bar coordination.
685
- var vertex = this._applyBarTransform([dx, dy], true);
711
+ var barTransform = this._displayables.barGroup.getLocalTransform();
712
+ var vertex = graphic.applyTransform([dx, dy], barTransform, true);
686
713
 
687
714
  this._updateInterval(handleIndex, vertex[0]);
688
715
 
@@ -701,6 +728,24 @@
701
728
  this._dispatchZoomAction();
702
729
  },
703
730
 
731
+ _onClickPanelClick: function (e) {
732
+ var size = this._size;
733
+ var localPoint = this._displayables.barGroup.transformCoordToLocal(e.offsetX, e.offsetY);
734
+
735
+ if (localPoint[0] < 0 || localPoint[0] > size[0]
736
+ || localPoint[1] < 0 || localPoint[1] > size[1]
737
+ ) {
738
+ return;
739
+ }
740
+
741
+ var handleEnds = this._handleEnds;
742
+ var center = (handleEnds[0] + handleEnds[1]) / 2;
743
+
744
+ this._updateInterval('all', localPoint[0] - center);
745
+ this._updateView();
746
+ this._dispatchZoomAction();
747
+ },
748
+
704
749
  /**
705
750
  * This action will be throttled.
706
751
  * @private
@@ -717,14 +762,6 @@
717
762
  });
718
763
  },
719
764
 
720
- /**
721
- * @private
722
- */
723
- _applyBarTransform: function (vertex, inverse) {
724
- var barTransform = this._displayables.barGroup.getLocalTransform();
725
- return graphic.applyTransform(vertex, barTransform, inverse);
726
- },
727
-
728
765
  /**
729
766
  * @private
730
767
  */
@@ -29,6 +29,8 @@
29
29
  * @param {number} dataZoomInfo.throttleRate
30
30
  * @param {Function} dataZoomInfo.panGetRange
31
31
  * @param {Function} dataZoomInfo.zoomGetRange
32
+ * @param {boolean} [dataZoomInfo.zoomLock]
33
+ * @param {boolean} [dataZoomInfo.disabled]
32
34
  */
33
35
  register: function (api, dataZoomInfo) {
34
36
  var store = giveStore(api);
@@ -57,12 +59,16 @@
57
59
  dataZoomInfos: {},
58
60
  count: 0
59
61
  };
60
- record.controller = createController(api, dataZoomInfo, record);
62
+ record.controller = createController(api, record);
61
63
  record.dispatchAction = zrUtil.curry(dispatchAction, api);
62
64
  }
65
+ record.controller.enable(
66
+ dataZoomInfo.disabled ? false : dataZoomInfo.zoomLock ? 'move' : true,
67
+ dataZoomInfo.roamControllerOpt
68
+ );
63
69
 
64
70
  // Consider resize, area should be always updated.
65
- record.controller.setContainsPoint(dataZoomInfo.containsPoint);
71
+ record.controller.setPointerChecker(dataZoomInfo.containsPoint);
66
72
 
67
73
  // Update throttle.
68
74
  throttle.createOrUpdate(
@@ -130,9 +136,8 @@
130
136
  return zr[ATTR] || (zr[ATTR] = {});
131
137
  }
132
138
 
133
- function createController(api, dataZoomInfo, newRecord) {
139
+ function createController(api, newRecord) {
134
140
  var controller = new RoamController(api.getZr());
135
- controller.enable();
136
141
  controller.on('pan', curry(onPan, newRecord));
137
142
  controller.on('zoom', curry(onZoom, newRecord));
138
143
 
@@ -214,9 +214,9 @@
214
214
 
215
215
  /**
216
216
  * @private
217
- * @type {Object}
217
+ * @type {module:zrender/core/util.HashMap}
218
218
  */
219
- this._elMap = {};
219
+ this._elMap = zrUtil.createHashMap();
220
220
 
221
221
  /**
222
222
  * @private
@@ -270,9 +270,9 @@
270
270
  zrUtil.each(elOptionsToUpdate, function (elOption) {
271
271
  var $action = elOption.$action;
272
272
  var id = elOption.id;
273
- var existEl = elMap[id];
273
+ var existEl = elMap.get(id);
274
274
  var parentId = elOption.parentId;
275
- var targetElParent = parentId != null ? elMap[parentId] : rootGroup;
275
+ var targetElParent = parentId != null ? elMap.get(parentId) : rootGroup;
276
276
 
277
277
  // In top/bottom mode, textVertical should not be used. And textBaseline
278
278
  // should not be 'alphabetic', which cause inaccurately locating.
@@ -305,9 +305,10 @@
305
305
  removeEl(existEl, elMap);
306
306
  }
307
307
 
308
- if (elMap[id]) {
309
- elMap[id].__ecGraphicWidth = elOption.width;
310
- elMap[id].__ecGraphicHeight = elOption.height;
308
+ var el = elMap.get(id);
309
+ if (el) {
310
+ el.__ecGraphicWidth = elOption.width;
311
+ el.__ecGraphicHeight = elOption.height;
311
312
  }
312
313
  });
313
314
  },
@@ -327,7 +328,7 @@
327
328
  // Bottom-up tranvese all elements (consider ec resize) to locate elements.
328
329
  for (var i = elOptions.length - 1; i >= 0; i--) {
329
330
  var elOption = elOptions[i];
330
- var el = elMap[elOption.id];
331
+ var el = elMap.get(elOption.id);
331
332
 
332
333
  if (!el) {
333
334
  continue;
@@ -358,10 +359,10 @@
358
359
  */
359
360
  _clear: function () {
360
361
  var elMap = this._elMap;
361
- zrUtil.each(elMap, function (el) {
362
+ elMap.each(function (el) {
362
363
  removeEl(el, elMap);
363
364
  });
364
- this._elMap = {};
365
+ this._elMap = zrUtil.createHashMap();
365
366
  },
366
367
 
367
368
  /**
@@ -387,7 +388,7 @@
387
388
 
388
389
  var el = new Clz(elOption);
389
390
  targetElParent.add(el);
390
- elMap[id] = el;
391
+ elMap.set(id, el);
391
392
  el.__ecGraphicId = id;
392
393
  }
393
394
 
@@ -397,7 +398,7 @@
397
398
  existEl.type === 'group' && existEl.traverse(function (el) {
398
399
  removeEl(el, elMap);
399
400
  });
400
- delete elMap[existEl.__ecGraphicId];
401
+ elMap.removeKey(existEl.__ecGraphicId);
401
402
  existElParent.remove(existEl);
402
403
  }
403
404
  }