drawLabels method
void
drawLabels(
)
override
Implementation
@override
void drawLabels() {
_labelElem.innerHTML = ''.toJS;
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 gridR = (r - gridLineWidth - textMargin/4 - maxLabelWidth)*0.6;
double totalRadii = 0;
for (var dpe in _dataPoints.entries) {
var dataRadii = 2*pi*dpe.value;
var area = 2*pi*r*r*dpe.value;
// Only draw label if area is enough
if (area > 5000) {
var labelRadii = dataRadii/2;
var p = [gridR*sin(totalRadii + labelRadii) + r + dx, gridR*cos(totalRadii + labelRadii) + r + dy];
_labelElem.insertAdjacentHTML('beforeend', '<text x="${p[0]}" y="${p[1]}" style="font: $labelFontStyle;fill: $labelFillStyle;text-anchor: middle;dominant-baseline: middle;">${_nf.format(dpe.value)}</text>'.toJS);
}
totalRadii += dataRadii;
}
}