Commit 711352e

derdilla <derdilla06@gmail.com>
2023-08-28 16:49:53
finalize horizontal lines feature
1 parent 4984a5d
lib/components/measurement_graph.dart
@@ -94,7 +94,8 @@ class _LineChartState extends State<_LineChart> {
                                 if (settings.drawRegressionLines)
                                   _buildRegressionLine(pulSpots),
                                 for (final horizontalLine in settings.horizontalGraphLines)
-                                  _buildHorizontalLine(horizontalLine, graphBegin!, graphEnd!),
+                                  if (horizontalLine.height < maxValue && horizontalLine.height > (settings.validateInputs ? 30 : 0))
+                                    _buildHorizontalLine(horizontalLine, graphBegin!, graphEnd!),
                               ]
                           ),
                         );
lib/l10n/app_en.arb
@@ -415,5 +415,7 @@
   "linePositionY": "Line position (y)",
   "@linePositionY": {},
   "customGraphMarkings": "Custom markings",
-  "@customGraphMarkings": {}
+  "@customGraphMarkings": {},
+  "addLine": "Add line",
+  "@addLine": {}
 }
lib/model/ram_only_implementations.dart
@@ -7,6 +7,8 @@ import 'package:blood_pressure_app/model/settings_store.dart';
 import 'package:file_saver/file_saver.dart' show MimeType;
 import 'package:flutter/material.dart';
 
+import 'horizontal_graph_line.dart';
+
 class RamBloodPressureModel extends ChangeNotifier implements BloodPressureModel {
   final List<BloodPressureRecord> _records = [];
 
lib/screens/subsettings/graph_markings.dart
@@ -36,30 +36,30 @@ class GraphMarkingsScreen extends StatelessWidget {
               if (i > lines.length) { // last row
                 return ListTile(
                   leading: const Icon(Icons.add),
+                  title: Text(localizations.addLine),
                   onTap: () async {
                     final color = await showDialog<Color>(context: context,
                         builder: (context) => SimpleDialog(
                           children: [MaterialColorPicker(
-                              circleSize: 53,
-                              onMainColorChange: (color) {
-                                Navigator.of(context).pop(color);
-                              },
-                            )],));
+                            circleSize: 53,
+                            onMainColorChange: (color) {
+                              Navigator.of(context).pop(color);
+                            },
+                          )],));
                     if (!context.mounted) return;
                     final height = await showDialog<int>(context: context,
-                      builder: (context) => NumberInputDialoge(
-                        hintText: localizations.linePositionY,
-                        onParsableSubmit: (value) {
-                          Navigator.of(context).pop(value);
-                        }
-                      )
+                        builder: (context) => NumberInputDialoge(
+                            hintText: localizations.linePositionY,
+                            onParsableSubmit: (value) {
+                              Navigator.of(context).pop(value);
+                            }
+                        )
                     );
 
                     if (color == null || height == null) return;
                     lines.add(HorizontalGraphLine(color, height));
                     settings.horizontalGraphLines = lines;
                   },
-                  title: Text(localizations.addEntry),
                 );
               }
               return ListTile(
lib/screens/add_measurement.dart
@@ -134,8 +134,6 @@ class _AddMeasurementPageState extends State<AddMeasurementPage> {
                       ValueInput(
                           key: const Key('txtPul'),
                           initialValue: (_pulse ?? '').toString(),
-                          minLines: 1,
-                          maxLines: 4, // TODO: check if this shouldn't be part of note input
                           hintText: AppLocalizations.of(context)!.pulLong,
                           basicValidation: !settings.allowMissingValues,
                           preValidation: (v) => _pulse = int.tryParse(v ?? ''),
@@ -149,6 +147,8 @@ class _AddMeasurementPageState extends State<AddMeasurementPage> {
                       ),
                       TextFormField(
                         initialValue: (_note ?? '').toString(),
+                        minLines: 1,
+                        maxLines: 4,
                         decoration: InputDecoration(hintText: AppLocalizations.of(context)?.addNote),
                         validator: (String? value) {
                           _note = value;