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
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
|
|
2
|
+
/*
|
|
3
|
+
* Licensed to the Apache Software Foundation (ASF) under one
|
|
4
|
+
* or more contributor license agreements. See the NOTICE file
|
|
5
|
+
* distributed with this work for additional information
|
|
6
|
+
* regarding copyright ownership. The ASF licenses this file
|
|
7
|
+
* to you under the Apache License, Version 2.0 (the
|
|
8
|
+
* "License"); you may not use this file except in compliance
|
|
9
|
+
* with the License. You may obtain a copy of the License at
|
|
10
|
+
*
|
|
11
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
+
*
|
|
13
|
+
* Unless required by applicable law or agreed to in writing,
|
|
14
|
+
* software distributed under the License is distributed on an
|
|
15
|
+
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
16
|
+
* KIND, either express or implied. See the License for the
|
|
17
|
+
* specific language governing permissions and limitations
|
|
18
|
+
* under the License.
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
var zrUtil = require("zrender/lib/core/util");
|
|
22
|
+
|
|
23
|
+
/*
|
|
24
|
+
* Licensed to the Apache Software Foundation (ASF) under one
|
|
25
|
+
* or more contributor license agreements. See the NOTICE file
|
|
26
|
+
* distributed with this work for additional information
|
|
27
|
+
* regarding copyright ownership. The ASF licenses this file
|
|
28
|
+
* to you under the Apache License, Version 2.0 (the
|
|
29
|
+
* "License"); you may not use this file except in compliance
|
|
30
|
+
* with the License. You may obtain a copy of the License at
|
|
31
|
+
*
|
|
32
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
33
|
+
*
|
|
34
|
+
* Unless required by applicable law or agreed to in writing,
|
|
35
|
+
* software distributed under the License is distributed on an
|
|
36
|
+
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
37
|
+
* KIND, either express or implied. See the License for the
|
|
38
|
+
* specific language governing permissions and limitations
|
|
39
|
+
* under the License.
|
|
40
|
+
*/
|
|
41
|
+
var KEY_DELIMITER = '-->';
|
|
42
|
+
/**
|
|
43
|
+
* params handler
|
|
44
|
+
* @param {module:echarts/model/SeriesModel} seriesModel
|
|
45
|
+
* @returns {*}
|
|
46
|
+
*/
|
|
47
|
+
|
|
48
|
+
var getAutoCurvenessParams = function (seriesModel) {
|
|
49
|
+
return seriesModel.get('autoCurveness') || null;
|
|
50
|
+
};
|
|
51
|
+
/**
|
|
52
|
+
* Generate a list of edge curvatures, 20 is the default
|
|
53
|
+
* @param {module:echarts/model/SeriesModel} seriesModel
|
|
54
|
+
* @param {number} appendLength
|
|
55
|
+
* @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]
|
|
56
|
+
*/
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
var createCurveness = function (seriesModel, appendLength) {
|
|
60
|
+
var autoCurvenessParmas = getAutoCurvenessParams(seriesModel);
|
|
61
|
+
var length = 20;
|
|
62
|
+
var curvenessList = []; // handler the function set
|
|
63
|
+
|
|
64
|
+
if (typeof autoCurvenessParmas === 'number') {
|
|
65
|
+
length = autoCurvenessParmas;
|
|
66
|
+
} else if (zrUtil.isArray(autoCurvenessParmas)) {
|
|
67
|
+
seriesModel.__curvenessList = autoCurvenessParmas;
|
|
68
|
+
return;
|
|
69
|
+
} // append length
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
if (appendLength > length) {
|
|
73
|
+
length = appendLength;
|
|
74
|
+
} // make sure the length is even
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
var len = length % 2 ? length + 2 : length + 3;
|
|
78
|
+
curvenessList = [];
|
|
79
|
+
|
|
80
|
+
for (var i = 0; i < len; i++) {
|
|
81
|
+
curvenessList.push((i % 2 ? i + 1 : i) / 10 * (i % 2 ? -1 : 1));
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
seriesModel.__curvenessList = curvenessList;
|
|
85
|
+
};
|
|
86
|
+
/**
|
|
87
|
+
* Create different cache key data in the positive and negative directions, in order to set the curvature later
|
|
88
|
+
* @param {number|string|module:echarts/data/Graph.Node} n1
|
|
89
|
+
* @param {number|string|module:echarts/data/Graph.Node} n2
|
|
90
|
+
* @param {module:echarts/model/SeriesModel} seriesModel
|
|
91
|
+
* @returns {string} key
|
|
92
|
+
*/
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
var getKeyOfEdges = function (n1, n2, seriesModel) {
|
|
96
|
+
var source = [n1.id, n1.dataIndex].join('.');
|
|
97
|
+
var target = [n2.id, n2.dataIndex].join('.');
|
|
98
|
+
return [seriesModel.uid, source, target].join(KEY_DELIMITER);
|
|
99
|
+
};
|
|
100
|
+
/**
|
|
101
|
+
* get opposite key
|
|
102
|
+
* @param {string} key
|
|
103
|
+
* @returns {string}
|
|
104
|
+
*/
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
var getOppositeKey = function (key) {
|
|
108
|
+
var keys = key.split(KEY_DELIMITER);
|
|
109
|
+
return [keys[0], keys[2], keys[1]].join(KEY_DELIMITER);
|
|
110
|
+
};
|
|
111
|
+
/**
|
|
112
|
+
* get edgeMap with key
|
|
113
|
+
* @param edge
|
|
114
|
+
* @param {module:echarts/model/SeriesModel} seriesModel
|
|
115
|
+
*/
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
var getEdgeFromMap = function (edge, seriesModel) {
|
|
119
|
+
var key = getKeyOfEdges(edge.node1, edge.node2, seriesModel);
|
|
120
|
+
return seriesModel.__edgeMap[key];
|
|
121
|
+
};
|
|
122
|
+
/**
|
|
123
|
+
* calculate all cases total length
|
|
124
|
+
* @param edge
|
|
125
|
+
* @param seriesModel
|
|
126
|
+
* @returns {number}
|
|
127
|
+
*/
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
var getTotalLengthBetweenNodes = function (edge, seriesModel) {
|
|
131
|
+
var len = getEdgeMapLengthWithKey(getKeyOfEdges(edge.node1, edge.node2, seriesModel), seriesModel);
|
|
132
|
+
var lenV = getEdgeMapLengthWithKey(getKeyOfEdges(edge.node2, edge.node1, seriesModel), seriesModel);
|
|
133
|
+
return len + lenV;
|
|
134
|
+
};
|
|
135
|
+
/**
|
|
136
|
+
*
|
|
137
|
+
* @param key
|
|
138
|
+
*/
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
var getEdgeMapLengthWithKey = function (key, seriesModel) {
|
|
142
|
+
var edgeMap = seriesModel.__edgeMap;
|
|
143
|
+
return edgeMap[key] ? edgeMap[key].length : 0;
|
|
144
|
+
};
|
|
145
|
+
/**
|
|
146
|
+
* Count the number of edges between the same two points, used to obtain the curvature table and the parity of the edge
|
|
147
|
+
* @see /graph/GraphSeries.js@getInitialData
|
|
148
|
+
* @param {module:echarts/model/SeriesModel} seriesModel
|
|
149
|
+
*/
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
function initCurvenessList(seriesModel) {
|
|
153
|
+
if (!getAutoCurvenessParams(seriesModel)) {
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
seriesModel.__curvenessList = [];
|
|
158
|
+
seriesModel.__edgeMap = {}; // calc the array of curveness List
|
|
159
|
+
|
|
160
|
+
createCurveness(seriesModel);
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* set edgeMap with key
|
|
164
|
+
* @param {number|string|module:echarts/data/Graph.Node} n1
|
|
165
|
+
* @param {number|string|module:echarts/data/Graph.Node} n2
|
|
166
|
+
* @param {module:echarts/model/SeriesModel} seriesModel
|
|
167
|
+
* @param {number} index
|
|
168
|
+
*/
|
|
169
|
+
|
|
170
|
+
|
|
171
|
+
function createEdgeMapForCurveness(n1, n2, seriesModel, index) {
|
|
172
|
+
if (!getAutoCurvenessParams(seriesModel)) {
|
|
173
|
+
return;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
var key = getKeyOfEdges(n1, n2, seriesModel);
|
|
177
|
+
var edgeMap = seriesModel.__edgeMap;
|
|
178
|
+
var oppositeEdges = edgeMap[getOppositeKey(key)]; // set direction
|
|
179
|
+
|
|
180
|
+
if (edgeMap[key] && !oppositeEdges) {
|
|
181
|
+
edgeMap[key].isForward = true;
|
|
182
|
+
} else if (oppositeEdges && edgeMap[key]) {
|
|
183
|
+
oppositeEdges.isForward = true;
|
|
184
|
+
edgeMap[key].isForward = false;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
edgeMap[key] = edgeMap[key] || [];
|
|
188
|
+
edgeMap[key].push(index);
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* get curvature for edge
|
|
192
|
+
* @param edge
|
|
193
|
+
* @param {module:echarts/model/SeriesModel} seriesModel
|
|
194
|
+
* @param index
|
|
195
|
+
*/
|
|
196
|
+
|
|
197
|
+
|
|
198
|
+
function getCurvenessForEdge(edge, seriesModel, index, needReverse) {
|
|
199
|
+
var autoCurvenessParams = getAutoCurvenessParams(seriesModel);
|
|
200
|
+
var isArrayParam = zrUtil.isArray(autoCurvenessParams);
|
|
201
|
+
|
|
202
|
+
if (!autoCurvenessParams) {
|
|
203
|
+
return null;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
var edgeArray = getEdgeFromMap(edge, seriesModel);
|
|
207
|
+
|
|
208
|
+
if (!edgeArray) {
|
|
209
|
+
return null;
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
var edgeIndex = -1;
|
|
213
|
+
|
|
214
|
+
for (var i = 0; i < edgeArray.length; i++) {
|
|
215
|
+
if (edgeArray[i] === index) {
|
|
216
|
+
edgeIndex = i;
|
|
217
|
+
break;
|
|
218
|
+
}
|
|
219
|
+
} // if totalLen is Longer createCurveness
|
|
220
|
+
|
|
221
|
+
|
|
222
|
+
var totalLen = getTotalLengthBetweenNodes(edge, seriesModel);
|
|
223
|
+
createCurveness(seriesModel, totalLen);
|
|
224
|
+
edge.lineStyle = edge.lineStyle || {}; // if is opposite edge, must set curvenss to opposite number
|
|
225
|
+
|
|
226
|
+
var curKey = getKeyOfEdges(edge.node1, edge.node2, seriesModel);
|
|
227
|
+
var curvenessList = seriesModel.__curvenessList; // if pass array no need parity
|
|
228
|
+
|
|
229
|
+
var parityCorrection = isArrayParam ? 0 : totalLen % 2 ? 0 : 1;
|
|
230
|
+
|
|
231
|
+
if (!edgeArray.isForward) {
|
|
232
|
+
// the opposite edge show outside
|
|
233
|
+
var oppositeKey = getOppositeKey(curKey);
|
|
234
|
+
var len = getEdgeMapLengthWithKey(oppositeKey, seriesModel);
|
|
235
|
+
var resValue = curvenessList[edgeIndex + len + parityCorrection]; // isNeedReverse, simple, force type need reverse the curveness in the junction of the forword and the opposite
|
|
236
|
+
|
|
237
|
+
if (needReverse) {
|
|
238
|
+
// set as array may make the parity handle with the len of opposite
|
|
239
|
+
if (isArrayParam) {
|
|
240
|
+
if (autoCurvenessParams && autoCurvenessParams[0] === 0) {
|
|
241
|
+
return (len + parityCorrection) % 2 ? resValue : -resValue;
|
|
242
|
+
} else {
|
|
243
|
+
return ((len % 2 ? 0 : 1) + parityCorrection) % 2 ? resValue : -resValue;
|
|
244
|
+
}
|
|
245
|
+
} else {
|
|
246
|
+
return (len + parityCorrection) % 2 ? resValue : -resValue;
|
|
247
|
+
}
|
|
248
|
+
} else {
|
|
249
|
+
return curvenessList[edgeIndex + len + parityCorrection];
|
|
250
|
+
}
|
|
251
|
+
} else {
|
|
252
|
+
return curvenessList[parityCorrection + edgeIndex];
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
exports.initCurvenessList = initCurvenessList;
|
|
257
|
+
exports.createEdgeMapForCurveness = createEdgeMapForCurveness;
|
|
258
|
+
exports.getCurvenessForEdge = getCurvenessForEdge;
|
|
@@ -106,8 +106,6 @@ var LinesSeries = SeriesModel.extend({
|
|
|
106
106
|
LinesSeries.superApply(this, 'init', arguments);
|
|
107
107
|
},
|
|
108
108
|
mergeOption: function (option) {
|
|
109
|
-
// The input data may be null/undefined.
|
|
110
|
-
option.data = option.data || [];
|
|
111
109
|
compatEc2(option);
|
|
112
110
|
|
|
113
111
|
if (option.data) {
|
|
@@ -153,7 +153,7 @@ var MapSeries = SeriesModel.extend({
|
|
|
153
153
|
*
|
|
154
154
|
* @param {number} dataIndex
|
|
155
155
|
*/
|
|
156
|
-
formatTooltip: function (dataIndex) {
|
|
156
|
+
formatTooltip: function (dataIndex, multipleSeries, dataType, renderMode) {
|
|
157
157
|
// FIXME orignalData and data is a bit confusing
|
|
158
158
|
var data = this.getData();
|
|
159
159
|
var formattedValue = addCommas(this.getRawValue(dataIndex));
|
|
@@ -170,7 +170,8 @@ var MapSeries = SeriesModel.extend({
|
|
|
170
170
|
}
|
|
171
171
|
}
|
|
172
172
|
|
|
173
|
-
|
|
173
|
+
var newLine = renderMode === 'html' ? '<br/>' : '\n';
|
|
174
|
+
return seriesNames.join(', ') + newLine + encodeHTML(name + ' : ' + formattedValue);
|
|
174
175
|
},
|
|
175
176
|
|
|
176
177
|
/**
|
|
@@ -64,15 +64,16 @@ var RadarSeries = SeriesModel.extend({
|
|
|
64
64
|
generateCoordCount: Infinity
|
|
65
65
|
});
|
|
66
66
|
},
|
|
67
|
-
formatTooltip: function (dataIndex) {
|
|
67
|
+
formatTooltip: function (dataIndex, multipleSeries, dataType, renderMode) {
|
|
68
68
|
var data = this.getData();
|
|
69
69
|
var coordSys = this.coordinateSystem;
|
|
70
70
|
var indicatorAxes = coordSys.getIndicatorAxes();
|
|
71
71
|
var name = this.getData().getName(dataIndex);
|
|
72
|
-
|
|
72
|
+
var newLine = renderMode === 'html' ? '<br/>' : '\n';
|
|
73
|
+
return encodeHTML(name === '' ? this.name : name) + newLine + zrUtil.map(indicatorAxes, function (axis, idx) {
|
|
73
74
|
var val = data.get(data.mapDimension(axis.dim), dataIndex);
|
|
74
75
|
return encodeHTML(axis.name + ' : ' + val);
|
|
75
|
-
}).join(
|
|
76
|
+
}).join(newLine);
|
|
76
77
|
},
|
|
77
78
|
|
|
78
79
|
/**
|
|
@@ -70,12 +70,14 @@ var _default = echarts.extendChartView({
|
|
|
70
70
|
|
|
71
71
|
var symbolSize = normalizeSymbolSize(data.getItemVisual(idx, 'symbolSize'));
|
|
72
72
|
var symbolPath = symbolUtil.createSymbol(symbolType, -1, -1, 2, 2, color);
|
|
73
|
+
var symbolRotate = data.getItemVisual(idx, 'symbolRotate') || 0;
|
|
73
74
|
symbolPath.attr({
|
|
74
75
|
style: {
|
|
75
76
|
strokeNoScale: true
|
|
76
77
|
},
|
|
77
78
|
z2: 100,
|
|
78
|
-
scale: [symbolSize[0] / 2, symbolSize[1] / 2]
|
|
79
|
+
scale: [symbolSize[0] / 2, symbolSize[1] / 2],
|
|
80
|
+
rotation: symbolRotate * Math.PI / 180 || 0
|
|
79
81
|
});
|
|
80
82
|
return symbolPath;
|
|
81
83
|
}
|
|
@@ -188,7 +188,10 @@ SunburstPieceProto._updateLabel = function (seriesModel, visualColor, state) {
|
|
|
188
188
|
var normalModel = itemModel.getModel('label');
|
|
189
189
|
var labelModel = state === 'normal' || state === 'emphasis' ? normalModel : itemModel.getModel(state + '.label');
|
|
190
190
|
var labelHoverModel = itemModel.getModel('emphasis.label');
|
|
191
|
-
var
|
|
191
|
+
var labelFormatter = labelModel.get('formatter'); // Use normal formatter if no state formatter is defined
|
|
192
|
+
|
|
193
|
+
var labelState = labelFormatter ? state : 'normal';
|
|
194
|
+
var text = zrUtil.retrieve(seriesModel.getFormattedLabel(this.node.dataIndex, labelState, null, null, 'label'), this.node.name);
|
|
192
195
|
|
|
193
196
|
if (getLabelAttr('show') === false) {
|
|
194
197
|
text = '';
|
|
@@ -24,6 +24,8 @@ var SeriesModel = require("../../model/Series");
|
|
|
24
24
|
|
|
25
25
|
var Tree = require("../../data/Tree");
|
|
26
26
|
|
|
27
|
+
var Model = require("../../model/Model");
|
|
28
|
+
|
|
27
29
|
var _treeHelper = require("../helper/treeHelper");
|
|
28
30
|
|
|
29
31
|
var wrapTreePathInfo = _treeHelper.wrapTreePathInfo;
|
|
@@ -60,14 +62,24 @@ var _default = SeriesModel.extend({
|
|
|
60
62
|
children: option.data
|
|
61
63
|
};
|
|
62
64
|
completeTreeValue(root);
|
|
63
|
-
var
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
treeOption.levels = levels; // Make sure always a new tree is created when setOption,
|
|
65
|
+
var levelModels = zrUtil.map(option.levels || [], function (levelDefine) {
|
|
66
|
+
return new Model(levelDefine, this, ecModel);
|
|
67
|
+
}, this); // Make sure always a new tree is created when setOption,
|
|
67
68
|
// in TreemapView, we check whether oldTree === newTree
|
|
68
69
|
// to choose mappings approach among old shapes and new shapes.
|
|
69
70
|
|
|
70
|
-
|
|
71
|
+
var tree = Tree.createTree(root, this, beforeLink);
|
|
72
|
+
|
|
73
|
+
function beforeLink(nodeData) {
|
|
74
|
+
nodeData.wrapMethod('getItemModel', function (model, idx) {
|
|
75
|
+
var node = tree.getNodeByDataIndex(idx);
|
|
76
|
+
var levelModel = levelModels[node.depth];
|
|
77
|
+
levelModel && (model.parentModel = levelModel);
|
|
78
|
+
return model;
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
return tree.data;
|
|
71
83
|
},
|
|
72
84
|
optionUpdated: function () {
|
|
73
85
|
this.resetViewRoot();
|
|
@@ -88,9 +88,22 @@ var ThemeRiverSeries = SeriesModel.extend({
|
|
|
88
88
|
* @return {Array}
|
|
89
89
|
*/
|
|
90
90
|
fixData: function (data) {
|
|
91
|
-
var rawDataLength = data.length;
|
|
91
|
+
var rawDataLength = data.length;
|
|
92
|
+
/**
|
|
93
|
+
* Make sure every layer data get the same keys.
|
|
94
|
+
* The value index tells which layer has visited.
|
|
95
|
+
* {
|
|
96
|
+
* 2014/01/01: -1
|
|
97
|
+
* }
|
|
98
|
+
*/
|
|
99
|
+
|
|
100
|
+
var timeValueKeys = {}; // grouped data by name
|
|
92
101
|
|
|
93
102
|
var groupResult = groupData(data, function (item) {
|
|
103
|
+
if (!timeValueKeys.hasOwnProperty(item[0])) {
|
|
104
|
+
timeValueKeys[item[0]] = -1;
|
|
105
|
+
}
|
|
106
|
+
|
|
94
107
|
return item[2];
|
|
95
108
|
});
|
|
96
109
|
var layData = [];
|
|
@@ -101,40 +114,18 @@ var ThemeRiverSeries = SeriesModel.extend({
|
|
|
101
114
|
});
|
|
102
115
|
});
|
|
103
116
|
var layerNum = layData.length;
|
|
104
|
-
var largestLayer = -1;
|
|
105
|
-
var index = -1;
|
|
106
|
-
|
|
107
|
-
for (var i = 0; i < layerNum; ++i) {
|
|
108
|
-
var len = layData[i].dataList.length;
|
|
109
|
-
|
|
110
|
-
if (len > largestLayer) {
|
|
111
|
-
largestLayer = len;
|
|
112
|
-
index = i;
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
117
|
|
|
116
118
|
for (var k = 0; k < layerNum; ++k) {
|
|
117
|
-
if (k === index) {
|
|
118
|
-
continue;
|
|
119
|
-
}
|
|
120
|
-
|
|
121
119
|
var name = layData[k].name;
|
|
122
120
|
|
|
123
|
-
for (var j = 0; j <
|
|
124
|
-
var timeValue = layData[
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
for (var l = 0; l < length; ++l) {
|
|
129
|
-
var value = layData[k].dataList[l][0];
|
|
130
|
-
|
|
131
|
-
if (value === timeValue) {
|
|
132
|
-
keyIndex = l;
|
|
133
|
-
break;
|
|
134
|
-
}
|
|
135
|
-
}
|
|
121
|
+
for (var j = 0; j < layData[k].dataList.length; ++j) {
|
|
122
|
+
var timeValue = layData[k].dataList[j][0];
|
|
123
|
+
timeValueKeys[timeValue] = k;
|
|
124
|
+
}
|
|
136
125
|
|
|
137
|
-
|
|
126
|
+
for (var timeValue in timeValueKeys) {
|
|
127
|
+
if (timeValueKeys.hasOwnProperty(timeValue) && timeValueKeys[timeValue] !== k) {
|
|
128
|
+
timeValueKeys[timeValue] = k;
|
|
138
129
|
data[rawDataLength] = [];
|
|
139
130
|
data[rawDataLength][0] = timeValue;
|
|
140
131
|
data[rawDataLength][1] = 0;
|
|
@@ -66,7 +66,7 @@ var _default = SeriesModel.extend({
|
|
|
66
66
|
};
|
|
67
67
|
var leaves = option.leaves || {};
|
|
68
68
|
var leavesModel = new Model(leaves, this, this.ecModel);
|
|
69
|
-
var tree = Tree.createTree(root, this,
|
|
69
|
+
var tree = Tree.createTree(root, this, beforeLink);
|
|
70
70
|
|
|
71
71
|
function beforeLink(nodeData) {
|
|
72
72
|
nodeData.wrapMethod('getItemModel', function (model, idx) {
|
|
@@ -467,9 +467,9 @@ function drawEdge(seriesModel, node, virtualRoot, symbolEl, sourceOldLayout, sou
|
|
|
467
467
|
|
|
468
468
|
graphic.updateProps(edge, {
|
|
469
469
|
shape: getEdgeShape(seriesScope, sourceLayout, targetLayout),
|
|
470
|
-
style: {
|
|
470
|
+
style: zrUtil.defaults({
|
|
471
471
|
opacity: 1
|
|
472
|
-
}
|
|
472
|
+
}, seriesScope.lineStyle)
|
|
473
473
|
}, seriesModel);
|
|
474
474
|
}
|
|
475
475
|
} else if (edgeShape === 'polyline') {
|
|
@@ -503,9 +503,9 @@ function drawEdge(seriesModel, node, virtualRoot, symbolEl, sourceOldLayout, sou
|
|
|
503
503
|
parentPoint: [targetLayout.x, targetLayout.y],
|
|
504
504
|
childPoints: childPoints
|
|
505
505
|
},
|
|
506
|
-
style: {
|
|
506
|
+
style: zrUtil.defaults({
|
|
507
507
|
opacity: 1
|
|
508
|
-
}
|
|
508
|
+
}, seriesScope.lineStyle)
|
|
509
509
|
}, seriesModel);
|
|
510
510
|
}
|
|
511
511
|
} else {}
|
|
@@ -226,21 +226,30 @@ var _default = SeriesModel.extend({
|
|
|
226
226
|
children: option.data
|
|
227
227
|
};
|
|
228
228
|
completeTreeValue(root);
|
|
229
|
-
var levels = option.levels || [];
|
|
229
|
+
var levels = option.levels || []; // Used in "visual priority" in `treemapVisual.js`.
|
|
230
|
+
// This way is a little tricky, must satisfy the precondition:
|
|
231
|
+
// 1. There is no `treeNode.getModel('itemStyle.xxx')` used.
|
|
232
|
+
// 2. The `Model.prototype.getModel()` will not use any clone-like way.
|
|
233
|
+
|
|
234
|
+
var designatedVisualItemStyle = this.designatedVisualItemStyle = {};
|
|
235
|
+
var designatedVisualModel = new Model({
|
|
236
|
+
itemStyle: designatedVisualItemStyle
|
|
237
|
+
}, this, ecModel);
|
|
230
238
|
levels = option.levels = setDefault(levels, ecModel);
|
|
231
239
|
var levelModels = zrUtil.map(levels || [], function (levelDefine) {
|
|
232
|
-
return new Model(levelDefine,
|
|
240
|
+
return new Model(levelDefine, designatedVisualModel, ecModel);
|
|
233
241
|
}, this); // Make sure always a new tree is created when setOption,
|
|
234
242
|
// in TreemapView, we check whether oldTree === newTree
|
|
235
243
|
// to choose mappings approach among old shapes and new shapes.
|
|
236
244
|
|
|
237
|
-
var tree = Tree.createTree(root, this,
|
|
245
|
+
var tree = Tree.createTree(root, this, beforeLink);
|
|
238
246
|
|
|
239
247
|
function beforeLink(nodeData) {
|
|
240
248
|
nodeData.wrapMethod('getItemModel', function (model, idx) {
|
|
241
249
|
var node = tree.getNodeByDataIndex(idx);
|
|
242
|
-
var levelModel = levelModels[node.depth];
|
|
243
|
-
|
|
250
|
+
var levelModel = levelModels[node.depth]; // If no levelModel, we also need `designatedVisualModel`.
|
|
251
|
+
|
|
252
|
+
model.parentModel = levelModel || designatedVisualModel;
|
|
244
253
|
return model;
|
|
245
254
|
});
|
|
246
255
|
}
|
|
@@ -445,7 +445,7 @@ function position(row, rowFixedLength, rect, halfGapWidth, flush) {
|
|
|
445
445
|
|
|
446
446
|
rect[xy[idx1WhenH]] += rowOtherLength;
|
|
447
447
|
rect[wh[idx1WhenH]] -= rowOtherLength;
|
|
448
|
-
} // Return [containerWidth, containerHeight] as
|
|
448
|
+
} // Return [containerWidth, containerHeight] as default.
|
|
449
449
|
|
|
450
450
|
|
|
451
451
|
function estimateRootSize(seriesModel, targetInfo, viewRoot, containerWidth, containerHeight) {
|
|
@@ -49,21 +49,17 @@ var _default = {
|
|
|
49
49
|
reset: function (seriesModel, ecModel, api, payload) {
|
|
50
50
|
var tree = seriesModel.getData().tree;
|
|
51
51
|
var root = tree.root;
|
|
52
|
-
var seriesItemStyleModel = seriesModel.getModel(ITEM_STYLE_NORMAL);
|
|
53
52
|
|
|
54
53
|
if (root.isRemoved()) {
|
|
55
54
|
return;
|
|
56
55
|
}
|
|
57
56
|
|
|
58
|
-
var levelItemStyles = zrUtil.map(tree.levelModels, function (levelModel) {
|
|
59
|
-
return levelModel ? levelModel.get(ITEM_STYLE_NORMAL) : null;
|
|
60
|
-
});
|
|
61
57
|
travelTree(root, // Visual should calculate from tree root but not view root.
|
|
62
|
-
{},
|
|
58
|
+
{}, seriesModel.getViewRoot().getAncestors(), seriesModel);
|
|
63
59
|
}
|
|
64
60
|
};
|
|
65
61
|
|
|
66
|
-
function travelTree(node, designatedVisual,
|
|
62
|
+
function travelTree(node, designatedVisual, viewRootAncestors, seriesModel) {
|
|
67
63
|
var nodeModel = node.getModel();
|
|
68
64
|
var nodeLayout = node.getLayout(); // Optimize
|
|
69
65
|
|
|
@@ -72,8 +68,7 @@ function travelTree(node, designatedVisual, levelItemStyles, seriesItemStyleMode
|
|
|
72
68
|
}
|
|
73
69
|
|
|
74
70
|
var nodeItemStyleModel = node.getModel(ITEM_STYLE_NORMAL);
|
|
75
|
-
var
|
|
76
|
-
var visuals = buildVisuals(nodeItemStyleModel, designatedVisual, levelItemStyle, seriesItemStyleModel); // calculate border color
|
|
71
|
+
var visuals = buildVisuals(nodeItemStyleModel, designatedVisual, seriesModel); // calculate border color
|
|
77
72
|
|
|
78
73
|
var borderColor = nodeItemStyleModel.get('borderColor');
|
|
79
74
|
var borderColorSaturation = nodeItemStyleModel.get('borderColorSaturation');
|
|
@@ -99,21 +94,20 @@ function travelTree(node, designatedVisual, levelItemStyles, seriesItemStyleMode
|
|
|
99
94
|
// If higher than viewRoot, only ancestors of viewRoot is needed to visit.
|
|
100
95
|
if (child.depth >= viewRootAncestors.length || child === viewRootAncestors[child.depth]) {
|
|
101
96
|
var childVisual = mapVisual(nodeModel, visuals, child, index, mapping, seriesModel);
|
|
102
|
-
travelTree(child, childVisual,
|
|
97
|
+
travelTree(child, childVisual, viewRootAncestors, seriesModel);
|
|
103
98
|
}
|
|
104
99
|
});
|
|
105
100
|
}
|
|
106
101
|
}
|
|
107
102
|
|
|
108
|
-
function buildVisuals(nodeItemStyleModel, designatedVisual,
|
|
103
|
+
function buildVisuals(nodeItemStyleModel, designatedVisual, seriesModel) {
|
|
109
104
|
var visuals = zrUtil.extend({}, designatedVisual);
|
|
105
|
+
var designatedVisualItemStyle = seriesModel.designatedVisualItemStyle;
|
|
110
106
|
zrUtil.each(['color', 'colorAlpha', 'colorSaturation'], function (visualName) {
|
|
111
107
|
// Priority: thisNode > thisLevel > parentNodeDesignated > seriesModel
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
val == null && (val = designatedVisual[visualName]);
|
|
116
|
-
val == null && (val = seriesItemStyleModel.get(visualName));
|
|
108
|
+
designatedVisualItemStyle[visualName] = designatedVisual[visualName];
|
|
109
|
+
var val = nodeItemStyleModel.get(visualName);
|
|
110
|
+
designatedVisualItemStyle[visualName] = null;
|
|
117
111
|
val != null && (visuals[visualName] = val);
|
|
118
112
|
});
|
|
119
113
|
return visuals;
|
|
@@ -179,7 +179,7 @@ function processOnAxis(axisInfo, newValue, updaters, dontSnap, outputFinder) {
|
|
|
179
179
|
var payloadInfo = buildPayloadsBySeries(newValue, axisInfo);
|
|
180
180
|
var payloadBatch = payloadInfo.payloadBatch;
|
|
181
181
|
var snapToValue = payloadInfo.snapToValue; // Fill content of event obj for echarts.connect.
|
|
182
|
-
// By
|
|
182
|
+
// By default use the first involved series data as a sample to connect.
|
|
183
183
|
|
|
184
184
|
if (payloadBatch[0] && outputFinder.seriesIndex == null) {
|
|
185
185
|
zrUtil.extend(outputFinder, payloadBatch[0]);
|
|
@@ -428,7 +428,7 @@ var ScrollableLegendView = LegendView.extend({
|
|
|
428
428
|
contentGroup.eachChild(function (child, idx) {
|
|
429
429
|
var legendDataIdx = child.__legendDataIndex; // FIXME
|
|
430
430
|
// If the given targetDataIndex (from model) is illegal,
|
|
431
|
-
// we use
|
|
431
|
+
// we use defaultIndex. But the index on the legend model and
|
|
432
432
|
// action payload is still illegal. That case will not be
|
|
433
433
|
// changed until some scenario requires.
|
|
434
434
|
|