(
seriesModel: PieSeriesModel
)
| 347 | } |
| 348 | |
| 349 | export default function pieLabelLayout( |
| 350 | seriesModel: PieSeriesModel |
| 351 | ) { |
| 352 | const data = seriesModel.getData(); |
| 353 | const labelLayoutList: LabelLayout[] = []; |
| 354 | let cx; |
| 355 | let cy; |
| 356 | let hasLabelRotate = false; |
| 357 | const minShowLabelRadian = (seriesModel.get('minShowLabelAngle') || 0) * RADIAN; |
| 358 | |
| 359 | const viewRect = data.getLayout('viewRect') as RectLike; |
| 360 | const r = data.getLayout('r') as number; |
| 361 | const viewWidth = viewRect.width; |
| 362 | const viewLeft = viewRect.x; |
| 363 | const viewTop = viewRect.y; |
| 364 | const viewHeight = viewRect.height; |
| 365 | |
| 366 | function setNotShow(el: {ignore: boolean}) { |
| 367 | el.ignore = true; |
| 368 | } |
| 369 | |
| 370 | function isLabelShown(label: ZRText) { |
| 371 | if (!label.ignore) { |
| 372 | return true; |
| 373 | } |
| 374 | for (const key in label.states) { |
| 375 | if (label.states[key].ignore === false) { |
| 376 | return true; |
| 377 | } |
| 378 | } |
| 379 | return false; |
| 380 | } |
| 381 | |
| 382 | data.each(function (idx) { |
| 383 | const sector = data.getItemGraphicEl(idx) as Sector; |
| 384 | const sectorShape = sector.shape; |
| 385 | const label = sector.getTextContent(); |
| 386 | const labelLine = sector.getTextGuideLine(); |
| 387 | |
| 388 | const itemModel = data.getItemModel<PieDataItemOption>(idx); |
| 389 | const labelModel = itemModel.getModel('label'); |
| 390 | // Use position in normal or emphasis |
| 391 | const labelPosition = labelModel.get('position') || itemModel.get(['emphasis', 'label', 'position']); |
| 392 | const labelDistance = labelModel.get('distanceToLabelLine'); |
| 393 | const labelAlignTo = labelModel.get('alignTo'); |
| 394 | const edgeDistance = parsePercent(labelModel.get('edgeDistance'), viewWidth); |
| 395 | let bleedMargin = labelModel.get('bleedMargin'); |
| 396 | if (bleedMargin == null) { |
| 397 | // An arbitrary strategy for small viewRect - especial pie is layout in calendar or matrix coord sys. |
| 398 | bleedMargin = Math.min(viewWidth, viewHeight) > 200 ? 10 : 2; |
| 399 | } |
| 400 | |
| 401 | const labelLineModel = itemModel.getModel('labelLine'); |
| 402 | let labelLineLen = labelLineModel.get('length'); |
| 403 | labelLineLen = parsePercent(labelLineLen, viewWidth); |
| 404 | let labelLineLen2 = labelLineModel.get('length2'); |
| 405 | labelLineLen2 = parsePercent(labelLineLen2, viewWidth); |
| 406 |
nothing calls this directly
no test coverage detected
searching dependent graphs…