Commit b6e5439

derdilla <derdilla06@gmail.com>
2023-08-03 15:45:33
hide "My Heart" export options by default
1 parent ac14227
Changed files (3)
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();
                   },