echarts 4.4.0 → 4.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.
- package/.github/ISSUE_TEMPLATE.md +1 -1
- package/.github/workflows/nodejs.yml +31 -0
- package/CONTRIBUTING.md +2 -2
- package/README.md +6 -12
- package/dist/echarts-en.common.js +2354 -1029
- package/dist/echarts-en.common.min.js +1 -1
- package/dist/echarts-en.js +2727 -1138
- package/dist/echarts-en.js.map +1 -1
- package/dist/echarts-en.min.js +1 -1
- package/dist/echarts-en.simple.js +2028 -759
- package/dist/echarts-en.simple.min.js +1 -1
- package/dist/echarts.common.js +2354 -1029
- package/dist/echarts.common.min.js +1 -1
- package/dist/echarts.js +2727 -1138
- package/dist/echarts.js.map +1 -1
- package/dist/echarts.min.js +1 -1
- package/dist/echarts.simple.js +2028 -759
- package/dist/echarts.simple.min.js +1 -1
- package/dist/extension/dataTool.js +9 -0
- package/dist/extension/dataTool.js.map +1 -1
- package/echarts.all.js +1 -1
- package/lib/chart/bar/BarSeries.js +4 -1
- package/lib/chart/bar/BarView.js +20 -6
- package/lib/chart/bar/BaseBarSeries.js +5 -1
- package/lib/chart/candlestick/CandlestickSeries.js +1 -0
- package/lib/chart/candlestick/CandlestickView.js +42 -1
- package/lib/chart/custom.js +1 -0
- package/lib/chart/effectScatter/EffectScatterSeries.js +3 -1
- package/lib/chart/funnel/FunnelSeries.js +15 -5
- package/lib/chart/gauge/GaugeSeries.js +0 -9
- package/lib/chart/graph/GraphSeries.js +11 -4
- package/lib/chart/graph/GraphView.js +28 -8
- package/lib/chart/graph/forceHelper.js +8 -2
- package/lib/chart/graph/forceLayout.js +5 -2
- package/lib/chart/heatmap/HeatmapView.js +4 -4
- package/lib/chart/helper/Symbol.js +8 -0
- package/lib/chart/helper/createListFromArray.js +14 -8
- package/lib/chart/helper/whiskerBoxCommon.js +22 -16
- package/lib/chart/line/LineSeries.js +3 -1
- package/lib/chart/line/LineView.js +8 -2
- package/lib/chart/map/MapSeries.js +8 -1
- package/lib/chart/pie/PieSeries.js +27 -6
- package/lib/chart/pie/PieView.js +1 -1
- package/lib/chart/pie/labelLayout.js +102 -19
- package/lib/chart/pie/pieLayout.js +19 -7
- package/lib/chart/radar/RadarSeries.js +3 -3
- package/lib/chart/sankey/SankeyView.js +28 -9
- package/lib/chart/scatter/ScatterSeries.js +3 -1
- package/lib/chart/themeRiver/ThemeRiverSeries.js +3 -3
- package/lib/chart/tree/TreeSeries.js +15 -1
- package/lib/chart/tree/TreeView.js +4 -2
- package/lib/component/axis/AngleAxisView.js +97 -20
- package/lib/component/axis/AxisBuilder.js +63 -24
- package/lib/component/axis/CartesianAxisView.js +55 -11
- package/lib/component/axis/RadiusAxisView.js +36 -4
- package/lib/component/brush/BrushView.js +6 -0
- package/lib/component/brush/brushAction.js +5 -0
- package/lib/component/dataZoom/DataZoomModel.js +15 -1
- package/lib/component/dataZoom/SliderZoomView.js +4 -10
- package/lib/component/helper/BrushController.js +43 -25
- package/lib/component/legend/LegendModel.js +3 -3
- package/lib/component/legend/LegendView.js +17 -13
- package/lib/component/toolbox/ToolboxView.js +16 -7
- package/lib/component/toolbox/feature/MagicType.js +19 -14
- package/lib/coord/Axis.js +44 -12
- package/lib/coord/axisDefault.js +21 -2
- package/lib/coord/axisTickLabelBuilder.js +9 -1
- package/lib/coord/cartesian/Cartesian2D.js +0 -15
- package/lib/coord/geo/geoJSONLoader.js +1 -1
- package/lib/coord/polar/polarCreator.js +11 -2
- package/lib/coord/radar/Radar.js +3 -1
- package/lib/coord/radar/RadarModel.js +4 -1
- package/lib/data/DataDiffer.js +2 -4
- package/lib/data/DataDimensionInfo.js +157 -0
- package/lib/data/List.js +29 -23
- package/lib/data/Tree.js +2 -1
- 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 +2 -2
- package/lib/layout/barGrid.js +136 -11
- package/lib/layout/barPolar.js +2 -2
- package/lib/model/Global.js +1 -1
- package/lib/model/Series.js +3 -3
- package/lib/model/referHelper.js +40 -12
- package/lib/scale/Interval.js +87 -2
- package/lib/scale/Log.js +9 -2
- package/lib/scale/helper.js +1 -43
- package/lib/theme/dark.js +3 -0
- package/lib/util/graphic.js +1 -2
- package/lib/util/number.js +25 -1
- package/lib/util/shape/sausage.js +93 -0
- package/lib/visual/LegendVisualProvider.js +75 -0
- package/lib/visual/dataColor.js +2 -12
- package/lib/visual/seriesColor.js +15 -7
- package/map/js/china.js +2 -2
- package/map/json/china.json +1 -1
- package/map/json/province/tianjin.json +1 -1
- package/package.json +3 -2
- package/src/chart/bar/BarSeries.js +5 -1
- package/src/chart/bar/BarView.js +24 -8
- package/src/chart/bar/BaseBarSeries.js +5 -1
- package/src/chart/candlestick/CandlestickSeries.js +2 -0
- package/src/chart/candlestick/CandlestickView.js +44 -1
- package/src/chart/custom.js +1 -0
- package/src/chart/effectScatter/EffectScatterSeries.js +1 -1
- package/src/chart/funnel/FunnelSeries.js +11 -4
- package/src/chart/gauge/GaugeSeries.js +0 -6
- package/src/chart/graph/GraphSeries.js +10 -3
- package/src/chart/graph/GraphView.js +26 -8
- package/src/chart/graph/forceHelper.js +7 -3
- package/src/chart/graph/forceLayout.js +6 -3
- package/src/chart/heatmap/HeatmapView.js +4 -4
- package/src/chart/helper/Symbol.js +9 -0
- package/src/chart/helper/createClipPathFromCoordSys.js +5 -1
- package/src/chart/helper/createGraphFromNodeEdge.js +1 -1
- package/src/chart/helper/createListFromArray.js +13 -8
- package/src/chart/helper/whiskerBoxCommon.js +21 -16
- package/src/chart/line/LineSeries.js +1 -1
- package/src/chart/line/LineView.js +6 -1
- package/src/chart/map/MapSeries.js +5 -1
- package/src/chart/pie/PieSeries.js +26 -5
- package/src/chart/pie/PieView.js +1 -1
- package/src/chart/pie/labelLayout.js +114 -22
- package/src/chart/pie/pieLayout.js +20 -7
- package/src/chart/radar/RadarSeries.js +5 -3
- package/src/chart/sankey/SankeyView.js +26 -9
- package/src/chart/scatter/ScatterSeries.js +1 -1
- package/src/chart/themeRiver/ThemeRiverSeries.js +4 -3
- package/src/chart/tree/TreeSeries.js +12 -1
- package/src/chart/tree/TreeView.js +5 -2
- package/src/component/axis/AngleAxisView.js +106 -19
- package/src/component/axis/AxisBuilder.js +78 -33
- package/src/component/axis/CartesianAxisView.js +58 -11
- package/src/component/axis/RadiusAxisView.js +37 -4
- package/src/component/brush/BrushView.js +6 -0
- package/src/component/brush/brushAction.js +6 -1
- package/src/component/dataZoom/DataZoomModel.js +15 -1
- package/src/component/dataZoom/SliderZoomView.js +4 -9
- package/src/component/helper/BrushController.js +50 -28
- package/src/component/legend/LegendModel.js +3 -3
- package/src/component/legend/LegendView.js +18 -12
- package/src/component/toolbox/ToolboxView.js +18 -5
- package/src/component/toolbox/feature/MagicType.js +18 -13
- package/src/coord/Axis.js +48 -13
- package/src/coord/axisDefault.js +25 -1
- package/src/coord/axisTickLabelBuilder.js +10 -0
- package/src/coord/cartesian/Cartesian2D.js +0 -13
- package/src/coord/geo/geoJSONLoader.js +2 -2
- package/src/coord/polar/polarCreator.js +16 -3
- package/src/coord/radar/Radar.js +3 -1
- package/src/coord/radar/RadarModel.js +5 -2
- package/src/data/DataDiffer.js +1 -4
- package/src/data/DataDimensionInfo.js +135 -0
- package/src/data/Graph.js +1 -1
- package/src/data/List.js +33 -20
- package/src/data/Tree.js +3 -1
- 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 +2 -2
- package/src/layout/barGrid.js +136 -13
- package/src/layout/barPolar.js +3 -2
- package/src/model/Global.js +1 -1
- package/src/model/Series.js +3 -3
- package/src/model/referHelper.js +34 -11
- package/src/scale/Interval.js +84 -4
- package/src/scale/Log.js +9 -2
- package/src/scale/helper.js +1 -39
- package/src/theme/dark.js +3 -0
- package/src/util/graphic.js +1 -2
- package/src/util/number.js +22 -2
- package/src/util/shape/sausage.js +93 -0
- package/src/visual/LegendVisualProvider.js +55 -0
- package/src/visual/dataColor.js +0 -13
- package/src/visual/seriesColor.js +13 -7
- 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
- package/.travis.yml +0 -16
|
@@ -19,7 +19,6 @@
|
|
|
19
19
|
|
|
20
20
|
import {__DEV__} from '../../config';
|
|
21
21
|
import {makeInner, getDataItemValue} from '../../util/model';
|
|
22
|
-
import {getCoordSysDefineBySeries} from '../../model/referHelper';
|
|
23
22
|
import {
|
|
24
23
|
createHashMap,
|
|
25
24
|
each,
|
|
@@ -44,6 +43,12 @@ import {
|
|
|
44
43
|
SERIES_LAYOUT_BY_ROW
|
|
45
44
|
} from './sourceType';
|
|
46
45
|
|
|
46
|
+
// The result of `guessOrdinal`.
|
|
47
|
+
export var BE_ORDINAL = {
|
|
48
|
+
Must: 1, // Encounter string but not '-' and not number-like.
|
|
49
|
+
Might: 2, // Encounter string but number-like.
|
|
50
|
+
Not: 3 // Other cases
|
|
51
|
+
};
|
|
47
52
|
|
|
48
53
|
var inner = makeInner();
|
|
49
54
|
|
|
@@ -178,14 +183,6 @@ export function prepareSource(seriesModel) {
|
|
|
178
183
|
data, sourceFormat, seriesLayoutBy, sourceHeader, dimensionsDefine
|
|
179
184
|
);
|
|
180
185
|
|
|
181
|
-
// Note: dataset option does not have `encode`.
|
|
182
|
-
var encodeDefine = seriesOption.encode;
|
|
183
|
-
if (!encodeDefine && datasetModel) {
|
|
184
|
-
encodeDefine = makeDefaultEncode(
|
|
185
|
-
seriesModel, datasetModel, data, sourceFormat, seriesLayoutBy, completeResult
|
|
186
|
-
);
|
|
187
|
-
}
|
|
188
|
-
|
|
189
186
|
inner(seriesModel).source = new Source({
|
|
190
187
|
data: data,
|
|
191
188
|
fromDataset: fromDataset,
|
|
@@ -194,7 +191,8 @@ export function prepareSource(seriesModel) {
|
|
|
194
191
|
dimensionsDefine: completeResult.dimensionsDefine,
|
|
195
192
|
startIndex: completeResult.startIndex,
|
|
196
193
|
dimensionsDetectCount: completeResult.dimensionsDetectCount,
|
|
197
|
-
|
|
194
|
+
// Note: dataset option does not have `encode`.
|
|
195
|
+
encodeDefine: seriesOption.encode
|
|
198
196
|
});
|
|
199
197
|
}
|
|
200
198
|
|
|
@@ -206,7 +204,6 @@ function completeBySourceData(data, sourceFormat, seriesLayoutBy, sourceHeader,
|
|
|
206
204
|
|
|
207
205
|
var dimensionsDetectCount;
|
|
208
206
|
var startIndex;
|
|
209
|
-
var findPotentialName;
|
|
210
207
|
|
|
211
208
|
if (sourceFormat === SOURCE_FORMAT_ARRAY_ROWS) {
|
|
212
209
|
// Rule: Most of the first line are string: it is header.
|
|
@@ -249,13 +246,11 @@ function completeBySourceData(data, sourceFormat, seriesLayoutBy, sourceHeader,
|
|
|
249
246
|
else if (sourceFormat === SOURCE_FORMAT_OBJECT_ROWS) {
|
|
250
247
|
if (!dimensionsDefine) {
|
|
251
248
|
dimensionsDefine = objectRowsCollectDimensions(data);
|
|
252
|
-
findPotentialName = true;
|
|
253
249
|
}
|
|
254
250
|
}
|
|
255
251
|
else if (sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS) {
|
|
256
252
|
if (!dimensionsDefine) {
|
|
257
253
|
dimensionsDefine = [];
|
|
258
|
-
findPotentialName = true;
|
|
259
254
|
each(data, function (colArr, key) {
|
|
260
255
|
dimensionsDefine.push(key);
|
|
261
256
|
});
|
|
@@ -271,21 +266,10 @@ function completeBySourceData(data, sourceFormat, seriesLayoutBy, sourceHeader,
|
|
|
271
266
|
}
|
|
272
267
|
}
|
|
273
268
|
|
|
274
|
-
var potentialNameDimIndex;
|
|
275
|
-
if (findPotentialName) {
|
|
276
|
-
each(dimensionsDefine, function (dim, idx) {
|
|
277
|
-
if ((isObject(dim) ? dim.name : dim) === 'name') {
|
|
278
|
-
potentialNameDimIndex = idx;
|
|
279
|
-
}
|
|
280
|
-
});
|
|
281
|
-
}
|
|
282
|
-
|
|
283
269
|
return {
|
|
284
270
|
startIndex: startIndex,
|
|
285
271
|
dimensionsDefine: normalizeDimensionsDefine(dimensionsDefine),
|
|
286
|
-
dimensionsDetectCount: dimensionsDetectCount
|
|
287
|
-
potentialNameDimIndex: potentialNameDimIndex
|
|
288
|
-
// TODO: potentialIdDimIdx
|
|
272
|
+
dimensionsDetectCount: dimensionsDetectCount
|
|
289
273
|
};
|
|
290
274
|
}
|
|
291
275
|
|
|
@@ -359,103 +343,198 @@ function objectRowsCollectDimensions(data) {
|
|
|
359
343
|
}
|
|
360
344
|
}
|
|
361
345
|
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
346
|
+
/**
|
|
347
|
+
* [The strategy of the arrengment of data dimensions for dataset]:
|
|
348
|
+
* "value way": all axes are non-category axes. So series one by one take
|
|
349
|
+
* several (the number is coordSysDims.length) dimensions from dataset.
|
|
350
|
+
* The result of data arrengment of data dimensions like:
|
|
351
|
+
* | ser0_x | ser0_y | ser1_x | ser1_y | ser2_x | ser2_y |
|
|
352
|
+
* "category way": at least one axis is category axis. So the the first data
|
|
353
|
+
* dimension is always mapped to the first category axis and shared by
|
|
354
|
+
* all of the series. The other data dimensions are taken by series like
|
|
355
|
+
* "value way" does.
|
|
356
|
+
* The result of data arrengment of data dimensions like:
|
|
357
|
+
* | ser_shared_x | ser0_y | ser1_y | ser2_y |
|
|
358
|
+
*
|
|
359
|
+
* @param {Array.<Object|string>} coordDimensions [{name: <string>, type: <string>, dimsDef: <Array>}, ...]
|
|
360
|
+
* @param {module:model/Series} seriesModel
|
|
361
|
+
* @param {module:data/Source} source
|
|
362
|
+
* @return {Object} encode Never be `null/undefined`.
|
|
363
|
+
*/
|
|
364
|
+
export function makeSeriesEncodeForAxisCoordSys(coordDimensions, seriesModel, source) {
|
|
369
365
|
var encode = {};
|
|
370
|
-
|
|
371
|
-
|
|
366
|
+
|
|
367
|
+
var datasetModel = getDatasetModel(seriesModel);
|
|
368
|
+
// Currently only make default when using dataset, util more reqirements occur.
|
|
369
|
+
if (!datasetModel || !coordDimensions) {
|
|
370
|
+
return encode;
|
|
371
|
+
}
|
|
372
|
+
|
|
372
373
|
var encodeItemName = [];
|
|
373
374
|
var encodeSeriesName = [];
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
var
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
375
|
+
|
|
376
|
+
var ecModel = seriesModel.ecModel;
|
|
377
|
+
var datasetMap = inner(ecModel).datasetMap;
|
|
378
|
+
var key = datasetModel.uid + '_' + source.seriesLayoutBy;
|
|
379
|
+
|
|
380
|
+
var baseCategoryDimIndex;
|
|
381
|
+
var categoryWayValueDimStart;
|
|
382
|
+
coordDimensions = coordDimensions.slice();
|
|
383
|
+
each(coordDimensions, function (coordDimInfo, coordDimIdx) {
|
|
384
|
+
!isObject(coordDimInfo) && (coordDimensions[coordDimIdx] = {name: coordDimInfo});
|
|
385
|
+
if (coordDimInfo.type === 'ordinal' && baseCategoryDimIndex == null) {
|
|
386
|
+
baseCategoryDimIndex = coordDimIdx;
|
|
387
|
+
categoryWayValueDimStart = getDataDimCountOnCoordDim(coordDimensions[coordDimIdx]);
|
|
388
|
+
}
|
|
389
|
+
encode[coordDimInfo.name] = [];
|
|
390
|
+
});
|
|
391
|
+
|
|
392
|
+
var datasetRecord = datasetMap.get(key)
|
|
393
|
+
|| datasetMap.set(key, {categoryWayDim: categoryWayValueDimStart, valueWayDim: 0});
|
|
394
|
+
|
|
395
|
+
// TODO
|
|
396
|
+
// Auto detect first time axis and do arrangement.
|
|
397
|
+
each(coordDimensions, function (coordDimInfo, coordDimIdx) {
|
|
398
|
+
var coordDimName = coordDimInfo.name;
|
|
399
|
+
var count = getDataDimCountOnCoordDim(coordDimInfo);
|
|
400
|
+
|
|
401
|
+
// In value way.
|
|
402
|
+
if (baseCategoryDimIndex == null) {
|
|
403
|
+
var start = datasetRecord.valueWayDim;
|
|
404
|
+
pushDim(encode[coordDimName], start, count);
|
|
405
|
+
pushDim(encodeSeriesName, start, count);
|
|
406
|
+
datasetRecord.valueWayDim += count;
|
|
407
|
+
|
|
408
|
+
// ??? TODO give a better default series name rule?
|
|
409
|
+
// especially when encode x y specified.
|
|
410
|
+
// consider: when mutiple series share one dimension
|
|
411
|
+
// category axis, series name should better use
|
|
412
|
+
// the other dimsion name. On the other hand, use
|
|
413
|
+
// both dimensions name.
|
|
414
|
+
}
|
|
415
|
+
// In category way, the first category axis.
|
|
416
|
+
else if (baseCategoryDimIndex === coordDimIdx) {
|
|
417
|
+
pushDim(encode[coordDimName], 0, count);
|
|
418
|
+
pushDim(encodeItemName, 0, count);
|
|
419
|
+
}
|
|
420
|
+
// In category way, the other axis.
|
|
421
|
+
else {
|
|
422
|
+
var start = datasetRecord.categoryWayDim;
|
|
423
|
+
pushDim(encode[coordDimName], start, count);
|
|
424
|
+
pushDim(encodeSeriesName, start, count);
|
|
425
|
+
datasetRecord.categoryWayDim += count;
|
|
426
|
+
}
|
|
427
|
+
});
|
|
428
|
+
|
|
429
|
+
function pushDim(dimIdxArr, idxFrom, idxCount) {
|
|
430
|
+
for (var i = 0; i < idxCount; i++) {
|
|
431
|
+
dimIdxArr.push(idxFrom + i);
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
|
|
435
|
+
function getDataDimCountOnCoordDim(coordDimInfo) {
|
|
436
|
+
var dimsDef = coordDimInfo.dimsDef;
|
|
437
|
+
return dimsDef ? dimsDef.length : 1;
|
|
438
|
+
}
|
|
439
|
+
|
|
440
|
+
encodeItemName.length && (encode.itemName = encodeItemName);
|
|
441
|
+
encodeSeriesName.length && (encode.seriesName = encodeSeriesName);
|
|
442
|
+
|
|
443
|
+
return encode;
|
|
444
|
+
}
|
|
445
|
+
|
|
446
|
+
/**
|
|
447
|
+
* Work for data like [{name: ..., value: ...}, ...].
|
|
448
|
+
*
|
|
449
|
+
* @param {module:model/Series} seriesModel
|
|
450
|
+
* @param {module:data/Source} source
|
|
451
|
+
* @return {Object} encode Never be `null/undefined`.
|
|
452
|
+
*/
|
|
453
|
+
export function makeSeriesEncodeForNameBased(seriesModel, source, dimCount) {
|
|
454
|
+
var encode = {};
|
|
455
|
+
|
|
456
|
+
var datasetModel = getDatasetModel(seriesModel);
|
|
457
|
+
// Currently only make default when using dataset, util more reqirements occur.
|
|
458
|
+
if (!datasetModel) {
|
|
459
|
+
return encode;
|
|
460
|
+
}
|
|
461
|
+
|
|
462
|
+
var sourceFormat = source.sourceFormat;
|
|
463
|
+
var dimensionsDefine = source.dimensionsDefine;
|
|
464
|
+
|
|
465
|
+
var potentialNameDimIndex;
|
|
466
|
+
if (sourceFormat === SOURCE_FORMAT_OBJECT_ROWS || sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS) {
|
|
467
|
+
each(dimensionsDefine, function (dim, idx) {
|
|
468
|
+
if ((isObject(dim) ? dim.name : dim) === 'name') {
|
|
469
|
+
potentialNameDimIndex = idx;
|
|
426
470
|
}
|
|
427
471
|
});
|
|
428
472
|
}
|
|
429
|
-
|
|
430
|
-
//
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
var
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
473
|
+
|
|
474
|
+
// idxResult: {v, n}.
|
|
475
|
+
var idxResult = (function () {
|
|
476
|
+
|
|
477
|
+
var idxRes0 = {};
|
|
478
|
+
var idxRes1 = {};
|
|
479
|
+
var guessRecords = [];
|
|
480
|
+
|
|
481
|
+
// 5 is an experience value.
|
|
482
|
+
for (var i = 0, len = Math.min(5, dimCount); i < len; i++) {
|
|
483
|
+
var guessResult = doGuessOrdinal(
|
|
484
|
+
source.data, sourceFormat, source.seriesLayoutBy,
|
|
485
|
+
dimensionsDefine, source.startIndex, i
|
|
486
|
+
);
|
|
487
|
+
guessRecords.push(guessResult);
|
|
488
|
+
var isPureNumber = guessResult === BE_ORDINAL.Not;
|
|
489
|
+
|
|
490
|
+
// [Strategy of idxRes0]: find the first BE_ORDINAL.Not as the value dim,
|
|
491
|
+
// and then find a name dim with the priority:
|
|
492
|
+
// "BE_ORDINAL.Might|BE_ORDINAL.Must" > "other dim" > "the value dim itself".
|
|
493
|
+
if (isPureNumber && idxRes0.v == null && i !== potentialNameDimIndex) {
|
|
494
|
+
idxRes0.v = i;
|
|
495
|
+
}
|
|
496
|
+
if (idxRes0.n == null
|
|
497
|
+
|| (idxRes0.n === idxRes0.v)
|
|
498
|
+
|| (!isPureNumber && guessRecords[idxRes0.n] === BE_ORDINAL.Not)
|
|
499
|
+
) {
|
|
500
|
+
idxRes0.n = i;
|
|
501
|
+
}
|
|
502
|
+
if (fulfilled(idxRes0) && guessRecords[idxRes0.n] !== BE_ORDINAL.Not) {
|
|
503
|
+
return idxRes0;
|
|
504
|
+
}
|
|
505
|
+
|
|
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
|
+
if (!isPureNumber) {
|
|
513
|
+
if (guessResult === BE_ORDINAL.Might && idxRes1.v == null && i !== potentialNameDimIndex) {
|
|
514
|
+
idxRes1.v = i;
|
|
515
|
+
}
|
|
516
|
+
if (idxRes1.n == null || (idxRes1.n === idxRes1.v)) {
|
|
517
|
+
idxRes1.n = i;
|
|
518
|
+
}
|
|
441
519
|
}
|
|
442
520
|
}
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|| Math.max(firstNotOrdinal - 1, 0);
|
|
447
|
-
// By default, label use itemName in charts.
|
|
448
|
-
// So we dont set encodeLabel here.
|
|
449
|
-
encodeSeriesName.push(nameDimIndex);
|
|
450
|
-
encodeItemName.push(nameDimIndex);
|
|
451
|
-
// encodeTooltip.push(firstNotOrdinal);
|
|
521
|
+
|
|
522
|
+
function fulfilled(idxResult) {
|
|
523
|
+
return idxResult.v != null && idxResult.n != null;
|
|
452
524
|
}
|
|
453
|
-
}
|
|
454
525
|
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
526
|
+
return fulfilled(idxRes0) ? idxRes0 : fulfilled(idxRes1) ? idxRes1 : null;
|
|
527
|
+
})();
|
|
528
|
+
|
|
529
|
+
if (idxResult) {
|
|
530
|
+
encode.value = idxResult.v;
|
|
531
|
+
// `potentialNameDimIndex` has highest priority.
|
|
532
|
+
var nameDimIndex = potentialNameDimIndex != null ? potentialNameDimIndex : idxResult.n;
|
|
533
|
+
// By default, label use itemName in charts.
|
|
534
|
+
// So we dont set encodeLabel here.
|
|
535
|
+
encode.itemName = [nameDimIndex];
|
|
536
|
+
encode.seriesName = [nameDimIndex];
|
|
537
|
+
}
|
|
459
538
|
|
|
460
539
|
return encode;
|
|
461
540
|
}
|
|
@@ -483,7 +562,7 @@ function getDatasetModel(seriesModel) {
|
|
|
483
562
|
*
|
|
484
563
|
* @param {module:echars/data/Source} source
|
|
485
564
|
* @param {number} dimIndex
|
|
486
|
-
* @return {
|
|
565
|
+
* @return {BE_ORDINAL} guess result.
|
|
487
566
|
*/
|
|
488
567
|
export function guessOrdinal(source, dimIndex) {
|
|
489
568
|
return doGuessOrdinal(
|
|
@@ -497,6 +576,7 @@ export function guessOrdinal(source, dimIndex) {
|
|
|
497
576
|
}
|
|
498
577
|
|
|
499
578
|
// dimIndex may be overflow source data.
|
|
579
|
+
// return {BE_ORDINAL}
|
|
500
580
|
function doGuessOrdinal(
|
|
501
581
|
data, sourceFormat, seriesLayoutBy, dimensionsDefine, startIndex, dimIndex
|
|
502
582
|
) {
|
|
@@ -505,15 +585,26 @@ function doGuessOrdinal(
|
|
|
505
585
|
var maxLoop = 5;
|
|
506
586
|
|
|
507
587
|
if (isTypedArray(data)) {
|
|
508
|
-
return
|
|
588
|
+
return BE_ORDINAL.Not;
|
|
509
589
|
}
|
|
510
590
|
|
|
511
591
|
// When sourceType is 'objectRows' or 'keyedColumns', dimensionsDefine
|
|
512
592
|
// always exists in source.
|
|
513
593
|
var dimName;
|
|
594
|
+
var dimType;
|
|
514
595
|
if (dimensionsDefine) {
|
|
515
|
-
|
|
516
|
-
|
|
596
|
+
var dimDefItem = dimensionsDefine[dimIndex];
|
|
597
|
+
if (isObject(dimDefItem)) {
|
|
598
|
+
dimName = dimDefItem.name;
|
|
599
|
+
dimType = dimDefItem.type;
|
|
600
|
+
}
|
|
601
|
+
else if (isString(dimDefItem)) {
|
|
602
|
+
dimName = dimDefItem;
|
|
603
|
+
}
|
|
604
|
+
}
|
|
605
|
+
|
|
606
|
+
if (dimType != null) {
|
|
607
|
+
return dimType === 'ordinal' ? BE_ORDINAL.Must : BE_ORDINAL.Not;
|
|
517
608
|
}
|
|
518
609
|
|
|
519
610
|
if (sourceFormat === SOURCE_FORMAT_ARRAY_ROWS) {
|
|
@@ -536,7 +627,7 @@ function doGuessOrdinal(
|
|
|
536
627
|
}
|
|
537
628
|
else if (sourceFormat === SOURCE_FORMAT_OBJECT_ROWS) {
|
|
538
629
|
if (!dimName) {
|
|
539
|
-
return;
|
|
630
|
+
return BE_ORDINAL.Not;
|
|
540
631
|
}
|
|
541
632
|
for (var i = 0; i < data.length && i < maxLoop; i++) {
|
|
542
633
|
var item = data[i];
|
|
@@ -547,11 +638,11 @@ function doGuessOrdinal(
|
|
|
547
638
|
}
|
|
548
639
|
else if (sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS) {
|
|
549
640
|
if (!dimName) {
|
|
550
|
-
return;
|
|
641
|
+
return BE_ORDINAL.Not;
|
|
551
642
|
}
|
|
552
643
|
var sample = data[dimName];
|
|
553
644
|
if (!sample || isTypedArray(sample)) {
|
|
554
|
-
return
|
|
645
|
+
return BE_ORDINAL.Not;
|
|
555
646
|
}
|
|
556
647
|
for (var i = 0; i < sample.length && i < maxLoop; i++) {
|
|
557
648
|
if ((result = detectValue(sample[i])) != null) {
|
|
@@ -564,7 +655,7 @@ function doGuessOrdinal(
|
|
|
564
655
|
var item = data[i];
|
|
565
656
|
var val = getDataItemValue(item);
|
|
566
657
|
if (!isArray(val)) {
|
|
567
|
-
return
|
|
658
|
+
return BE_ORDINAL.Not;
|
|
568
659
|
}
|
|
569
660
|
if ((result = detectValue(val[dimIndex])) != null) {
|
|
570
661
|
return result;
|
|
@@ -573,15 +664,16 @@ function doGuessOrdinal(
|
|
|
573
664
|
}
|
|
574
665
|
|
|
575
666
|
function detectValue(val) {
|
|
667
|
+
var beStr = isString(val);
|
|
576
668
|
// Consider usage convenience, '1', '2' will be treated as "number".
|
|
577
669
|
// `isFinit('')` get `true`.
|
|
578
670
|
if (val != null && isFinite(val) && val !== '') {
|
|
579
|
-
return
|
|
671
|
+
return beStr ? BE_ORDINAL.Might : BE_ORDINAL.Not;
|
|
580
672
|
}
|
|
581
|
-
else if (
|
|
582
|
-
return
|
|
673
|
+
else if (beStr && val !== '-') {
|
|
674
|
+
return BE_ORDINAL.Must;
|
|
583
675
|
}
|
|
584
676
|
}
|
|
585
677
|
|
|
586
|
-
return
|
|
678
|
+
return BE_ORDINAL.Not;
|
|
587
679
|
}
|
package/src/echarts.js
CHANGED
|
@@ -51,10 +51,10 @@ var isFunction = zrUtil.isFunction;
|
|
|
51
51
|
var isObject = zrUtil.isObject;
|
|
52
52
|
var parseClassType = ComponentModel.parseClassType;
|
|
53
53
|
|
|
54
|
-
export var version = '4.
|
|
54
|
+
export var version = '4.6.0';
|
|
55
55
|
|
|
56
56
|
export var dependencies = {
|
|
57
|
-
zrender: '4.
|
|
57
|
+
zrender: '4.2.0'
|
|
58
58
|
};
|
|
59
59
|
|
|
60
60
|
var TEST_FRAME_REMAIN_TIME = 1;
|