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

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

Issue 2989763002: Update charted to 0.4.8 and roll (Closed)
Patch Set: Removed Cutch from list of reviewers Created 3 years, 5 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: 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 870971ac84aa9899c2481d8fdb13312cdc2bd1ac..c022b395c0200a09bd2674385da730ea7de14b67 100644
--- a/packages/charted/lib/charts/src/cartesian_area_impl.dart
+++ b/packages/charted/lib/charts/src/cartesian_area_impl.dart
@@ -84,6 +84,7 @@ class DefaultCartesianAreaImpl implements CartesianArea {
Iterable<ChartSeries> _series;
bool _pendingLegendUpdate = false;
+ bool _pendingAxisConfigUpdate = false;
List<ChartBehavior> _behaviors = new List<ChartBehavior>();
Map<ChartSeries, _ChartSeriesInfo> _seriesInfoCache = new Map();
@@ -135,6 +136,9 @@ class DefaultCartesianAreaImpl implements CartesianArea {
_chartAxesUpdatedController.close();
_chartAxesUpdatedController = null;
}
+ if (_behaviors.isNotEmpty) {
+ _behaviors.forEach((behavior) => behavior.dispose());
+ }
}
static bool isNotInline(Element e) =>
@@ -166,9 +170,11 @@ class DefaultCartesianAreaImpl implements CartesianArea {
_config = value;
_configEventsDisposer.dispose();
_pendingLegendUpdate = true;
+ _pendingAxisConfigUpdate = true;
if (_config != null && _config is Observable) {
_configEventsDisposer.add((_config as Observable).changes.listen((_) {
+ _pendingAxisConfigUpdate = true;
_pendingLegendUpdate = true;
draw();
}));
@@ -200,6 +206,7 @@ class DefaultCartesianAreaImpl implements CartesianArea {
: new DefaultChartAxisImpl(this);
return axis;
});
+
return _measureAxes[axisId];
}
@@ -317,7 +324,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
@@ -339,6 +346,7 @@ class DefaultCartesianAreaImpl implements CartesianArea {
// Save the list of valid series and initialize axes.
_series = series;
+ _updateAxisConfig();
_initAxes(preRender: preRender);
// Render the chart, now that the axes layer is already in DOM.
@@ -353,6 +361,7 @@ 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>>{};
+ var keysToRemove = _measureAxes.keys.toList();
// Create necessary measures axes.
// If measure axes were not configured on the series, default is used.
@@ -360,6 +369,9 @@ class DefaultCartesianAreaImpl implements CartesianArea {
var measureAxisIds =
isNullOrEmpty(s.measureAxisIds) ? MEASURE_AXIS_IDS : s.measureAxisIds;
measureAxisIds.forEach((axisId) {
+ if (keysToRemove.contains(axisId)) {
+ keysToRemove.remove(axisId);
+ }
_getMeasureAxis(axisId); // Creates axis if required
var users = measureAxisUsers[axisId];
if (users == null) {
@@ -370,6 +382,10 @@ class DefaultCartesianAreaImpl implements CartesianArea {
});
});
+ for (var key in keysToRemove) {
+ _measureAxes.remove(key);
+ }
+
// Now that we know a list of series using each measure axis, configure
// the input domain of each axis.
measureAxisUsers.forEach((id, listOfSeries) {
@@ -579,6 +595,28 @@ class DefaultCartesianAreaImpl implements CartesianArea {
_pendingLegendUpdate = false;
}
+ // Updates the AxisConfig, if configuration chagned since the last time the
+ // AxisConfig was updated.
+ _updateAxisConfig() {
+ if (!_pendingAxisConfigUpdate) return;
+ _series.forEach((ChartSeries s) {
+ var measureAxisIds =
+ isNullOrEmpty(s.measureAxisIds) ? MEASURE_AXIS_IDS : s.measureAxisIds;
+ measureAxisIds.forEach((axisId) {
+ var axis = _getMeasureAxis(axisId); // Creates axis if required
+ axis.config = config.getMeasureAxis(axisId);
+ });
+ });
+
+ int dimensionAxesCount = useTwoDimensionAxes ? 2 : 1;
+ config.dimensions.take(dimensionAxesCount).forEach((int column) {
+ var axis = _getDimensionAxis(column);
+ axis.config = config.getDimensionAxis(column);
+ });
+
+ _pendingAxisConfigUpdate = false;
+ }
+
@override
Stream<ChartEvent> get onMouseUp =>
host.onMouseUp.map((MouseEvent e) => new DefaultChartEventImpl(e, this));

Powered by Google App Engine
This is Rietveld 408576698