MCPcopy
hub / github.com/apache/echarts / buildLabelElOption

Function buildLabelElOption

src/component/axisPointer/viewHelper.ts:75–135  ·  view source on GitHub ↗
(
    elOption: AxisPointerElementOptions,
    axisModel: AxisBaseModel,
    axisPointerModel: AxisPointerModel,
    api: ExtensionAPI,
    labelPos: {
        align?: ZRTextAlign
        verticalAlign?: ZRTextVerticalAlign
        position: number[]
    }
)

Source from the content-addressed store, hash-verified

73 * @param {Function} labelPos {align, verticalAlign, position}
74 */
75export function buildLabelElOption(
76 elOption: AxisPointerElementOptions,
77 axisModel: AxisBaseModel,
78 axisPointerModel: AxisPointerModel,
79 api: ExtensionAPI,
80 labelPos: {
81 align?: ZRTextAlign
82 verticalAlign?: ZRTextVerticalAlign
83 position: number[]
84 }
85) {
86 const value = axisPointerModel.get('value');
87 const text = getValueLabel(
88 value, axisModel.axis, axisModel.ecModel,
89 axisPointerModel.get('seriesDataIndices'),
90 {
91 precision: axisPointerModel.get(['label', 'precision']),
92 formatter: axisPointerModel.get(['label', 'formatter'])
93 }
94 );
95 const labelModel = axisPointerModel.getModel('label');
96 const paddings = formatUtil.normalizeCssArray(labelModel.get('padding') || 0);
97
98 const font = labelModel.getFont();
99 const textRect = textContain.getBoundingRect(text, font);
100
101 const position = labelPos.position;
102 const width = textRect.width + paddings[1] + paddings[3];
103 const height = textRect.height + paddings[0] + paddings[2];
104
105 // Adjust by align.
106 const align = labelPos.align;
107 align === 'right' && (position[0] -= width);
108 align === 'center' && (position[0] -= width / 2);
109 const verticalAlign = labelPos.verticalAlign;
110 verticalAlign === 'bottom' && (position[1] -= height);
111 verticalAlign === 'middle' && (position[1] -= height / 2);
112
113 // Not overflow ec container
114 confineInContainer(position, width, height, api);
115
116 let bgColor = labelModel.get('backgroundColor') as ZRColor;
117 if (!bgColor || bgColor === 'auto') {
118 bgColor = axisModel.get(['axisLine', 'lineStyle', 'color']);
119 }
120
121 elOption.label = {
122 // shape: {x: 0, y: 0, width: width, height: height, r: labelModel.get('borderRadius')},
123 x: position[0],
124 y: position[1],
125 style: createTextStyle(labelModel, {
126 text: text,
127 font: font,
128 fill: labelModel.getTextColor(),
129 padding: paddings,
130 backgroundColor: bgColor as ColorString
131 }),
132 // Label should be over axisPointer.

Callers 1

Calls 8

createTextStyleFunction · 0.90
getValueLabelFunction · 0.85
confineInContainerFunction · 0.85
getFontMethod · 0.80
getTextColorMethod · 0.80
getMethod · 0.45
getModelMethod · 0.45
getBoundingRectMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…