drawLabels method
void
drawLabels(
)
override
Implementation
@override
void drawLabels() {
_labelElem.innerHTML = ''.toJS;
if (points == 0) return;
final radians = 2*pi/points.toDouble();
var polygons = <List<double>>[];
final r = min(_svgElem.clientWidth, _svgElem.clientHeight)/2;
final dx = max(_svgElem.clientWidth/2 - r, 0);
final dy = max(_svgElem.clientHeight/2 - r, 0);
var labelR = r - textMargin/2 - maxLabelWidth/4;
for (var i = 0; i < points; i++) {
if (i == 0) {
polygons.add([
labelR*sin((radians*i)+pi) + r + dx,
labelR*cos((radians*i)+pi) + r + dy + 10, // This brings the first top label closer to the chart, for optical correctness
]);
} else {
polygons.add([
labelR*sin((radians*i)+pi) + r + dx,
labelR*cos((radians*i)+pi) + r + dy,
]);
}
}
var i = 0;
for (var label in labels) {
var p = polygons[i];
_labelElem.insertAdjacentHTML('beforeend', '<text x="${p[0]}" y="${p[1]}" style="font: $labelFontStyle;fill: $labelFillStyle;text-anchor: middle;dominant-baseline: middle;">$label</text>'.toJS);
i++;
}
}