echarts 4.5.0 → 4.9.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 (329) hide show
  1. package/.DS_Store +0 -0
  2. package/.gitattributes +3 -0
  3. package/.github/pull_request_template.md +66 -0
  4. package/.github/workflows/nodejs.yml +15 -3
  5. package/.huskyrc +5 -0
  6. package/CONTRIBUTING.md +16 -160
  7. package/NOTICE +1 -1
  8. package/README.md +3 -3
  9. package/asset/.DS_Store +0 -0
  10. package/build/.DS_Store +0 -0
  11. package/dist/echarts-en.common.js +3072 -1261
  12. package/dist/echarts-en.common.min.js +1 -1
  13. package/dist/echarts-en.js +4339 -1685
  14. package/dist/echarts-en.js.map +1 -1
  15. package/dist/echarts-en.min.js +1 -1
  16. package/dist/echarts-en.simple.js +2496 -1011
  17. package/dist/echarts-en.simple.min.js +1 -1
  18. package/dist/echarts.common.js +3046 -1261
  19. package/dist/echarts.common.min.js +1 -1
  20. package/dist/echarts.js +4313 -1685
  21. package/dist/echarts.js.map +1 -1
  22. package/dist/echarts.min.js +1 -1
  23. package/dist/echarts.simple.js +2470 -1011
  24. package/dist/echarts.simple.min.js +1 -1
  25. package/dist/extension/bmap.js +33 -11
  26. package/dist/extension/bmap.js.map +1 -1
  27. package/dist/extension/bmap.min.js +1 -1
  28. package/dist/extension/dataTool.js.map +1 -1
  29. package/extension/.DS_Store +0 -0
  30. package/extension/bmap/BMapCoordSys.js +14 -4
  31. package/extension/bmap/BMapModel.js +4 -0
  32. package/extension/bmap/BMapView.js +18 -10
  33. package/extension-src/bmap/BMapCoordSys.js +14 -4
  34. package/extension-src/bmap/BMapModel.js +6 -1
  35. package/extension-src/bmap/BMapView.js +16 -9
  36. package/lib/chart/bar/BarSeries.js +14 -1
  37. package/lib/chart/bar/BarView.js +196 -18
  38. package/lib/chart/bar/BaseBarSeries.js +3 -1
  39. package/lib/chart/bar/PictorialBarSeries.js +1 -1
  40. package/lib/chart/candlestick/candlestickVisual.js +1 -1
  41. package/lib/chart/effectScatter/EffectScatterSeries.js +3 -1
  42. package/lib/chart/funnel/FunnelSeries.js +14 -5
  43. package/lib/chart/funnel/funnelLayout.js +162 -46
  44. package/lib/chart/gauge/GaugeSeries.js +0 -2
  45. package/lib/chart/graph/GraphSeries.js +23 -7
  46. package/lib/chart/graph/GraphView.js +30 -12
  47. package/lib/chart/graph/circularLayoutHelper.js +8 -2
  48. package/lib/chart/graph/forceLayout.js +6 -1
  49. package/lib/chart/graph/simpleLayout.js +1 -1
  50. package/lib/chart/graph/simpleLayoutHelper.js +10 -4
  51. package/lib/chart/heatmap/HeatmapView.js +4 -4
  52. package/lib/chart/helper/EffectLine.js +23 -1
  53. package/lib/chart/helper/EffectSymbol.js +2 -1
  54. package/lib/chart/helper/Line.js +129 -42
  55. package/lib/chart/helper/LineDraw.js +5 -1
  56. package/lib/chart/helper/Symbol.js +2 -3
  57. package/lib/chart/helper/createClipPathFromCoordSys.js +4 -1
  58. package/lib/chart/helper/createListFromArray.js +14 -8
  59. package/lib/chart/helper/createRenderPlanner.js +6 -3
  60. package/lib/chart/helper/multipleGraphEdgeHelper.js +258 -0
  61. package/lib/chart/helper/whiskerBoxCommon.js +22 -16
  62. package/lib/chart/line/LineSeries.js +3 -1
  63. package/lib/chart/line/LineView.js +41 -2
  64. package/lib/chart/lines/LinesSeries.js +0 -2
  65. package/lib/chart/map/MapSeries.js +14 -5
  66. package/lib/chart/pie/PieSeries.js +27 -6
  67. package/lib/chart/pie/PieView.js +22 -15
  68. package/lib/chart/pie/labelLayout.js +102 -19
  69. package/lib/chart/pie/pieLayout.js +19 -7
  70. package/lib/chart/radar/RadarSeries.js +27 -6
  71. package/lib/chart/radar/RadarView.js +3 -1
  72. package/lib/chart/sankey/SankeySeries.js +13 -1
  73. package/lib/chart/sankey/SankeyView.js +70 -32
  74. package/lib/chart/sankey/sankeyLayout.js +22 -3
  75. package/lib/chart/scatter/ScatterSeries.js +3 -1
  76. package/lib/chart/sunburst/SunburstPiece.js +5 -1
  77. package/lib/chart/sunburst/SunburstSeries.js +29 -12
  78. package/lib/chart/sunburst/SunburstView.js +5 -1
  79. package/lib/chart/themeRiver/ThemeRiverSeries.js +24 -33
  80. package/lib/chart/tree/TreeSeries.js +20 -3
  81. package/lib/chart/tree/TreeView.js +149 -23
  82. package/lib/chart/treemap/TreemapSeries.js +25 -4
  83. package/lib/chart/treemap/TreemapView.js +80 -38
  84. package/lib/chart/treemap/treemapLayout.js +1 -1
  85. package/lib/chart/treemap/treemapVisual.js +9 -15
  86. package/lib/component/axis/AngleAxisView.js +64 -7
  87. package/lib/component/axis/AxisBuilder.js +62 -24
  88. package/lib/component/axis/CartesianAxisView.js +52 -85
  89. package/lib/component/axis/RadiusAxisView.js +36 -4
  90. package/lib/component/axis/SingleAxisView.js +21 -6
  91. package/lib/component/axis/axisSplitHelper.js +132 -0
  92. package/lib/component/axisPointer/axisTrigger.js +1 -1
  93. package/lib/component/brush/BrushView.js +11 -1
  94. package/lib/component/brush/visualEncoding.js +13 -2
  95. package/lib/component/dataZoom/SliderZoomView.js +4 -10
  96. package/lib/component/helper/BrushController.js +33 -43
  97. package/lib/component/helper/MapDraw.js +30 -4
  98. package/lib/component/legend/LegendModel.js +3 -3
  99. package/lib/component/legend/LegendView.js +17 -13
  100. package/lib/component/legend/ScrollableLegendView.js +18 -18
  101. package/lib/component/marker/MarkAreaView.js +53 -15
  102. package/lib/component/marker/MarkLineModel.js +2 -1
  103. package/lib/component/marker/MarkLineView.js +3 -0
  104. package/lib/component/marker/MarkPointView.js +8 -1
  105. package/lib/component/marker/MarkerModel.js +3 -2
  106. package/lib/component/marker/markerHelper.js +7 -4
  107. package/lib/component/timeline/SliderTimelineView.js +7 -1
  108. package/lib/component/title.js +6 -2
  109. package/lib/component/toolbox/ToolboxView.js +5 -1
  110. package/lib/component/toolbox/feature/DataView.js +23 -8
  111. package/lib/component/toolbox/feature/DataZoom.js +6 -6
  112. package/lib/component/toolbox/feature/MagicType.js +20 -14
  113. package/lib/component/toolbox/feature/SaveAsImage.js +4 -2
  114. package/lib/component/tooltip/TooltipContent.js +101 -30
  115. package/lib/component/tooltip/TooltipRichContent.js +56 -8
  116. package/lib/component/tooltip/TooltipView.js +11 -12
  117. package/lib/component/visualMap/PiecewiseModel.js +3 -6
  118. package/lib/component/visualMap/VisualMapModel.js +1 -1
  119. package/lib/coord/Axis.js +30 -2
  120. package/lib/coord/View.js +9 -0
  121. package/lib/coord/axisDefault.js +22 -3
  122. package/lib/coord/axisHelper.js +24 -18
  123. package/lib/coord/calendar/Calendar.js +8 -4
  124. package/lib/coord/geo/GeoModel.js +2 -1
  125. package/lib/coord/geo/geoJSONLoader.js +3 -2
  126. package/lib/coord/geo/geoSourceManager.js +3 -2
  127. package/lib/coord/geo/parseGeoJson.js +3 -2
  128. package/lib/coord/radar/Radar.js +5 -5
  129. package/lib/data/DataDimensionInfo.js +157 -0
  130. package/lib/data/Graph.js +1 -6
  131. package/lib/data/List.js +26 -20
  132. package/lib/data/Tree.js +5 -42
  133. package/lib/data/helper/completeDimensions.js +43 -32
  134. package/lib/data/helper/createDimensions.js +2 -0
  135. package/lib/data/helper/sourceHelper.js +214 -114
  136. package/lib/echarts.js +57 -34
  137. package/lib/langEN.js +26 -0
  138. package/lib/layout/barGrid.js +19 -13
  139. package/lib/layout/barPolar.js +1 -6
  140. package/lib/loading/default.js +43 -27
  141. package/lib/model/Series.js +4 -4
  142. package/lib/model/referHelper.js +40 -12
  143. package/lib/processor/dataSample.js +1 -1
  144. package/lib/scale/Interval.js +87 -2
  145. package/lib/scale/Log.js +9 -2
  146. package/lib/scale/helper.js +1 -43
  147. package/lib/stream/Scheduler.js +10 -2
  148. package/lib/theme/dark.js +3 -0
  149. package/lib/util/format.js +19 -2
  150. package/lib/util/graphic.js +14 -12
  151. package/lib/visual/LegendVisualProvider.js +75 -0
  152. package/lib/visual/VisualMapping.js +1 -1
  153. package/lib/visual/dataColor.js +2 -12
  154. package/lib/visual/seriesColor.js +15 -7
  155. package/lib/visual/symbol.js +12 -2
  156. package/map/.DS_Store +0 -0
  157. package/map/js/.DS_Store +0 -0
  158. package/map/js/china.js +1 -1
  159. package/map/js/province/.DS_Store +0 -0
  160. package/map/js/province/chongqing.js +1 -1
  161. package/map/js/province/gansu.js +2 -2
  162. package/map/js/province/tianjin.js +1 -28
  163. package/map/json/.DS_Store +0 -0
  164. package/map/json/china.json +1 -1
  165. package/map/json/province/chongqing.json +1 -1
  166. package/map/json/province/tianjin.json +1 -1
  167. package/package.json +12 -6
  168. package/src/.DS_Store +0 -0
  169. package/src/chart/.DS_Store +0 -0
  170. package/src/chart/bar/BarSeries.js +15 -1
  171. package/src/chart/bar/BarView.js +198 -17
  172. package/src/chart/bar/BaseBarSeries.js +1 -1
  173. package/src/chart/bar/PictorialBarSeries.js +2 -2
  174. package/src/chart/candlestick/candlestickVisual.js +1 -1
  175. package/src/chart/effectScatter/EffectScatterSeries.js +1 -1
  176. package/src/chart/funnel/FunnelSeries.js +11 -4
  177. package/src/chart/funnel/funnelLayout.js +179 -53
  178. package/src/chart/gauge/GaugeSeries.js +0 -1
  179. package/src/chart/graph/GraphSeries.js +19 -7
  180. package/src/chart/graph/GraphView.js +28 -10
  181. package/src/chart/graph/circularLayoutHelper.js +8 -2
  182. package/src/chart/graph/forceLayout.js +7 -1
  183. package/src/chart/graph/simpleLayout.js +1 -1
  184. package/src/chart/graph/simpleLayoutHelper.js +12 -5
  185. package/src/chart/heatmap/HeatmapView.js +4 -4
  186. package/src/chart/helper/EffectLine.js +23 -1
  187. package/src/chart/helper/EffectSymbol.js +2 -1
  188. package/src/chart/helper/Line.js +122 -37
  189. package/src/chart/helper/LineDraw.js +5 -1
  190. package/src/chart/helper/Symbol.js +4 -4
  191. package/src/chart/helper/createClipPathFromCoordSys.js +4 -0
  192. package/src/chart/helper/createGraphFromNodeEdge.js +2 -1
  193. package/src/chart/helper/createListFromArray.js +13 -8
  194. package/src/chart/helper/createRenderPlanner.js +5 -2
  195. package/src/chart/helper/multipleGraphEdgeHelper.js +229 -0
  196. package/src/chart/helper/whiskerBoxCommon.js +21 -16
  197. package/src/chart/line/LineSeries.js +1 -1
  198. package/src/chart/line/LineView.js +45 -1
  199. package/src/chart/lines/LinesSeries.js +1 -3
  200. package/src/chart/map/MapSeries.js +11 -5
  201. package/src/chart/pie/PieSeries.js +26 -5
  202. package/src/chart/pie/PieView.js +20 -15
  203. package/src/chart/pie/labelLayout.js +114 -22
  204. package/src/chart/pie/pieLayout.js +20 -7
  205. package/src/chart/radar/RadarSeries.js +31 -6
  206. package/src/chart/radar/RadarView.js +4 -2
  207. package/src/chart/sankey/SankeySeries.js +12 -1
  208. package/src/chart/sankey/SankeyView.js +75 -30
  209. package/src/chart/sankey/sankeyLayout.js +25 -5
  210. package/src/chart/scatter/ScatterSeries.js +1 -1
  211. package/src/chart/sunburst/SunburstPiece.js +7 -1
  212. package/src/chart/sunburst/SunburstSeries.js +28 -15
  213. package/src/chart/sunburst/SunburstView.js +2 -1
  214. package/src/chart/themeRiver/ThemeRiverSeries.js +25 -30
  215. package/src/chart/tree/TreeSeries.js +19 -6
  216. package/src/chart/tree/TreeView.js +156 -23
  217. package/src/chart/treemap/TreemapSeries.js +23 -5
  218. package/src/chart/treemap/TreemapView.js +77 -41
  219. package/src/chart/treemap/treemapLayout.js +2 -2
  220. package/src/chart/treemap/treemapVisual.js +8 -25
  221. package/src/component/axis/AngleAxisView.js +75 -7
  222. package/src/component/axis/AxisBuilder.js +77 -32
  223. package/src/component/axis/CartesianAxisView.js +47 -83
  224. package/src/component/axis/RadiusAxisView.js +37 -4
  225. package/src/component/axis/SingleAxisView.js +21 -4
  226. package/src/component/axis/axisSplitHelper.js +114 -0
  227. package/src/component/axisPointer/axisTrigger.js +1 -1
  228. package/src/component/brush/BrushView.js +8 -1
  229. package/src/component/brush/visualEncoding.js +6 -3
  230. package/src/component/dataZoom/SliderZoomView.js +4 -9
  231. package/src/component/helper/BrushController.js +40 -47
  232. package/src/component/helper/MapDraw.js +27 -4
  233. package/src/component/legend/LegendModel.js +3 -3
  234. package/src/component/legend/LegendView.js +18 -12
  235. package/src/component/legend/ScrollableLegendView.js +18 -16
  236. package/src/component/marker/MarkAreaView.js +53 -15
  237. package/src/component/marker/MarkLineModel.js +2 -1
  238. package/src/component/marker/MarkLineView.js +3 -1
  239. package/src/component/marker/MarkPointView.js +7 -1
  240. package/src/component/marker/MarkerModel.js +3 -2
  241. package/src/component/marker/markerHelper.js +8 -5
  242. package/src/component/timeline/SliderTimelineView.js +9 -6
  243. package/src/component/title.js +4 -3
  244. package/src/component/toolbox/.DS_Store +0 -0
  245. package/src/component/toolbox/ToolboxView.js +5 -0
  246. package/src/component/toolbox/feature/DataView.js +20 -8
  247. package/src/component/toolbox/feature/DataZoom.js +6 -6
  248. package/src/component/toolbox/feature/MagicType.js +19 -13
  249. package/src/component/toolbox/feature/SaveAsImage.js +4 -2
  250. package/src/component/tooltip/TooltipContent.js +94 -28
  251. package/src/component/tooltip/TooltipRichContent.js +52 -9
  252. package/src/component/tooltip/TooltipView.js +14 -12
  253. package/src/component/visualMap/PiecewiseModel.js +5 -9
  254. package/src/component/visualMap/VisualMapModel.js +1 -1
  255. package/src/coord/Axis.js +29 -2
  256. package/src/coord/View.js +10 -1
  257. package/src/coord/axisDefault.js +26 -2
  258. package/src/coord/axisHelper.js +30 -21
  259. package/src/coord/calendar/Calendar.js +12 -5
  260. package/src/coord/geo/GeoModel.js +3 -6
  261. package/src/coord/geo/geoJSONLoader.js +3 -2
  262. package/src/coord/geo/geoSourceManager.js +3 -2
  263. package/src/coord/geo/parseGeoJson.js +3 -2
  264. package/src/coord/radar/Radar.js +6 -8
  265. package/src/data/DataDimensionInfo.js +135 -0
  266. package/src/data/Graph.js +0 -5
  267. package/src/data/List.js +30 -17
  268. package/src/data/Tree.js +6 -39
  269. package/src/data/helper/completeDimensions.js +49 -30
  270. package/src/data/helper/createDimensions.js +2 -0
  271. package/src/data/helper/sourceHelper.js +216 -124
  272. package/src/echarts.js +60 -36
  273. package/src/langEN.js +26 -0
  274. package/src/layout/barGrid.js +22 -10
  275. package/src/layout/barPolar.js +4 -6
  276. package/src/loading/default.js +46 -34
  277. package/src/model/.DS_Store +0 -0
  278. package/src/model/Series.js +4 -4
  279. package/src/model/referHelper.js +34 -11
  280. package/src/preprocessor/.DS_Store +0 -0
  281. package/src/processor/dataSample.js +1 -1
  282. package/src/scale/Interval.js +84 -4
  283. package/src/scale/Log.js +9 -2
  284. package/src/scale/helper.js +1 -39
  285. package/src/stream/Scheduler.js +9 -1
  286. package/src/theme/dark.js +3 -0
  287. package/src/util/.DS_Store +0 -0
  288. package/src/util/format.js +17 -1
  289. package/src/util/graphic.js +13 -11
  290. package/src/visual/LegendVisualProvider.js +55 -0
  291. package/src/visual/VisualMapping.js +1 -1
  292. package/src/visual/dataColor.js +0 -13
  293. package/src/visual/seriesColor.js +13 -7
  294. package/src/visual/symbol.js +11 -2
  295. package/theme/.DS_Store +0 -0
  296. package/theme/azul.js +163 -0
  297. package/theme/bee-inspired.js +178 -0
  298. package/theme/blue.js +178 -0
  299. package/theme/caravan.js +178 -0
  300. package/theme/carp.js +163 -0
  301. package/theme/cool.js +180 -0
  302. package/theme/dark-blue.js +168 -0
  303. package/theme/dark-bold.js +168 -0
  304. package/theme/dark-digerati.js +168 -0
  305. package/theme/dark-fresh-cut.js +168 -0
  306. package/theme/dark-mushroom.js +168 -0
  307. package/theme/dark.js +69 -62
  308. package/theme/eduardo.js +178 -0
  309. package/theme/forest.js +163 -0
  310. package/theme/fresh-cut.js +163 -0
  311. package/theme/fruit.js +178 -0
  312. package/theme/gray.js +220 -0
  313. package/theme/green.js +222 -0
  314. package/theme/helianthus.js +263 -0
  315. package/theme/infographic.js +72 -57
  316. package/theme/inspired.js +163 -0
  317. package/theme/jazz.js +163 -0
  318. package/theme/london.js +163 -0
  319. package/theme/macarons.js +80 -57
  320. package/theme/macarons2.js +251 -0
  321. package/theme/mint.js +155 -0
  322. package/theme/red-velvet.js +163 -0
  323. package/theme/red.js +225 -0
  324. package/theme/roma.js +55 -22
  325. package/theme/royal.js +163 -0
  326. package/theme/sakura.js +140 -0
  327. package/theme/shine.js +52 -45
  328. package/theme/tech-blue.js +180 -0
  329. package/theme/vintage.js +37 -23
@@ -35,6 +35,7 @@ var normalizeToArray = _model.normalizeToArray;
35
35
  var _sourceHelper = require("./sourceHelper");
36
36
 
37
37
  var guessOrdinal = _sourceHelper.guessOrdinal;
38
+ var BE_ORDINAL = _sourceHelper.BE_ORDINAL;
38
39
 
39
40
  var Source = require("../Source");
40
41
 
@@ -42,6 +43,8 @@ var _dimensionHelper = require("./dimensionHelper");
42
43
 
43
44
  var OTHER_DIMENSIONS = _dimensionHelper.OTHER_DIMENSIONS;
44
45
 
46
+ var DataDimensionInfo = require("../DataDimensionInfo");
47
+
45
48
  /*
46
49
  * Licensed to the Apache Software Foundation (ASF) under one
47
50
  * or more contributor license agreements. See the NOTICE file
@@ -69,8 +72,12 @@ var OTHER_DIMENSIONS = _dimensionHelper.OTHER_DIMENSIONS;
69
72
  /**
70
73
  * @see {module:echarts/test/ut/spec/data/completeDimensions}
71
74
  *
72
- * Complete the dimensions array, by user defined `dimension` and `encode`,
73
- * and guessing from the data structure.
75
+ * This method builds the relationship between:
76
+ * + "what the coord sys or series requires (see `sysDims`)",
77
+ * + "what the user defines (in `encode` and `dimensions`, see `opt.dimsDef` and `opt.encodeDef`)"
78
+ * + "what the data source provids (see `source`)".
79
+ *
80
+ * Some guess strategy will be adapted if user does not define something.
74
81
  * If no 'value' dimension specified, the first no-named dimension will be
75
82
  * named as 'value'.
76
83
  *
@@ -86,32 +93,20 @@ var OTHER_DIMENSIONS = _dimensionHelper.OTHER_DIMENSIONS;
86
93
  * @param {Array.<Object|string>} [opt.dimsDef] option.series.dimensions User defined dimensions
87
94
  * For example: ['asdf', {name, type}, ...].
88
95
  * @param {Object|HashMap} [opt.encodeDef] option.series.encode {x: 2, y: [3, 1], tooltip: [1, 2], label: 3}
96
+ * @param {Function} [opt.encodeDefaulter] Called if no `opt.encodeDef` exists.
97
+ * If not specified, auto find the next available data dim.
98
+ * param source {module:data/Source}
99
+ * param dimCount {number}
100
+ * return {Object} encode Never be `null/undefined`.
89
101
  * @param {string} [opt.generateCoord] Generate coord dim with the given name.
90
- * If not specified, extra dim names will be:
91
- * 'value', 'value0', 'value1', ...
102
+ * If not specified, extra dim names will be:
103
+ * 'value', 'value0', 'value1', ...
92
104
  * @param {number} [opt.generateCoordCount] By default, the generated dim name is `generateCoord`.
93
- * If `generateCoordCount` specified, the generated dim names will be:
94
- * `generateCoord` + 0, `generateCoord` + 1, ...
95
- * can be Infinity, indicate that use all of the remain columns.
105
+ * If `generateCoordCount` specified, the generated dim names will be:
106
+ * `generateCoord` + 0, `generateCoord` + 1, ...
107
+ * can be Infinity, indicate that use all of the remain columns.
96
108
  * @param {number} [opt.dimCount] If not specified, guess by the first data item.
97
- * @param {number} [opt.encodeDefaulter] If not specified, auto find the next available data dim.
98
- * @return {Array.<Object>} [{
99
- * name: string mandatory,
100
- * displayName: string, the origin name in dimsDef, see source helper.
101
- * If displayName given, the tooltip will displayed vertically.
102
- * coordDim: string mandatory,
103
- * coordDimIndex: number mandatory,
104
- * type: string optional,
105
- * otherDims: { never null/undefined
106
- * tooltip: number optional,
107
- * label: number optional,
108
- * itemName: number optional,
109
- * seriesName: number optional,
110
- * },
111
- * isExtraCoord: boolean true if coord is generated
112
- * (not specified in encode and not series specified)
113
- * other props ...
114
- * }]
109
+ * @return {Array.<module:data/DataDimensionInfo>}
115
110
  */
116
111
  function completeDimensions(sysDims, source, opt) {
117
112
  if (!Source.isInstance(source)) {
@@ -121,7 +116,6 @@ function completeDimensions(sysDims, source, opt) {
121
116
  opt = opt || {};
122
117
  sysDims = (sysDims || []).slice();
123
118
  var dimsDef = (opt.dimsDef || []).slice();
124
- var encodeDef = createHashMap(opt.encodeDef);
125
119
  var dataDimNameMap = createHashMap();
126
120
  var coordDimNameMap = createHashMap(); // var valueCandidate;
127
121
 
@@ -133,9 +127,7 @@ function completeDimensions(sysDims, source, opt) {
133
127
  name: dimsDef[i]
134
128
  });
135
129
  var userDimName = dimDefItem.name;
136
- var resultItem = result[i] = {
137
- otherDims: {}
138
- }; // Name will be applied later for avoiding duplication.
130
+ var resultItem = result[i] = new DataDimensionInfo(); // Name will be applied later for avoiding duplication.
139
131
 
140
132
  if (userDimName != null && dataDimNameMap.get(userDimName) == null) {
141
133
  // Only if `series.dimensions` is defined in option
@@ -147,8 +139,15 @@ function completeDimensions(sysDims, source, opt) {
147
139
 
148
140
  dimDefItem.type != null && (resultItem.type = dimDefItem.type);
149
141
  dimDefItem.displayName != null && (resultItem.displayName = dimDefItem.displayName);
150
- } // Set `coordDim` and `coordDimIndex` by `encodeDef` and normalize `encodeDef`.
142
+ }
143
+
144
+ var encodeDef = opt.encodeDef;
145
+
146
+ if (!encodeDef && opt.encodeDefaulter) {
147
+ encodeDef = opt.encodeDefaulter(source, dimCount);
148
+ }
151
149
 
150
+ encodeDef = createHashMap(encodeDef); // Set `coordDim` and `coordDimIndex` by `encodeDef` and normalize `encodeDef`.
152
151
 
153
152
  encodeDef.each(function (dataDims, coordDim) {
154
153
  dataDims = normalizeToArray(dataDims).slice(); // Note: It is allowed that `dataDims.length` is `0`, e.g., options is
@@ -249,7 +248,7 @@ function completeDimensions(sysDims, source, opt) {
249
248
  var extra = generateCoord || 'value'; // Set dim `name` and other `coordDim` and other props.
250
249
 
251
250
  for (var resultDimIdx = 0; resultDimIdx < dimCount; resultDimIdx++) {
252
- var resultItem = result[resultDimIdx] = result[resultDimIdx] || {};
251
+ var resultItem = result[resultDimIdx] = result[resultDimIdx] || new DataDimensionInfo();
253
252
  var coordDim = resultItem.coordDim;
254
253
 
255
254
  if (coordDim == null) {
@@ -265,7 +264,19 @@ function completeDimensions(sysDims, source, opt) {
265
264
 
266
265
  resultItem.name == null && (resultItem.name = genName(resultItem.coordDim, dataDimNameMap));
267
266
 
268
- if (resultItem.type == null && guessOrdinal(source, resultDimIdx, resultItem.name)) {
267
+ if (resultItem.type == null && (guessOrdinal(source, resultDimIdx, resultItem.name) === BE_ORDINAL.Must // Consider the case:
268
+ // {
269
+ // dataset: {source: [
270
+ // ['2001', 123],
271
+ // ['2002', 456],
272
+ // ...
273
+ // ['The others', 987],
274
+ // ]},
275
+ // series: {type: 'pie'}
276
+ // }
277
+ // The first colum should better be treated as a "ordinal" although it
278
+ // might not able to be detected as an "ordinal" by `guessOrdinal`.
279
+ || resultItem.isExtraCoord && (resultItem.otherDims.itemName != null || resultItem.otherDims.seriesName != null))) {
269
280
  resultItem.type = 'ordinal';
270
281
  }
271
282
  }
@@ -53,6 +53,7 @@ var completeDimensions = require("./completeDimensions");
53
53
  * @param {string} [opt.generateCoordCount]
54
54
  * @param {Array.<string|Object>} [opt.dimensionsDefine=source.dimensionsDefine] Overwrite source define.
55
55
  * @param {Object|HashMap} [opt.encodeDefine=source.encodeDefine] Overwrite source define.
56
+ * @param {Function} [opt.encodeDefaulter] Make default encode if user not specified.
56
57
  * @return {Array.<Object>} dimensionsInfo
57
58
  */
58
59
  function _default(source, opt) {
@@ -61,6 +62,7 @@ function _default(source, opt) {
61
62
  dimsDef: opt.dimensionsDefine || source.dimensionsDefine,
62
63
  encodeDef: opt.encodeDefine || source.encodeDefine,
63
64
  dimCount: opt.dimensionsCount,
65
+ encodeDefaulter: opt.encodeDefaulter,
64
66
  generateCoord: opt.generateCoord,
65
67
  generateCoordCount: opt.generateCoordCount
66
68
  });
@@ -27,10 +27,6 @@ var _model = require("../../util/model");
27
27
  var makeInner = _model.makeInner;
28
28
  var getDataItemValue = _model.getDataItemValue;
29
29
 
30
- var _referHelper = require("../../model/referHelper");
31
-
32
- var getCoordSysDefineBySeries = _referHelper.getCoordSysDefineBySeries;
33
-
34
30
  var _util = require("zrender/lib/core/util");
35
31
 
36
32
  var createHashMap = _util.createHashMap;
@@ -74,6 +70,15 @@ var SERIES_LAYOUT_BY_ROW = _sourceType.SERIES_LAYOUT_BY_ROW;
74
70
  * specific language governing permissions and limitations
75
71
  * under the License.
76
72
  */
73
+ // The result of `guessOrdinal`.
74
+ var BE_ORDINAL = {
75
+ Must: 1,
76
+ // Encounter string but not '-' and not number-like.
77
+ Might: 2,
78
+ // Encounter string but number-like.
79
+ Not: 3 // Other cases
80
+
81
+ };
77
82
  var inner = makeInner();
78
83
  /**
79
84
  * @see {module:echarts/data/Source}
@@ -196,14 +201,7 @@ function prepareSource(seriesModel) {
196
201
  dimensionsDefine = dimensionsDefine || datasetOption.dimensions;
197
202
  }
198
203
 
199
- var completeResult = completeBySourceData(data, sourceFormat, seriesLayoutBy, sourceHeader, dimensionsDefine); // Note: dataset option does not have `encode`.
200
-
201
- var encodeDefine = seriesOption.encode;
202
-
203
- if (!encodeDefine && datasetModel) {
204
- encodeDefine = makeDefaultEncode(seriesModel, datasetModel, data, sourceFormat, seriesLayoutBy, completeResult);
205
- }
206
-
204
+ var completeResult = completeBySourceData(data, sourceFormat, seriesLayoutBy, sourceHeader, dimensionsDefine);
207
205
  inner(seriesModel).source = new Source({
208
206
  data: data,
209
207
  fromDataset: fromDataset,
@@ -212,7 +210,8 @@ function prepareSource(seriesModel) {
212
210
  dimensionsDefine: completeResult.dimensionsDefine,
213
211
  startIndex: completeResult.startIndex,
214
212
  dimensionsDetectCount: completeResult.dimensionsDetectCount,
215
- encodeDefine: encodeDefine
213
+ // Note: dataset option does not have `encode`.
214
+ encodeDefine: seriesOption.encode
216
215
  });
217
216
  } // return {startIndex, dimensionsDefine, dimensionsCount}
218
217
 
@@ -226,7 +225,6 @@ function completeBySourceData(data, sourceFormat, seriesLayoutBy, sourceHeader,
226
225
 
227
226
  var dimensionsDetectCount;
228
227
  var startIndex;
229
- var findPotentialName;
230
228
 
231
229
  if (sourceFormat === SOURCE_FORMAT_ARRAY_ROWS) {
232
230
  // Rule: Most of the first line are string: it is header.
@@ -260,12 +258,10 @@ function completeBySourceData(data, sourceFormat, seriesLayoutBy, sourceHeader,
260
258
  } else if (sourceFormat === SOURCE_FORMAT_OBJECT_ROWS) {
261
259
  if (!dimensionsDefine) {
262
260
  dimensionsDefine = objectRowsCollectDimensions(data);
263
- findPotentialName = true;
264
261
  }
265
262
  } else if (sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS) {
266
263
  if (!dimensionsDefine) {
267
264
  dimensionsDefine = [];
268
- findPotentialName = true;
269
265
  each(data, function (colArr, key) {
270
266
  dimensionsDefine.push(key);
271
267
  });
@@ -275,22 +271,10 @@ function completeBySourceData(data, sourceFormat, seriesLayoutBy, sourceHeader,
275
271
  dimensionsDetectCount = isArray(value0) && value0.length || 1;
276
272
  } else if (sourceFormat === SOURCE_FORMAT_TYPED_ARRAY) {}
277
273
 
278
- var potentialNameDimIndex;
279
-
280
- if (findPotentialName) {
281
- each(dimensionsDefine, function (dim, idx) {
282
- if ((isObject(dim) ? dim.name : dim) === 'name') {
283
- potentialNameDimIndex = idx;
284
- }
285
- });
286
- }
287
-
288
274
  return {
289
275
  startIndex: startIndex,
290
276
  dimensionsDefine: normalizeDimensionsDefine(dimensionsDefine),
291
- dimensionsDetectCount: dimensionsDetectCount,
292
- potentialNameDimIndex: potentialNameDimIndex // TODO: potentialIdDimIdx
293
-
277
+ dimensionsDetectCount: dimensionsDetectCount
294
278
  };
295
279
  } // Consider dimensions defined like ['A', 'price', 'B', 'price', 'C', 'price'],
296
280
  // which is reasonable. But dimension name is duplicated.
@@ -370,91 +354,191 @@ function objectRowsCollectDimensions(data) {
370
354
  });
371
355
  return dimensions;
372
356
  }
373
- } // ??? TODO merge to completedimensions, where also has
374
- // default encode making logic. And the default rule
375
- // should depends on series? consider 'map'.
357
+ }
358
+ /**
359
+ * [The strategy of the arrengment of data dimensions for dataset]:
360
+ * "value way": all axes are non-category axes. So series one by one take
361
+ * several (the number is coordSysDims.length) dimensions from dataset.
362
+ * The result of data arrengment of data dimensions like:
363
+ * | ser0_x | ser0_y | ser1_x | ser1_y | ser2_x | ser2_y |
364
+ * "category way": at least one axis is category axis. So the the first data
365
+ * dimension is always mapped to the first category axis and shared by
366
+ * all of the series. The other data dimensions are taken by series like
367
+ * "value way" does.
368
+ * The result of data arrengment of data dimensions like:
369
+ * | ser_shared_x | ser0_y | ser1_y | ser2_y |
370
+ *
371
+ * @param {Array.<Object|string>} coordDimensions [{name: <string>, type: <string>, dimsDef: <Array>}, ...]
372
+ * @param {module:model/Series} seriesModel
373
+ * @param {module:data/Source} source
374
+ * @return {Object} encode Never be `null/undefined`.
375
+ */
376
376
 
377
377
 
378
- function makeDefaultEncode(seriesModel, datasetModel, data, sourceFormat, seriesLayoutBy, completeResult) {
379
- var coordSysDefine = getCoordSysDefineBySeries(seriesModel);
380
- var encode = {}; // var encodeTooltip = [];
381
- // var encodeLabel = [];
378
+ function makeSeriesEncodeForAxisCoordSys(coordDimensions, seriesModel, source) {
379
+ var encode = {};
380
+ var datasetModel = getDatasetModel(seriesModel); // Currently only make default when using dataset, util more reqirements occur.
381
+
382
+ if (!datasetModel || !coordDimensions) {
383
+ return encode;
384
+ }
382
385
 
383
386
  var encodeItemName = [];
384
387
  var encodeSeriesName = [];
385
- var seriesType = seriesModel.subType; // ??? TODO refactor: provide by series itself.
386
- // Consider the case: 'map' series is based on geo coordSys,
387
- // 'graph', 'heatmap' can be based on cartesian. But can not
388
- // give default rule simply here.
389
-
390
- var nSeriesMap = createHashMap(['pie', 'map', 'funnel']);
391
- var cSeriesMap = createHashMap(['line', 'bar', 'pictorialBar', 'scatter', 'effectScatter', 'candlestick', 'boxplot']); // Usually in this case series will use the first data
392
- // dimension as the "value" dimension, or other default
393
- // processes respectively.
394
-
395
- if (coordSysDefine && cSeriesMap.get(seriesType) != null) {
396
- var ecModel = seriesModel.ecModel;
397
- var datasetMap = inner(ecModel).datasetMap;
398
- var key = datasetModel.uid + '_' + seriesLayoutBy;
399
- var datasetRecord = datasetMap.get(key) || datasetMap.set(key, {
400
- categoryWayDim: 1,
401
- valueWayDim: 0
402
- }); // TODO
403
- // Auto detect first time axis and do arrangement.
404
-
405
- each(coordSysDefine.coordSysDims, function (coordDim) {
406
- // In value way.
407
- if (coordSysDefine.firstCategoryDimIndex == null) {
408
- var dataDim = datasetRecord.valueWayDim++;
409
- encode[coordDim] = dataDim; // ??? TODO give a better default series name rule?
410
- // especially when encode x y specified.
411
- // consider: when mutiple series share one dimension
412
- // category axis, series name should better use
413
- // the other dimsion name. On the other hand, use
414
- // both dimensions name.
415
-
416
- encodeSeriesName.push(dataDim); // encodeTooltip.push(dataDim);
417
- // encodeLabel.push(dataDim);
418
- } // In category way, category axis.
419
- else if (coordSysDefine.categoryAxisMap.get(coordDim)) {
420
- encode[coordDim] = 0;
421
- encodeItemName.push(0);
422
- } // In category way, non-category axis.
423
- else {
424
- var dataDim = datasetRecord.categoryWayDim++;
425
- encode[coordDim] = dataDim; // encodeTooltip.push(dataDim);
426
- // encodeLabel.push(dataDim);
427
-
428
- encodeSeriesName.push(dataDim);
429
- }
388
+ var ecModel = seriesModel.ecModel;
389
+ var datasetMap = inner(ecModel).datasetMap;
390
+ var key = datasetModel.uid + '_' + source.seriesLayoutBy;
391
+ var baseCategoryDimIndex;
392
+ var categoryWayValueDimStart;
393
+ coordDimensions = coordDimensions.slice();
394
+ each(coordDimensions, function (coordDimInfo, coordDimIdx) {
395
+ !isObject(coordDimInfo) && (coordDimensions[coordDimIdx] = {
396
+ name: coordDimInfo
430
397
  });
431
- } // Do not make a complex rule! Hard to code maintain and not necessary.
432
- // ??? TODO refactor: provide by series itself.
433
- // [{name: ..., value: ...}, ...] like:
434
- else if (nSeriesMap.get(seriesType) != null) {
435
- // Find the first not ordinal. (5 is an experience value)
436
- var firstNotOrdinal;
437
-
438
- for (var i = 0; i < 5 && firstNotOrdinal == null; i++) {
439
- if (!doGuessOrdinal(data, sourceFormat, seriesLayoutBy, completeResult.dimensionsDefine, completeResult.startIndex, i)) {
440
- firstNotOrdinal = i;
398
+
399
+ if (coordDimInfo.type === 'ordinal' && baseCategoryDimIndex == null) {
400
+ baseCategoryDimIndex = coordDimIdx;
401
+ categoryWayValueDimStart = getDataDimCountOnCoordDim(coordDimensions[coordDimIdx]);
402
+ }
403
+
404
+ encode[coordDimInfo.name] = [];
405
+ });
406
+ var datasetRecord = datasetMap.get(key) || datasetMap.set(key, {
407
+ categoryWayDim: categoryWayValueDimStart,
408
+ valueWayDim: 0
409
+ }); // TODO
410
+ // Auto detect first time axis and do arrangement.
411
+
412
+ each(coordDimensions, function (coordDimInfo, coordDimIdx) {
413
+ var coordDimName = coordDimInfo.name;
414
+ var count = getDataDimCountOnCoordDim(coordDimInfo); // In value way.
415
+
416
+ if (baseCategoryDimIndex == null) {
417
+ var start = datasetRecord.valueWayDim;
418
+ pushDim(encode[coordDimName], start, count);
419
+ pushDim(encodeSeriesName, start, count);
420
+ datasetRecord.valueWayDim += count; // ??? TODO give a better default series name rule?
421
+ // especially when encode x y specified.
422
+ // consider: when mutiple series share one dimension
423
+ // category axis, series name should better use
424
+ // the other dimsion name. On the other hand, use
425
+ // both dimensions name.
426
+ } // In category way, the first category axis.
427
+ else if (baseCategoryDimIndex === coordDimIdx) {
428
+ pushDim(encode[coordDimName], 0, count);
429
+ pushDim(encodeItemName, 0, count);
430
+ } // In category way, the other axis.
431
+ else {
432
+ var start = datasetRecord.categoryWayDim;
433
+ pushDim(encode[coordDimName], start, count);
434
+ pushDim(encodeSeriesName, start, count);
435
+ datasetRecord.categoryWayDim += count;
441
436
  }
437
+ });
438
+
439
+ function pushDim(dimIdxArr, idxFrom, idxCount) {
440
+ for (var i = 0; i < idxCount; i++) {
441
+ dimIdxArr.push(idxFrom + i);
442
+ }
443
+ }
444
+
445
+ function getDataDimCountOnCoordDim(coordDimInfo) {
446
+ var dimsDef = coordDimInfo.dimsDef;
447
+ return dimsDef ? dimsDef.length : 1;
448
+ }
449
+
450
+ encodeItemName.length && (encode.itemName = encodeItemName);
451
+ encodeSeriesName.length && (encode.seriesName = encodeSeriesName);
452
+ return encode;
453
+ }
454
+ /**
455
+ * Work for data like [{name: ..., value: ...}, ...].
456
+ *
457
+ * @param {module:model/Series} seriesModel
458
+ * @param {module:data/Source} source
459
+ * @return {Object} encode Never be `null/undefined`.
460
+ */
461
+
462
+
463
+ function makeSeriesEncodeForNameBased(seriesModel, source, dimCount) {
464
+ var encode = {};
465
+ var datasetModel = getDatasetModel(seriesModel); // Currently only make default when using dataset, util more reqirements occur.
466
+
467
+ if (!datasetModel) {
468
+ return encode;
469
+ }
470
+
471
+ var sourceFormat = source.sourceFormat;
472
+ var dimensionsDefine = source.dimensionsDefine;
473
+ var potentialNameDimIndex;
474
+
475
+ if (sourceFormat === SOURCE_FORMAT_OBJECT_ROWS || sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS) {
476
+ each(dimensionsDefine, function (dim, idx) {
477
+ if ((isObject(dim) ? dim.name : dim) === 'name') {
478
+ potentialNameDimIndex = idx;
442
479
  }
480
+ });
481
+ } // idxResult: {v, n}.
482
+
483
+
484
+ var idxResult = function () {
485
+ var idxRes0 = {};
486
+ var idxRes1 = {};
487
+ var guessRecords = []; // 5 is an experience value.
443
488
 
444
- if (firstNotOrdinal != null) {
445
- encode.value = firstNotOrdinal;
446
- var nameDimIndex = completeResult.potentialNameDimIndex || Math.max(firstNotOrdinal - 1, 0); // By default, label use itemName in charts.
447
- // So we dont set encodeLabel here.
489
+ for (var i = 0, len = Math.min(5, dimCount); i < len; i++) {
490
+ var guessResult = doGuessOrdinal(source.data, sourceFormat, source.seriesLayoutBy, dimensionsDefine, source.startIndex, i);
491
+ guessRecords.push(guessResult);
492
+ var isPureNumber = guessResult === BE_ORDINAL.Not; // [Strategy of idxRes0]: find the first BE_ORDINAL.Not as the value dim,
493
+ // and then find a name dim with the priority:
494
+ // "BE_ORDINAL.Might|BE_ORDINAL.Must" > "other dim" > "the value dim itself".
448
495
 
449
- encodeSeriesName.push(nameDimIndex);
450
- encodeItemName.push(nameDimIndex); // encodeTooltip.push(firstNotOrdinal);
496
+ if (isPureNumber && idxRes0.v == null && i !== potentialNameDimIndex) {
497
+ idxRes0.v = i;
451
498
  }
452
- } // encodeTooltip.length && (encode.tooltip = encodeTooltip);
453
- // encodeLabel.length && (encode.label = encodeLabel);
454
499
 
500
+ if (idxRes0.n == null || idxRes0.n === idxRes0.v || !isPureNumber && guessRecords[idxRes0.n] === BE_ORDINAL.Not) {
501
+ idxRes0.n = i;
502
+ }
503
+
504
+ if (fulfilled(idxRes0) && guessRecords[idxRes0.n] !== BE_ORDINAL.Not) {
505
+ return idxRes0;
506
+ } // [Strategy of idxRes1]: if idxRes0 not satisfied (that is, no BE_ORDINAL.Not),
507
+ // find the first BE_ORDINAL.Might as the value dim,
508
+ // and then find a name dim with the priority:
509
+ // "other dim" > "the value dim itself".
510
+ // That is for backward compat: number-like (e.g., `'3'`, `'55'`) can be
511
+ // treated as number.
512
+
513
+
514
+ if (!isPureNumber) {
515
+ if (guessResult === BE_ORDINAL.Might && idxRes1.v == null && i !== potentialNameDimIndex) {
516
+ idxRes1.v = i;
517
+ }
518
+
519
+ if (idxRes1.n == null || idxRes1.n === idxRes1.v) {
520
+ idxRes1.n = i;
521
+ }
522
+ }
523
+ }
524
+
525
+ function fulfilled(idxResult) {
526
+ return idxResult.v != null && idxResult.n != null;
527
+ }
528
+
529
+ return fulfilled(idxRes0) ? idxRes0 : fulfilled(idxRes1) ? idxRes1 : null;
530
+ }();
531
+
532
+ if (idxResult) {
533
+ encode.value = idxResult.v; // `potentialNameDimIndex` has highest priority.
534
+
535
+ var nameDimIndex = potentialNameDimIndex != null ? potentialNameDimIndex : idxResult.n; // By default, label use itemName in charts.
536
+ // So we dont set encodeLabel here.
537
+
538
+ encode.itemName = [nameDimIndex];
539
+ encode.seriesName = [nameDimIndex];
540
+ }
455
541
 
456
- encodeItemName.length && (encode.itemName = encodeItemName);
457
- encodeSeriesName.length && (encode.seriesName = encodeSeriesName);
458
542
  return encode;
459
543
  }
460
544
  /**
@@ -482,13 +566,14 @@ function getDatasetModel(seriesModel) {
482
566
  *
483
567
  * @param {module:echars/data/Source} source
484
568
  * @param {number} dimIndex
485
- * @return {boolean} Whether ordinal.
569
+ * @return {BE_ORDINAL} guess result.
486
570
  */
487
571
 
488
572
 
489
573
  function guessOrdinal(source, dimIndex) {
490
574
  return doGuessOrdinal(source.data, source.sourceFormat, source.seriesLayoutBy, source.dimensionsDefine, source.startIndex, dimIndex);
491
575
  } // dimIndex may be overflow source data.
576
+ // return {BE_ORDINAL}
492
577
 
493
578
 
494
579
  function doGuessOrdinal(data, sourceFormat, seriesLayoutBy, dimensionsDefine, startIndex, dimIndex) {
@@ -497,16 +582,27 @@ function doGuessOrdinal(data, sourceFormat, seriesLayoutBy, dimensionsDefine, st
497
582
  var maxLoop = 5;
498
583
 
499
584
  if (isTypedArray(data)) {
500
- return false;
585
+ return BE_ORDINAL.Not;
501
586
  } // When sourceType is 'objectRows' or 'keyedColumns', dimensionsDefine
502
587
  // always exists in source.
503
588
 
504
589
 
505
590
  var dimName;
591
+ var dimType;
506
592
 
507
593
  if (dimensionsDefine) {
508
- dimName = dimensionsDefine[dimIndex];
509
- dimName = isObject(dimName) ? dimName.name : dimName;
594
+ var dimDefItem = dimensionsDefine[dimIndex];
595
+
596
+ if (isObject(dimDefItem)) {
597
+ dimName = dimDefItem.name;
598
+ dimType = dimDefItem.type;
599
+ } else if (isString(dimDefItem)) {
600
+ dimName = dimDefItem;
601
+ }
602
+ }
603
+
604
+ if (dimType != null) {
605
+ return dimType === 'ordinal' ? BE_ORDINAL.Must : BE_ORDINAL.Not;
510
606
  }
511
607
 
512
608
  if (sourceFormat === SOURCE_FORMAT_ARRAY_ROWS) {
@@ -529,7 +625,7 @@ function doGuessOrdinal(data, sourceFormat, seriesLayoutBy, dimensionsDefine, st
529
625
  }
530
626
  } else if (sourceFormat === SOURCE_FORMAT_OBJECT_ROWS) {
531
627
  if (!dimName) {
532
- return;
628
+ return BE_ORDINAL.Not;
533
629
  }
534
630
 
535
631
  for (var i = 0; i < data.length && i < maxLoop; i++) {
@@ -541,13 +637,13 @@ function doGuessOrdinal(data, sourceFormat, seriesLayoutBy, dimensionsDefine, st
541
637
  }
542
638
  } else if (sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS) {
543
639
  if (!dimName) {
544
- return;
640
+ return BE_ORDINAL.Not;
545
641
  }
546
642
 
547
643
  var sample = data[dimName];
548
644
 
549
645
  if (!sample || isTypedArray(sample)) {
550
- return false;
646
+ return BE_ORDINAL.Not;
551
647
  }
552
648
 
553
649
  for (var i = 0; i < sample.length && i < maxLoop; i++) {
@@ -561,7 +657,7 @@ function doGuessOrdinal(data, sourceFormat, seriesLayoutBy, dimensionsDefine, st
561
657
  var val = getDataItemValue(item);
562
658
 
563
659
  if (!isArray(val)) {
564
- return false;
660
+ return BE_ORDINAL.Not;
565
661
  }
566
662
 
567
663
  if ((result = detectValue(val[dimIndex])) != null) {
@@ -571,20 +667,24 @@ function doGuessOrdinal(data, sourceFormat, seriesLayoutBy, dimensionsDefine, st
571
667
  }
572
668
 
573
669
  function detectValue(val) {
574
- // Consider usage convenience, '1', '2' will be treated as "number".
670
+ var beStr = isString(val); // Consider usage convenience, '1', '2' will be treated as "number".
575
671
  // `isFinit('')` get `true`.
672
+
576
673
  if (val != null && isFinite(val) && val !== '') {
577
- return false;
578
- } else if (isString(val) && val !== '-') {
579
- return true;
674
+ return beStr ? BE_ORDINAL.Might : BE_ORDINAL.Not;
675
+ } else if (beStr && val !== '-') {
676
+ return BE_ORDINAL.Must;
580
677
  }
581
678
  }
582
679
 
583
- return false;
680
+ return BE_ORDINAL.Not;
584
681
  }
585
682
 
683
+ exports.BE_ORDINAL = BE_ORDINAL;
586
684
  exports.detectSourceFormat = detectSourceFormat;
587
685
  exports.getSource = getSource;
588
686
  exports.resetSourceDefaulter = resetSourceDefaulter;
589
687
  exports.prepareSource = prepareSource;
688
+ exports.makeSeriesEncodeForAxisCoordSys = makeSeriesEncodeForAxisCoordSys;
689
+ exports.makeSeriesEncodeForNameBased = makeSeriesEncodeForNameBased;
590
690
  exports.guessOrdinal = guessOrdinal;