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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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
 
2
2
 
3
+ var zrUtil = require('zrender/lib/core/util');
4
+
3
5
  module.exports = require('../../echarts').extendComponentView({
4
6
 
5
7
  type: 'marker',
@@ -8,18 +10,16 @@
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 @@
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
  'use strict';
2
2
 
3
3
 
4
+ var zrUtil = require('zrender/lib/core/util');
5
+
4
6
  require('../coord/polar/polarCreator');
5
7
  require('./angleAxis');
6
8
  require('./radiusAxis');
@@ -8,6 +10,9 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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/lib/coord/Axis.js CHANGED
@@ -3,6 +3,7 @@
3
3
  var numberUtil = require('../util/number');
4
4
  var linearMap = numberUtil.linearMap;
5
5
  var zrUtil = require('zrender/lib/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 @@
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 @@
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 @@
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 @@
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
  module.exports = {
151
152
  categoryAxis: categoryAxis,
@@ -114,31 +114,12 @@
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 @@
8
8
  return obj.value;
9
9
  }
10
10
  else {
11
- return obj;
11
+ return obj + '';
12
12
  }
13
13
  }
14
14
 
@@ -34,7 +34,7 @@
34
34
  return [{name: 'time', type: 'time'}];
35
35
  },
36
36
 
37
- getHandledRangeInfo: function () {
37
+ getRangeInfo: function () {
38
38
  return this._rangeInfo;
39
39
  },
40
40
 
@@ -160,18 +160,20 @@
160
160
  * Convert a time data(time, value) item to (x, y) point.
161
161
  *
162
162
  * @override
163
- * @param {Array} data data
164
- * @param {boolean} noClip out of range
165
- * @return {Array} point
163
+ * @param {Array|number} data data
164
+ * @param {boolean} [clamp=true] out of range
165
+ * @return {Array} point
166
166
  */
167
- dataToPoint: function (data, noClip) {
167
+ dataToPoint: function (data, clamp) {
168
+ zrUtil.isArray(data) && (data = data[0]);
169
+ clamp == null && (clamp = true);
168
170
 
169
- var dayInfo = this.getDateInfo(data[0]);
171
+ var dayInfo = this.getDateInfo(data);
170
172
  var range = this._rangeInfo;
171
173
  var date = dayInfo.formatedDate;
172
174
 
173
175
  // if not in range return [NaN, NaN]
174
- if (!noClip && !(dayInfo.time >= range.start.time && dayInfo.time <= range.end.time)) {
176
+ if (clamp && !(dayInfo.time >= range.start.time && dayInfo.time <= range.end.time)) {
175
177
  return [NaN, NaN];
176
178
  }
177
179
 
@@ -211,12 +213,11 @@
211
213
  * Convert a time date item to (x, y) four point.
212
214
  *
213
215
  * @param {Array} data date[0] is date
214
- * @param {boolean} noClip out of range
216
+ * @param {boolean} [clamp=true] out of range
215
217
  * @return {Object} point
216
218
  */
217
- dataToRect: function (data, noClip) {
218
-
219
- var point = this.dataToPoint(data, noClip);
219
+ dataToRect: function (data, clamp) {
220
+ var point = this.dataToPoint(data, clamp);
220
221
 
221
222
  return {
222
223
  contentShape: {
@@ -270,16 +271,12 @@
270
271
  },
271
272
 
272
273
  /**
273
- * @override
274
- * @implements
275
- * see {module:echarts/CoodinateSystem}
274
+ * @inheritDoc
276
275
  */
277
276
  convertToPixel: zrUtil.curry(doConvert, 'dataToPoint'),
278
277
 
279
278
  /**
280
- * @override
281
- * @implements
282
- * see {module:echarts/CoodinateSystem}
279
+ * @inheritDoc
283
280
  */
284
281
  convertFromPixel: zrUtil.curry(doConvert, 'pointToData'),
285
282
 
@@ -0,0 +1,31 @@
1
+
2
+
3
+ var zrUtil = require('zrender/lib/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
+ module.exports = prepareCustom;
@@ -2,7 +2,6 @@
2
2
 
3
3
  var zrUtil = require('zrender/lib/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 @@
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
@@ -103,6 +103,7 @@
103
103
  getOtherAxis: function (axis) {
104
104
  return this.getAxis(axis.dim === 'x' ? 'y' : 'x');
105
105
  }
106
+
106
107
  };
107
108
 
108
109
  zrUtil.inherits(Cartesian2D, Cartesian);
@@ -100,7 +100,9 @@ var factory = exports;
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 @@ var factory = exports;
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,36 @@
1
+
2
+
3
+ var zrUtil = require('zrender/lib/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
+ module.exports = prepareCustom;