Commit 19a20e8

derdilla <derdilla06@gmail.com>
2023-07-13 00:07:12
add setting for allowing missing values
1 parent 7609669
lib/l10n/app_en.arb
@@ -322,5 +322,6 @@
     }
   },
   "last7Days": "7 days",
-  "last30Days": "30 days"
+  "last30Days": "30 days",
+  "allowMissingValues": "Allow missing values"
 }
lib/model/ram_only_implementations.dart
@@ -114,6 +114,7 @@ class RamSettings extends ChangeNotifier implements Settings {
   MimeType _exportMimeType = MimeType.csv;
   String _defaultExportDir = '';
   bool _exportAfterEveryEntry = false;
+  bool _allowMissingValues = false;
 
   RamSettings() {
     _accentColor = createMaterialColor(0xFF009688);
@@ -416,6 +417,15 @@ class RamSettings extends ChangeNotifier implements Settings {
     notifyListeners();
   }
 
+  @override
+  bool get allowMissingValues => _allowMissingValues;
+
+  @override
+  set allowMissingValues(bool value) {
+    _allowMissingValues = value;
+    notifyListeners();
+  }
+
   @override
   void changeStepSize(int value) {
     graphStepSize = value;
lib/model/settings_store.dart
@@ -244,6 +244,15 @@ class Settings extends ChangeNotifier {
     notifyListeners();
   }
 
+  bool get allowMissingValues {
+    return _prefs.getBool('allowMissingValues') ?? false;
+  }
+
+  set allowMissingValues(bool allowMissingValues) {
+    _prefs.setBool('allowMissingValues', allowMissingValues);
+    notifyListeners();
+  }
+
   double get graphLineThickness {
     return _prefs.getDouble('graphLineThickness') ?? 3;
   }
lib/screens/settings.dart
@@ -159,6 +159,14 @@ class SettingsPage extends StatelessWidget {
                   onToggle: (value) {
                     settings.validateInputs = value;
                   }),
+              SwitchSettingsTile(
+                  key: const Key('allowMissingValues'),
+                  initialValue: settings.allowMissingValues,
+                  title: Text(AppLocalizations.of(context)!.allowMissingValues),
+                  leading: const Icon(Icons.report_off_outlined),
+                  onToggle: (value) {
+                    settings.allowMissingValues = value;
+                  }),
               SwitchSettingsTile(
                   key: const Key('confirmDeletion'),
                   initialValue: settings.confirmDeletion,
test/model/settings_test.dart
@@ -49,6 +49,7 @@ void main() {
       expect(s.exportMimeType, MimeType.csv);
       expect(s.defaultExportDir.isEmpty, true);
       expect(s.exportAfterEveryEntry, false);
+      expect(s.allowMissingValues, false);
     });
 
     test('setting fields should save changes', () async {
@@ -93,6 +94,7 @@ void main() {
       s.exportMimeType = MimeType.pdf;
       s.defaultExportDir = '/storage/emulated/0/Android/data/com.derdilla.bloodPressureApp/files/file.csv';
       s.exportAfterEveryEntry = true;
+      s.allowMissingValues = true;
 
       expect(s.displayDataStart, DateTime.fromMillisecondsSinceEpoch(10000));
       expect(s.displayDataEnd, DateTime.fromMillisecondsSinceEpoch(200000));
@@ -120,6 +122,7 @@ void main() {
       expect(s.exportMimeType, MimeType.pdf);
       expect(s.defaultExportDir, '/storage/emulated/0/Android/data/com.derdilla.bloodPressureApp/files/file.csv');
       expect(s.exportAfterEveryEntry, true);
+      expect(s.allowMissingValues, true);
     });
 
     test('setting fields should notify listeners and change values', () async {
@@ -159,8 +162,9 @@ void main() {
       s.exportMimeType = MimeType.pdf;
       s.defaultExportDir = '/storage/emulated/0/Android/data/com.derdilla.bloodPressureApp/files/file.csv';
       s.exportAfterEveryEntry = true;
+      s.allowMissingValues = true;
 
-      expect(i, 29);
+      expect(i, 30);
     });
   });
 
@@ -203,6 +207,7 @@ void main() {
       expect(s.exportMimeType, MimeType.csv);
       expect(s.defaultExportDir.isEmpty, true);
       expect(s.exportAfterEveryEntry, false);
+      expect(s.allowMissingValues, false);
     });
 
     test('setting fields should save changes', () async {
@@ -247,7 +252,7 @@ void main() {
       s.exportMimeType = MimeType.pdf;
       s.defaultExportDir = '/storage/emulated/0/Android/data/com.derdilla.bloodPressureApp/files/file.csv';
       s.exportAfterEveryEntry = true;
-
+      s.allowMissingValues = true;
 
       expect(s.displayDataStart, DateTime.fromMillisecondsSinceEpoch(10000));
       expect(s.displayDataEnd, DateTime.fromMillisecondsSinceEpoch(200000));
@@ -275,6 +280,8 @@ void main() {
       expect(s.exportMimeType, MimeType.pdf);
       expect(s.defaultExportDir, '/storage/emulated/0/Android/data/com.derdilla.bloodPressureApp/files/file.csv');
       expect(s.exportAfterEveryEntry, true);
+      expect(s.allowMissingValues, true);
+
     });
 
     test('setting fields should notify listeners and change values', () async {
@@ -314,8 +321,9 @@ void main() {
       s.exportMimeType = MimeType.pdf;
       s.defaultExportDir = '/storage/emulated/0/Android/data/com.derdilla.bloodPressureApp/files/file.csv';
       s.exportAfterEveryEntry = true;
+      s.allowMissingValues = true;
 
-      expect(i, 29);
+      expect(i, 30);
     });
   });
 }