echarts 4.8.0 → 4.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.DS_Store +0 -0
- package/.gitattributes +3 -0
- package/.github/workflows/nodejs.yml +3 -1
- package/.huskyrc +5 -0
- package/README.md +1 -1
- package/asset/.DS_Store +0 -0
- package/build/.DS_Store +0 -0
- package/dist/echarts-en.common.js +284 -93
- package/dist/echarts-en.common.min.js +1 -1
- package/dist/echarts-en.js +816 -284
- package/dist/echarts-en.js.map +1 -1
- package/dist/echarts-en.min.js +1 -1
- package/dist/echarts-en.simple.js +60 -26
- package/dist/echarts-en.simple.min.js +1 -1
- package/dist/echarts.common.js +284 -93
- package/dist/echarts.common.min.js +1 -1
- package/dist/echarts.js +816 -284
- package/dist/echarts.js.map +1 -1
- package/dist/echarts.min.js +1 -1
- package/dist/echarts.simple.js +60 -26
- package/dist/echarts.simple.min.js +1 -1
- package/dist/extension/bmap.js +33 -345
- package/dist/extension/bmap.js.map +1 -1
- package/dist/extension/bmap.min.js +1 -1
- package/dist/extension/dataTool.js.map +1 -1
- package/extension/.DS_Store +0 -0
- package/extension/bmap/BMapCoordSys.js +14 -4
- package/extension/bmap/BMapModel.js +4 -0
- package/extension/bmap/BMapView.js +18 -14
- package/extension-src/bmap/BMapCoordSys.js +14 -4
- package/extension-src/bmap/BMapModel.js +6 -1
- package/extension-src/bmap/BMapView.js +16 -10
- package/lib/chart/bar/BarView.js +49 -16
- package/lib/chart/bar/PictorialBarSeries.js +1 -1
- package/lib/chart/funnel/FunnelSeries.js +1 -0
- package/lib/chart/funnel/funnelLayout.js +162 -46
- package/lib/chart/graph/GraphSeries.js +12 -2
- package/lib/chart/graph/circularLayoutHelper.js +8 -2
- package/lib/chart/graph/forceLayout.js +6 -1
- package/lib/chart/graph/simpleLayout.js +1 -1
- package/lib/chart/graph/simpleLayoutHelper.js +10 -4
- package/lib/chart/helper/Line.js +35 -9
- package/lib/chart/helper/Symbol.js +1 -1
- package/lib/chart/helper/multipleGraphEdgeHelper.js +258 -0
- package/lib/chart/lines/LinesSeries.js +0 -2
- package/lib/chart/map/MapSeries.js +3 -2
- package/lib/chart/radar/RadarSeries.js +4 -3
- package/lib/chart/radar/RadarView.js +3 -1
- package/lib/chart/sunburst/SunburstPiece.js +4 -1
- package/lib/chart/sunburst/SunburstSeries.js +17 -5
- package/lib/chart/themeRiver/ThemeRiverSeries.js +21 -30
- package/lib/chart/tree/TreeSeries.js +1 -1
- package/lib/chart/tree/TreeView.js +4 -4
- package/lib/chart/treemap/TreemapSeries.js +14 -5
- package/lib/chart/treemap/treemapLayout.js +1 -1
- package/lib/chart/treemap/treemapVisual.js +9 -15
- package/lib/component/axisPointer/axisTrigger.js +1 -1
- package/lib/component/legend/ScrollableLegendView.js +1 -1
- package/lib/component/marker/MarkAreaView.js +53 -15
- package/lib/component/marker/MarkLineView.js +3 -0
- package/lib/component/marker/MarkPointView.js +8 -1
- package/lib/component/marker/MarkerModel.js +3 -2
- package/lib/component/timeline/SliderTimelineView.js +7 -1
- package/lib/component/title.js +1 -1
- package/lib/component/toolbox/feature/DataView.js +23 -8
- package/lib/component/toolbox/feature/DataZoom.js +6 -6
- package/lib/component/toolbox/feature/SaveAsImage.js +2 -1
- package/lib/component/tooltip/TooltipContent.js +42 -8
- package/lib/component/tooltip/TooltipRichContent.js +56 -8
- package/lib/component/tooltip/TooltipView.js +4 -4
- package/lib/component/visualMap/VisualMapModel.js +1 -1
- package/lib/coord/axisDefault.js +1 -1
- package/lib/coord/axisHelper.js +2 -2
- package/lib/coord/geo/GeoModel.js +2 -1
- package/lib/data/Graph.js +1 -6
- package/lib/data/List.js +1 -1
- package/lib/data/Tree.js +4 -31
- package/lib/echarts.js +2 -2
- package/lib/layout/barPolar.js +1 -1
- package/lib/processor/dataSample.js +1 -1
- package/lib/stream/Scheduler.js +1 -1
- package/lib/visual/VisualMapping.js +1 -1
- package/map/.DS_Store +0 -0
- package/map/js/.DS_Store +0 -0
- package/map/js/province/.DS_Store +0 -0
- package/map/json/.DS_Store +0 -0
- package/package.json +3 -2
- package/src/.DS_Store +0 -0
- package/src/chart/.DS_Store +0 -0
- package/src/chart/bar/BarView.js +50 -16
- package/src/chart/bar/PictorialBarSeries.js +2 -2
- package/src/chart/funnel/FunnelSeries.js +1 -0
- package/src/chart/funnel/funnelLayout.js +179 -53
- package/src/chart/graph/GraphSeries.js +9 -3
- package/src/chart/graph/circularLayoutHelper.js +8 -2
- package/src/chart/graph/forceLayout.js +7 -1
- package/src/chart/graph/simpleLayout.js +1 -1
- package/src/chart/graph/simpleLayoutHelper.js +12 -5
- package/src/chart/helper/Line.js +38 -11
- package/src/chart/helper/Symbol.js +2 -2
- package/src/chart/helper/createGraphFromNodeEdge.js +2 -1
- package/src/chart/helper/multipleGraphEdgeHelper.js +229 -0
- package/src/chart/lines/LinesSeries.js +1 -3
- package/src/chart/map/MapSeries.js +3 -2
- package/src/chart/radar/RadarSeries.js +4 -3
- package/src/chart/radar/RadarView.js +4 -2
- package/src/chart/sunburst/SunburstPiece.js +5 -1
- package/src/chart/sunburst/SunburstSeries.js +16 -8
- package/src/chart/themeRiver/ThemeRiverSeries.js +21 -27
- package/src/chart/tree/TreeSeries.js +1 -1
- package/src/chart/tree/TreeView.js +3 -3
- package/src/chart/treemap/TreemapSeries.js +11 -3
- package/src/chart/treemap/treemapLayout.js +2 -2
- package/src/chart/treemap/treemapVisual.js +8 -25
- package/src/component/axisPointer/axisTrigger.js +1 -1
- package/src/component/legend/ScrollableLegendView.js +1 -1
- package/src/component/marker/MarkAreaView.js +53 -15
- package/src/component/marker/MarkLineView.js +3 -1
- package/src/component/marker/MarkPointView.js +7 -1
- package/src/component/marker/MarkerModel.js +3 -2
- package/src/component/timeline/SliderTimelineView.js +9 -6
- package/src/component/title.js +2 -2
- package/src/component/toolbox/.DS_Store +0 -0
- package/src/component/toolbox/feature/DataView.js +20 -8
- package/src/component/toolbox/feature/DataZoom.js +6 -6
- package/src/component/toolbox/feature/SaveAsImage.js +2 -1
- package/src/component/tooltip/TooltipContent.js +36 -7
- package/src/component/tooltip/TooltipRichContent.js +52 -9
- package/src/component/tooltip/TooltipView.js +4 -4
- package/src/component/visualMap/VisualMapModel.js +1 -1
- package/src/coord/axisDefault.js +1 -1
- package/src/coord/axisHelper.js +4 -2
- package/src/coord/geo/GeoModel.js +3 -6
- package/src/data/Graph.js +0 -5
- package/src/data/List.js +1 -1
- package/src/data/Tree.js +4 -32
- package/src/echarts.js +2 -2
- package/src/layout/barPolar.js +4 -2
- package/src/model/.DS_Store +0 -0
- package/src/preprocessor/.DS_Store +0 -0
- package/src/processor/dataSample.js +1 -1
- package/src/stream/Scheduler.js +1 -1
- package/src/util/.DS_Store +0 -0
- package/src/visual/VisualMapping.js +1 -1
- package/theme/.DS_Store +0 -0
|
@@ -19,6 +19,8 @@
|
|
|
19
19
|
|
|
20
20
|
import * as vec2 from 'zrender/src/core/vector';
|
|
21
21
|
import {getSymbolSize, getNodeGlobalScale} from './graphHelper';
|
|
22
|
+
import * as zrUtil from 'zrender/src/core/util';
|
|
23
|
+
import {getCurvenessForEdge} from '../helper/multipleGraphEdgeHelper';
|
|
22
24
|
|
|
23
25
|
var PI = Math.PI;
|
|
24
26
|
|
|
@@ -73,8 +75,12 @@ export function circularLayout(seriesModel, basedOn) {
|
|
|
73
75
|
|
|
74
76
|
_layoutNodesBasedOn[basedOn](seriesModel, coordSys, graph, nodeData, r, cx, cy, count);
|
|
75
77
|
|
|
76
|
-
graph.eachEdge(function (edge) {
|
|
77
|
-
var curveness =
|
|
78
|
+
graph.eachEdge(function (edge, index) {
|
|
79
|
+
var curveness = zrUtil.retrieve3(
|
|
80
|
+
edge.getModel().get('lineStyle.curveness'),
|
|
81
|
+
getCurvenessForEdge(edge, seriesModel, index),
|
|
82
|
+
0
|
|
83
|
+
);
|
|
78
84
|
var p1 = vec2.clone(edge.node1.getLayout());
|
|
79
85
|
var p2 = vec2.clone(edge.node2.getLayout());
|
|
80
86
|
var cp1;
|
|
@@ -23,6 +23,7 @@ import {circularLayout} from './circularLayoutHelper';
|
|
|
23
23
|
import {linearMap} from '../../util/number';
|
|
24
24
|
import * as vec2 from 'zrender/src/core/vector';
|
|
25
25
|
import * as zrUtil from 'zrender/src/core/util';
|
|
26
|
+
import {getCurvenessForEdge} from '../helper/multipleGraphEdgeHelper';
|
|
26
27
|
|
|
27
28
|
export default function (ecModel) {
|
|
28
29
|
ecModel.eachSeriesByType('graph', function (graphSeries) {
|
|
@@ -84,11 +85,16 @@ export default function (ecModel) {
|
|
|
84
85
|
d = (edgeLength[0] + edgeLength[1]) / 2;
|
|
85
86
|
}
|
|
86
87
|
var edgeModel = edge.getModel();
|
|
88
|
+
var curveness = zrUtil.retrieve3(
|
|
89
|
+
edgeModel.get('lineStyle.curveness'),
|
|
90
|
+
-getCurvenessForEdge(edge, graphSeries, idx, true),
|
|
91
|
+
0
|
|
92
|
+
);
|
|
87
93
|
return {
|
|
88
94
|
n1: nodes[edge.node1.dataIndex],
|
|
89
95
|
n2: nodes[edge.node2.dataIndex],
|
|
90
96
|
d: d,
|
|
91
|
-
curveness:
|
|
97
|
+
curveness: curveness,
|
|
92
98
|
ignoreForceLayout: edgeModel.get('ignoreForceLayout')
|
|
93
99
|
};
|
|
94
100
|
});
|
|
@@ -18,6 +18,9 @@
|
|
|
18
18
|
*/
|
|
19
19
|
|
|
20
20
|
import * as vec2 from 'zrender/src/core/vector';
|
|
21
|
+
import * as zrUtil from 'zrender/src/core/util';
|
|
22
|
+
import {getCurvenessForEdge} from '../helper/multipleGraphEdgeHelper';
|
|
23
|
+
|
|
21
24
|
|
|
22
25
|
export function simpleLayout(seriesModel) {
|
|
23
26
|
var coordSys = seriesModel.coordinateSystem;
|
|
@@ -31,12 +34,16 @@ export function simpleLayout(seriesModel) {
|
|
|
31
34
|
node.setLayout([+model.get('x'), +model.get('y')]);
|
|
32
35
|
});
|
|
33
36
|
|
|
34
|
-
simpleLayoutEdge(graph);
|
|
37
|
+
simpleLayoutEdge(graph, seriesModel);
|
|
35
38
|
}
|
|
36
39
|
|
|
37
|
-
export function simpleLayoutEdge(graph) {
|
|
38
|
-
graph.eachEdge(function (edge) {
|
|
39
|
-
var curveness =
|
|
40
|
+
export function simpleLayoutEdge(graph, seriesModel) {
|
|
41
|
+
graph.eachEdge(function (edge, index) {
|
|
42
|
+
var curveness = zrUtil.retrieve3(
|
|
43
|
+
edge.getModel().get('lineStyle.curveness'),
|
|
44
|
+
-getCurvenessForEdge(edge, seriesModel, index, true),
|
|
45
|
+
0
|
|
46
|
+
);
|
|
40
47
|
var p1 = vec2.clone(edge.node1.getLayout());
|
|
41
48
|
var p2 = vec2.clone(edge.node2.getLayout());
|
|
42
49
|
var points = [p1, p2];
|
|
@@ -48,4 +55,4 @@ export function simpleLayoutEdge(graph) {
|
|
|
48
55
|
}
|
|
49
56
|
edge.setLayout(points);
|
|
50
57
|
});
|
|
51
|
-
}
|
|
58
|
+
}
|
package/src/chart/helper/Line.js
CHANGED
|
@@ -37,22 +37,29 @@ function makeSymbolTypeKey(symbolCategory) {
|
|
|
37
37
|
* @inner
|
|
38
38
|
*/
|
|
39
39
|
function createSymbol(name, lineData, idx) {
|
|
40
|
-
var color = lineData.getItemVisual(idx, 'color');
|
|
41
40
|
var symbolType = lineData.getItemVisual(idx, name);
|
|
42
|
-
var symbolSize = lineData.getItemVisual(idx, name + 'Size');
|
|
43
41
|
|
|
44
42
|
if (!symbolType || symbolType === 'none') {
|
|
45
43
|
return;
|
|
46
44
|
}
|
|
47
45
|
|
|
46
|
+
var color = lineData.getItemVisual(idx, 'color');
|
|
47
|
+
var symbolSize = lineData.getItemVisual(idx, name + 'Size');
|
|
48
|
+
var symbolRotate = lineData.getItemVisual(idx, name + 'Rotate');
|
|
49
|
+
|
|
48
50
|
if (!zrUtil.isArray(symbolSize)) {
|
|
49
51
|
symbolSize = [symbolSize, symbolSize];
|
|
50
52
|
}
|
|
53
|
+
|
|
51
54
|
var symbolPath = symbolUtil.createSymbol(
|
|
52
55
|
symbolType, -symbolSize[0] / 2, -symbolSize[1] / 2,
|
|
53
56
|
symbolSize[0], symbolSize[1], color
|
|
54
57
|
);
|
|
55
58
|
|
|
59
|
+
// rotate by default if symbolRotate is not specified or NaN
|
|
60
|
+
symbolPath.__specifiedRotation = symbolRotate == null || isNaN(symbolRotate)
|
|
61
|
+
? void 0
|
|
62
|
+
: +symbolRotate * Math.PI / 180 || 0;
|
|
56
63
|
symbolPath.name = name;
|
|
57
64
|
|
|
58
65
|
return symbolPath;
|
|
@@ -120,18 +127,38 @@ function updateSymbolAndLabelBeforeLineUpdate() {
|
|
|
120
127
|
|
|
121
128
|
if (symbolFrom) {
|
|
122
129
|
symbolFrom.attr('position', fromPos);
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
130
|
+
// Fix #12388
|
|
131
|
+
// when symbol is set to be 'arrow' in markLine,
|
|
132
|
+
// symbolRotate value will be ignored, and compulsively use tangent angle.
|
|
133
|
+
// rotate by default if symbol rotation is not specified
|
|
134
|
+
var specifiedRotation = symbolFrom.__specifiedRotation;
|
|
135
|
+
if (specifiedRotation == null) {
|
|
136
|
+
var tangent = line.tangentAt(0);
|
|
137
|
+
symbolFrom.attr('rotation', Math.PI / 2 - Math.atan2(
|
|
138
|
+
tangent[1], tangent[0]
|
|
139
|
+
));
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
symbolFrom.attr('rotation', specifiedRotation);
|
|
143
|
+
}
|
|
127
144
|
symbolFrom.attr('scale', [invScale * percent, invScale * percent]);
|
|
128
145
|
}
|
|
129
146
|
if (symbolTo) {
|
|
130
147
|
symbolTo.attr('position', toPos);
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
148
|
+
// Fix #12388
|
|
149
|
+
// when symbol is set to be 'arrow' in markLine,
|
|
150
|
+
// symbolRotate value will be ignored, and compulsively use tangent angle.
|
|
151
|
+
// rotate by default if symbol rotation is not specified
|
|
152
|
+
var specifiedRotation = symbolTo.__specifiedRotation;
|
|
153
|
+
if (specifiedRotation == null) {
|
|
154
|
+
var tangent = line.tangentAt(1);
|
|
155
|
+
symbolTo.attr('rotation', -Math.PI / 2 - Math.atan2(
|
|
156
|
+
tangent[1], tangent[0]
|
|
157
|
+
));
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
symbolTo.attr('rotation', specifiedRotation);
|
|
161
|
+
}
|
|
135
162
|
symbolTo.attr('scale', [invScale * percent, invScale * percent]);
|
|
136
163
|
}
|
|
137
164
|
|
|
@@ -461,4 +488,4 @@ lineProto.setLinePoints = function (points) {
|
|
|
461
488
|
|
|
462
489
|
zrUtil.inherits(Line, graphic.Group);
|
|
463
490
|
|
|
464
|
-
export default Line;
|
|
491
|
+
export default Line;
|
|
@@ -238,7 +238,7 @@ symbolProto._updateCommon = function (data, idx, symbolSize, seriesScope) {
|
|
|
238
238
|
}
|
|
239
239
|
else {
|
|
240
240
|
symbolPath.setStyle({
|
|
241
|
-
opacity:
|
|
241
|
+
opacity: 1,
|
|
242
242
|
shadowBlur: null,
|
|
243
243
|
shadowOffsetX: null,
|
|
244
244
|
shadowOffsetY: null,
|
|
@@ -394,4 +394,4 @@ symbolProto.fadeOut = function (cb, opt) {
|
|
|
394
394
|
|
|
395
395
|
zrUtil.inherits(SymbolClz, graphic.Group);
|
|
396
396
|
|
|
397
|
-
export default SymbolClz;
|
|
397
|
+
export default SymbolClz;
|
|
@@ -39,10 +39,12 @@ export default function (nodes, edges, seriesModel, directed, beforeLink) {
|
|
|
39
39
|
var linkNameList = [];
|
|
40
40
|
var validEdges = [];
|
|
41
41
|
var linkCount = 0;
|
|
42
|
+
|
|
42
43
|
for (var i = 0; i < edges.length; i++) {
|
|
43
44
|
var link = edges[i];
|
|
44
45
|
var source = link.source;
|
|
45
46
|
var target = link.target;
|
|
47
|
+
|
|
46
48
|
// addEdge may fail when source or target not exists
|
|
47
49
|
if (graph.addEdge(source, target, linkCount)) {
|
|
48
50
|
validEdges.push(link);
|
|
@@ -89,6 +91,5 @@ export default function (nodes, edges, seriesModel, directed, beforeLink) {
|
|
|
89
91
|
|
|
90
92
|
// Update dataIndex of nodes and edges because invalid edge may be removed
|
|
91
93
|
graph.update();
|
|
92
|
-
|
|
93
94
|
return graph;
|
|
94
95
|
}
|
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Licensed to the Apache Software Foundation (ASF) under one
|
|
3
|
+
* or more contributor license agreements. See the NOTICE file
|
|
4
|
+
* distributed with this work for additional information
|
|
5
|
+
* regarding copyright ownership. The ASF licenses this file
|
|
6
|
+
* to you under the Apache License, Version 2.0 (the
|
|
7
|
+
* "License"); you may not use this file except in compliance
|
|
8
|
+
* with the License. You may obtain a copy of the License at
|
|
9
|
+
*
|
|
10
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
+
*
|
|
12
|
+
* Unless required by applicable law or agreed to in writing,
|
|
13
|
+
* software distributed under the License is distributed on an
|
|
14
|
+
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
15
|
+
* KIND, either express or implied. See the License for the
|
|
16
|
+
* specific language governing permissions and limitations
|
|
17
|
+
* under the License.
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
import * as zrUtil from 'zrender/src/core/util';
|
|
21
|
+
|
|
22
|
+
var KEY_DELIMITER = '-->';
|
|
23
|
+
/**
|
|
24
|
+
* params handler
|
|
25
|
+
* @param {module:echarts/model/SeriesModel} seriesModel
|
|
26
|
+
* @returns {*}
|
|
27
|
+
*/
|
|
28
|
+
var getAutoCurvenessParams = function (seriesModel) {
|
|
29
|
+
return seriesModel.get('autoCurveness') || null;
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Generate a list of edge curvatures, 20 is the default
|
|
34
|
+
* @param {module:echarts/model/SeriesModel} seriesModel
|
|
35
|
+
* @param {number} appendLength
|
|
36
|
+
* @return 20 => [0, -0.2, 0.2, -0.4, 0.4, -0.6, 0.6, -0.8, 0.8, -1, 1, -1.2, 1.2, -1.4, 1.4, -1.6, 1.6, -1.8, 1.8, -2]
|
|
37
|
+
*/
|
|
38
|
+
var createCurveness = function (seriesModel, appendLength) {
|
|
39
|
+
var autoCurvenessParmas = getAutoCurvenessParams(seriesModel);
|
|
40
|
+
var length = 20;
|
|
41
|
+
var curvenessList = [];
|
|
42
|
+
|
|
43
|
+
// handler the function set
|
|
44
|
+
if (typeof autoCurvenessParmas === 'number') {
|
|
45
|
+
length = autoCurvenessParmas;
|
|
46
|
+
}
|
|
47
|
+
else if (zrUtil.isArray(autoCurvenessParmas)) {
|
|
48
|
+
seriesModel.__curvenessList = autoCurvenessParmas;
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// append length
|
|
53
|
+
if (appendLength > length) {
|
|
54
|
+
length = appendLength;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
// make sure the length is even
|
|
58
|
+
var len = length % 2 ? length + 2 : length + 3;
|
|
59
|
+
curvenessList = [];
|
|
60
|
+
|
|
61
|
+
for (var i = 0; i < len; i++) {
|
|
62
|
+
curvenessList.push((i % 2 ? i + 1 : i) / 10 * (i % 2 ? -1 : 1));
|
|
63
|
+
}
|
|
64
|
+
seriesModel.__curvenessList = curvenessList;
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Create different cache key data in the positive and negative directions, in order to set the curvature later
|
|
69
|
+
* @param {number|string|module:echarts/data/Graph.Node} n1
|
|
70
|
+
* @param {number|string|module:echarts/data/Graph.Node} n2
|
|
71
|
+
* @param {module:echarts/model/SeriesModel} seriesModel
|
|
72
|
+
* @returns {string} key
|
|
73
|
+
*/
|
|
74
|
+
var getKeyOfEdges = function (n1, n2, seriesModel) {
|
|
75
|
+
var source = [n1.id, n1.dataIndex].join('.');
|
|
76
|
+
var target = [n2.id, n2.dataIndex].join('.');
|
|
77
|
+
return [seriesModel.uid, source, target].join(KEY_DELIMITER);
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* get opposite key
|
|
82
|
+
* @param {string} key
|
|
83
|
+
* @returns {string}
|
|
84
|
+
*/
|
|
85
|
+
var getOppositeKey = function (key) {
|
|
86
|
+
var keys = key.split(KEY_DELIMITER);
|
|
87
|
+
return [keys[0], keys[2], keys[1]].join(KEY_DELIMITER);
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* get edgeMap with key
|
|
92
|
+
* @param edge
|
|
93
|
+
* @param {module:echarts/model/SeriesModel} seriesModel
|
|
94
|
+
*/
|
|
95
|
+
var getEdgeFromMap = function (edge, seriesModel) {
|
|
96
|
+
var key = getKeyOfEdges(edge.node1, edge.node2, seriesModel);
|
|
97
|
+
return seriesModel.__edgeMap[key];
|
|
98
|
+
};
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* calculate all cases total length
|
|
102
|
+
* @param edge
|
|
103
|
+
* @param seriesModel
|
|
104
|
+
* @returns {number}
|
|
105
|
+
*/
|
|
106
|
+
var getTotalLengthBetweenNodes = function (edge, seriesModel) {
|
|
107
|
+
var len = getEdgeMapLengthWithKey(getKeyOfEdges(edge.node1, edge.node2, seriesModel), seriesModel);
|
|
108
|
+
var lenV = getEdgeMapLengthWithKey(getKeyOfEdges(edge.node2, edge.node1, seriesModel), seriesModel);
|
|
109
|
+
|
|
110
|
+
return len + lenV;
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
*
|
|
115
|
+
* @param key
|
|
116
|
+
*/
|
|
117
|
+
var getEdgeMapLengthWithKey = function (key, seriesModel) {
|
|
118
|
+
var edgeMap = seriesModel.__edgeMap;
|
|
119
|
+
return edgeMap[key] ? edgeMap[key].length : 0;
|
|
120
|
+
};
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* Count the number of edges between the same two points, used to obtain the curvature table and the parity of the edge
|
|
124
|
+
* @see /graph/GraphSeries.js@getInitialData
|
|
125
|
+
* @param {module:echarts/model/SeriesModel} seriesModel
|
|
126
|
+
*/
|
|
127
|
+
export function initCurvenessList(seriesModel) {
|
|
128
|
+
if (!getAutoCurvenessParams(seriesModel)) {
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
seriesModel.__curvenessList = [];
|
|
133
|
+
seriesModel.__edgeMap = {};
|
|
134
|
+
// calc the array of curveness List
|
|
135
|
+
createCurveness(seriesModel);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
/**
|
|
139
|
+
* set edgeMap with key
|
|
140
|
+
* @param {number|string|module:echarts/data/Graph.Node} n1
|
|
141
|
+
* @param {number|string|module:echarts/data/Graph.Node} n2
|
|
142
|
+
* @param {module:echarts/model/SeriesModel} seriesModel
|
|
143
|
+
* @param {number} index
|
|
144
|
+
*/
|
|
145
|
+
export function createEdgeMapForCurveness(n1, n2, seriesModel, index) {
|
|
146
|
+
if (!getAutoCurvenessParams(seriesModel)) {
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
var key = getKeyOfEdges(n1, n2, seriesModel);
|
|
151
|
+
var edgeMap = seriesModel.__edgeMap;
|
|
152
|
+
var oppositeEdges = edgeMap[getOppositeKey(key)];
|
|
153
|
+
// set direction
|
|
154
|
+
if (edgeMap[key] && !oppositeEdges) {
|
|
155
|
+
edgeMap[key].isForward = true;
|
|
156
|
+
}
|
|
157
|
+
else if (oppositeEdges && edgeMap[key]) {
|
|
158
|
+
oppositeEdges.isForward = true;
|
|
159
|
+
edgeMap[key].isForward = false;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
edgeMap[key] = edgeMap[key] || [];
|
|
163
|
+
edgeMap[key].push(index);
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
/**
|
|
167
|
+
* get curvature for edge
|
|
168
|
+
* @param edge
|
|
169
|
+
* @param {module:echarts/model/SeriesModel} seriesModel
|
|
170
|
+
* @param index
|
|
171
|
+
*/
|
|
172
|
+
export function getCurvenessForEdge(edge, seriesModel, index, needReverse) {
|
|
173
|
+
var autoCurvenessParams = getAutoCurvenessParams(seriesModel);
|
|
174
|
+
var isArrayParam = zrUtil.isArray(autoCurvenessParams);
|
|
175
|
+
if (!autoCurvenessParams) {
|
|
176
|
+
return null;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
var edgeArray = getEdgeFromMap(edge, seriesModel);
|
|
180
|
+
if (!edgeArray) {
|
|
181
|
+
return null;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
var edgeIndex = -1;
|
|
185
|
+
for (var i = 0; i < edgeArray.length; i++) {
|
|
186
|
+
if (edgeArray[i] === index) {
|
|
187
|
+
edgeIndex = i;
|
|
188
|
+
break;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
// if totalLen is Longer createCurveness
|
|
192
|
+
var totalLen = getTotalLengthBetweenNodes(edge, seriesModel);
|
|
193
|
+
createCurveness(seriesModel, totalLen);
|
|
194
|
+
|
|
195
|
+
edge.lineStyle = edge.lineStyle || {};
|
|
196
|
+
// if is opposite edge, must set curvenss to opposite number
|
|
197
|
+
var curKey = getKeyOfEdges(edge.node1, edge.node2, seriesModel);
|
|
198
|
+
var curvenessList = seriesModel.__curvenessList;
|
|
199
|
+
// if pass array no need parity
|
|
200
|
+
var parityCorrection = isArrayParam ? 0 : totalLen % 2 ? 0 : 1;
|
|
201
|
+
|
|
202
|
+
if (!edgeArray.isForward) {
|
|
203
|
+
// the opposite edge show outside
|
|
204
|
+
var oppositeKey = getOppositeKey(curKey);
|
|
205
|
+
var len = getEdgeMapLengthWithKey(oppositeKey, seriesModel);
|
|
206
|
+
var resValue = curvenessList[edgeIndex + len + parityCorrection];
|
|
207
|
+
// isNeedReverse, simple, force type need reverse the curveness in the junction of the forword and the opposite
|
|
208
|
+
if (needReverse) {
|
|
209
|
+
// set as array may make the parity handle with the len of opposite
|
|
210
|
+
if (isArrayParam) {
|
|
211
|
+
if (autoCurvenessParams && autoCurvenessParams[0] === 0) {
|
|
212
|
+
return (len + parityCorrection) % 2 ? resValue : -resValue;
|
|
213
|
+
}
|
|
214
|
+
else {
|
|
215
|
+
return ((len % 2 ? 0 : 1) + parityCorrection) % 2 ? resValue : -resValue;
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
else {
|
|
219
|
+
return (len + parityCorrection) % 2 ? resValue : -resValue;
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
else {
|
|
223
|
+
return curvenessList[edgeIndex + len + parityCorrection];
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
else {
|
|
227
|
+
return curvenessList[parityCorrection + edgeIndex];
|
|
228
|
+
}
|
|
229
|
+
}
|
|
@@ -80,8 +80,6 @@ var LinesSeries = SeriesModel.extend({
|
|
|
80
80
|
},
|
|
81
81
|
|
|
82
82
|
mergeOption: function (option) {
|
|
83
|
-
// The input data may be null/undefined.
|
|
84
|
-
option.data = option.data || [];
|
|
85
83
|
|
|
86
84
|
compatEc2(option);
|
|
87
85
|
|
|
@@ -333,4 +331,4 @@ var LinesSeries = SeriesModel.extend({
|
|
|
333
331
|
}
|
|
334
332
|
});
|
|
335
333
|
|
|
336
|
-
export default LinesSeries;
|
|
334
|
+
export default LinesSeries;
|
|
@@ -131,7 +131,7 @@ var MapSeries = SeriesModel.extend({
|
|
|
131
131
|
*
|
|
132
132
|
* @param {number} dataIndex
|
|
133
133
|
*/
|
|
134
|
-
formatTooltip: function (dataIndex) {
|
|
134
|
+
formatTooltip: function (dataIndex, multipleSeries, dataType, renderMode) {
|
|
135
135
|
// FIXME orignalData and data is a bit confusing
|
|
136
136
|
var data = this.getData();
|
|
137
137
|
var formattedValue = addCommas(this.getRawValue(dataIndex));
|
|
@@ -149,7 +149,8 @@ var MapSeries = SeriesModel.extend({
|
|
|
149
149
|
}
|
|
150
150
|
}
|
|
151
151
|
|
|
152
|
-
|
|
152
|
+
var newLine = renderMode === 'html' ? '<br/>' : '\n';
|
|
153
|
+
return seriesNames.join(', ') + newLine
|
|
153
154
|
+ encodeHTML(name + ' : ' + formattedValue);
|
|
154
155
|
},
|
|
155
156
|
|
|
@@ -49,16 +49,17 @@ var RadarSeries = SeriesModel.extend({
|
|
|
49
49
|
});
|
|
50
50
|
},
|
|
51
51
|
|
|
52
|
-
formatTooltip: function (dataIndex) {
|
|
52
|
+
formatTooltip: function (dataIndex, multipleSeries, dataType, renderMode) {
|
|
53
53
|
var data = this.getData();
|
|
54
54
|
var coordSys = this.coordinateSystem;
|
|
55
55
|
var indicatorAxes = coordSys.getIndicatorAxes();
|
|
56
56
|
var name = this.getData().getName(dataIndex);
|
|
57
|
-
|
|
57
|
+
var newLine = renderMode === 'html' ? '<br/>' : '\n';
|
|
58
|
+
return encodeHTML(name === '' ? this.name : name) + newLine
|
|
58
59
|
+ zrUtil.map(indicatorAxes, function (axis, idx) {
|
|
59
60
|
var val = data.get(data.mapDimension(axis.dim), dataIndex);
|
|
60
61
|
return encodeHTML(axis.name + ' : ' + val);
|
|
61
|
-
}).join(
|
|
62
|
+
}).join(newLine);
|
|
62
63
|
},
|
|
63
64
|
|
|
64
65
|
/**
|
|
@@ -52,12 +52,14 @@ export default echarts.extendChartView({
|
|
|
52
52
|
var symbolPath = symbolUtil.createSymbol(
|
|
53
53
|
symbolType, -1, -1, 2, 2, color
|
|
54
54
|
);
|
|
55
|
+
var symbolRotate = data.getItemVisual(idx, 'symbolRotate') || 0;
|
|
55
56
|
symbolPath.attr({
|
|
56
57
|
style: {
|
|
57
58
|
strokeNoScale: true
|
|
58
59
|
},
|
|
59
60
|
z2: 100,
|
|
60
|
-
scale: [symbolSize[0] / 2, symbolSize[1] / 2]
|
|
61
|
+
scale: [symbolSize[0] / 2, symbolSize[1] / 2],
|
|
62
|
+
rotation: symbolRotate * Math.PI / 180 || 0
|
|
61
63
|
});
|
|
62
64
|
return symbolPath;
|
|
63
65
|
}
|
|
@@ -226,4 +228,4 @@ export default echarts.extendChartView({
|
|
|
226
228
|
},
|
|
227
229
|
|
|
228
230
|
dispose: function () {}
|
|
229
|
-
});
|
|
231
|
+
});
|
|
@@ -203,9 +203,13 @@ SunburstPieceProto._updateLabel = function (seriesModel, visualColor, state) {
|
|
|
203
203
|
: itemModel.getModel(state + '.label');
|
|
204
204
|
var labelHoverModel = itemModel.getModel('emphasis.label');
|
|
205
205
|
|
|
206
|
+
var labelFormatter = labelModel.get('formatter');
|
|
207
|
+
// Use normal formatter if no state formatter is defined
|
|
208
|
+
var labelState = labelFormatter ? state : 'normal';
|
|
209
|
+
|
|
206
210
|
var text = zrUtil.retrieve(
|
|
207
211
|
seriesModel.getFormattedLabel(
|
|
208
|
-
this.node.dataIndex,
|
|
212
|
+
this.node.dataIndex, labelState, null, null, 'label'
|
|
209
213
|
),
|
|
210
214
|
this.node.name
|
|
211
215
|
);
|
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
import * as zrUtil from 'zrender/src/core/util';
|
|
21
21
|
import SeriesModel from '../../model/Series';
|
|
22
22
|
import Tree from '../../data/Tree';
|
|
23
|
+
import Model from '../../model/Model';
|
|
23
24
|
import {wrapTreePathInfo} from '../helper/treeHelper';
|
|
24
25
|
|
|
25
26
|
export default SeriesModel.extend({
|
|
@@ -37,18 +38,25 @@ export default SeriesModel.extend({
|
|
|
37
38
|
|
|
38
39
|
completeTreeValue(root);
|
|
39
40
|
|
|
40
|
-
var
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
var treeOption = {};
|
|
45
|
-
|
|
46
|
-
treeOption.levels = levels;
|
|
41
|
+
var levelModels = zrUtil.map(option.levels || [], function (levelDefine) {
|
|
42
|
+
return new Model(levelDefine, this, ecModel);
|
|
43
|
+
}, this);
|
|
47
44
|
|
|
48
45
|
// Make sure always a new tree is created when setOption,
|
|
49
46
|
// in TreemapView, we check whether oldTree === newTree
|
|
50
47
|
// to choose mappings approach among old shapes and new shapes.
|
|
51
|
-
|
|
48
|
+
var tree = Tree.createTree(root, this, beforeLink);
|
|
49
|
+
|
|
50
|
+
function beforeLink(nodeData) {
|
|
51
|
+
nodeData.wrapMethod('getItemModel', function (model, idx) {
|
|
52
|
+
var node = tree.getNodeByDataIndex(idx);
|
|
53
|
+
var levelModel = levelModels[node.depth];
|
|
54
|
+
levelModel && (model.parentModel = levelModel);
|
|
55
|
+
return model;
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
return tree.data;
|
|
52
60
|
},
|
|
53
61
|
|
|
54
62
|
optionUpdated: function () {
|
|
@@ -63,52 +63,46 @@ var ThemeRiverSeries = SeriesModel.extend({
|
|
|
63
63
|
*/
|
|
64
64
|
fixData: function (data) {
|
|
65
65
|
var rawDataLength = data.length;
|
|
66
|
+
/**
|
|
67
|
+
* Make sure every layer data get the same keys.
|
|
68
|
+
* The value index tells which layer has visited.
|
|
69
|
+
* {
|
|
70
|
+
* 2014/01/01: -1
|
|
71
|
+
* }
|
|
72
|
+
*/
|
|
73
|
+
var timeValueKeys = {};
|
|
66
74
|
|
|
67
75
|
// grouped data by name
|
|
68
76
|
var groupResult = groupData(data, function (item) {
|
|
77
|
+
if (!timeValueKeys.hasOwnProperty(item[0])) {
|
|
78
|
+
timeValueKeys[item[0]] = -1;
|
|
79
|
+
}
|
|
69
80
|
return item[2];
|
|
70
81
|
});
|
|
71
82
|
var layData = [];
|
|
72
83
|
groupResult.buckets.each(function (items, key) {
|
|
73
84
|
layData.push({name: key, dataList: items});
|
|
74
85
|
});
|
|
75
|
-
|
|
76
86
|
var layerNum = layData.length;
|
|
77
|
-
var largestLayer = -1;
|
|
78
|
-
var index = -1;
|
|
79
|
-
for (var i = 0; i < layerNum; ++i) {
|
|
80
|
-
var len = layData[i].dataList.length;
|
|
81
|
-
if (len > largestLayer) {
|
|
82
|
-
largestLayer = len;
|
|
83
|
-
index = i;
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
87
|
|
|
87
88
|
for (var k = 0; k < layerNum; ++k) {
|
|
88
|
-
if (k === index) {
|
|
89
|
-
continue;
|
|
90
|
-
}
|
|
91
89
|
var name = layData[k].name;
|
|
92
|
-
for (var j = 0; j <
|
|
93
|
-
var timeValue = layData[
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
break;
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
if (keyIndex === -1) {
|
|
90
|
+
for (var j = 0; j < layData[k].dataList.length; ++j) {
|
|
91
|
+
var timeValue = layData[k].dataList[j][0];
|
|
92
|
+
timeValueKeys[timeValue] = k;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
for (var timeValue in timeValueKeys) {
|
|
96
|
+
if (timeValueKeys.hasOwnProperty(timeValue) && timeValueKeys[timeValue] !== k) {
|
|
97
|
+
timeValueKeys[timeValue] = k;
|
|
104
98
|
data[rawDataLength] = [];
|
|
105
99
|
data[rawDataLength][0] = timeValue;
|
|
106
100
|
data[rawDataLength][1] = 0;
|
|
107
101
|
data[rawDataLength][2] = name;
|
|
108
102
|
rawDataLength++;
|
|
109
|
-
|
|
110
103
|
}
|
|
111
104
|
}
|
|
105
|
+
|
|
112
106
|
}
|
|
113
107
|
return data;
|
|
114
108
|
},
|
|
@@ -293,4 +287,4 @@ var ThemeRiverSeries = SeriesModel.extend({
|
|
|
293
287
|
}
|
|
294
288
|
});
|
|
295
289
|
|
|
296
|
-
export default ThemeRiverSeries;
|
|
290
|
+
export default ThemeRiverSeries;
|
|
@@ -45,7 +45,7 @@ export default SeriesModel.extend({
|
|
|
45
45
|
var leaves = option.leaves || {};
|
|
46
46
|
var leavesModel = new Model(leaves, this, this.ecModel);
|
|
47
47
|
|
|
48
|
-
var tree = Tree.createTree(root, this,
|
|
48
|
+
var tree = Tree.createTree(root, this, beforeLink);
|
|
49
49
|
|
|
50
50
|
function beforeLink(nodeData) {
|
|
51
51
|
nodeData.wrapMethod('getItemModel', function (model, idx) {
|