Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(137)

Unified Diff: charted/lib/charts/cartesian_renderers/bubble_chart_renderer.dart

Issue 1400473008: Roll Observatory packages and add a roll script (Closed) Base URL: git@github.com:dart-lang/observatory_pub_packages.git@master
Patch Set: Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: charted/lib/charts/cartesian_renderers/bubble_chart_renderer.dart
diff --git a/charted/lib/charts/cartesian_renderers/bubble_chart_renderer.dart b/charted/lib/charts/cartesian_renderers/bubble_chart_renderer.dart
deleted file mode 100644
index 7c285cc83bfe28a77d181b2f6e224d3579efed98..0000000000000000000000000000000000000000
--- a/charted/lib/charts/cartesian_renderers/bubble_chart_renderer.dart
+++ /dev/null
@@ -1,158 +0,0 @@
-/*
- * Copyright 2014 Google Inc. All rights reserved.
- *
- * Use of this source code is governed by a BSD-style
- * license that can be found in the LICENSE file or at
- * https://developers.google.com/open-source/licenses/bsd
- */
-
-part of charted.charts;
-
-class BubbleChartRenderer extends CartesianRendererBase {
- final Iterable<int> dimensionsUsingBand = const[];
- final double maxBubbleRadius;
- final bool alwaysAnimate;
-
- Element _host;
- Selection _group;
- SelectionScope _scope;
-
- @override
- final String name = "bubble-rdr";
-
- BubbleChartRenderer({
- this.maxBubbleRadius: 20.0,
- this.alwaysAnimate: false});
-
- /*
- * BubbleChart needs two dimension axes.
- */
- @override
- bool prepare(ChartArea area, ChartSeries series) {
- _ensureAreaAndSeries(area, series);
- return area is CartesianArea && area.useTwoDimensionAxes == true;
- }
-
- @override
- void draw(Element element, {Future schedulePostRender}) {
- assert(series != null && area != null);
- assert(element != null && element is GElement);
-
- if (_scope == null) {
- _host = element;
- _scope = new SelectionScope.element(element);
- _group = _scope.selectElements([_host]);
- }
-
- var geometry = area.layout.renderArea,
- bubbleRadiusScale = area.measureScales(series).first,
- xDimensionScale = area.dimensionScales.first,
- yDimensionScale = area.dimensionScales.last,
- theme = area.theme,
- bubbleRadiusFactor =
- maxBubbleRadius / min([geometry.width, geometry.height]);
-
- String color(i) => theme.getColorForKey(series.measures.elementAt(i));
-
- // Measure values used to set size of the bubble.
- var columns = [];
- for (int m in series.measures) {
- columns.add(new List.from(
- area.data.rows.map((Iterable row) => row.elementAt(m))));
- }
-
- // Dimension values used to position the bubble.
- var xDimensionIndex = area.config.dimensions.first,
- yDimensionIndex = area.config.dimensions.last,
- xDimensionVals = [],
- yDimensionVals = [];
- for (var row in area.data.rows) {
- xDimensionVals.add(row.elementAt(xDimensionIndex));
- yDimensionVals.add(row.elementAt(yDimensionIndex));
- }
-
- var group = _group.selectAll('.measure-group').data(columns);
- group.enter.append('g')..classed('measure-group');
- group.each((d, i, e) {
- e.style.setProperty('fill', color(i));
- e.attributes['data-column'] = series.measures.elementAt(i);
- });
- group.exit.remove();
-
- var measures = group.selectAll('.bubble').dataWithCallback(
- (d, i, e) => columns[i]);
-
- measures.enter.append('circle')..classed('bubble');
- measures.each((d, i, e) {
- e.attributes
- ..['transform'] = 'translate('
- '${xDimensionScale.scale(xDimensionVals[i])},'
- '${yDimensionScale.scale(yDimensionVals[i])})'
- ..['r'] = '${bubbleRadiusScale.scale(d) * bubbleRadiusFactor}'
- ..['data-row'] = i;
- });
- measures.exit.remove();
- handleStateChanges([]);
- }
-
- @override
- void dispose() {
- if (_group == null) return;
- _group.selectAll('.row-group').remove();
- }
-
- @override
- double get bandInnerPadding => 1.0;
-
- @override
- double get bandOuterPadding =>
- area.theme.getDimensionAxisTheme().axisOuterPadding;
-
- @override
- Extent get extent {
- assert(series != null && area != null);
- var rows = area.data.rows,
- max = rows[0][series.measures.first],
- min = max;
-
- rows.forEach((row) {
- series.measures.forEach((idx) {
- if (row[idx] > max) max = row[idx];
- if (row[idx] < min) min = row[idx];
- });
- });
- return new Extent(min, max);
- }
-
- @override
- void handleStateChanges(List<ChangeRecord> changes) {
- var groups = host.querySelectorAll('.bar-rdr-rowgroup');
- if (groups == null || groups.isEmpty) return;
-
- for(int i = 0, len = groups.length; i < len; ++i) {
- var group = groups.elementAt(i),
- bars = group.querySelectorAll('.bar-rdr-bar'),
- row = int.parse(group.dataset['row']);
-
- for(int j = 0, barsCount = bars.length; j < barsCount; ++j) {
- var bar = bars.elementAt(j),
- column = int.parse(bar.dataset['column']),
- color = colorForValue(column, row);
-
- bar.classes.removeAll(ChartState.VALUE_CLASS_NAMES);
- bar.classes.addAll(stylesForValue(column, row));
- bar.style
- ..setProperty('fill', color)
- ..setProperty('stroke', color);
- }
- }
- }
-
- void _event(StreamController controller, data, int index, Element e) {
- if (controller == null) return;
- var rowStr = e.parent.dataset['row'];
- var row = rowStr != null ? int.parse(rowStr) : null;
- controller.add(
- new DefaultChartEventImpl(_scope.event, area, series, row, index, data));
- }
-}

Powered by Google App Engine
This is Rietveld 408576698