@@ -109,15 +109,18 @@ define(function(require) {
109
109
var groupAnglesArr = groupAngles . toArray ( ) ;
110
110
var subGroupIndicesArr = subGroupIndices . toArray ( ) ;
111
111
var subGroupAnglesArr = subGroupAngles . toArray ( ) ;
112
+ var sumOutArray = sumOut . toArray ( ) ;
112
113
113
114
var sectorAngles = [ ] ;
114
115
var groupsTmp = [ ] ;
115
116
var chordAngles = new NDArray ( len , len ) . toArray ( ) ;
117
+ var values = [ ] ;
116
118
var start = 0 ;
117
119
var end = 0 ;
118
120
for ( var i = 0 ; i < len ; i ++ ) {
119
121
var sortedIdx = groupIndicesArr [ i ] ;
120
122
groupsTmp [ sortedIdx ] = groups [ i ] ;
123
+ values [ sortedIdx ] = sumOutArray [ i ] ;
121
124
122
125
end = start + groupAnglesArr [ i ] ;
123
126
sectorAngles [ sortedIdx ] = [ start , end - padding ] ;
@@ -155,11 +158,14 @@ define(function(require) {
155
158
innerRadius
156
159
) ;
157
160
161
+ var res = normalizeValue ( values ) ;
158
162
_buildScales (
159
- sumOut . toArray ( ) ,
163
+ res [ 0 ] ,
164
+ res [ 1 ] ,
160
165
sectorAngles ,
161
166
center ,
162
- outerRadius
167
+ outerRadius ,
168
+ new NDArray ( res [ 0 ] ) . sum ( ) / ( 360 - padding * len )
163
169
) ;
164
170
}
165
171
@@ -175,8 +181,9 @@ define(function(require) {
175
181
padding
176
182
) {
177
183
var startAngle = 90 ;
184
+ var len = groups . length ;
178
185
179
- for ( var i = 0 ; i < angles . length ; i ++ ) {
186
+ for ( var i = 0 ; i < len ; i ++ ) {
180
187
181
188
var group = groups [ i ] ;
182
189
var angle = angles [ i ] ;
@@ -185,6 +192,7 @@ define(function(require) {
185
192
id : zr . newShapeId ( self . type ) ,
186
193
shape : 'sector' ,
187
194
zlevel : _zlevelBase ,
195
+ hoverable : false ,
188
196
style : {
189
197
x : center [ 0 ] ,
190
198
y : center [ 1 ] ,
@@ -197,6 +205,42 @@ define(function(require) {
197
205
}
198
206
}
199
207
208
+ sector . onmouseover = ( function ( idx ) {
209
+ return function ( ) {
210
+ for ( var i = 0 ; i < len ; i ++ ) {
211
+ if ( i !== idx ) {
212
+ sectorShapes [ i ] . style . opacity = 0.1 ;
213
+ zr . modShape ( sectorShapes [ i ] . id , sectorShapes [ i ] ) ;
214
+
215
+ for ( var j = 0 ; j < len ; j ++ ) {
216
+ var chordShape = chordShapes [ i ] [ j ] ;
217
+ chordShape . style . opacity = 0.03 ;
218
+ zr . modShape ( chordShape . id , chordShape ) ;
219
+ }
220
+ }
221
+ }
222
+ zr . refresh ( ) ;
223
+ }
224
+ } ) ( i ) ;
225
+
226
+ sector . onmouseout = ( function ( idx ) {
227
+ return function ( ) {
228
+ for ( var i = 0 ; i < len ; i ++ ) {
229
+ sectorShapes [ i ] . style . opacity = 1.0 ;
230
+ zr . modShape ( sectorShapes [ i ] . id , sectorShapes [ i ] ) ;
231
+
232
+ for ( var j = 0 ; j < len ; j ++ ) {
233
+ var chordShape = chordShapes [ i ] [ j ] ;
234
+ chordShape . style . opacity = 0.5 ;
235
+ zr . modShape ( chordShape . id , chordShape ) ;
236
+ }
237
+ }
238
+ zr . refresh ( ) ;
239
+ }
240
+ } ) ( i ) ;
241
+
242
+ self . shapeList . push ( sector ) ;
243
+ sectorShapes . push ( sector ) ;
200
244
zr . addShape ( sector ) ;
201
245
}
202
246
}
@@ -216,7 +260,7 @@ define(function(require) {
216
260
for ( var j = 0 ; j < len ; j ++ ) {
217
261
218
262
if ( chordShapes [ j ] [ i ] ) {
219
- continue ;
263
+ chordShapes [ i ] [ j ] = chordShapes [ j ] [ i ] ;
220
264
}
221
265
222
266
var angleIJ = angles [ i ] [ j ] [ 0 ] ;
@@ -248,22 +292,20 @@ define(function(require) {
248
292
}
249
293
250
294
chordShapes [ i ] [ j ] = chord ;
295
+ self . shapeList . push ( chord ) ;
251
296
zr . addShape ( chord ) ;
252
297
}
253
298
}
254
299
}
255
300
256
301
function _buildScales (
257
302
values ,
303
+ unitPostfix ,
258
304
angles ,
259
305
center ,
260
- radius
306
+ radius ,
307
+ unitValue
261
308
) {
262
- var res = normalizeValue ( values ) ;
263
- var values = res [ 0 ] ;
264
- var unitPostfix = res [ 1 ] ;
265
- var unitValue = new NDArray ( values ) . sum ( ) / ( 360 / scaleUnitAngle ) ;
266
-
267
309
for ( var i = 0 ; i < angles . length ; i ++ ) {
268
310
var startAngle = angles [ i ] [ 0 ] ;
269
311
var endAngle = angles [ i ] [ 1 ] ;
@@ -282,6 +324,7 @@ define(function(require) {
282
324
shape : 'line' ,
283
325
id : zr . newShapeId ( self . type ) ,
284
326
zlevel : _zlevelBase - 1 ,
327
+ hoverable : false ,
285
328
style : {
286
329
xStart : start [ 0 ] ,
287
330
yStart : start [ 1 ] ,
@@ -293,32 +336,37 @@ define(function(require) {
293
336
}
294
337
}
295
338
339
+ self . shapeList . push ( scaleShape ) ;
296
340
zr . addShape ( scaleShape ) ;
297
341
298
342
scaleAngle += scaleUnitAngle ;
299
343
}
300
344
301
345
var scaleTextAngle = startAngle ;
302
- var scaleValues = NDArray . range ( 0 , values [ i ] , unitValue ) . toArray ( ) ;
346
+ var step = unitValue * 5 * scaleUnitAngle ;
347
+ var scaleValues = NDArray . range ( 0 , values [ i ] , step ) . toArray ( ) ;
303
348
while ( scaleTextAngle < endAngle ) {
304
349
var scaleTextAngleFixed = scaleTextAngle - 90 ;
305
350
var isRightSide = scaleTextAngleFixed <= 90 && scaleTextAngleFixed >= - 90 ;
306
351
var textShape = {
307
352
shape : 'text' ,
308
353
id : zr . newShapeId ( self . type ) ,
309
354
zlevel : _zlevelBase - 1 ,
355
+ hoverable : false ,
310
356
style : {
311
357
x : isRightSide
312
358
? radius + scaleLineLength + 2
313
- : - radius - scaleLineLength - 20 ,
359
+ : - radius - scaleLineLength - 34 ,
314
360
y : 0 ,
315
- text : Math . round ( scaleValues . shift ( ) ) + unitPostfix
361
+ text : Math . round ( scaleValues . shift ( ) * 10 ) / 10 + unitPostfix
316
362
} ,
317
363
position : center . slice ( ) ,
318
364
rotation : isRightSide
319
365
? [ - scaleTextAngleFixed / 180 * Math . PI , 0 , 0 ]
320
366
: [ - ( scaleTextAngleFixed + 180 ) / 180 * Math . PI , 0 , 0 ]
321
367
}
368
+
369
+ self . shapeList . push ( textShape ) ;
322
370
zr . addShape ( textShape ) ;
323
371
scaleTextAngle += scaleUnitAngle * 5 ;
324
372
}
@@ -343,7 +391,7 @@ define(function(require) {
343
391
}
344
392
345
393
for ( var i = 0 ; i < values . length ; i ++ ) {
346
- result [ i ] = Math . round ( values [ i ] * unitScale ) ;
394
+ result [ i ] = values [ i ] * unitScale ;
347
395
}
348
396
return [ result , unitPostfix ] ;
349
397
}
0 commit comments