echarts 4.5.0-rc.2 → 4.8.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/pull_request_template.md +66 -0
- package/.github/workflows/nodejs.yml +12 -2
- package/CONTRIBUTING.md +16 -160
- package/NOTICE +1 -1
- package/README.md +2 -2
- package/dist/echarts-en.common.js +2808 -1188
- package/dist/echarts-en.common.min.js +1 -1
- package/dist/echarts-en.js +3559 -1437
- package/dist/echarts-en.js.map +1 -1
- package/dist/echarts-en.min.js +1 -1
- package/dist/echarts-en.simple.js +2453 -1002
- package/dist/echarts-en.simple.min.js +1 -1
- package/dist/echarts.common.js +2782 -1188
- package/dist/echarts.common.min.js +1 -1
- package/dist/echarts.js +3533 -1437
- package/dist/echarts.js.map +1 -1
- package/dist/echarts.min.js +1 -1
- package/dist/echarts.simple.js +2427 -1002
- package/dist/echarts.simple.min.js +1 -1
- package/dist/extension/bmap.js +336 -2
- package/dist/extension/bmap.js.map +1 -1
- package/dist/extension/bmap.min.js +1 -1
- package/extension/bmap/BMapView.js +6 -2
- package/extension-src/bmap/BMapView.js +3 -2
- package/lib/chart/bar/BarSeries.js +14 -1
- package/lib/chart/bar/BarView.js +161 -16
- package/lib/chart/bar/BaseBarSeries.js +3 -1
- package/lib/chart/candlestick/candlestickVisual.js +1 -1
- package/lib/chart/effectScatter/EffectScatterSeries.js +3 -1
- package/lib/chart/funnel/FunnelSeries.js +13 -5
- package/lib/chart/gauge/GaugeSeries.js +0 -2
- package/lib/chart/graph/GraphSeries.js +11 -5
- package/lib/chart/graph/GraphView.js +30 -12
- 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 +94 -33
- package/lib/chart/helper/LineDraw.js +5 -1
- package/lib/chart/helper/Symbol.js +1 -2
- 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/whiskerBoxCommon.js +22 -16
- package/lib/chart/line/LineSeries.js +3 -1
- package/lib/chart/line/LineView.js +41 -2
- package/lib/chart/map/MapSeries.js +11 -3
- 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 +23 -3
- 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 +1 -0
- package/lib/chart/sunburst/SunburstSeries.js +12 -7
- package/lib/chart/sunburst/SunburstView.js +5 -1
- package/lib/chart/themeRiver/ThemeRiverSeries.js +3 -3
- package/lib/chart/tree/TreeSeries.js +20 -3
- package/lib/chart/tree/TreeView.js +151 -25
- package/lib/chart/treemap/TreemapSeries.js +15 -3
- package/lib/chart/treemap/TreemapView.js +80 -38
- 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/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/MarkLineModel.js +2 -1
- package/lib/component/marker/markerHelper.js +7 -4
- package/lib/component/title.js +6 -2
- package/lib/component/toolbox/ToolboxView.js +5 -1
- package/lib/component/toolbox/feature/MagicType.js +20 -14
- package/lib/component/toolbox/feature/SaveAsImage.js +2 -1
- package/lib/component/tooltip/TooltipContent.js +60 -23
- package/lib/component/tooltip/TooltipView.js +7 -8
- package/lib/component/visualMap/PiecewiseModel.js +3 -6
- package/lib/coord/Axis.js +30 -2
- package/lib/coord/View.js +9 -0
- package/lib/coord/axisDefault.js +21 -2
- package/lib/coord/axisHelper.js +22 -16
- package/lib/coord/calendar/Calendar.js +8 -4
- 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/List.js +25 -19
- package/lib/data/Tree.js +9 -19
- 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 +0 -5
- package/lib/loading/default.js +43 -27
- package/lib/model/Series.js +4 -4
- 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/stream/Scheduler.js +9 -1
- 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/dataColor.js +2 -12
- package/lib/visual/seriesColor.js +15 -7
- package/lib/visual/symbol.js +12 -2
- package/map/js/china.js +1 -1
- 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/china.json +1 -1
- package/map/json/province/chongqing.json +1 -1
- package/map/json/province/tianjin.json +1 -1
- package/package.json +11 -6
- package/src/chart/bar/BarSeries.js +15 -1
- package/src/chart/bar/BarView.js +162 -15
- package/src/chart/bar/BaseBarSeries.js +1 -1
- package/src/chart/candlestick/candlestickVisual.js +1 -1
- package/src/chart/effectScatter/EffectScatterSeries.js +1 -1
- package/src/chart/funnel/FunnelSeries.js +10 -4
- package/src/chart/gauge/GaugeSeries.js +0 -1
- package/src/chart/graph/GraphSeries.js +10 -4
- package/src/chart/graph/GraphView.js +28 -10
- 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 +84 -26
- package/src/chart/helper/LineDraw.js +5 -1
- package/src/chart/helper/Symbol.js +2 -2
- package/src/chart/helper/createClipPathFromCoordSys.js +4 -0
- package/src/chart/helper/createListFromArray.js +13 -8
- package/src/chart/helper/createRenderPlanner.js +5 -2
- 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/map/MapSeries.js +8 -3
- 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 +27 -3
- 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 +2 -0
- package/src/chart/sunburst/SunburstSeries.js +12 -7
- package/src/chart/sunburst/SunburstView.js +2 -1
- package/src/chart/themeRiver/ThemeRiverSeries.js +4 -3
- package/src/chart/tree/TreeSeries.js +19 -6
- package/src/chart/tree/TreeView.js +155 -22
- package/src/chart/treemap/TreemapSeries.js +15 -5
- package/src/chart/treemap/TreemapView.js +77 -41
- 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/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/MarkLineModel.js +2 -1
- package/src/component/marker/markerHelper.js +8 -5
- package/src/component/title.js +3 -2
- package/src/component/toolbox/ToolboxView.js +5 -0
- package/src/component/toolbox/feature/MagicType.js +19 -13
- package/src/component/toolbox/feature/SaveAsImage.js +2 -1
- package/src/component/tooltip/TooltipContent.js +59 -22
- package/src/component/tooltip/TooltipView.js +10 -8
- package/src/component/visualMap/PiecewiseModel.js +5 -9
- package/src/coord/Axis.js +29 -2
- package/src/coord/View.js +10 -1
- package/src/coord/axisDefault.js +25 -1
- package/src/coord/axisHelper.js +26 -19
- package/src/coord/calendar/Calendar.js +12 -5
- 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/List.js +29 -16
- package/src/data/Tree.js +12 -17
- 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 +0 -4
- package/src/loading/default.js +46 -34
- package/src/model/Series.js +4 -4
- 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/stream/Scheduler.js +8 -0
- package/src/theme/dark.js +3 -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/dataColor.js +0 -13
- package/src/visual/seriesColor.js +13 -7
- package/src/visual/symbol.js +11 -2
- 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/lib/chart/helper/Line.js
CHANGED
|
@@ -161,40 +161,93 @@ function updateSymbolAndLabelBeforeLineUpdate() {
|
|
|
161
161
|
var textPosition;
|
|
162
162
|
var textAlign;
|
|
163
163
|
var textVerticalAlign;
|
|
164
|
-
var
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
164
|
+
var textOrigin;
|
|
165
|
+
var distance = label.__labelDistance;
|
|
166
|
+
var distanceX = distance[0] * invScale;
|
|
167
|
+
var distanceY = distance[1] * invScale;
|
|
168
|
+
var halfPercent = percent / 2;
|
|
169
|
+
var tangent = line.tangentAt(halfPercent);
|
|
170
|
+
var n = [tangent[1], -tangent[0]];
|
|
171
|
+
var cp = line.pointAt(halfPercent);
|
|
172
|
+
|
|
173
|
+
if (n[1] > 0) {
|
|
174
|
+
n[0] = -n[0];
|
|
175
|
+
n[1] = -n[1];
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
var dir = tangent[0] < 0 ? -1 : 1;
|
|
179
|
+
|
|
180
|
+
if (label.__position !== 'start' && label.__position !== 'end') {
|
|
181
|
+
var rotation = -Math.atan2(tangent[1], tangent[0]);
|
|
182
|
+
|
|
183
|
+
if (toPos[0] < fromPos[0]) {
|
|
184
|
+
rotation = Math.PI + rotation;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
label.attr('rotation', rotation);
|
|
188
|
+
}
|
|
186
189
|
|
|
187
|
-
|
|
188
|
-
rotation = Math.PI + rotation;
|
|
189
|
-
}
|
|
190
|
+
var dy;
|
|
190
191
|
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
192
|
+
switch (label.__position) {
|
|
193
|
+
case 'insideStartTop':
|
|
194
|
+
case 'insideMiddleTop':
|
|
195
|
+
case 'insideEndTop':
|
|
196
|
+
case 'middle':
|
|
197
|
+
dy = -distanceY;
|
|
198
|
+
textVerticalAlign = 'bottom';
|
|
199
|
+
break;
|
|
200
|
+
|
|
201
|
+
case 'insideStartBottom':
|
|
202
|
+
case 'insideMiddleBottom':
|
|
203
|
+
case 'insideEndBottom':
|
|
204
|
+
dy = distanceY;
|
|
205
|
+
textVerticalAlign = 'top';
|
|
206
|
+
break;
|
|
207
|
+
|
|
208
|
+
default:
|
|
209
|
+
dy = 0;
|
|
210
|
+
textVerticalAlign = 'middle';
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
switch (label.__position) {
|
|
214
|
+
case 'end':
|
|
215
|
+
textPosition = [d[0] * distanceX + toPos[0], d[1] * distanceY + toPos[1]];
|
|
216
|
+
textAlign = d[0] > 0.8 ? 'left' : d[0] < -0.8 ? 'right' : 'center';
|
|
217
|
+
textVerticalAlign = d[1] > 0.8 ? 'top' : d[1] < -0.8 ? 'bottom' : 'middle';
|
|
218
|
+
break;
|
|
219
|
+
|
|
220
|
+
case 'start':
|
|
221
|
+
textPosition = [-d[0] * distanceX + fromPos[0], -d[1] * distanceY + fromPos[1]];
|
|
222
|
+
textAlign = d[0] > 0.8 ? 'right' : d[0] < -0.8 ? 'left' : 'center';
|
|
223
|
+
textVerticalAlign = d[1] > 0.8 ? 'bottom' : d[1] < -0.8 ? 'top' : 'middle';
|
|
224
|
+
break;
|
|
225
|
+
|
|
226
|
+
case 'insideStartTop':
|
|
227
|
+
case 'insideStart':
|
|
228
|
+
case 'insideStartBottom':
|
|
229
|
+
textPosition = [distanceX * dir + fromPos[0], fromPos[1] + dy];
|
|
230
|
+
textAlign = tangent[0] < 0 ? 'right' : 'left';
|
|
231
|
+
textOrigin = [-distanceX * dir, -dy];
|
|
232
|
+
break;
|
|
233
|
+
|
|
234
|
+
case 'insideMiddleTop':
|
|
235
|
+
case 'insideMiddle':
|
|
236
|
+
case 'insideMiddleBottom':
|
|
237
|
+
case 'middle':
|
|
238
|
+
textPosition = [cp[0], cp[1] + dy];
|
|
239
|
+
textAlign = 'center';
|
|
240
|
+
textOrigin = [0, -dy];
|
|
241
|
+
break;
|
|
242
|
+
|
|
243
|
+
case 'insideEndTop':
|
|
244
|
+
case 'insideEnd':
|
|
245
|
+
case 'insideEndBottom':
|
|
246
|
+
textPosition = [-distanceX * dir + toPos[0], toPos[1] + dy];
|
|
247
|
+
textAlign = tangent[0] >= 0 ? 'right' : 'left';
|
|
248
|
+
textOrigin = [distanceX * dir, -dy];
|
|
249
|
+
break;
|
|
250
|
+
}
|
|
198
251
|
|
|
199
252
|
label.attr({
|
|
200
253
|
style: {
|
|
@@ -203,7 +256,8 @@ function updateSymbolAndLabelBeforeLineUpdate() {
|
|
|
203
256
|
textAlign: label.__textAlign || textAlign
|
|
204
257
|
},
|
|
205
258
|
position: textPosition,
|
|
206
|
-
scale: [invScale, invScale]
|
|
259
|
+
scale: [invScale, invScale],
|
|
260
|
+
origin: textOrigin
|
|
207
261
|
});
|
|
208
262
|
}
|
|
209
263
|
}
|
|
@@ -347,6 +401,13 @@ lineProto._updateCommonStl = function (lineData, idx, seriesScope) {
|
|
|
347
401
|
label.__verticalAlign = labelStyle.textVerticalAlign; // 'start', 'middle', 'end'
|
|
348
402
|
|
|
349
403
|
label.__position = labelModel.get('position') || 'middle';
|
|
404
|
+
var distance = labelModel.get('distance');
|
|
405
|
+
|
|
406
|
+
if (!zrUtil.isArray(distance)) {
|
|
407
|
+
distance = [distance, distance];
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
label.__labelDistance = distance;
|
|
350
411
|
}
|
|
351
412
|
|
|
352
413
|
if (emphasisText != null) {
|
|
@@ -134,9 +134,13 @@ lineDrawProto.incrementalPrepareUpdate = function (lineData) {
|
|
|
134
134
|
this.group.removeAll();
|
|
135
135
|
};
|
|
136
136
|
|
|
137
|
+
function isEffectObject(el) {
|
|
138
|
+
return el.animators && el.animators.length > 0;
|
|
139
|
+
}
|
|
140
|
+
|
|
137
141
|
lineDrawProto.incrementalUpdate = function (taskParams, lineData) {
|
|
138
142
|
function updateIncrementalAndHover(el) {
|
|
139
|
-
if (!el.isGroup) {
|
|
143
|
+
if (!el.isGroup && !isEffectObject(el)) {
|
|
140
144
|
el.incremental = el.useHoverLayer = true;
|
|
141
145
|
}
|
|
142
146
|
}
|
|
@@ -267,7 +267,6 @@ symbolProto._updateCommon = function (data, idx, symbolSize, seriesScope) {
|
|
|
267
267
|
|
|
268
268
|
var itemStyle = seriesScope && seriesScope.itemStyle;
|
|
269
269
|
var hoverItemStyle = seriesScope && seriesScope.hoverItemStyle;
|
|
270
|
-
var symbolRotate = seriesScope && seriesScope.symbolRotate;
|
|
271
270
|
var symbolOffset = seriesScope && seriesScope.symbolOffset;
|
|
272
271
|
var labelModel = seriesScope && seriesScope.labelModel;
|
|
273
272
|
var hoverLabelModel = seriesScope && seriesScope.hoverLabelModel;
|
|
@@ -280,7 +279,6 @@ symbolProto._updateCommon = function (data, idx, symbolSize, seriesScope) {
|
|
|
280
279
|
|
|
281
280
|
itemStyle = itemModel.getModel(normalStyleAccessPath).getItemStyle(['color']);
|
|
282
281
|
hoverItemStyle = itemModel.getModel(emphasisStyleAccessPath).getItemStyle();
|
|
283
|
-
symbolRotate = itemModel.getShallow('symbolRotate');
|
|
284
282
|
symbolOffset = itemModel.getShallow('symbolOffset');
|
|
285
283
|
labelModel = itemModel.getModel(normalLabelAccessPath);
|
|
286
284
|
hoverLabelModel = itemModel.getModel(emphasisLabelAccessPath);
|
|
@@ -291,6 +289,7 @@ symbolProto._updateCommon = function (data, idx, symbolSize, seriesScope) {
|
|
|
291
289
|
}
|
|
292
290
|
|
|
293
291
|
var elStyle = symbolPath.style;
|
|
292
|
+
var symbolRotate = data.getItemVisual(idx, 'symbolRotate');
|
|
294
293
|
symbolPath.attr('rotation', (symbolRotate || 0) * Math.PI / 180 || 0);
|
|
295
294
|
|
|
296
295
|
if (symbolOffset) {
|
|
@@ -54,7 +54,10 @@ function createGridClipPath(cartesian, hasAnimation, seriesModel) {
|
|
|
54
54
|
x -= lineWidth / 2;
|
|
55
55
|
y -= lineWidth / 2;
|
|
56
56
|
width += lineWidth;
|
|
57
|
-
height += lineWidth;
|
|
57
|
+
height += lineWidth; // fix: https://github.com/apache/incubator-echarts/issues/11369
|
|
58
|
+
|
|
59
|
+
x = Math.floor(x);
|
|
60
|
+
width = Math.round(width);
|
|
58
61
|
var clipPath = new graphic.Rect({
|
|
59
62
|
shape: {
|
|
60
63
|
x: x,
|
|
@@ -40,7 +40,7 @@ var CoordinateSystem = require("../../CoordinateSystem");
|
|
|
40
40
|
|
|
41
41
|
var _referHelper = require("../../model/referHelper");
|
|
42
42
|
|
|
43
|
-
var
|
|
43
|
+
var getCoordSysInfoBySeries = _referHelper.getCoordSysInfoBySeries;
|
|
44
44
|
|
|
45
45
|
var Source = require("../../data/Source");
|
|
46
46
|
|
|
@@ -48,6 +48,10 @@ var _dataStackHelper = require("../../data/helper/dataStackHelper");
|
|
|
48
48
|
|
|
49
49
|
var enableDataStack = _dataStackHelper.enableDataStack;
|
|
50
50
|
|
|
51
|
+
var _sourceHelper = require("../../data/helper/sourceHelper");
|
|
52
|
+
|
|
53
|
+
var makeSeriesEncodeForAxisCoordSys = _sourceHelper.makeSeriesEncodeForAxisCoordSys;
|
|
54
|
+
|
|
51
55
|
/*
|
|
52
56
|
* Licensed to the Apache Software Foundation (ASF) under one
|
|
53
57
|
* or more contributor license agreements. See the NOTICE file
|
|
@@ -72,6 +76,7 @@ var enableDataStack = _dataStackHelper.enableDataStack;
|
|
|
72
76
|
* @param {module:echarts/model/Series} seriesModel
|
|
73
77
|
* @param {Object} [opt]
|
|
74
78
|
* @param {string} [opt.generateCoord]
|
|
79
|
+
* @param {boolean} [opt.useEncodeDefaulter]
|
|
75
80
|
*/
|
|
76
81
|
function createListFromArray(source, seriesModel, opt) {
|
|
77
82
|
opt = opt || {};
|
|
@@ -82,15 +87,15 @@ function createListFromArray(source, seriesModel, opt) {
|
|
|
82
87
|
|
|
83
88
|
var coordSysName = seriesModel.get('coordinateSystem');
|
|
84
89
|
var registeredCoordSys = CoordinateSystem.get(coordSysName);
|
|
85
|
-
var
|
|
90
|
+
var coordSysInfo = getCoordSysInfoBySeries(seriesModel);
|
|
86
91
|
var coordSysDimDefs;
|
|
87
92
|
|
|
88
|
-
if (
|
|
89
|
-
coordSysDimDefs = zrUtil.map(
|
|
93
|
+
if (coordSysInfo) {
|
|
94
|
+
coordSysDimDefs = zrUtil.map(coordSysInfo.coordSysDims, function (dim) {
|
|
90
95
|
var dimInfo = {
|
|
91
96
|
name: dim
|
|
92
97
|
};
|
|
93
|
-
var axisModel =
|
|
98
|
+
var axisModel = coordSysInfo.axisMap.get(dim);
|
|
94
99
|
|
|
95
100
|
if (axisModel) {
|
|
96
101
|
var axisType = axisModel.get('type');
|
|
@@ -108,13 +113,14 @@ function createListFromArray(source, seriesModel, opt) {
|
|
|
108
113
|
|
|
109
114
|
var dimInfoList = createDimensions(source, {
|
|
110
115
|
coordDimensions: coordSysDimDefs,
|
|
111
|
-
generateCoord: opt.generateCoord
|
|
116
|
+
generateCoord: opt.generateCoord,
|
|
117
|
+
encodeDefaulter: opt.useEncodeDefaulter ? zrUtil.curry(makeSeriesEncodeForAxisCoordSys, coordSysDimDefs, seriesModel) : null
|
|
112
118
|
});
|
|
113
119
|
var firstCategoryDimIndex;
|
|
114
120
|
var hasNameEncode;
|
|
115
|
-
|
|
121
|
+
coordSysInfo && zrUtil.each(dimInfoList, function (dimInfo, dimIndex) {
|
|
116
122
|
var coordDim = dimInfo.coordDim;
|
|
117
|
-
var categoryAxisModel =
|
|
123
|
+
var categoryAxisModel = coordSysInfo.categoryAxisMap.get(coordDim);
|
|
118
124
|
|
|
119
125
|
if (categoryAxisModel) {
|
|
120
126
|
if (firstCategoryDimIndex == null) {
|
|
@@ -50,9 +50,12 @@ function _default() {
|
|
|
50
50
|
var fields = inner(seriesModel);
|
|
51
51
|
var pipelineContext = seriesModel.pipelineContext;
|
|
52
52
|
var originalLarge = fields.large;
|
|
53
|
-
var originalProgressive = fields.progressiveRender;
|
|
54
|
-
|
|
55
|
-
|
|
53
|
+
var originalProgressive = fields.progressiveRender; // FIXME: if the planner works on a filtered series, `pipelineContext` does not
|
|
54
|
+
// exists. See #11611 . Probably we need to modify this structure, see the comment
|
|
55
|
+
// on `performRawSeries` in `Schedular.js`.
|
|
56
|
+
|
|
57
|
+
var large = fields.large = pipelineContext && pipelineContext.large;
|
|
58
|
+
var progressive = fields.progressiveRender = pipelineContext && pipelineContext.progressiveRender;
|
|
56
59
|
return !!(originalLarge ^ large || originalProgressive ^ progressive) && 'reset';
|
|
57
60
|
};
|
|
58
61
|
}
|
|
@@ -26,6 +26,10 @@ var _dimensionHelper = require("../../data/helper/dimensionHelper");
|
|
|
26
26
|
|
|
27
27
|
var getDimensionTypeByAxis = _dimensionHelper.getDimensionTypeByAxis;
|
|
28
28
|
|
|
29
|
+
var _sourceHelper = require("../../data/helper/sourceHelper");
|
|
30
|
+
|
|
31
|
+
var makeSeriesEncodeForAxisCoordSys = _sourceHelper.makeSeriesEncodeForAxisCoordSys;
|
|
32
|
+
|
|
29
33
|
/*
|
|
30
34
|
* Licensed to the Apache Software Foundation (ASF) under one
|
|
31
35
|
* or more contributor license agreements. See the NOTICE file
|
|
@@ -64,7 +68,7 @@ var seriesModelMixin = {
|
|
|
64
68
|
var xAxisType = xAxisModel.get('type');
|
|
65
69
|
var yAxisType = yAxisModel.get('type');
|
|
66
70
|
var addOrdinal; // FIXME
|
|
67
|
-
//
|
|
71
|
+
// Consider time axis.
|
|
68
72
|
|
|
69
73
|
if (xAxisType === 'category') {
|
|
70
74
|
option.layout = 'horizontal';
|
|
@@ -109,22 +113,24 @@ var seriesModelMixin = {
|
|
|
109
113
|
}
|
|
110
114
|
|
|
111
115
|
var defaultValueDimensions = this.defaultValueDimensions;
|
|
116
|
+
var coordDimensions = [{
|
|
117
|
+
name: baseAxisDim,
|
|
118
|
+
type: getDimensionTypeByAxis(baseAxisType),
|
|
119
|
+
ordinalMeta: ordinalMeta,
|
|
120
|
+
otherDims: {
|
|
121
|
+
tooltip: false,
|
|
122
|
+
itemName: 0
|
|
123
|
+
},
|
|
124
|
+
dimsDef: ['base']
|
|
125
|
+
}, {
|
|
126
|
+
name: otherAxisDim,
|
|
127
|
+
type: getDimensionTypeByAxis(otherAxisType),
|
|
128
|
+
dimsDef: defaultValueDimensions.slice()
|
|
129
|
+
}];
|
|
112
130
|
return createListSimply(this, {
|
|
113
|
-
coordDimensions:
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
ordinalMeta: ordinalMeta,
|
|
117
|
-
otherDims: {
|
|
118
|
-
tooltip: false,
|
|
119
|
-
itemName: 0
|
|
120
|
-
},
|
|
121
|
-
dimsDef: ['base']
|
|
122
|
-
}, {
|
|
123
|
-
name: otherAxisDim,
|
|
124
|
-
type: getDimensionTypeByAxis(otherAxisType),
|
|
125
|
-
dimsDef: defaultValueDimensions.slice()
|
|
126
|
-
}],
|
|
127
|
-
dimensionsCount: defaultValueDimensions.length + 1
|
|
131
|
+
coordDimensions: coordDimensions,
|
|
132
|
+
dimensionsCount: defaultValueDimensions.length + 1,
|
|
133
|
+
encodeDefaulter: zrUtil.curry(makeSeriesEncodeForAxisCoordSys, coordDimensions, this)
|
|
128
134
|
});
|
|
129
135
|
},
|
|
130
136
|
|
|
@@ -48,7 +48,9 @@ var _default = SeriesModel.extend({
|
|
|
48
48
|
type: 'series.line',
|
|
49
49
|
dependencies: ['grid', 'polar'],
|
|
50
50
|
getInitialData: function (option, ecModel) {
|
|
51
|
-
return createListFromArray(this.getSource(), this
|
|
51
|
+
return createListFromArray(this.getSource(), this, {
|
|
52
|
+
useEncodeDefaulter: true
|
|
53
|
+
});
|
|
52
54
|
},
|
|
53
55
|
defaultOption: {
|
|
54
56
|
zlevel: 0,
|
|
@@ -24,6 +24,10 @@ var __DEV__ = _config.__DEV__;
|
|
|
24
24
|
|
|
25
25
|
var zrUtil = require("zrender/lib/core/util");
|
|
26
26
|
|
|
27
|
+
var _bbox = require("zrender/lib/core/bbox");
|
|
28
|
+
|
|
29
|
+
var fromPoints = _bbox.fromPoints;
|
|
30
|
+
|
|
27
31
|
var SymbolDraw = require("../helper/SymbolDraw");
|
|
28
32
|
|
|
29
33
|
var SymbolClz = require("../helper/Symbol");
|
|
@@ -87,6 +91,17 @@ function isPointsSame(points1, points2) {
|
|
|
87
91
|
return true;
|
|
88
92
|
}
|
|
89
93
|
|
|
94
|
+
function getBoundingDiff(points1, points2) {
|
|
95
|
+
var min1 = [];
|
|
96
|
+
var max1 = [];
|
|
97
|
+
var min2 = [];
|
|
98
|
+
var max2 = [];
|
|
99
|
+
fromPoints(points1, min1, max1);
|
|
100
|
+
fromPoints(points2, min2, max2); // Get a max value from each corner of two boundings.
|
|
101
|
+
|
|
102
|
+
return Math.max(Math.abs(min1[0] - min2[0]), Math.abs(min1[1] - min2[1]), Math.abs(max1[0] - max2[0]), Math.abs(max1[1] - max2[1]));
|
|
103
|
+
}
|
|
104
|
+
|
|
90
105
|
function getSmooth(smooth) {
|
|
91
106
|
return typeof smooth === 'number' ? smooth : smooth ? 0.5 : 0;
|
|
92
107
|
}
|
|
@@ -368,7 +383,7 @@ var _default = ChartView.extend({
|
|
|
368
383
|
var step = !isCoordSysPolar && seriesModel.get('step');
|
|
369
384
|
var clipShapeForSymbol;
|
|
370
385
|
|
|
371
|
-
if (coordSys && coordSys.getArea) {
|
|
386
|
+
if (coordSys && coordSys.getArea && seriesModel.get('clip', true)) {
|
|
372
387
|
clipShapeForSymbol = coordSys.getArea(); // Avoid float number rounding error for symbol on the edge of axis extent.
|
|
373
388
|
// See #7913 and `test/dataZoom-clip.html`.
|
|
374
389
|
|
|
@@ -381,8 +396,9 @@ var _default = ChartView.extend({
|
|
|
381
396
|
clipShapeForSymbol.r0 -= 0.5;
|
|
382
397
|
clipShapeForSymbol.r1 += 0.5;
|
|
383
398
|
}
|
|
384
|
-
}
|
|
399
|
+
}
|
|
385
400
|
|
|
401
|
+
this._clipShapeForSymbol = clipShapeForSymbol; // Initialization animation or coordinate system changed
|
|
386
402
|
|
|
387
403
|
if (!(polyline && prevCoordSys.type === coordSys.type && step === this._step)) {
|
|
388
404
|
showSymbol && symbolDraw.updateData(data, {
|
|
@@ -509,6 +525,11 @@ var _default = ChartView.extend({
|
|
|
509
525
|
if (!pt) {
|
|
510
526
|
// Null data
|
|
511
527
|
return;
|
|
528
|
+
} // fix #11360: should't draw symbol outside clipShapeForSymbol
|
|
529
|
+
|
|
530
|
+
|
|
531
|
+
if (this._clipShapeForSymbol && !this._clipShapeForSymbol.contain(pt[0], pt[1])) {
|
|
532
|
+
return;
|
|
512
533
|
}
|
|
513
534
|
|
|
514
535
|
symbol = new SymbolClz(data, dataIndex);
|
|
@@ -624,6 +645,24 @@ var _default = ChartView.extend({
|
|
|
624
645
|
stackedOnCurrent = turnPointsIntoStep(diff.stackedOnCurrent, coordSys, step);
|
|
625
646
|
next = turnPointsIntoStep(diff.next, coordSys, step);
|
|
626
647
|
stackedOnNext = turnPointsIntoStep(diff.stackedOnNext, coordSys, step);
|
|
648
|
+
} // Don't apply animation if diff is large.
|
|
649
|
+
// For better result and avoid memory explosion problems like
|
|
650
|
+
// https://github.com/apache/incubator-echarts/issues/12229
|
|
651
|
+
|
|
652
|
+
|
|
653
|
+
if (getBoundingDiff(current, next) > 3000 || polygon && getBoundingDiff(stackedOnCurrent, stackedOnNext) > 3000) {
|
|
654
|
+
polyline.setShape({
|
|
655
|
+
points: next
|
|
656
|
+
});
|
|
657
|
+
|
|
658
|
+
if (polygon) {
|
|
659
|
+
polygon.setShape({
|
|
660
|
+
points: next,
|
|
661
|
+
stackedOnPoints: stackedOnNext
|
|
662
|
+
});
|
|
663
|
+
}
|
|
664
|
+
|
|
665
|
+
return;
|
|
627
666
|
} // `diff.current` is subset of `current` (which should be ensured by
|
|
628
667
|
// turnPointsIntoStep), so points in `__points` can be updated when
|
|
629
668
|
// points in `current` are update during animation.
|
|
@@ -37,6 +37,10 @@ var retrieveRawAttr = _dataProvider.retrieveRawAttr;
|
|
|
37
37
|
|
|
38
38
|
var geoSourceManager = require("../../coord/geo/geoSourceManager");
|
|
39
39
|
|
|
40
|
+
var _sourceHelper = require("../../data/helper/sourceHelper");
|
|
41
|
+
|
|
42
|
+
var makeSeriesEncodeForNameBased = _sourceHelper.makeSeriesEncodeForNameBased;
|
|
43
|
+
|
|
40
44
|
/*
|
|
41
45
|
* Licensed to the Apache Software Foundation (ASF) under one
|
|
42
46
|
* or more contributor license agreements. See the NOTICE file
|
|
@@ -72,7 +76,10 @@ var MapSeries = SeriesModel.extend({
|
|
|
72
76
|
*/
|
|
73
77
|
seriesGroup: [],
|
|
74
78
|
getInitialData: function (option) {
|
|
75
|
-
var data = createListSimply(this,
|
|
79
|
+
var data = createListSimply(this, {
|
|
80
|
+
coordDimensions: ['value'],
|
|
81
|
+
encodeDefaulter: zrUtil.curry(makeSeriesEncodeForNameBased, this)
|
|
82
|
+
});
|
|
76
83
|
var valueDim = data.mapDimension('value');
|
|
77
84
|
var dataNameMap = zrUtil.createHashMap();
|
|
78
85
|
var selectTargetList = [];
|
|
@@ -88,7 +95,7 @@ var MapSeries = SeriesModel.extend({
|
|
|
88
95
|
});
|
|
89
96
|
}
|
|
90
97
|
|
|
91
|
-
var geoSource = geoSourceManager.load(this.getMapType(), this.option.nameMap);
|
|
98
|
+
var geoSource = geoSourceManager.load(this.getMapType(), this.option.nameMap, this.option.nameProperty);
|
|
92
99
|
zrUtil.each(geoSource.regions, function (region) {
|
|
93
100
|
var name = region.name;
|
|
94
101
|
|
|
@@ -249,7 +256,8 @@ var MapSeries = SeriesModel.extend({
|
|
|
249
256
|
itemStyle: {
|
|
250
257
|
areaColor: 'rgba(255,215,0,0.8)'
|
|
251
258
|
}
|
|
252
|
-
}
|
|
259
|
+
},
|
|
260
|
+
nameProperty: 'name'
|
|
253
261
|
}
|
|
254
262
|
});
|
|
255
263
|
zrUtil.mixin(MapSeries, dataSelectableMixin);
|
|
@@ -36,6 +36,12 @@ var _dataProvider = require("../../data/helper/dataProvider");
|
|
|
36
36
|
|
|
37
37
|
var retrieveRawAttr = _dataProvider.retrieveRawAttr;
|
|
38
38
|
|
|
39
|
+
var _sourceHelper = require("../../data/helper/sourceHelper");
|
|
40
|
+
|
|
41
|
+
var makeSeriesEncodeForNameBased = _sourceHelper.makeSeriesEncodeForNameBased;
|
|
42
|
+
|
|
43
|
+
var LegendVisualProvider = require("../../visual/LegendVisualProvider");
|
|
44
|
+
|
|
39
45
|
/*
|
|
40
46
|
* Licensed to the Apache Software Foundation (ASF) under one
|
|
41
47
|
* or more contributor license agreements. See the NOTICE file
|
|
@@ -61,10 +67,7 @@ var PieSeries = echarts.extendSeriesModel({
|
|
|
61
67
|
PieSeries.superApply(this, 'init', arguments); // Enable legend selection for each data item
|
|
62
68
|
// Use a function instead of direct access because data reference may changed
|
|
63
69
|
|
|
64
|
-
this.
|
|
65
|
-
return this.getRawData();
|
|
66
|
-
};
|
|
67
|
-
|
|
70
|
+
this.legendVisualProvider = new LegendVisualProvider(zrUtil.bind(this.getData, this), zrUtil.bind(this.getRawData, this));
|
|
68
71
|
this.updateSelectedMap(this._createSelectableList());
|
|
69
72
|
|
|
70
73
|
this._defaultLabelLine(option);
|
|
@@ -75,7 +78,10 @@ var PieSeries = echarts.extendSeriesModel({
|
|
|
75
78
|
this.updateSelectedMap(this._createSelectableList());
|
|
76
79
|
},
|
|
77
80
|
getInitialData: function (option, ecModel) {
|
|
78
|
-
return createListSimply(this,
|
|
81
|
+
return createListSimply(this, {
|
|
82
|
+
coordDimensions: ['value'],
|
|
83
|
+
encodeDefaulter: zrUtil.curry(makeSeriesEncodeForNameBased, this)
|
|
84
|
+
});
|
|
79
85
|
},
|
|
80
86
|
_createSelectableList: function () {
|
|
81
87
|
var data = this.getRawData();
|
|
@@ -144,12 +150,27 @@ var PieSeries = echarts.extendSeriesModel({
|
|
|
144
150
|
// If still show when all data zero.
|
|
145
151
|
stillShowZeroSum: true,
|
|
146
152
|
// cursor: null,
|
|
153
|
+
left: 0,
|
|
154
|
+
top: 0,
|
|
155
|
+
right: 0,
|
|
156
|
+
bottom: 0,
|
|
157
|
+
width: null,
|
|
158
|
+
height: null,
|
|
147
159
|
label: {
|
|
148
160
|
// If rotate around circle
|
|
149
161
|
rotate: false,
|
|
150
162
|
show: true,
|
|
151
163
|
// 'outer', 'inside', 'center'
|
|
152
|
-
position: 'outer'
|
|
164
|
+
position: 'outer',
|
|
165
|
+
// 'none', 'labelLine', 'edge'. Works only when position is 'outer'
|
|
166
|
+
alignTo: 'none',
|
|
167
|
+
// Closest distance between label and chart edge.
|
|
168
|
+
// Works only position is 'outer' and alignTo is 'edge'.
|
|
169
|
+
margin: '25%',
|
|
170
|
+
// Works only position is 'outer' and alignTo is not 'edge'.
|
|
171
|
+
bleedMargin: 10,
|
|
172
|
+
// Distance between text and label line.
|
|
173
|
+
distanceToLabelLine: 5 // formatter: 标签文本格式器,同Tooltip.formatter,不支持异步回调
|
|
153
174
|
// 默认使用全局文本样式,详见TEXTSTYLE
|
|
154
175
|
// distance: 当position为inner时有效,为label位置到圆心的距离与圆半径(环状图为内外半径和)的比例系数
|
|
155
176
|
|
package/lib/chart/pie/PieView.js
CHANGED
|
@@ -159,33 +159,40 @@ piePieceProto.updateData = function (data, idx, firstCreate) {
|
|
|
159
159
|
var cursorStyle = itemModel.getShallow('cursor');
|
|
160
160
|
cursorStyle && sector.attr('cursor', cursorStyle); // Toggle selected
|
|
161
161
|
|
|
162
|
-
toggleItemSelected(this, data.getItemLayout(idx), seriesModel.isSelected(
|
|
162
|
+
toggleItemSelected(this, data.getItemLayout(idx), seriesModel.isSelected(data.getName(idx)), seriesModel.get('selectedOffset'), seriesModel.get('animation')); // Label and text animation should be applied only for transition type animation when update
|
|
163
163
|
|
|
164
164
|
var withAnimation = !firstCreate && animationTypeUpdate === 'transition';
|
|
165
165
|
|
|
166
166
|
this._updateLabel(data, idx, withAnimation);
|
|
167
167
|
|
|
168
|
-
this.highDownOnUpdate =
|
|
168
|
+
this.highDownOnUpdate = !seriesModel.get('silent') ? function (fromState, toState) {
|
|
169
|
+
var hasAnimation = seriesModel.isAnimationEnabled() && itemModel.get('hoverAnimation');
|
|
170
|
+
|
|
169
171
|
if (toState === 'emphasis') {
|
|
170
172
|
labelLine.ignore = labelLine.hoverIgnore;
|
|
171
173
|
labelText.ignore = labelText.hoverIgnore; // Sector may has animation of updating data. Force to move to the last frame
|
|
172
174
|
// Or it may stopped on the wrong shape
|
|
173
175
|
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
176
|
+
if (hasAnimation) {
|
|
177
|
+
sector.stopAnimation(true);
|
|
178
|
+
sector.animateTo({
|
|
179
|
+
shape: {
|
|
180
|
+
r: layout.r + seriesModel.get('hoverOffset')
|
|
181
|
+
}
|
|
182
|
+
}, 300, 'elasticOut');
|
|
183
|
+
}
|
|
180
184
|
} else {
|
|
181
185
|
labelLine.ignore = labelLine.normalIgnore;
|
|
182
186
|
labelText.ignore = labelText.normalIgnore;
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
187
|
+
|
|
188
|
+
if (hasAnimation) {
|
|
189
|
+
sector.stopAnimation(true);
|
|
190
|
+
sector.animateTo({
|
|
191
|
+
shape: {
|
|
192
|
+
r: layout.r
|
|
193
|
+
}
|
|
194
|
+
}, 300, 'elasticOut');
|
|
195
|
+
}
|
|
189
196
|
}
|
|
190
197
|
} : null;
|
|
191
198
|
graphic.setHoverStyle(this);
|
|
@@ -242,7 +249,7 @@ piePieceProto._updateLabel = function (data, idx, withAnimation) {
|
|
|
242
249
|
graphic.setLabelStyle(labelText.style, labelText.hoverStyle = {}, labelModel, labelHoverModel, {
|
|
243
250
|
labelFetcher: data.hostModel,
|
|
244
251
|
labelDataIndex: idx,
|
|
245
|
-
defaultText:
|
|
252
|
+
defaultText: labelLayout.text,
|
|
246
253
|
autoColor: visualColor,
|
|
247
254
|
useInsideStyle: !!labelLayout.inside
|
|
248
255
|
}, {
|