1
0
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:
Brett Morgan
2019-07-10 06:37:53 +10:00
committed by GitHub
parent eac7833d1d
commit 3af5bbf125
145 changed files with 2491 additions and 2687 deletions

View File

@@ -56,47 +56,43 @@ void main() {
setUp(() {
myFakeDesktopData = [
new MyRow(
'MyCampaign1', 1, 5, MaterialPalette.blue.shadeDefault, null, 2.0),
new MyRow(
MyRow('MyCampaign1', 1, 5, MaterialPalette.blue.shadeDefault, null, 2.0),
MyRow(
'MyCampaign2', 2, 25, MaterialPalette.green.shadeDefault, null, 2.0),
new MyRow(
'MyCampaign3', 3, 100, MaterialPalette.red.shadeDefault, null, 2.0),
new MyRow('MyOtherCampaign', 4, 75, MaterialPalette.red.shadeDefault,
null, 2.0),
MyRow('MyCampaign3', 3, 100, MaterialPalette.red.shadeDefault, null, 2.0),
MyRow('MyOtherCampaign', 4, 75, MaterialPalette.red.shadeDefault, null,
2.0),
];
myFakeTabletData = [
new MyRow(
MyRow(
'MyCampaign1', 1, 5, MaterialPalette.blue.shadeDefault, [2, 2], 2.0),
new MyRow(
MyRow(
'MyCampaign2', 2, 25, MaterialPalette.blue.shadeDefault, [3, 3], 2.0),
new MyRow('MyCampaign3', 3, 100, MaterialPalette.blue.shadeDefault,
[4, 4], 2.0),
new MyRow('MyOtherCampaign', 4, 75, MaterialPalette.blue.shadeDefault,
[4, 4], 2.0),
MyRow('MyCampaign3', 3, 100, MaterialPalette.blue.shadeDefault, [4, 4],
2.0),
MyRow('MyOtherCampaign', 4, 75, MaterialPalette.blue.shadeDefault, [4, 4],
2.0),
];
myFakeMobileData = [
new MyRow(
'MyCampaign1', 1, 5, MaterialPalette.blue.shadeDefault, null, 2.0),
new MyRow(
'MyCampaign2', 2, 25, MaterialPalette.blue.shadeDefault, null, 3.0),
new MyRow(
MyRow('MyCampaign1', 1, 5, MaterialPalette.blue.shadeDefault, null, 2.0),
MyRow('MyCampaign2', 2, 25, MaterialPalette.blue.shadeDefault, null, 3.0),
MyRow(
'MyCampaign3', 3, 100, MaterialPalette.blue.shadeDefault, null, 4.0),
new MyRow('MyOtherCampaign', 4, 75, MaterialPalette.blue.shadeDefault,
null, 4.0),
MyRow('MyOtherCampaign', 4, 75, MaterialPalette.blue.shadeDefault, null,
4.0),
];
numericSeriesList = [
new MutableSeries<int>(new Series<MyRow, int>(
MutableSeries<int>(Series<MyRow, int>(
id: 'Desktop',
colorFn: (_, __) => MaterialPalette.blue.shadeDefault,
domainFn: (dynamic row, _) => row.campaign,
measureFn: (dynamic row, _) => row.clickCount,
measureOffsetFn: (_, __) => 0,
data: myFakeDesktopData)),
new MutableSeries<int>(new Series<MyRow, int>(
MutableSeries<int>(Series<MyRow, int>(
id: 'Tablet',
colorFn: (_, __) => MaterialPalette.red.shadeDefault,
domainFn: (dynamic row, _) => row.campaign,
@@ -104,7 +100,7 @@ void main() {
measureOffsetFn: (_, __) => 0,
strokeWidthPxFn: (_, __) => 1.25,
data: myFakeTabletData)),
new MutableSeries<int>(new Series<MyRow, int>(
MutableSeries<int>(Series<MyRow, int>(
id: 'Mobile',
colorFn: (_, __) => MaterialPalette.green.shadeDefault,
domainFn: (dynamic row, _) => row.campaign,
@@ -115,14 +111,14 @@ void main() {
];
ordinalSeriesList = [
new MutableSeries<String>(new Series<MyRow, String>(
MutableSeries<String>(Series<MyRow, String>(
id: 'Desktop',
colorFn: (_, __) => MaterialPalette.blue.shadeDefault,
domainFn: (dynamic row, _) => row.campaignString,
measureFn: (dynamic row, _) => row.clickCount,
measureOffsetFn: (_, __) => 0,
data: myFakeDesktopData)),
new MutableSeries<String>(new Series<MyRow, String>(
MutableSeries<String>(Series<MyRow, String>(
id: 'Tablet',
colorFn: (_, __) => MaterialPalette.red.shadeDefault,
domainFn: (dynamic row, _) => row.campaignString,
@@ -130,7 +126,7 @@ void main() {
measureOffsetFn: (_, __) => 0,
strokeWidthPxFn: (_, __) => 1.25,
data: myFakeTabletData)),
new MutableSeries<String>(new Series<MyRow, String>(
MutableSeries<String>(Series<MyRow, String>(
id: 'Mobile',
colorFn: (_, __) => MaterialPalette.green.shadeDefault,
domainFn: (dynamic row, _) => row.campaignString,
@@ -143,8 +139,8 @@ void main() {
group('preprocess', () {
test('with numeric data and simple lines', () {
renderer = new LineRenderer<num>(
config: new LineRendererConfig(strokeWidthPx: 2.0));
renderer =
LineRenderer<num>(config: LineRendererConfig(strokeWidthPx: 2.0));
renderer.configureSeries(numericSeriesList);
renderer.preprocessSeries(numericSeriesList);
@@ -207,8 +203,8 @@ void main() {
});
test('with numeric data and stacked lines', () {
renderer = new LineRenderer<num>(
config: new LineRendererConfig(stacked: true, strokeWidthPx: 2.0));
renderer = LineRenderer<num>(
config: LineRendererConfig(stacked: true, strokeWidthPx: 2.0));
renderer.configureSeries(numericSeriesList);
renderer.preprocessSeries(numericSeriesList);
@@ -272,37 +268,37 @@ void main() {
test('with numeric data and changes in style', () {
numericSeriesList = [
new MutableSeries<int>(new Series<MyRow, int>(
MutableSeries<int>(Series<MyRow, int>(
id: 'Desktop',
colorFn: (MyRow row, _) => row.color,
dashPatternFn: (MyRow row, _) => row.dashPattern,
strokeWidthPxFn: (MyRow row, _) => row.strokeWidthPx,
colorFn: (row, _) => row.color,
dashPatternFn: (row, _) => row.dashPattern,
strokeWidthPxFn: (row, _) => row.strokeWidthPx,
domainFn: (dynamic row, _) => row.campaign,
measureFn: (dynamic row, _) => row.clickCount,
measureOffsetFn: (_, __) => 0,
data: myFakeDesktopData)),
new MutableSeries<int>(new Series<MyRow, int>(
MutableSeries<int>(Series<MyRow, int>(
id: 'Tablet',
colorFn: (MyRow row, _) => row.color,
dashPatternFn: (MyRow row, _) => row.dashPattern,
strokeWidthPxFn: (MyRow row, _) => row.strokeWidthPx,
colorFn: (row, _) => row.color,
dashPatternFn: (row, _) => row.dashPattern,
strokeWidthPxFn: (row, _) => row.strokeWidthPx,
domainFn: (dynamic row, _) => row.campaign,
measureFn: (dynamic row, _) => row.clickCount,
measureOffsetFn: (_, __) => 0,
data: myFakeTabletData)),
new MutableSeries<int>(new Series<MyRow, int>(
MutableSeries<int>(Series<MyRow, int>(
id: 'Mobile',
colorFn: (MyRow row, _) => row.color,
dashPatternFn: (MyRow row, _) => row.dashPattern,
strokeWidthPxFn: (MyRow row, _) => row.strokeWidthPx,
colorFn: (row, _) => row.color,
dashPatternFn: (row, _) => row.dashPattern,
strokeWidthPxFn: (row, _) => row.strokeWidthPx,
domainFn: (dynamic row, _) => row.campaign,
measureFn: (dynamic row, _) => row.clickCount,
measureOffsetFn: (_, __) => 0,
data: myFakeMobileData))
];
renderer = new LineRenderer<num>(
config: new LineRendererConfig(strokeWidthPx: 2.0));
renderer =
LineRenderer<num>(config: LineRendererConfig(strokeWidthPx: 2.0));
renderer.configureSeries(numericSeriesList);
renderer.preprocessSeries(numericSeriesList);
@@ -408,38 +404,38 @@ void main() {
test('with numeric data and repeats in style', () {
var myFakeData = [
new MyRow(
MyRow(
'MyCampaign1', 1, 5, MaterialPalette.blue.shadeDefault, null, 2.0),
new MyRow('MyCampaign2', 2, 25, MaterialPalette.green.shadeDefault,
null, 2.0),
new MyRow('MyCampaign3', 3, 100, MaterialPalette.blue.shadeDefault,
null, 2.0),
new MyRow('MyCampaign4', 4, 75, MaterialPalette.green.shadeDefault,
null, 2.0),
new MyRow(
MyRow('MyCampaign2', 2, 25, MaterialPalette.green.shadeDefault, null,
2.0),
MyRow('MyCampaign3', 3, 100, MaterialPalette.blue.shadeDefault, null,
2.0),
MyRow('MyCampaign4', 4, 75, MaterialPalette.green.shadeDefault, null,
2.0),
MyRow(
'MyCampaign1', 5, 5, MaterialPalette.blue.shadeDefault, null, 2.0),
new MyRow('MyCampaign2', 6, 25, MaterialPalette.green.shadeDefault,
null, 2.0),
new MyRow('MyCampaign3', 7, 100, MaterialPalette.blue.shadeDefault,
null, 2.0),
new MyRow('MyCampaign4', 8, 75, MaterialPalette.green.shadeDefault,
null, 2.0),
MyRow('MyCampaign2', 6, 25, MaterialPalette.green.shadeDefault, null,
2.0),
MyRow('MyCampaign3', 7, 100, MaterialPalette.blue.shadeDefault, null,
2.0),
MyRow('MyCampaign4', 8, 75, MaterialPalette.green.shadeDefault, null,
2.0),
];
numericSeriesList = [
new MutableSeries<int>(new Series<MyRow, int>(
MutableSeries<int>(Series<MyRow, int>(
id: 'Desktop',
colorFn: (MyRow row, _) => row.color,
dashPatternFn: (MyRow row, _) => row.dashPattern,
strokeWidthPxFn: (MyRow row, _) => row.strokeWidthPx,
domainFn: (dynamic row, _) => row.campaign,
measureFn: (dynamic row, _) => row.clickCount,
colorFn: (row, _) => row.color,
dashPatternFn: (row, _) => row.dashPattern,
strokeWidthPxFn: (row, _) => row.strokeWidthPx,
domainFn: (row, _) => row.campaign,
measureFn: (row, _) => row.clickCount,
measureOffsetFn: (_, __) => 0,
data: myFakeData)),
];
renderer = new LineRenderer<num>(
config: new LineRendererConfig(strokeWidthPx: 2.0));
renderer =
LineRenderer<num>(config: LineRendererConfig(strokeWidthPx: 2.0));
renderer.configureSeries(numericSeriesList);
renderer.preprocessSeries(numericSeriesList);
@@ -494,8 +490,8 @@ void main() {
});
test('with ordinal data and simple lines', () {
renderer = new LineRenderer<String>(
config: new LineRendererConfig(strokeWidthPx: 2.0));
renderer =
LineRenderer<String>(config: LineRendererConfig(strokeWidthPx: 2.0));
renderer.configureSeries(ordinalSeriesList);
renderer.preprocessSeries(ordinalSeriesList);

View File

@@ -50,23 +50,23 @@ void main() {
/////////////////////////////////////////
MutableSeries<int> _makeSeries({String id, int measureOffset = 0}) {
final data = <MyRow>[
new MyRow(1000, measureOffset + 10),
new MyRow(2000, measureOffset + 20),
new MyRow(3000, measureOffset + 30),
MyRow(1000, measureOffset + 10),
MyRow(2000, measureOffset + 20),
MyRow(3000, measureOffset + 30),
];
final series = new MutableSeries<int>(new Series<MyRow, int>(
final series = MutableSeries<int>(Series<MyRow, int>(
id: id,
data: data,
domainFn: (MyRow row, _) => row.timestamp,
measureFn: (MyRow row, _) => row.clickCount,
domainFn: (row, _) => row.timestamp,
measureFn: (row, _) => row.clickCount,
));
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 MockDomainAxis();
final domainAxis = MockDomainAxis();
when(domainAxis.rangeBand).thenReturn(100.0);
when(domainAxis.getLocation(1000)).thenReturn(70.0);
when(domainAxis.getLocation(2000)).thenReturn(70.0 + 100);
@@ -74,7 +74,7 @@ void main() {
series.setAttr(domainAxisKey, domainAxis);
// Mock the Measure axis results.
final measureAxis = new MockMeasureAxis();
final measureAxis = MockMeasureAxis();
for (var i = 0; i <= 100; i++) {
when(measureAxis.getLocation(i.toDouble()))
.thenReturn(20.0 + 100.0 - i.toDouble());
@@ -94,9 +94,9 @@ void main() {
setUp(() {
selectNearestByDomain = true;
renderer = new LineRenderer<int>(
config: new LineRendererConfig(strokeWidthPx: 1.0));
final layoutBounds = new Rectangle<int>(70, 20, 200, 100);
renderer =
LineRenderer<int>(config: LineRendererConfig(strokeWidthPx: 1.0));
final layoutBounds = Rectangle<int>(70, 20, 200, 100);
renderer.layout(layoutBounds, layoutBounds);
return renderer;
});
@@ -114,11 +114,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 Point just below barSeries.data[0]
final details = renderer.getNearestDatumDetailPerSeries(
new Point<double>(70.0 + 10.0, 20.0 + 100.0 - 5.0),
Point<double>(70.0 + 10.0, 20.0 + 100.0 - 5.0),
selectNearestByDomain,
null);
@@ -142,11 +142,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 + 100.0 - 5.0),
Point<double>(70.0 + 10.0, 20.0 + 100.0 - 5.0),
selectNearestByDomain,
null);
@@ -163,11 +163,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 + 100.0 - 5.0),
Point<double>(70.0 + 10.0, 20.0 + 100.0 - 5.0),
selectNearestByDomain,
null);
@@ -191,11 +191,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 + 100.0 - 5.0),
Point<double>(70.0 + 10.0, 20.0 + 100.0 - 5.0),
selectNearestByDomain,
null);
@@ -214,11 +214,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 + 100.0 - 5.0),
Point<double>(70.0 + 10.0, 20.0 + 100.0 - 5.0),
selectNearestByDomain,
null);
@@ -241,11 +241,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 + 100.0 - 5.0),
Point<double>(70.0 + 10.0, 20.0 + 100.0 - 5.0),
selectNearestByDomain,
null);
@@ -277,11 +277,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 + 10.0, 20.0 + 100.0 - 5.0),
Point<double>(70.0 + 100.0 + 10.0, 20.0 + 100.0 - 5.0),
selectNearestByDomain,
null);
@@ -312,11 +312,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 + 10.0, 20.0 + 10.0),
Point<double>(70.0 + 100.0 + 10.0, 20.0 + 10.0),
selectNearestByDomain,
null);
@@ -333,19 +333,17 @@ void main() {
test('no selection for points outside of viewport', () {
// Setup
final seriesList = <MutableSeries<int>>[
_makeSeries(id: 'foo')..data.add(new MyRow(-1000, 20))
_makeSeries(id: 'foo')..data.add(MyRow(-1000, 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>(-0.0, 20.0 + 100.0 - 5.0),
selectNearestByDomain,
null);
Point<double>(-0.0, 20.0 + 100.0 - 5.0), selectNearestByDomain, null);
// Verify
expect(details.length, equals(0));