Commit 2832d4c
Changed files (4)
lib
model
test
lib/model/export_import/export_configuration.dart
@@ -14,7 +14,7 @@ class ActiveExportColumnConfiguration extends ChangeNotifier {
/// The default configuration is guaranteed to be restoreable.
ActiveExportColumnConfiguration({
ExportImportPreset? activePreset,
- List<String>? userSelectedColumnIds
+ List<String>? userSelectedColumnIds,
}) :
_activePreset = activePreset ?? ExportImportPreset.bloodPressureApp,
_userSelectedColumns = userSelectedColumnIds ?? [];
lib/model/storage/export_csv_settings_store.dart
@@ -21,13 +21,27 @@ class CsvExportSettings extends ChangeNotifier implements CustomFieldsSettings {
_exportFieldsConfiguration.addListener(() => notifyListeners());
}
- factory CsvExportSettings.fromMap(Map<String, dynamic> map) => CsvExportSettings(
- fieldDelimiter: ConvertUtil.parseString(map['fieldDelimiter']),
- textDelimiter: ConvertUtil.parseString(map['textDelimiter']),
- exportHeadline: ConvertUtil.parseBool(map['exportHeadline']),
- exportFieldsConfiguration: ActiveExportColumnConfiguration.fromJson(map['exportFieldsConfiguration']),
- // TODO: migrate exportCustomFields and customFields before release
- );
+ factory CsvExportSettings.fromMap(Map<String, dynamic> map) {
+ if (map.containsKey('exportFieldsConfiguration')) {
+ return CsvExportSettings(
+ fieldDelimiter: ConvertUtil.parseString(map['fieldDelimiter']),
+ textDelimiter: ConvertUtil.parseString(map['textDelimiter']),
+ exportHeadline: ConvertUtil.parseBool(map['exportHeadline']),
+ exportFieldsConfiguration: ActiveExportColumnConfiguration.fromJson(map['exportFieldsConfiguration']),
+ );
+ } else {
+ return CsvExportSettings(
+ fieldDelimiter: ConvertUtil.parseString(map['fieldDelimiter']),
+ textDelimiter: ConvertUtil.parseString(map['textDelimiter']),
+ exportHeadline: ConvertUtil.parseBool(map['exportHeadline']),
+ exportFieldsConfiguration: ActiveExportColumnConfiguration(
+ activePreset: ConvertUtil.parseBool(map['exportCustomFields']) ?? false ? ExportImportPreset.none : ExportImportPreset.bloodPressureApp,
+ // Can't migrate user columns ('customFields') as no prefix available
+ ),
+ );
+ }
+
+ }
factory CsvExportSettings.fromJson(String json) {
try {
lib/model/storage/export_pdf_settings_store.dart
@@ -35,8 +35,9 @@ class PdfExportSettings extends ChangeNotifier implements CustomFieldsSettings {
cellHeight: ConvertUtil.parseDouble(map['cellHeight']),
headerFontSize: ConvertUtil.parseDouble(map['headerFontSize']),
cellFontSize: ConvertUtil.parseDouble(map['cellFontSize']),
- exportFieldsConfiguration: ActiveExportColumnConfiguration.fromJson(map['exportFieldsConfiguration']),
- // TODO: migrate exportCustomFields and customFields before release
+ exportFieldsConfiguration: map.containsKey('exportFieldsConfiguration')
+ ? ActiveExportColumnConfiguration.fromJson(map['exportFieldsConfiguration'])
+ : ActiveExportColumnConfiguration(activePreset: ConvertUtil.parseBool(map['exportCustomFields']) ?? false ? ExportImportPreset.none : ExportImportPreset.bloodPressureApp),
);
factory PdfExportSettings.fromJson(String json) {
test/model/json_serialization_test.dart
@@ -245,6 +245,13 @@ void main() {
expect(v3.textDelimiter, CsvExportSettings().textDelimiter);
expect(v3.exportFieldsConfiguration.toJson(), CsvExportSettings().exportFieldsConfiguration.toJson());
});
+ test('should load settings from 1.5.7 and earlier', () {
+ final settings = CsvExportSettings.fromJson('{"fieldDelimiter":"A","textDelimiter":"B","exportHeadline":false,"exportCustomFields":true,"customFields":["timestampUnixMs","systolic","diastolic","pulse","notes","color"]}');
+ expect(settings.fieldDelimiter, 'A');
+ expect(settings.textDelimiter, 'B');
+ expect(settings.exportHeadline, false);
+ expect(settings.exportFieldsConfiguration.activePreset, ExportImportPreset.none);
+ });
});
group('PdfExportSettings', (){
@@ -294,6 +301,17 @@ void main() {
expect(v3.headerFontSize, PdfExportSettings().headerFontSize);
expect(v3.exportData, PdfExportSettings().exportData);
});
+ test('should load settings from 1.5.7 and earlier', () {
+ final settings = PdfExportSettings.fromJson('{"exportTitle":false,"exportStatistics":true,"exportData":false,"headerHeight":42.0,"cellHeight":42.0,"headerFontSize":42.0,"cellFontSize":42.0,"exportCustomFields":true,"customFields":["formattedTimestamp","systolic","diastolic","pulse","notes"]}');
+ expect(settings.exportTitle, false);
+ expect(settings.exportStatistics, true);
+ expect(settings.exportData, false);
+ expect(settings.headerHeight, 42);
+ expect(settings.cellHeight, 42);
+ expect(settings.headerFontSize, 42);
+ expect(settings.cellFontSize, 42);
+ expect(settings.exportFieldsConfiguration.activePreset, ExportImportPreset.none);
+ });
});
group('ExportColumnsManager', (){