Commit c05e3ff

derdilla <derdilla06@gmail.com>
2023-05-19 17:24:11
make list use selected intervall
1 parent 60f9281
lib/components/measurement_graph.dart
@@ -24,9 +24,9 @@ class _LineChart extends StatelessWidget {
                 builder: (context, settings, child) {
                   return Consumer<BloodPressureModel>(
                     builder: (context, model, child) {
-                      var end = settings.graphEnd;
+                      var end = settings.displayDataEnd;
                       if (settings.graphStepSize == TimeStep.lifetime) end = DateTime.now();
-                      final dataFuture = model.getInTimeRange(settings.graphStart, end);
+                      final dataFuture = model.getInTimeRange(settings.displayDataStart, end);
 
                       return FutureBuilder<UnmodifiableListView<BloodPressureRecord>>(
                           future: dataFuture,
@@ -164,24 +164,24 @@ class MeasurementGraph extends StatelessWidget {
   const MeasurementGraph({super.key, this.height = 290});
 
   void moveGraphWithStep(int directionalStep, Settings settings) {
-    final oldStart = settings.graphStart;
-    final oldEnd = settings.graphEnd;
+    final oldStart = settings.displayDataStart;
+    final oldEnd = settings.displayDataEnd;
     switch (settings.graphStepSize) {
       case TimeStep.day:
-        settings.graphStart = oldStart.copyWith(day: oldStart.day + directionalStep);
-        settings.graphEnd = oldEnd.copyWith(day: oldEnd.day + directionalStep);
+        settings.displayDataStart = oldStart.copyWith(day: oldStart.day + directionalStep);
+        settings.displayDataEnd = oldEnd.copyWith(day: oldEnd.day + directionalStep);
         break;
       case TimeStep.month:
-        settings.graphStart = oldStart.copyWith(month: oldStart.month + directionalStep);
-        settings.graphEnd = oldEnd.copyWith(month: oldEnd.month + directionalStep);
+        settings.displayDataStart = oldStart.copyWith(month: oldStart.month + directionalStep);
+        settings.displayDataEnd = oldEnd.copyWith(month: oldEnd.month + directionalStep);
         break;
       case TimeStep.year:
-        settings.graphStart = oldStart.copyWith(year: oldStart.year + directionalStep);
-        settings.graphEnd = oldEnd.copyWith(year: oldEnd.year + directionalStep);
+        settings.displayDataStart = oldStart.copyWith(year: oldStart.year + directionalStep);
+        settings.displayDataEnd = oldEnd.copyWith(year: oldEnd.year + directionalStep);
         break;
       case TimeStep.lifetime:
-        settings.graphStart = DateTime.fromMillisecondsSinceEpoch(0);
-        settings.graphEnd = oldStart;
+        settings.displayDataStart = DateTime.fromMillisecondsSinceEpoch(0);
+        settings.displayDataEnd = oldStart;
         break;
     }
   }
@@ -225,20 +225,20 @@ class MeasurementGraph extends StatelessWidget {
                                 final now = DateTime.now();
                                 switch (settings.graphStepSize) {
                                   case TimeStep.day:
-                                    settings.graphStart = DateTime(now.year, now.month, now.day);
-                                    settings.graphEnd = settings.graphStart.copyWith(day: now.day + 1);
+                                    settings.displayDataStart = DateTime(now.year, now.month, now.day);
+                                    settings.displayDataEnd = settings.displayDataStart.copyWith(day: now.day + 1);
                                     break;
                                   case TimeStep.month:
-                                    settings.graphStart = DateTime(now.year, now.month);
-                                    settings.graphEnd = settings.graphStart.copyWith(month: now.month + 1);
+                                    settings.displayDataStart = DateTime(now.year, now.month);
+                                    settings.displayDataEnd = settings.displayDataStart.copyWith(month: now.month + 1);
                                     break;
                                   case TimeStep.year:
-                                    settings.graphStart = DateTime(now.year);
-                                    settings.graphEnd = settings.graphStart.copyWith(year: now.year + 1);
+                                    settings.displayDataStart = DateTime(now.year);
+                                    settings.displayDataEnd = settings.displayDataStart.copyWith(year: now.year + 1);
                                     break;
                                   case TimeStep.lifetime:
-                                    settings.graphStart = DateTime.fromMillisecondsSinceEpoch(0);
-                                    settings.graphEnd = now;
+                                    settings.displayDataStart = DateTime.fromMillisecondsSinceEpoch(0);
+                                    settings.displayDataEnd = now;
                                     break;
                                 }
                               }
lib/components/measurement_list.dart
@@ -31,32 +31,36 @@ class MeasurementList extends StatelessWidget {
               flex: 100,
               child: Consumer<BloodPressureModel>(
                 builder: (context, model, child) {
-                  final items = model.getLastX(30);
-                  return FutureBuilder<UnmodifiableListView<BloodPressureRecord>>(
-                    future: items,
-                    builder: (BuildContext context, AsyncSnapshot<UnmodifiableListView<BloodPressureRecord>> recordsSnapsot) {
-                      assert(recordsSnapsot.connectionState != ConnectionState.none);
+                  return Consumer<Settings>(
+                    builder: (context, settings, child) {
+                      final items = model.getInTimeRange(settings.displayDataStart, settings.displayDataEnd);
+                      return FutureBuilder<UnmodifiableListView<BloodPressureRecord>>(
+                          future: items,
+                          builder: (BuildContext context, AsyncSnapshot<UnmodifiableListView<BloodPressureRecord>> recordsSnapsot) {
+                            assert(recordsSnapsot.connectionState != ConnectionState.none);
 
-                      if (recordsSnapsot.connectionState == ConnectionState.waiting) {
-                        return const Text('loading...');
-                      } else {
-                        if (recordsSnapsot.hasError) {
-                          return Text('Error loading data:\n${recordsSnapsot.error}');
-                        } else {
-                          final data = recordsSnapsot.data ?? [];
-                          if (data.isNotEmpty && data.first.diastolic > 0) {
-                            return ListView.builder(
-                                itemCount: data.length,
-                                shrinkWrap: true,
-                                itemBuilder: (context, index) {
-                                  return buildListItem(data[index]);
+                            if (recordsSnapsot.connectionState == ConnectionState.waiting) {
+                              return const Text('loading...');
+                            } else {
+                              if (recordsSnapsot.hasError) {
+                                return Text('Error loading data:\n${recordsSnapsot.error}');
+                              } else {
+                                final data = recordsSnapsot.data ?? [];
+                                if (data.isNotEmpty && data.first.diastolic > 0) {
+                                  return ListView.builder(
+                                      itemCount: data.length,
+                                      shrinkWrap: true,
+                                      itemBuilder: (context, index) {
+                                        return buildListItem(data[index]);
+                                      }
+                                  );
+                                } else {
+                                  return const Text('no data');
                                 }
-                            );
-                          } else {
-                            return const Text('no data');
+                              }
+                            }
                           }
-                        }
-                      }
+                      );
                     }
                   );
                 }
lib/model/settings_store.dart
@@ -42,18 +42,18 @@ class Settings extends ChangeNotifier {
     notifyListeners();
   }
 
-  DateTime get graphStart {
+  DateTime get displayDataStart {
     return DateTime.fromMillisecondsSinceEpoch(_prefs.getInt('graphStart') ?? -1);
   }
-  set graphStart(DateTime newGraphStart) {
+  set displayDataStart(DateTime newGraphStart) {
     _prefs.setInt('graphStart', newGraphStart.millisecondsSinceEpoch);
     notifyListeners();
   }
 
-  DateTime get graphEnd {
+  DateTime get displayDataEnd {
     return DateTime.fromMillisecondsSinceEpoch(_prefs.getInt('graphEnd') ?? -1);
   }
-  set graphEnd(DateTime newGraphEnd) {
+  set displayDataEnd(DateTime newGraphEnd) {
     _prefs.setInt('graphEnd', newGraphEnd.millisecondsSinceEpoch);
     notifyListeners();
   }
test/model/settings_test.dart
@@ -26,8 +26,8 @@ void main() {
     test('fields defaults should be set after initialization', () async {
       var s = await Settings.create();
       expect(s.graphStepSize, TimeStep.day);
-      expect(s.graphStart, DateTime.fromMillisecondsSinceEpoch(-1));
-      expect(s.graphEnd, DateTime.fromMillisecondsSinceEpoch(-1));
+      expect(s.displayDataStart, DateTime.fromMillisecondsSinceEpoch(-1));
+      expect(s.displayDataEnd, DateTime.fromMillisecondsSinceEpoch(-1));
       expect(s.followSystemDarkMode, true);
       expect(s.darkMode, true);
       expect(s.accentColor.value, 0xFF009688);
@@ -55,8 +55,8 @@ void main() {
       });
 
       s.graphStepSize = TimeStep.lifetime;
-      s.graphStart = DateTime.fromMillisecondsSinceEpoch(10000);
-      s.graphEnd = DateTime.fromMillisecondsSinceEpoch(200000);
+      s.displayDataStart = DateTime.fromMillisecondsSinceEpoch(10000);
+      s.displayDataEnd = DateTime.fromMillisecondsSinceEpoch(200000);
       s.followSystemDarkMode = false;
       s.darkMode = false;
       s.accentColor = s.createMaterialColor(0xFF942DA4);
@@ -69,8 +69,8 @@ void main() {
       s.iconSize = 50;
 
 
-      expect(s.graphStart, DateTime.fromMillisecondsSinceEpoch(10000));
-      expect(s.graphEnd, DateTime.fromMillisecondsSinceEpoch(200000));
+      expect(s.displayDataStart, DateTime.fromMillisecondsSinceEpoch(10000));
+      expect(s.displayDataEnd, DateTime.fromMillisecondsSinceEpoch(200000));
       expect(s.followSystemDarkMode, false);
       expect(s.darkMode, false);
       expect(s.accentColor.value, 0xFF942DA4);
@@ -91,8 +91,8 @@ void main() {
       });
 
       s.graphStepSize = TimeStep.lifetime;
-      s.graphStart = DateTime.fromMillisecondsSinceEpoch(10000);
-      s.graphEnd = DateTime.fromMillisecondsSinceEpoch(200000);
+      s.displayDataStart = DateTime.fromMillisecondsSinceEpoch(10000);
+      s.displayDataEnd = DateTime.fromMillisecondsSinceEpoch(200000);
       s.followSystemDarkMode = false;
       s.darkMode = false;
       s.accentColor = s.createMaterialColor(0xFF942DA4);