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

Unified Diff: packages/charted/lib/charts/cartesian_renderers/line_chart_renderer.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/cartesian_renderers/line_chart_renderer.dart
diff --git a/packages/charted/lib/charts/cartesian_renderers/line_chart_renderer.dart b/packages/charted/lib/charts/cartesian_renderers/line_chart_renderer.dart
index 4806d2d8c45c52ef70795607bf0a4c83c8c2a6c7..b904327b1c59322d5a71f1211a5a658cb93150c9 100644
--- a/packages/charted/lib/charts/cartesian_renderers/line_chart_renderer.dart
+++ b/packages/charted/lib/charts/cartesian_renderers/line_chart_renderer.dart
@@ -1,4 +1,3 @@
-//
// Copyright 2014 Google Inc. All rights reserved.
//
// Use of this source code is governed by a BSD-style
@@ -12,6 +11,7 @@ class LineChartRenderer extends CartesianRendererBase {
final Iterable<int> dimensionsUsingBand = const [];
final bool alwaysAnimate;
+ final bool showHoverCardOnTrackedDataPoints;
final bool trackDataPoints;
final bool trackOnDimensionAxis;
final int quantitativeScaleProximity;
@@ -30,6 +30,7 @@ class LineChartRenderer extends CartesianRendererBase {
LineChartRenderer(
{this.alwaysAnimate: false,
+ this.showHoverCardOnTrackedDataPoints: false,
this.trackDataPoints: true,
this.trackOnDimensionAxis: false,
this.quantitativeScaleProximity: 5});
@@ -114,10 +115,10 @@ class LineChartRenderer extends CartesianRendererBase {
@override
void dispose() {
+ _disposer.dispose();
if (root == null) return;
root.selectAll('.line-rdr-line').remove();
root.selectAll('.line-rdr-point').remove();
- _disposer.dispose();
}
@override
@@ -166,7 +167,7 @@ class LineChartRenderer extends CartesianRendererBase {
_trackingPointsCreated = true;
}
- void _showTrackingCircles(int row) {
+ void _showTrackingCircles(ChartEvent event, int row) {
if (_trackingPointsCreated == false) {
_createTrackingCircles();
}
@@ -197,19 +198,31 @@ class LineChartRenderer extends CartesianRendererBase {
..setProperty('visibility', 'hidden');
}
});
+
+ if (showHoverCardOnTrackedDataPoints) {
+ var firstMeasureColumn = series.measures.first;
+ mouseOverController.add(new DefaultChartEventImpl(
+ event.source, area, series, row, firstMeasureColumn, 0));
+ _savedOverRow = row;
+ _savedOverColumn = firstMeasureColumn;
+ }
}
- void _hideTrackingCircles() {
+ void _hideTrackingCircles(ChartEvent event) {
root.selectAll('.line-rdr-point')
..style('opacity', '0.0')
..style('visibility', 'hidden');
+ if (showHoverCardOnTrackedDataPoints) {
+ mouseOutController.add(new DefaultChartEventImpl(
+ event.source, area, series, _savedOverRow, _savedOverColumn, 0));
+ }
}
int _getNearestRowIndex(num x) {
- var lastSmallerValue = 0;
+ double lastSmallerValue = 0.0;
var chartX = x - area.layout.renderArea.x;
for (var i = 0; i < _xPositions.length; i++) {
- var pos = _xPositions[i];
+ double pos = _xPositions[i].toDouble();
if (pos < chartX) {
lastSmallerValue = pos;
} else {
@@ -226,19 +239,24 @@ class LineChartRenderer extends CartesianRendererBase {
_disposer.add(area.onMouseMove.listen((ChartEvent event) {
if (area.layout.renderArea.contains(event.chartX, event.chartY)) {
var row = _getNearestRowIndex(event.chartX);
- window.animationFrame.then((_) => _showTrackingCircles(row));
+ window.animationFrame.then((_) {
+ _showTrackingCircles(event, row);
+ });
} else {
- _hideTrackingCircles();
+ _hideTrackingCircles(event);
}
}));
_disposer.add(area.onMouseOut.listen((ChartEvent event) {
- _hideTrackingCircles();
+ _hideTrackingCircles(event);
}));
}
void _mouseClickHandler(d, int i, Element e) {
if (area.state != null) {
- area.state.select(int.parse(e.dataset['column']));
+ var selectedColumn = int.parse(e.dataset['column']);
+ area.state.isSelected(selectedColumn)
+ ? area.state.unselect(selectedColumn)
+ : area.state.select(selectedColumn);
}
if (mouseClickController != null && e.tagName == 'circle') {
var row = int.parse(e.dataset['row']),

Powered by Google App Engine
This is Rietveld 408576698