Commit b6e5439
Changed files (3)
lib
components
model
screens
subsettings
lib/components/export_item_order.dart
@@ -5,7 +5,6 @@ import 'package:badges/badges.dart' as badges;
import 'package:blood_pressure_app/components/consistent_future_builder.dart';
import 'package:blood_pressure_app/model/export_options.dart';
import 'package:blood_pressure_app/screens/subsettings/export_column_data.dart';
-import 'package:blood_pressure_app/screens/subsettings/export_fields_presets_list.dart';
import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
import 'package:provider/provider.dart';
@@ -14,10 +13,10 @@ import '../model/settings_store.dart';
class ExportItemsCustomizer extends StatefulWidget {
final List<ExportColumn> shownItems;
- final List<ExportColumn> hiddenItems;
+ final List<ExportColumn> disabledItems;
final FutureOr<void> Function(List<ExportColumn> exportItems, List<ExportColumn> exportAddableItems) onReorder;
- const ExportItemsCustomizer({super.key, required this.shownItems, required this.hiddenItems,
+ const ExportItemsCustomizer({super.key, required this.shownItems, required this.disabledItems,
required this.onReorder});
@override
@@ -64,15 +63,16 @@ class _ExportItemsCustomizerState extends State<ExportItemsCustomizer> {
contentPadding: EdgeInsets.zero
),
_buildListSectionDivider(context),
- for (int i = 0; i < widget.hiddenItems.length; i += 1)
- ListTile(
- key: Key('ul_${widget.hiddenItems[i].internalName}'),
- title: Opacity(
- opacity: 0.7,
- child: Text(widget.hiddenItems[i].columnTitle),
- ),
- trailing: _buildListItemTrailing(context, widget.hiddenItems[i]),
- contentPadding: EdgeInsets.zero
+ for (int i = 0; i < widget.disabledItems.length; i += 1)
+ (widget.disabledItems[i].hidden) ? SizedBox.shrink(key: Key('ul_${widget.disabledItems[i].internalName}'),)
+ : ListTile(
+ key: Key('ul_${widget.disabledItems[i].internalName}'),
+ title: Opacity(
+ opacity: 0.7,
+ child: Text(widget.disabledItems[i].columnTitle),
+ ),
+ trailing: _buildListItemTrailing(context, widget.disabledItems[i]),
+ contentPadding: EdgeInsets.zero
),
],
),
@@ -231,8 +231,8 @@ class _ExportItemsCustomizerState extends State<ExportItemsCustomizer> {
final ExportColumn item;
if (0 <= oldIndex && oldIndex < widget.shownItems.length) {
item = widget.shownItems.removeAt(oldIndex);
- } else if ((widget.shownItems.length + 1) <= oldIndex && oldIndex < (widget.shownItems.length + 1 + widget.hiddenItems.length)) {
- item = widget.hiddenItems.removeAt(oldIndex - (widget.shownItems.length + 1));
+ } else if ((widget.shownItems.length + 1) <= oldIndex && oldIndex < (widget.shownItems.length + 1 + widget.disabledItems.length)) {
+ item = widget.disabledItems.removeAt(oldIndex - (widget.shownItems.length + 1));
} else {
assert(false, 'oldIndex outside expected boundaries');
return;
@@ -242,10 +242,10 @@ class _ExportItemsCustomizerState extends State<ExportItemsCustomizer> {
widget.shownItems.insert(newIndex, item);
} else {
newIndex -= (widget.shownItems.length + 1);
- widget.hiddenItems.insert(newIndex, item);
+ widget.disabledItems.insert(newIndex, item);
}
- widget.onReorder(widget.shownItems, widget.hiddenItems);
+ widget.onReorder(widget.shownItems, widget.disabledItems);
}
}
lib/model/export_options.dart
@@ -56,7 +56,7 @@ class ExportConfigurationModel {
return activeFields;
}
- List<ExportColumn> getDefaultFormates() => [ // TODO: hidde fields unless user wants to explicitly see them
+ List<ExportColumn> getDefaultFormates() => [
ExportColumn(internalName: 'timestampUnixMs', columnTitle: localizations.unixTimestamp, formatPattern: r'$TIMESTAMP', editable: false),
ExportColumn(internalName: 'formattedTimestamp', columnTitle: localizations.time, formatPattern: '\$FORMAT{\$TIMESTAMP,${settings.dateFormatString}}', editable: false),
ExportColumn(internalName: 'systolic', columnTitle: localizations.sysLong, formatPattern: r'$SYS', editable: false),
@@ -65,14 +65,14 @@ 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),
- ExportColumn(internalName: 'SYSTOLE', columnTitle: '"My Heart" export sys', formatPattern: r'$SYS', editable: false),
- ExportColumn(internalName: 'DIASTOLE', columnTitle: '"My Heart" export dia', formatPattern: r'$DIA', editable: false),
- ExportColumn(internalName: 'PULS', columnTitle: '"My Heart" export pul', formatPattern: r'$PUL', editable: false),
- ExportColumn(internalName: 'Beschreibung', columnTitle: '"My Heart" export description', formatPattern: r'null', editable: false),
- ExportColumn(internalName: 'Tags', columnTitle: '"My Heart" export tags', formatPattern: r'', editable: false),
- ExportColumn(internalName: 'Gewicht', columnTitle: '"My Heart" export weight', formatPattern: r'0.0', editable: false),
- ExportColumn(internalName: 'Sauerstoffsättigung', columnTitle: '"My Heart" export oxygen', formatPattern: r'0', 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: '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),
+ ExportColumn(internalName: 'Beschreibung', columnTitle: '"My Heart" export description', formatPattern: r'null', editable: false, hidden: true),
+ ExportColumn(internalName: 'Tags', columnTitle: '"My Heart" export tags', formatPattern: r'', editable: false, hidden: true),
+ ExportColumn(internalName: 'Gewicht', columnTitle: '"My Heart" export weight', formatPattern: r'0.0', editable: false, hidden: true),
+ ExportColumn(internalName: 'Sauerstoffsättigung', columnTitle: '"My Heart" export oxygen', formatPattern: r'0', editable: false, hidden: true),
];
void addOrUpdate(ExportColumn format) {
@@ -133,13 +133,15 @@ class ExportColumn {
late final String formatPattern;
final bool editable;
+ /// doesn't show up as unused / hidden field in list
+ final bool hidden;
/// Example: ExportColumn(internalColumnName: 'pulsePressure', columnTitle: 'Pulse pressure', formatPattern: '{{$SYS-$DIA}}')
- ExportColumn({required this.internalName, required this.columnTitle, required String formatPattern, this.editable = true}) {
+ ExportColumn({required this.internalName, required this.columnTitle, required String formatPattern, this.editable = true, this.hidden = false}) {
this.formatPattern = formatPattern.replaceAll('{{}}', '');
}
- ExportColumn.fromJson(Map<String, dynamic> json, [this.editable = true]) {
+ ExportColumn.fromJson(Map<String, dynamic> json, [this.editable = true, this.hidden = false]) {
ExportColumn(
internalName: json['internalColumnName'],
columnTitle: json['columnTitle'],
lib/screens/subsettings/export_import_screen.dart
@@ -145,7 +145,7 @@ class _ExportFieldCustomisationSettingState extends State<ExportFieldCustomisati
(settings.exportFormat == ExportFormat.csv && settings.exportCustomEntries) ?
ExportItemsCustomizer(
shownItems: activeFields,
- hiddenItems: hiddenFields,
+ disabledItems: hiddenFields,
onReorder: (exportItems, exportAddableItems) {
settings.exportItems = exportItems.map((e) => e.internalName).toList();
},