mirror of
https://github.com/flutter/samples.git
synced 2026-04-23 15:31:29 +00:00
Web charts common update (#111)
This commit is contained in:
@@ -43,13 +43,13 @@ class MockCanvas extends Mock implements ChartCanvas {}
|
||||
/// A fake [GraphicsFactory] that returns [FakeTextStyle] and [FakeTextElement].
|
||||
class FakeGraphicsFactory extends GraphicsFactory {
|
||||
@override
|
||||
TextStyle createTextPaint() => new FakeTextStyle();
|
||||
TextStyle createTextPaint() => FakeTextStyle();
|
||||
|
||||
@override
|
||||
TextElement createTextElement(String text) => new FakeTextElement(text);
|
||||
TextElement createTextElement(String text) => FakeTextElement(text);
|
||||
|
||||
@override
|
||||
LineStyle createLinePaint() => new MockLinePaint();
|
||||
LineStyle createLinePaint() => MockLinePaint();
|
||||
}
|
||||
|
||||
/// Stores [TextStyle] properties for test to verify.
|
||||
@@ -72,7 +72,7 @@ class FakeTextElement implements TextElement {
|
||||
|
||||
FakeTextElement(this.text);
|
||||
|
||||
TextMeasurement get measurement => new TextMeasurement(
|
||||
TextMeasurement get measurement => TextMeasurement(
|
||||
horizontalSliceWidth: text.length.toDouble(),
|
||||
verticalSliceWidth: textStyle.fontSize.toDouble(),
|
||||
baseline: textStyle.fontSize.toDouble());
|
||||
@@ -81,7 +81,7 @@ class FakeTextElement implements TextElement {
|
||||
class MockLinePaint extends Mock implements LineStyle {}
|
||||
|
||||
class FakeBarRendererElement implements ImmutableBarRendererElement<String> {
|
||||
final _series = new MockImmutableSeries<String>();
|
||||
final _series = MockImmutableSeries<String>();
|
||||
final AccessorFn<String> labelAccessor;
|
||||
final String datum;
|
||||
final Rectangle<int> bounds;
|
||||
@@ -106,9 +106,9 @@ void main() {
|
||||
Rectangle<int> drawBounds;
|
||||
|
||||
setUpAll(() {
|
||||
canvas = new MockCanvas();
|
||||
graphicsFactory = new FakeGraphicsFactory();
|
||||
drawBounds = new Rectangle(0, 0, 200, 100);
|
||||
canvas = MockCanvas();
|
||||
graphicsFactory = FakeGraphicsFactory();
|
||||
drawBounds = Rectangle(0, 0, 200, 100);
|
||||
});
|
||||
|
||||
group('horizontal bar chart', () {
|
||||
@@ -118,12 +118,12 @@ void main() {
|
||||
// 'LabelA' and 'LabelB' both have lengths of 6.
|
||||
// 'LabelB' would not fit inside the bar in auto setting because it has
|
||||
// width of 5.
|
||||
new FakeBarRendererElement(
|
||||
'A', new Rectangle(0, 20, 50, 20), (_) => 'LabelA', data),
|
||||
new FakeBarRendererElement(
|
||||
'B', new Rectangle(0, 70, 5, 20), (_) => 'LabelB', data)
|
||||
FakeBarRendererElement(
|
||||
'A', Rectangle(0, 20, 50, 20), (_) => 'LabelA', data),
|
||||
FakeBarRendererElement(
|
||||
'B', Rectangle(0, 70, 5, 20), (_) => 'LabelB', data)
|
||||
];
|
||||
final decorator = new BarLabelDecorator();
|
||||
final decorator = BarLabelDecorator();
|
||||
|
||||
decorator.decorate(barElements, canvas, graphicsFactory,
|
||||
drawBounds: drawBounds,
|
||||
@@ -155,15 +155,15 @@ void main() {
|
||||
final barElements = [
|
||||
// 'LabelABC' would not fit inside the bar in auto setting because it
|
||||
// has a width of 8.
|
||||
new FakeBarRendererElement(
|
||||
'A', new Rectangle(0, 0, 6, 20), (_) => 'LabelABC', ['A']),
|
||||
FakeBarRendererElement(
|
||||
'A', Rectangle(0, 0, 6, 20), (_) => 'LabelABC', ['A']),
|
||||
];
|
||||
// Draw bounds with width of 10 means that space inside the bar is larger.
|
||||
final smallDrawBounds = new Rectangle(0, 0, 10, 20);
|
||||
final smallDrawBounds = Rectangle(0, 0, 10, 20);
|
||||
|
||||
new BarLabelDecorator(
|
||||
BarLabelDecorator(
|
||||
labelPadding: 0, // Turn off label padding for testing.
|
||||
insideLabelStyleSpec: new TextStyleSpec(fontSize: 10))
|
||||
insideLabelStyleSpec: TextStyleSpec(fontSize: 10))
|
||||
.decorate(barElements, canvas, graphicsFactory,
|
||||
drawBounds: smallDrawBounds,
|
||||
animationPercent: 1.0,
|
||||
@@ -182,14 +182,14 @@ void main() {
|
||||
final barElements = [
|
||||
// 'LabelABC' would not fit inside the bar in auto setting because it
|
||||
// has a width of 8.
|
||||
new FakeBarRendererElement(
|
||||
'A', new Rectangle(0, 0, 6, 20), (_) => 'LabelABC', ['A']),
|
||||
FakeBarRendererElement(
|
||||
'A', Rectangle(0, 0, 6, 20), (_) => 'LabelABC', ['A']),
|
||||
];
|
||||
|
||||
new BarLabelDecorator(
|
||||
BarLabelDecorator(
|
||||
labelPosition: BarLabelPosition.inside,
|
||||
labelPadding: 0, // Turn off label padding for testing.
|
||||
insideLabelStyleSpec: new TextStyleSpec(fontSize: 10))
|
||||
insideLabelStyleSpec: TextStyleSpec(fontSize: 10))
|
||||
.decorate(barElements, canvas, graphicsFactory,
|
||||
drawBounds: drawBounds,
|
||||
animationPercent: 1.0,
|
||||
@@ -206,14 +206,14 @@ void main() {
|
||||
|
||||
test('LabelPosition.outside always paints outside the bar', () {
|
||||
final barElements = [
|
||||
new FakeBarRendererElement(
|
||||
'A', new Rectangle(0, 0, 10, 20), (_) => 'Label', ['A']),
|
||||
FakeBarRendererElement(
|
||||
'A', Rectangle(0, 0, 10, 20), (_) => 'Label', ['A']),
|
||||
];
|
||||
|
||||
new BarLabelDecorator(
|
||||
BarLabelDecorator(
|
||||
labelPosition: BarLabelPosition.outside,
|
||||
labelPadding: 0, // Turn off label padding for testing.
|
||||
outsideLabelStyleSpec: new TextStyleSpec(fontSize: 10))
|
||||
outsideLabelStyleSpec: TextStyleSpec(fontSize: 10))
|
||||
.decorate(barElements, canvas, graphicsFactory,
|
||||
drawBounds: drawBounds,
|
||||
animationPercent: 1.0,
|
||||
@@ -234,18 +234,18 @@ void main() {
|
||||
// 'LabelA' and 'LabelB' both have lengths of 6.
|
||||
// 'LabelB' would not fit inside the bar in auto setting because it has
|
||||
// width of 5.
|
||||
new FakeBarRendererElement(
|
||||
'A', new Rectangle(0, 20, 50, 20), (_) => 'LabelA', data),
|
||||
new FakeBarRendererElement(
|
||||
'B', new Rectangle(0, 70, 5, 20), (_) => 'LabelB', data)
|
||||
FakeBarRendererElement(
|
||||
'A', Rectangle(0, 20, 50, 20), (_) => 'LabelA', data),
|
||||
FakeBarRendererElement(
|
||||
'B', Rectangle(0, 70, 5, 20), (_) => 'LabelB', data)
|
||||
];
|
||||
final insideColor = new Color(r: 0, g: 0, b: 0);
|
||||
final outsideColor = new Color(r: 255, g: 255, b: 255);
|
||||
final decorator = new BarLabelDecorator(
|
||||
final insideColor = Color(r: 0, g: 0, b: 0);
|
||||
final outsideColor = Color(r: 255, g: 255, b: 255);
|
||||
final decorator = BarLabelDecorator(
|
||||
labelPadding: 0,
|
||||
insideLabelStyleSpec: new TextStyleSpec(
|
||||
insideLabelStyleSpec: TextStyleSpec(
|
||||
fontSize: 10, fontFamily: 'insideFont', color: insideColor),
|
||||
outsideLabelStyleSpec: new TextStyleSpec(
|
||||
outsideLabelStyleSpec: TextStyleSpec(
|
||||
fontSize: 8, fontFamily: 'outsideFont', color: outsideColor));
|
||||
|
||||
decorator.decorate(barElements, canvas, graphicsFactory,
|
||||
@@ -276,15 +276,15 @@ void main() {
|
||||
|
||||
test('TextAnchor.end starts on the right most of bar', () {
|
||||
final barElements = [
|
||||
new FakeBarRendererElement(
|
||||
'A', new Rectangle(0, 0, 10, 20), (_) => 'LabelA', ['A'])
|
||||
FakeBarRendererElement(
|
||||
'A', Rectangle(0, 0, 10, 20), (_) => 'LabelA', ['A'])
|
||||
];
|
||||
|
||||
new BarLabelDecorator(
|
||||
BarLabelDecorator(
|
||||
labelAnchor: BarLabelAnchor.end,
|
||||
labelPosition: BarLabelPosition.inside,
|
||||
labelPadding: 0, // Turn off label padding for testing.
|
||||
insideLabelStyleSpec: new TextStyleSpec(fontSize: 10))
|
||||
insideLabelStyleSpec: TextStyleSpec(fontSize: 10))
|
||||
.decorate(barElements, canvas, graphicsFactory,
|
||||
drawBounds: drawBounds,
|
||||
animationPercent: 1.0,
|
||||
@@ -301,15 +301,15 @@ void main() {
|
||||
|
||||
test('RTL TextAnchor.start starts on the right', () {
|
||||
final barElements = [
|
||||
new FakeBarRendererElement(
|
||||
'A', new Rectangle(0, 0, 10, 20), (_) => 'LabelA', ['A'])
|
||||
FakeBarRendererElement(
|
||||
'A', Rectangle(0, 0, 10, 20), (_) => 'LabelA', ['A'])
|
||||
];
|
||||
|
||||
new BarLabelDecorator(
|
||||
BarLabelDecorator(
|
||||
labelAnchor: BarLabelAnchor.start,
|
||||
labelPosition: BarLabelPosition.inside,
|
||||
labelPadding: 0, // Turn off label padding for testing.
|
||||
insideLabelStyleSpec: new TextStyleSpec(fontSize: 10))
|
||||
insideLabelStyleSpec: TextStyleSpec(fontSize: 10))
|
||||
.decorate(barElements, canvas, graphicsFactory,
|
||||
drawBounds: drawBounds,
|
||||
animationPercent: 1.0,
|
||||
@@ -327,15 +327,15 @@ void main() {
|
||||
|
||||
test('RTL TextAnchor.end starts on the left', () {
|
||||
final barElements = [
|
||||
new FakeBarRendererElement(
|
||||
'A', new Rectangle(0, 0, 10, 20), (_) => 'LabelA', ['A'])
|
||||
FakeBarRendererElement(
|
||||
'A', Rectangle(0, 0, 10, 20), (_) => 'LabelA', ['A'])
|
||||
];
|
||||
|
||||
new BarLabelDecorator(
|
||||
BarLabelDecorator(
|
||||
labelAnchor: BarLabelAnchor.end,
|
||||
labelPosition: BarLabelPosition.inside,
|
||||
labelPadding: 0, // Turn off label padding for testing.
|
||||
insideLabelStyleSpec: new TextStyleSpec(fontSize: 10))
|
||||
insideLabelStyleSpec: TextStyleSpec(fontSize: 10))
|
||||
.decorate(barElements, canvas, graphicsFactory,
|
||||
drawBounds: drawBounds,
|
||||
animationPercent: 1.0,
|
||||
@@ -355,11 +355,10 @@ void main() {
|
||||
group('Null and empty label scenarios', () {
|
||||
test('Skip label if label accessor does not exist', () {
|
||||
final barElements = [
|
||||
new FakeBarRendererElement(
|
||||
'A', new Rectangle(0, 0, 10, 20), null, ['A'])
|
||||
FakeBarRendererElement('A', Rectangle(0, 0, 10, 20), null, ['A'])
|
||||
];
|
||||
|
||||
new BarLabelDecorator().decorate(barElements, canvas, graphicsFactory,
|
||||
BarLabelDecorator().decorate(barElements, canvas, graphicsFactory,
|
||||
drawBounds: drawBounds,
|
||||
animationPercent: 1.0,
|
||||
renderingVertically: false);
|
||||
@@ -370,13 +369,11 @@ void main() {
|
||||
test('Skip label if label is null or empty', () {
|
||||
final data = ['A', 'B'];
|
||||
final barElements = [
|
||||
new FakeBarRendererElement(
|
||||
'A', new Rectangle(0, 0, 10, 20), null, data),
|
||||
new FakeBarRendererElement(
|
||||
'B', new Rectangle(0, 50, 10, 20), (_) => '', data),
|
||||
FakeBarRendererElement('A', Rectangle(0, 0, 10, 20), null, data),
|
||||
FakeBarRendererElement('B', Rectangle(0, 50, 10, 20), (_) => '', data),
|
||||
];
|
||||
|
||||
new BarLabelDecorator().decorate(barElements, canvas, graphicsFactory,
|
||||
BarLabelDecorator().decorate(barElements, canvas, graphicsFactory,
|
||||
drawBounds: drawBounds,
|
||||
animationPercent: 1.0,
|
||||
renderingVertically: false);
|
||||
@@ -386,11 +383,10 @@ void main() {
|
||||
|
||||
test('Skip label if no width available', () {
|
||||
final barElements = [
|
||||
new FakeBarRendererElement(
|
||||
'A', new Rectangle(0, 0, 200, 20), (_) => 'a', ['A'])
|
||||
FakeBarRendererElement('A', Rectangle(0, 0, 200, 20), (_) => 'a', ['A'])
|
||||
];
|
||||
|
||||
new BarLabelDecorator(
|
||||
BarLabelDecorator(
|
||||
labelPadding: 0,
|
||||
labelPosition: BarLabelPosition.outside,
|
||||
).decorate(barElements, canvas, graphicsFactory,
|
||||
|
||||
@@ -50,8 +50,7 @@ class FakeBarRenderer<D> extends BarRenderer<D> {
|
||||
int paintBarCallCount = 0;
|
||||
|
||||
factory FakeBarRenderer({BarRendererConfig config, String rendererId}) {
|
||||
return new FakeBarRenderer._internal(
|
||||
config: config, rendererId: rendererId);
|
||||
return FakeBarRenderer._internal(config: config, rendererId: rendererId);
|
||||
}
|
||||
|
||||
FakeBarRenderer._internal({BarRendererConfig config, String rendererId})
|
||||
@@ -73,10 +72,10 @@ void main() {
|
||||
// Convenience methods for creating mocks.
|
||||
/////////////////////////////////////////
|
||||
_configureBaseRenderer(BaseBarRenderer renderer, bool vertical) {
|
||||
final context = new MockContext();
|
||||
final context = MockContext();
|
||||
when(context.chartContainerIsRtl).thenReturn(false);
|
||||
when(context.isRtl).thenReturn(false);
|
||||
final verticalChart = new MockChart();
|
||||
final verticalChart = MockChart();
|
||||
when(verticalChart.vertical).thenReturn(vertical);
|
||||
when(verticalChart.context).thenReturn(context);
|
||||
renderer.onAttach(verticalChart);
|
||||
@@ -85,132 +84,132 @@ void main() {
|
||||
}
|
||||
|
||||
BarRenderer makeRenderer({BarRendererConfig config}) {
|
||||
final renderer = new BarRenderer(config: config);
|
||||
final renderer = BarRenderer(config: config);
|
||||
_configureBaseRenderer(renderer, true);
|
||||
return renderer;
|
||||
}
|
||||
|
||||
FakeBarRenderer makeFakeRenderer({BarRendererConfig config}) {
|
||||
final renderer = new FakeBarRenderer(config: config);
|
||||
final renderer = FakeBarRenderer(config: config);
|
||||
_configureBaseRenderer(renderer, true);
|
||||
return renderer;
|
||||
}
|
||||
|
||||
setUp(() {
|
||||
var myFakeDesktopAData = [
|
||||
new MyRow('MyCampaign1', 5),
|
||||
new MyRow('MyCampaign2', 25),
|
||||
new MyRow('MyCampaign3', 100),
|
||||
new MyRow('MyOtherCampaign', 75),
|
||||
MyRow('MyCampaign1', 5),
|
||||
MyRow('MyCampaign2', 25),
|
||||
MyRow('MyCampaign3', 100),
|
||||
MyRow('MyOtherCampaign', 75),
|
||||
];
|
||||
|
||||
var myFakeTabletAData = [
|
||||
new MyRow('MyCampaign1', 5),
|
||||
new MyRow('MyCampaign2', 25),
|
||||
new MyRow('MyCampaign3', 100),
|
||||
new MyRow('MyOtherCampaign', 75),
|
||||
MyRow('MyCampaign1', 5),
|
||||
MyRow('MyCampaign2', 25),
|
||||
MyRow('MyCampaign3', 100),
|
||||
MyRow('MyOtherCampaign', 75),
|
||||
];
|
||||
|
||||
var myFakeMobileAData = [
|
||||
new MyRow('MyCampaign1', 5),
|
||||
new MyRow('MyCampaign2', 25),
|
||||
new MyRow('MyCampaign3', 100),
|
||||
new MyRow('MyOtherCampaign', 75),
|
||||
MyRow('MyCampaign1', 5),
|
||||
MyRow('MyCampaign2', 25),
|
||||
MyRow('MyCampaign3', 100),
|
||||
MyRow('MyOtherCampaign', 75),
|
||||
];
|
||||
|
||||
var myFakeDesktopBData = [
|
||||
new MyRow('MyCampaign1', 5),
|
||||
new MyRow('MyCampaign2', 25),
|
||||
new MyRow('MyCampaign3', 100),
|
||||
new MyRow('MyOtherCampaign', 75),
|
||||
MyRow('MyCampaign1', 5),
|
||||
MyRow('MyCampaign2', 25),
|
||||
MyRow('MyCampaign3', 100),
|
||||
MyRow('MyOtherCampaign', 75),
|
||||
];
|
||||
|
||||
var myFakeTabletBData = [
|
||||
new MyRow('MyCampaign1', 5),
|
||||
new MyRow('MyCampaign2', 25),
|
||||
new MyRow('MyCampaign3', 100),
|
||||
new MyRow('MyOtherCampaign', 75),
|
||||
MyRow('MyCampaign1', 5),
|
||||
MyRow('MyCampaign2', 25),
|
||||
MyRow('MyCampaign3', 100),
|
||||
MyRow('MyOtherCampaign', 75),
|
||||
];
|
||||
|
||||
var myFakeMobileBData = [
|
||||
new MyRow('MyCampaign1', 5),
|
||||
new MyRow('MyCampaign2', 25),
|
||||
new MyRow('MyCampaign3', 100),
|
||||
new MyRow('MyOtherCampaign', 75),
|
||||
MyRow('MyCampaign1', 5),
|
||||
MyRow('MyCampaign2', 25),
|
||||
MyRow('MyCampaign3', 100),
|
||||
MyRow('MyOtherCampaign', 75),
|
||||
];
|
||||
|
||||
seriesList = [
|
||||
new MutableSeries<String>(new Series<MyRow, String>(
|
||||
MutableSeries<String>(Series<MyRow, String>(
|
||||
id: 'Desktop',
|
||||
colorFn: (_, __) => MaterialPalette.blue.shadeDefault,
|
||||
domainFn: (MyRow row, _) => row.campaign,
|
||||
measureFn: (MyRow row, _) => row.clickCount,
|
||||
measureOffsetFn: (MyRow row, _) => 0,
|
||||
domainFn: (row, _) => row.campaign,
|
||||
measureFn: (row, _) => row.clickCount,
|
||||
measureOffsetFn: (row, _) => 0,
|
||||
data: myFakeDesktopAData)),
|
||||
new MutableSeries<String>(new Series<MyRow, String>(
|
||||
MutableSeries<String>(Series<MyRow, String>(
|
||||
id: 'Tablet',
|
||||
colorFn: (_, __) => MaterialPalette.red.shadeDefault,
|
||||
domainFn: (MyRow row, _) => row.campaign,
|
||||
measureFn: (MyRow row, _) => row.clickCount,
|
||||
measureOffsetFn: (MyRow row, _) => 0,
|
||||
domainFn: (row, _) => row.campaign,
|
||||
measureFn: (row, _) => row.clickCount,
|
||||
measureOffsetFn: (row, _) => 0,
|
||||
data: myFakeTabletAData)),
|
||||
new MutableSeries<String>(new Series<MyRow, String>(
|
||||
MutableSeries<String>(Series<MyRow, String>(
|
||||
id: 'Mobile',
|
||||
colorFn: (_, __) => MaterialPalette.green.shadeDefault,
|
||||
domainFn: (MyRow row, _) => row.campaign,
|
||||
measureFn: (MyRow row, _) => row.clickCount,
|
||||
measureOffsetFn: (MyRow row, _) => 0,
|
||||
domainFn: (row, _) => row.campaign,
|
||||
measureFn: (row, _) => row.clickCount,
|
||||
measureOffsetFn: (row, _) => 0,
|
||||
data: myFakeMobileAData))
|
||||
];
|
||||
|
||||
groupedStackedSeriesList = [
|
||||
new MutableSeries<String>(new Series<MyRow, String>(
|
||||
MutableSeries<String>(Series<MyRow, String>(
|
||||
id: 'Desktop A',
|
||||
seriesCategory: 'A',
|
||||
colorFn: (_, __) => MaterialPalette.blue.shadeDefault,
|
||||
domainFn: (MyRow row, _) => row.campaign,
|
||||
measureFn: (MyRow row, _) => row.clickCount,
|
||||
measureOffsetFn: (MyRow row, _) => 0,
|
||||
domainFn: (row, _) => row.campaign,
|
||||
measureFn: (row, _) => row.clickCount,
|
||||
measureOffsetFn: (row, _) => 0,
|
||||
data: myFakeDesktopAData)),
|
||||
new MutableSeries<String>(new Series<MyRow, String>(
|
||||
MutableSeries<String>(Series<MyRow, String>(
|
||||
id: 'Tablet A',
|
||||
seriesCategory: 'A',
|
||||
colorFn: (_, __) => MaterialPalette.red.shadeDefault,
|
||||
domainFn: (MyRow row, _) => row.campaign,
|
||||
measureFn: (MyRow row, _) => row.clickCount,
|
||||
measureOffsetFn: (MyRow row, _) => 0,
|
||||
domainFn: (row, _) => row.campaign,
|
||||
measureFn: (row, _) => row.clickCount,
|
||||
measureOffsetFn: (row, _) => 0,
|
||||
data: myFakeTabletAData)),
|
||||
new MutableSeries<String>(new Series<MyRow, String>(
|
||||
MutableSeries<String>(Series<MyRow, String>(
|
||||
id: 'Mobile A',
|
||||
seriesCategory: 'A',
|
||||
colorFn: (_, __) => MaterialPalette.green.shadeDefault,
|
||||
domainFn: (MyRow row, _) => row.campaign,
|
||||
measureFn: (MyRow row, _) => row.clickCount,
|
||||
measureOffsetFn: (MyRow row, _) => 0,
|
||||
domainFn: (row, _) => row.campaign,
|
||||
measureFn: (row, _) => row.clickCount,
|
||||
measureOffsetFn: (row, _) => 0,
|
||||
data: myFakeMobileAData)),
|
||||
new MutableSeries<String>(new Series<MyRow, String>(
|
||||
MutableSeries<String>(Series<MyRow, String>(
|
||||
id: 'Desktop B',
|
||||
seriesCategory: 'B',
|
||||
colorFn: (_, __) => MaterialPalette.blue.shadeDefault,
|
||||
domainFn: (MyRow row, _) => row.campaign,
|
||||
measureFn: (MyRow row, _) => row.clickCount,
|
||||
measureOffsetFn: (MyRow row, _) => 0,
|
||||
domainFn: (row, _) => row.campaign,
|
||||
measureFn: (row, _) => row.clickCount,
|
||||
measureOffsetFn: (row, _) => 0,
|
||||
data: myFakeDesktopBData)),
|
||||
new MutableSeries<String>(new Series<MyRow, String>(
|
||||
MutableSeries<String>(Series<MyRow, String>(
|
||||
id: 'Tablet B',
|
||||
seriesCategory: 'B',
|
||||
colorFn: (_, __) => MaterialPalette.red.shadeDefault,
|
||||
domainFn: (MyRow row, _) => row.campaign,
|
||||
measureFn: (MyRow row, _) => row.clickCount,
|
||||
measureOffsetFn: (MyRow row, _) => 0,
|
||||
domainFn: (row, _) => row.campaign,
|
||||
measureFn: (row, _) => row.clickCount,
|
||||
measureOffsetFn: (row, _) => 0,
|
||||
data: myFakeTabletBData)),
|
||||
new MutableSeries<String>(new Series<MyRow, String>(
|
||||
MutableSeries<String>(Series<MyRow, String>(
|
||||
id: 'Mobile B',
|
||||
seriesCategory: 'B',
|
||||
colorFn: (_, __) => MaterialPalette.green.shadeDefault,
|
||||
domainFn: (MyRow row, _) => row.campaign,
|
||||
measureFn: (MyRow row, _) => row.clickCount,
|
||||
measureOffsetFn: (MyRow row, _) => 0,
|
||||
domainFn: (row, _) => row.campaign,
|
||||
measureFn: (row, _) => row.clickCount,
|
||||
measureOffsetFn: (row, _) => 0,
|
||||
data: myFakeMobileBData))
|
||||
];
|
||||
});
|
||||
@@ -218,7 +217,7 @@ void main() {
|
||||
group('preprocess', () {
|
||||
test('with grouped bars', () {
|
||||
renderer = makeRenderer(
|
||||
config: new BarRendererConfig(groupingType: BarGroupingType.grouped));
|
||||
config: BarRendererConfig(groupingType: BarGroupingType.grouped));
|
||||
|
||||
renderer.preprocessSeries(seriesList);
|
||||
|
||||
@@ -278,8 +277,8 @@ void main() {
|
||||
|
||||
test('with grouped stacked bars', () {
|
||||
renderer = makeRenderer(
|
||||
config: new BarRendererConfig(
|
||||
groupingType: BarGroupingType.groupedStacked));
|
||||
config:
|
||||
BarRendererConfig(groupingType: BarGroupingType.groupedStacked));
|
||||
|
||||
renderer.preprocessSeries(groupedStackedSeriesList);
|
||||
|
||||
@@ -390,7 +389,7 @@ void main() {
|
||||
|
||||
test('with stacked bars', () {
|
||||
renderer = makeRenderer(
|
||||
config: new BarRendererConfig(groupingType: BarGroupingType.stacked));
|
||||
config: BarRendererConfig(groupingType: BarGroupingType.stacked));
|
||||
|
||||
renderer.preprocessSeries(seriesList);
|
||||
|
||||
@@ -450,16 +449,16 @@ void main() {
|
||||
|
||||
test('with stacked bars containing zero and null', () {
|
||||
// Set up some nulls and zeros in the data.
|
||||
seriesList[2].data[0] = new MyRow('MyCampaign1', null);
|
||||
seriesList[2].data[2] = new MyRow('MyCampaign3', 0);
|
||||
seriesList[2].data[0] = MyRow('MyCampaign1', null);
|
||||
seriesList[2].data[2] = MyRow('MyCampaign3', 0);
|
||||
|
||||
seriesList[1].data[1] = new MyRow('MyCampaign2', null);
|
||||
seriesList[1].data[3] = new MyRow('MyOtherCampaign', 0);
|
||||
seriesList[1].data[1] = MyRow('MyCampaign2', null);
|
||||
seriesList[1].data[3] = MyRow('MyOtherCampaign', 0);
|
||||
|
||||
seriesList[0].data[2] = new MyRow('MyCampaign3', 0);
|
||||
seriesList[0].data[2] = MyRow('MyCampaign3', 0);
|
||||
|
||||
renderer = makeRenderer(
|
||||
config: new BarRendererConfig(groupingType: BarGroupingType.stacked));
|
||||
config: BarRendererConfig(groupingType: BarGroupingType.stacked));
|
||||
|
||||
renderer.preprocessSeries(seriesList);
|
||||
|
||||
@@ -547,7 +546,7 @@ void main() {
|
||||
group('preprocess weight pattern', () {
|
||||
test('with grouped bars', () {
|
||||
renderer = makeRenderer(
|
||||
config: new BarRendererConfig(
|
||||
config: BarRendererConfig(
|
||||
groupingType: BarGroupingType.grouped, weightPattern: [3, 2, 1]));
|
||||
|
||||
renderer.preprocessSeries(seriesList);
|
||||
@@ -612,7 +611,7 @@ void main() {
|
||||
|
||||
test('with grouped stacked bars', () {
|
||||
renderer = makeRenderer(
|
||||
config: new BarRendererConfig(
|
||||
config: BarRendererConfig(
|
||||
groupingType: BarGroupingType.groupedStacked,
|
||||
weightPattern: [2, 1]));
|
||||
|
||||
@@ -729,7 +728,7 @@ void main() {
|
||||
|
||||
test('with stacked bars - weightPattern not used', () {
|
||||
renderer = makeRenderer(
|
||||
config: new BarRendererConfig(
|
||||
config: BarRendererConfig(
|
||||
groupingType: BarGroupingType.stacked, weightPattern: [2, 1]));
|
||||
|
||||
renderer.preprocessSeries(seriesList);
|
||||
@@ -796,24 +795,24 @@ void main() {
|
||||
test('only include null in draw if animating from a non null measure', () {
|
||||
// Helper to create series list for this test only.
|
||||
List<MutableSeries<String>> _createSeriesList(List<MyRow> data) {
|
||||
final domainAxis = new MockAxis<dynamic>();
|
||||
final domainAxis = MockAxis<dynamic>();
|
||||
when(domainAxis.rangeBand).thenReturn(100.0);
|
||||
when(domainAxis.getLocation('MyCampaign1')).thenReturn(20.0);
|
||||
when(domainAxis.getLocation('MyCampaign2')).thenReturn(40.0);
|
||||
when(domainAxis.getLocation('MyCampaign3')).thenReturn(60.0);
|
||||
when(domainAxis.getLocation('MyOtherCampaign')).thenReturn(80.0);
|
||||
final measureAxis = new MockAxis<num>();
|
||||
final measureAxis = MockAxis<num>();
|
||||
when(measureAxis.getLocation(0)).thenReturn(0.0);
|
||||
when(measureAxis.getLocation(5)).thenReturn(5.0);
|
||||
when(measureAxis.getLocation(75)).thenReturn(75.0);
|
||||
when(measureAxis.getLocation(100)).thenReturn(100.0);
|
||||
|
||||
final color = new Color.fromHex(code: '#000000');
|
||||
final color = Color.fromHex(code: '#000000');
|
||||
|
||||
final series = new MutableSeries<String>(new Series<MyRow, String>(
|
||||
final series = MutableSeries<String>(Series<MyRow, String>(
|
||||
id: 'Desktop',
|
||||
domainFn: (MyRow row, _) => row.campaign,
|
||||
measureFn: (MyRow row, _) => row.clickCount,
|
||||
domainFn: (row, _) => row.campaign,
|
||||
measureFn: (row, _) => row.clickCount,
|
||||
measureOffsetFn: (_, __) => 0,
|
||||
colorFn: (_, __) => color,
|
||||
fillColorFn: (_, __) => color,
|
||||
@@ -825,26 +824,26 @@ void main() {
|
||||
return [series];
|
||||
}
|
||||
|
||||
final canvas = new MockCanvas();
|
||||
final canvas = MockCanvas();
|
||||
|
||||
final myDataWithNull = [
|
||||
new MyRow('MyCampaign1', 5),
|
||||
new MyRow('MyCampaign2', null),
|
||||
new MyRow('MyCampaign3', 100),
|
||||
new MyRow('MyOtherCampaign', 75),
|
||||
MyRow('MyCampaign1', 5),
|
||||
MyRow('MyCampaign2', null),
|
||||
MyRow('MyCampaign3', 100),
|
||||
MyRow('MyOtherCampaign', 75),
|
||||
];
|
||||
final seriesListWithNull = _createSeriesList(myDataWithNull);
|
||||
|
||||
final myDataWithMeasures = [
|
||||
new MyRow('MyCampaign1', 5),
|
||||
new MyRow('MyCampaign2', 0),
|
||||
new MyRow('MyCampaign3', 100),
|
||||
new MyRow('MyOtherCampaign', 75),
|
||||
MyRow('MyCampaign1', 5),
|
||||
MyRow('MyCampaign2', 0),
|
||||
MyRow('MyCampaign3', 100),
|
||||
MyRow('MyOtherCampaign', 75),
|
||||
];
|
||||
final seriesListWithMeasures = _createSeriesList(myDataWithMeasures);
|
||||
|
||||
final renderer = makeFakeRenderer(
|
||||
config: new BarRendererConfig(groupingType: BarGroupingType.grouped));
|
||||
config: BarRendererConfig(groupingType: BarGroupingType.grouped));
|
||||
|
||||
// Verify that only 3 bars are drawn for an initial draw with null data.
|
||||
renderer.preprocessSeries(seriesListWithNull);
|
||||
|
||||
@@ -66,10 +66,10 @@ void main() {
|
||||
// Convenience methods for creating mocks.
|
||||
/////////////////////////////////////////
|
||||
_configureBaseRenderer(BaseBarRenderer renderer, bool vertical) {
|
||||
final context = new MockContext();
|
||||
final context = MockContext();
|
||||
when(context.chartContainerIsRtl).thenReturn(false);
|
||||
when(context.isRtl).thenReturn(false);
|
||||
final verticalChart = new MockChart();
|
||||
final verticalChart = MockChart();
|
||||
when(verticalChart.vertical).thenReturn(vertical);
|
||||
when(verticalChart.context).thenReturn(context);
|
||||
renderer.onAttach(verticalChart);
|
||||
@@ -78,51 +78,51 @@ void main() {
|
||||
}
|
||||
|
||||
BarTargetLineRenderer makeRenderer({BarTargetLineRendererConfig config}) {
|
||||
final renderer = new BarTargetLineRenderer(config: config);
|
||||
final renderer = BarTargetLineRenderer(config: config);
|
||||
_configureBaseRenderer(renderer, true);
|
||||
return renderer;
|
||||
}
|
||||
|
||||
setUp(() {
|
||||
var myFakeDesktopData = [
|
||||
new MyRow('MyCampaign1', 5),
|
||||
new MyRow('MyCampaign2', 25),
|
||||
new MyRow('MyCampaign3', 100),
|
||||
new MyRow('MyOtherCampaign', 75),
|
||||
MyRow('MyCampaign1', 5),
|
||||
MyRow('MyCampaign2', 25),
|
||||
MyRow('MyCampaign3', 100),
|
||||
MyRow('MyOtherCampaign', 75),
|
||||
];
|
||||
|
||||
var myFakeTabletData = [
|
||||
new MyRow('MyCampaign1', 5),
|
||||
new MyRow('MyCampaign2', 25),
|
||||
new MyRow('MyCampaign3', 100),
|
||||
new MyRow('MyOtherCampaign', 75),
|
||||
MyRow('MyCampaign1', 5),
|
||||
MyRow('MyCampaign2', 25),
|
||||
MyRow('MyCampaign3', 100),
|
||||
MyRow('MyOtherCampaign', 75),
|
||||
];
|
||||
|
||||
var myFakeMobileData = [
|
||||
new MyRow('MyCampaign1', 5),
|
||||
new MyRow('MyCampaign2', 25),
|
||||
new MyRow('MyCampaign3', 100),
|
||||
new MyRow('MyOtherCampaign', 75),
|
||||
MyRow('MyCampaign1', 5),
|
||||
MyRow('MyCampaign2', 25),
|
||||
MyRow('MyCampaign3', 100),
|
||||
MyRow('MyOtherCampaign', 75),
|
||||
];
|
||||
|
||||
seriesList = [
|
||||
new MutableSeries<String>(new Series<MyRow, String>(
|
||||
MutableSeries<String>(Series<MyRow, String>(
|
||||
id: 'Desktop',
|
||||
domainFn: (MyRow row, _) => row.campaign,
|
||||
measureFn: (MyRow row, _) => row.clickCount,
|
||||
measureOffsetFn: (MyRow row, _) => 0,
|
||||
domainFn: (row, _) => row.campaign,
|
||||
measureFn: (row, _) => row.clickCount,
|
||||
measureOffsetFn: (row, _) => 0,
|
||||
data: myFakeDesktopData)),
|
||||
new MutableSeries<String>(new Series<MyRow, String>(
|
||||
MutableSeries<String>(Series<MyRow, String>(
|
||||
id: 'Tablet',
|
||||
domainFn: (MyRow row, _) => row.campaign,
|
||||
measureFn: (MyRow row, _) => row.clickCount,
|
||||
measureOffsetFn: (MyRow row, _) => 0,
|
||||
domainFn: (row, _) => row.campaign,
|
||||
measureFn: (row, _) => row.clickCount,
|
||||
measureOffsetFn: (row, _) => 0,
|
||||
data: myFakeTabletData)),
|
||||
new MutableSeries<String>(new Series<MyRow, String>(
|
||||
MutableSeries<String>(Series<MyRow, String>(
|
||||
id: 'Mobile',
|
||||
domainFn: (MyRow row, _) => row.campaign,
|
||||
measureFn: (MyRow row, _) => row.clickCount,
|
||||
measureOffsetFn: (MyRow row, _) => 0,
|
||||
domainFn: (row, _) => row.campaign,
|
||||
measureFn: (row, _) => row.clickCount,
|
||||
measureOffsetFn: (row, _) => 0,
|
||||
data: myFakeMobileData))
|
||||
];
|
||||
});
|
||||
@@ -130,7 +130,7 @@ void main() {
|
||||
group('preprocess', () {
|
||||
test('with grouped bar target lines', () {
|
||||
renderer = makeRenderer(
|
||||
config: new BarTargetLineRendererConfig(
|
||||
config: BarTargetLineRendererConfig(
|
||||
groupingType: BarGroupingType.grouped));
|
||||
|
||||
renderer.preprocessSeries(seriesList);
|
||||
@@ -194,7 +194,7 @@ void main() {
|
||||
|
||||
test('with stacked bar target lines', () {
|
||||
renderer = makeRenderer(
|
||||
config: new BarTargetLineRendererConfig(
|
||||
config: BarTargetLineRendererConfig(
|
||||
groupingType: BarGroupingType.stacked));
|
||||
|
||||
renderer.preprocessSeries(seriesList);
|
||||
@@ -258,16 +258,16 @@ void main() {
|
||||
|
||||
test('with stacked bar target lines containing zero and null', () {
|
||||
// Set up some nulls and zeros in the data.
|
||||
seriesList[2].data[0] = new MyRow('MyCampaign1', null);
|
||||
seriesList[2].data[2] = new MyRow('MyCampaign3', 0);
|
||||
seriesList[2].data[0] = MyRow('MyCampaign1', null);
|
||||
seriesList[2].data[2] = MyRow('MyCampaign3', 0);
|
||||
|
||||
seriesList[1].data[1] = new MyRow('MyCampaign2', null);
|
||||
seriesList[1].data[3] = new MyRow('MyOtherCampaign', 0);
|
||||
seriesList[1].data[1] = MyRow('MyCampaign2', null);
|
||||
seriesList[1].data[3] = MyRow('MyOtherCampaign', 0);
|
||||
|
||||
seriesList[0].data[2] = new MyRow('MyCampaign3', 0);
|
||||
seriesList[0].data[2] = MyRow('MyCampaign3', 0);
|
||||
|
||||
renderer = makeRenderer(
|
||||
config: new BarTargetLineRendererConfig(
|
||||
config: BarTargetLineRendererConfig(
|
||||
groupingType: BarGroupingType.stacked));
|
||||
|
||||
renderer.preprocessSeries(seriesList);
|
||||
@@ -367,7 +367,7 @@ void main() {
|
||||
|
||||
test('with stroke width target lines', () {
|
||||
renderer = makeRenderer(
|
||||
config: new BarTargetLineRendererConfig(
|
||||
config: BarTargetLineRendererConfig(
|
||||
groupingType: BarGroupingType.grouped, strokeWidthPx: 5.0));
|
||||
|
||||
renderer.preprocessSeries(seriesList);
|
||||
@@ -428,7 +428,7 @@ void main() {
|
||||
group('preprocess with weight pattern', () {
|
||||
test('with grouped bar target lines', () {
|
||||
renderer = makeRenderer(
|
||||
config: new BarTargetLineRendererConfig(
|
||||
config: BarTargetLineRendererConfig(
|
||||
groupingType: BarGroupingType.grouped, weightPattern: [3, 2, 1]));
|
||||
|
||||
renderer.preprocessSeries(seriesList);
|
||||
@@ -496,7 +496,7 @@ void main() {
|
||||
|
||||
test('with stacked bar target lines - weightPattern not used', () {
|
||||
renderer = makeRenderer(
|
||||
config: new BarTargetLineRendererConfig(
|
||||
config: BarTargetLineRendererConfig(
|
||||
groupingType: BarGroupingType.stacked, weightPattern: [2, 1]));
|
||||
|
||||
renderer.preprocessSeries(seriesList);
|
||||
@@ -566,24 +566,24 @@ void main() {
|
||||
test('only include null in draw if animating from a non null measure', () {
|
||||
// Helper to create series list for this test only.
|
||||
List<MutableSeries<String>> _createSeriesList(List<MyRow> data) {
|
||||
final domainAxis = new MockAxis<dynamic>();
|
||||
final domainAxis = MockAxis<dynamic>();
|
||||
when(domainAxis.rangeBand).thenReturn(100.0);
|
||||
when(domainAxis.getLocation('MyCampaign1')).thenReturn(20.0);
|
||||
when(domainAxis.getLocation('MyCampaign2')).thenReturn(40.0);
|
||||
when(domainAxis.getLocation('MyCampaign3')).thenReturn(60.0);
|
||||
when(domainAxis.getLocation('MyOtherCampaign')).thenReturn(80.0);
|
||||
final measureAxis = new MockAxis<num>();
|
||||
final measureAxis = MockAxis<num>();
|
||||
when(measureAxis.getLocation(0)).thenReturn(0.0);
|
||||
when(measureAxis.getLocation(5)).thenReturn(5.0);
|
||||
when(measureAxis.getLocation(75)).thenReturn(75.0);
|
||||
when(measureAxis.getLocation(100)).thenReturn(100.0);
|
||||
|
||||
final color = new Color.fromHex(code: '#000000');
|
||||
final color = Color.fromHex(code: '#000000');
|
||||
|
||||
final series = new MutableSeries<String>(new Series<MyRow, String>(
|
||||
final series = MutableSeries<String>(Series<MyRow, String>(
|
||||
id: 'Desktop',
|
||||
domainFn: (MyRow row, _) => row.campaign,
|
||||
measureFn: (MyRow row, _) => row.clickCount,
|
||||
domainFn: (row, _) => row.campaign,
|
||||
measureFn: (row, _) => row.clickCount,
|
||||
measureOffsetFn: (_, __) => 0,
|
||||
colorFn: (_, __) => color,
|
||||
fillColorFn: (_, __) => color,
|
||||
@@ -595,26 +595,26 @@ void main() {
|
||||
return [series];
|
||||
}
|
||||
|
||||
final canvas = new MockCanvas();
|
||||
final canvas = MockCanvas();
|
||||
|
||||
final myDataWithNull = [
|
||||
new MyRow('MyCampaign1', 5),
|
||||
new MyRow('MyCampaign2', null),
|
||||
new MyRow('MyCampaign3', 100),
|
||||
new MyRow('MyOtherCampaign', 75),
|
||||
MyRow('MyCampaign1', 5),
|
||||
MyRow('MyCampaign2', null),
|
||||
MyRow('MyCampaign3', 100),
|
||||
MyRow('MyOtherCampaign', 75),
|
||||
];
|
||||
final seriesListWithNull = _createSeriesList(myDataWithNull);
|
||||
|
||||
final myDataWithMeasures = [
|
||||
new MyRow('MyCampaign1', 5),
|
||||
new MyRow('MyCampaign2', 0),
|
||||
new MyRow('MyCampaign3', 100),
|
||||
new MyRow('MyOtherCampaign', 75),
|
||||
MyRow('MyCampaign1', 5),
|
||||
MyRow('MyCampaign2', 0),
|
||||
MyRow('MyCampaign3', 100),
|
||||
MyRow('MyOtherCampaign', 75),
|
||||
];
|
||||
final seriesListWithMeasures = _createSeriesList(myDataWithMeasures);
|
||||
|
||||
renderer = makeRenderer(
|
||||
config: new BarTargetLineRendererConfig(
|
||||
config: BarTargetLineRendererConfig(
|
||||
groupingType: BarGroupingType.grouped));
|
||||
|
||||
// Verify that only 3 lines are drawn for an initial draw with null data.
|
||||
|
||||
@@ -61,40 +61,40 @@ class MockDateTimeAxis extends Mock implements Axis<DateTime> {}
|
||||
class MockCanvas extends Mock implements ChartCanvas {}
|
||||
|
||||
void main() {
|
||||
final date0 = new DateTime(2018, 2, 1);
|
||||
final date1 = new DateTime(2018, 2, 7);
|
||||
final dateOutsideViewport = new DateTime(2018, 1, 1);
|
||||
final date0 = DateTime(2018, 2, 1);
|
||||
final date1 = DateTime(2018, 2, 7);
|
||||
final dateOutsideViewport = DateTime(2018, 1, 1);
|
||||
|
||||
/////////////////////////////////////////
|
||||
// Convenience methods for creating mocks.
|
||||
/////////////////////////////////////////
|
||||
_configureBaseRenderer(BaseBarRenderer renderer, bool vertical) {
|
||||
final context = new MockContext();
|
||||
final context = MockContext();
|
||||
when(context.chartContainerIsRtl).thenReturn(false);
|
||||
when(context.isRtl).thenReturn(false);
|
||||
final verticalChart = new MockChart();
|
||||
final verticalChart = MockChart();
|
||||
when(verticalChart.vertical).thenReturn(vertical);
|
||||
when(verticalChart.context).thenReturn(context);
|
||||
renderer.onAttach(verticalChart);
|
||||
|
||||
final layoutBounds = vertical
|
||||
? new Rectangle<int>(70, 20, 230, 100)
|
||||
: new Rectangle<int>(70, 20, 100, 230);
|
||||
? Rectangle<int>(70, 20, 230, 100)
|
||||
: Rectangle<int>(70, 20, 100, 230);
|
||||
renderer.layout(layoutBounds, layoutBounds);
|
||||
return renderer;
|
||||
}
|
||||
|
||||
BaseBarRenderer _makeBarRenderer({bool vertical, BarGroupingType groupType}) {
|
||||
final renderer =
|
||||
new BarRenderer(config: new BarRendererConfig(groupingType: groupType));
|
||||
BarRenderer(config: BarRendererConfig(groupingType: groupType));
|
||||
_configureBaseRenderer(renderer, vertical);
|
||||
return renderer;
|
||||
}
|
||||
|
||||
BaseBarRenderer _makeBarTargetRenderer(
|
||||
{bool vertical, BarGroupingType groupType}) {
|
||||
final renderer = new BarTargetLineRenderer(
|
||||
config: new BarTargetLineRendererConfig(groupingType: groupType));
|
||||
final renderer = BarTargetLineRenderer(
|
||||
config: BarTargetLineRendererConfig(groupingType: groupType));
|
||||
_configureBaseRenderer(renderer, vertical);
|
||||
return renderer;
|
||||
}
|
||||
@@ -102,11 +102,11 @@ void main() {
|
||||
MutableSeries _makeSeries(
|
||||
{String id, String seriesCategory, bool vertical = true}) {
|
||||
final data = <MyRow>[
|
||||
new MyRow('camp0', 10),
|
||||
new MyRow('camp1', 10),
|
||||
MyRow('camp0', 10),
|
||||
MyRow('camp1', 10),
|
||||
];
|
||||
|
||||
final series = new MutableSeries<String>(new Series(
|
||||
final series = MutableSeries<String>(Series(
|
||||
id: id,
|
||||
data: data,
|
||||
domainFn: (dynamic row, _) => row.campaign,
|
||||
@@ -115,10 +115,10 @@ void main() {
|
||||
));
|
||||
|
||||
series.measureOffsetFn = (_) => 0.0;
|
||||
series.colorFn = (_) => new Color.fromHex(code: '#000000');
|
||||
series.colorFn = (_) => Color.fromHex(code: '#000000');
|
||||
|
||||
// Mock the Domain axis results.
|
||||
final domainAxis = new MockOrdinalAxis();
|
||||
final domainAxis = MockOrdinalAxis();
|
||||
when(domainAxis.rangeBand).thenReturn(100.0);
|
||||
final domainOffset = vertical ? 70.0 : 20.0;
|
||||
when(domainAxis.getLocation('camp0'))
|
||||
@@ -140,7 +140,7 @@ void main() {
|
||||
series.setAttr(domainAxisKey, domainAxis);
|
||||
|
||||
// Mock the Measure axis results.
|
||||
final measureAxis = new MockNumericAxis();
|
||||
final measureAxis = MockNumericAxis();
|
||||
if (vertical) {
|
||||
when(measureAxis.getLocation(0.0)).thenReturn(20.0 + 100.0);
|
||||
when(measureAxis.getLocation(10.0)).thenReturn(20.0 + 100.0 - 10.0);
|
||||
@@ -158,11 +158,11 @@ void main() {
|
||||
MutableSeries _makeDateTimeSeries(
|
||||
{String id, String seriesCategory, bool vertical = true}) {
|
||||
final data = <MyDateTimeRow>[
|
||||
new MyDateTimeRow(date0, 10),
|
||||
new MyDateTimeRow(date1, 10),
|
||||
MyDateTimeRow(date0, 10),
|
||||
MyDateTimeRow(date1, 10),
|
||||
];
|
||||
|
||||
final series = new MutableSeries<DateTime>(new Series(
|
||||
final series = MutableSeries<DateTime>(Series(
|
||||
id: id,
|
||||
data: data,
|
||||
domainFn: (dynamic row, _) => row.time,
|
||||
@@ -171,10 +171,10 @@ void main() {
|
||||
));
|
||||
|
||||
series.measureOffsetFn = (_) => 0.0;
|
||||
series.colorFn = (_) => new Color.fromHex(code: '#000000');
|
||||
series.colorFn = (_) => Color.fromHex(code: '#000000');
|
||||
|
||||
// Mock the Domain axis results.
|
||||
final domainAxis = new MockDateTimeAxis();
|
||||
final domainAxis = MockDateTimeAxis();
|
||||
when(domainAxis.rangeBand).thenReturn(100.0);
|
||||
final domainOffset = vertical ? 70.0 : 20.0;
|
||||
when(domainAxis.getLocation(date0)).thenReturn(domainOffset + 10.0 + 50.0);
|
||||
@@ -185,7 +185,7 @@ void main() {
|
||||
series.setAttr(domainAxisKey, domainAxis);
|
||||
|
||||
// Mock the Measure axis results.
|
||||
final measureAxis = new MockNumericAxis();
|
||||
final measureAxis = MockNumericAxis();
|
||||
if (vertical) {
|
||||
when(measureAxis.getLocation(0.0)).thenReturn(20.0 + 100.0);
|
||||
when(measureAxis.getLocation(10.0)).thenReturn(20.0 + 100.0 - 10.0);
|
||||
@@ -221,11 +221,11 @@ void main() {
|
||||
renderer.configureSeries(seriesList);
|
||||
renderer.preprocessSeries(seriesList);
|
||||
renderer.update(seriesList, false);
|
||||
renderer.paint(new MockCanvas(), 1.0);
|
||||
renderer.paint(MockCanvas(), 1.0);
|
||||
|
||||
// Act
|
||||
final details = renderer.getNearestDatumDetailPerSeries(
|
||||
new Point<double>(70.0 + 10.0 + 20.0, 20.0 + 100.0 - 5.0),
|
||||
Point<double>(70.0 + 10.0 + 20.0, 20.0 + 100.0 - 5.0),
|
||||
selectNearestByDomain,
|
||||
null);
|
||||
|
||||
@@ -251,11 +251,11 @@ void main() {
|
||||
renderer.configureSeries(seriesList);
|
||||
renderer.preprocessSeries(seriesList);
|
||||
renderer.update(seriesList, false);
|
||||
renderer.paint(new MockCanvas(), 1.0);
|
||||
renderer.paint(MockCanvas(), 1.0);
|
||||
|
||||
// Act
|
||||
final details = renderer.getNearestDatumDetailPerSeries(
|
||||
new Point<double>(70.0 + 10.0 + 20.0, 20.0 + 100.0 - 5.0),
|
||||
Point<double>(70.0 + 10.0 + 20.0, 20.0 + 100.0 - 5.0),
|
||||
selectNearestByDomain,
|
||||
null);
|
||||
|
||||
@@ -274,11 +274,11 @@ void main() {
|
||||
renderer.configureSeries(seriesList);
|
||||
renderer.preprocessSeries(seriesList);
|
||||
renderer.update(seriesList, false);
|
||||
renderer.paint(new MockCanvas(), 1.0);
|
||||
renderer.paint(MockCanvas(), 1.0);
|
||||
|
||||
// Act
|
||||
final details = renderer.getNearestDatumDetailPerSeries(
|
||||
new Point<double>(70.0 + 10.0 + 20.0, 20.0 + 100.0 - 5.0),
|
||||
Point<double>(70.0 + 10.0 + 20.0, 20.0 + 100.0 - 5.0),
|
||||
selectNearestByDomain,
|
||||
null);
|
||||
|
||||
@@ -304,11 +304,11 @@ void main() {
|
||||
renderer.configureSeries(seriesList);
|
||||
renderer.preprocessSeries(seriesList);
|
||||
renderer.update(seriesList, false);
|
||||
renderer.paint(new MockCanvas(), 1.0);
|
||||
renderer.paint(MockCanvas(), 1.0);
|
||||
|
||||
// Act
|
||||
final details = renderer.getNearestDatumDetailPerSeries(
|
||||
new Point<double>(70.0 + 10.0 + 20.0, 20.0 + 100.0 - 5.0),
|
||||
Point<double>(70.0 + 10.0 + 20.0, 20.0 + 100.0 - 5.0),
|
||||
selectNearestByDomain,
|
||||
null);
|
||||
|
||||
@@ -329,11 +329,11 @@ void main() {
|
||||
renderer.configureSeries(seriesList);
|
||||
renderer.preprocessSeries(seriesList);
|
||||
renderer.update(seriesList, false);
|
||||
renderer.paint(new MockCanvas(), 1.0);
|
||||
renderer.paint(MockCanvas(), 1.0);
|
||||
|
||||
// Act
|
||||
final details = renderer.getNearestDatumDetailPerSeries(
|
||||
new Point<double>(70.0 + 10.0 + 13.0, 20.0 + 100.0 - 5.0),
|
||||
Point<double>(70.0 + 10.0 + 13.0, 20.0 + 100.0 - 5.0),
|
||||
selectNearestByDomain,
|
||||
null);
|
||||
|
||||
@@ -358,11 +358,11 @@ void main() {
|
||||
renderer.configureSeries(seriesList);
|
||||
renderer.preprocessSeries(seriesList);
|
||||
renderer.update(seriesList, false);
|
||||
renderer.paint(new MockCanvas(), 1.0);
|
||||
renderer.paint(MockCanvas(), 1.0);
|
||||
|
||||
// Act
|
||||
final details = renderer.getNearestDatumDetailPerSeries(
|
||||
new Point<double>(70.0 + 10.0 + 20.0, 20.0 + 100.0 - 5.0),
|
||||
Point<double>(70.0 + 10.0 + 20.0, 20.0 + 100.0 - 5.0),
|
||||
selectNearestByDomain,
|
||||
null);
|
||||
|
||||
@@ -395,11 +395,11 @@ void main() {
|
||||
renderer.configureSeries(seriesList);
|
||||
renderer.preprocessSeries(seriesList);
|
||||
renderer.update(seriesList, false);
|
||||
renderer.paint(new MockCanvas(), 1.0);
|
||||
renderer.paint(MockCanvas(), 1.0);
|
||||
|
||||
// Act
|
||||
final details = renderer.getNearestDatumDetailPerSeries(
|
||||
new Point<double>(70.0 + 10.0 + 13.0, 20.0 + 100.0 - 5.0),
|
||||
Point<double>(70.0 + 10.0 + 13.0, 20.0 + 100.0 - 5.0),
|
||||
selectNearestByDomain,
|
||||
null);
|
||||
|
||||
@@ -435,11 +435,11 @@ void main() {
|
||||
renderer.configureSeries(seriesList);
|
||||
renderer.preprocessSeries(seriesList);
|
||||
renderer.update(seriesList, false);
|
||||
renderer.paint(new MockCanvas(), 1.0);
|
||||
renderer.paint(MockCanvas(), 1.0);
|
||||
|
||||
// Act
|
||||
final details = renderer.getNearestDatumDetailPerSeries(
|
||||
new Point<double>(70.0 + 10.0 + 20.0, 20.0 + 100.0 - 5.0),
|
||||
Point<double>(70.0 + 10.0 + 20.0, 20.0 + 100.0 - 5.0),
|
||||
selectNearestByDomain,
|
||||
null);
|
||||
|
||||
@@ -484,13 +484,11 @@ void main() {
|
||||
renderer.configureSeries(seriesList);
|
||||
renderer.preprocessSeries(seriesList);
|
||||
renderer.update(seriesList, false);
|
||||
renderer.paint(new MockCanvas(), 1.0);
|
||||
renderer.paint(MockCanvas(), 1.0);
|
||||
|
||||
// Act
|
||||
final details = renderer.getNearestDatumDetailPerSeries(
|
||||
new Point<double>(70.0 + 10.0 + 13.0, 20.0),
|
||||
selectNearestByDomain,
|
||||
null);
|
||||
Point<double>(70.0 + 10.0 + 13.0, 20.0), selectNearestByDomain, null);
|
||||
|
||||
// Verify
|
||||
expect(details.length, equals(1));
|
||||
@@ -513,11 +511,11 @@ void main() {
|
||||
renderer.configureSeries(seriesList);
|
||||
renderer.preprocessSeries(seriesList);
|
||||
renderer.update(seriesList, false);
|
||||
renderer.paint(new MockCanvas(), 1.0);
|
||||
renderer.paint(MockCanvas(), 1.0);
|
||||
|
||||
// Act
|
||||
final details = renderer.getNearestDatumDetailPerSeries(
|
||||
new Point<double>(70.0 + 10.0 + 50.0, 20.0 + 100.0 - 5.0),
|
||||
Point<double>(70.0 + 10.0 + 50.0, 20.0 + 100.0 - 5.0),
|
||||
selectNearestByDomain,
|
||||
null);
|
||||
|
||||
@@ -544,19 +542,17 @@ void main() {
|
||||
final renderer =
|
||||
_makeBarRenderer(vertical: true, groupType: BarGroupingType.grouped);
|
||||
final seriesList = <MutableSeries>[
|
||||
_makeSeries(id: 'foo')..data.add(new MyRow('outsideViewport', 20))
|
||||
_makeSeries(id: 'foo')..data.add(MyRow('outsideViewport', 20))
|
||||
];
|
||||
renderer.configureSeries(seriesList);
|
||||
renderer.preprocessSeries(seriesList);
|
||||
renderer.update(seriesList, false);
|
||||
renderer.paint(new MockCanvas(), 1.0);
|
||||
renderer.paint(MockCanvas(), 1.0);
|
||||
|
||||
// Act
|
||||
// Note: point is in the axis, over a bar outside of the viewport.
|
||||
final details = renderer.getNearestDatumDetailPerSeries(
|
||||
new Point<double>(65.0, 20.0 + 100.0 - 5.0),
|
||||
selectNearestByDomain,
|
||||
null);
|
||||
Point<double>(65.0, 20.0 + 100.0 - 5.0), selectNearestByDomain, null);
|
||||
|
||||
// Verify
|
||||
expect(details.length, equals(0));
|
||||
@@ -577,11 +573,11 @@ void main() {
|
||||
renderer.configureSeries(seriesList);
|
||||
renderer.preprocessSeries(seriesList);
|
||||
renderer.update(seriesList, false);
|
||||
renderer.paint(new MockCanvas(), 1.0);
|
||||
renderer.paint(MockCanvas(), 1.0);
|
||||
|
||||
// Act
|
||||
final details = renderer.getNearestDatumDetailPerSeries(
|
||||
new Point<double>(70.0 + 5.0, 20.0 + 10.0 + 13.0),
|
||||
Point<double>(70.0 + 5.0, 20.0 + 10.0 + 13.0),
|
||||
selectNearestByDomain,
|
||||
null);
|
||||
|
||||
@@ -606,11 +602,11 @@ void main() {
|
||||
renderer.configureSeries(seriesList);
|
||||
renderer.preprocessSeries(seriesList);
|
||||
renderer.update(seriesList, false);
|
||||
renderer.paint(new MockCanvas(), 1.0);
|
||||
renderer.paint(MockCanvas(), 1.0);
|
||||
|
||||
// Act
|
||||
final details = renderer.getNearestDatumDetailPerSeries(
|
||||
new Point<double>(70.0 + 5.0, 20.0 + 10.0 + 20.0),
|
||||
Point<double>(70.0 + 5.0, 20.0 + 10.0 + 20.0),
|
||||
selectNearestByDomain,
|
||||
null);
|
||||
|
||||
@@ -643,11 +639,11 @@ void main() {
|
||||
renderer.configureSeries(seriesList);
|
||||
renderer.preprocessSeries(seriesList);
|
||||
renderer.update(seriesList, false);
|
||||
renderer.paint(new MockCanvas(), 1.0);
|
||||
renderer.paint(MockCanvas(), 1.0);
|
||||
|
||||
// Act
|
||||
final details = renderer.getNearestDatumDetailPerSeries(
|
||||
new Point<double>(70.0 + 5.0, 20.0 + 10.0 + 20.0),
|
||||
Point<double>(70.0 + 5.0, 20.0 + 10.0 + 20.0),
|
||||
selectNearestByDomain,
|
||||
null);
|
||||
|
||||
@@ -682,11 +678,11 @@ void main() {
|
||||
renderer.configureSeries(seriesList);
|
||||
renderer.preprocessSeries(seriesList);
|
||||
renderer.update(seriesList, false);
|
||||
renderer.paint(new MockCanvas(), 1.0);
|
||||
renderer.paint(MockCanvas(), 1.0);
|
||||
|
||||
// Act
|
||||
final details = renderer.getNearestDatumDetailPerSeries(
|
||||
new Point<double>(70.0 + 5.0, 20.0 + 10.0 + 20.0),
|
||||
Point<double>(70.0 + 5.0, 20.0 + 10.0 + 20.0),
|
||||
selectNearestByDomain,
|
||||
null);
|
||||
|
||||
@@ -732,11 +728,11 @@ void main() {
|
||||
renderer.configureSeries(seriesList);
|
||||
renderer.preprocessSeries(seriesList);
|
||||
renderer.update(seriesList, false);
|
||||
renderer.paint(new MockCanvas(), 1.0);
|
||||
renderer.paint(MockCanvas(), 1.0);
|
||||
|
||||
// Act
|
||||
final details = renderer.getNearestDatumDetailPerSeries(
|
||||
new Point<double>(70.0 + 100.0, 20.0 + 10.0 + 20.0),
|
||||
Point<double>(70.0 + 100.0, 20.0 + 10.0 + 20.0),
|
||||
selectNearestByDomain,
|
||||
null);
|
||||
|
||||
@@ -761,11 +757,11 @@ void main() {
|
||||
renderer.configureSeries(seriesList);
|
||||
renderer.preprocessSeries(seriesList);
|
||||
renderer.update(seriesList, false);
|
||||
renderer.paint(new MockCanvas(), 1.0);
|
||||
renderer.paint(MockCanvas(), 1.0);
|
||||
|
||||
// Act
|
||||
final details = renderer.getNearestDatumDetailPerSeries(
|
||||
new Point<double>(70.0 + 5.0, 20.0 + 10.0 + 50.0),
|
||||
Point<double>(70.0 + 5.0, 20.0 + 10.0 + 50.0),
|
||||
selectNearestByDomain,
|
||||
null);
|
||||
|
||||
@@ -800,13 +796,11 @@ void main() {
|
||||
renderer.configureSeries(seriesList);
|
||||
renderer.preprocessSeries(seriesList);
|
||||
renderer.update(seriesList, false);
|
||||
renderer.paint(new MockCanvas(), 1.0);
|
||||
renderer.paint(MockCanvas(), 1.0);
|
||||
|
||||
// Act
|
||||
final details = renderer.getNearestDatumDetailPerSeries(
|
||||
new Point<double>(70.0 + 10.0 + 13.0, 20.0),
|
||||
selectNearestByDomain,
|
||||
null);
|
||||
Point<double>(70.0 + 10.0 + 13.0, 20.0), selectNearestByDomain, null);
|
||||
|
||||
// Verify
|
||||
expect(details.length, equals(1));
|
||||
@@ -829,11 +823,11 @@ void main() {
|
||||
renderer.configureSeries(seriesList);
|
||||
renderer.preprocessSeries(seriesList);
|
||||
renderer.update(seriesList, false);
|
||||
renderer.paint(new MockCanvas(), 1.0);
|
||||
renderer.paint(MockCanvas(), 1.0);
|
||||
|
||||
// Act
|
||||
final details = renderer.getNearestDatumDetailPerSeries(
|
||||
new Point<double>(70.0 + 10.0 + 20.0, 20.0 + 100.0 - 5.0),
|
||||
Point<double>(70.0 + 10.0 + 20.0, 20.0 + 100.0 - 5.0),
|
||||
selectNearestByDomain,
|
||||
null);
|
||||
|
||||
@@ -866,11 +860,11 @@ void main() {
|
||||
renderer.configureSeries(seriesList);
|
||||
renderer.preprocessSeries(seriesList);
|
||||
renderer.update(seriesList, false);
|
||||
renderer.paint(new MockCanvas(), 1.0);
|
||||
renderer.paint(MockCanvas(), 1.0);
|
||||
|
||||
// Act
|
||||
final details = renderer.getNearestDatumDetailPerSeries(
|
||||
new Point<double>(70.0 + 10.0 + 13.0, 20.0 + 100.0 - 5.0),
|
||||
Point<double>(70.0 + 10.0 + 13.0, 20.0 + 100.0 - 5.0),
|
||||
selectNearestByDomain,
|
||||
null);
|
||||
|
||||
@@ -906,11 +900,11 @@ void main() {
|
||||
renderer.configureSeries(seriesList);
|
||||
renderer.preprocessSeries(seriesList);
|
||||
renderer.update(seriesList, false);
|
||||
renderer.paint(new MockCanvas(), 1.0);
|
||||
renderer.paint(MockCanvas(), 1.0);
|
||||
|
||||
// Act
|
||||
final details = renderer.getNearestDatumDetailPerSeries(
|
||||
new Point<double>(70.0 + 10.0 + 20.0, 20.0 + 100.0 - 5.0),
|
||||
Point<double>(70.0 + 10.0 + 20.0, 20.0 + 100.0 - 5.0),
|
||||
selectNearestByDomain,
|
||||
null);
|
||||
|
||||
@@ -958,11 +952,11 @@ void main() {
|
||||
renderer.configureSeries(seriesList);
|
||||
renderer.preprocessSeries(seriesList);
|
||||
renderer.update(seriesList, false);
|
||||
renderer.paint(new MockCanvas(), 1.0);
|
||||
renderer.paint(MockCanvas(), 1.0);
|
||||
|
||||
// Act
|
||||
final details = renderer.getNearestDatumDetailPerSeries(
|
||||
new Point<double>(70.0 + 10.0 + 50.0, 20.0 + 100.0 - 5.0),
|
||||
Point<double>(70.0 + 10.0 + 50.0, 20.0 + 100.0 - 5.0),
|
||||
selectNearestByDomain,
|
||||
null);
|
||||
|
||||
@@ -989,19 +983,17 @@ void main() {
|
||||
final renderer = _makeBarTargetRenderer(
|
||||
vertical: true, groupType: BarGroupingType.grouped);
|
||||
final seriesList = <MutableSeries>[
|
||||
_makeSeries(id: 'foo')..data.add(new MyRow('outsideViewport', 20))
|
||||
_makeSeries(id: 'foo')..data.add(MyRow('outsideViewport', 20))
|
||||
];
|
||||
renderer.configureSeries(seriesList);
|
||||
renderer.preprocessSeries(seriesList);
|
||||
renderer.update(seriesList, false);
|
||||
renderer.paint(new MockCanvas(), 1.0);
|
||||
renderer.paint(MockCanvas(), 1.0);
|
||||
|
||||
// Act
|
||||
// Note: point is in the axis, over a bar outside of the viewport.
|
||||
final details = renderer.getNearestDatumDetailPerSeries(
|
||||
new Point<double>(65.0, 20.0 + 100.0 - 5.0),
|
||||
selectNearestByDomain,
|
||||
null);
|
||||
Point<double>(65.0, 20.0 + 100.0 - 5.0), selectNearestByDomain, null);
|
||||
|
||||
// Verify
|
||||
expect(details.length, equals(0));
|
||||
@@ -1022,11 +1014,11 @@ void main() {
|
||||
renderer.configureSeries(seriesList);
|
||||
renderer.preprocessSeries(seriesList);
|
||||
renderer.update(seriesList, false);
|
||||
renderer.paint(new MockCanvas(), 1.0);
|
||||
renderer.paint(MockCanvas(), 1.0);
|
||||
|
||||
// Act
|
||||
final details = renderer.getNearestDatumDetailPerSeries(
|
||||
new Point<double>(70.0 + 100.0, 20.0 + 10.0 + 20.0),
|
||||
Point<double>(70.0 + 100.0, 20.0 + 10.0 + 20.0),
|
||||
selectNearestByDomain,
|
||||
null);
|
||||
|
||||
@@ -1051,11 +1043,11 @@ void main() {
|
||||
renderer.configureSeries(seriesList);
|
||||
renderer.preprocessSeries(seriesList);
|
||||
renderer.update(seriesList, false);
|
||||
renderer.paint(new MockCanvas(), 1.0);
|
||||
renderer.paint(MockCanvas(), 1.0);
|
||||
|
||||
// Act
|
||||
final details = renderer.getNearestDatumDetailPerSeries(
|
||||
new Point<double>(70.0 + 5.0, 20.0 + 10.0 + 20.0),
|
||||
Point<double>(70.0 + 5.0, 20.0 + 10.0 + 20.0),
|
||||
selectNearestByDomain,
|
||||
null);
|
||||
|
||||
@@ -1088,11 +1080,11 @@ void main() {
|
||||
renderer.configureSeries(seriesList);
|
||||
renderer.preprocessSeries(seriesList);
|
||||
renderer.update(seriesList, false);
|
||||
renderer.paint(new MockCanvas(), 1.0);
|
||||
renderer.paint(MockCanvas(), 1.0);
|
||||
|
||||
// Act
|
||||
final details = renderer.getNearestDatumDetailPerSeries(
|
||||
new Point<double>(70.0 + 5.0, 20.0 + 10.0 + 20.0),
|
||||
Point<double>(70.0 + 5.0, 20.0 + 10.0 + 20.0),
|
||||
selectNearestByDomain,
|
||||
null);
|
||||
|
||||
@@ -1127,11 +1119,11 @@ void main() {
|
||||
renderer.configureSeries(seriesList);
|
||||
renderer.preprocessSeries(seriesList);
|
||||
renderer.update(seriesList, false);
|
||||
renderer.paint(new MockCanvas(), 1.0);
|
||||
renderer.paint(MockCanvas(), 1.0);
|
||||
|
||||
// Act
|
||||
final details = renderer.getNearestDatumDetailPerSeries(
|
||||
new Point<double>(70.0 + 5.0, 20.0 + 10.0 + 20.0),
|
||||
Point<double>(70.0 + 5.0, 20.0 + 10.0 + 20.0),
|
||||
selectNearestByDomain,
|
||||
null);
|
||||
|
||||
@@ -1178,11 +1170,11 @@ void main() {
|
||||
renderer.configureSeries(seriesList);
|
||||
renderer.preprocessSeries(seriesList);
|
||||
renderer.update(seriesList, false);
|
||||
renderer.paint(new MockCanvas(), 1.0);
|
||||
renderer.paint(MockCanvas(), 1.0);
|
||||
|
||||
// Act
|
||||
final details = renderer.getNearestDatumDetailPerSeries(
|
||||
new Point<double>(70.0 + 5.0, 20.0 + 10.0 + 50.0),
|
||||
Point<double>(70.0 + 5.0, 20.0 + 10.0 + 50.0),
|
||||
selectNearestByDomain,
|
||||
null);
|
||||
|
||||
@@ -1217,11 +1209,11 @@ void main() {
|
||||
renderer.configureSeries(seriesList);
|
||||
renderer.preprocessSeries(seriesList);
|
||||
renderer.update(seriesList, false);
|
||||
renderer.paint(new MockCanvas(), 1.0);
|
||||
renderer.paint(MockCanvas(), 1.0);
|
||||
|
||||
// Act
|
||||
final details = renderer.getNearestDatumDetailPerSeries(
|
||||
new Point<double>(70.0 + 10.0 + 13.0, 20.0 + 100.0 - 5.0),
|
||||
Point<double>(70.0 + 10.0 + 13.0, 20.0 + 100.0 - 5.0),
|
||||
selectNearestByDomain,
|
||||
null);
|
||||
|
||||
@@ -1246,11 +1238,11 @@ void main() {
|
||||
renderer.configureSeries(seriesList);
|
||||
renderer.preprocessSeries(seriesList);
|
||||
renderer.update(seriesList, false);
|
||||
renderer.paint(new MockCanvas(), 1.0);
|
||||
renderer.paint(MockCanvas(), 1.0);
|
||||
|
||||
// Act
|
||||
final details = renderer.getNearestDatumDetailPerSeries(
|
||||
new Point<double>(70.0 + 10.0 + 20.0, 20.0 + 100.0 - 5.0),
|
||||
Point<double>(70.0 + 10.0 + 20.0, 20.0 + 100.0 - 5.0),
|
||||
selectNearestByDomain,
|
||||
null);
|
||||
|
||||
@@ -1283,11 +1275,11 @@ void main() {
|
||||
renderer.configureSeries(seriesList);
|
||||
renderer.preprocessSeries(seriesList);
|
||||
renderer.update(seriesList, false);
|
||||
renderer.paint(new MockCanvas(), 1.0);
|
||||
renderer.paint(MockCanvas(), 1.0);
|
||||
|
||||
// Act
|
||||
final details = renderer.getNearestDatumDetailPerSeries(
|
||||
new Point<double>(70.0 + 10.0 + 13.0, 20.0 + 100.0 - 5.0),
|
||||
Point<double>(70.0 + 10.0 + 13.0, 20.0 + 100.0 - 5.0),
|
||||
selectNearestByDomain,
|
||||
null);
|
||||
|
||||
@@ -1323,11 +1315,11 @@ void main() {
|
||||
renderer.configureSeries(seriesList);
|
||||
renderer.preprocessSeries(seriesList);
|
||||
renderer.update(seriesList, false);
|
||||
renderer.paint(new MockCanvas(), 1.0);
|
||||
renderer.paint(MockCanvas(), 1.0);
|
||||
|
||||
// Act
|
||||
final details = renderer.getNearestDatumDetailPerSeries(
|
||||
new Point<double>(70.0 + 10.0 + 20.0, 20.0 + 100.0 - 5.0),
|
||||
Point<double>(70.0 + 10.0 + 20.0, 20.0 + 100.0 - 5.0),
|
||||
selectNearestByDomain,
|
||||
null);
|
||||
|
||||
@@ -1375,11 +1367,11 @@ void main() {
|
||||
renderer.configureSeries(seriesList);
|
||||
renderer.preprocessSeries(seriesList);
|
||||
renderer.update(seriesList, false);
|
||||
renderer.paint(new MockCanvas(), 1.0);
|
||||
renderer.paint(MockCanvas(), 1.0);
|
||||
|
||||
// Act
|
||||
final details = renderer.getNearestDatumDetailPerSeries(
|
||||
new Point<double>(70.0 + 10.0 + 50.0, 20.0 + 100.0 - 5.0),
|
||||
Point<double>(70.0 + 10.0 + 50.0, 20.0 + 100.0 - 5.0),
|
||||
selectNearestByDomain,
|
||||
null);
|
||||
|
||||
@@ -1407,19 +1399,17 @@ void main() {
|
||||
vertical: true, groupType: BarGroupingType.grouped);
|
||||
final seriesList = <MutableSeries>[
|
||||
_makeDateTimeSeries(id: 'foo')
|
||||
..data.add(new MyDateTimeRow(dateOutsideViewport, 20))
|
||||
..data.add(MyDateTimeRow(dateOutsideViewport, 20))
|
||||
];
|
||||
renderer.configureSeries(seriesList);
|
||||
renderer.preprocessSeries(seriesList);
|
||||
renderer.update(seriesList, false);
|
||||
renderer.paint(new MockCanvas(), 1.0);
|
||||
renderer.paint(MockCanvas(), 1.0);
|
||||
|
||||
// Act
|
||||
// Note: point is in the axis, over a bar outside of the viewport.
|
||||
final details = renderer.getNearestDatumDetailPerSeries(
|
||||
new Point<double>(65.0, 20.0 + 100.0 - 5.0),
|
||||
selectNearestByDomain,
|
||||
null);
|
||||
Point<double>(65.0, 20.0 + 100.0 - 5.0), selectNearestByDomain, null);
|
||||
|
||||
// Verify
|
||||
expect(details.length, equals(0));
|
||||
|
||||
Reference in New Issue
Block a user