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.
- package/.DS_Store +0 -0
- package/.gitattributes +3 -0
- package/.github/pull_request_template.md +66 -0
- package/.github/workflows/nodejs.yml +15 -3
- package/.huskyrc +5 -0
- package/CONTRIBUTING.md +16 -160
- package/NOTICE +1 -1
- package/README.md +3 -3
- package/asset/.DS_Store +0 -0
- package/build/.DS_Store +0 -0
- package/dist/echarts-en.common.js +3072 -1261
- package/dist/echarts-en.common.min.js +1 -1
- package/dist/echarts-en.js +4339 -1685
- package/dist/echarts-en.js.map +1 -1
- package/dist/echarts-en.min.js +1 -1
- package/dist/echarts-en.simple.js +2496 -1011
- package/dist/echarts-en.simple.min.js +1 -1
- package/dist/echarts.common.js +3046 -1261
- package/dist/echarts.common.min.js +1 -1
- package/dist/echarts.js +4313 -1685
- package/dist/echarts.js.map +1 -1
- package/dist/echarts.min.js +1 -1
- package/dist/echarts.simple.js +2470 -1011
- package/dist/echarts.simple.min.js +1 -1
- package/dist/extension/bmap.js +33 -11
- package/dist/extension/bmap.js.map +1 -1
- package/dist/extension/bmap.min.js +1 -1
- package/dist/extension/dataTool.js.map +1 -1
- package/extension/.DS_Store +0 -0
- package/extension/bmap/BMapCoordSys.js +14 -4
- package/extension/bmap/BMapModel.js +4 -0
- package/extension/bmap/BMapView.js +18 -10
- package/extension-src/bmap/BMapCoordSys.js +14 -4
- package/extension-src/bmap/BMapModel.js +6 -1
- package/extension-src/bmap/BMapView.js +16 -9
- package/lib/chart/bar/BarSeries.js +14 -1
- package/lib/chart/bar/BarView.js +196 -18
- package/lib/chart/bar/BaseBarSeries.js +3 -1
- package/lib/chart/bar/PictorialBarSeries.js +1 -1
- package/lib/chart/candlestick/candlestickVisual.js +1 -1
- package/lib/chart/effectScatter/EffectScatterSeries.js +3 -1
- package/lib/chart/funnel/FunnelSeries.js +14 -5
- package/lib/chart/funnel/funnelLayout.js +162 -46
- package/lib/chart/gauge/GaugeSeries.js +0 -2
- package/lib/chart/graph/GraphSeries.js +23 -7
- package/lib/chart/graph/GraphView.js +30 -12
- package/lib/chart/graph/circularLayoutHelper.js +8 -2
- package/lib/chart/graph/forceLayout.js +6 -1
- package/lib/chart/graph/simpleLayout.js +1 -1
- package/lib/chart/graph/simpleLayoutHelper.js +10 -4
- package/lib/chart/heatmap/HeatmapView.js +4 -4
- package/lib/chart/helper/EffectLine.js +23 -1
- package/lib/chart/helper/EffectSymbol.js +2 -1
- package/lib/chart/helper/Line.js +129 -42
- package/lib/chart/helper/LineDraw.js +5 -1
- package/lib/chart/helper/Symbol.js +2 -3
- package/lib/chart/helper/createClipPathFromCoordSys.js +4 -1
- package/lib/chart/helper/createListFromArray.js +14 -8
- package/lib/chart/helper/createRenderPlanner.js +6 -3
- package/lib/chart/helper/multipleGraphEdgeHelper.js +258 -0
- package/lib/chart/helper/whiskerBoxCommon.js +22 -16
- package/lib/chart/line/LineSeries.js +3 -1
- package/lib/chart/line/LineView.js +41 -2
- package/lib/chart/lines/LinesSeries.js +0 -2
- package/lib/chart/map/MapSeries.js +14 -5
- package/lib/chart/pie/PieSeries.js +27 -6
- package/lib/chart/pie/PieView.js +22 -15
- package/lib/chart/pie/labelLayout.js +102 -19
- package/lib/chart/pie/pieLayout.js +19 -7
- package/lib/chart/radar/RadarSeries.js +27 -6
- package/lib/chart/radar/RadarView.js +3 -1
- package/lib/chart/sankey/SankeySeries.js +13 -1
- package/lib/chart/sankey/SankeyView.js +70 -32
- package/lib/chart/sankey/sankeyLayout.js +22 -3
- package/lib/chart/scatter/ScatterSeries.js +3 -1
- package/lib/chart/sunburst/SunburstPiece.js +5 -1
- package/lib/chart/sunburst/SunburstSeries.js +29 -12
- package/lib/chart/sunburst/SunburstView.js +5 -1
- package/lib/chart/themeRiver/ThemeRiverSeries.js +24 -33
- package/lib/chart/tree/TreeSeries.js +20 -3
- package/lib/chart/tree/TreeView.js +149 -23
- package/lib/chart/treemap/TreemapSeries.js +25 -4
- package/lib/chart/treemap/TreemapView.js +80 -38
- package/lib/chart/treemap/treemapLayout.js +1 -1
- package/lib/chart/treemap/treemapVisual.js +9 -15
- package/lib/component/axis/AngleAxisView.js +64 -7
- package/lib/component/axis/AxisBuilder.js +62 -24
- package/lib/component/axis/CartesianAxisView.js +52 -85
- package/lib/component/axis/RadiusAxisView.js +36 -4
- package/lib/component/axis/SingleAxisView.js +21 -6
- package/lib/component/axis/axisSplitHelper.js +132 -0
- package/lib/component/axisPointer/axisTrigger.js +1 -1
- package/lib/component/brush/BrushView.js +11 -1
- package/lib/component/brush/visualEncoding.js +13 -2
- package/lib/component/dataZoom/SliderZoomView.js +4 -10
- package/lib/component/helper/BrushController.js +33 -43
- package/lib/component/helper/MapDraw.js +30 -4
- package/lib/component/legend/LegendModel.js +3 -3
- package/lib/component/legend/LegendView.js +17 -13
- package/lib/component/legend/ScrollableLegendView.js +18 -18
- package/lib/component/marker/MarkAreaView.js +53 -15
- package/lib/component/marker/MarkLineModel.js +2 -1
- package/lib/component/marker/MarkLineView.js +3 -0
- package/lib/component/marker/MarkPointView.js +8 -1
- package/lib/component/marker/MarkerModel.js +3 -2
- package/lib/component/marker/markerHelper.js +7 -4
- package/lib/component/timeline/SliderTimelineView.js +7 -1
- package/lib/component/title.js +6 -2
- package/lib/component/toolbox/ToolboxView.js +5 -1
- package/lib/component/toolbox/feature/DataView.js +23 -8
- package/lib/component/toolbox/feature/DataZoom.js +6 -6
- package/lib/component/toolbox/feature/MagicType.js +20 -14
- package/lib/component/toolbox/feature/SaveAsImage.js +4 -2
- package/lib/component/tooltip/TooltipContent.js +101 -30
- package/lib/component/tooltip/TooltipRichContent.js +56 -8
- package/lib/component/tooltip/TooltipView.js +11 -12
- package/lib/component/visualMap/PiecewiseModel.js +3 -6
- package/lib/component/visualMap/VisualMapModel.js +1 -1
- package/lib/coord/Axis.js +30 -2
- package/lib/coord/View.js +9 -0
- package/lib/coord/axisDefault.js +22 -3
- package/lib/coord/axisHelper.js +24 -18
- package/lib/coord/calendar/Calendar.js +8 -4
- package/lib/coord/geo/GeoModel.js +2 -1
- package/lib/coord/geo/geoJSONLoader.js +3 -2
- package/lib/coord/geo/geoSourceManager.js +3 -2
- package/lib/coord/geo/parseGeoJson.js +3 -2
- package/lib/coord/radar/Radar.js +5 -5
- package/lib/data/DataDimensionInfo.js +157 -0
- package/lib/data/Graph.js +1 -6
- package/lib/data/List.js +26 -20
- package/lib/data/Tree.js +5 -42
- package/lib/data/helper/completeDimensions.js +43 -32
- package/lib/data/helper/createDimensions.js +2 -0
- package/lib/data/helper/sourceHelper.js +214 -114
- package/lib/echarts.js +57 -34
- package/lib/langEN.js +26 -0
- package/lib/layout/barGrid.js +19 -13
- package/lib/layout/barPolar.js +1 -6
- package/lib/loading/default.js +43 -27
- package/lib/model/Series.js +4 -4
- package/lib/model/referHelper.js +40 -12
- package/lib/processor/dataSample.js +1 -1
- package/lib/scale/Interval.js +87 -2
- package/lib/scale/Log.js +9 -2
- package/lib/scale/helper.js +1 -43
- package/lib/stream/Scheduler.js +10 -2
- package/lib/theme/dark.js +3 -0
- package/lib/util/format.js +19 -2
- package/lib/util/graphic.js +14 -12
- package/lib/visual/LegendVisualProvider.js +75 -0
- package/lib/visual/VisualMapping.js +1 -1
- package/lib/visual/dataColor.js +2 -12
- package/lib/visual/seriesColor.js +15 -7
- package/lib/visual/symbol.js +12 -2
- package/map/.DS_Store +0 -0
- package/map/js/.DS_Store +0 -0
- package/map/js/china.js +1 -1
- package/map/js/province/.DS_Store +0 -0
- package/map/js/province/chongqing.js +1 -1
- package/map/js/province/gansu.js +2 -2
- package/map/js/province/tianjin.js +1 -28
- package/map/json/.DS_Store +0 -0
- package/map/json/china.json +1 -1
- package/map/json/province/chongqing.json +1 -1
- package/map/json/province/tianjin.json +1 -1
- package/package.json +12 -6
- package/src/.DS_Store +0 -0
- package/src/chart/.DS_Store +0 -0
- package/src/chart/bar/BarSeries.js +15 -1
- package/src/chart/bar/BarView.js +198 -17
- package/src/chart/bar/BaseBarSeries.js +1 -1
- package/src/chart/bar/PictorialBarSeries.js +2 -2
- package/src/chart/candlestick/candlestickVisual.js +1 -1
- package/src/chart/effectScatter/EffectScatterSeries.js +1 -1
- package/src/chart/funnel/FunnelSeries.js +11 -4
- package/src/chart/funnel/funnelLayout.js +179 -53
- package/src/chart/gauge/GaugeSeries.js +0 -1
- package/src/chart/graph/GraphSeries.js +19 -7
- package/src/chart/graph/GraphView.js +28 -10
- package/src/chart/graph/circularLayoutHelper.js +8 -2
- package/src/chart/graph/forceLayout.js +7 -1
- package/src/chart/graph/simpleLayout.js +1 -1
- package/src/chart/graph/simpleLayoutHelper.js +12 -5
- package/src/chart/heatmap/HeatmapView.js +4 -4
- package/src/chart/helper/EffectLine.js +23 -1
- package/src/chart/helper/EffectSymbol.js +2 -1
- package/src/chart/helper/Line.js +122 -37
- package/src/chart/helper/LineDraw.js +5 -1
- package/src/chart/helper/Symbol.js +4 -4
- package/src/chart/helper/createClipPathFromCoordSys.js +4 -0
- package/src/chart/helper/createGraphFromNodeEdge.js +2 -1
- package/src/chart/helper/createListFromArray.js +13 -8
- package/src/chart/helper/createRenderPlanner.js +5 -2
- package/src/chart/helper/multipleGraphEdgeHelper.js +229 -0
- package/src/chart/helper/whiskerBoxCommon.js +21 -16
- package/src/chart/line/LineSeries.js +1 -1
- package/src/chart/line/LineView.js +45 -1
- package/src/chart/lines/LinesSeries.js +1 -3
- package/src/chart/map/MapSeries.js +11 -5
- package/src/chart/pie/PieSeries.js +26 -5
- package/src/chart/pie/PieView.js +20 -15
- package/src/chart/pie/labelLayout.js +114 -22
- package/src/chart/pie/pieLayout.js +20 -7
- package/src/chart/radar/RadarSeries.js +31 -6
- package/src/chart/radar/RadarView.js +4 -2
- package/src/chart/sankey/SankeySeries.js +12 -1
- package/src/chart/sankey/SankeyView.js +75 -30
- package/src/chart/sankey/sankeyLayout.js +25 -5
- package/src/chart/scatter/ScatterSeries.js +1 -1
- package/src/chart/sunburst/SunburstPiece.js +7 -1
- package/src/chart/sunburst/SunburstSeries.js +28 -15
- package/src/chart/sunburst/SunburstView.js +2 -1
- package/src/chart/themeRiver/ThemeRiverSeries.js +25 -30
- package/src/chart/tree/TreeSeries.js +19 -6
- package/src/chart/tree/TreeView.js +156 -23
- package/src/chart/treemap/TreemapSeries.js +23 -5
- package/src/chart/treemap/TreemapView.js +77 -41
- package/src/chart/treemap/treemapLayout.js +2 -2
- package/src/chart/treemap/treemapVisual.js +8 -25
- package/src/component/axis/AngleAxisView.js +75 -7
- package/src/component/axis/AxisBuilder.js +77 -32
- package/src/component/axis/CartesianAxisView.js +47 -83
- package/src/component/axis/RadiusAxisView.js +37 -4
- package/src/component/axis/SingleAxisView.js +21 -4
- package/src/component/axis/axisSplitHelper.js +114 -0
- package/src/component/axisPointer/axisTrigger.js +1 -1
- package/src/component/brush/BrushView.js +8 -1
- package/src/component/brush/visualEncoding.js +6 -3
- package/src/component/dataZoom/SliderZoomView.js +4 -9
- package/src/component/helper/BrushController.js +40 -47
- package/src/component/helper/MapDraw.js +27 -4
- package/src/component/legend/LegendModel.js +3 -3
- package/src/component/legend/LegendView.js +18 -12
- package/src/component/legend/ScrollableLegendView.js +18 -16
- package/src/component/marker/MarkAreaView.js +53 -15
- package/src/component/marker/MarkLineModel.js +2 -1
- package/src/component/marker/MarkLineView.js +3 -1
- package/src/component/marker/MarkPointView.js +7 -1
- package/src/component/marker/MarkerModel.js +3 -2
- package/src/component/marker/markerHelper.js +8 -5
- package/src/component/timeline/SliderTimelineView.js +9 -6
- package/src/component/title.js +4 -3
- package/src/component/toolbox/.DS_Store +0 -0
- package/src/component/toolbox/ToolboxView.js +5 -0
- package/src/component/toolbox/feature/DataView.js +20 -8
- package/src/component/toolbox/feature/DataZoom.js +6 -6
- package/src/component/toolbox/feature/MagicType.js +19 -13
- package/src/component/toolbox/feature/SaveAsImage.js +4 -2
- package/src/component/tooltip/TooltipContent.js +94 -28
- package/src/component/tooltip/TooltipRichContent.js +52 -9
- package/src/component/tooltip/TooltipView.js +14 -12
- package/src/component/visualMap/PiecewiseModel.js +5 -9
- package/src/component/visualMap/VisualMapModel.js +1 -1
- package/src/coord/Axis.js +29 -2
- package/src/coord/View.js +10 -1
- package/src/coord/axisDefault.js +26 -2
- package/src/coord/axisHelper.js +30 -21
- package/src/coord/calendar/Calendar.js +12 -5
- package/src/coord/geo/GeoModel.js +3 -6
- package/src/coord/geo/geoJSONLoader.js +3 -2
- package/src/coord/geo/geoSourceManager.js +3 -2
- package/src/coord/geo/parseGeoJson.js +3 -2
- package/src/coord/radar/Radar.js +6 -8
- package/src/data/DataDimensionInfo.js +135 -0
- package/src/data/Graph.js +0 -5
- package/src/data/List.js +30 -17
- package/src/data/Tree.js +6 -39
- package/src/data/helper/completeDimensions.js +49 -30
- package/src/data/helper/createDimensions.js +2 -0
- package/src/data/helper/sourceHelper.js +216 -124
- package/src/echarts.js +60 -36
- package/src/langEN.js +26 -0
- package/src/layout/barGrid.js +22 -10
- package/src/layout/barPolar.js +4 -6
- package/src/loading/default.js +46 -34
- package/src/model/.DS_Store +0 -0
- package/src/model/Series.js +4 -4
- package/src/model/referHelper.js +34 -11
- package/src/preprocessor/.DS_Store +0 -0
- package/src/processor/dataSample.js +1 -1
- package/src/scale/Interval.js +84 -4
- package/src/scale/Log.js +9 -2
- package/src/scale/helper.js +1 -39
- package/src/stream/Scheduler.js +9 -1
- package/src/theme/dark.js +3 -0
- package/src/util/.DS_Store +0 -0
- package/src/util/format.js +17 -1
- package/src/util/graphic.js +13 -11
- package/src/visual/LegendVisualProvider.js +55 -0
- package/src/visual/VisualMapping.js +1 -1
- package/src/visual/dataColor.js +0 -13
- package/src/visual/seriesColor.js +13 -7
- package/src/visual/symbol.js +11 -2
- package/theme/.DS_Store +0 -0
- package/theme/azul.js +163 -0
- package/theme/bee-inspired.js +178 -0
- package/theme/blue.js +178 -0
- package/theme/caravan.js +178 -0
- package/theme/carp.js +163 -0
- package/theme/cool.js +180 -0
- package/theme/dark-blue.js +168 -0
- package/theme/dark-bold.js +168 -0
- package/theme/dark-digerati.js +168 -0
- package/theme/dark-fresh-cut.js +168 -0
- package/theme/dark-mushroom.js +168 -0
- package/theme/dark.js +69 -62
- package/theme/eduardo.js +178 -0
- package/theme/forest.js +163 -0
- package/theme/fresh-cut.js +163 -0
- package/theme/fruit.js +178 -0
- package/theme/gray.js +220 -0
- package/theme/green.js +222 -0
- package/theme/helianthus.js +263 -0
- package/theme/infographic.js +72 -57
- package/theme/inspired.js +163 -0
- package/theme/jazz.js +163 -0
- package/theme/london.js +163 -0
- package/theme/macarons.js +80 -57
- package/theme/macarons2.js +251 -0
- package/theme/mint.js +155 -0
- package/theme/red-velvet.js +163 -0
- package/theme/red.js +225 -0
- package/theme/roma.js +55 -22
- package/theme/royal.js +163 -0
- package/theme/sakura.js +140 -0
- package/theme/shine.js +52 -45
- package/theme/tech-blue.js +180 -0
- 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
|
-
*
|
|
73
|
-
*
|
|
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
|
-
*
|
|
91
|
-
*
|
|
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
|
-
*
|
|
94
|
-
*
|
|
95
|
-
*
|
|
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
|
-
* @
|
|
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
|
-
}
|
|
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);
|
|
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
|
-
|
|
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
|
-
}
|
|
374
|
-
|
|
375
|
-
|
|
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
|
|
379
|
-
var
|
|
380
|
-
var
|
|
381
|
-
|
|
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
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
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
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
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
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
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
|
-
|
|
450
|
-
|
|
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 {
|
|
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
|
|
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
|
-
|
|
509
|
-
|
|
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
|
|
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
|
|
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
|
|
578
|
-
} else if (
|
|
579
|
-
return
|
|
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
|
|
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;
|