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
|
@@ -20,6 +20,10 @@
|
|
|
20
20
|
|
|
21
21
|
var textContain = require("zrender/lib/contain/text");
|
|
22
22
|
|
|
23
|
+
var _number = require("../../util/number");
|
|
24
|
+
|
|
25
|
+
var parsePercent = _number.parsePercent;
|
|
26
|
+
|
|
23
27
|
/*
|
|
24
28
|
* Licensed to the Apache Software Foundation (ASF) under one
|
|
25
29
|
* or more contributor license agreements. See the NOTICE file
|
|
@@ -41,13 +45,17 @@ var textContain = require("zrender/lib/contain/text");
|
|
|
41
45
|
// FIXME emphasis label position is not same with normal label position
|
|
42
46
|
var RADIAN = Math.PI / 180;
|
|
43
47
|
|
|
44
|
-
function adjustSingleSide(list, cx, cy, r, dir, viewWidth, viewHeight) {
|
|
48
|
+
function adjustSingleSide(list, cx, cy, r, dir, viewWidth, viewHeight, viewLeft, viewTop, farthestX) {
|
|
45
49
|
list.sort(function (a, b) {
|
|
46
50
|
return a.y - b.y;
|
|
47
51
|
});
|
|
48
52
|
|
|
49
53
|
function shiftDown(start, end, delta, dir) {
|
|
50
54
|
for (var j = start; j < end; j++) {
|
|
55
|
+
if (list[j].y + delta > viewTop + viewHeight) {
|
|
56
|
+
break;
|
|
57
|
+
}
|
|
58
|
+
|
|
51
59
|
list[j].y += delta;
|
|
52
60
|
|
|
53
61
|
if (j > start && j + 1 < end && list[j + 1].y > list[j].y + list[j].height) {
|
|
@@ -61,6 +69,10 @@ function adjustSingleSide(list, cx, cy, r, dir, viewWidth, viewHeight) {
|
|
|
61
69
|
|
|
62
70
|
function shiftUp(end, delta) {
|
|
63
71
|
for (var j = end; j >= 0; j--) {
|
|
72
|
+
if (list[j].y - delta < viewTop) {
|
|
73
|
+
break;
|
|
74
|
+
}
|
|
75
|
+
|
|
64
76
|
list[j].y -= delta;
|
|
65
77
|
|
|
66
78
|
if (j > 0 && list[j].y > list[j - 1].y + list[j - 1].height) {
|
|
@@ -78,6 +90,10 @@ function adjustSingleSide(list, cx, cy, r, dir, viewWidth, viewHeight) {
|
|
|
78
90
|
: 0; // up
|
|
79
91
|
|
|
80
92
|
for (var i = 0, l = list.length; i < l; i++) {
|
|
93
|
+
if (list[i].labelAlignTo !== 'none') {
|
|
94
|
+
continue;
|
|
95
|
+
}
|
|
96
|
+
|
|
81
97
|
var deltaY = Math.abs(list[i].y - cy);
|
|
82
98
|
var length = list[i].len;
|
|
83
99
|
var length2 = list[i].len2;
|
|
@@ -105,6 +121,12 @@ function adjustSingleSide(list, cx, cy, r, dir, viewWidth, viewHeight) {
|
|
|
105
121
|
var downList = [];
|
|
106
122
|
|
|
107
123
|
for (var i = 0; i < len; i++) {
|
|
124
|
+
if (list[i].position === 'outer' && list[i].labelAlignTo === 'labelLine') {
|
|
125
|
+
var dx = list[i].x - farthestX;
|
|
126
|
+
list[i].linePoints[1][0] += dx;
|
|
127
|
+
list[i].x = farthestX;
|
|
128
|
+
}
|
|
129
|
+
|
|
108
130
|
delta = list[i].y - lastY;
|
|
109
131
|
|
|
110
132
|
if (delta < 0) {
|
|
@@ -130,9 +152,11 @@ function adjustSingleSide(list, cx, cy, r, dir, viewWidth, viewHeight) {
|
|
|
130
152
|
changeX(downList, true, cx, cy, r, dir);
|
|
131
153
|
}
|
|
132
154
|
|
|
133
|
-
function avoidOverlap(labelLayoutList, cx, cy, r, viewWidth, viewHeight) {
|
|
155
|
+
function avoidOverlap(labelLayoutList, cx, cy, r, viewWidth, viewHeight, viewLeft, viewTop) {
|
|
134
156
|
var leftList = [];
|
|
135
157
|
var rightList = [];
|
|
158
|
+
var leftmostX = Number.MAX_VALUE;
|
|
159
|
+
var rightmostX = -Number.MAX_VALUE;
|
|
136
160
|
|
|
137
161
|
for (var i = 0; i < labelLayoutList.length; i++) {
|
|
138
162
|
if (isPositionCenter(labelLayoutList[i])) {
|
|
@@ -140,33 +164,72 @@ function avoidOverlap(labelLayoutList, cx, cy, r, viewWidth, viewHeight) {
|
|
|
140
164
|
}
|
|
141
165
|
|
|
142
166
|
if (labelLayoutList[i].x < cx) {
|
|
167
|
+
leftmostX = Math.min(leftmostX, labelLayoutList[i].x);
|
|
143
168
|
leftList.push(labelLayoutList[i]);
|
|
144
169
|
} else {
|
|
170
|
+
rightmostX = Math.max(rightmostX, labelLayoutList[i].x);
|
|
145
171
|
rightList.push(labelLayoutList[i]);
|
|
146
172
|
}
|
|
147
173
|
}
|
|
148
174
|
|
|
149
|
-
adjustSingleSide(rightList, cx, cy, r, 1, viewWidth, viewHeight);
|
|
150
|
-
adjustSingleSide(leftList, cx, cy, r, -1, viewWidth, viewHeight);
|
|
175
|
+
adjustSingleSide(rightList, cx, cy, r, 1, viewWidth, viewHeight, viewLeft, viewTop, rightmostX);
|
|
176
|
+
adjustSingleSide(leftList, cx, cy, r, -1, viewWidth, viewHeight, viewLeft, viewTop, leftmostX);
|
|
151
177
|
|
|
152
178
|
for (var i = 0; i < labelLayoutList.length; i++) {
|
|
153
|
-
|
|
179
|
+
var layout = labelLayoutList[i];
|
|
180
|
+
|
|
181
|
+
if (isPositionCenter(layout)) {
|
|
154
182
|
continue;
|
|
155
183
|
}
|
|
156
184
|
|
|
157
|
-
var linePoints =
|
|
185
|
+
var linePoints = layout.linePoints;
|
|
158
186
|
|
|
159
187
|
if (linePoints) {
|
|
188
|
+
var isAlignToEdge = layout.labelAlignTo === 'edge';
|
|
189
|
+
var realTextWidth = layout.textRect.width;
|
|
190
|
+
var targetTextWidth;
|
|
191
|
+
|
|
192
|
+
if (isAlignToEdge) {
|
|
193
|
+
if (layout.x < cx) {
|
|
194
|
+
targetTextWidth = linePoints[2][0] - layout.labelDistance - viewLeft - layout.labelMargin;
|
|
195
|
+
} else {
|
|
196
|
+
targetTextWidth = viewLeft + viewWidth - layout.labelMargin - linePoints[2][0] - layout.labelDistance;
|
|
197
|
+
}
|
|
198
|
+
} else {
|
|
199
|
+
if (layout.x < cx) {
|
|
200
|
+
targetTextWidth = layout.x - viewLeft - layout.bleedMargin;
|
|
201
|
+
} else {
|
|
202
|
+
targetTextWidth = viewLeft + viewWidth - layout.x - layout.bleedMargin;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
if (targetTextWidth < layout.textRect.width) {
|
|
207
|
+
layout.text = textContain.truncateText(layout.text, targetTextWidth, layout.font);
|
|
208
|
+
|
|
209
|
+
if (layout.labelAlignTo === 'edge') {
|
|
210
|
+
realTextWidth = textContain.getWidth(layout.text, layout.font);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
|
|
160
214
|
var dist = linePoints[1][0] - linePoints[2][0];
|
|
161
215
|
|
|
162
|
-
if (
|
|
163
|
-
|
|
216
|
+
if (isAlignToEdge) {
|
|
217
|
+
if (layout.x < cx) {
|
|
218
|
+
linePoints[2][0] = viewLeft + layout.labelMargin + realTextWidth + layout.labelDistance;
|
|
219
|
+
} else {
|
|
220
|
+
linePoints[2][0] = viewLeft + viewWidth - layout.labelMargin - realTextWidth - layout.labelDistance;
|
|
221
|
+
}
|
|
164
222
|
} else {
|
|
165
|
-
|
|
223
|
+
if (layout.x < cx) {
|
|
224
|
+
linePoints[2][0] = layout.x + layout.labelDistance;
|
|
225
|
+
} else {
|
|
226
|
+
linePoints[2][0] = layout.x - layout.labelDistance;
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
linePoints[1][0] = linePoints[2][0] + dist;
|
|
166
230
|
}
|
|
167
231
|
|
|
168
|
-
linePoints[1][1] = linePoints[2][1] =
|
|
169
|
-
linePoints[1][0] = linePoints[2][0] + dist;
|
|
232
|
+
linePoints[1][1] = linePoints[2][1] = layout.y;
|
|
170
233
|
}
|
|
171
234
|
}
|
|
172
235
|
}
|
|
@@ -176,7 +239,7 @@ function isPositionCenter(layout) {
|
|
|
176
239
|
return layout.position === 'center';
|
|
177
240
|
}
|
|
178
241
|
|
|
179
|
-
function _default(seriesModel, r, viewWidth, viewHeight,
|
|
242
|
+
function _default(seriesModel, r, viewWidth, viewHeight, viewLeft, viewTop) {
|
|
180
243
|
var data = seriesModel.getData();
|
|
181
244
|
var labelLayoutList = [];
|
|
182
245
|
var cx;
|
|
@@ -189,9 +252,16 @@ function _default(seriesModel, r, viewWidth, viewHeight, sum) {
|
|
|
189
252
|
var labelModel = itemModel.getModel('label'); // Use position in normal or emphasis
|
|
190
253
|
|
|
191
254
|
var labelPosition = labelModel.get('position') || itemModel.get('emphasis.label.position');
|
|
255
|
+
var labelDistance = labelModel.get('distanceToLabelLine');
|
|
256
|
+
var labelAlignTo = labelModel.get('alignTo');
|
|
257
|
+
var labelMargin = parsePercent(labelModel.get('margin'), viewWidth);
|
|
258
|
+
var bleedMargin = labelModel.get('bleedMargin');
|
|
259
|
+
var font = labelModel.getFont();
|
|
192
260
|
var labelLineModel = itemModel.getModel('labelLine');
|
|
193
261
|
var labelLineLen = labelLineModel.get('length');
|
|
262
|
+
labelLineLen = parsePercent(labelLineLen, viewWidth);
|
|
194
263
|
var labelLineLen2 = labelLineModel.get('length2');
|
|
264
|
+
labelLineLen2 = parsePercent(labelLineLen2, viewWidth);
|
|
195
265
|
|
|
196
266
|
if (layout.angle < minShowLabelRadian) {
|
|
197
267
|
return;
|
|
@@ -206,6 +276,8 @@ function _default(seriesModel, r, viewWidth, viewHeight, sum) {
|
|
|
206
276
|
var textAlign;
|
|
207
277
|
cx = layout.cx;
|
|
208
278
|
cy = layout.cy;
|
|
279
|
+
var text = seriesModel.getFormattedLabel(idx, 'normal') || data.getName(idx);
|
|
280
|
+
var textRect = textContain.getBoundingRect(text, font, textAlign, 'top');
|
|
209
281
|
var isLabelInside = labelPosition === 'inside' || labelPosition === 'inner';
|
|
210
282
|
|
|
211
283
|
if (labelPosition === 'center') {
|
|
@@ -224,15 +296,21 @@ function _default(seriesModel, r, viewWidth, viewHeight, sum) {
|
|
|
224
296
|
var y2 = y1 + dy * (labelLineLen + r - layout.r);
|
|
225
297
|
var x3 = x2 + (dx < 0 ? -1 : 1) * labelLineLen2;
|
|
226
298
|
var y3 = y2;
|
|
227
|
-
|
|
299
|
+
|
|
300
|
+
if (labelAlignTo === 'edge') {
|
|
301
|
+
// Adjust textX because text align of edge is opposite
|
|
302
|
+
textX = dx < 0 ? viewLeft + labelMargin : viewLeft + viewWidth - labelMargin;
|
|
303
|
+
} else {
|
|
304
|
+
textX = x3 + (dx < 0 ? -labelDistance : labelDistance);
|
|
305
|
+
}
|
|
306
|
+
|
|
228
307
|
textY = y3;
|
|
229
308
|
linePoints = [[x1, y1], [x2, y2], [x3, y3]];
|
|
230
309
|
}
|
|
231
310
|
|
|
232
|
-
textAlign = isLabelInside ? 'center' : dx > 0 ? 'left' : 'right';
|
|
311
|
+
textAlign = isLabelInside ? 'center' : labelAlignTo === 'edge' ? dx > 0 ? 'right' : 'left' : dx > 0 ? 'left' : 'right';
|
|
233
312
|
}
|
|
234
313
|
|
|
235
|
-
var font = labelModel.getFont();
|
|
236
314
|
var labelRotate;
|
|
237
315
|
var rotate = labelModel.get('rotate');
|
|
238
316
|
|
|
@@ -242,8 +320,6 @@ function _default(seriesModel, r, viewWidth, viewHeight, sum) {
|
|
|
242
320
|
labelRotate = rotate ? dx < 0 ? -midAngle + Math.PI : -midAngle : 0;
|
|
243
321
|
}
|
|
244
322
|
|
|
245
|
-
var text = seriesModel.getFormattedLabel(idx, 'normal') || data.getName(idx);
|
|
246
|
-
var textRect = textContain.getBoundingRect(text, font, textAlign, 'top');
|
|
247
323
|
hasLabelRotate = !!labelRotate;
|
|
248
324
|
layout.label = {
|
|
249
325
|
x: textX,
|
|
@@ -256,7 +332,14 @@ function _default(seriesModel, r, viewWidth, viewHeight, sum) {
|
|
|
256
332
|
textAlign: textAlign,
|
|
257
333
|
verticalAlign: 'middle',
|
|
258
334
|
rotation: labelRotate,
|
|
259
|
-
inside: isLabelInside
|
|
335
|
+
inside: isLabelInside,
|
|
336
|
+
labelDistance: labelDistance,
|
|
337
|
+
labelAlignTo: labelAlignTo,
|
|
338
|
+
labelMargin: labelMargin,
|
|
339
|
+
bleedMargin: bleedMargin,
|
|
340
|
+
textRect: textRect,
|
|
341
|
+
text: text,
|
|
342
|
+
font: font
|
|
260
343
|
}; // Not layout the inside label
|
|
261
344
|
|
|
262
345
|
if (!isLabelInside) {
|
|
@@ -265,7 +348,7 @@ function _default(seriesModel, r, viewWidth, viewHeight, sum) {
|
|
|
265
348
|
});
|
|
266
349
|
|
|
267
350
|
if (!hasLabelRotate && seriesModel.get('avoidLabelOverlap')) {
|
|
268
|
-
avoidOverlap(labelLayoutList, cx, cy, r, viewWidth, viewHeight);
|
|
351
|
+
avoidOverlap(labelLayoutList, cx, cy, r, viewWidth, viewHeight, viewLeft, viewTop);
|
|
269
352
|
}
|
|
270
353
|
}
|
|
271
354
|
|
|
@@ -23,6 +23,8 @@ var _number = require("../../util/number");
|
|
|
23
23
|
var parsePercent = _number.parsePercent;
|
|
24
24
|
var linearMap = _number.linearMap;
|
|
25
25
|
|
|
26
|
+
var layout = require("../../util/layout");
|
|
27
|
+
|
|
26
28
|
var labelLayout = require("./labelLayout");
|
|
27
29
|
|
|
28
30
|
var zrUtil = require("zrender/lib/core/util");
|
|
@@ -48,10 +50,18 @@ var zrUtil = require("zrender/lib/core/util");
|
|
|
48
50
|
var PI2 = Math.PI * 2;
|
|
49
51
|
var RADIAN = Math.PI / 180;
|
|
50
52
|
|
|
53
|
+
function getViewRect(seriesModel, api) {
|
|
54
|
+
return layout.getLayoutRect(seriesModel.getBoxLayoutParams(), {
|
|
55
|
+
width: api.getWidth(),
|
|
56
|
+
height: api.getHeight()
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
|
|
51
60
|
function _default(seriesType, ecModel, api, payload) {
|
|
52
61
|
ecModel.eachSeriesByType(seriesType, function (seriesModel) {
|
|
53
62
|
var data = seriesModel.getData();
|
|
54
63
|
var valueDim = data.mapDimension('value');
|
|
64
|
+
var viewRect = getViewRect(seriesModel, api);
|
|
55
65
|
var center = seriesModel.get('center');
|
|
56
66
|
var radius = seriesModel.get('radius');
|
|
57
67
|
|
|
@@ -63,11 +73,11 @@ function _default(seriesType, ecModel, api, payload) {
|
|
|
63
73
|
center = [center, center];
|
|
64
74
|
}
|
|
65
75
|
|
|
66
|
-
var width = api.getWidth();
|
|
67
|
-
var height = api.getHeight();
|
|
76
|
+
var width = parsePercent(viewRect.width, api.getWidth());
|
|
77
|
+
var height = parsePercent(viewRect.height, api.getHeight());
|
|
68
78
|
var size = Math.min(width, height);
|
|
69
|
-
var cx = parsePercent(center[0], width);
|
|
70
|
-
var cy = parsePercent(center[1], height);
|
|
79
|
+
var cx = parsePercent(center[0], width) + viewRect.x;
|
|
80
|
+
var cy = parsePercent(center[1], height) + viewRect.y;
|
|
71
81
|
var r0 = parsePercent(radius[0], size / 2);
|
|
72
82
|
var r = parsePercent(radius[1], size / 2);
|
|
73
83
|
var startAngle = -seriesModel.get('startAngle') * RADIAN;
|
|
@@ -102,7 +112,8 @@ function _default(seriesType, ecModel, api, payload) {
|
|
|
102
112
|
cx: cx,
|
|
103
113
|
cy: cy,
|
|
104
114
|
r0: r0,
|
|
105
|
-
r: roseType ? NaN : r
|
|
115
|
+
r: roseType ? NaN : r,
|
|
116
|
+
viewRect: viewRect
|
|
106
117
|
});
|
|
107
118
|
return;
|
|
108
119
|
} // FIXME 兼容 2.0 但是 roseType 是 area 的时候才是这样?
|
|
@@ -130,7 +141,8 @@ function _default(seriesType, ecModel, api, payload) {
|
|
|
130
141
|
cx: cx,
|
|
131
142
|
cy: cy,
|
|
132
143
|
r0: r0,
|
|
133
|
-
r: roseType ? linearMap(value, extent, [r0, r]) : r
|
|
144
|
+
r: roseType ? linearMap(value, extent, [r0, r]) : r,
|
|
145
|
+
viewRect: viewRect
|
|
134
146
|
});
|
|
135
147
|
currentAngle = endAngle;
|
|
136
148
|
}); // Some sector is constrained by minAngle
|
|
@@ -164,7 +176,7 @@ function _default(seriesType, ecModel, api, payload) {
|
|
|
164
176
|
}
|
|
165
177
|
}
|
|
166
178
|
|
|
167
|
-
labelLayout(seriesModel, r, width, height);
|
|
179
|
+
labelLayout(seriesModel, r, viewRect.width, viewRect.height, viewRect.x, viewRect.y);
|
|
168
180
|
});
|
|
169
181
|
}
|
|
170
182
|
|
|
@@ -28,6 +28,8 @@ var _format = require("../../util/format");
|
|
|
28
28
|
|
|
29
29
|
var encodeHTML = _format.encodeHTML;
|
|
30
30
|
|
|
31
|
+
var LegendVisualProvider = require("../../visual/LegendVisualProvider");
|
|
32
|
+
|
|
31
33
|
/*
|
|
32
34
|
* Licensed to the Apache Software Foundation (ASF) under one
|
|
33
35
|
* or more contributor license agreements. See the NOTICE file
|
|
@@ -54,9 +56,7 @@ var RadarSeries = SeriesModel.extend({
|
|
|
54
56
|
RadarSeries.superApply(this, 'init', arguments); // Enable legend selection for each data item
|
|
55
57
|
// Use a function instead of direct access because data reference may changed
|
|
56
58
|
|
|
57
|
-
this.
|
|
58
|
-
return this.getRawData();
|
|
59
|
-
};
|
|
59
|
+
this.legendVisualProvider = new LegendVisualProvider(zrUtil.bind(this.getData, this), zrUtil.bind(this.getRawData, this));
|
|
60
60
|
},
|
|
61
61
|
getInitialData: function (option, ecModel) {
|
|
62
62
|
return createListSimply(this, {
|
|
@@ -74,6 +74,26 @@ var RadarSeries = SeriesModel.extend({
|
|
|
74
74
|
return encodeHTML(axis.name + ' : ' + val);
|
|
75
75
|
}).join('<br />');
|
|
76
76
|
},
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* @implement
|
|
80
|
+
*/
|
|
81
|
+
getTooltipPosition: function (dataIndex) {
|
|
82
|
+
if (dataIndex != null) {
|
|
83
|
+
var data = this.getData();
|
|
84
|
+
var coordSys = this.coordinateSystem;
|
|
85
|
+
var values = data.getValues(zrUtil.map(coordSys.dimensions, function (dim) {
|
|
86
|
+
return data.mapDimension(dim);
|
|
87
|
+
}), dataIndex, true);
|
|
88
|
+
|
|
89
|
+
for (var i = 0, len = values.length; i < len; i++) {
|
|
90
|
+
if (!isNaN(values[i])) {
|
|
91
|
+
var indicatorAxes = coordSys.getIndicatorAxes();
|
|
92
|
+
return coordSys.coordToPoint(indicatorAxes[i].dataToCoord(values[i]), i);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
},
|
|
77
97
|
defaultOption: {
|
|
78
98
|
zlevel: 0,
|
|
79
99
|
z: 2,
|
|
@@ -160,6 +160,18 @@ var SankeySeries = SeriesModel.extend({
|
|
|
160
160
|
option.focusNodeAdjacency = 'allEdges';
|
|
161
161
|
}
|
|
162
162
|
},
|
|
163
|
+
// Override Series.getDataParams()
|
|
164
|
+
getDataParams: function (dataIndex, dataType) {
|
|
165
|
+
var params = SankeySeries.superCall(this, 'getDataParams', dataIndex, dataType);
|
|
166
|
+
|
|
167
|
+
if (params.value == null && dataType === 'node') {
|
|
168
|
+
var node = this.getGraph().getNodeByIndex(dataIndex);
|
|
169
|
+
var nodeValue = node.getLayout().value;
|
|
170
|
+
params.value = nodeValue;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
return params;
|
|
174
|
+
},
|
|
163
175
|
defaultOption: {
|
|
164
176
|
zlevel: 0,
|
|
165
177
|
z: 2,
|
|
@@ -205,7 +217,7 @@ var SankeySeries = SeriesModel.extend({
|
|
|
205
217
|
show: true
|
|
206
218
|
},
|
|
207
219
|
lineStyle: {
|
|
208
|
-
opacity: 0.
|
|
220
|
+
opacity: 0.5
|
|
209
221
|
}
|
|
210
222
|
},
|
|
211
223
|
animationEasing: 'linear',
|
|
@@ -43,7 +43,9 @@ var zrUtil = require("zrender/lib/core/util");
|
|
|
43
43
|
* under the License.
|
|
44
44
|
*/
|
|
45
45
|
var nodeOpacityPath = ['itemStyle', 'opacity'];
|
|
46
|
+
var hoverNodeOpacityPath = ['emphasis', 'itemStyle', 'opacity'];
|
|
46
47
|
var lineOpacityPath = ['lineStyle', 'opacity'];
|
|
48
|
+
var hoverLineOpacityPath = ['emphasis', 'lineStyle', 'opacity'];
|
|
47
49
|
|
|
48
50
|
function getItemOpacity(item, opacityPath) {
|
|
49
51
|
return item.getVisual('opacity') || item.getModel().get(opacityPath);
|
|
@@ -69,12 +71,13 @@ function fadeOutItem(item, opacityPath, opacityRatio) {
|
|
|
69
71
|
function fadeInItem(item, opacityPath) {
|
|
70
72
|
var opacity = getItemOpacity(item, opacityPath);
|
|
71
73
|
var el = item.getGraphicEl();
|
|
72
|
-
el.highlight && el.highlight();
|
|
73
74
|
el.traverse(function (child) {
|
|
74
75
|
if (child.type !== 'group') {
|
|
75
76
|
child.setStyle('opacity', opacity);
|
|
76
77
|
}
|
|
77
|
-
});
|
|
78
|
+
}); // Support emphasis here.
|
|
79
|
+
|
|
80
|
+
el.highlight && el.highlight();
|
|
78
81
|
}
|
|
79
82
|
|
|
80
83
|
var SankeyShape = graphic.extendShape({
|
|
@@ -104,6 +107,12 @@ var SankeyShape = graphic.extendShape({
|
|
|
104
107
|
}
|
|
105
108
|
|
|
106
109
|
ctx.closePath();
|
|
110
|
+
},
|
|
111
|
+
highlight: function () {
|
|
112
|
+
this.trigger('emphasis');
|
|
113
|
+
},
|
|
114
|
+
downplay: function () {
|
|
115
|
+
this.trigger('normal');
|
|
107
116
|
}
|
|
108
117
|
});
|
|
109
118
|
|
|
@@ -266,9 +275,22 @@ var _default = echarts.extendChartView({
|
|
|
266
275
|
el.cursor = 'move';
|
|
267
276
|
}
|
|
268
277
|
|
|
278
|
+
el.highlight = function () {
|
|
279
|
+
this.trigger('emphasis');
|
|
280
|
+
};
|
|
281
|
+
|
|
282
|
+
el.downplay = function () {
|
|
283
|
+
this.trigger('normal');
|
|
284
|
+
};
|
|
285
|
+
|
|
286
|
+
el.focusNodeAdjHandler && el.off('mouseover', el.focusNodeAdjHandler);
|
|
287
|
+
el.unfocusNodeAdjHandler && el.off('mouseout', el.unfocusNodeAdjHandler);
|
|
288
|
+
|
|
269
289
|
if (itemModel.get('focusNodeAdjacency')) {
|
|
270
|
-
el.
|
|
290
|
+
el.on('mouseover', el.focusNodeAdjHandler = function () {
|
|
271
291
|
if (!sankeyView._focusAdjacencyDisabled) {
|
|
292
|
+
sankeyView._clearTimer();
|
|
293
|
+
|
|
272
294
|
api.dispatchAction({
|
|
273
295
|
type: 'focusNodeAdjacency',
|
|
274
296
|
seriesId: seriesModel.id,
|
|
@@ -276,22 +298,23 @@ var _default = echarts.extendChartView({
|
|
|
276
298
|
});
|
|
277
299
|
}
|
|
278
300
|
});
|
|
279
|
-
el.
|
|
301
|
+
el.on('mouseout', el.unfocusNodeAdjHandler = function () {
|
|
280
302
|
if (!sankeyView._focusAdjacencyDisabled) {
|
|
281
|
-
|
|
282
|
-
type: 'unfocusNodeAdjacency',
|
|
283
|
-
seriesId: seriesModel.id
|
|
284
|
-
});
|
|
303
|
+
sankeyView._dispatchUnfocus(api);
|
|
285
304
|
}
|
|
286
305
|
});
|
|
287
306
|
}
|
|
288
307
|
});
|
|
289
308
|
edgeData.eachItemGraphicEl(function (el, dataIndex) {
|
|
290
309
|
var edgeModel = edgeData.getItemModel(dataIndex);
|
|
310
|
+
el.focusNodeAdjHandler && el.off('mouseover', el.focusNodeAdjHandler);
|
|
311
|
+
el.unfocusNodeAdjHandler && el.off('mouseout', el.unfocusNodeAdjHandler);
|
|
291
312
|
|
|
292
313
|
if (edgeModel.get('focusNodeAdjacency')) {
|
|
293
|
-
el.
|
|
314
|
+
el.on('mouseover', el.focusNodeAdjHandler = function () {
|
|
294
315
|
if (!sankeyView._focusAdjacencyDisabled) {
|
|
316
|
+
sankeyView._clearTimer();
|
|
317
|
+
|
|
295
318
|
api.dispatchAction({
|
|
296
319
|
type: 'focusNodeAdjacency',
|
|
297
320
|
seriesId: seriesModel.id,
|
|
@@ -299,12 +322,9 @@ var _default = echarts.extendChartView({
|
|
|
299
322
|
});
|
|
300
323
|
}
|
|
301
324
|
});
|
|
302
|
-
el.
|
|
325
|
+
el.on('mouseout', el.unfocusNodeAdjHandler = function () {
|
|
303
326
|
if (!sankeyView._focusAdjacencyDisabled) {
|
|
304
|
-
|
|
305
|
-
type: 'unfocusNodeAdjacency',
|
|
306
|
-
seriesId: seriesModel.id
|
|
307
|
-
});
|
|
327
|
+
sankeyView._dispatchUnfocus(api);
|
|
308
328
|
}
|
|
309
329
|
});
|
|
310
330
|
}
|
|
@@ -318,10 +338,30 @@ var _default = echarts.extendChartView({
|
|
|
318
338
|
|
|
319
339
|
this._data = seriesModel.getData();
|
|
320
340
|
},
|
|
321
|
-
dispose: function () {
|
|
322
|
-
|
|
323
|
-
|
|
341
|
+
dispose: function () {
|
|
342
|
+
this._clearTimer();
|
|
343
|
+
},
|
|
344
|
+
_dispatchUnfocus: function (api) {
|
|
345
|
+
var self = this;
|
|
324
346
|
|
|
347
|
+
this._clearTimer();
|
|
348
|
+
|
|
349
|
+
this._unfocusDelayTimer = setTimeout(function () {
|
|
350
|
+
self._unfocusDelayTimer = null;
|
|
351
|
+
api.dispatchAction({
|
|
352
|
+
type: 'unfocusNodeAdjacency',
|
|
353
|
+
seriesId: self._model.id
|
|
354
|
+
});
|
|
355
|
+
}, 500);
|
|
356
|
+
},
|
|
357
|
+
_clearTimer: function () {
|
|
358
|
+
if (this._unfocusDelayTimer) {
|
|
359
|
+
clearTimeout(this._unfocusDelayTimer);
|
|
360
|
+
this._unfocusDelayTimer = null;
|
|
361
|
+
}
|
|
362
|
+
},
|
|
363
|
+
focusNodeAdjacency: function (seriesModel, ecModel, api, payload) {
|
|
364
|
+
var data = seriesModel.getData();
|
|
325
365
|
var graph = data.graph;
|
|
326
366
|
var dataIndex = payload.dataIndex;
|
|
327
367
|
var itemModel = data.getItemModel(dataIndex);
|
|
@@ -341,7 +381,7 @@ var _default = echarts.extendChartView({
|
|
|
341
381
|
});
|
|
342
382
|
|
|
343
383
|
if (node) {
|
|
344
|
-
fadeInItem(node,
|
|
384
|
+
fadeInItem(node, hoverNodeOpacityPath);
|
|
345
385
|
var focusNodeAdj = itemModel.get('focusNodeAdjacency');
|
|
346
386
|
|
|
347
387
|
if (focusNodeAdj === 'outEdges') {
|
|
@@ -350,8 +390,8 @@ var _default = echarts.extendChartView({
|
|
|
350
390
|
return;
|
|
351
391
|
}
|
|
352
392
|
|
|
353
|
-
fadeInItem(edge,
|
|
354
|
-
fadeInItem(edge.node2,
|
|
393
|
+
fadeInItem(edge, hoverLineOpacityPath);
|
|
394
|
+
fadeInItem(edge.node2, hoverNodeOpacityPath);
|
|
355
395
|
});
|
|
356
396
|
} else if (focusNodeAdj === 'inEdges') {
|
|
357
397
|
zrUtil.each(node.inEdges, function (edge) {
|
|
@@ -359,8 +399,8 @@ var _default = echarts.extendChartView({
|
|
|
359
399
|
return;
|
|
360
400
|
}
|
|
361
401
|
|
|
362
|
-
fadeInItem(edge,
|
|
363
|
-
fadeInItem(edge.node1,
|
|
402
|
+
fadeInItem(edge, hoverLineOpacityPath);
|
|
403
|
+
fadeInItem(edge.node1, hoverNodeOpacityPath);
|
|
364
404
|
});
|
|
365
405
|
} else if (focusNodeAdj === 'allEdges') {
|
|
366
406
|
zrUtil.each(node.edges, function (edge) {
|
|
@@ -368,22 +408,21 @@ var _default = echarts.extendChartView({
|
|
|
368
408
|
return;
|
|
369
409
|
}
|
|
370
410
|
|
|
371
|
-
fadeInItem(edge,
|
|
372
|
-
fadeInItem(edge.node1,
|
|
373
|
-
fadeInItem(edge.node2,
|
|
411
|
+
fadeInItem(edge, hoverLineOpacityPath);
|
|
412
|
+
edge.node1 !== node && fadeInItem(edge.node1, hoverNodeOpacityPath);
|
|
413
|
+
edge.node2 !== node && fadeInItem(edge.node2, hoverNodeOpacityPath);
|
|
374
414
|
});
|
|
375
415
|
}
|
|
376
416
|
}
|
|
377
417
|
|
|
378
418
|
if (edge) {
|
|
379
|
-
fadeInItem(edge,
|
|
380
|
-
fadeInItem(edge.node1,
|
|
381
|
-
fadeInItem(edge.node2,
|
|
419
|
+
fadeInItem(edge, hoverLineOpacityPath);
|
|
420
|
+
fadeInItem(edge.node1, hoverNodeOpacityPath);
|
|
421
|
+
fadeInItem(edge.node2, hoverNodeOpacityPath);
|
|
382
422
|
}
|
|
383
423
|
},
|
|
384
424
|
unfocusNodeAdjacency: function (seriesModel, ecModel, api, payload) {
|
|
385
|
-
var graph =
|
|
386
|
-
|
|
425
|
+
var graph = seriesModel.getGraph();
|
|
387
426
|
graph.eachNode(function (node) {
|
|
388
427
|
fadeOutItem(node, nodeOpacityPath);
|
|
389
428
|
});
|
|
@@ -405,8 +444,7 @@ function createGridClipShape(rect, seriesModel, cb) {
|
|
|
405
444
|
});
|
|
406
445
|
graphic.initProps(rectEl, {
|
|
407
446
|
shape: {
|
|
408
|
-
width: rect.width + 20
|
|
409
|
-
height: rect.height + 20
|
|
447
|
+
width: rect.width + 20
|
|
410
448
|
}
|
|
411
449
|
}, seriesModel, cb);
|
|
412
450
|
return rectEl;
|
|
@@ -97,7 +97,8 @@ function computeNodeValues(nodes) {
|
|
|
97
97
|
zrUtil.each(nodes, function (node) {
|
|
98
98
|
var value1 = sum(node.outEdges, getEdgeValue);
|
|
99
99
|
var value2 = sum(node.inEdges, getEdgeValue);
|
|
100
|
-
var
|
|
100
|
+
var nodeRawValue = node.getValue() || 0;
|
|
101
|
+
var value = Math.max(value1, value2, nodeRawValue);
|
|
101
102
|
node.setLayout({
|
|
102
103
|
value: value
|
|
103
104
|
}, true);
|
|
@@ -456,6 +457,11 @@ function relaxRightToLeft(nodesByBreadth, alpha, orient) {
|
|
|
456
457
|
if (node.outEdges.length) {
|
|
457
458
|
var y = sum(node.outEdges, weightedTarget, orient) / sum(node.outEdges, getEdgeValue, orient);
|
|
458
459
|
|
|
460
|
+
if (isNaN(y)) {
|
|
461
|
+
var len = node.outEdges.length;
|
|
462
|
+
y = len ? sum(node.outEdges, centerTarget, orient) / len : 0;
|
|
463
|
+
}
|
|
464
|
+
|
|
459
465
|
if (orient === 'vertical') {
|
|
460
466
|
var nodeX = node.getLayout().x + (y - center(node, orient)) * alpha;
|
|
461
467
|
node.setLayout({
|
|
@@ -476,10 +482,18 @@ function weightedTarget(edge, orient) {
|
|
|
476
482
|
return center(edge.node2, orient) * edge.getValue();
|
|
477
483
|
}
|
|
478
484
|
|
|
485
|
+
function centerTarget(edge, orient) {
|
|
486
|
+
return center(edge.node2, orient);
|
|
487
|
+
}
|
|
488
|
+
|
|
479
489
|
function weightedSource(edge, orient) {
|
|
480
490
|
return center(edge.node1, orient) * edge.getValue();
|
|
481
491
|
}
|
|
482
492
|
|
|
493
|
+
function centerSource(edge, orient) {
|
|
494
|
+
return center(edge.node1, orient);
|
|
495
|
+
}
|
|
496
|
+
|
|
483
497
|
function center(node, orient) {
|
|
484
498
|
return orient === 'vertical' ? node.getLayout().x + node.getLayout().dx / 2 : node.getLayout().y + node.getLayout().dy / 2;
|
|
485
499
|
}
|
|
@@ -488,13 +502,13 @@ function getEdgeValue(edge) {
|
|
|
488
502
|
return edge.getValue();
|
|
489
503
|
}
|
|
490
504
|
|
|
491
|
-
function sum(array,
|
|
505
|
+
function sum(array, cb, orient) {
|
|
492
506
|
var sum = 0;
|
|
493
507
|
var len = array.length;
|
|
494
508
|
var i = -1;
|
|
495
509
|
|
|
496
510
|
while (++i < len) {
|
|
497
|
-
var value = +
|
|
511
|
+
var value = +cb.call(array, array[i], orient);
|
|
498
512
|
|
|
499
513
|
if (!isNaN(value)) {
|
|
500
514
|
sum += value;
|
|
@@ -518,6 +532,11 @@ function relaxLeftToRight(nodesByBreadth, alpha, orient) {
|
|
|
518
532
|
if (node.inEdges.length) {
|
|
519
533
|
var y = sum(node.inEdges, weightedSource, orient) / sum(node.inEdges, getEdgeValue, orient);
|
|
520
534
|
|
|
535
|
+
if (isNaN(y)) {
|
|
536
|
+
var len = node.inEdges.length;
|
|
537
|
+
y = len ? sum(node.inEdges, centerSource, orient) / len : 0;
|
|
538
|
+
}
|
|
539
|
+
|
|
521
540
|
if (orient === 'vertical') {
|
|
522
541
|
var nodeX = node.getLayout().x + (y - center(node, orient)) * alpha;
|
|
523
542
|
node.setLayout({
|
|
@@ -44,7 +44,9 @@ var _default = SeriesModel.extend({
|
|
|
44
44
|
type: 'series.scatter',
|
|
45
45
|
dependencies: ['grid', 'polar', 'geo', 'singleAxis', 'calendar'],
|
|
46
46
|
getInitialData: function (option, ecModel) {
|
|
47
|
-
return createListFromArray(this.getSource(), this
|
|
47
|
+
return createListFromArray(this.getSource(), this, {
|
|
48
|
+
useEncodeDefaulter: true
|
|
49
|
+
});
|
|
48
50
|
},
|
|
49
51
|
brushSelector: 'point',
|
|
50
52
|
getProgressive: function () {
|