in src/chordChart.ts [1021:1069]
private getChordTicksArcDescriptors(): ChordArcDescriptor[] {
let groups: ChordGroup[] = this.data.groups;
let maxValue: number =
(!lodashIsempty(groups) && lodashMax(lodashMap(groups, (x: ChordGroup) => x.value))) || 0;
let minValue: number =
(!lodashIsempty(groups) && lodashMax(lodashMap(groups, (x: ChordGroup) => x.value))) || 0;
let radiusCoeff: number =
(this.radius / Math.abs(maxValue - minValue)) * 1.25;
let formatter: IValueFormatter = create({
format: ChordChart.DefaultFormatValue,
value: maxValue,
});
groups.forEach((x: ChordArcDescriptor) => {
let k: number = (x.endAngle - x.startAngle) / x.value,
absValue: number = Math.abs(x.value),
rangeValue: number[] = range(
0,
absValue,
absValue - 1 < 0.15 ? 0.15 : absValue - 1
);
if (x.value < 0) {
rangeValue = rangeValue.map((x) => x * -1).reverse();
}
for (let i: number = 1; i < rangeValue.length; i++) {
let gapSize: number = Math.abs(rangeValue[i] - rangeValue[i - 1]) * radiusCoeff;
if (gapSize < ChordChart.TicksFontSize) {
if (rangeValue.length > 2 && i === rangeValue.length - 1) {
rangeValue.splice(--i, 1);
} else {
rangeValue.splice(i--, 1);
}
}
}
x.angleLabels = rangeValue.map(
(v, i) =>
<any>{ angle: v * k + x.startAngle, label: formatter.format(v) }
);
});
return <ChordArcDescriptor[]>groups;
}