in src/chordChart.ts [1185:1236]
private renderLabels(
filteredData: ChordLabelEnabledDataPoint[],
layout: ILabelLayout,
isDonut: boolean = false,
forAnimation: boolean = false
): void {
// Check for a case where resizing leaves no labels - then we need to remove the labels "g"
if (filteredData.length === 0) {
dataLabelUtils.cleanDataLabels(this.labels, true);
return null;
}
// line chart ViewModel has a special "key" property for point identification since the "identity" field is set to the series identity
let hasKey: boolean = (<any>filteredData)[0].key !== null;
let hasDataPointIdentity: boolean =
(<any>filteredData)[0].identity !== null;
let dataLabels: Selection<
any,
ChordLabelEnabledDataPoint,
any,
any
> = this.labels
.selectAll(ChordChart.labelsClass.selectorName)
.data(filteredData);
dataLabels.exit().remove();
dataLabels = dataLabels.merge(
dataLabels
.enter()
.append("text")
.classed(ChordChart.labelsClass.className, true)
);
let newLabels = dataLabels;
if (forAnimation) {
newLabels.style("opacity", 0);
}
dataLabels
.attr("x", (d: LabelEnabledDataPoint) => d.labelX)
.attr("y", (d: LabelEnabledDataPoint) => d.labelY)
.attr("dy", ChordChart.DefaultDY)
.text((d: LabelEnabledDataPoint) => d.labeltext);
Object.keys(layout.style).forEach((x) =>
dataLabels.style(x, layout.style[x])
);
}