| Index: packages/charted/lib/charts/layout_renderers/pie_chart_renderer.dart
|
| diff --git a/packages/charted/lib/charts/layout_renderers/pie_chart_renderer.dart b/packages/charted/lib/charts/layout_renderers/pie_chart_renderer.dart
|
| index 44094693eae6b172d8904dccee1c390bae53287a..e32470d84097be779d2b2ba7fd67b918a1755848 100644
|
| --- a/packages/charted/lib/charts/layout_renderers/pie_chart_renderer.dart
|
| +++ b/packages/charted/lib/charts/layout_renderers/pie_chart_renderer.dart
|
| @@ -98,43 +98,56 @@ class PieChartRenderer extends LayoutRendererBase {
|
| indices = indices.reversed.toList();
|
| }
|
|
|
| - var accessor = (d, i) {
|
| + num accessor(d, int i) {
|
| var row = d == SMALL_INT_MAX ? otherRow : area.data.rows.elementAt(d);
|
| return row == null || row.elementAt(measure) == null
|
| ? 0
|
| - : row.elementAt(measure);
|
| - };
|
| - var data = (new PieLayout()..accessor = accessor).layout(indices),
|
| - arc = new SvgArc(
|
| - innerRadiusCallback: (d, i, e) => innerRadiusRatio * radius,
|
| - outerRadiusCallback: (d, i, e) => radius),
|
| - pie = root.selectAll('.pie-path').data(data);
|
| -
|
| - pie.enter.append('path').classed('pie-path');
|
| - pie
|
| - ..each((d, i, e) {
|
| - var styles = stylesForData(d.data, i);
|
| - e.classes.removeAll(ChartState.VALUE_CLASS_NAMES);
|
| - if (!isNullOrEmpty(styles)) {
|
| - e.classes.addAll(styles);
|
| - }
|
| - e.attributes
|
| - ..['fill'] = colorForData(d.data, i)
|
| - ..['d'] = arc.path(d, i, host)
|
| - ..['stroke-width'] = '1px'
|
| - ..['stroke'] = '#ffffff';
|
| -
|
| - e.append(
|
| - Namespace.createChildElement('text', e)..classes.add('pie-label'));
|
| - })
|
| + : row.elementAt(measure) as num;
|
| + }
|
| + var data = (new PieLayout()..accessor = accessor).layout(indices);
|
| + var arc = new SvgArc(
|
| + innerRadiusCallback: (d, i, e) => innerRadiusRatio * radius,
|
| + outerRadiusCallback: (d, i, e) => radius);
|
| + var pie = root.selectAll('.pie-path').data(data);
|
| +
|
| + pie.enter.appendWithCallback((d, i, e) {
|
| + var pieSector = Namespace.createChildElement('path', e)
|
| + ..classes.add('pie-path');
|
| + var styles = stylesForData(d.data, i);
|
| + if (!isNullOrEmpty(styles)) {
|
| + pieSector.classes.addAll(styles);
|
| + }
|
| + pieSector.attributes
|
| + ..['fill'] = colorForData(d.data, i)
|
| + ..['d'] = arc.path(d, i, host)
|
| + ..['stroke-width'] = '1px'
|
| + ..['stroke'] = '#ffffff';
|
| +
|
| + pieSector.append(Namespace.createChildElement('text', pieSector)
|
| + ..classes.add('pie-label'));
|
| + return pieSector;
|
| + })
|
| ..on('click', (d, i, e) => _event(mouseClickController, d, i, e))
|
| ..on('mouseover', (d, i, e) => _event(mouseOverController, d, i, e))
|
| ..on('mouseout', (d, i, e) => _event(mouseOutController, d, i, e));
|
|
|
| + pie.each((d, i, e) {
|
| + var styles = stylesForData(d.data, i);
|
| + e.classes.removeAll(ChartState.VALUE_CLASS_NAMES);
|
| + if (!isNullOrEmpty(styles)) {
|
| + e.classes.addAll(styles);
|
| + }
|
| + e.attributes
|
| + ..['fill'] = colorForData(d.data, i)
|
| + ..['d'] = arc.path(d, i, host)
|
| + ..['stroke-width'] = '1px'
|
| + ..['stroke'] = '#ffffff';
|
| + });
|
| +
|
| pie.exit.remove();
|
|
|
| _legend.clear();
|
| - var items = new List.generate(data.length, (i) {
|
| + var items = new List<ChartLegendItem>.generate(data.length, (i) {
|
| SvgArcData d = data.elementAt(i);
|
| Iterable row =
|
| d.data == SMALL_INT_MAX ? otherRow : area.data.rows.elementAt(d.data);
|
|
|