in src/component/tooltip/tooltipMarkup.ts [314:375]
function buildNameValue(
ctx: TooltipMarkupBuildContext,
fragment: TooltipMarkupNameValueBlock,
topMarginForOuterGap: number,
toolTipTextStyle: TooltipOption['textStyle']
) {
const renderMode = ctx.renderMode;
const noName = fragment.noName;
const noValue = fragment.noValue;
const noMarker = !fragment.markerType;
const name = fragment.name;
const useUTC = ctx.useUTC;
const valueFormatter = fragment.valueFormatter || ctx.valueFormatter || ((value) => {
value = isArray(value) ? value : [value];
return map(value as unknown[], (val, idx) => makeValueReadable(
val, isArray(valueTypeOption) ? valueTypeOption[idx] : valueTypeOption, useUTC
));
});
if (noName && noValue) {
return;
}
const markerStr = noMarker
? ''
: ctx.markupStyleCreator.makeTooltipMarker(
fragment.markerType,
fragment.markerColor || '#333',
renderMode
);
const readableName = noName
? ''
: makeValueReadable(name, 'ordinal', useUTC);
const valueTypeOption = fragment.valueType;
const readableValueList = noValue
? []
: valueFormatter(fragment.value as OptionDataValue, fragment.dataIndex);
const valueAlignRight = !noMarker || !noName;
// It little weird if only value next to marker but far from marker.
const valueCloseToMarker = !noMarker && noName;
const {nameStyle, valueStyle} = getTooltipTextStyle(toolTipTextStyle, renderMode);
return renderMode === 'richText'
? (
(noMarker ? '' : markerStr)
+ (noName ? '' : wrapInlineNameRichText(ctx, readableName, nameStyle as RichTextStyle))
// Value has commas inside, so use ' ' as delimiter for multiple values.
+ (noValue ? '' : wrapInlineValueRichText(
ctx, readableValueList, valueAlignRight, valueCloseToMarker, valueStyle as RichTextStyle
))
)
: wrapBlockHTML(
toolTipTextStyle,
(noMarker ? '' : markerStr)
+ (noName ? '' : wrapInlineNameHTML(readableName, !noMarker, nameStyle as string))
+ (noValue ? '' : wrapInlineValueHTML(
readableValueList, valueAlignRight, valueCloseToMarker, valueStyle as string
)),
topMarginForOuterGap
);
}