in src/TornadoChart.ts [902:946]
private getLabelData(
value: number,
dxColumn: number,
columnWidth: number,
isColumnPositionLeft: boolean,
formatStringProp: string,
settings?: TornadoChartSettings): LabelData {
let dx: number,
tornadoChartSettings: TornadoChartSettings = settings ? settings : this.dataView.settings,
labelSettings: VisualDataLabelsSettings = tornadoChartSettings.labelSettings,
fontSize: number = labelSettings.fontSize,
color: string = labelSettings.labelColor;
let maxOutsideLabelWidth: number = isColumnPositionLeft
? dxColumn - this.leftLabelMargin
: this.allColumnsWidth - (dxColumn + columnWidth + this.leftLabelMargin);
let maxLabelWidth: number = Math.max(maxOutsideLabelWidth, columnWidth - this.leftLabelMargin);
let textProperties: TextProperties = {
fontFamily: dataLabelUtils.StandardFontFamily,
fontSize: PixelConverter.fromPoint(fontSize),
text: tornadoChartSettings.getLabelValueFormatter(formatStringProp).format(value)
};
let valueAfterValueFormatter: string = textMeasurementService.getTailoredTextOrDefault(textProperties, maxLabelWidth);
let textDataAfterValueFormatter: TextData = TornadoChart.getTextData(valueAfterValueFormatter, this.textOptions, true, false, fontSize);
if (columnWidth > textDataAfterValueFormatter.width + TornadoChart.LabelPadding) {
dx = dxColumn + columnWidth / 2 - textDataAfterValueFormatter.width / 2;
} else {
if (isColumnPositionLeft) {
dx = dxColumn - this.leftLabelMargin - textDataAfterValueFormatter.width;
} else {
dx = dxColumn + columnWidth + this.leftLabelMargin;
}
color = tornadoChartSettings.labelOutsideFillColor;
}
return {
dx: dx,
source: value,
value: valueAfterValueFormatter,
color: color
};
}