Merge pull request #717 from collinjackson/indicator
Add goal weight indicator line to fitness chart
This commit is contained in:
commit
62e67957c9
@ -61,7 +61,7 @@ class FeedFragment extends StatefulComponent {
|
|||||||
FeedFragment({ this.navigator, this.userData, this.onItemCreated, this.onItemDeleted });
|
FeedFragment({ this.navigator, this.userData, this.onItemCreated, this.onItemDeleted });
|
||||||
|
|
||||||
Navigator navigator;
|
Navigator navigator;
|
||||||
List<FitnessItem> userData;
|
UserData userData;
|
||||||
FitnessItemHandler onItemCreated;
|
FitnessItemHandler onItemCreated;
|
||||||
FitnessItemHandler onItemDeleted;
|
FitnessItemHandler onItemDeleted;
|
||||||
|
|
||||||
@ -179,12 +179,13 @@ class FeedFragment extends StatefulComponent {
|
|||||||
double startY;
|
double startY;
|
||||||
double endY;
|
double endY;
|
||||||
List<Point> dataSet = new List<Point>();
|
List<Point> dataSet = new List<Point>();
|
||||||
for (FitnessItem item in userData) {
|
for (FitnessItem item in userData.items) {
|
||||||
if (item is Measurement) {
|
if (item is Measurement) {
|
||||||
double x = item.when.millisecondsSinceEpoch.toDouble();
|
double x = item.when.millisecondsSinceEpoch.toDouble();
|
||||||
double y = item.weight;
|
double y = item.weight;
|
||||||
if (startX == null)
|
if (startX == null || startX > x)
|
||||||
startX = x;
|
startX = x;
|
||||||
|
if (endX == null || endX < x)
|
||||||
endX = x;
|
endX = x;
|
||||||
if (startY == null || startY > y)
|
if (startY == null || startY > y)
|
||||||
startY = y;
|
startY = y;
|
||||||
@ -193,6 +194,10 @@ class FeedFragment extends StatefulComponent {
|
|||||||
dataSet.add(new Point(x, y));
|
dataSet.add(new Point(x, y));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (userData.goalWeight > 0.0) {
|
||||||
|
startY = math.min(startY, userData.goalWeight);
|
||||||
|
endY = math.max(endY, userData.goalWeight);
|
||||||
|
}
|
||||||
playfair.ChartData data = new playfair.ChartData(
|
playfair.ChartData data = new playfair.ChartData(
|
||||||
startX: startX,
|
startX: startX,
|
||||||
startY: startY,
|
startY: startY,
|
||||||
@ -200,14 +205,16 @@ class FeedFragment extends StatefulComponent {
|
|||||||
endY: endY,
|
endY: endY,
|
||||||
dataSet: dataSet,
|
dataSet: dataSet,
|
||||||
numHorizontalGridlines: 5,
|
numHorizontalGridlines: 5,
|
||||||
roundToPlaces: 1
|
roundToPlaces: 1,
|
||||||
|
indicatorLine: userData.goalWeight,
|
||||||
|
indicatorText: "GOAL WEIGHT"
|
||||||
);
|
);
|
||||||
return new playfair.Chart(data: data);
|
return new playfair.Chart(data: data);
|
||||||
}
|
}
|
||||||
|
|
||||||
Widget buildBody() {
|
Widget buildBody() {
|
||||||
TextStyle style = Theme.of(this).text.title;
|
TextStyle style = Theme.of(this).text.title;
|
||||||
if (userData.length == 0)
|
if (userData.items.length == 0)
|
||||||
return new Material(
|
return new Material(
|
||||||
type: MaterialType.canvas,
|
type: MaterialType.canvas,
|
||||||
child: new Flex(
|
child: new Flex(
|
||||||
@ -218,7 +225,7 @@ class FeedFragment extends StatefulComponent {
|
|||||||
switch (_fitnessMode) {
|
switch (_fitnessMode) {
|
||||||
case FitnessMode.feed:
|
case FitnessMode.feed:
|
||||||
return new FitnessItemList(
|
return new FitnessItemList(
|
||||||
items: userData,
|
items: userData.items.reversed.toList(),
|
||||||
onDismissed: _handleItemDismissed
|
onDismissed: _handleItemDismissed
|
||||||
);
|
);
|
||||||
case FitnessMode.chart:
|
case FitnessMode.chart:
|
||||||
|
@ -12,6 +12,7 @@ import 'package:sky/widgets.dart';
|
|||||||
import 'user_data.dart';
|
import 'user_data.dart';
|
||||||
import 'date_utils.dart';
|
import 'date_utils.dart';
|
||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
|
import 'dart:math' as math;
|
||||||
|
|
||||||
part 'feed.dart';
|
part 'feed.dart';
|
||||||
part 'fitness_item.dart';
|
part 'fitness_item.dart';
|
||||||
@ -46,7 +47,7 @@ class UserDataImpl extends UserData {
|
|||||||
List<FitnessItem> get items => _items;
|
List<FitnessItem> get items => _items;
|
||||||
|
|
||||||
void sort() {
|
void sort() {
|
||||||
_items.sort((a, b) => -a.when.compareTo(b.when));
|
_items.sort((a, b) => a.when.compareTo(b.when));
|
||||||
}
|
}
|
||||||
|
|
||||||
void add(FitnessItem item) {
|
void add(FitnessItem item) {
|
||||||
@ -100,7 +101,7 @@ class FitnessApp extends App {
|
|||||||
name: '/',
|
name: '/',
|
||||||
builder: (navigator, route) => new FeedFragment(
|
builder: (navigator, route) => new FeedFragment(
|
||||||
navigator: navigator,
|
navigator: navigator,
|
||||||
userData: _userData.items,
|
userData: _userData,
|
||||||
onItemCreated: _handleItemCreated,
|
onItemCreated: _handleItemCreated,
|
||||||
onItemDeleted: _handleItemDeleted
|
onItemDeleted: _handleItemDeleted
|
||||||
)
|
)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user