mirror of
https://github.com/flutter/samples.git
synced 2025-11-11 15:28:44 +00:00
Web charts common update (#111)
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user