MCPcopy Create free account
hub / github.com/SuperMap/iClient-JavaScript / estimateLabelUnionRect

Function estimateLabelUnionRect

libs/echarts/echarts.simple.js:37899–37941  ·  view source on GitHub ↗

* @param {module:echarts/coord/Axis} axis * @return {module:zrender/core/BoundingRect} Be null/undefined if no labels.

(axis)

Source from the content-addressed store, hash-verified

37897 * @return {module:zrender/core/BoundingRect} Be null/undefined if no labels.
37898 */
37899function estimateLabelUnionRect(axis) {
37900 var axisModel = axis.model;
37901 var scale = axis.scale;
37902
37903 if (!axisModel.get('axisLabel.show') || scale.isBlank()) {
37904 return;
37905 }
37906
37907 var isCategory = axis.type === 'category';
37908
37909 var realNumberScaleTicks;
37910 var tickCount;
37911 var categoryScaleExtent = scale.getExtent();
37912
37913 // Optimize for large category data, avoid call `getTicks()`.
37914 if (isCategory) {
37915 tickCount = scale.count();
37916 }
37917 else {
37918 realNumberScaleTicks = scale.getTicks();
37919 tickCount = realNumberScaleTicks.length;
37920 }
37921
37922 var axisLabelModel = axis.getLabelModel();
37923 var labelFormatter = makeLabelFormatter(axis);
37924
37925 var rect;
37926 var step = 1;
37927 // Simple optimization for large amount of labels
37928 if (tickCount > 40) {
37929 step = Math.ceil(tickCount / 40);
37930 }
37931 for (var i = 0; i < tickCount; i += step) {
37932 var tickValue = realNumberScaleTicks ? realNumberScaleTicks[i] : categoryScaleExtent[0] + i;
37933 var label = labelFormatter(tickValue);
37934 var unrotatedSingleRect = axisLabelModel.getTextRect(label);
37935 var singleRect = rotateTextRect(unrotatedSingleRect, axisLabelModel.get('rotate') || 0);
37936
37937 rect ? rect.union(singleRect) : (rect = singleRect);
37938 }
37939
37940 return rect;
37941}
37942
37943function rotateTextRect(textRect, rotate) {
37944 var rotateRadians = rotate * Math.PI / 180;

Callers 1

echarts.simple.jsFile · 0.70

Calls 4

makeLabelFormatterFunction · 0.70
rotateTextRectFunction · 0.70
getMethod · 0.45
getExtentMethod · 0.45

Tested by

no test coverage detected