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

Unified Diff: packages/charted/lib/charts/src/cartesian_area_impl.dart

Issue 1521693002: Roll Observatory deps (charted -> ^0.3.0) (Closed) Base URL: https://chromium.googlesource.com/external/github.com/dart-lang/observatory_pub_packages.git@master
Patch Set: Created 5 years 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: packages/charted/lib/charts/src/cartesian_area_impl.dart
diff --git a/packages/charted/lib/charts/src/cartesian_area_impl.dart b/packages/charted/lib/charts/src/cartesian_area_impl.dart
index 2769f7ecb3a6dc464e1dacc2f5021e4aed215a87..81388733a919eda40c38c2d141693e2358a395f8 100644
--- a/packages/charted/lib/charts/src/cartesian_area_impl.dart
+++ b/packages/charted/lib/charts/src/cartesian_area_impl.dart
@@ -13,22 +13,22 @@ part of charted.charts;
/// which contain two dimension axes.
class DefaultCartesianAreaImpl implements CartesianArea {
/// Default identifiers used by the measure axes
- static const MEASURE_AXIS_IDS = const['_default'];
+ static const MEASURE_AXIS_IDS = const ['_default'];
/// Orientations used by measure axes. First, when "x" axis is the primary
/// and the only dimension. Second, when "y" axis is the primary and the only
/// dimension.
- static const MEASURE_AXIS_ORIENTATIONS = const[
- const[ORIENTATION_LEFT, ORIENTATION_RIGHT],
- const[ORIENTATION_BOTTOM, ORIENTATION_TOP]
+ static const MEASURE_AXIS_ORIENTATIONS = const [
+ const [ORIENTATION_LEFT, ORIENTATION_RIGHT],
+ const [ORIENTATION_BOTTOM, ORIENTATION_TOP]
];
/// Orientations used by the dimension axes. First, when "x" is the
/// primary dimension and the last one for cases where "y" axis is primary
/// dimension.
- static const DIMENSION_AXIS_ORIENTATIONS = const[
- const[ORIENTATION_BOTTOM, ORIENTATION_LEFT],
- const[ORIENTATION_LEFT, ORIENTATION_BOTTOM]
+ static const DIMENSION_AXIS_ORIENTATIONS = const [
+ const [ORIENTATION_BOTTOM, ORIENTATION_LEFT],
+ const [ORIENTATION_LEFT, ORIENTATION_BOTTOM]
];
/// Mapping of measure axis Id to it's axis.
@@ -99,7 +99,8 @@ class DefaultCartesianAreaImpl implements CartesianArea {
bool autoUpdate,
this.useTwoDimensionAxes,
this.useRowColoring,
- this.state) : _autoUpdate = autoUpdate {
+ this.state)
+ : _autoUpdate = autoUpdate {
assert(host != null);
assert(isNotInline(host));
@@ -194,9 +195,9 @@ class DefaultCartesianAreaImpl implements CartesianArea {
DefaultChartAxisImpl _getMeasureAxis(String axisId) {
_measureAxes.putIfAbsent(axisId, () {
var axisConf = config.getMeasureAxis(axisId),
- axis = axisConf != null ?
- new DefaultChartAxisImpl.withAxisConfig(this, axisConf) :
- new DefaultChartAxisImpl(this);
+ axis = axisConf != null
+ ? new DefaultChartAxisImpl.withAxisConfig(this, axisConf)
+ : new DefaultChartAxisImpl(this);
return axis;
});
return _measureAxes[axisId];
@@ -207,9 +208,9 @@ class DefaultCartesianAreaImpl implements CartesianArea {
DefaultChartAxisImpl _getDimensionAxis(int column) {
_dimensionAxes.putIfAbsent(column, () {
var axisConf = config.getDimensionAxis(column),
- axis = axisConf != null ?
- new DefaultChartAxisImpl.withAxisConfig(this, axisConf) :
- new DefaultChartAxisImpl(this);
+ axis = axisConf != null
+ ? new DefaultChartAxisImpl.withAxisConfig(this, axisConf)
+ : new DefaultChartAxisImpl(this);
return axis;
});
return _dimensionAxes[column];
@@ -237,8 +238,7 @@ class DefaultCartesianAreaImpl implements CartesianArea {
/// Computes the size of chart and if changed from the previous time
/// size was computed, sets attributes on svg element
Rect _computeChartSize() {
- int width = host.clientWidth,
- height = host.clientHeight;
+ int width = host.clientWidth, height = host.clientHeight;
if (config.minimumSize != null) {
width = max([width, config.minimumSize.width]);
@@ -247,7 +247,9 @@ class DefaultCartesianAreaImpl implements CartesianArea {
AbsoluteRect padding = theme.padding;
num paddingLeft = config.isRTL ? padding.end : padding.start;
- Rect current = new Rect(paddingLeft, padding.top,
+ Rect current = new Rect(
+ paddingLeft,
+ padding.top,
width - (padding.start + padding.end),
height - (padding.top + padding.bottom));
if (layout.chartArea == null || layout.chartArea != current) {
@@ -264,7 +266,7 @@ class DefaultCartesianAreaImpl implements CartesianArea {
}
@override
- draw({bool preRender:false, Future schedulePostRender}) {
+ draw({bool preRender: false, Future schedulePostRender}) {
assert(data != null && config != null);
assert(config.series != null && config.series.isNotEmpty);
@@ -275,9 +277,9 @@ class DefaultCartesianAreaImpl implements CartesianArea {
_svg = _scope.append('svg:svg')..classed('chart-canvas');
if (!isNullOrEmpty(theme.filters)) {
var element = _svg.first,
- defs = Namespace.createChildElement('defs', element)
- ..append(new SvgElement.svg(
- theme.filters, treeSanitizer: new NullTreeSanitizer()));
+ defs = Namespace.createChildElement('defs', element)
+ ..append(new SvgElement.svg(theme.filters,
+ treeSanitizer: new NullTreeSanitizer()));
_svg.first.append(defs);
}
@@ -286,17 +288,18 @@ class DefaultCartesianAreaImpl implements CartesianArea {
upperBehaviorPane = _svg.append('g')..classed('upper-render-pane');
if (_behaviors.isNotEmpty) {
- _behaviors.forEach(
- (b) => b.init(this, upperBehaviorPane, lowerBehaviorPane));
+ _behaviors
+ .forEach((b) => b.init(this, upperBehaviorPane, lowerBehaviorPane));
}
}
// Compute chart sizes and filter out unsupported series
_computeChartSize();
- var series = config.series.where((s) =>
- _isSeriesValid(s) && s.renderer.prepare(this, s)),
- selection = visualization.selectAll('.series-group').
- data(series, (x) => x.hashCode),
+ var series = config.series
+ .where((s) => _isSeriesValid(s) && s.renderer.prepare(this, s)),
+ selection = visualization
+ .selectAll('.series-group')
+ .data(series, (x) => x.hashCode),
axesDomainCompleter = new Completer();
// Wait till the axes are rendered before rendering series.
@@ -314,7 +317,7 @@ class DefaultCartesianAreaImpl implements CartesianArea {
info.check();
group.attributes['transform'] = transform;
(s.renderer as CartesianRenderer)
- .draw(group, schedulePostRender:schedulePostRender);
+ .draw(group, schedulePostRender: schedulePostRender);
});
// A series that was rendered earlier isn't there anymore, remove it
@@ -350,16 +353,15 @@ class DefaultCartesianAreaImpl implements CartesianArea {
/// Initialize the axes - required even if the axes are not being displayed.
_initAxes({bool preRender: false}) {
- Map measureAxisUsers = <String,Iterable<ChartSeries>>{};
+ Map measureAxisUsers = <String, Iterable<ChartSeries>>{};
// Create necessary measures axes.
// If measure axes were not configured on the series, default is used.
_series.forEach((ChartSeries s) {
- var measureAxisIds = isNullOrEmpty(s.measureAxisIds)
- ? MEASURE_AXIS_IDS
- : s.measureAxisIds;
+ var measureAxisIds =
+ isNullOrEmpty(s.measureAxisIds) ? MEASURE_AXIS_IDS : s.measureAxisIds;
measureAxisIds.forEach((axisId) {
- _getMeasureAxis(axisId); // Creates axis if required
+ _getMeasureAxis(axisId); // Creates axis if required
var users = measureAxisUsers[axisId];
if (users == null) {
measureAxisUsers[axisId] = [s];
@@ -402,18 +404,18 @@ class DefaultCartesianAreaImpl implements CartesianArea {
// Configure dimension axes.
int dimensionAxesCount = useTwoDimensionAxes ? 2 : 1;
config.dimensions.take(dimensionAxesCount).forEach((int column) {
- var axis = _getDimensionAxis(column),
- sampleColumnSpec = data.columns.elementAt(column),
- values = data.rows.map((row) => row.elementAt(column)),
- domain;
-
- if (sampleColumnSpec.useOrdinalScale) {
- domain = values.map((e) => e.toString()).toList();
- } else {
- var extent = new Extent.items(values);
- domain = [extent.min, extent.max];
- }
- axis.initAxisDomain(column, true, domain);
+ var axis = _getDimensionAxis(column),
+ sampleColumnSpec = data.columns.elementAt(column),
+ values = data.rows.map((row) => row.elementAt(column)),
+ domain;
+
+ if (sampleColumnSpec.useOrdinalScale) {
+ domain = values.map((e) => e.toString()).toList();
+ } else {
+ var extent = new Extent.items(values);
+ domain = [extent.min, extent.max];
+ }
+ axis.initAxisDomain(column, true, domain);
});
// See if any dimensions need "band" on the axis.
@@ -421,23 +423,22 @@ class DefaultCartesianAreaImpl implements CartesianArea {
List<bool> usingBands = [false, false];
_series.forEach((ChartSeries s) =>
(s.renderer as CartesianRenderer).dimensionsUsingBand.forEach((x) {
- if (x <= 1 && !(usingBands[x])) {
- usingBands[x] = true;
- dimensionsUsingBands.add(config.dimensions.elementAt(x));
- }
- }));
+ if (x <= 1 && !(usingBands[x])) {
+ usingBands[x] = true;
+ dimensionsUsingBands.add(config.dimensions.elementAt(x));
+ }
+ }));
// List of measure and dimension axes that are displayed
- assert(
- isNullOrEmpty(config.displayedMeasureAxes) ||
+ assert(isNullOrEmpty(config.displayedMeasureAxes) ||
config.displayedMeasureAxes.length < 2);
var measureAxesCount = dimensionAxesCount == 1 ? 2 : 0,
displayedMeasureAxes = (isNullOrEmpty(config.displayedMeasureAxes)
- ? _measureAxes.keys.take(measureAxesCount)
- : config.displayedMeasureAxes.take(measureAxesCount)).
- toList(growable: false),
+ ? _measureAxes.keys.take(measureAxesCount)
+ : config.displayedMeasureAxes.take(measureAxesCount))
+ .toList(growable: false),
displayedDimensionAxes =
- config.dimensions.take(dimensionAxesCount).toList(growable: false);
+ config.dimensions.take(dimensionAxesCount).toList(growable: false);
// Compute size of the dimension axes
if (config.renderDimensionAxes != false) {
@@ -481,8 +482,9 @@ class DefaultCartesianAreaImpl implements CartesianArea {
// Draw the visible measure axes, if any.
if (displayedMeasureAxes.isNotEmpty) {
- var axisGroups = visualization.
- selectAll('.measure-axis-group').data(displayedMeasureAxes);
+ var axisGroups = visualization
+ .selectAll('.measure-axis-group')
+ .data(displayedMeasureAxes);
// Update measure axis (add/remove/update)
axisGroups.enter.append('svg:g');
axisGroups.each((axisId, index, group) {
@@ -494,8 +496,9 @@ class DefaultCartesianAreaImpl implements CartesianArea {
// Draw the dimension axes, unless asked not to.
if (config.renderDimensionAxes != false) {
- var dimAxisGroups = visualization.
- selectAll('.dimension-axis-group').data(displayedDimensionAxes);
+ var dimAxisGroups = visualization
+ .selectAll('.dimension-axis-group')
+ .data(displayedDimensionAxes);
// Update dimension axes (add/remove/update)
dimAxisGroups.enter.append('svg:g');
dimAxisGroups.each((column, index, group) {
@@ -505,15 +508,18 @@ class DefaultCartesianAreaImpl implements CartesianArea {
dimAxisGroups.exit.remove();
} else {
// Initialize scale on invisible axis
- var dimensionAxisOrientations = config.isLeftAxisPrimary ?
- DIMENSION_AXIS_ORIENTATIONS.last : DIMENSION_AXIS_ORIENTATIONS.first;
+ var dimensionAxisOrientations = config.isLeftAxisPrimary
+ ? DIMENSION_AXIS_ORIENTATIONS.last
+ : DIMENSION_AXIS_ORIENTATIONS.first;
for (int i = 0; i < dimensionAxesCount; ++i) {
var column = config.dimensions.elementAt(i),
axis = _dimensionAxes[column],
orientation = dimensionAxisOrientations[i];
- axis.initAxisScale(orientation == ORIENTATION_LEFT ?
- [layout.renderArea.height, 0] : [0, layout.renderArea.width]);
- };
+ axis.initAxisScale(orientation == ORIENTATION_LEFT
+ ? [layout.renderArea.height, 0]
+ : [0, layout.renderArea.width]);
+ }
+ ;
}
}
@@ -535,21 +541,17 @@ class DefaultCartesianAreaImpl implements CartesianArea {
renderAreaWidth = layout.chartArea.width -
(left.width + layout.axes[ORIENTATION_RIGHT].width);
- layout.renderArea = new Rect(
- left.width, top.height, renderAreaWidth, renderAreaHeight);
+ layout.renderArea =
+ new Rect(left.width, top.height, renderAreaWidth, renderAreaHeight);
layout._axes
- ..[ORIENTATION_TOP] =
- new Rect(left.width, 0, renderAreaWidth, top.height)
- ..[ORIENTATION_RIGHT] =
- new Rect(left.width + renderAreaWidth, top.y,
- right.width, renderAreaHeight)
- ..[ORIENTATION_BOTTOM] =
- new Rect(left.width, top.height + renderAreaHeight,
- renderAreaWidth, bottom.height)
+ ..[ORIENTATION_TOP] = new Rect(left.width, 0, renderAreaWidth, top.height)
+ ..[ORIENTATION_RIGHT] = new Rect(
+ left.width + renderAreaWidth, top.y, right.width, renderAreaHeight)
+ ..[ORIENTATION_BOTTOM] = new Rect(left.width,
+ top.height + renderAreaHeight, renderAreaWidth, bottom.height)
..[ORIENTATION_LEFT] =
- new Rect(
- left.width, top.height, left.width, renderAreaHeight);
+ new Rect(left.width, top.height, left.width, renderAreaHeight);
}
// Updates the legend, if configuration changed since the last
@@ -562,14 +564,15 @@ class DefaultCartesianAreaImpl implements CartesianArea {
List seriesByColumn =
new List.generate(data.columns.length, (_) => new List());
- _series.forEach((s) =>
- s.measures.forEach((m) => seriesByColumn[m].add(s)));
+ _series.forEach((s) => s.measures.forEach((m) => seriesByColumn[m].add(s)));
seriesByColumn.asMap().forEach((int i, List s) {
if (s.length == 0) return;
legend.add(new ChartLegendItem(
- index:i, label:data.columns.elementAt(i).label, series:s,
- color:theme.getColorForKey(i)));
+ index: i,
+ label: data.columns.elementAt(i).label,
+ series: s,
+ color: theme.getColorForKey(i)));
});
_config.legend.update(legend, this);
@@ -578,28 +581,23 @@ class DefaultCartesianAreaImpl implements CartesianArea {
@override
Stream<ChartEvent> get onMouseUp =>
- host.onMouseUp
- .map((MouseEvent e) => new DefaultChartEventImpl(e, this));
+ host.onMouseUp.map((MouseEvent e) => new DefaultChartEventImpl(e, this));
@override
- Stream<ChartEvent> get onMouseDown =>
- host.onMouseDown
- .map((MouseEvent e) => new DefaultChartEventImpl(e, this));
+ Stream<ChartEvent> get onMouseDown => host.onMouseDown
+ .map((MouseEvent e) => new DefaultChartEventImpl(e, this));
@override
- Stream<ChartEvent> get onMouseOver =>
- host.onMouseOver
- .map((MouseEvent e) => new DefaultChartEventImpl(e, this));
+ Stream<ChartEvent> get onMouseOver => host.onMouseOver
+ .map((MouseEvent e) => new DefaultChartEventImpl(e, this));
@override
Stream<ChartEvent> get onMouseOut =>
- host.onMouseOut
- .map((MouseEvent e) => new DefaultChartEventImpl(e, this));
+ host.onMouseOut.map((MouseEvent e) => new DefaultChartEventImpl(e, this));
@override
- Stream<ChartEvent> get onMouseMove =>
- host.onMouseMove
- .map((MouseEvent e) => new DefaultChartEventImpl(e, this));
+ Stream<ChartEvent> get onMouseMove => host.onMouseMove
+ .map((MouseEvent e) => new DefaultChartEventImpl(e, this));
@override
Stream<ChartEvent> get onValueClick {
@@ -654,11 +652,11 @@ class DefaultCartesianAreaImpl implements CartesianArea {
class _ChartAreaLayout implements ChartAreaLayout {
final _axes = <String, Rect>{
- ORIENTATION_LEFT: const Rect(),
- ORIENTATION_RIGHT: const Rect(),
- ORIENTATION_TOP: const Rect(),
- ORIENTATION_BOTTOM: const Rect()
- };
+ ORIENTATION_LEFT: const Rect(),
+ ORIENTATION_RIGHT: const Rect(),
+ ORIENTATION_TOP: const Rect(),
+ ORIENTATION_BOTTOM: const Rect()
+ };
UnmodifiableMapView<String, Rect> _axesView;
@@ -713,7 +711,8 @@ class _ChartSeriesInfo {
if (state != null) {
var current = state.hovered;
if (current != null &&
- current.first == e.column && current.last == e.row) {
+ current.first == e.column &&
+ current.last == e.row) {
state.hovered = null;
}
}
@@ -725,7 +724,7 @@ class _ChartSeriesInfo {
check() {
if (_renderer != _series.renderer) {
dispose();
- if (_series.renderer is ChartRendererBehaviorSource){
+ if (_series.renderer is ChartRendererBehaviorSource) {
_disposer.addAll([
_series.renderer.onValueClick.listen(_click),
_series.renderer.onValueMouseOver.listen(_mouseOver),
@@ -736,5 +735,8 @@ class _ChartSeriesInfo {
_renderer = _series.renderer;
}
- dispose() => _disposer.dispose();
+ dispose() {
+ _renderer?.dispose();
+ _disposer.dispose();
+ }
}

Powered by Google App Engine
This is Rietveld 408576698