MCPcopy Index your code
hub / github.com/SuperMap/iClient-JavaScript / labelLayout

Function labelLayout

libs/echarts/echarts.simple.js:44085–44215  ·  view source on GitHub ↗
(seriesModel, r, viewWidth, viewHeight, viewLeft, viewTop)

Source from the content-addressed store, hash-verified

44083}
44084
44085var labelLayout = function (seriesModel, r, viewWidth, viewHeight, viewLeft, viewTop) {
44086 var data = seriesModel.getData();
44087 var labelLayoutList = [];
44088 var cx;
44089 var cy;
44090 var hasLabelRotate = false;
44091 var minShowLabelRadian = (seriesModel.get('minShowLabelAngle') || 0) * RADIAN$1;
44092
44093 data.each(function (idx) {
44094 var layout = data.getItemLayout(idx);
44095
44096 var itemModel = data.getItemModel(idx);
44097 var labelModel = itemModel.getModel('label');
44098 // Use position in normal or emphasis
44099 var labelPosition = labelModel.get('position') || itemModel.get('emphasis.label.position');
44100 var labelDistance = labelModel.get('distanceToLabelLine');
44101 var labelAlignTo = labelModel.get('alignTo');
44102 var labelMargin = parsePercent$1(labelModel.get('margin'), viewWidth);
44103 var bleedMargin = labelModel.get('bleedMargin');
44104 var font = labelModel.getFont();
44105
44106 var labelLineModel = itemModel.getModel('labelLine');
44107 var labelLineLen = labelLineModel.get('length');
44108 labelLineLen = parsePercent$1(labelLineLen, viewWidth);
44109 var labelLineLen2 = labelLineModel.get('length2');
44110 labelLineLen2 = parsePercent$1(labelLineLen2, viewWidth);
44111
44112 if (layout.angle < minShowLabelRadian) {
44113 return;
44114 }
44115
44116 var midAngle = (layout.startAngle + layout.endAngle) / 2;
44117 var dx = Math.cos(midAngle);
44118 var dy = Math.sin(midAngle);
44119
44120 var textX;
44121 var textY;
44122 var linePoints;
44123 var textAlign;
44124
44125 cx = layout.cx;
44126 cy = layout.cy;
44127
44128 var text = seriesModel.getFormattedLabel(idx, 'normal')
44129 || data.getName(idx);
44130 var textRect = getBoundingRect(
44131 text, font, textAlign, 'top'
44132 );
44133
44134 var isLabelInside = labelPosition === 'inside' || labelPosition === 'inner';
44135 if (labelPosition === 'center') {
44136 textX = layout.cx;
44137 textY = layout.cy;
44138 textAlign = 'center';
44139 }
44140 else {
44141 var x1 = (isLabelInside ? (layout.r + layout.r0) / 2 * dx : layout.r * dx) + cx;
44142 var y1 = (isLabelInside ? (layout.r + layout.r0) / 2 * dy : layout.r * dy) + cy;

Callers 1

pieLayoutFunction · 0.70

Calls 9

cosMethod · 0.80
sinMethod · 0.80
pushMethod · 0.80
parsePercent$1Function · 0.70
getBoundingRectFunction · 0.70
avoidOverlapFunction · 0.70
getDataMethod · 0.45
getMethod · 0.45
getModelMethod · 0.45

Tested by

no test coverage detected