(seriesType, ecModel, api, payload)
| 44247 | } |
| 44248 | |
| 44249 | var pieLayout = function (seriesType, ecModel, api, payload) { |
| 44250 | ecModel.eachSeriesByType(seriesType, function (seriesModel) { |
| 44251 | var data = seriesModel.getData(); |
| 44252 | var valueDim = data.mapDimension('value'); |
| 44253 | var viewRect = getViewRect(seriesModel, api); |
| 44254 | |
| 44255 | var center = seriesModel.get('center'); |
| 44256 | var radius = seriesModel.get('radius'); |
| 44257 | |
| 44258 | if (!isArray(radius)) { |
| 44259 | radius = [0, radius]; |
| 44260 | } |
| 44261 | if (!isArray(center)) { |
| 44262 | center = [center, center]; |
| 44263 | } |
| 44264 | |
| 44265 | var width = parsePercent$1(viewRect.width, api.getWidth()); |
| 44266 | var height = parsePercent$1(viewRect.height, api.getHeight()); |
| 44267 | var size = Math.min(width, height); |
| 44268 | var cx = parsePercent$1(center[0], width) + viewRect.x; |
| 44269 | var cy = parsePercent$1(center[1], height) + viewRect.y; |
| 44270 | var r0 = parsePercent$1(radius[0], size / 2); |
| 44271 | var r = parsePercent$1(radius[1], size / 2); |
| 44272 | |
| 44273 | var startAngle = -seriesModel.get('startAngle') * RADIAN; |
| 44274 | |
| 44275 | var minAngle = seriesModel.get('minAngle') * RADIAN; |
| 44276 | |
| 44277 | var validDataCount = 0; |
| 44278 | data.each(valueDim, function (value) { |
| 44279 | !isNaN(value) && validDataCount++; |
| 44280 | }); |
| 44281 | |
| 44282 | var sum = data.getSum(valueDim); |
| 44283 | // Sum may be 0 |
| 44284 | var unitRadian = Math.PI / (sum || validDataCount) * 2; |
| 44285 | |
| 44286 | var clockwise = seriesModel.get('clockwise'); |
| 44287 | |
| 44288 | var roseType = seriesModel.get('roseType'); |
| 44289 | var stillShowZeroSum = seriesModel.get('stillShowZeroSum'); |
| 44290 | |
| 44291 | // [0...max] |
| 44292 | var extent = data.getDataExtent(valueDim); |
| 44293 | extent[0] = 0; |
| 44294 | |
| 44295 | // In the case some sector angle is smaller than minAngle |
| 44296 | var restAngle = PI2$4; |
| 44297 | var valueSumLargerThanMinAngle = 0; |
| 44298 | |
| 44299 | var currentAngle = startAngle; |
| 44300 | var dir = clockwise ? 1 : -1; |
| 44301 | |
| 44302 | data.each(valueDim, function (value, idx) { |
| 44303 | var angle; |
| 44304 | if (isNaN(value)) { |
| 44305 | data.setItemLayout(idx, { |
| 44306 | angle: NaN, |
nothing calls this directly
no test coverage detected