Commit dd0fdee
Changed files (2)
lib/model/export_import.dart
@@ -64,35 +64,10 @@ class ExportFileCreator {
}
Uint8List createCSVCFile(List<BloodPressureRecord> records) {
- List<ExportColumn> exportItems;
- if (settings.exportCustomEntries) {
- exportItems = exportColumnsConfig.getActiveExportColumns();
- } else {
- exportItems = exportColumnsConfig.getDefaultFormates().where((e) => ['timestampUnixMs','systolic','diastolic','pulse','notes'].contains(e.internalName)).toList();
- }
-
- var csvHead = '';
- if (settings.exportCsvHeadline) {
- for (var i = 0; i<exportItems.length; i++) {
- csvHead += exportItems[i].internalName;
- if (i<(exportItems.length - 1)) {
- csvHead += settings.csvFieldDelimiter;
- }
- }
- csvHead += '\r\n';
- }
-
- List<List<dynamic>> items = [];
- for (var record in records) {
- List<dynamic> row = [];
- for (var attribute in exportItems) {
- row.add(attribute.formatRecord(record));
- }
- items.add(row);
- }
- var converter = ListToCsvConverter(fieldDelimiter: settings.csvFieldDelimiter, textDelimiter: settings.csvTextDelimiter);
- var csvData = converter.convert(items);
- return Uint8List.fromList(utf8.encode(csvHead + csvData));
+ final items = exportColumnsConfig.createTable(records, settings.exportCsvHeadline);
+ final converter = ListToCsvConverter(fieldDelimiter: settings.csvFieldDelimiter, textDelimiter: settings.csvTextDelimiter);
+ final csvData = converter.convert(items);
+ return Uint8List.fromList(utf8.encode(csvData));
}
List<BloodPressureRecord> parseCSVFile(Uint8List data) {
lib/model/export_options.dart
@@ -65,7 +65,7 @@ class ExportConfigurationModel {
ExportColumn(internalName: 'notes', columnTitle: localizations.notes, formatPattern: r'$NOTE', editable: false),
ExportColumn(internalName: 'pulsePressure', columnTitle: localizations.pulsePressure, formatPattern: r'{{$SYS-$DIA}}', editable: false),
- ExportColumn(internalName: 'DATUM', columnTitle: '"My Heart" export time', formatPattern: r'$FORMAT{$TIMESTAMP,yyyy-mm-dd HH:mm:ss}', editable: false, hidden: true),
+ ExportColumn(internalName: 'DATUM', columnTitle: '"My Heart" export time', formatPattern: r'$FORMAT{$TIMESTAMP,yyyy-MM-dd HH:mm:ss}', editable: false, hidden: true),
ExportColumn(internalName: 'SYSTOLE', columnTitle: '"My Heart" export sys', formatPattern: r'$SYS', editable: false, hidden: true),
ExportColumn(internalName: 'DIASTOLE', columnTitle: '"My Heart" export dia', formatPattern: r'$DIA', editable: false, hidden: true),
ExportColumn(internalName: 'PULS', columnTitle: '"My Heart" export pul', formatPattern: r'$PUL', editable: false, hidden: true),
@@ -108,6 +108,33 @@ class ExportConfigurationModel {
UnmodifiableListView<ExportColumn> get availableFormats => UnmodifiableListView(_availableFormats);
UnmodifiableMapView<String, ExportColumn> get availableFormatsMap =>
UnmodifiableMapView(Map.fromIterable(_availableFormats, key: (e) => e.internalName));
+
+ List<List<String>> createTable(List<BloodPressureRecord> data, bool createHeadline) {
+ List<ExportColumn> exportItems;
+ if (settings.exportCustomEntries) {
+ exportItems = getActiveExportColumns();
+ } else {
+ exportItems = getDefaultFormates().where((e) => ['timestampUnixMs','systolic','diastolic','pulse','notes'].contains(e.internalName)).toList();
+ }
+
+ List<List<String>> items = [];
+ if (createHeadline) {
+ List<String> headline = [];
+ for (var i = 0; i<exportItems.length; i++) {
+ headline.add(exportItems[i].internalName);
+ }
+ items.add(headline);
+ }
+
+ for (var record in data) {
+ List<String> row = [];
+ for (var attribute in exportItems) {
+ row.add(attribute.formatRecord(record));
+ }
+ items.add(row);
+ }
+ return items;
+ }
}
class ExportColumn {