echarts 3.5.4 → 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 (190) hide show
  1. package/LICENSE +21 -18
  2. package/dist/echarts.common.js +10072 -9330
  3. package/dist/echarts.common.min.js +13 -13
  4. package/dist/echarts.js +13084 -11412
  5. package/dist/echarts.min.js +22 -21
  6. package/dist/echarts.simple.js +9454 -8889
  7. package/dist/echarts.simple.min.js +9 -10
  8. package/index.js +1 -0
  9. package/lib/chart/bar/BarView.js +141 -49
  10. package/lib/chart/bar/BaseBarSeries.js +2 -6
  11. package/lib/chart/bar.js +1 -0
  12. package/lib/chart/boxplot/BoxplotSeries.js +1 -1
  13. package/lib/chart/boxplot/boxplotLayout.js +23 -7
  14. package/lib/chart/candlestick/CandlestickSeries.js +1 -21
  15. package/lib/chart/candlestick/candlestickLayout.js +23 -7
  16. package/lib/chart/custom.js +442 -0
  17. package/lib/chart/graph/categoryVisual.js +3 -2
  18. package/lib/chart/heatmap/HeatmapView.js +75 -73
  19. package/lib/chart/helper/Symbol.js +8 -31
  20. package/lib/chart/helper/createListFromArray.js +15 -10
  21. package/lib/chart/helper/labelHelper.js +48 -0
  22. package/lib/chart/helper/whiskerBoxCommon.js +25 -44
  23. package/lib/chart/map/mapDataStatistic.js +9 -8
  24. package/lib/chart/pie/pieLayout.js +25 -17
  25. package/lib/chart/radar/RadarSeries.js +1 -1
  26. package/lib/chart/scatter/ScatterSeries.js +2 -3
  27. package/lib/chart/themeRiver/ThemeRiverSeries.js +6 -5
  28. package/lib/chart/themeRiver/themeRiverVisual.js +1 -1
  29. package/lib/chart/treemap/TreemapSeries.js +3 -3
  30. package/lib/component/axisPointer/BaseAxisPointer.js +7 -6
  31. package/lib/component/axisPointer/axisTrigger.js +62 -51
  32. package/lib/component/axisPointer.js +1 -2
  33. package/lib/component/calendar/CalendarView.js +5 -5
  34. package/lib/component/dataZoom/AxisProxy.js +76 -13
  35. package/lib/component/dataZoom/DataZoomModel.js +21 -5
  36. package/lib/component/dataZoom/InsideZoomModel.js +4 -1
  37. package/lib/component/dataZoom/InsideZoomView.js +16 -26
  38. package/lib/component/dataZoom/SliderZoomView.js +63 -26
  39. package/lib/component/dataZoom/roams.js +8 -3
  40. package/lib/component/graphic.js +13 -12
  41. package/lib/component/helper/BrushTargetManager.js +5 -5
  42. package/lib/component/helper/MapDraw.js +3 -3
  43. package/lib/component/helper/RoamController.js +43 -20
  44. package/lib/component/helper/brushHelper.js +2 -13
  45. package/lib/component/helper/selectableMixin.js +7 -7
  46. package/lib/component/helper/sliderMove.js +65 -36
  47. package/lib/component/legend/LegendView.js +6 -6
  48. package/lib/component/legend/legendAction.js +1 -1
  49. package/lib/component/marker/MarkAreaView.js +3 -6
  50. package/lib/component/marker/MarkLineView.js +3 -5
  51. package/lib/component/marker/MarkPointView.js +3 -5
  52. package/lib/component/marker/MarkerView.js +10 -12
  53. package/lib/component/polar.js +5 -0
  54. package/lib/component/timeline/SliderTimelineView.js +1 -1
  55. package/lib/component/toolbox/feature/DataZoom.js +14 -1
  56. package/lib/component/tooltip/TooltipView.js +3 -3
  57. package/lib/component/visualMap/ContinuousView.js +6 -4
  58. package/lib/coord/Axis.js +34 -2
  59. package/lib/coord/axisDefault.js +2 -1
  60. package/lib/coord/axisHelper.js +6 -25
  61. package/lib/coord/axisModelCommonMixin.js +1 -1
  62. package/lib/coord/calendar/Calendar.js +14 -17
  63. package/lib/coord/calendar/prepareCustom.js +31 -0
  64. package/lib/coord/cartesian/Axis2D.js +0 -12
  65. package/lib/coord/cartesian/Cartesian2D.js +1 -0
  66. package/lib/coord/cartesian/Grid.js +5 -2
  67. package/lib/coord/cartesian/prepareCustom.js +36 -0
  68. package/lib/coord/geo/Geo.js +9 -14
  69. package/lib/coord/geo/GeoModel.js +5 -5
  70. package/lib/coord/geo/geoCreator.js +3 -3
  71. package/lib/coord/geo/prepareCustom.js +36 -0
  72. package/lib/coord/parallel/Parallel.js +12 -11
  73. package/lib/coord/polar/Polar.js +2 -1
  74. package/lib/coord/polar/prepareCustom.js +53 -0
  75. package/lib/coord/single/Single.js +9 -8
  76. package/lib/coord/single/SingleAxis.js +0 -27
  77. package/lib/coord/single/prepareCustom.js +33 -0
  78. package/lib/data/DataDiffer.js +2 -1
  79. package/lib/data/Graph.js +11 -7
  80. package/lib/data/List.js +58 -19
  81. package/lib/data/helper/completeDimensions.js +184 -23
  82. package/lib/echarts.js +38 -33
  83. package/lib/helper.js +1 -8
  84. package/lib/layout/barGrid.js +87 -18
  85. package/lib/layout/barPolar.js +286 -0
  86. package/lib/layout/points.js +22 -16
  87. package/lib/model/Global.js +34 -31
  88. package/lib/model/Series.js +41 -29
  89. package/lib/model/mixin/colorPalette.js +2 -1
  90. package/lib/model/mixin/textStyle.js +7 -13
  91. package/lib/scale/Interval.js +21 -14
  92. package/lib/scale/Log.js +5 -7
  93. package/lib/scale/Time.js +13 -7
  94. package/lib/scale/helper.js +5 -1
  95. package/lib/util/format.js +12 -0
  96. package/lib/util/graphic.js +53 -1
  97. package/lib/util/model.js +63 -7
  98. package/map/js/world.js +1 -1
  99. package/map/json/world.json +1 -1
  100. package/package.json +3 -3
  101. package/src/chart/bar/BarView.js +141 -49
  102. package/src/chart/bar/BaseBarSeries.js +2 -6
  103. package/src/chart/bar.js +1 -0
  104. package/src/chart/boxplot/BoxplotSeries.js +1 -1
  105. package/src/chart/boxplot/boxplotLayout.js +23 -7
  106. package/src/chart/candlestick/CandlestickSeries.js +1 -21
  107. package/src/chart/candlestick/candlestickLayout.js +23 -7
  108. package/src/chart/custom.js +442 -0
  109. package/src/chart/graph/categoryVisual.js +3 -2
  110. package/src/chart/heatmap/HeatmapView.js +75 -73
  111. package/src/chart/helper/Symbol.js +8 -31
  112. package/src/chart/helper/createListFromArray.js +15 -10
  113. package/src/chart/helper/labelHelper.js +49 -0
  114. package/src/chart/helper/whiskerBoxCommon.js +25 -44
  115. package/src/chart/map/mapDataStatistic.js +9 -8
  116. package/src/chart/pie/pieLayout.js +25 -17
  117. package/src/chart/radar/RadarSeries.js +1 -1
  118. package/src/chart/scatter/ScatterSeries.js +2 -3
  119. package/src/chart/themeRiver/ThemeRiverSeries.js +6 -5
  120. package/src/chart/themeRiver/themeRiverVisual.js +1 -1
  121. package/src/chart/treemap/TreemapSeries.js +3 -3
  122. package/src/component/axisPointer/BaseAxisPointer.js +7 -6
  123. package/src/component/axisPointer/axisTrigger.js +62 -51
  124. package/src/component/axisPointer.js +1 -2
  125. package/src/component/calendar/CalendarView.js +5 -5
  126. package/src/component/dataZoom/AxisProxy.js +76 -13
  127. package/src/component/dataZoom/DataZoomModel.js +21 -5
  128. package/src/component/dataZoom/InsideZoomModel.js +4 -1
  129. package/src/component/dataZoom/InsideZoomView.js +16 -26
  130. package/src/component/dataZoom/SliderZoomView.js +63 -26
  131. package/src/component/dataZoom/roams.js +8 -3
  132. package/src/component/graphic.js +13 -12
  133. package/src/component/helper/BrushTargetManager.js +5 -5
  134. package/src/component/helper/MapDraw.js +3 -3
  135. package/src/component/helper/RoamController.js +43 -20
  136. package/src/component/helper/brushHelper.js +2 -13
  137. package/src/component/helper/selectableMixin.js +7 -7
  138. package/src/component/helper/sliderMove.js +65 -36
  139. package/src/component/legend/LegendView.js +6 -6
  140. package/src/component/legend/legendAction.js +1 -1
  141. package/src/component/marker/MarkAreaView.js +3 -6
  142. package/src/component/marker/MarkLineView.js +3 -5
  143. package/src/component/marker/MarkPointView.js +3 -5
  144. package/src/component/marker/MarkerView.js +10 -12
  145. package/src/component/polar.js +5 -0
  146. package/src/component/timeline/SliderTimelineView.js +1 -1
  147. package/src/component/toolbox/feature/DataZoom.js +14 -1
  148. package/src/component/tooltip/TooltipView.js +3 -3
  149. package/src/component/visualMap/ContinuousView.js +6 -4
  150. package/src/coord/Axis.js +34 -2
  151. package/src/coord/axisDefault.js +2 -1
  152. package/src/coord/axisHelper.js +6 -25
  153. package/src/coord/axisModelCommonMixin.js +1 -1
  154. package/src/coord/calendar/Calendar.js +14 -17
  155. package/src/coord/calendar/prepareCustom.js +32 -0
  156. package/src/coord/cartesian/Axis2D.js +0 -12
  157. package/src/coord/cartesian/Cartesian2D.js +1 -0
  158. package/src/coord/cartesian/Grid.js +5 -2
  159. package/src/coord/cartesian/prepareCustom.js +37 -0
  160. package/src/coord/geo/Geo.js +9 -14
  161. package/src/coord/geo/GeoModel.js +5 -5
  162. package/src/coord/geo/geoCreator.js +3 -3
  163. package/src/coord/geo/prepareCustom.js +37 -0
  164. package/src/coord/parallel/Parallel.js +12 -11
  165. package/src/coord/polar/Polar.js +2 -1
  166. package/src/coord/polar/prepareCustom.js +54 -0
  167. package/src/coord/single/Single.js +9 -8
  168. package/src/coord/single/SingleAxis.js +0 -27
  169. package/src/coord/single/prepareCustom.js +34 -0
  170. package/src/data/DataDiffer.js +2 -1
  171. package/src/data/Graph.js +11 -7
  172. package/src/data/List.js +58 -19
  173. package/src/data/helper/completeDimensions.js +184 -23
  174. package/src/echarts.js +38 -33
  175. package/src/helper.js +1 -8
  176. package/src/layout/barGrid.js +87 -18
  177. package/src/layout/barPolar.js +287 -0
  178. package/src/layout/points.js +22 -16
  179. package/src/model/Global.js +34 -31
  180. package/src/model/Series.js +41 -29
  181. package/src/model/mixin/colorPalette.js +2 -1
  182. package/src/model/mixin/textStyle.js +7 -13
  183. package/src/scale/Interval.js +21 -14
  184. package/src/scale/Log.js +5 -7
  185. package/src/scale/Time.js +13 -7
  186. package/src/scale/helper.js +5 -1
  187. package/src/util/format.js +12 -0
  188. package/src/util/graphic.js +53 -1
  189. package/src/util/model.js +63 -7
  190. package/src/coord/cartesian/axisLabelInterval.js +0 -26
@@ -63,7 +63,7 @@ define(function (require) {
63
63
  ? 'right' : 'left';
64
64
  }
65
65
 
66
- var legendDrawedMap = {};
66
+ var legendDrawedMap = zrUtil.createHashMap();
67
67
 
68
68
  zrUtil.each(legendModel.getData(), function (itemModel) {
69
69
  var name = itemModel.get('name');
@@ -78,7 +78,7 @@ define(function (require) {
78
78
 
79
79
  var seriesModel = ecModel.getSeriesByName(name)[0];
80
80
 
81
- if (legendDrawedMap[name]) {
81
+ if (legendDrawedMap.get(name)) {
82
82
  // Have been drawed
83
83
  return;
84
84
  }
@@ -109,13 +109,13 @@ define(function (require) {
109
109
  .on('mouseover', curry(dispatchHighlightAction, seriesModel, null, api))
110
110
  .on('mouseout', curry(dispatchDownplayAction, seriesModel, null, api));
111
111
 
112
- legendDrawedMap[name] = true;
112
+ legendDrawedMap.set(name, true);
113
113
  }
114
114
  else {
115
115
  // Data legend of pie, funnel
116
116
  ecModel.eachRawSeries(function (seriesModel) {
117
117
  // In case multiple series has same data name
118
- if (legendDrawedMap[name]) {
118
+ if (legendDrawedMap.get(name)) {
119
119
  return;
120
120
  }
121
121
  if (seriesModel.legendDataProvider) {
@@ -141,13 +141,13 @@ define(function (require) {
141
141
  .on('mouseover', curry(dispatchHighlightAction, seriesModel, name, api))
142
142
  .on('mouseout', curry(dispatchDownplayAction, seriesModel, name, api));
143
143
 
144
- legendDrawedMap[name] = true;
144
+ legendDrawedMap.set(name, true);
145
145
  }
146
146
  }, this);
147
147
  }
148
148
 
149
149
  if (__DEV__) {
150
- if (!legendDrawedMap[name]) {
150
+ if (!legendDrawedMap.get(name)) {
151
151
  console.warn(name + ' series not exists. Legend data should be same with series name or data name.');
152
152
  }
153
153
  }
@@ -31,7 +31,7 @@ define(function(require) {
31
31
  return;
32
32
  }
33
33
  var isItemSelected = legendModel.isSelected(name);
34
- if (name in selectedMap) {
34
+ if (selectedMap.hasOwnProperty(name)) {
35
35
  // Unselected if any legend is unselected
36
36
  selectedMap[name] = selectedMap[name] && isItemSelected;
37
37
  }
@@ -155,12 +155,9 @@ define(function (require) {
155
155
  var seriesData = seriesModel.getData();
156
156
 
157
157
  var areaGroupMap = this.markerGroupMap;
158
- var polygonGroup = areaGroupMap[seriesName];
159
- if (!polygonGroup) {
160
- polygonGroup = areaGroupMap[seriesName] = {
161
- group: new graphic.Group()
162
- };
163
- }
158
+ var polygonGroup = areaGroupMap.get(seriesName)
159
+ || areaGroupMap.set(seriesName, {group: new graphic.Group()});
160
+
164
161
  this.group.add(polygonGroup.group);
165
162
  polygonGroup.__keep = true;
166
163
 
@@ -200,7 +200,7 @@ define(function (require) {
200
200
  ]);
201
201
  });
202
202
 
203
- this.markerGroupMap[seriesModel.name].updateLayout();
203
+ this.markerGroupMap.get(seriesModel.name).updateLayout();
204
204
 
205
205
  }
206
206
  }, this);
@@ -212,10 +212,8 @@ define(function (require) {
212
212
  var seriesData = seriesModel.getData();
213
213
 
214
214
  var lineDrawMap = this.markerGroupMap;
215
- var lineDraw = lineDrawMap[seriesName];
216
- if (!lineDraw) {
217
- lineDraw = lineDrawMap[seriesName] = new LineDraw();
218
- }
215
+ var lineDraw = lineDrawMap.get(seriesName)
216
+ || lineDrawMap.set(seriesName, new LineDraw());
219
217
  this.group.add(lineDraw.group);
220
218
 
221
219
  var mlData = createList(coordSys, seriesModel, mlModel);
@@ -53,7 +53,7 @@ define(function (require) {
53
53
  var mpModel = seriesModel.markPointModel;
54
54
  if (mpModel) {
55
55
  updateMarkerLayout(mpModel.getData(), seriesModel, api);
56
- this.markerGroupMap[seriesModel.name].updateLayout(mpModel);
56
+ this.markerGroupMap.get(seriesModel.name).updateLayout(mpModel);
57
57
  }
58
58
  }, this);
59
59
  },
@@ -64,10 +64,8 @@ define(function (require) {
64
64
  var seriesData = seriesModel.getData();
65
65
 
66
66
  var symbolDrawMap = this.markerGroupMap;
67
- var symbolDraw = symbolDrawMap[seriesName];
68
- if (!symbolDraw) {
69
- symbolDraw = symbolDrawMap[seriesName] = new SymbolDraw();
70
- }
67
+ var symbolDraw = symbolDrawMap.get(seriesName)
68
+ || symbolDrawMap.set(seriesName, new SymbolDraw());
71
69
 
72
70
  var mpData = createList(coordSys, seriesModel, mpModel);
73
71
 
@@ -1,5 +1,7 @@
1
1
  define(function (require) {
2
2
 
3
+ var zrUtil = require('zrender/core/util');
4
+
3
5
  return require('../../echarts').extendComponentView({
4
6
 
5
7
  type: 'marker',
@@ -8,18 +10,16 @@ define(function (require) {
8
10
  /**
9
11
  * Markline grouped by series
10
12
  * @private
11
- * @type {Object}
13
+ * @type {module:zrender/core/util.HashMap}
12
14
  */
13
- this.markerGroupMap = {};
15
+ this.markerGroupMap = zrUtil.createHashMap();
14
16
  },
15
17
 
16
18
  render: function (markerModel, ecModel, api) {
17
19
  var markerGroupMap = this.markerGroupMap;
18
- for (var name in markerGroupMap) {
19
- if (markerGroupMap.hasOwnProperty(name)) {
20
- markerGroupMap[name].__keep = false;
21
- }
22
- }
20
+ markerGroupMap.each(function (item) {
21
+ item.__keep = false;
22
+ });
23
23
 
24
24
  var markerModelKey = this.type + 'Model';
25
25
  ecModel.eachSeries(function (seriesModel) {
@@ -27,11 +27,9 @@ define(function (require) {
27
27
  markerModel && this.renderSeries(seriesModel, markerModel, ecModel, api);
28
28
  }, this);
29
29
 
30
- for (var name in markerGroupMap) {
31
- if (markerGroupMap.hasOwnProperty(name) && !markerGroupMap[name].__keep) {
32
- this.group.remove(markerGroupMap[name].group);
33
- }
34
- }
30
+ markerGroupMap.each(function (item) {
31
+ !item.__keep && this.group.remove(item.group);
32
+ }, this);
35
33
  },
36
34
 
37
35
  renderSeries: function () {}
@@ -1,6 +1,8 @@
1
1
  define(function(require) {
2
2
  'use strict';
3
3
 
4
+ var zrUtil = require('zrender/core/util');
5
+
4
6
  require('../coord/polar/polarCreator');
5
7
  require('./angleAxis');
6
8
  require('./radiusAxis');
@@ -8,6 +10,9 @@ define(function(require) {
8
10
 
9
11
  require('./axisPointer/PolarAxisPointer');
10
12
 
13
+ // For reducing size of echarts.min, barLayoutPolar is required by polar.
14
+ require('../echarts').registerLayout(zrUtil.curry(require('../layout/barPolar'), 'bar'));
15
+
11
16
  // Polar view
12
17
  require('../echarts').extendComponentView({
13
18
  type: 'polar'
@@ -47,7 +47,7 @@ define(function (require) {
47
47
  this._timer;
48
48
 
49
49
  /**
50
- * @type {module:zrende/Element}
50
+ * @type {module:zrender/Element}
51
51
  */
52
52
  this._currentPointer;
53
53
 
@@ -5,6 +5,7 @@ define(function(require) {
5
5
  var BrushController = require('../../helper/BrushController');
6
6
  var BrushTargetManager = require('../../helper/BrushTargetManager');
7
7
  var history = require('../../dataZoom/history');
8
+ var sliderMove = require('../../helper/sliderMove');
8
9
 
9
10
  var each = zrUtil.each;
10
11
 
@@ -122,7 +123,19 @@ define(function(require) {
122
123
  this._dispatchZoomAction(snapshot);
123
124
 
124
125
  function setBatch(dimName, coordSys, minMax) {
125
- var dataZoomModel = findDataZoom(dimName, coordSys.getAxis(dimName).model, ecModel);
126
+ var axis = coordSys.getAxis(dimName);
127
+ var axisModel = axis.model;
128
+ var dataZoomModel = findDataZoom(dimName, axisModel, ecModel);
129
+
130
+ // Restrict range.
131
+ var minMaxSpan = dataZoomModel.findRepresentativeAxisProxy(axisModel).getMinMaxSpan();
132
+ if (minMaxSpan.minValueSpan != null || minMaxSpan.maxValueSpan != null) {
133
+ minMax = sliderMove(
134
+ 0, minMax.slice(), axis.scale.getExtent(), 0,
135
+ minMaxSpan.minValueSpan, minMaxSpan.maxValueSpan
136
+ );
137
+ }
138
+
126
139
  dataZoomModel && (snapshot[dataZoomModel.id] = {
127
140
  dataZoomId: dataZoomModel.id,
128
141
  startValue: minMax[0],
@@ -613,13 +613,13 @@ define(function (require) {
613
613
  var contentNotChanged = !!lastCoordSys
614
614
  && lastCoordSys.length === dataByCoordSys.length;
615
615
 
616
- each(lastCoordSys, function (lastItemCoordSys, indexCoordSys) {
616
+ contentNotChanged && each(lastCoordSys, function (lastItemCoordSys, indexCoordSys) {
617
617
  var lastDataByAxis = lastItemCoordSys.dataByAxis || {};
618
618
  var thisItemCoordSys = dataByCoordSys[indexCoordSys] || {};
619
619
  var thisDataByAxis = thisItemCoordSys.dataByAxis || [];
620
620
  contentNotChanged &= lastDataByAxis.length === thisDataByAxis.length;
621
621
 
622
- each(lastDataByAxis, function (lastItem, indexAxis) {
622
+ contentNotChanged && each(lastDataByAxis, function (lastItem, indexAxis) {
623
623
  var thisItem = thisDataByAxis[indexAxis] || {};
624
624
  var lastIndices = lastItem.seriesDataIndices || [];
625
625
  var newIndices = thisItem.seriesDataIndices || [];
@@ -630,7 +630,7 @@ define(function (require) {
630
630
  && lastItem.axisId === thisItem.axisId
631
631
  && lastIndices.length === newIndices.length;
632
632
 
633
- each(lastIndices, function (lastIdxItem, j) {
633
+ contentNotChanged && each(lastIndices, function (lastIdxItem, j) {
634
634
  var newIdxItem = newIndices[j];
635
635
  contentNotChanged &=
636
636
  lastIdxItem.seriesIndex === newIdxItem.seriesIndex
@@ -355,16 +355,18 @@ define(function(require) {
355
355
  delta = delta || 0;
356
356
  var visualMapModel = this.visualMapModel;
357
357
  var handleEnds = this._handleEnds;
358
+ var sizeExtent = [0, visualMapModel.itemSize[1]];
358
359
 
359
360
  sliderMove(
360
361
  delta,
361
362
  handleEnds,
362
- [0, visualMapModel.itemSize[1]],
363
- handleIndex === 'all' ? 'rigid' : 'push',
364
- handleIndex
363
+ sizeExtent,
364
+ handleIndex,
365
+ // cross is forbiden
366
+ 0
365
367
  );
368
+
366
369
  var dataExtent = visualMapModel.getExtent();
367
- var sizeExtent = [0, visualMapModel.itemSize[1]];
368
370
  // Update data interval.
369
371
  this._dataInterval = [
370
372
  linearMap(handleEnds[0], sizeExtent, dataExtent, true),
package/src/coord/Axis.js CHANGED
@@ -3,6 +3,7 @@ define(function (require) {
3
3
  var numberUtil = require('../util/number');
4
4
  var linearMap = numberUtil.linearMap;
5
5
  var zrUtil = require('zrender/core/util');
6
+ var axisHelper = require('./axisHelper');
6
7
 
7
8
  function fixExtentWithBands(extent, nTick) {
8
9
  var size = extent[1] - extent[0];
@@ -47,6 +48,12 @@ define(function (require) {
47
48
  * @type {boolean}
48
49
  */
49
50
  this.onBand = false;
51
+
52
+ /**
53
+ * @private
54
+ * @type {number}
55
+ */
56
+ this._labelInterval;
50
57
  };
51
58
 
52
59
  Axis.prototype = {
@@ -79,8 +86,7 @@ define(function (require) {
79
86
  * @return {Array.<number>}
80
87
  */
81
88
  getExtent: function () {
82
- var ret = this._extent.slice();
83
- return ret;
89
+ return this._extent.slice();
84
90
  },
85
91
 
86
92
  /**
@@ -224,6 +230,32 @@ define(function (require) {
224
230
  var size = Math.abs(axisExtent[1] - axisExtent[0]);
225
231
 
226
232
  return Math.abs(size) / len;
233
+ },
234
+
235
+ /**
236
+ * Get interval of the axis label.
237
+ * @return {number}
238
+ */
239
+ getLabelInterval: function () {
240
+ var labelInterval = this._labelInterval;
241
+ if (!labelInterval) {
242
+ var axisModel = this.model;
243
+ var labelModel = axisModel.getModel('axisLabel');
244
+ var interval = labelModel.get('interval');
245
+ if (!(this.type === 'category' && interval === 'auto')) {
246
+ labelInterval = interval === 'auto' ? 0 : interval;
247
+ }
248
+ else if (this.isHorizontal){
249
+ labelInterval = axisHelper.getAxisLabelInterval(
250
+ zrUtil.map(this.scale.getTicks(), this.dataToCoord, this),
251
+ axisModel.getFormattedLabels(),
252
+ labelModel.getModel('textStyle').getFont(),
253
+ this.isHorizontal()
254
+ );
255
+ }
256
+ this._labelInterval = labelInterval;
257
+ }
258
+ return labelInterval;
227
259
  }
228
260
 
229
261
  };
@@ -142,10 +142,11 @@ define(function (require) {
142
142
  min: 'dataMin',
143
143
  max: 'dataMax'
144
144
  }, valueAxis);
145
+
145
146
  var logAxis = zrUtil.defaults({
147
+ scale: true,
146
148
  logBase: 10
147
149
  }, valueAxis);
148
- logAxis.scale = true;
149
150
 
150
151
  return {
151
152
  categoryAxis: categoryAxis,
@@ -114,31 +114,12 @@ define(function (require) {
114
114
  }
115
115
 
116
116
  scale.setExtent(extent[0], extent[1]);
117
- scale.niceExtent(splitNumber, fixMin, fixMax);
118
-
119
- // Use minInterval to constraint the calculated interval.
120
- // If calculated interval is less than minInterval. increase the interval quantity until
121
- // it is larger than minInterval.
122
- // For example:
123
- // minInterval is 1, calculated interval is 0.2, so increase it to be 1. In this way we can get
124
- // an integer axis.
125
- var minInterval = model.get('minInterval');
126
- if (isFinite(minInterval) && !fixMin && !fixMax && scale.type === 'interval') {
127
- var interval = scale.getInterval();
128
- var intervalScale = Math.max(Math.abs(interval), minInterval) / interval;
129
- // while (interval < minInterval) {
130
- // var quantity = numberUtil.quantity(interval);
131
- // interval = quantity * 10;
132
- // scaleQuantity *= 10;
133
- // }
134
- extent = scale.getExtent();
135
- var origin = (extent[1] + extent[0]) / 2;
136
- scale.setExtent(
137
- intervalScale * (extent[0] - origin) + origin,
138
- intervalScale * (extent[1] - origin) + origin
139
- );
140
- scale.niceExtent(splitNumber);
141
- }
117
+ scale.niceExtent({
118
+ splitNumber: splitNumber,
119
+ fixMin: fixMin,
120
+ fixMax: fixMax,
121
+ minInterval: scale.type === 'interval' ? model.get('minInterval') : null
122
+ });
142
123
 
143
124
  // If some one specified the min, max. And the default calculated interval
144
125
  // is not good enough. He can specify the interval. It is often appeared
@@ -8,7 +8,7 @@ define(function (require) {
8
8
  return obj.value;
9
9
  }
10
10
  else {
11
- return obj;
11
+ return obj + '';
12
12
  }
13
13
  }
14
14
 
@@ -35,7 +35,7 @@ define(function (require) {
35
35
  return [{name: 'time', type: 'time'}];
36
36
  },
37
37
 
38
- getHandledRangeInfo: function () {
38
+ getRangeInfo: function () {
39
39
  return this._rangeInfo;
40
40
  },
41
41
 
@@ -161,18 +161,20 @@ define(function (require) {
161
161
  * Convert a time data(time, value) item to (x, y) point.
162
162
  *
163
163
  * @override
164
- * @param {Array} data data
165
- * @param {boolean} noClip out of range
166
- * @return {Array} point
164
+ * @param {Array|number} data data
165
+ * @param {boolean} [clamp=true] out of range
166
+ * @return {Array} point
167
167
  */
168
- dataToPoint: function (data, noClip) {
168
+ dataToPoint: function (data, clamp) {
169
+ zrUtil.isArray(data) && (data = data[0]);
170
+ clamp == null && (clamp = true);
169
171
 
170
- var dayInfo = this.getDateInfo(data[0]);
172
+ var dayInfo = this.getDateInfo(data);
171
173
  var range = this._rangeInfo;
172
174
  var date = dayInfo.formatedDate;
173
175
 
174
176
  // if not in range return [NaN, NaN]
175
- if (!noClip && !(dayInfo.time >= range.start.time && dayInfo.time <= range.end.time)) {
177
+ if (clamp && !(dayInfo.time >= range.start.time && dayInfo.time <= range.end.time)) {
176
178
  return [NaN, NaN];
177
179
  }
178
180
 
@@ -212,12 +214,11 @@ define(function (require) {
212
214
  * Convert a time date item to (x, y) four point.
213
215
  *
214
216
  * @param {Array} data date[0] is date
215
- * @param {boolean} noClip out of range
217
+ * @param {boolean} [clamp=true] out of range
216
218
  * @return {Object} point
217
219
  */
218
- dataToRect: function (data, noClip) {
219
-
220
- var point = this.dataToPoint(data, noClip);
220
+ dataToRect: function (data, clamp) {
221
+ var point = this.dataToPoint(data, clamp);
221
222
 
222
223
  return {
223
224
  contentShape: {
@@ -271,16 +272,12 @@ define(function (require) {
271
272
  },
272
273
 
273
274
  /**
274
- * @override
275
- * @implements
276
- * see {module:echarts/CoodinateSystem}
275
+ * @inheritDoc
277
276
  */
278
277
  convertToPixel: zrUtil.curry(doConvert, 'dataToPoint'),
279
278
 
280
279
  /**
281
- * @override
282
- * @implements
283
- * see {module:echarts/CoodinateSystem}
280
+ * @inheritDoc
284
281
  */
285
282
  convertFromPixel: zrUtil.curry(doConvert, 'pointToData'),
286
283
 
@@ -0,0 +1,32 @@
1
+ define(function(require) {
2
+
3
+ var zrUtil = require('zrender/core/util');
4
+
5
+ function prepareCustom(coordSys) {
6
+ var rect = coordSys.getRect();
7
+ var rangeInfo = coordSys.getRangeInfo();
8
+
9
+ return {
10
+ coordSys: {
11
+ type: 'calendar',
12
+ x: rect.x,
13
+ y: rect.y,
14
+ width: rect.width,
15
+ height: rect.height,
16
+ cellWidth: coordSys.getCellWidth(),
17
+ cellHeight: coordSys.getCellHeight(),
18
+ rangeInfo: {
19
+ start: rangeInfo.start,
20
+ end: rangeInfo.end,
21
+ weeks: rangeInfo.weeks,
22
+ dayCount: rangeInfo.allDay
23
+ }
24
+ },
25
+ api: {
26
+ coord: zrUtil.bind(coordSys.dataToPoint, coordSys)
27
+ }
28
+ };
29
+ }
30
+
31
+ return prepareCustom;
32
+ });
@@ -2,7 +2,6 @@ define(function (require) {
2
2
 
3
3
  var zrUtil = require('zrender/core/util');
4
4
  var Axis = require('../Axis');
5
- var axisLabelInterval = require('./axisLabelInterval');
6
5
 
7
6
  /**
8
7
  * Extend axis 2d
@@ -81,17 +80,6 @@ define(function (require) {
81
80
  this.grid.getOtherAxis();
82
81
  },
83
82
 
84
- /**
85
- * @return {number}
86
- */
87
- getLabelInterval: function () {
88
- var labelInterval = this._labelInterval;
89
- if (!labelInterval) {
90
- labelInterval = this._labelInterval = axisLabelInterval(this);
91
- }
92
- return labelInterval;
93
- },
94
-
95
83
  /**
96
84
  * If label is ignored.
97
85
  * Automatically used when axis is category and label can not be all shown
@@ -104,6 +104,7 @@ define(function(require) {
104
104
  getOtherAxis: function (axis) {
105
105
  return this.getAxis(axis.dim === 'x' ? 'y' : 'x');
106
106
  }
107
+
107
108
  };
108
109
 
109
110
  zrUtil.inherits(Cartesian2D, Cartesian);
@@ -100,7 +100,9 @@ define(function(require, factory) {
100
100
  for (var idx in axes) {
101
101
  if (axes.hasOwnProperty(idx)) {
102
102
  var axis = axes[idx];
103
- if (axis && (axis.type === 'category' || !ifAxisCrossZero(axis))) {
103
+ if (axis && (
104
+ axis.type === 'category' || axis.type === 'time' || !ifAxisCrossZero(axis)
105
+ )) {
104
106
  return true;
105
107
  }
106
108
  }
@@ -555,7 +557,8 @@ define(function(require, factory) {
555
557
  ecModel.eachComponent('grid', function (gridModel, idx) {
556
558
  var grid = new Grid(gridModel, ecModel, api);
557
559
  grid.name = 'grid_' + idx;
558
- grid.resize(gridModel, api);
560
+ // Postpone `resize` to `update`.
561
+ // grid.resize(gridModel, api);
559
562
 
560
563
  gridModel.coordinateSystem = grid;
561
564
 
@@ -0,0 +1,37 @@
1
+ define(function(require) {
2
+
3
+ var zrUtil = require('zrender/core/util');
4
+
5
+ function dataToCoordSize(dataSize, dataItem) {
6
+ // dataItem is necessary in log axis.
7
+ dataItem = dataItem || [0, 0];
8
+ return zrUtil.map(['x', 'y'], function (dim, dimIdx) {
9
+ var axis = this.getAxis(dim);
10
+ var val = dataItem[dimIdx];
11
+ var halfSize = dataSize[dimIdx] / 2;
12
+ return axis.type === 'category'
13
+ ? axis.getBandWidth()
14
+ : Math.abs(axis.dataToCoord(val - halfSize) - axis.dataToCoord(val + halfSize));
15
+ }, this);
16
+ }
17
+
18
+ function prepareCustom(coordSys) {
19
+ var rect = coordSys.grid.getRect();
20
+ return {
21
+ coordSys: {
22
+ // The name exposed to user is always 'cartesian2d' but not 'grid'.
23
+ type: 'cartesian2d',
24
+ x: rect.x,
25
+ y: rect.y,
26
+ width: rect.width,
27
+ height: rect.height
28
+ },
29
+ api: {
30
+ coord: zrUtil.bind(coordSys.dataToPoint, coordSys),
31
+ size: zrUtil.bind(dataToCoordSize, coordSys)
32
+ }
33
+ };
34
+ }
35
+
36
+ return prepareCustom;
37
+ });