Commit 672096b
Changed files (36)
lib
components
measurement_list
model
blood_pressure
export_import
storage
screens
lib/components/dialoges/add_export_column_dialoge.dart
@@ -1,5 +1,5 @@
import 'package:blood_pressure_app/components/measurement_list/measurement_list_entry.dart';
-import 'package:blood_pressure_app/model/blood_pressure.dart';
+import 'package:blood_pressure_app/model/blood_pressure/record.dart';
import 'package:blood_pressure_app/model/export_import/column.dart';
import 'package:blood_pressure_app/model/export_import/record_formatter.dart';
import 'package:blood_pressure_app/model/storage/settings_store.dart';
@@ -98,8 +98,6 @@ class _AddExportColumnDialogeState extends State<AddExportColumnDialoge> with Si
: TimeColumn(csvTitle, timePattern!);
Navigator.pop(context, column);
}
- } else {
- print(formKey.currentState?.validate());
}
},
child: Text(localizations.btnSave)
lib/components/dialoges/add_measurement.dart
@@ -2,7 +2,8 @@ import 'dart:math';
import 'package:blood_pressure_app/components/date_time_picker.dart';
import 'package:blood_pressure_app/components/settings/settings_widgets.dart';
-import 'package:blood_pressure_app/model/blood_pressure.dart';
+import 'package:blood_pressure_app/model/blood_pressure/needle_pin.dart';
+import 'package:blood_pressure_app/model/blood_pressure/record.dart';
import 'package:blood_pressure_app/model/storage/storage.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
lib/components/measurement_list/measurement_list.dart
@@ -1,5 +1,5 @@
import 'package:blood_pressure_app/components/measurement_list/measurement_list_entry.dart';
-import 'package:blood_pressure_app/model/blood_pressure.dart';
+import 'package:blood_pressure_app/model/blood_pressure/record.dart';
import 'package:blood_pressure_app/model/storage/settings_store.dart';
import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
lib/components/measurement_list/measurement_list_entry.dart
@@ -1,5 +1,6 @@
import 'package:blood_pressure_app/components/dialoges/add_measurement.dart';
-import 'package:blood_pressure_app/model/blood_pressure.dart';
+import 'package:blood_pressure_app/model/blood_pressure/model.dart';
+import 'package:blood_pressure_app/model/blood_pressure/record.dart';
import 'package:blood_pressure_app/model/storage/storage.dart';
import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
lib/model/blood_pressure.dart → lib/model/blood_pressure/model.dart
@@ -1,6 +1,8 @@
import 'dart:async';
import 'dart:convert';
+import 'package:blood_pressure_app/model/blood_pressure/needle_pin.dart';
+import 'package:blood_pressure_app/model/blood_pressure/record.dart';
import 'package:blood_pressure_app/model/storage/storage.dart';
import 'package:blood_pressure_app/screens/error_reporting_screen.dart';
import 'package:blood_pressure_app/screens/subsettings/export_import/export_button_bar.dart';
@@ -43,13 +45,13 @@ class BloodPressureModel extends ChangeNotifier {
}
FutureOr<void> _onDBCreate(Database db, int version) {
- return db.execute('CREATE TABLE bloodPressureModel('
- 'timestamp INTEGER(14) PRIMARY KEY,'
- 'systolic INTEGER, diastolic INTEGER,'
- 'pulse INTEGER,'
- 'notes STRING,'
- 'needlePin STRING)');
- }
+ return db.execute('CREATE TABLE bloodPressureModel('
+ 'timestamp INTEGER(14) PRIMARY KEY,'
+ 'systolic INTEGER, diastolic INTEGER,'
+ 'pulse INTEGER,'
+ 'notes STRING,'
+ 'needlePin STRING)');
+ }
FutureOr<void> _onDBUpgrade(Database db, int oldVersion, int newVersion) async {
// When adding more versions the upgrade procedure proposed in https://stackoverflow.com/a/75153875/21489239
@@ -149,97 +151,15 @@ class BloodPressureModel extends ChangeNotifier {
final needlePinJson = e['needlePin'] as String?;
final needlePin = (needlePinJson != null) ? jsonDecode(needlePinJson) : null;
records.add(BloodPressureRecord(
- DateTime.fromMillisecondsSinceEpoch(e['timestamp'] as int),
- e['systolic'] as int?,
- e['diastolic'] as int?,
- e['pulse'] as int?,
- e['notes'].toString(),
- needlePin: (needlePin != null) ? MeasurementNeedlePin.fromJson(needlePin) : null
+ DateTime.fromMillisecondsSinceEpoch(e['timestamp'] as int),
+ e['systolic'] as int?,
+ e['diastolic'] as int?,
+ e['pulse'] as int?,
+ e['notes'].toString(),
+ needlePin: (needlePin != null) ? MeasurementNeedlePin.fromJson(needlePin) : null
));
}
return records;
}
}
-@immutable
-class BloodPressureRecord {
- late final DateTime creationTime;
- final int? systolic;
- final int? diastolic;
- final int? pulse;
- final String notes;
- final MeasurementNeedlePin? needlePin;
-
- BloodPressureRecord(DateTime creationTime, this.systolic, this.diastolic, this.pulse, this.notes, {
- this.needlePin
- }) {
- if (creationTime.millisecondsSinceEpoch > 0) {
- this.creationTime = creationTime;
- } else {
- assert(false, "Tried to create BloodPressureRecord at or before epoch");
- this.creationTime = DateTime.fromMillisecondsSinceEpoch(1);
- }
- }
-
- @override
- String toString() {
- return 'BloodPressureRecord($creationTime, $systolic, $diastolic, $pulse, $notes, $needlePin)';
- }
-}
-
-@immutable
-class MeasurementNeedlePin {
- final Color color;
-
- const MeasurementNeedlePin(this.color);
- // When updating this, remember to be backwards compatible
- MeasurementNeedlePin.fromJson(Map<String, dynamic> json)
- : color = Color(json['color']);
- Map<String, dynamic> toJson() => {
- 'color': color.value,
- };
-
- @override
- String toString() {
- return 'MeasurementNeedlePin{$color}';
- }
-}
-
-// source: https://pressbooks.library.torontomu.ca/vitalsign/chapter/blood-pressure-ranges/ (last access: 14.11.2023)
-class BloodPressureWarnValues {
- BloodPressureWarnValues._create();
-
- static String source = 'https://pressbooks.library.torontomu.ca/vitalsign/chapter/blood-pressure-ranges/';
-
- static int getUpperDiaWarnValue(int age) {
- if (age <= 2) {
- return 70;
- } else if (age <= 13) {
- return 80;
- } else if (age <= 18) {
- return 80;
- } else if (age <= 40) {
- return 80;
- } else if (age <= 60) {
- return 90;
- } else {
- return 90;
- }
- }
-
- static int getUpperSysWarnValue(int age) {
- if (age <= 2) {
- return 100;
- } else if (age <= 13) {
- return 120;
- } else if (age <= 18) {
- return 120;
- } else if (age <= 40) {
- return 125;
- } else if (age <= 60) {
- return 145;
- } else {
- return 145;
- }
- }
-}
lib/model/blood_pressure/needle_pin.dart
@@ -0,0 +1,19 @@
+import 'package:flutter/material.dart';
+
+@immutable
+class MeasurementNeedlePin {
+ final Color color;
+
+ const MeasurementNeedlePin(this.color);
+ // When updating this, remember to be backwards compatible
+ MeasurementNeedlePin.fromJson(Map<String, dynamic> json)
+ : color = Color(json['color']);
+ Map<String, dynamic> toJson() => {
+ 'color': color.value,
+ };
+
+ @override
+ String toString() {
+ return 'MeasurementNeedlePin{$color}';
+ }
+}
\ No newline at end of file
lib/model/blood_pressure/record.dart
@@ -0,0 +1,28 @@
+import 'package:blood_pressure_app/model/blood_pressure/needle_pin.dart';
+import 'package:flutter/material.dart';
+
+@immutable
+class BloodPressureRecord {
+ late final DateTime creationTime;
+ final int? systolic;
+ final int? diastolic;
+ final int? pulse;
+ final String notes;
+ final MeasurementNeedlePin? needlePin;
+
+ BloodPressureRecord(DateTime creationTime, this.systolic, this.diastolic, this.pulse, this.notes, {
+ this.needlePin
+ }) {
+ if (creationTime.millisecondsSinceEpoch > 0) {
+ this.creationTime = creationTime;
+ } else {
+ assert(false, "Tried to create BloodPressureRecord at or before epoch");
+ this.creationTime = DateTime.fromMillisecondsSinceEpoch(1);
+ }
+ }
+
+ @override
+ String toString() {
+ return 'BloodPressureRecord($creationTime, $systolic, $diastolic, $pulse, $notes, $needlePin)';
+ }
+}
\ No newline at end of file
lib/model/blood_pressure/warn_values.dart
@@ -0,0 +1,38 @@
+// source: https://pressbooks.library.torontomu.ca/vitalsign/chapter/blood-pressure-ranges/ (last access: 14.11.2023)
+class BloodPressureWarnValues {
+ BloodPressureWarnValues._create();
+
+ static String source = 'https://pressbooks.library.torontomu.ca/vitalsign/chapter/blood-pressure-ranges/';
+
+ static int getUpperDiaWarnValue(int age) {
+ if (age <= 2) {
+ return 70;
+ } else if (age <= 13) {
+ return 80;
+ } else if (age <= 18) {
+ return 80;
+ } else if (age <= 40) {
+ return 80;
+ } else if (age <= 60) {
+ return 90;
+ } else {
+ return 90;
+ }
+ }
+
+ static int getUpperSysWarnValue(int age) {
+ if (age <= 2) {
+ return 100;
+ } else if (age <= 13) {
+ return 120;
+ } else if (age <= 18) {
+ return 120;
+ } else if (age <= 40) {
+ return 125;
+ } else if (age <= 60) {
+ return 145;
+ } else {
+ return 145;
+ }
+ }
+}
\ No newline at end of file
lib/model/export_import/column.dart
@@ -1,6 +1,7 @@
import 'dart:convert';
-import 'package:blood_pressure_app/model/blood_pressure.dart';
+import 'package:blood_pressure_app/model/blood_pressure/needle_pin.dart';
+import 'package:blood_pressure_app/model/blood_pressure/record.dart';
import 'package:blood_pressure_app/model/export_import/import_field_type.dart';
import 'package:blood_pressure_app/model/export_import/record_formatter.dart';
import 'package:flutter/material.dart';
lib/model/export_import/csv_converter.dart
@@ -1,5 +1,6 @@
-import 'package:blood_pressure_app/model/blood_pressure.dart';
+import 'package:blood_pressure_app/model/blood_pressure/needle_pin.dart';
+import 'package:blood_pressure_app/model/blood_pressure/record.dart';
import 'package:blood_pressure_app/model/export_import/column.dart';
import 'package:blood_pressure_app/model/export_import/import_field_type.dart' show RowDataFieldType;
import 'package:blood_pressure_app/model/export_import/record_parsing_result.dart';
lib/model/export_import/import_field_type.dart
@@ -1,4 +1,3 @@
-import 'package:blood_pressure_app/model/blood_pressure.dart';
import 'package:blood_pressure_app/model/export_import/record_formatter.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
lib/model/export_import/pdf_converter.dart
@@ -1,7 +1,7 @@
import 'dart:typed_data';
import 'dart:ui';
-import 'package:blood_pressure_app/model/blood_pressure.dart';
+import 'package:blood_pressure_app/model/blood_pressure/record.dart';
import 'package:blood_pressure_app/model/blood_pressure_analyzer.dart';
import 'package:blood_pressure_app/model/storage/export_columns_store.dart';
import 'package:blood_pressure_app/model/storage/export_pdf_settings_store.dart';
lib/model/export_import/record_formatter.dart
@@ -1,6 +1,7 @@
import 'dart:convert';
-import 'package:blood_pressure_app/model/blood_pressure.dart';
+import 'package:blood_pressure_app/model/blood_pressure/needle_pin.dart';
+import 'package:blood_pressure_app/model/blood_pressure/record.dart';
import 'package:blood_pressure_app/model/export_import/import_field_type.dart';
import 'package:flutter/material.dart';
import 'package:function_tree/function_tree.dart';
lib/model/export_import/record_parsing_result.dart
@@ -1,5 +1,5 @@
-import 'package:blood_pressure_app/model/blood_pressure.dart';
+import 'package:blood_pressure_app/model/blood_pressure/record.dart';
/// Indicate a possible error during record parsing.
class RecordParsingResult {
lib/model/storage/update_legacy_settings.dart
@@ -1,6 +1,6 @@
import 'dart:convert';
-import 'package:blood_pressure_app/model/blood_pressure.dart';
+import 'package:blood_pressure_app/model/blood_pressure/warn_values.dart';
import 'package:blood_pressure_app/model/export_import/column.dart';
import 'package:blood_pressure_app/model/export_import/export_configuration.dart';
import 'package:blood_pressure_app/model/horizontal_graph_line.dart';
lib/model/blood_pressure_analyzer.dart
@@ -1,6 +1,6 @@
import 'dart:math';
-import 'package:blood_pressure_app/model/blood_pressure.dart';
+import 'package:blood_pressure_app/model/blood_pressure/record.dart';
import 'package:collection/collection.dart';
class BloodPressureAnalyser {
lib/model/horizontal_graph_line.dart
@@ -1,4 +1,3 @@
-import 'package:blood_pressure_app/model/blood_pressure.dart';
import 'package:flutter/material.dart';
class HorizontalGraphLine {
lib/model/ram_only_implementations.dart
@@ -1,6 +1,7 @@
import 'dart:collection';
-import 'package:blood_pressure_app/model/blood_pressure.dart';
+import 'package:blood_pressure_app/model/blood_pressure/model.dart';
+import 'package:blood_pressure_app/model/blood_pressure/record.dart';
import 'package:flutter/material.dart';
class RamBloodPressureModel extends ChangeNotifier implements BloodPressureModel {
lib/screens/subsettings/warn_about_screen.dart
@@ -1,4 +1,4 @@
-import 'package:blood_pressure_app/model/blood_pressure.dart';
+import 'package:blood_pressure_app/model/blood_pressure/warn_values.dart';
import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
import 'package:url_launcher/url_launcher.dart';
lib/screens/blood_pressure_builder.dart
@@ -1,7 +1,8 @@
import 'dart:collection';
import 'package:blood_pressure_app/components/consistent_future_builder.dart';
-import 'package:blood_pressure_app/model/blood_pressure.dart';
+import 'package:blood_pressure_app/model/blood_pressure/model.dart';
+import 'package:blood_pressure_app/model/blood_pressure/record.dart';
import 'package:blood_pressure_app/model/storage/intervall_store.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
lib/screens/home_screen.dart
@@ -1,5 +1,5 @@
import 'package:blood_pressure_app/components/dialoges/add_measurement.dart';
-import 'package:blood_pressure_app/model/blood_pressure.dart';
+import 'package:blood_pressure_app/model/blood_pressure/model.dart';
import 'package:blood_pressure_app/model/storage/intervall_store.dart';
import 'package:blood_pressure_app/model/storage/settings_store.dart';
import 'package:blood_pressure_app/screens/blood_pressure_builder.dart';
lib/screens/legacy_measurement_list.dart
@@ -1,7 +1,8 @@
import 'dart:collection';
import 'package:blood_pressure_app/components/dialoges/add_measurement.dart';
-import 'package:blood_pressure_app/model/blood_pressure.dart';
+import 'package:blood_pressure_app/model/blood_pressure/model.dart';
+import 'package:blood_pressure_app/model/blood_pressure/record.dart';
import 'package:blood_pressure_app/model/storage/intervall_store.dart';
import 'package:blood_pressure_app/model/storage/settings_store.dart';
import 'package:blood_pressure_app/screens/blood_pressure_builder.dart';
lib/screens/measurement_graph.dart
@@ -1,6 +1,6 @@
import 'dart:math';
-import 'package:blood_pressure_app/model/blood_pressure.dart';
+import 'package:blood_pressure_app/model/blood_pressure/record.dart';
import 'package:blood_pressure_app/model/horizontal_graph_line.dart';
import 'package:blood_pressure_app/model/storage/intervall_store.dart';
import 'package:blood_pressure_app/model/storage/settings_store.dart';
lib/screens/settings_screen.dart
@@ -4,7 +4,7 @@ import 'package:blood_pressure_app/components/consistent_future_builder.dart';
import 'package:blood_pressure_app/components/dialoges/enter_timeformat.dart';
import 'package:blood_pressure_app/components/dialoges/input_dialoge.dart';
import 'package:blood_pressure_app/components/settings/settings_widgets.dart';
-import 'package:blood_pressure_app/model/blood_pressure.dart';
+import 'package:blood_pressure_app/model/blood_pressure/warn_values.dart';
import 'package:blood_pressure_app/model/iso_lang_names.dart';
import 'package:blood_pressure_app/model/storage/storage.dart';
import 'package:blood_pressure_app/platform_integration/platform_client.dart';
lib/main.dart
@@ -1,5 +1,5 @@
import 'package:blood_pressure_app/components/consistent_future_builder.dart';
-import 'package:blood_pressure_app/model/blood_pressure.dart';
+import 'package:blood_pressure_app/model/blood_pressure/model.dart';
import 'package:blood_pressure_app/model/storage/db/config_dao.dart';
import 'package:blood_pressure_app/model/storage/db/config_db.dart';
import 'package:blood_pressure_app/model/storage/intervall_store.dart';
test/model/export_import/column_test.dart
@@ -1,4 +1,5 @@
-import 'package:blood_pressure_app/model/blood_pressure.dart';
+import 'package:blood_pressure_app/model/blood_pressure/needle_pin.dart';
+import 'package:blood_pressure_app/model/blood_pressure/record.dart';
import 'package:blood_pressure_app/model/export_import/column.dart';
import 'package:blood_pressure_app/model/export_import/import_field_type.dart';
import 'package:blood_pressure_app/model/export_import/record_formatter.dart';
test/model/export_import/csv_converter_test.dart
@@ -1,7 +1,8 @@
import 'dart:io';
-import 'package:blood_pressure_app/model/blood_pressure.dart';
+import 'package:blood_pressure_app/model/blood_pressure/needle_pin.dart';
+import 'package:blood_pressure_app/model/blood_pressure/record.dart';
import 'package:blood_pressure_app/model/export_import/csv_converter.dart';
import 'package:blood_pressure_app/model/export_import/record_parsing_result.dart';
import 'package:blood_pressure_app/model/storage/export_columns_store.dart';
test/model/export_import/pdf_converter_test.dart
@@ -1,5 +1,6 @@
-import 'package:blood_pressure_app/model/blood_pressure.dart';
+import 'package:blood_pressure_app/model/blood_pressure/needle_pin.dart';
+import 'package:blood_pressure_app/model/blood_pressure/record.dart';
import 'package:blood_pressure_app/model/export_import/pdf_converter.dart';
import 'package:blood_pressure_app/model/storage/export_columns_store.dart';
import 'package:blood_pressure_app/model/storage/export_pdf_settings_store.dart';
test/model/export_import/record_formatter_test.dart
@@ -1,6 +1,7 @@
import 'dart:convert';
-import 'package:blood_pressure_app/model/blood_pressure.dart';
+import 'package:blood_pressure_app/model/blood_pressure/needle_pin.dart';
+import 'package:blood_pressure_app/model/blood_pressure/record.dart';
import 'package:blood_pressure_app/model/export_import/import_field_type.dart';
import 'package:blood_pressure_app/model/export_import/record_formatter.dart';
import 'package:flutter/material.dart';
test/model/analyzer_test.dart
@@ -1,5 +1,5 @@
-import 'package:blood_pressure_app/model/blood_pressure.dart';
+import 'package:blood_pressure_app/model/blood_pressure/record.dart';
import 'package:blood_pressure_app/model/blood_pressure_analyzer.dart';
import 'package:flutter_test/flutter_test.dart';
test/model/bood_pressure_test.dart
@@ -1,4 +1,5 @@
-import 'package:blood_pressure_app/model/blood_pressure.dart';
+import 'package:blood_pressure_app/model/blood_pressure/model.dart';
+import 'package:blood_pressure_app/model/blood_pressure/record.dart';
import 'package:blood_pressure_app/model/ram_only_implementations.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:path/path.dart';
test/ui/components/add_measurement_dialoge_test.dart
@@ -1,6 +1,7 @@
import 'package:blood_pressure_app/components/dialoges/add_measurement.dart';
import 'package:blood_pressure_app/components/settings/color_picker_list_tile.dart';
-import 'package:blood_pressure_app/model/blood_pressure.dart';
+import 'package:blood_pressure_app/model/blood_pressure/needle_pin.dart';
+import 'package:blood_pressure_app/model/blood_pressure/record.dart';
import 'package:blood_pressure_app/model/storage/settings_store.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
test/ui/components/measurement_list_entry_test.dart
@@ -1,5 +1,6 @@
import 'package:blood_pressure_app/components/measurement_list/measurement_list_entry.dart';
-import 'package:blood_pressure_app/model/blood_pressure.dart';
+import 'package:blood_pressure_app/model/blood_pressure/needle_pin.dart';
+import 'package:blood_pressure_app/model/blood_pressure/record.dart';
import 'package:blood_pressure_app/model/storage/settings_store.dart';
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
test/ui/statistics_test.dart
@@ -1,4 +1,5 @@
-import 'package:blood_pressure_app/model/blood_pressure.dart';
+import 'package:blood_pressure_app/model/blood_pressure/model.dart';
+import 'package:blood_pressure_app/model/blood_pressure/record.dart';
import 'package:blood_pressure_app/model/ram_only_implementations.dart';
import 'package:blood_pressure_app/model/storage/export_csv_settings_store.dart';
import 'package:blood_pressure_app/model/storage/export_pdf_settings_store.dart';