MCPcopy Index your code
hub / github.com/apache/echarts / pieLabelLayout

Function pieLabelLayout

src/chart/pie/labelLayout.ts:349–594  ·  view source on GitHub ↗
(
    seriesModel: PieSeriesModel
)

Source from the content-addressed store, hash-verified

347}
348
349export 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

Callers

nothing calls this directly

Calls 15

limitTurnAngleFunction · 0.90
limitSurfaceAngleFunction · 0.90
isLabelShownFunction · 0.85
isNumberFunction · 0.85
computeLabelGlobalRectFunction · 0.85
avoidOverlapFunction · 0.85
getItemGraphicElMethod · 0.80
getItemModelMethod · 0.80
setStyleMethod · 0.80
setShapeMethod · 0.80
getDataMethod · 0.65
getLayoutMethod · 0.65

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…