Commit ce34783

derdilla <derdilla06@gmail.com>
2023-07-13 10:52:07
don't require all fields for export and import
1 parent ba77f80
lib/l10n/app_de.arb
@@ -219,7 +219,7 @@
       }
     }
   },
-  "exportWarnConfigNotImportable": "Hey! Nur eine freundliche Info: Die aktuelle Exportkonfiguration ist nicht importierbar. Um das zu beheben, stelle sicher, dass der Exporttyp als CSV festgelegt ist, die Überschrift aktiviert ist und die Felder 'diastolic', 'systolic', 'pulse', 'notes' sowie eines der verfügbaren Zeitformate enthalten sind.",
+  "exportWarnConfigNotImportable": "Hey! Nur eine freundliche Info: Die aktuelle Exportkonfiguration ist nicht importierbar. Um das zu beheben, stelle sicher, dass der Exporttyp als CSV festgelegt ist, die Überschrift aktiviert ist und eines der verfügbaren Zeitformate enthalten ist.",
   "@exportWarnConfigNotImportable": {},
   "shared": "Geteilt",
   "@shared": {},
lib/l10n/app_en.arb
@@ -234,7 +234,7 @@
       }
     }
   },
-  "exportWarnConfigNotImportable": "Hey! Just a friendly heads up: the current export configuration won't be importable. To fix it, make sure you set the export type as CSV, enable the headline, and include the fields 'diastolic', 'systolic', 'pulse', 'notes', along with one of the time formats available.",
+  "exportWarnConfigNotImportable": "Hey! Just a friendly heads up: the current export configuration won't be importable. To fix it, make sure you set the export type as CSV, enable the headline, and include one of the time formats available.",
   "@exportWarnConfigNotImportable": {},
   "statistics": "Statistics",
   "@statistics": {},
lib/model/export_import.dart
@@ -145,12 +145,9 @@ class ExportFileCreator {
           break;
       }
     }
-    // TODO: make checks not neccessary; we can allow more, as fields are now nullable
-    assert(creationTimePos >= 0 || isoTimePos >= 0);
-    assert(sysPos >= 0);
-    assert(diaPos >= 0);
-    assert(pulPos >= 0);
-    assert(notePos >= 0);
+    if(creationTimePos < 0 && isoTimePos < 0) {
+      throw ArgumentError('File didn\'t save timestamps');
+    }
 
     int? convert(dynamic e) {
       if (e is int?) {
@@ -158,15 +155,14 @@ class ExportFileCreator {
       }
       return null;
     }
-    for (final line in csvLines) { // TODO: empty strings -> null
-      print(line[2]);
+    for (final line in csvLines) {
       records.add(
           BloodPressureRecord(
               (creationTimePos >= 0 ) ? DateTime.fromMillisecondsSinceEpoch(line[creationTimePos]) : DateTime.parse(line[isoTimePos]),
-              convert(line[sysPos]),
-              convert(line[diaPos]),
-              convert(line[pulPos]),
-              line[notePos]
+              (sysPos >= 0) ? convert(line[sysPos]) : null,
+              (diaPos >= 0) ? convert(line[diaPos]) : null,
+              (pulPos >= 0) ? convert(line[pulPos]) : null,
+              (notePos >= 0) ? line[notePos] : null
           )
       );
     }
@@ -294,10 +290,6 @@ class Exporter {
       messenger.showSnackBar(SnackBar(content: Text(localizations!.errWrongImportFormat)));
       return;
     }
-    if (settings.exportFormat == ExportFormat.csv && !settings.exportCsvHeadline) {
-      messenger.showSnackBar(SnackBar(content: Text(localizations!.errNeedHeadline)));
-      return;
-    }
 
     var result = await FilePicker.platform.pickFiles(
       allowMultiple: false,
lib/screens/subsettings/export_import_screen.dart
@@ -7,7 +7,7 @@ import 'package:flutter_gen/gen_l10n/app_localizations.dart';
 import 'package:intl/intl.dart';
 import 'package:jsaver/jSaver.dart';
 import 'package:provider/provider.dart';
-
+// TODO: make checks not neccessary; we can allow more, as fields are now nullable
 class ExportImportScreen extends StatelessWidget {
   const ExportImportScreen({super.key});
 
@@ -320,13 +320,8 @@ class _ExportWarnBannerState extends State<ExportWarnBanner> {
     return Consumer<Settings>(builder: (context, settings, child) {
       if (_showWarnBanner && ![ExportFormat.csv, ExportFormat.db].contains(settings.exportFormat) ||
           settings.exportCsvHeadline == false ||
-          settings.exportCustomEntries && !(
-              (settings.exportItems.contains('timestampUnixMs') || settings.exportItems.contains('isoUTCTime')) &&
-                  settings.exportItems.contains('systolic') &&
-                  settings.exportItems.contains('diastolic') &&
-                  settings.exportItems.contains('pulse') &&
-                  settings.exportItems.contains('notes')
-          ) ||
+          settings.exportCustomEntries &&
+              !((settings.exportItems.contains('timestampUnixMs') || settings.exportItems.contains('isoUTCTime'))) ||
           ![',', '|'].contains(settings.csvFieldDelimiter) ||
           !['"', '\''].contains(settings.csvTextDelimiter)
       ) {
lib/screens/add_measurement.dart
@@ -82,12 +82,8 @@ class _AddMeasurementPageState extends State<AddMeasurementPage> {
                             },
                             child: Column(
                               children: [
-                                Row(
-                                  children: [Text(formatter.format(_time)), const Spacer(), const Icon(Icons.edit)],
-                                ),
-                                const SizedBox(
-                                  height: 3,
-                                ),
+                                Row(children: [Text(formatter.format(_time)), const Spacer(), const Icon(Icons.edit)]),
+                                const SizedBox(height: 3,),
                                 Divider(
                                   color: Theme.of(context).disabledColor,
                                   thickness: 1,
@@ -237,5 +233,4 @@ class ValueInput extends StatelessWidget {
       );
     });
   }
-
 }