diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml
index 79bc3dc4..1a3d4cfe 100644
--- a/android/app/src/main/AndroidManifest.xml
+++ b/android/app/src/main/AndroidManifest.xml
@@ -10,6 +10,7 @@
+
diff --git a/assets/images/new-design/video.png b/assets/images/new-design/video.png
new file mode 100644
index 00000000..2962aade
Binary files /dev/null and b/assets/images/new-design/video.png differ
diff --git a/assets/images/new-design/view_more.png b/assets/images/new-design/view_more.png
new file mode 100644
index 00000000..8b52a7e7
Binary files /dev/null and b/assets/images/new-design/view_more.png differ
diff --git a/assets/images/new-design/walkin.png b/assets/images/new-design/walkin.png
new file mode 100644
index 00000000..248c8788
Binary files /dev/null and b/assets/images/new-design/walkin.png differ
diff --git a/ios/Podfile.lock b/ios/Podfile.lock
index e16b62e0..fdb971fd 100644
--- a/ios/Podfile.lock
+++ b/ios/Podfile.lock
@@ -20,7 +20,7 @@ PODS:
- Firebase/Messaging (6.33.0):
- Firebase/CoreOnly
- FirebaseMessaging (~> 4.7.0)
- - firebase_core (0.5.2):
+ - firebase_core (0.5.3):
- Firebase/CoreOnly (~> 6.33.0)
- Flutter
- firebase_core_web (0.1.0):
@@ -70,7 +70,7 @@ PODS:
- Flutter
- flutter_tts (0.0.1):
- Flutter
- - "geolocator (6.0.0+4)":
+ - geolocator (6.1.9):
- Flutter
- google_maps_flutter (0.0.1):
- Flutter
@@ -110,6 +110,8 @@ PODS:
- Flutter
- local_auth (0.0.1):
- Flutter
+ - location (0.0.1):
+ - Flutter
- manage_calendar_events (0.0.1):
- Flutter
- map_launcher (0.0.1):
@@ -213,6 +215,7 @@ DEPENDENCIES:
- image_picker (from `.symlinks/plugins/image_picker/ios`)
- just_audio (from `.symlinks/plugins/just_audio/ios`)
- local_auth (from `.symlinks/plugins/local_auth/ios`)
+ - location (from `.symlinks/plugins/location/ios`)
- manage_calendar_events (from `.symlinks/plugins/manage_calendar_events/ios`)
- map_launcher (from `.symlinks/plugins/map_launcher/ios`)
- maps_launcher (from `.symlinks/plugins/maps_launcher/ios`)
@@ -315,6 +318,8 @@ EXTERNAL SOURCES:
:path: ".symlinks/plugins/just_audio/ios"
local_auth:
:path: ".symlinks/plugins/local_auth/ios"
+ location:
+ :path: ".symlinks/plugins/location/ios"
manage_calendar_events:
:path: ".symlinks/plugins/manage_calendar_events/ios"
map_launcher:
@@ -385,7 +390,7 @@ SPEC CHECKSUMS:
device_calendar: 23b28a5f1ab3bf77e34542fb1167e1b8b29a98f5
device_info: d7d233b645a32c40dfdc212de5cf646ca482f175
Firebase: 8db6f2d1b2c5e2984efba4949a145875a8f65fe5
- firebase_core: 350ba329d1641211bc6183a3236893cafdacfea7
+ firebase_core: 5d6a02f3d85acd5f8321c2d6d62877626a670659
firebase_core_web: d501d8b946b60c8af265428ce483b0fff5ad52d1
firebase_messaging: 0aea2cd5885b65e19ede58ee3507f485c992cc75
FirebaseCore: d889d9e12535b7f36ac8bfbf1713a0836a3012cd
@@ -400,7 +405,7 @@ SPEC CHECKSUMS:
flutter_local_notifications: 9e4738ce2471c5af910d961a6b7eadcf57c50186
flutter_plugin_android_lifecycle: dc0b544e129eebb77a6bfb1239d4d1c673a60a35
flutter_tts: 0f492aab6accf87059b72354fcb4ba934304771d
- geolocator: 1ae40084cc6c1586ce5ad12cfc3fd38c64d05f2f
+ geolocator: 057a0c63a43e9c5296d8ad845a3ac8e6df23d899
google_maps_flutter: c7f9c73576de1fbe152a227bfd6e6c4ae8088619
GoogleDataTransport: f56af7caa4ed338dc8e138a5d7c5973e66440833
GoogleMaps: 4b5346bddfe6911bb89155d43c903020170523ac
@@ -410,6 +415,7 @@ SPEC CHECKSUMS:
image_picker: 9c3312491f862b28d21ecd8fdf0ee14e601b3f09
just_audio: baa7252489dbcf47a4c7cc9ca663e9661c99aafa
local_auth: 25938960984c3a7f6e3253e3f8d962fdd16852bd
+ location: 3a2eed4dd2fab25e7b7baf2a9efefe82b512d740
manage_calendar_events: 0338d505ea26cdfd20cd883279bc28afa11eca34
map_launcher: e325db1261d029ff33e08e03baccffe09593ffea
maps_launcher: eae38ee13a9c3f210fa04e04bb4c073fa4c6ed92
diff --git a/lib/config/config.dart b/lib/config/config.dart
index 44ff52ed..6b45a9d0 100644
--- a/lib/config/config.dart
+++ b/lib/config/config.dart
@@ -282,6 +282,9 @@ const GET_USER_TERMS = 'Services/Patients.svc/REST/GetUserTermsAndConditions';
const UPDATE_HEALTH_TERMS =
'services/Patients.svc/REST/UpdatePateintHealthSummaryReport';
+const GET_PATIENT_HEALTH_STATS =
+ 'Services/Patients.svc/REST/Med_GetTransactionsSts';
+
//URL to get medicine and pharmacies list
const CHANNEL = 3;
const GENERAL_ID = 'Cs2020@2016\$2958';
@@ -380,6 +383,25 @@ const GET_CALL_REQUEST_TYPE_LOV =
const UPDATE_DIABETIC_RESULT =
'Services/Patients.svc/REST/Patient_UpdateDiabeticResult';
+const SEND_AVERAGE_BLOOD_SUGAR_REPORT =
+ 'Services/Notifications.svc/REST/SendAverageBloodSugarReport';
+const DEACTIVATE_DIABETIC_STATUS =
+ 'services/Patients.svc/REST/Patient_DeactivateDiabeticStatus';
+const DEACTIVATE_BLOOD_PRESSURES_STATUS =
+ 'services/Patients.svc/REST/Patient_DeactivateBloodPressureStatus';
+
+const UPDATE_BLOOD_PRESSURE_RESULT =
+ 'Services/Patients.svc/REST/Patient_UpdateBloodPressureResult';
+const SEND_AVERAGE_BLOOD_WEIGHT_REPORT =
+ 'Services/Notifications.svc/REST/SendAverageBodyWeightReport';
+const SEND_AVERAGE_BLOOD_PRESSURE_REPORT =
+ 'Services/Notifications.svc/REST/SendAverageBloodPressureReport';
+
+const UPDATE_WEIGHT_PRESSURE_RESULT =
+ 'Services/Patients.svc/REST/Patient_UpdateWeightMeasurementResult';
+const DEACTIVATE_WEIGHT_PRESSURE_RESULT =
+ 'services/Patients.svc/REST/Patient_DeactivateWeightMeasurementStatus';
+
const GET_DOCTOR_RESPONSE = 'Services/Patients.svc/REST/GetDoctorResponse';
const UPDATE_READ_STATUS = 'Services/Patients.svc/REST/UpdateReadStatus';
const INSERT_CALL_INFO = 'Services/Doctors.svc/REST/InsertCallInfo';
diff --git a/lib/config/localized_values.dart b/lib/config/localized_values.dart
index 1761dd99..a7c7d23e 100644
--- a/lib/config/localized_values.dart
+++ b/lib/config/localized_values.dart
@@ -583,6 +583,7 @@ const Map localizedValues = {
"BalanceAmount": {"en": "Wallet Amount", "ar": "مبلغ المحفظة"},
"TotalBalance": {"en": "Total Amount", "ar": "المبلغ الإجمالي"},
"CreateAdvancedPayment": {"en": "Recharge Wallet", "ar": "إعادة شحن المحفظة"},
+
"AdvancePayment": {"en": "Advance Payment", "ar": "الدفع مقدما"},
"AdvancePaymentLabel": {
"en":
@@ -1569,6 +1570,7 @@ const Map localizedValues = {
"en": "Track Delivery Driver",
"ar": "trackDeliveryDriver"
},
+
"NearestErDesc": {
"en":
"\nThis service Displays nearest branch\n among all the branches of All Habib \n medical Group based on your current Location",
@@ -1606,6 +1608,7 @@ const Map localizedValues = {
"يرجى التأكد من أن عنوان البريد الإلكتروني محدث وأن العملية لعرض الجدول الزمني"
},
"add-new-child": {"en": "ADD NEW CHILD", "ar": "إضافة طفل جديد"},
+
"send-child-email-msg": {
"en": "Send the child's schedule to the email",
"ar": "أرسل جدول الطفل إلى البريد الإلكتروني"
@@ -1619,6 +1622,38 @@ const Map localizedValues = {
"en": "Child added successfully",
"ar": "تمت إضافة الطفل بنجاح"
},
+ "bloodSugar": {"en": "Blood", "ar": "السكر في الدم"},
+ "sugar": {"en": "Sugar", "ar": ""},
+ "bloodCholesterol": {"en": "Blood", "ar": " الكولسترول في الدم"},
+
+ "cholesterol": {"en": "Cholesterol", "ar": ""},
+ "triglycerides": {"en": "Triglycerides", "ar": "الدهون الثلاثية"},
+
+ "fatInBlood": {"en": "Fat In Blood", "ar": ""},
+ "convertFrom": {"en": "Convert From", "ar": "تحويل من"},
+ "calculate": {"en": "calculate", "ar": "حساب"},
+ "enterReadingValue": {"en": "Enter the reading value", "ar": "ادخل القيمة"},
+ "result": {"en": "Result", "ar": "النتيجة"},
+ "bloodSugarConversion": {
+ "en": "Blood Sugar Conversion",
+ "ar": "السكر في الدم"
+ },
+ "convertBloodSugarStatement": {
+ "en":
+ "Convert blood sugar/glucose from mmol/l (UK standard) to mg/dlt (US standard) and vice versa.",
+ "ar":
+ "تحويل مستوى السكر في الدم من مليمول/ لتر (مقياس المملكة المتحدة) الى ملغ/ ديسيلتر (مقياس الولايات المتحدة) والعكس"
+ },
+ "convertCholesterolStatement": {
+ "en": "Convert blood cholesterol from\n mmol/l to mg/dlt and vice versa.",
+ "ar":
+ "تحويل مستوى الكولسترول في الدم من مليمول/ لتر (مقياس المملكة المتحدة) الى ملغ/ ديسيلتر (مقياس الولايات المتحدة) والعكس"
+ },
+ "triglyceridesConvertStatement": {
+ "en": "Convert Triglycerides from mmol/l to mg/dlt and vice versa.",
+ "ar":
+ "تحويل مستوى الدهون الثلاثية في الدم من مليمول/ لتر (مقياس المملكة المتحدة) الى ملغ/ ديسيلتر (مقياس الولايات المتحدة) والعكس"
+ },
"my-tracker": {"en": "My Tracker", "ar": "قراءاتي"},
"weekly": {"en": "Weekly", "ar": "أسبوعي"},
"monthly": {"en": "Monthly", "ar": "شهري"},
@@ -1638,5 +1673,14 @@ const Map localizedValues = {
"en": "To view the terms and conditions",
"ar": "لعرض الشروط والأحكام"
},
+ "WalkinAppo": {
+ "en": "Hospital Visit Appointment",
+ "ar": "موعد زيارة للمستشفى"
+ },
+ "videoAppo": {"en": "Video Call Appointment", "ar": "موعد اتصال فيديو"},
// "visit": {"en" : "Visit", "ar": "الزيارة"},
+ "weight-add": {"en": "Enter Weight Value", "ar": "أدخل الوزن "},
+ "systolic-add": {"en": "Enter Systolic Value", "ar": "أدخل قيمة الإنقباض "},
+ "diastolic-add": {"en": "Enter Diastolic Value", "ar": "أدخل قيمة الإنبساط "},
+ "cmc-heading": {"en": "Comprehensive Medical Checkup", "ar": "فحص طبي شامل"},
};
diff --git a/lib/core/service/medical/BloodPressureService.dart b/lib/core/service/medical/BloodPressureService.dart
index f2681191..82130750 100644
--- a/lib/core/service/medical/BloodPressureService.dart
+++ b/lib/core/service/medical/BloodPressureService.dart
@@ -68,6 +68,19 @@ class BloodPressureService extends BaseService {
super.error = error;
}, body: Map());
}
+ Future sendReportByEmail() async {
+ hasError = false;
+ super.error = "";
+ Map body = Map();
+ body['isDentalAllowedBackend'] = false;
+ body['to'] = user.emailAddress;
+ await baseAppClient.post(SEND_AVERAGE_BLOOD_PRESSURE_REPORT,
+ onSuccess: (response, statusCode) async {},
+ onFailure: (String error, int statusCode) {
+ hasError = true;
+ super.error = error;
+ }, body: body);
+ }
addDiabtecResult(
{String bloodPressureDate,
@@ -93,4 +106,43 @@ class BloodPressureService extends BaseService {
super.error = error;
}, body: body);
}
+
+ updateDiabtecResult(
+ {String bloodPressureDate,
+ String diastolicPressure,
+ String systolicePressure,
+ int measuredArm}) async {
+ hasError = false;
+ super.error = "";
+
+ Map body = Map();
+ body['BloodPressureDate'] = bloodPressureDate;
+ body['DiastolicPressure'] = diastolicPressure;
+ body['SystolicePressure'] = systolicePressure;
+ body['MeasuredArm'] ='$measuredArm';
+ body['isDentalAllowedBackend'] = false;
+
+ await baseAppClient.post(UPDATE_BLOOD_PRESSURE_RESULT,
+ onSuccess: (response, statusCode) async {
+
+ },
+ onFailure: (String error, int statusCode) {
+ hasError = true;
+ super.error = error;
+ }, body: body);
+ }
+
+ Future deactivateDiabeticStatus({int lineItemNo }) async {
+ hasError = false;
+ super.error = "";
+ Map body = Map();
+ body['isDentalAllowedBackend'] = false;
+ body['LineItemNo'] =lineItemNo;
+ await baseAppClient.post(DEACTIVATE_BLOOD_PRESSURES_STATUS,
+ onSuccess: (response, statusCode) async {},
+ onFailure: (String error, int statusCode) {
+ hasError = true;
+ super.error = error;
+ }, body: body);
+ }
}
diff --git a/lib/core/service/medical/BloodSugarService.dart b/lib/core/service/medical/BloodSugarService.dart
index e0c5007c..e8e2fabf 100644
--- a/lib/core/service/medical/BloodSugarService.dart
+++ b/lib/core/service/medical/BloodSugarService.dart
@@ -24,6 +24,11 @@ class BloodSugarService extends BaseService {
monthDiabtectResultAverageList.clear();
weekDiabtectResultAverageList.clear();
yearDiabtecResultAverageList.clear();
+
+ monthDiabtecPatientResult.clear();
+ weekDiabtecPatientResult.clear();
+ yearDiabtecPatientResult.clear();
+
response['List_MonthDiabtectResultAverage'].forEach((item) {
monthDiabtectResultAverageList
.add(MonthDiabtectResultAverage.fromJson(item));
@@ -76,15 +81,16 @@ class BloodSugarService extends BaseService {
body['BloodSugerDateChart'] = bloodSugerDateChart;
body['BloodSugerResult'] = bloodSugerResult;
body['DiabtecUnit'] = diabtecUnit;
- body['MeasuredTime'] = measuredTime;
+ body['MeasuredTime'] = measuredTime+1;
body['isDentalAllowedBackend'] = false;
- await baseAppClient.post(ADD_BLOOD_PRESSURE_RESULT,
+ await baseAppClient.post(ADD_DIABTEC_RESULT,
onSuccess: (response, statusCode) async {},
onFailure: (String error, int statusCode) {
hasError = true;
super.error = error;
}, body: body);
}
+
updateDiabtecResult({DateTime month,DateTime hour,String bloodSugerResult,String diabtecUnit, int measuredTime,int lineItemNo}) async {
hasError = false;
super.error = "";
@@ -93,7 +99,7 @@ class BloodSugarService extends BaseService {
body['DiabtecUnit'] = diabtecUnit;
body['BloodSugerDateChart'] = '${month.year}-${month.month}-${month.day} ${hour.hour}:${hour.minute}:00';
body['isDentalAllowedBackend'] = false;
- body['MeasuredTime'] = measuredTime;
+ body['MeasuredTime'] = measuredTime+1;
body['LineItemNo'] = lineItemNo;
await baseAppClient.post(UPDATE_DIABETIC_RESULT,
onSuccess: (response, statusCode) async {},
@@ -102,4 +108,32 @@ class BloodSugarService extends BaseService {
super.error = error;
}, body: body);
}
+
+ Future sendReportByEmail() async {
+ hasError = false;
+ super.error = "";
+ Map body = Map();
+ body['isDentalAllowedBackend'] = false;
+ body['to'] = user.emailAddress;
+ await baseAppClient.post(SEND_AVERAGE_BLOOD_SUGAR_REPORT,
+ onSuccess: (response, statusCode) async {},
+ onFailure: (String error, int statusCode) {
+ hasError = true;
+ super.error = error;
+ }, body: body);
+ }
+
+ Future deactivateDiabeticStatus({int lineItemNo }) async {
+ hasError = false;
+ super.error = "";
+ Map body = Map();
+ body['isDentalAllowedBackend'] = false;
+ body['LineItemNo'] =lineItemNo;
+ await baseAppClient.post(DEACTIVATE_DIABETIC_STATUS,
+ onSuccess: (response, statusCode) async {},
+ onFailure: (String error, int statusCode) {
+ hasError = true;
+ super.error = error;
+ }, body: body);
+ }
}
diff --git a/lib/core/service/medical/WeightPressureService.dart b/lib/core/service/medical/WeightPressureService.dart
index 27048dc8..b48c4795 100644
--- a/lib/core/service/medical/WeightPressureService.dart
+++ b/lib/core/service/medical/WeightPressureService.dart
@@ -6,11 +6,13 @@ import 'package:diplomaticquarterapp/core/model/my_trakers/weight/YearWeightMeas
import 'package:diplomaticquarterapp/core/service/base_service.dart';
class WeightService extends BaseService {
-
///Average
- List monthWeightMeasurementResultAverage = List();
- List weekWeightMeasurementResultAverage = List();
- List yearWeightMeasurementResultAverage = List();
+ List
+ monthWeightMeasurementResultAverage = List();
+ List weekWeightMeasurementResultAverage =
+ List();
+ List yearWeightMeasurementResultAverage =
+ List();
///Result
List monthWeightMeasurementResult = List();
@@ -59,7 +61,8 @@ class WeightService extends BaseService {
});
response['List_MonthWeightMeasurementResult'].forEach((item) {
- monthWeightMeasurementResult.add(WeightMeasurementResult.fromJson(item));
+ monthWeightMeasurementResult
+ .add(WeightMeasurementResult.fromJson(item));
});
response['List_YearWeightMeasurementResult'].forEach((item) {
@@ -72,9 +75,7 @@ class WeightService extends BaseService {
}
addWeightResult(
- {String weightDate,
- String weightMeasured,
- int weightUnit}) async {
+ {String weightDate, String weightMeasured, int weightUnit}) async {
hasError = false;
super.error = "";
@@ -85,9 +86,53 @@ class WeightService extends BaseService {
body['isDentalAllowedBackend'] = false;
await baseAppClient.post(ADD_WEIGHT_PRESSURE_RESULT,
- onSuccess: (response, statusCode) async {
+ onSuccess: (response, statusCode) async {},
+ onFailure: (String error, int statusCode) {
+ hasError = true;
+ super.error = error;
+ }, body: body);
+ }
+
+ updateWeightResult({int lineItemNo, int weightUnit,String weightMeasured,String weightDate}) async {
+ hasError = false;
+ super.error = "";
+ Map body = Map();
+ body['LineItemNo'] = lineItemNo;
+ body['weightUnit'] = '$weightUnit';
+ body['WeightMeasured'] = weightMeasured;
+ body['WeightDate'] = weightDate;
+ body['isDentalAllowedBackend'] = false;
+
+ await baseAppClient.post(UPDATE_WEIGHT_PRESSURE_RESULT,
+ onSuccess: (response, statusCode) async {},
+ onFailure: (String error, int statusCode) {
+ hasError = true;
+ super.error = error;
+ }, body: body);
+ }
+ Future sendReportByEmail() async {
+ hasError = false;
+ super.error = "";
+ Map body = Map();
+ body['isDentalAllowedBackend'] = false;
+ body['to'] = user.emailAddress;
+ await baseAppClient.post(SEND_AVERAGE_BLOOD_WEIGHT_REPORT,
+ onSuccess: (response, statusCode) async {},
+ onFailure: (String error, int statusCode) {
+ hasError = true;
+ super.error = error;
+ }, body: body);
+ }
+
+ deleteWeightResult({int lineItemNo, }) async {
+ hasError = false;
+ super.error = "";
+ Map body = Map();
+ body['LineItemNo'] = lineItemNo;
+ body['isDentalAllowedBackend'] = false;
- },
+ await baseAppClient.post(DEACTIVATE_WEIGHT_PRESSURE_RESULT,
+ onSuccess: (response, statusCode) async {},
onFailure: (String error, int statusCode) {
hasError = true;
super.error = error;
diff --git a/lib/core/viewModels/medical/blood_pressure_view_model.dart b/lib/core/viewModels/medical/blood_pressure_view_model.dart
index dfff5b45..ae3abbcb 100644
--- a/lib/core/viewModels/medical/blood_pressure_view_model.dart
+++ b/lib/core/viewModels/medical/blood_pressure_view_model.dart
@@ -1,33 +1,31 @@
import 'package:diplomaticquarterapp/core/enum/viewstate.dart';
import 'package:diplomaticquarterapp/core/model/my_trakers/blood_pressur/BloodPressureResult.dart';
-import 'package:diplomaticquarterapp/core/model/my_trakers/blood_sugar/DiabtecPatientResult.dart';
-import 'package:diplomaticquarterapp/core/model/my_trakers/chartData/WeekChartDate.dart';
-import 'package:diplomaticquarterapp/core/model/my_trakers/chartData/YearMonthlyChartDate.dart';
import 'package:diplomaticquarterapp/core/service/medical/BloodPressureService.dart';
-import 'package:diplomaticquarterapp/core/service/medical/BloodSugarService.dart';
import 'package:diplomaticquarterapp/locator.dart';
-import 'package:charts_flutter/flutter.dart' as charts;
+import 'package:diplomaticquarterapp/widgets/charts/app_time_series_chart.dart';
import '../../../core/viewModels/base_view_model.dart';
class BloodPressureViewMode extends BaseViewModel {
BloodPressureService bloodPressureService = locator();
- ///BLOOD
- List _bloodDiastolicPressureWeeklyTimeSeriesSalesList = List();
- List _bloodSystolicePressureWeeklyTimeSeriesSalesList = List();
+ List get monthDiabtecPatientResult =>
+ bloodPressureService.monthDiabtecPatientResult;
- List _bloodDiastolicMonthlyTimeSeriesSalesList = List();
- List _bloodSystolicMonthlyTimeSeriesSalesList = List();
+ List get weekDiabtecPatientResult =>
+ bloodPressureService.weekDiabtecPatientResult;
- List _bloodSystoliceYearTimeSeriesSalesList = List();
- List _bloodDiastolicYearTimeSeriesSalesList = List();
+ List get yearDiabtecPatientResult =>
+ bloodPressureService.yearDiabtecPatientResult;
- List get monthDiabtecPatientResult => bloodPressureService.monthDiabtecPatientResult;
+ List weightWeekTimeSeriesDataTop = [];
+ List weightWeekTimeSeriesDataLow = [];
- List get weekDiabtecPatientResult => bloodPressureService.weekDiabtecPatientResult;
+ List weighMonthTimeSeriesDataTop = [];
+ List weighMonthTimeSeriesDataLow = [];
- List get yearDiabtecPatientResult => bloodPressureService.yearDiabtecPatientResult;
+ List weightYearTimeSeriesDataTop = [];
+ List weightYearTimeSeriesDataLow = [];
Future getBloodPressure() async {
setState(ViewState.Busy);
@@ -35,114 +33,94 @@ class BloodPressureViewMode extends BaseViewModel {
await bloodPressureService.getDiabtecResults();
if (bloodPressureService.hasError) {
error = bloodPressureService.error;
- setState(ViewState.Error);
+ setState(ViewState.ErrorLocal);
} else {
+ clearDate();
bloodPressureService.weekDiabtectResultAverageList.forEach((element) {
- _bloodDiastolicPressureWeeklyTimeSeriesSalesList.add(WeekChartDate(
- x: element.bloodPressureDate,
- y: element.dailyDiastolicPressureAverageResult));
- _bloodSystolicePressureWeeklyTimeSeriesSalesList.add(WeekChartDate(
- x: element.bloodPressureDate,
- y: element.dailySystolicePressureAverageResult));
- });
+ weightWeekTimeSeriesDataTop.add(TimeSeriesSales2(
+ element.bloodPressureDate,
+ element.dailyDiastolicPressureAverageResult.toDouble()));
+ weightWeekTimeSeriesDataLow.add(TimeSeriesSales2(
+ element.bloodPressureDate,
+ element.dailySystolicePressureAverageResult.toDouble()));
- for (int index = 0;
- index < bloodPressureService.monthDiabtectResultAverageList.length;
- index++) {
- _bloodDiastolicMonthlyTimeSeriesSalesList.add(YearMonthlyChartDate(
- x: index,
- y: bloodPressureService.monthDiabtectResultAverageList[index]
- .weekDiastolicPressureAverageResult));
- _bloodSystolicMonthlyTimeSeriesSalesList.add(YearMonthlyChartDate(
- x: index,
- y: bloodPressureService.monthDiabtectResultAverageList[index]
- .weekSystolicePressureAverageResult));
- }
-
- bloodPressureService.yearDiabtecResultAverageList.forEach((element) {
- _bloodSystoliceYearTimeSeriesSalesList
- .add(WeekChartDate(x: element.date, y: element.monthSystolicePressureAverageResult));
-
- _bloodDiastolicYearTimeSeriesSalesList
- .add(WeekChartDate(x: element.date, y: element.monthDiastolicPressureAverageResult));
- });
+ for (int index = 0; index < bloodPressureService.monthDiabtectResultAverageList.length; index++) {
+
+ weighMonthTimeSeriesDataTop.add(TimeSeriesSales3(index, bloodPressureService.monthDiabtectResultAverageList[index].weekDiastolicPressureAverageResult.toDouble()));
+
+ weighMonthTimeSeriesDataLow.add(TimeSeriesSales3(index, bloodPressureService.monthDiabtectResultAverageList[index].weekSystolicePressureAverageResult.toDouble()));
+ }
+ bloodPressureService.yearDiabtecResultAverageList.forEach((element) {
+ weightYearTimeSeriesDataTop.add(TimeSeriesSales2(element.date,
+ element.monthSystolicePressureAverageResult.toDouble()));
+
+ weightYearTimeSeriesDataLow.add(TimeSeriesSales2(element.date,
+ element.monthDiastolicPressureAverageResult.toDouble()));
+ });
+
+ });
setState(ViewState.Idle);
}
}
- List> getBloodWeeklySeries() {
- return [
- charts.Series(
- id: 'Diastolic',
- colorFn: (_, __) => charts.MaterialPalette.red.shadeDefault,
- domainFn: (WeekChartDate sales, _) => sales.x,
- measureFn: (WeekChartDate sales, _) => sales.y,
- data: _bloodDiastolicPressureWeeklyTimeSeriesSalesList,
- ),
- charts.Series(
- id: 'Systolice',
- colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault,
- domainFn: (WeekChartDate sales, _) => sales.x,
- measureFn: (WeekChartDate sales, _) => sales.y,
- data: _bloodSystolicePressureWeeklyTimeSeriesSalesList,
- )
- ];
- }
- List>
- getBloodMonthlyTimeSeriesSales() {
- return [
- charts.Series(
- id: 'Sales',
- colorFn: (_, __) => charts.MaterialPalette.red.shadeDefault,
- domainFn: (YearMonthlyChartDate sales, _) => sales.x,
- measureFn: (YearMonthlyChartDate sales, _) => sales.y,
- data: _bloodDiastolicMonthlyTimeSeriesSalesList,
- ),
- charts.Series(
- id: 'Sales',
- colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault,
- domainFn: (YearMonthlyChartDate sales, _) => sales.x,
- measureFn: (YearMonthlyChartDate sales, _) => sales.y,
- data: _bloodSystolicMonthlyTimeSeriesSalesList,
- ),
- ];
+ void clearDate(){
+ weightWeekTimeSeriesDataTop.clear();
+ weightWeekTimeSeriesDataLow.clear();
+ weighMonthTimeSeriesDataTop.clear();
+ weighMonthTimeSeriesDataLow.clear();
+ weightYearTimeSeriesDataTop.clear();
+ weightYearTimeSeriesDataLow.clear();
}
- List> getBloodYearTimeSeriesSales() {
- return [
- charts.Series(
- id: 'Sales',
- colorFn: (_, __) => charts.MaterialPalette.red.shadeDefault,
- domainFn: (WeekChartDate sales, _) => sales.x,
- measureFn: (WeekChartDate sales, _) => sales.y,
- data: _bloodSystoliceYearTimeSeriesSalesList,
- ),
- charts.Series(
- id: 'Sales',
- colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault,
- domainFn: (WeekChartDate sales, _) => sales.x,
- measureFn: (WeekChartDate sales, _) => sales.y,
- data: _bloodDiastolicYearTimeSeriesSalesList,
- )
- ];
+ Future sendReportByEmail() async {
+ setState(ViewState.BusyLocal);
+
+ await bloodPressureService.sendReportByEmail();
+ if (bloodPressureService.hasError) {
+ error = bloodPressureService.error;
+ setState(ViewState.ErrorLocal);
+ } else {
+ setState(ViewState.Idle);
+ }
}
- addDiabtecResult(
+ Future addORUpdateDiabtecResult(
{String bloodPressureDate,
- String diastolicPressure,
- String systolicePressure,
- int measuredArm}) async {
+ String diastolicPressure,
+ String systolicePressure,
+ int measuredArm,bool isUpdate = false}) async {
setState(ViewState.BusyLocal);
+ if(!isUpdate)
await bloodPressureService.addDiabtecResult(
bloodPressureDate: bloodPressureDate,
diastolicPressure: diastolicPressure,
systolicePressure: systolicePressure,
measuredArm: measuredArm);
+ else
+ await bloodPressureService.updateDiabtecResult(
+ bloodPressureDate: bloodPressureDate,
+ diastolicPressure: diastolicPressure,
+ systolicePressure: systolicePressure,
+ measuredArm: measuredArm);
+ if (bloodPressureService.hasError) {
+ error = bloodPressureService.error;
+ setState(ViewState.ErrorLocal);
+ } else {
+ await getBloodPressure();
+ setState(ViewState.Idle);
+ }
+ }
+
+
+ Future deactivateDiabeticStatus({int lineItemNo}) async {
+ setState(ViewState.BusyLocal);
+
+ await bloodPressureService.deactivateDiabeticStatus(lineItemNo: lineItemNo);
if (bloodPressureService.hasError) {
error = bloodPressureService.error;
- setState(ViewState.Error);
+ setState(ViewState.ErrorLocal);
} else {
await getBloodPressure();
setState(ViewState.Idle);
diff --git a/lib/core/viewModels/medical/blood_sugar_view_model.dart b/lib/core/viewModels/medical/blood_sugar_view_model.dart
index 29cc3249..8a513992 100644
--- a/lib/core/viewModels/medical/blood_sugar_view_model.dart
+++ b/lib/core/viewModels/medical/blood_sugar_view_model.dart
@@ -5,17 +5,13 @@ import 'package:diplomaticquarterapp/core/model/my_trakers/chartData/YearMonthly
import 'package:diplomaticquarterapp/core/service/medical/BloodSugarService.dart';
import 'package:diplomaticquarterapp/locator.dart';
import 'package:charts_flutter/flutter.dart' as charts;
+import 'package:diplomaticquarterapp/widgets/charts/app_time_series_chart.dart';
import '../../../core/viewModels/base_view_model.dart';
class BloodSugarViewMode extends BaseViewModel {
BloodSugarService bloodSugarService = locator();
- ///BLOOD
- List _bloodWeeklyTimeSeriesSalesList = List();
- List _bloodMonthlyTimeSeriesSalesList = List();
- List _bloodYearTimeSeriesSalesList = List();
-
List get monthDiabtecPatientResult =>
bloodSugarService.monthDiabtecPatientResult;
@@ -25,6 +21,10 @@ class BloodSugarViewMode extends BaseViewModel {
List get yearDiabtecPatientResult =>
bloodSugarService.yearDiabtecPatientResult;
+ List bloodWeekTimeSeriesData = [];
+ List yearTimeSeriesData = [];
+ List monthTimeSeriesData = [];
+
Future getBloodSugar() async {
setState(ViewState.Busy);
await bloodSugarService.getBloodSugar();
@@ -34,70 +34,43 @@ class BloodSugarViewMode extends BaseViewModel {
setState(ViewState.Error);
} else {
bloodSugarService.weekDiabtectResultAverageList.forEach((element) {
- _bloodWeeklyTimeSeriesSalesList.add(
- WeekChartDate(x: element.dateChart, y: element.dailyAverageResult));
+ bloodWeekTimeSeriesData.add(TimeSeriesSales2(
+ element.dateChart,
+ element.dailyAverageResult.toDouble(),
+ ));
});
for (int index = 0;
index < bloodSugarService.monthDiabtectResultAverageList.length;
index++) {
- _bloodMonthlyTimeSeriesSalesList.add(YearMonthlyChartDate(
- x: index,
- y: bloodSugarService
- .monthDiabtectResultAverageList[index].weekAverageResult));
+ monthTimeSeriesData.add(TimeSeriesSales3(
+ index,
+ bloodSugarService
+ .monthDiabtectResultAverageList[index].weekAverageResult
+ .toDouble(),
+ ));
}
bloodSugarService.yearDiabtecResultAverageList.forEach((element) {
- _bloodYearTimeSeriesSalesList
- .add(WeekChartDate(x: element.date, y: element.monthAverageResult));
+ yearTimeSeriesData.add(TimeSeriesSales2(
+ element.date,
+ element.monthAverageResult.toDouble(),
+ ));
});
setState(ViewState.Idle);
}
}
- List> getBloodWeeklySeries() {
- return [
- new charts.Series(
- id: 'Sales',
- colorFn: (_, __) => charts.MaterialPalette.red.shadeDefault,
- domainFn: (WeekChartDate sales, _) => sales.x,
- measureFn: (WeekChartDate sales, _) => sales.y,
- data: _bloodWeeklyTimeSeriesSalesList,
- )
- ];
- }
-
- List>
- getBloodMonthlyTimeSeriesSales() {
- return [
- new charts.Series(
- id: 'Sales',
- colorFn: (_, __) => charts.MaterialPalette.red.shadeDefault,
- domainFn: (YearMonthlyChartDate sales, _) => sales.x,
- measureFn: (YearMonthlyChartDate sales, _) => sales.y,
- data: _bloodMonthlyTimeSeriesSalesList,
- )
- ];
- }
-
- List> getBloodYearTimeSeriesSales() {
- return [
- new charts.Series(
- id: 'Sales',
- colorFn: (_, __) => charts.MaterialPalette.red.shadeDefault,
- domainFn: (WeekChartDate sales, _) => sales.x,
- measureFn: (WeekChartDate sales, _) => sales.y,
- data: _bloodYearTimeSeriesSalesList,
- )
- ];
- }
-
- Future addDiabtecResult({String bloodSugerDateChart, String bloodSugerResult, String diabtecUnit, int measuredTime}) async {
+ Future addDiabtecResult(
+ {String bloodSugerDateChart,
+ String bloodSugerResult,
+ String diabtecUnit,
+ int measuredTime}) async {
setState(ViewState.BusyLocal);
await bloodSugarService.addDiabtecResult(
bloodSugerDateChart: bloodSugerDateChart,
- bloodSugerResult: bloodSugerResult ,
+ bloodSugerResult: bloodSugerResult,
diabtecUnit: diabtecUnit,
measuredTime: measuredTime);
if (bloodSugarService.hasError) {
@@ -109,10 +82,17 @@ class BloodSugarViewMode extends BaseViewModel {
}
}
- Future updateDiabtecResult({DateTime month,DateTime hour,String bloodSugerResult,String diabtecUnit, int measuredTime,int lineItemNo}) async {
+ Future updateDiabtecResult(
+ {DateTime month,
+ DateTime hour,
+ String bloodSugerResult,
+ String diabtecUnit,
+ int measuredTime,
+ int lineItemNo}) async {
setState(ViewState.BusyLocal);
+
await bloodSugarService.updateDiabtecResult(
- bloodSugerResult: bloodSugerResult ,
+ bloodSugerResult: bloodSugerResult,
diabtecUnit: diabtecUnit,
hour: hour,
measuredTime: measuredTime,
@@ -120,13 +100,35 @@ class BloodSugarViewMode extends BaseViewModel {
month: month);
if (bloodSugarService.hasError) {
error = bloodSugarService.error;
- setState(ViewState.Error);
+ setState(ViewState.ErrorLocal);
} else {
await getBloodSugar();
setState(ViewState.Idle);
}
}
-
-
+ Future sendReportByEmail() async {
+ setState(ViewState.BusyLocal);
+
+ await bloodSugarService.sendReportByEmail();
+ if (bloodSugarService.hasError) {
+ error = bloodSugarService.error;
+ setState(ViewState.ErrorLocal);
+ } else {
+ setState(ViewState.Idle);
+ }
+ }
+
+ Future deactivateDiabeticStatus({int lineItemNo}) async {
+ setState(ViewState.BusyLocal);
+
+ await bloodSugarService.deactivateDiabeticStatus(lineItemNo: lineItemNo);
+ if (bloodSugarService.hasError) {
+ error = bloodSugarService.error;
+ setState(ViewState.ErrorLocal);
+ } else {
+ await getBloodSugar();
+ setState(ViewState.Idle);
+ }
+ }
}
diff --git a/lib/core/viewModels/medical/weight_pressure_view_model.dart b/lib/core/viewModels/medical/weight_pressure_view_model.dart
index 29095895..42db0a58 100644
--- a/lib/core/viewModels/medical/weight_pressure_view_model.dart
+++ b/lib/core/viewModels/medical/weight_pressure_view_model.dart
@@ -9,16 +9,13 @@ import 'package:diplomaticquarterapp/core/service/medical/BloodSugarService.dart
import 'package:diplomaticquarterapp/core/service/medical/WeightPressureService.dart';
import 'package:diplomaticquarterapp/locator.dart';
import 'package:charts_flutter/flutter.dart' as charts;
+import 'package:diplomaticquarterapp/widgets/charts/app_time_series_chart.dart';
import '../../../core/viewModels/base_view_model.dart';
-class WeightPressureViewMode extends BaseViewModel {
+class WeightPressureViewModel extends BaseViewModel {
WeightService weightService = locator();
- List _weightWeeklyTimeSeriesSalesList = List();
- List _weightMonthlyTimeSeriesSalesList = List();
- List _weightYearTimeSeriesSalesList = List();
-
List get monthWeightMeasurementResult =>
weightService.monthWeightMeasurementResult;
@@ -28,6 +25,10 @@ class WeightPressureViewMode extends BaseViewModel {
List get yearWeightMeasurementResult =>
weightService.yearWeightMeasurementResult;
+ List weightWeekTimeSeriesData = [];
+ List weighMonthTimeSeriesData = [];
+ List weightYearTimeSeriesData = [];
+
Future getWeight() async {
setState(ViewState.Busy);
await weightService.getWeightAverage();
@@ -37,71 +38,84 @@ class WeightPressureViewMode extends BaseViewModel {
setState(ViewState.Error);
} else {
weightService.weekWeightMeasurementResultAverage.forEach((element) {
- _weightWeeklyTimeSeriesSalesList.add(WeekChartDate(
- x: element.weightDate, y: element.dailyAverageResult));
+ weightWeekTimeSeriesData.add(TimeSeriesSales2(
+ element.weightDate,
+ element.dailyAverageResult.toDouble(),
+ ));
});
for (int index = 0;
index < weightService.monthWeightMeasurementResultAverage.length;
index++) {
- _weightMonthlyTimeSeriesSalesList.add(YearMonthlyChartDate(
- x: index,
- y: weightService.monthWeightMeasurementResultAverage[index].weekAverageResult));
+ weighMonthTimeSeriesData.add(TimeSeriesSales3(
+ index,
+ weightService
+ .monthWeightMeasurementResultAverage[index].weekAverageResult
+ .toDouble(),
+ ));
}
weightService.yearWeightMeasurementResultAverage.forEach((element) {
- _weightYearTimeSeriesSalesList
- .add(WeekChartDate(x: element.date, y: element.monthAverageResult));
+ weightYearTimeSeriesData.add(TimeSeriesSales2(
+ element.date,
+ element.monthAverageResult.toDouble(),
+ ));
});
setState(ViewState.Idle);
}
}
- List> getWeightWeeklySeries() {
- return [
- charts.Series(
- id: 'Diastolic',
- colorFn: (_, __) => charts.MaterialPalette.red.shadeDefault,
- domainFn: (WeekChartDate sales, _) => sales.x,
- measureFn: (WeekChartDate sales, _) => sales.y,
- data: _weightWeeklyTimeSeriesSalesList,
- ),
- ];
+ addWeightResult(
+ {String weightDate, String weightMeasured, int weightUnit}) async {
+ setState(ViewState.BusyLocal);
+ await weightService.addWeightResult(
+ weightDate: weightDate,
+ weightMeasured: weightMeasured,
+ weightUnit: weightUnit,
+ );
+ if (weightService.hasError) {
+ error = weightService.error;
+ setState(ViewState.Error);
+ } else {
+ await getWeight();
+ setState(ViewState.Idle);
+ }
}
+ Future sendReportByEmail() async {
+ setState(ViewState.BusyLocal);
- List>
- getWeightMonthlyTimeSeriesSales() {
- return [
- charts.Series(
- id: 'Sales',
- colorFn: (_, __) => charts.MaterialPalette.red.shadeDefault,
- domainFn: (YearMonthlyChartDate sales, _) => sales.x,
- measureFn: (YearMonthlyChartDate sales, _) => sales.y,
- data: _weightMonthlyTimeSeriesSalesList,
- ),
- ];
+ await weightService.sendReportByEmail();
+ if (weightService.hasError) {
+ error = weightService.error;
+ setState(ViewState.ErrorLocal);
+ } else {
+ setState(ViewState.Idle);
+ }
}
- List> getWeightYearTimeSeriesSales() {
- return [
- charts.Series(
- id: 'Sales',
- colorFn: (_, __) => charts.MaterialPalette.red.shadeDefault,
- domainFn: (WeekChartDate sales, _) => sales.x,
- measureFn: (WeekChartDate sales, _) => sales.y,
- data: _weightYearTimeSeriesSalesList,
- ),
- ];
+ updateWeightResult({int lineItemNo, int weightUnit, String weightMeasured,String weightDate}) async {
+ setState(ViewState.BusyLocal);
+ await weightService.updateWeightResult(
+ lineItemNo: lineItemNo,
+ weightMeasured: weightMeasured,
+ weightUnit: weightUnit,
+ weightDate: weightDate
+ );
+ if (weightService.hasError) {
+ error = weightService.error;
+ setState(ViewState.Error);
+ } else {
+ await getWeight();
+ setState(ViewState.Idle);
+ }
}
- addWeightResult(
- {String weightDate, String weightMeasured, int weightUnit}) async {
+ deleteWeightResult({int lineItemNo, }) async {
setState(ViewState.BusyLocal);
- await weightService.addWeightResult(
- weightDate: weightDate,
- weightMeasured: weightMeasured,
- weightUnit: weightUnit,);
+ await weightService.deleteWeightResult(
+ lineItemNo: lineItemNo,
+ );
if (weightService.hasError) {
error = weightService.error;
setState(ViewState.Error);
diff --git a/lib/core/viewModels/project_view_model.dart b/lib/core/viewModels/project_view_model.dart
index baaf6b5b..2bb75305 100644
--- a/lib/core/viewModels/project_view_model.dart
+++ b/lib/core/viewModels/project_view_model.dart
@@ -32,7 +32,7 @@ class ProjectViewModel extends BaseViewModel {
Locale get appLocal => _appLocale;
- LocaleType get localeType => isArabic ? LocaleType.en : LocaleType.ar;
+ LocaleType get localeType => isArabic ? LocaleType.ar : LocaleType.en;
bool get isArabic => _isArabic;
diff --git a/lib/locator.dart b/lib/locator.dart
index a89ade41..7b4d646a 100644
--- a/lib/locator.dart
+++ b/lib/locator.dart
@@ -255,7 +255,7 @@ void setupLocator() {
locator.registerFactory(() => H2OViewModel());
locator.registerFactory(() => BloodSugarViewMode());
locator.registerFactory(() => BloodPressureViewMode());
- locator.registerFactory(() => WeightPressureViewMode());
+ locator.registerFactory(() => WeightPressureViewModel());
locator.registerFactory(() => EyeViewModel());
locator.registerFactory(() => ActiveMedicationsViewModel());
locator.registerFactory(() => AskDoctorViewModel());
diff --git a/lib/models/SmartWatch/HealthData.dart b/lib/models/SmartWatch/HealthData.dart
new file mode 100644
index 00000000..f01c3bf8
--- /dev/null
+++ b/lib/models/SmartWatch/HealthData.dart
@@ -0,0 +1,8 @@
+class healthData {
+ int MedCategoryID;
+ int MedSubCategoryID;
+ String Value;
+ String Notes;
+ String MachineDate;
+ int TransactionsListID;
+}
diff --git a/lib/models/SmartWatch/YearlyStepsResModel.dart b/lib/models/SmartWatch/YearlyStepsResModel.dart
new file mode 100644
index 00000000..728633d9
--- /dev/null
+++ b/lib/models/SmartWatch/YearlyStepsResModel.dart
@@ -0,0 +1,36 @@
+class YearlyStepsResModel {
+ double valueSum;
+ int medCategoryID;
+ int month;
+ String monthName;
+ int patientID;
+ int year;
+
+ YearlyStepsResModel(
+ {this.valueSum,
+ this.medCategoryID,
+ this.month,
+ this.monthName,
+ this.patientID,
+ this.year});
+
+ YearlyStepsResModel.fromJson(Map json) {
+ valueSum = json['ValueSum'];
+ medCategoryID = json['MedCategoryID'];
+ month = json['Month'];
+ monthName = json['MonthName'];
+ patientID = json['PatientID'];
+ year = json['Year'];
+ }
+
+ Map toJson() {
+ final Map data = new Map();
+ data['ValueSum'] = this.valueSum;
+ data['MedCategoryID'] = this.medCategoryID;
+ data['Month'] = this.month;
+ data['MonthName'] = this.monthName;
+ data['PatientID'] = this.patientID;
+ data['Year'] = this.year;
+ return data;
+ }
+}
diff --git a/lib/pages/AlHabibMedicalService/health_calculator/bmi_calculator/bmi_calculator.dart b/lib/pages/AlHabibMedicalService/health_calculator/bmi_calculator/bmi_calculator.dart
index c84053c5..68cd2c99 100644
--- a/lib/pages/AlHabibMedicalService/health_calculator/bmi_calculator/bmi_calculator.dart
+++ b/lib/pages/AlHabibMedicalService/health_calculator/bmi_calculator/bmi_calculator.dart
@@ -1,4 +1,5 @@
import 'package:diplomaticquarterapp/widgets/buttons/button.dart';
+import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:flutter/material.dart';
@@ -490,11 +491,11 @@ class _BMICalculatorState extends State {
height: 25.0,
),
Container(
- height: 100.0,
+ height: 50.0,
width: 350.0,
- child: Button(
+ child: SecondaryButton(
label: 'CALCULATE',
- onTap: () {
+ onTap: () => {
setState(() {
calculateBMI();
showTextResult();
@@ -510,7 +511,7 @@ class _BMICalculatorState extends State {
)),
);
}
- });
+ })
},
),
),
diff --git a/lib/pages/AlHabibMedicalService/health_calculator/bmr_calculator/bmr_calculator.dart b/lib/pages/AlHabibMedicalService/health_calculator/bmr_calculator/bmr_calculator.dart
index 1af0f949..01393e0b 100644
--- a/lib/pages/AlHabibMedicalService/health_calculator/bmr_calculator/bmr_calculator.dart
+++ b/lib/pages/AlHabibMedicalService/health_calculator/bmr_calculator/bmr_calculator.dart
@@ -1,4 +1,5 @@
import 'package:diplomaticquarterapp/widgets/buttons/button.dart';
+import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:flutter/material.dart';
@@ -687,9 +688,9 @@ class _BmrCalculatorState extends State {
height: 30.0,
),
Container(
- height: 100.0,
+ height: 50.0,
width: 350.0,
- child: Button(
+ child: SecondaryButton(
label: 'CALCULATE',
onTap: () {
setState(() {
diff --git a/lib/pages/AlHabibMedicalService/health_calculator/body_fat/body_fat.dart b/lib/pages/AlHabibMedicalService/health_calculator/body_fat/body_fat.dart
index 91847e37..51b4cad6 100644
--- a/lib/pages/AlHabibMedicalService/health_calculator/body_fat/body_fat.dart
+++ b/lib/pages/AlHabibMedicalService/health_calculator/body_fat/body_fat.dart
@@ -1,4 +1,5 @@
import 'package:diplomaticquarterapp/widgets/buttons/button.dart';
+import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:flutter/material.dart';
@@ -985,8 +986,13 @@ class _BodyFatState extends State {
Container(
height: 100.0,
width: 350.0,
- child: Button(
+ child: SecondaryButton(
label: 'CALCULATE',
+ // onTap: () => {
+ // setState(() {
+ // print('hiii');
+ // })
+ // }
onTap: () {
setState(() {
calculateBodyFat();
diff --git a/lib/pages/AlHabibMedicalService/health_calculator/calorie_calculator/calorie_calculator.dart b/lib/pages/AlHabibMedicalService/health_calculator/calorie_calculator/calorie_calculator.dart
index 4361425a..e2196540 100644
--- a/lib/pages/AlHabibMedicalService/health_calculator/calorie_calculator/calorie_calculator.dart
+++ b/lib/pages/AlHabibMedicalService/health_calculator/calorie_calculator/calorie_calculator.dart
@@ -1,4 +1,5 @@
import 'package:diplomaticquarterapp/widgets/buttons/button.dart';
+import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:flutter/material.dart';
@@ -648,7 +649,7 @@ class _CalorieCalculatorState extends State {
Container(
height: 100.0,
width: 350.0,
- child: Button(
+ child: SecondaryButton(
label: 'CALCULATE',
onTap: () {
setState(() {
diff --git a/lib/pages/AlHabibMedicalService/health_calculator/carbs/carbs.dart b/lib/pages/AlHabibMedicalService/health_calculator/carbs/carbs.dart
index e273b075..50152328 100644
--- a/lib/pages/AlHabibMedicalService/health_calculator/carbs/carbs.dart
+++ b/lib/pages/AlHabibMedicalService/health_calculator/carbs/carbs.dart
@@ -1,4 +1,5 @@
import 'package:diplomaticquarterapp/widgets/buttons/button.dart';
+import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:flutter/material.dart';
@@ -329,9 +330,9 @@ class _CarbsState extends State {
height: 55.0,
),
Container(
- height: 100.0,
+ height: 50.0,
width: 350.0,
- child: Button(
+ child: SecondaryButton(
label: 'CALCULATE',
onTap: () {
setState(() {
diff --git a/lib/pages/AlHabibMedicalService/health_calculator/delivery_due/delivery_due.dart b/lib/pages/AlHabibMedicalService/health_calculator/delivery_due/delivery_due.dart
index c9993b95..c69f0564 100644
--- a/lib/pages/AlHabibMedicalService/health_calculator/delivery_due/delivery_due.dart
+++ b/lib/pages/AlHabibMedicalService/health_calculator/delivery_due/delivery_due.dart
@@ -1,5 +1,6 @@
import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
import 'package:diplomaticquarterapp/widgets/buttons/button.dart';
+import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:flutter/material.dart';
@@ -111,9 +112,9 @@ class _DeliveryDueState extends State {
height: 280.0,
),
Container(
- height: 100.0,
+ height: 50.0,
width: 350.0,
- child: Button(
+ child: SecondaryButton(
label: 'CALCULATE',
onTap: () {
setState(() {
diff --git a/lib/pages/AlHabibMedicalService/health_calculator/ideal_body/ideal_body.dart b/lib/pages/AlHabibMedicalService/health_calculator/ideal_body/ideal_body.dart
index 9bdbfb36..2aff7836 100644
--- a/lib/pages/AlHabibMedicalService/health_calculator/ideal_body/ideal_body.dart
+++ b/lib/pages/AlHabibMedicalService/health_calculator/ideal_body/ideal_body.dart
@@ -1,4 +1,5 @@
import 'package:diplomaticquarterapp/widgets/buttons/button.dart';
+import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:flutter/material.dart';
@@ -518,7 +519,7 @@ class _IdealBodyState extends State {
Container(
height: 100.0,
width: 350.0,
- child: Button(
+ child: SecondaryButton(
label: 'CALCULATE',
onTap: () {
setState(() {
diff --git a/lib/pages/AlHabibMedicalService/health_calculator/ovulation_period/ovulation_period.dart b/lib/pages/AlHabibMedicalService/health_calculator/ovulation_period/ovulation_period.dart
index 1a272c11..9c5dc0d3 100644
--- a/lib/pages/AlHabibMedicalService/health_calculator/ovulation_period/ovulation_period.dart
+++ b/lib/pages/AlHabibMedicalService/health_calculator/ovulation_period/ovulation_period.dart
@@ -1,5 +1,6 @@
import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
import 'package:diplomaticquarterapp/widgets/buttons/button.dart';
+import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:flutter/material.dart';
@@ -319,9 +320,9 @@ class _OvulationPeriodState extends State {
height: 220.0,
),
Container(
- height: 100.0,
+ height: 50.0,
width: 350.0,
- child: Button(
+ child: SecondaryButton(
label: 'CALCULATE',
onTap: () {
setState(() {
diff --git a/lib/pages/AlHabibMedicalService/health_converter.dart b/lib/pages/AlHabibMedicalService/health_converter.dart
index 61ea406f..2b3b1a8e 100644
--- a/lib/pages/AlHabibMedicalService/health_converter.dart
+++ b/lib/pages/AlHabibMedicalService/health_converter.dart
@@ -18,7 +18,7 @@ class _HealthConverterState extends State {
Widget build(BuildContext context) {
return AppScaffold(
isShowAppBar: true,
- appBarTitle: 'Health Converter',
+ appBarTitle: TranslationBase.of(context).converters,
body: Column(
children: [
Container(
@@ -37,9 +37,9 @@ class _HealthConverterState extends State {
);
},
child: MedicalProfileItem(
- title: 'Blood',
+ title: TranslationBase.of(context).bloodSugar,
imagePath: 'blood_sugar_icon.png',
- subTitle: 'Sugar',
+ subTitle: TranslationBase.of(context).sugar,
),
),
),
@@ -55,9 +55,9 @@ class _HealthConverterState extends State {
);
},
child: MedicalProfileItem(
- title: 'Blood',
+ title: TranslationBase.of(context).bloodCholesterol,
imagePath: 'blood_cholesterol_icon.png',
- subTitle: 'Cholesterol',
+ subTitle: TranslationBase.of(context).cholesterol,
),
),
),
@@ -77,9 +77,9 @@ class _HealthConverterState extends State {
);
},
child: MedicalProfileItem(
- title: 'Triglycerides',
+ title: TranslationBase.of(context).triglycerides,
imagePath: 'triglycerides_blood_icon.png',
- subTitle: 'Fat in blood',
+ subTitle: TranslationBase.of(context).fatInBlood,
),
),
),
diff --git a/lib/pages/AlHabibMedicalService/health_converter/blood_cholesterol.dart b/lib/pages/AlHabibMedicalService/health_converter/blood_cholesterol.dart
index 58caee36..513b50ab 100644
--- a/lib/pages/AlHabibMedicalService/health_converter/blood_cholesterol.dart
+++ b/lib/pages/AlHabibMedicalService/health_converter/blood_cholesterol.dart
@@ -1,3 +1,4 @@
+import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:flutter/material.dart';
import 'package:diplomaticquarterapp/widgets/buttons/button.dart';
import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart';
@@ -62,7 +63,7 @@ class _BloodCholesterolState extends State {
Widget build(BuildContext context) {
return AppScaffold(
isShowAppBar: true,
- appBarTitle: 'Blood Cholesterol ',
+ appBarTitle: TranslationBase.of(context).bloodCholesterol,
body: Padding(
padding: const EdgeInsets.all(16.0),
child: SingleChildScrollView(
@@ -74,7 +75,7 @@ class _BloodCholesterolState extends State {
Container(
width: 350.0,
child: Text(
- 'Convert blood cholesterol from\n mmol/l to mg/dlt and vice versa.',
+ TranslationBase.of(context).convertCholesterolStatement,
//textAlign: TextAlign.center,
style: TextStyle(fontSize: 20.0),
),
@@ -95,7 +96,7 @@ class _BloodCholesterolState extends State {
child: Row(
children: [
Texts(
- 'Convert from',
+ TranslationBase.of(context).convertFrom,
),
],
),
@@ -117,7 +118,7 @@ class _BloodCholesterolState extends State {
});
},
child: Container(
- height: 55.0,
+ height: 65.0,
width: 150.0,
decoration: BoxDecoration(
boxShadow: [
@@ -150,7 +151,7 @@ class _BloodCholesterolState extends State {
});
},
child: Container(
- height: 55.0,
+ height: 65.0,
width: 150.0,
decoration: BoxDecoration(
color: cardMMOLColor,
@@ -196,7 +197,7 @@ class _BloodCholesterolState extends State {
decoration: InputDecoration(
border: OutlineInputBorder(
borderSide: BorderSide(color: Colors.black45)),
- labelText: " Enter the reading value",
+ labelText: TranslationBase.of(context).enterReadingValue,
labelStyle: TextStyle(
color: Colors.black87,
),
@@ -209,7 +210,7 @@ class _BloodCholesterolState extends State {
Visibility(
visible: _visible,
child: Container(
- height: 95.0,
+ height: 115.0,
width: 350.0,
decoration: BoxDecoration(
color: Colors.white,
@@ -222,7 +223,7 @@ class _BloodCholesterolState extends State {
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.center,
children: [
- Texts('Result:'),
+ Texts(TranslationBase.of(context).result + ":"),
Row(
children: [
Text(
@@ -252,10 +253,10 @@ class _BloodCholesterolState extends State {
),
Flexible(
child: Container(
- height: 100.0,
+ height: 60.0,
width: 150.0,
- child: Button(
- label: 'CALCULATE',
+ child: SecondaryButton(
+ label: TranslationBase.of(context).calculate,
onTap: () {
setState(() {
_visible == false
diff --git a/lib/pages/AlHabibMedicalService/health_converter/blood_sugar.dart b/lib/pages/AlHabibMedicalService/health_converter/blood_sugar.dart
index f5d66ccf..8a7e9792 100644
--- a/lib/pages/AlHabibMedicalService/health_converter/blood_sugar.dart
+++ b/lib/pages/AlHabibMedicalService/health_converter/blood_sugar.dart
@@ -64,7 +64,7 @@ class _BloodSugarState extends State {
Widget build(BuildContext context) {
return AppScaffold(
isShowAppBar: true,
- appBarTitle: 'Blood Sugar Conversion',
+ appBarTitle: TranslationBase.of(context).bloodSugarConversion,
body: Padding(
padding: const EdgeInsets.all(16.0),
child: SingleChildScrollView(
@@ -76,7 +76,7 @@ class _BloodSugarState extends State {
Container(
width: 350.0,
child: Text(
- 'Convert blood sugar/glucose from mmol/l (UK standard) to mg/dlt (US standard) and vice versa.',
+ TranslationBase.of(context).convertBloodSugarStatement,
//textAlign: TextAlign.center,
style: TextStyle(fontSize: 20.0),
),
@@ -97,7 +97,7 @@ class _BloodSugarState extends State {
child: Row(
children: [
Texts(
- 'Convert from',
+ TranslationBase.of(context).convertFrom,
)
],
),
@@ -119,7 +119,7 @@ class _BloodSugarState extends State {
});
},
child: Container(
- height: 55.0,
+ height: 65.0,
width: 150.0,
decoration: BoxDecoration(
boxShadow: [
@@ -152,7 +152,7 @@ class _BloodSugarState extends State {
});
},
child: Container(
- height: 55.0,
+ height: 65.0,
width: 150.0,
decoration: BoxDecoration(
color: cardMMOLColor,
@@ -196,7 +196,7 @@ class _BloodSugarState extends State {
],
keyboardType: TextInputType.number,
decoration: InputDecoration(
- labelText: " Enter the reading value",
+ labelText: TranslationBase.of(context).enterReadingValue,
border: OutlineInputBorder(
borderSide: BorderSide(color: Colors.black45)),
labelStyle: TextStyle(
@@ -211,7 +211,7 @@ class _BloodSugarState extends State {
Visibility(
visible: _visible,
child: Container(
- height: 95.0,
+ height: 115.0,
width: 350.0,
decoration: BoxDecoration(
color: Colors.white,
@@ -224,7 +224,7 @@ class _BloodSugarState extends State {
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.center,
children: [
- Texts('Result:'),
+ Texts(TranslationBase.of(context).result + ": "),
Row(
children: [
Text(
@@ -254,10 +254,10 @@ class _BloodSugarState extends State {
),
Flexible(
child: Container(
- height: 100.0,
+ height: 60.0,
width: 150.0,
- child: Button(
- label: 'CALCULATE',
+ child: SecondaryButton(
+ label: TranslationBase.of(context).calculate,
onTap: () {
setState(() {
_visible == false
diff --git a/lib/pages/AlHabibMedicalService/health_converter/triglycerides.dart b/lib/pages/AlHabibMedicalService/health_converter/triglycerides.dart
index a86fdb88..4c5f9a83 100644
--- a/lib/pages/AlHabibMedicalService/health_converter/triglycerides.dart
+++ b/lib/pages/AlHabibMedicalService/health_converter/triglycerides.dart
@@ -1,3 +1,4 @@
+import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
@@ -64,7 +65,7 @@ class _TriglyceridesState extends State {
Widget build(BuildContext context) {
return AppScaffold(
isShowAppBar: true,
- appBarTitle: 'Triglycerides',
+ appBarTitle: TranslationBase.of(context).triglycerides,
body: Padding(
padding: const EdgeInsets.all(16.0),
child: SingleChildScrollView(
@@ -76,7 +77,7 @@ class _TriglyceridesState extends State {
Container(
width: 350.0,
child: Text(
- 'Convert Triglycerides from mmol/l to\n mg/dlt and vice versa.',
+ TranslationBase.of(context).triglyceridesConvertStatement,
//textAlign: TextAlign.center,
style: TextStyle(fontSize: 20.0),
),
@@ -95,7 +96,9 @@ class _TriglyceridesState extends State {
Padding(
padding: const EdgeInsets.symmetric(horizontal: 15.0),
child: Row(
- children: [Texts('Convert from')],
+ children: [
+ Texts(TranslationBase.of(context).convertFrom)
+ ],
),
),
SizedBox(
@@ -115,7 +118,7 @@ class _TriglyceridesState extends State {
});
},
child: Container(
- height: 55.0,
+ height: 65.0,
width: 150.0,
decoration: BoxDecoration(
boxShadow: [
@@ -148,7 +151,7 @@ class _TriglyceridesState extends State {
});
},
child: Container(
- height: 55.0,
+ height: 65.0,
width: 150.0,
decoration: BoxDecoration(
color: cardMMOLColor,
@@ -194,7 +197,7 @@ class _TriglyceridesState extends State {
decoration: InputDecoration(
border: OutlineInputBorder(
borderSide: BorderSide(color: Colors.black45)),
- labelText: " Enter the reading value",
+ labelText: TranslationBase.of(context).enterReadingValue,
labelStyle: TextStyle(
color: Colors.black87,
),
@@ -207,7 +210,7 @@ class _TriglyceridesState extends State {
Visibility(
visible: _visible,
child: Container(
- height: 95.0,
+ height: 115.0,
width: 350.0,
decoration: BoxDecoration(
color: Colors.white,
@@ -220,7 +223,7 @@ class _TriglyceridesState extends State {
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.center,
children: [
- Texts('Result:'),
+ Texts(TranslationBase.of(context).result + ":"),
Row(
children: [
Text(
@@ -250,10 +253,11 @@ class _TriglyceridesState extends State {
),
Flexible(
child: Container(
- height: 100.0,
+ height: 60.0,
width: 250.0,
- child: Button(
- label: 'CALCULATE',
+ child: SecondaryButton(
+ label:
+ TranslationBase.of(context).calculate.toUpperCase(),
onTap: () {
setState(() {
_visible == false
diff --git a/lib/pages/Blood/confirm_payment_page.dart b/lib/pages/Blood/confirm_payment_page.dart
index 75282190..c384b7b5 100644
--- a/lib/pages/Blood/confirm_payment_page.dart
+++ b/lib/pages/Blood/confirm_payment_page.dart
@@ -2,7 +2,6 @@ import 'package:diplomaticquarterapp/config/config.dart';
import 'package:diplomaticquarterapp/core/enum/viewstate.dart';
import 'package:diplomaticquarterapp/core/model/my_balance/AdvanceModel.dart';
import 'package:diplomaticquarterapp/core/model/my_balance/patient_info_and_mobile_number.dart';
-import 'package:diplomaticquarterapp/core/viewModels/appointment_rate_view_model.dart';
import 'package:diplomaticquarterapp/core/viewModels/medical/my_balance_view_model.dart';
import 'package:diplomaticquarterapp/models/Appointments/AppoimentAllHistoryResultList.dart';
import 'package:diplomaticquarterapp/models/Authentication/authenticated_user.dart';
@@ -166,7 +165,7 @@ class ConfirmPaymentPage extends StatelessWidget {
patientID: int.parse(advanceModel.fileNumber),
projectID: advanceModel.hospitalsModel.iD)
.then((value) {
- GifLoaderDialogUtils.hideDialog(context);
+ GifLoaderDialogUtils.hideDialog(context);
if (model.state != ViewState.ErrorLocal &&
model.state != ViewState.Error) showSMSDialog();
});
@@ -218,7 +217,8 @@ class ConfirmPaymentPage extends StatelessWidget {
authenticatedUser.firstName,
authenticatedUser.patientID,
authenticatedUser,
- browser);
+ browser,
+ false);
}
onBrowserLoadStart(String url) {
@@ -277,8 +277,8 @@ class ConfirmPaymentPage extends StatelessWidget {
String paymentReference = res['Fort_id'].toString();
GifLoaderDialogUtils.showMyDialog(AppGlobal.context);
service
- .createAdvancePayment(appo, appo.projectID.toString(), res['Amount'], res['Fort_id'],
- res['PaymentMethod'], AppGlobal.context)
+ .createAdvancePayment(appo, appo.projectID.toString(), res['Amount'],
+ res['Fort_id'], res['PaymentMethod'], AppGlobal.context)
.then((res) {
GifLoaderDialogUtils.hideDialog(AppGlobal.context);
print(res['OnlineCheckInAppointments'][0]['AdvanceNumber']);
@@ -315,5 +315,4 @@ class ConfirmPaymentPage extends StatelessWidget {
Future navigateToHome(context) async {
Navigator.of(context).pushNamed(HOME);
}
-
}
diff --git a/lib/pages/BookAppointment/BookConfirm.dart b/lib/pages/BookAppointment/BookConfirm.dart
index d7e08a66..03a28d90 100644
--- a/lib/pages/BookAppointment/BookConfirm.dart
+++ b/lib/pages/BookAppointment/BookConfirm.dart
@@ -187,27 +187,29 @@ class _BookConfirmState extends State {
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.max,
children: [
- Row(
- mainAxisAlignment: MainAxisAlignment.start,
- children: [
- Container(
- margin: EdgeInsets.fromLTRB(5.0, 0.0, 5.0, 0.0),
- child: Image.asset(
- "assets/images/new-design/icon_hospital.png"),
- ),
- Container(
- margin: EdgeInsets.fromLTRB(20.0, 5.0, 10.0, 5.0),
- child: Text(
- TranslationBase.of(context).hospital +
- ": " +
- widget.doctor.projectName,
- style: TextStyle(
- fontSize: 14.0,
- color: Colors.grey[700],
- letterSpacing: 1.0)),
- ),
- ],
- ),
+ !widget.isLiveCareAppointment ? Row(
+ mainAxisAlignment: MainAxisAlignment.start,
+ children: [
+ Container(
+ margin:
+ EdgeInsets.fromLTRB(5.0, 0.0, 5.0, 0.0),
+ child: Image.asset(
+ "assets/images/new-design/icon_hospital.png"),
+ ),
+ Container(
+ margin:
+ EdgeInsets.fromLTRB(20.0, 5.0, 10.0, 5.0),
+ child: Text(
+ TranslationBase.of(context).hospital +
+ ": " +
+ widget.doctor.projectName,
+ style: TextStyle(
+ fontSize: 14.0,
+ color: Colors.grey[700],
+ letterSpacing: 1.0)),
+ ),
+ ],
+ ) : Container(),
Row(
mainAxisAlignment: MainAxisAlignment.start,
children: [
@@ -325,7 +327,8 @@ class _BookConfirmState extends State {
Container(
margin: EdgeInsets.only(top: 5.0),
child: Text(
- TranslationBase.of(context).gender + ": " +
+ TranslationBase.of(context).gender +
+ ": " +
widget.authUser.genderDescription,
style: TextStyle(
fontSize: 12.0,
@@ -335,7 +338,9 @@ class _BookConfirmState extends State {
Container(
margin: EdgeInsets.only(top: 5.0, bottom: 3.0),
child: Text(
- TranslationBase.of(context).age + ": " + widget.authUser.age.toString(),
+ TranslationBase.of(context).age +
+ ": " +
+ widget.authUser.age.toString(),
style: TextStyle(
fontSize: 12.0,
color: Colors.grey[600],
@@ -423,7 +428,8 @@ class _BookConfirmState extends State {
context)
.then((res) {
if (res['MessageStatus'] == 1) {
- AppToast.showSuccessToast(message: TranslationBase.of(context).bookedSuccess);
+ AppToast.showSuccessToast(
+ message: TranslationBase.of(context).bookedSuccess);
print(res['AppointmentNo']);
Future.delayed(new Duration(milliseconds: 500), () {
@@ -543,13 +549,13 @@ class _BookConfirmState extends State {
getLiveCareAppointmentPatientShare(context, String appointmentNo,
int clinicID, int projectID, DoctorList docObject) {
- GifLoaderDialogUtils.hideDialog(context);
widget.service
.getLiveCareAppointmentPatientShare(
appointmentNo, clinicID, projectID, context)
.then((res) {
print(res);
widget.patientShareResponse = new PatientShareResponse.fromJson(res);
+ GifLoaderDialogUtils.hideDialog(context);
navigateToBookSuccess(context, docObject, widget.patientShareResponse);
}).catchError((err) {
GifLoaderDialogUtils.hideDialog(context);
diff --git a/lib/pages/BookAppointment/BookSuccess.dart b/lib/pages/BookAppointment/BookSuccess.dart
index f513c434..bd6c242c 100644
--- a/lib/pages/BookAppointment/BookSuccess.dart
+++ b/lib/pages/BookAppointment/BookSuccess.dart
@@ -255,7 +255,7 @@ class _BookSuccessState extends State {
minWidth: MediaQuery.of(context).size.width * 0.7,
height: 45.0,
child: RaisedButton(
- color: new Color(0xFF40ACC9),
+ color: new Color(0xffc5272d),
textColor: Colors.white,
disabledTextColor: Colors.white,
disabledColor: new Color(0xFFbcc2c4),
@@ -318,7 +318,7 @@ class _BookSuccessState extends State {
minWidth: MediaQuery.of(context).size.width * 0.7,
height: 45.0,
child: RaisedButton(
- color: new Color(0xFF40ACC9),
+ color: new Color(0xFFc5272d),
textColor: Colors.white,
disabledTextColor: Colors.white,
disabledColor: new Color(0xFFbcc2c4),
@@ -637,7 +637,12 @@ class _BookSuccessState extends State {
authenticatedUser.firstName,
authenticatedUser.patientID,
authenticatedUser,
- widget.browser);
+ widget.browser,
+ widget.patientShareResponse.isLiveCareAppointment,
+ widget.patientShareResponse.appointmentDate,
+ widget.patientShareResponse.appointmentNo,
+ widget.patientShareResponse.clinicID,
+ widget.patientShareResponse.doctorID);
}
}
diff --git a/lib/pages/BookAppointment/widgets/DoctorView.dart b/lib/pages/BookAppointment/widgets/DoctorView.dart
index d419e4af..1562c5f7 100644
--- a/lib/pages/BookAppointment/widgets/DoctorView.dart
+++ b/lib/pages/BookAppointment/widgets/DoctorView.dart
@@ -61,7 +61,7 @@ class DoctorView extends StatelessWidget {
letterSpacing: 1.0)),
Container(
margin: EdgeInsets.only(top: 3.0),
- child: Text(this.doctor.clinicName,
+ child: Text(this.doctor.clinicName != null ? this.doctor.clinicName : "",
style: TextStyle(
fontSize: 12.0,
color: Colors.grey[600],
diff --git a/lib/pages/Covid-DriveThru/Covid-TimeSlots.dart b/lib/pages/Covid-DriveThru/Covid-TimeSlots.dart
index 3e58b657..f21a9718 100644
--- a/lib/pages/Covid-DriveThru/Covid-TimeSlots.dart
+++ b/lib/pages/Covid-DriveThru/Covid-TimeSlots.dart
@@ -9,6 +9,7 @@ import 'package:diplomaticquarterapp/services/covid-drivethru/covid-drivethru.da
import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart';
import 'package:diplomaticquarterapp/uitl/app_toast.dart';
import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
+import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/dialogs/confirm_dialog.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
@@ -469,9 +470,7 @@ class _CovidTimeSlotsState extends State
}
bookCovidTestAppointment() {
-// Navigator.push(context,
-// MaterialPageRoute(builder: (context) => CovidPaymentAlert()));
-
+ GifLoaderDialogUtils.showMyDialog(context);
DoctorList docObject = new DoctorList();
docObject.doctorID = widget.selectedDoctorID;
docObject.clinicID = widget.selectedClinicID;
@@ -494,11 +493,12 @@ class _CovidTimeSlotsState extends State
print(res);
if (res['MessageStatus'] == 1) {
AppToast.showSuccessToast(message: "Appointment Booked Successfully");
- Future.delayed(new Duration(milliseconds: 1800), () {
- getPatientShare(context, res['AppointmentNo'], docObject.clinicID,
- docObject.projectID, docObject);
- });
+ // Future.delayed(new Duration(milliseconds: 1800), () {
+ getPatientShare(context, res['AppointmentNo'], docObject.clinicID,
+ docObject.projectID, docObject);
+ // });
} else {
+ GifLoaderDialogUtils.hideDialog(context);
appo = new AppoitmentAllHistoryResultList();
appo.appointmentNo = res['SameClinicApptList'][0]['AppointmentNo'];
appo.clinicID = res['SameClinicApptList'][0]['DoctorID'];
@@ -529,14 +529,16 @@ class _CovidTimeSlotsState extends State
cancelAppointment(DoctorList docObject, AppoitmentAllHistoryResultList appo,
BuildContext context) {
+ GifLoaderDialogUtils.showMyDialog(context);
ConfirmDialog.closeAlertDialog(context);
DoctorsListService service = new DoctorsListService();
service.cancelAppointment(appo, context).then((res) {
if (res['MessageStatus'] == 1) {
- Future.delayed(new Duration(milliseconds: 1500), () {
- insertAppointmentCovidTest(context, docObject);
- });
+ // Future.delayed(new Duration(milliseconds: 1500), () {
+ insertAppointmentCovidTest(context, docObject);
+ // });
} else {
+ GifLoaderDialogUtils.hideDialog(context);
AppToast.showErrorToast(message: res['ErrorEndUserMessage']);
}
}).catchError((err) {
@@ -592,6 +594,7 @@ class _CovidTimeSlotsState extends State
});
} else {}
} else {
+ GifLoaderDialogUtils.hideDialog(context);
AppToast.showErrorToast(message: res['ErrorEndUserMessage']);
}
}).catchError((err) {
diff --git a/lib/pages/MyAppointments/widgets/AppointmentCardView.dart b/lib/pages/MyAppointments/widgets/AppointmentCardView.dart
index c4299e33..0d3ac2e5 100644
--- a/lib/pages/MyAppointments/widgets/AppointmentCardView.dart
+++ b/lib/pages/MyAppointments/widgets/AppointmentCardView.dart
@@ -166,7 +166,7 @@ class _ApointmentCardState extends State {
),
Container(
transform:
- Matrix4.translationValues(15.0, -40.0, 0.0),
+ Matrix4.translationValues(15.0, -40.0, 0.0),
child: projectViewModel.isArabic
? Image.asset(
"assets/images/new-design/arrow_menu_black-ar.png",
diff --git a/lib/pages/ToDoList/ToDo.dart b/lib/pages/ToDoList/ToDo.dart
index 1066ca15..383bedb3 100644
--- a/lib/pages/ToDoList/ToDo.dart
+++ b/lib/pages/ToDoList/ToDo.dart
@@ -13,7 +13,6 @@ import 'package:diplomaticquarterapp/pages/ToDoList/payment_method_select.dart';
import 'package:diplomaticquarterapp/pages/ToDoList/widgets/paymentDialog.dart';
import 'package:diplomaticquarterapp/routes.dart';
import 'package:diplomaticquarterapp/services/appointment_services/GetDoctorsList.dart';
-import 'package:diplomaticquarterapp/services/clinic_services/get_clinic_service.dart';
import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart';
import 'package:diplomaticquarterapp/uitl/app_toast.dart';
import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
@@ -26,7 +25,6 @@ import 'package:flutter/material.dart';
import 'package:flutter_countdown_timer/countdown_timer_controller.dart';
import 'package:flutter_countdown_timer/current_remaining_time.dart';
import 'package:flutter_countdown_timer/flutter_countdown_timer.dart';
-import 'package:flutter_svg/flutter_svg.dart';
import 'package:provider/provider.dart';
import 'package:rating_bar/rating_bar.dart';
@@ -95,249 +93,315 @@ class _ToDoState extends State {
itemBuilder: (context, index) {
return Container(
margin: EdgeInsets.all(10.0),
- child: Card(
- margin: EdgeInsets.fromLTRB(8.0, 0.0, 8.0, 8.0),
- color: Colors.white,
- shape: RoundedRectangleBorder(
- borderRadius: BorderRadius.circular(10),
- ),
- child: Container(
- width: MediaQuery.of(context).size.width,
- padding: EdgeInsets.all(10.0),
- child: Column(
- crossAxisAlignment: CrossAxisAlignment.start,
- mainAxisSize: MainAxisSize.max,
- children: [
- Row(
- children: [
- Image.asset(
- "assets/images/new-design/time_icon.png",
- width: 20.0,
- height: 20.0),
- Container(
- margin:
- EdgeInsets.only(left: 10.0, right: 10.0),
- child: Text(
- DateUtil.getWeekDayMonthDayYearDateFormatted(
- DateUtil.convertStringToDate(
- widget.appoList[index]
- .appointmentDate),
- projectViewModel.isArabic
- ? "ar"
- : "en") +
- " " +
- widget.appoList[index].startTime
- .substring(0, 5),
- style: TextStyle(fontSize: 10.0)),
- ),
- widget.appoList[index].isLiveCareAppointment
- ? SvgPicture.asset(
- "assets/images/new-design/liveCare_logo_icon.svg",
- width: 20.0,
- height: 20.0)
- : Image.asset(
- "assets/images/new-design/hospital_address_icon.png",
- width: 20.0,
- height: 20.0),
- Container(
- margin:
- EdgeInsets.only(left: 5.0, right: 5.0),
- child: widget
- .appoList[index].isLiveCareAppointment
- ? Text(
- TranslationBase.of(context)
- .liveCareAppo,
- style: TextStyle(fontSize: 12.0))
- : Text(
- widget.appoList[index].projectName !=
- null
- ? widget
- .appoList[index].projectName
- : "-",
- overflow: TextOverflow.clip,
- maxLines: 2,
- style: TextStyle(fontSize: 10.0)),
- ),
- ],
- ),
- Container(
- margin: EdgeInsets.only(top: 5.0),
- child: Divider(
- color: Colors.grey[500],
- ),
+ child: Column(
+ children: [
+ Container(
+ child: Card(
+ margin: EdgeInsets.fromLTRB(8.0, 0.0, 8.0, 8.0),
+ color: Colors.white,
+ shape: RoundedRectangleBorder(
+ borderRadius: BorderRadius.circular(10),
),
- Flex(
- direction: Axis.horizontal,
- children: [
- Expanded(
- flex: 1,
- child: Container(
- height: MediaQuery.of(context).size.height *
- 0.1,
+ child: Container(
+ width: MediaQuery.of(context).size.width,
+ padding: EdgeInsets.all(10.0),
+ child: Column(
+ crossAxisAlignment: CrossAxisAlignment.start,
+ mainAxisSize: MainAxisSize.max,
+ children: [
+ Row(
+ children: [
+ Image.asset(
+ "assets/images/new-design/time_icon.png",
+ width: 20.0,
+ height: 20.0),
+ Container(
+ margin: EdgeInsets.only(
+ left: 10.0, right: 10.0),
+ child: Text(
+ DateUtil.getWeekDayMonthDayYearDateFormatted(
+ DateUtil.convertStringToDate(
+ widget.appoList[index]
+ .appointmentDate),
+ projectViewModel.isArabic
+ ? "ar"
+ : "en") +
+ " " +
+ widget.appoList[index].startTime
+ .substring(0, 5),
+ style: TextStyle(fontSize: 10.0)),
+ ),
+ !widget.appoList[index]
+ .isLiveCareAppointment
+ ? Image.asset(
+ "assets/images/new-design/hospital_address_icon.png",
+ width: 20.0,
+ height: 20.0)
+ : Container(),
+ Container(
+ margin: EdgeInsets.only(
+ left: 5.0, right: 5.0),
+ child: widget.appoList[index]
+ .isLiveCareAppointment
+ ? Container()
+ : Text(
+ widget.appoList[index]
+ .projectName !=
+ null
+ ? widget.appoList[index]
+ .projectName
+ : "-",
+ overflow: TextOverflow.clip,
+ maxLines: 2,
+ style:
+ TextStyle(fontSize: 10.0)),
+ ),
+ ],
+ ),
+ Container(
margin: EdgeInsets.only(top: 5.0),
- child: ClipRRect(
- borderRadius:
- BorderRadius.circular(100.0),
- child: Image.network(
- widget.appoList[index].doctorImageURL,
- fit: BoxFit.fill),
+ child: Divider(
+ color: Colors.grey[500],
),
),
- ),
- Expanded(
- flex: 3,
- child: Container(
- margin: EdgeInsets.only(
- top: 10.0, left: 20.0, right: 20.0),
- child: Column(
- crossAxisAlignment:
- CrossAxisAlignment.start,
- children: [
- Text(
- widget.appoList[index].doctorTitle +
- " " +
+ Flex(
+ direction: Axis.horizontal,
+ children: [
+ Expanded(
+ flex: 1,
+ child: Container(
+ height: MediaQuery.of(context)
+ .size
+ .height *
+ 0.1,
+ margin: EdgeInsets.only(top: 5.0),
+ child: ClipRRect(
+ borderRadius:
+ BorderRadius.circular(100.0),
+ child: Image.network(
widget.appoList[index]
- .doctorNameObj,
- style: TextStyle(
- fontSize: 14.0,
- color: Colors.black,
- fontWeight: FontWeight.bold,
- letterSpacing: 1.0)),
- Container(
- margin: EdgeInsets.only(
- top: 3.0, bottom: 3.0),
- child: Text(
- getDoctorSpeciality(widget
- .appoList[index]
- .doctorSpeciality)
- .trim(),
- style: TextStyle(
- fontSize: 12.0,
- color: Colors.grey[600],
- letterSpacing: 1.0)),
+ .doctorImageURL,
+ fit: BoxFit.fill),
+ ),
),
- Row(
- mainAxisAlignment:
- MainAxisAlignment.spaceBetween,
- mainAxisSize: MainAxisSize.max,
- children: [
- RatingBar.readOnly(
- initialRating: widget
- .appoList[index]
- .actualDoctorRate
- .toDouble(),
- size: 20.0,
- filledColor: Colors.yellow[700],
- emptyColor: Colors.grey[500],
- isHalfAllowed: true,
- halfFilledIcon: Icons.star_half,
- filledIcon: Icons.star,
- emptyIcon: Icons.star,
- ),
- ],
+ ),
+ Expanded(
+ flex: 3,
+ child: Container(
+ margin: EdgeInsets.only(
+ top: 10.0,
+ left: 20.0,
+ right: 20.0),
+ child: Column(
+ crossAxisAlignment:
+ CrossAxisAlignment.start,
+ children: [
+ Text(
+ widget.appoList[index]
+ .doctorTitle +
+ " " +
+ widget.appoList[index]
+ .doctorNameObj,
+ style: TextStyle(
+ fontSize: 14.0,
+ color: Colors.black,
+ fontWeight:
+ FontWeight.bold,
+ letterSpacing: 1.0)),
+ Container(
+ margin: EdgeInsets.only(
+ top: 3.0, bottom: 3.0),
+ child: Text(
+ getDoctorSpeciality(widget
+ .appoList[index]
+ .doctorSpeciality)
+ .trim(),
+ style: TextStyle(
+ fontSize: 12.0,
+ color: Colors.grey[600],
+ letterSpacing: 1.0)),
+ ),
+ Row(
+ mainAxisAlignment:
+ MainAxisAlignment
+ .spaceBetween,
+ mainAxisSize: MainAxisSize.max,
+ children: [
+ RatingBar.readOnly(
+ initialRating: widget
+ .appoList[index]
+ .actualDoctorRate
+ .toDouble(),
+ size: 20.0,
+ filledColor:
+ Colors.yellow[700],
+ emptyColor:
+ Colors.grey[500],
+ isHalfAllowed: true,
+ halfFilledIcon:
+ Icons.star_half,
+ filledIcon: Icons.star,
+ emptyIcon: Icons.star,
+ ),
+ ],
+ ),
+ Container(
+ child: CountdownTimer(
+ controller: new CountdownTimerController(
+ endTime: DateTime.now()
+ .millisecondsSinceEpoch +
+ (widget
+ .appoList[
+ index]
+ .remaniningHoursTocanPay *
+ 1000) *
+ 60),
+ widgetBuilder: (_,
+ CurrentRemainingTime
+ time) {
+ return time != null
+ ? Text(
+ '${time.days != null ? time.days : "0"}:${time.hours.toString().length == 1 ? "0" + time.hours.toString() : time.hours}:${time.min}:${time.sec} ' +
+ TranslationBase.of(
+ context)
+ .upcomingTimeLeft,
+ style: TextStyle(
+ fontSize: 12.0,
+ color: Color(
+ 0xff40ACC9)))
+ : Container();
+ },
+ ),
+ ),
+ ],
+ ),
),
- Container(
- child: CountdownTimer(
- controller: new CountdownTimerController(
- endTime: DateTime.now()
- .millisecondsSinceEpoch +
- (widget.appoList[index]
- .remaniningHoursTocanPay *
- 1000) *
- 60),
- widgetBuilder:
- (_, CurrentRemainingTime time) {
- return time != null
- ? Text(
- '${time.days}:${time.hours}:${time.min}:${time.sec} ' +
- TranslationBase.of(
- context)
- .upcomingTimeLeft,
+ ),
+ Expanded(
+ flex: 1,
+ child: InkWell(
+ onTap: () => performNextAction(
+ widget.appoList[index]),
+ child: Container(
+ margin: EdgeInsets.only(top: 20.0),
+ child: Column(
+ children: [
+ Image.asset(
+ getNextActionImage(widget
+ .appoList[index]
+ .nextAction),
+ width: 50.0,
+ height: 50.0),
+ Container(
+ margin:
+ EdgeInsets.only(top: 5.0),
+ child: Text(
+ getNextActionText(widget
+ .appoList[index]
+ .nextAction),
+ textAlign:
+ TextAlign.center,
style: TextStyle(
- fontSize: 12.0,
- color: Color(
- 0xff40ACC9)))
- : Container();
- },
+ fontSize: 12.0)),
+ )
+ ],
+ ),
),
),
- ],
- ),
+ )
+ ],
),
- ),
- Expanded(
- flex: 1,
- child: InkWell(
- onTap: () => performNextAction(
- widget.appoList[index]),
- child: Container(
- margin: EdgeInsets.only(top: 20.0),
- child: Column(
- children: [
- Image.asset(
- getNextActionImage(widget
+ Divider(
+ color: Colors.grey[500],
+ ),
+ Flex(
+ direction: Axis.horizontal,
+ children: [
+ Expanded(
+ flex: 2,
+ child: Container(
+ child: Text(
+ getNextActionDescription(widget
.appoList[index].nextAction),
- width: 50.0,
- height: 50.0),
- Container(
- margin: EdgeInsets.only(top: 5.0),
- child: Text(
- getNextActionText(widget
- .appoList[index]
- .nextAction),
- textAlign: TextAlign.center,
- style:
- TextStyle(fontSize: 12.0)),
- )
- ],
+ style: TextStyle(
+ fontSize: 12.0,
+ color: Colors.grey[700])),
+ ),
),
- ),
+ Expanded(
+ flex: 1,
+ child: GestureDetector(
+ onTap: () {
+ navigateToAppointmentDetails(
+ context,
+ widget.appoList[index]);
+ },
+ child: Container(
+ child: Text(
+ TranslationBase.of(context)
+ .upcomingDetails,
+ textAlign: TextAlign.end,
+ style: TextStyle(
+ fontSize: 12.0,
+ color:
+ new Color(0xFF40ACC9),
+ decoration: TextDecoration
+ .underline)),
+ ),
+ ),
+ )
+ ],
),
- )
- ],
- ),
- Divider(
- color: Colors.grey[500],
+ ],
+ ),
),
- Flex(
- direction: Axis.horizontal,
- children: [
- Expanded(
- flex: 2,
- child: Container(
- child: Text(
- getNextActionDescription(
- widget.appoList[index].nextAction),
- style: TextStyle(
- fontSize: 12.0,
- color: Colors.grey[700])),
- ),
- ),
- Expanded(
- flex: 1,
- child: GestureDetector(
- onTap: () {
- navigateToAppointmentDetails(
- context, widget.appoList[index]);
- },
- child: Container(
- child: Text(
- TranslationBase.of(context)
- .upcomingDetails,
- textAlign: TextAlign.end,
- style: TextStyle(
- fontSize: 12.0,
- color: new Color(0xFF40ACC9),
- decoration:
- TextDecoration.underline)),
+ ),
+ ),
+ Container(
+ decoration: BoxDecoration(
+ borderRadius: BorderRadius.only(
+ bottomLeft: Radius.circular(10.0),
+ bottomRight: Radius.circular(10.0)),
+ color: Color(0xff20bc44),
+ ),
+ height: 30.0,
+ margin: projectViewModel.isArabic ? EdgeInsets.fromLTRB(160.0, 0.0, 30.0, 0.0) : EdgeInsets.fromLTRB(30.0, 0.0, 160.0, 0.0),
+ transform: Matrix4.translationValues(0.0, -8.0, 0.0),
+ child: Row(
+ mainAxisAlignment: MainAxisAlignment.start,
+ children: [
+ widget.appoList[index].isLiveCareAppointment
+ ? Container(
+ margin: EdgeInsets.fromLTRB(
+ 5.0, 0.0, 5.0, 0.0),
+ child: Image.asset(
+ "assets/images/new-design/video.png"),
+ )
+ : Container(
+ margin: EdgeInsets.fromLTRB(
+ 5.0, 0.0, 5.0, 0.0),
+ child: Image.asset(
+ "assets/images/new-design/walkin.png"),
),
- ),
- )
- ],
- ),
- ],
+ widget.appoList[index].isLiveCareAppointment
+ ? Container(
+ child: Text(TranslationBase.of(context).videoAppo,
+ style: TextStyle(
+ color: Colors.white,
+ fontWeight: FontWeight.bold,
+ fontSize: 12.0)),
+ )
+ : Container(
+ child: Text(TranslationBase.of(context).walkinAppo,
+ style: TextStyle(
+ color: Colors.white,
+ fontWeight: FontWeight.bold,
+ fontSize: 12.0)),
+ )
+ ],
+ ),
),
- ),
+ ],
),
);
},
@@ -567,12 +631,34 @@ class _ToDoState extends State {
}
getPatientShare(context, AppoitmentAllHistoryResultList appo) {
- GifLoaderDialogUtils.showMyDialog(context);
DoctorsListService service = new DoctorsListService();
+ if (appo.isLiveCareAppointment) {
+ getLiveCareAppointmentPatientShare(context, service, appo);
+ } else {
+ GifLoaderDialogUtils.showMyDialog(context);
+ service
+ .getPatientShare(appo.appointmentNo.toString(), appo.clinicID,
+ appo.projectID, context)
+ .then((res) {
+ GifLoaderDialogUtils.hideDialog(context);
+ widget.patientShareResponse = new PatientShareResponse.fromJson(res);
+ openPaymentDialog(appo, widget.patientShareResponse);
+ }).catchError((err) {
+ GifLoaderDialogUtils.hideDialog(context);
+ AppToast.showErrorToast(message: err);
+ print(err);
+ });
+ }
+ }
+
+ getLiveCareAppointmentPatientShare(context, DoctorsListService service,
+ AppoitmentAllHistoryResultList appo) {
+ GifLoaderDialogUtils.showMyDialog(context);
service
- .getPatientShare(appo.appointmentNo.toString(), appo.clinicID,
- appo.projectID, context)
+ .getLiveCareAppointmentPatientShare(appo.appointmentNo.toString(),
+ appo.clinicID, appo.projectID, context)
.then((res) {
+ print(res);
GifLoaderDialogUtils.hideDialog(context);
widget.patientShareResponse = new PatientShareResponse.fromJson(res);
openPaymentDialog(appo, widget.patientShareResponse);
@@ -674,7 +760,12 @@ class _ToDoState extends State {
authenticatedUser.firstName,
authenticatedUser.patientID,
authenticatedUser,
- widget.browser);
+ widget.browser,
+ appo.isLiveCareAppointment,
+ appo.appointmentDate,
+ appo.appointmentNo,
+ appo.clinicID,
+ appo.doctorID);
}
onBrowserLoadStart(String url) {
diff --git a/lib/pages/ToDoList/widgets/upcomingCard.dart b/lib/pages/ToDoList/widgets/upcomingCard.dart
index 04930e59..3fefe616 100644
--- a/lib/pages/ToDoList/widgets/upcomingCard.dart
+++ b/lib/pages/ToDoList/widgets/upcomingCard.dart
@@ -197,7 +197,7 @@ class _TodoListCardState extends State {
),
)
],
- )
+ ),
],
),
),
diff --git a/lib/pages/landing/home_page.dart b/lib/pages/landing/home_page.dart
index 87afb17f..3a64fbd5 100644
--- a/lib/pages/landing/home_page.dart
+++ b/lib/pages/landing/home_page.dart
@@ -3,6 +3,7 @@ import 'package:diplomaticquarterapp/core/viewModels/dashboard_view_model.dart';
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/ComprehensiveMedicalCheckup/cmc_page.dart';
import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/HomeHealthCare/home_health_care_index_page.dart';
+import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/HomeHealthCare/home_health_care_page.dart';
import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/all_habib_medical_service_page.dart';
import 'package:diplomaticquarterapp/pages/ContactUs/contact_us_page.dart';
import 'package:diplomaticquarterapp/pages/Covid-DriveThru/covid-drivethru-location.dart';
@@ -421,7 +422,7 @@ class _HomePageState extends State {
Navigator.push(
context,
FadePage(
- page: HomeHealthCareIndexPage(),
+ page: HomeHealthCarePage(),
),
);
},
@@ -436,10 +437,10 @@ class _HomePageState extends State {
height: 50,
),
SizedBox(
- height: 3,
+ height: 10,
),
Texts(
- TranslationBase.of(context).homeHealthCareService,
+ TranslationBase.of(context).cmcHeading,
textAlign: TextAlign.center,
color: Colors.white,
fontWeight: FontWeight.w700,
@@ -505,7 +506,7 @@ class _HomePageState extends State {
height: 50,
),
SizedBox(
- height: 3,
+ height:10,
),
Texts(
TranslationBase.of(context).emergencyService,
diff --git a/lib/pages/landing/landing_page.dart b/lib/pages/landing/landing_page.dart
index ae3daec4..f53585cb 100644
--- a/lib/pages/landing/landing_page.dart
+++ b/lib/pages/landing/landing_page.dart
@@ -323,6 +323,7 @@ class _LandingPageState extends State with WidgetsBindingObserver {
Permission.notification,
Permission.accessMediaLocation,
Permission.calendar,
+ Permission.activityRecognition
].request();
var permissionsGranted = await deviceCalendarPlugin.hasPermissions();
@@ -607,6 +608,8 @@ class _LandingPageState extends State with WidgetsBindingObserver {
return TranslationBase.of(context).medicalProfile;
case 2:
return TranslationBase.of(context).bookAppo;
+ case 5:
+ return TranslationBase.of(context).bookAppo;
case 3:
return TranslationBase.of(context).services;
case 4:
diff --git a/lib/pages/livecare/livecare_home.dart b/lib/pages/livecare/livecare_home.dart
index fc5c4eab..1974753f 100644
--- a/lib/pages/livecare/livecare_home.dart
+++ b/lib/pages/livecare/livecare_home.dart
@@ -49,6 +49,7 @@ class _LiveCareHomeState extends State
child: Column(children: [
/// this is will not colored with theme data
TabBar(
+ labelColor: Colors.black,
tabs: [
Tab(text: TranslationBase.of(context).consultation),
Tab(text: TranslationBase.of(context).logs),
diff --git a/lib/pages/livecare/livecare_scheduling/schedule_clinic_card.dart b/lib/pages/livecare/livecare_scheduling/schedule_clinic_card.dart
index 4309cc62..19144263 100644
--- a/lib/pages/livecare/livecare_scheduling/schedule_clinic_card.dart
+++ b/lib/pages/livecare/livecare_scheduling/schedule_clinic_card.dart
@@ -21,7 +21,7 @@ class _ScheduleClinicCardState extends State {
return Container(
child: Card(
margin: EdgeInsets.fromLTRB(15.0, 10.0, 15.0, 8.0),
- color: widget.isSelected ? Colors.blue : Colors.white,
+ color: widget.isSelected ? Color(0xff06b806) : Colors.white,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10),
),
@@ -35,8 +35,8 @@ class _ScheduleClinicCardState extends State {
Container(
child: Text(
widget.languageID == 'ar'
- ? widget.clinicsHaveScheduleList.clinicDescN
- : widget.clinicsHaveScheduleList.clinicDesc,
+ ? widget.clinicsHaveScheduleList.clinicDescN != null ? widget.clinicsHaveScheduleList.clinicDescN: ""
+ : widget.clinicsHaveScheduleList.clinicDesc != null ? widget.clinicsHaveScheduleList.clinicDesc: "Dermatology",
style: TextStyle(
fontSize: 16.0,
color:
diff --git a/lib/pages/livecare/widgets/LiveCareHistoryCard.dart b/lib/pages/livecare/widgets/LiveCareHistoryCard.dart
index 25ec8514..15c14557 100644
--- a/lib/pages/livecare/widgets/LiveCareHistoryCard.dart
+++ b/lib/pages/livecare/widgets/LiveCareHistoryCard.dart
@@ -42,10 +42,11 @@ class _LiveCareHistoryCardState extends State {
),
child: Container(
width: MediaQuery.of(context).size.width,
- height: MediaQuery.of(context).size.height * 0.22,
+ // height: MediaQuery.of(context).size.height * 0.22,
padding: EdgeInsets.all(10.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
+ mainAxisSize: MainAxisSize.min,
children: [
Text("Requested date:",
style:
diff --git a/lib/pages/livecare/widgets/clinic_list.dart b/lib/pages/livecare/widgets/clinic_list.dart
index fc27d92b..195d8879 100644
--- a/lib/pages/livecare/widgets/clinic_list.dart
+++ b/lib/pages/livecare/widgets/clinic_list.dart
@@ -283,7 +283,8 @@ class _clinic_listState extends State {
authenticatedUser.firstName,
authenticatedUser.patientID,
authenticatedUser,
- browser);
+ browser,
+ false);
}
onBrowserLoadStart(String url) {
diff --git a/lib/pages/medical/balance/confirm_payment_page.dart b/lib/pages/medical/balance/confirm_payment_page.dart
index 8a69bf5d..eecb6abd 100644
--- a/lib/pages/medical/balance/confirm_payment_page.dart
+++ b/lib/pages/medical/balance/confirm_payment_page.dart
@@ -225,7 +225,8 @@ class ConfirmPaymentPage extends StatelessWidget {
advanceModel.patientName,
advanceModel.fileNumber,
authenticatedUser,
- browser);
+ browser,
+ false);
}
onBrowserLoadStart(String url) {
diff --git a/lib/pages/medical/medical_profile_page.dart b/lib/pages/medical/medical_profile_page.dart
index f56fce76..291a4188 100644
--- a/lib/pages/medical/medical_profile_page.dart
+++ b/lib/pages/medical/medical_profile_page.dart
@@ -56,11 +56,11 @@ class _MedicalProfilePageState extends State {
var authProvider = new AuthProvider();
List medical = List();
ProjectViewModel projectViewModel;
+
@override
Widget build(BuildContext context) {
projectViewModel = Provider.of(context);
var appoCountProvider = Provider.of(context);
-
List myMedicalList = Utils.myMedicalList(
projectViewModel: projectViewModel,
context: context,
@@ -71,7 +71,7 @@ class _MedicalProfilePageState extends State {
builder: (_, model, widget) => AppScaffold(
isShowDecPage: false,
baseViewModel: model,
- isHelp: true,
+ // isHelp: true,
body: Container(
child: SingleChildScrollView(
child: Column(
@@ -102,7 +102,7 @@ class _MedicalProfilePageState extends State {
itemCount: model
.appoitmentAllHistoryResultList.length,
scrollDirection: Axis.horizontal,
- reverse: !projectViewModel.isArabic,
+ reverse: projectViewModel.isArabic,
),
],
),
@@ -144,7 +144,7 @@ class _MedicalProfilePageState extends State {
width: double.infinity,
height: 80,
decoration: BoxDecoration(
- color: Theme.of(context).primaryColor,
+ color: Colors.grey[500],
shape: BoxShape.rectangle,
border: Border.all(
color: Colors.transparent, width: 0.5),
@@ -196,10 +196,6 @@ class _MedicalProfilePageState extends State {
),
);
}
-
- fullMedicalData() {
- if (projectViewModel.havePrivilege(5)) {}
- }
}
class Medical {
diff --git a/lib/pages/medical/my_trackers/Weight/AddWeightPage.dart b/lib/pages/medical/my_trackers/Weight/AddWeightPage.dart
index a7b23191..71799084 100644
--- a/lib/pages/medical/my_trackers/Weight/AddWeightPage.dart
+++ b/lib/pages/medical/my_trackers/Weight/AddWeightPage.dart
@@ -1,188 +1,283 @@
import 'package:diplomaticquarterapp/core/enum/viewstate.dart';
-import 'package:diplomaticquarterapp/core/viewModels/medical/blood_pressure_view_model.dart';
-import 'package:diplomaticquarterapp/core/viewModels/medical/blood_sugar_view_model.dart';
import 'package:diplomaticquarterapp/core/viewModels/medical/weight_pressure_view_model.dart';
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
-import 'package:diplomaticquarterapp/pages/base/base_view.dart';
import 'package:diplomaticquarterapp/pages/medical/balance/new_text_Field.dart';
+import 'package:diplomaticquarterapp/uitl/app_toast.dart';
import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
+import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
+import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/dialogs/RadioStringDialog.dart';
+import 'package:diplomaticquarterapp/widgets/dialogs/confirm_dialog.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
-import 'package:feather_icons_flutter/feather_icons_flutter.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_datetime_picker/flutter_datetime_picker.dart';
import 'package:provider/provider.dart';
class AddWeightPage extends StatefulWidget {
+ final WeightPressureViewModel model;
+ final bool isUpdate;
+ final DateTime dayWeightDate;
+ final int lineItemNo;
+ final String weightValue;
+ final String measureTimeSelectedType;
+ final int weightUnit;
+
+ AddWeightPage(
+ {Key key,
+ this.model,
+ this.isUpdate = false,
+ this.dayWeightDate,
+ this.lineItemNo,
+ this.weightValue,
+ this.measureTimeSelectedType,
+ this.weightUnit})
+ : super(key: key);
+
@override
_AddWeightPageState createState() => _AddWeightPageState();
}
class _AddWeightPageState extends State {
TextEditingController _weightValueController = TextEditingController();
- DateTime bloodSugarDate = DateTime.now();
- DateTime timeSugarDate = DateTime.now();
+ DateTime dayWeightDate = DateTime.now();
+ DateTime timeWeightDate = DateTime.now();
int weightUnit = 1;
final List measureUnitEnList = [
'Kg',
'Pound',
];
- final List measureUnitArList = [
- 'Kg',
- 'Pound',
- ];
- String measureTimeSelectedType = 'Kg';
+ final List measureUnitArList = ["كيلو جرام", "باوند"];
+ String measureTimeSelectedType;
+ @override
+ void initState() {
+ super.initState();
+ if (widget.isUpdate) {
+ dayWeightDate = widget.dayWeightDate;
+ timeWeightDate = widget.dayWeightDate;
+ measureTimeSelectedType = widget.measureTimeSelectedType;
+ if (measureUnitEnList.contains(widget.measureTimeSelectedType))
+ weightUnit = measureUnitEnList.indexOf(widget.measureTimeSelectedType);
+ else if (measureUnitArList.contains(widget.measureTimeSelectedType))
+ weightUnit = measureUnitArList.indexOf(widget.measureTimeSelectedType);
+ _weightValueController.text = widget.weightValue;
+ }
+ }
@override
Widget build(BuildContext context) {
ProjectViewModel projectViewModel = Provider.of(context);
- return BaseView(
- builder: (_, model, w) => AppScaffold(
- isShowAppBar: true,
- appBarTitle: 'Add',
- body: SingleChildScrollView(
- physics: BouncingScrollPhysics(),
- child: Container(
- margin: EdgeInsets.all(15),
- child: Column(
- children: [
- SizedBox(
- height: 15,
- ),
- NewTextFields(
- hintText: 'Enter Weight Value',
- controller: _weightValueController,
- keyboardType: TextInputType.number,
- ),
- SizedBox(
- height: 8,
- ),
- InkWell(
- onTap: () {
- confirmSelectMeasureTimeDialog(projectViewModel.isArabic
- ? measureUnitEnList
- : measureUnitArList);
+ return AppScaffold(
+ isShowAppBar: true,
+ appBarTitle: widget.isUpdate
+ ? TranslationBase.of(context).update
+ : TranslationBase.of(context).add,
+ appBarIcons:widget.isUpdate? [
+ IconButton(
+ icon: Icon(Icons.delete),
+ color: Colors.white,
+ onPressed: () {
+ ConfirmDialog dialog = new ConfirmDialog(
+ context: context,
+ confirmMessage: 'Remove this measure',
+ okText: TranslationBase.of(context).ok,
+ cancelText: TranslationBase.of(context).cancel,
+ okFunction: () async {
+ ConfirmDialog.closeAlertDialog(context);
+
+ GifLoaderDialogUtils.showMyDialog(context);
+ widget.model
+ .deleteWeightResult(lineItemNo: widget.lineItemNo)
+ .then((value) {
+ GifLoaderDialogUtils.hideDialog(context);
+ if (widget.model.state == ViewState.ErrorLocal)
+ AppToast.showErrorToast(
+ message: widget.model.error);
+ else
+ Navigator.pop(context);
+ }).catchError((e) {
+ GifLoaderDialogUtils.hideDialog(context);
+ AppToast.showErrorToast(
+ message: widget.model.error);
+ });
},
- child: Container(
- padding: EdgeInsets.all(12),
- width: double.infinity,
- height: 65,
- decoration: BoxDecoration(
- borderRadius: BorderRadius.circular(12),
- color: Colors.white),
- child: Row(
- mainAxisAlignment: MainAxisAlignment.spaceBetween,
- children: [
- Texts(measureTimeSelectedType),
- Icon(
- Icons.arrow_drop_down,
- color: Colors.grey,
- )
- ],
- ),
+ cancelFunction: () => {});
+ dialog.showAlertDialog(context);
+ },
+ )
+ ]:null,
+ body: SingleChildScrollView(
+ physics: BouncingScrollPhysics(),
+ child: Container(
+ margin: EdgeInsets.all(15),
+ child: Column(
+ children: [
+ SizedBox(
+ height: 15,
+ ),
+ NewTextFields(
+ hintText: TranslationBase.of(context).weightAdd,
+ controller: _weightValueController,
+ keyboardType: TextInputType.number,
+ ),
+ SizedBox(
+ height: 8,
+ ),
+ InkWell(
+ onTap: () {
+ confirmSelectMeasureTimeDialog(projectViewModel.isArabic
+ ? measureUnitArList
+ : measureUnitEnList);
+ },
+ child: Container(
+ padding: EdgeInsets.all(12),
+ width: double.infinity,
+ height: 65,
+ decoration: BoxDecoration(
+ borderRadius: BorderRadius.circular(12),
+ color: Colors.white),
+ child: Row(
+ mainAxisAlignment: MainAxisAlignment.spaceBetween,
+ children: [
+ Texts(measureTimeSelectedType ??
+ TranslationBase.of(context).other),
+ Icon(
+ Icons.arrow_drop_down,
+ color: Colors.grey,
+ )
+ ],
),
),
- SizedBox(
- height: 8,
- ),
- InkWell(
- onTap: () {
- DatePicker.showDatePicker(context,
- showTitleActions: true,
- minTime: DateTime(DateTime.now().year - 1, 1, 1),
- maxTime: DateTime.now(), onConfirm: (date) {
- print('confirm $date');
+ ),
+ SizedBox(
+ height: 8,
+ ),
+ InkWell(
+ onTap: () {
+ DatePicker.showDatePicker(
+ context,
+ showTitleActions: true,
+ minTime: DateTime(DateTime.now().year - 1, 1, 1),
+ maxTime: DateTime.now(),
+ onConfirm: (date) {
setState(() {
- bloodSugarDate = date;
+ dayWeightDate = date;
});
},
- currentTime: bloodSugarDate,
- locale: projectViewModel.localeType);
- },
- child: Container(
- padding: EdgeInsets.all(12),
- width: double.infinity,
- height: 65,
- decoration: BoxDecoration(
- borderRadius: BorderRadius.circular(12),
- color: Colors.white),
- child: Row(
- mainAxisAlignment: MainAxisAlignment.spaceBetween,
- children: [
- Texts('Date'),
- Texts(getDate()),
- ],
- ),
+ currentTime: dayWeightDate,
+ locale: projectViewModel.localeType,
+ );
+ },
+ child: Container(
+ padding: EdgeInsets.all(12),
+ width: double.infinity,
+ height: 65,
+ decoration: BoxDecoration(
+ borderRadius: BorderRadius.circular(12),
+ color: Colors.white),
+ child: Row(
+ mainAxisAlignment: MainAxisAlignment.spaceBetween,
+ children: [
+ Texts(TranslationBase.of(context).date),
+ Texts(getDate()),
+ ],
),
),
- SizedBox(
- height: 8,
- ),
- InkWell(
- onTap: () {
- DatePicker.showTimePicker(context, showTitleActions: true,
- onConfirm: (date) {
- print('confirm $date');
+ ),
+ SizedBox(
+ height: 8,
+ ),
+ InkWell(
+ onTap: () {
+ DatePicker.showTimePicker(
+ context,
+ showTitleActions: true,
+ onConfirm: (date) {
setState(() {
- timeSugarDate = date;
+ timeWeightDate = date;
});
},
- currentTime: timeSugarDate,
- locale: projectViewModel.localeType);
- },
- child: Container(
- padding: EdgeInsets.all(12),
- width: double.infinity,
- height: 65,
- decoration: BoxDecoration(
- borderRadius: BorderRadius.circular(12),
- color: Colors.white),
- child: Row(
- mainAxisAlignment: MainAxisAlignment.spaceBetween,
- children: [Texts('Time'), Texts(getTime())],
- ),
+ currentTime: timeWeightDate,
+ locale: projectViewModel.localeType,
+ );
+ },
+ child: Container(
+ padding: EdgeInsets.all(12),
+ width: double.infinity,
+ height: 65,
+ decoration: BoxDecoration(
+ borderRadius: BorderRadius.circular(12),
+ color: Colors.white),
+ child: Row(
+ mainAxisAlignment: MainAxisAlignment.spaceBetween,
+ children: [
+ Texts(TranslationBase.of(context).time),
+ Texts(getTime())
+ ],
),
),
- ],
- ),
+ ),
+ ],
),
),
- bottomSheet: Container(
- color: Colors.transparent,
- width: double.infinity,
- height: MediaQuery.of(context).size.width * 0.2,
- child: Padding(
- padding: const EdgeInsets.all(15.0),
- child: SecondaryButton(
- loading: model.state == ViewState.BusyLocal,
- label: 'SAVE',
- textColor: Colors.white,
- onTap: () {
- if (_weightValueController.text.isNotEmpty ) {
- model.addWeightResult(
- weightDate: '${bloodSugarDate.year}-${bloodSugarDate.month}-${bloodSugarDate.day} ${timeSugarDate.hour}:${timeSugarDate.minute}:00',
+ ),
+ bottomSheet: Container(
+ color: Colors.transparent,
+ width: double.infinity,
+ height: MediaQuery.of(context).size.width * 0.2,
+ child: Padding(
+ padding: const EdgeInsets.all(15.0),
+ child: SecondaryButton(
+ loading: widget.model.state == ViewState.BusyLocal,
+ label: TranslationBase.of(context).save.toUpperCase(),
+ textColor: Colors.white,
+ onTap: () {
+ if (_weightValueController.text.isNotEmpty) {
+ if (widget.isUpdate) {
+ GifLoaderDialogUtils.showMyDialog(context);
+ widget.model.updateWeightResult(
+ weightDate: '${dayWeightDate.year}-${dayWeightDate.month}-${dayWeightDate.day} ${timeWeightDate.hour}:${timeWeightDate.minute}:00',
weightMeasured: _weightValueController.text.toString(),
weightUnit: weightUnit,
- );
- }
- }),
- ),
+ lineItemNo: widget.lineItemNo
+ )
+ .then((value) {
+ GifLoaderDialogUtils.hideDialog(context);
+ if (widget.model.state == ViewState.Error)
+ AppToast.showErrorToast(message: widget.model.error);
+ else
+ Navigator.pop(context);
+ });
+ } else
+ widget.model.addWeightResult(
+ weightDate: '${dayWeightDate.year}-${dayWeightDate.month}-${dayWeightDate.day} ${timeWeightDate.hour}:${timeWeightDate.minute}:00',
+ weightMeasured: _weightValueController.text.toString(),
+ weightUnit: weightUnit,
+ )
+ .then((value) {
+ GifLoaderDialogUtils.hideDialog(context);
+ if (widget.model.state == ViewState.Error)
+ AppToast.showErrorToast(message: widget.model.error);
+ else
+ Navigator.pop(context);
+ });
+ }
+ }),
),
),
);
}
String getDate() {
- return "${DateUtil.getMonth(bloodSugarDate.month)} ${bloodSugarDate.day}, ${bloodSugarDate.year}";
+ return "${DateUtil.getMonth(dayWeightDate.month)} ${dayWeightDate.day}, ${dayWeightDate.year}";
}
String getTime() {
- return " ${timeSugarDate.hour}:${timeSugarDate.minute}";
+ return " ${timeWeightDate.hour}:${timeWeightDate.minute}";
}
void confirmSelectMeasureTimeDialog(List list) {
@@ -190,7 +285,7 @@ class _AddWeightPageState extends State {
context: context,
child: RadioStringDialog(
radioList: list,
- title: 'Measure unit',
+ title: TranslationBase.of(context).measureUnit,
selectedValue: measureTimeSelectedType,
onValueSelected: (value) {
setState(() {
diff --git a/lib/pages/medical/my_trackers/Weight/WeightHomePage.dart b/lib/pages/medical/my_trackers/Weight/WeightHomePage.dart
index 9bd89a2c..c90b29a7 100644
--- a/lib/pages/medical/my_trackers/Weight/WeightHomePage.dart
+++ b/lib/pages/medical/my_trackers/Weight/WeightHomePage.dart
@@ -1,12 +1,15 @@
-import 'dart:ui';
+import 'package:diplomaticquarterapp/core/enum/viewstate.dart';
import 'package:diplomaticquarterapp/core/viewModels/medical/weight_pressure_view_model.dart';
import 'package:diplomaticquarterapp/pages/base/base_view.dart';
-import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
+import 'package:diplomaticquarterapp/pages/medical/my_trackers/widget/TabBarWidget.dart';
+import 'package:diplomaticquarterapp/uitl/app_toast.dart';
+import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
+import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
+import 'package:diplomaticquarterapp/widgets/dialogs/confirm_send_email_dialog.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
-import 'package:hexcolor/hexcolor.dart';
import 'AddWeightPage.dart';
import 'WeightMonthlyPage.dart';
import 'WeightYeaPage.dart';
@@ -35,73 +38,42 @@ class _WeightHomePageState extends State
@override
Widget build(BuildContext context) {
- return BaseView(
+ return BaseView(
onModelReady: (model) => model.getWeight(),
builder: (_, model, w) => AppScaffold(
isShowAppBar: true,
- appBarTitle: 'Weight',
+ appBarTitle: TranslationBase.of(context).weight,
+ appBarIcons: [IconButton(
+ icon: Icon(Icons.email),
+ color: Colors.white,
+ onPressed: () {
+ showDialog(
+ context: context,
+ child: ConfirmSendEmailDialog(
+ email: model.user.emailAddress,
+ onTapSendEmail: () async{
+ GifLoaderDialogUtils.showMyDialog(context);
+ model.sendReportByEmail().then((value) {
+ GifLoaderDialogUtils.hideDialog(context);
+ if(model.state == ViewState.ErrorLocal){
+ AppToast.showErrorToast(message: model.error);
+ }else{
+ AppToast.showSuccessToast(message:TranslationBase.of(context).emailSentSuccessfully, );
+ }
+ }).catchError((e){
+ GifLoaderDialogUtils.hideDialog(context);
+ AppToast.showErrorToast(message: model.error);
+ });
+ },
+ ),
+ );
+ },
+ ),],
baseViewModel: model,
body: Scaffold(
extendBodyBehindAppBar: true,
- appBar: PreferredSize(
- preferredSize: Size.fromHeight(60.0),
- child: Stack(
- children: [
- Positioned(
- bottom: 1,
- left: 0,
- right: 0,
- child: BackdropFilter(
- filter: ImageFilter.blur(sigmaX: 10, sigmaY: 10),
- child: Container(
- color: Theme.of(context)
- .scaffoldBackgroundColor
- .withOpacity(0.8),
- height: 70.0,
- ),
- ),
- ),
- Center(
- child: Container(
- height: 55.0,
- color: Colors.white,
- child: Center(
- child: TabBar(
- isScrollable: true,
- controller: _tabController,
- indicatorWeight: 5.0,
- indicatorSize: TabBarIndicatorSize.tab,
- indicatorColor: Colors.red[800],
- labelColor: Theme.of(context).primaryColor,
- labelPadding:
- EdgeInsets.only(top: 4.0, left: 5.0, right: 5.0),
- unselectedLabelColor: Colors.grey[800],
- tabs: [
- Container(
- width: MediaQuery.of(context).size.width * 0.27,
- child: Center(
- child: Texts('Weekly'),
- ),
- ),
- Container(
- width: MediaQuery.of(context).size.width * 0.27,
- child: Center(
- child: Texts('Monthly'),
- ),
- ),
- Container(
- width: MediaQuery.of(context).size.width * 0.27,
- child: Center(
- child: Texts('Yearly'),
- ),
- ),
- ],
- ),
- ),
- ),
- ),
- ],
- ),
+ appBar: TabBarWidget(
+ tabController: _tabController,
),
body: Column(
children: [
@@ -111,16 +83,13 @@ class _WeightHomePageState extends State
controller: _tabController,
children: [
WeightWeeklyPage(
- data: model.getWeightWeeklySeries(),
- diabtecPatientResult: model.weekWeightMeasurementResult,
+ model: model,
),
WeightMonthlyPage(
- data: model.getWeightMonthlyTimeSeriesSales(),
- diabtecPatientResult: model.monthWeightMeasurementResult,
+ model: model,
),
WeightYearPage(
- data: model.getWeightYearTimeSeriesSales(),
- diabtecPatientResult: model.yearWeightMeasurementResult,
+ model: model,
)
],
),
@@ -129,13 +98,15 @@ class _WeightHomePageState extends State
),
floatingActionButton: InkWell(
onTap: () {
- Navigator.push(context, FadePage(page: AddWeightPage()));
+ Navigator.push(context, FadePage(page: AddWeightPage(model: model,)));
},
child: Container(
width: 55,
height: 55,
decoration: BoxDecoration(
- shape: BoxShape.circle, color: HexColor('515B5D')),
+ shape: BoxShape.circle,
+ color: Theme.of(context).primaryColor,
+ ),
child: Center(
child: Icon(
Icons.add,
diff --git a/lib/pages/medical/my_trackers/Weight/WeightMonthlyPage.dart b/lib/pages/medical/my_trackers/Weight/WeightMonthlyPage.dart
index 9f7063f1..6f64bacb 100644
--- a/lib/pages/medical/my_trackers/Weight/WeightMonthlyPage.dart
+++ b/lib/pages/medical/my_trackers/Weight/WeightMonthlyPage.dart
@@ -3,41 +3,48 @@ import 'package:diplomaticquarterapp/core/model/my_trakers/blood_sugar/DiabtecPa
import 'package:diplomaticquarterapp/core/model/my_trakers/chartData/WeekChartDate.dart';
import 'package:diplomaticquarterapp/core/model/my_trakers/chartData/YearMonthlyChartDate.dart';
import 'package:diplomaticquarterapp/core/model/my_trakers/weight/WeightMeasurementResult.dart';
+import 'package:diplomaticquarterapp/core/viewModels/medical/weight_pressure_view_model.dart';
+import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
+import 'package:diplomaticquarterapp/pages/medical/my_trackers/widget/MonthLineChartCurved.dart';
import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
+import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:charts_flutter/flutter.dart' as charts;
import 'package:hexcolor/hexcolor.dart';
+import 'package:provider/provider.dart';
class WeightMonthlyPage extends StatelessWidget {
- final List> data;
- final List diabtecPatientResult;
+ final WeightPressureViewModel model;
- const WeightMonthlyPage({Key key, this.data, this.diabtecPatientResult})
- : super(key: key);
+ const WeightMonthlyPage({
+ Key key,
+ this.model,
+ }) : super(key: key);
@override
Widget build(BuildContext context) {
+ ProjectViewModel projectViewModel = Provider.of(context);
return AppScaffold(
- body: ListView(
+ body: model.weighMonthTimeSeriesData.isEmpty?Container(child: Center(child: Texts(TranslationBase.of(context).noDataAvailable),),):ListView(
children: [
Container(
- width: double.maxFinite,
- height: 180,
- color: Colors.white,
- child: charts.LineChart(data,
- //animate: animate,
- defaultRenderer:
- new charts.LineRendererConfig(includePoints: true)),
- ),
+ width: double.maxFinite,
+ color: Colors.white,
+ child: MonthLineChartCurved(
+ horizontalInterval: 1.0,
+ title: TranslationBase.of(context).weight,
+ timeSeries: model.weighMonthTimeSeriesData,
+ indexes: model.weighMonthTimeSeriesData.length ~/ 5.5,
+ )),
SizedBox(
height: 12,
),
Padding(
padding: const EdgeInsets.all(8.0),
- child: Texts('Details'),
+ child: Texts(TranslationBase.of(context).details),
),
Container(
padding: EdgeInsets.all(10),
@@ -49,7 +56,7 @@ class WeightMonthlyPage extends StatelessWidget {
border: TableBorder.symmetric(
inside: BorderSide(width: 2.0, color: Colors.grey[300]),
),
- children: fullData(),
+ children: fullData(context, projectViewModel, model),
),
],
),
@@ -59,21 +66,27 @@ class WeightMonthlyPage extends StatelessWidget {
);
}
- List fullData() {
+ List fullData(BuildContext context,
+ ProjectViewModel projectViewModel, WeightPressureViewModel model) {
List tableRow = [];
tableRow.add(
TableRow(
children: [
Container(
decoration: BoxDecoration(
- color: HexColor('#515B5D'),
+ color: Theme.of(context).primaryColor,
borderRadius: BorderRadius.only(
- topLeft: Radius.circular(10.0),
+ topLeft: projectViewModel.isArabic
+ ? Radius.circular(0.0)
+ : Radius.circular(10.0),
+ topRight: projectViewModel.isArabic
+ ? Radius.circular(10.0)
+ : Radius.circular(0.0),
),
),
child: Center(
child: Texts(
- 'Date',
+ TranslationBase.of(context).date,
color: Colors.white,
fontSize: 15,
),
@@ -82,11 +95,11 @@ class WeightMonthlyPage extends StatelessWidget {
),
Container(
decoration: BoxDecoration(
- color: HexColor('#515B5D'),
+ color: Theme.of(context).primaryColor,
),
child: Center(
child: Texts(
- 'Time',
+ TranslationBase.of(context).time,
color: Colors.white,
fontSize: 15,
),
@@ -94,11 +107,19 @@ class WeightMonthlyPage extends StatelessWidget {
height: 40),
Container(
decoration: BoxDecoration(
- color: HexColor('#515B5D'),
+ color: Theme.of(context).primaryColor,
+ borderRadius: BorderRadius.only(
+ topLeft: projectViewModel.isArabic
+ ? Radius.circular(10.0)
+ : Radius.circular(0.0),
+ topRight: projectViewModel.isArabic
+ ? Radius.circular(0.0)
+ : Radius.circular(10.0),
+ ),
),
child: Center(
child: Texts(
- 'Value',
+ TranslationBase.of(context).value,
color: Colors.white,
fontSize: 15,
),
@@ -107,7 +128,7 @@ class WeightMonthlyPage extends StatelessWidget {
],
),
);
- diabtecPatientResult.forEach(
+ model.monthWeightMeasurementResult.forEach(
(diabtec) {
tableRow.add(
TableRow(
@@ -119,7 +140,7 @@ class WeightMonthlyPage extends StatelessWidget {
color: Colors.white,
child: Center(
child: Texts(
- '${DateUtil.getMonthDayYearDateFormatted(diabtec.weightDate)} ',
+ '${projectViewModel.isArabic ? DateUtil.getMonthDayYearDateFormattedAr(diabtec.weightDate) : DateUtil.getMonthDayYearDateFormatted(diabtec.weightDate)} ',
textAlign: TextAlign.center,
fontSize: 12,
),
diff --git a/lib/pages/medical/my_trackers/Weight/WeightWeeklyPage.dart b/lib/pages/medical/my_trackers/Weight/WeightWeeklyPage.dart
index 9c3363dd..866c2b5b 100644
--- a/lib/pages/medical/my_trackers/Weight/WeightWeeklyPage.dart
+++ b/lib/pages/medical/my_trackers/Weight/WeightWeeklyPage.dart
@@ -1,32 +1,41 @@
import 'package:diplomaticquarterapp/core/model/my_trakers/chartData/WeekChartDate.dart';
import 'package:diplomaticquarterapp/core/model/my_trakers/weight/WeightMeasurementResult.dart';
+import 'package:diplomaticquarterapp/core/viewModels/medical/weight_pressure_view_model.dart';
+import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
+import 'package:diplomaticquarterapp/pages/medical/my_trackers/widget/LineChartCurved.dart';
import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
+import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
+import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:charts_flutter/flutter.dart' as charts;
import 'package:hexcolor/hexcolor.dart';
+import 'package:provider/provider.dart';
+
+import 'AddWeightPage.dart';
class WeightWeeklyPage extends StatelessWidget {
- final List> data;
- final List diabtecPatientResult;
+ final WeightPressureViewModel model;
- const WeightWeeklyPage({Key key, this.data, this.diabtecPatientResult})
- : super(key: key);
+ const WeightWeeklyPage({Key key, this.model}) : super(key: key);
@override
Widget build(BuildContext context) {
+ ProjectViewModel projectViewModel = Provider.of(context);
+
return AppScaffold(
- body: ListView(
+ body: model.weightWeekTimeSeriesData.isEmpty?Container(child: Center(child: Texts(TranslationBase.of(context).noDataAvailable),),):ListView(
children: [
Container(
- width: double.maxFinite,
- height: 180,
+ margin: EdgeInsets.only(top: 12, left: 8, right: 8),
color: Colors.white,
- child: charts.TimeSeriesChart(
- data,
- dateTimeFactory: const charts.LocalDateTimeFactory(),
+ child: LineChartCurved(
+ horizontalInterval: 1.0,
+ title: TranslationBase.of(context).weight,
+ timeSeries: model.weightWeekTimeSeriesData,
+ indexes: model.weightWeekTimeSeriesData.length ~/ 5.5,
),
),
SizedBox(
@@ -34,7 +43,7 @@ class WeightWeeklyPage extends StatelessWidget {
),
Padding(
padding: const EdgeInsets.all(8.0),
- child: Texts('Details'),
+ child: Texts(TranslationBase.of(context).details),
),
Container(
padding: EdgeInsets.all(10),
@@ -46,7 +55,7 @@ class WeightWeeklyPage extends StatelessWidget {
border: TableBorder.symmetric(
inside: BorderSide(width: 2.0, color: Colors.grey[300]),
),
- children: fullData(),
+ children: fullData(context, projectViewModel, model),
),
],
),
@@ -56,21 +65,27 @@ class WeightWeeklyPage extends StatelessWidget {
);
}
- List fullData() {
+ List fullData(BuildContext context,
+ ProjectViewModel projectViewModel, WeightPressureViewModel model) {
List tableRow = [];
tableRow.add(
TableRow(
children: [
Container(
decoration: BoxDecoration(
- color: HexColor('#515B5D'),
+ color: Theme.of(context).primaryColor,
borderRadius: BorderRadius.only(
- topLeft: Radius.circular(10.0),
+ topLeft: projectViewModel.isArabic
+ ? Radius.circular(0.0)
+ : Radius.circular(10.0),
+ topRight: projectViewModel.isArabic
+ ? Radius.circular(10.0)
+ : Radius.circular(0.0),
),
),
child: Center(
child: Texts(
- 'Date',
+ TranslationBase.of(context).date,
color: Colors.white,
fontSize: 15,
),
@@ -79,11 +94,11 @@ class WeightWeeklyPage extends StatelessWidget {
),
Container(
decoration: BoxDecoration(
- color: HexColor('#515B5D'),
+ color: Theme.of(context).primaryColor,
),
child: Center(
child: Texts(
- 'Time',
+ TranslationBase.of(context).time,
color: Colors.white,
fontSize: 15,
),
@@ -91,37 +106,40 @@ class WeightWeeklyPage extends StatelessWidget {
height: 40),
Container(
decoration: BoxDecoration(
- color: HexColor('#515B5D'),
+ color: Theme.of(context).primaryColor,
),
child: Center(
child: Texts(
- 'Value',
+ TranslationBase.of(context).value,
color: Colors.white,
fontSize: 15,
),
),
height: 40),
Container(
- child: Container(
- decoration: BoxDecoration(
- color: HexColor('#515B5D'),
- borderRadius: BorderRadius.only(
- topRight: Radius.circular(10.0),
- ),
+ decoration: BoxDecoration(
+ color: Theme.of(context).primaryColor,
+ borderRadius: BorderRadius.only(
+ topLeft: projectViewModel.isArabic
+ ? Radius.circular(10.0)
+ : Radius.circular(0.0),
+ topRight: projectViewModel.isArabic
+ ? Radius.circular(0.0)
+ : Radius.circular(10.0),
),
- child: Center(
- child: Texts(
- 'Edit',
- color: Colors.white,
- fontSize: 15,
- ),
+ ),
+ child: Center(
+ child: Texts(
+ TranslationBase.of(context).edit,
+ color: Colors.white,
+ fontSize: 15,
),
- height: 40),
- ),
+ ),
+ height: 40),
],
),
);
- diabtecPatientResult.forEach(
+ model.weekWeightMeasurementResult.forEach(
(diabtec) {
tableRow.add(
TableRow(
@@ -133,7 +151,7 @@ class WeightWeeklyPage extends StatelessWidget {
color: Colors.white,
child: Center(
child: Texts(
- '${DateUtil.getMonthDayYearDateFormatted(diabtec.weightDate)} ',
+ '${projectViewModel.isArabic ? DateUtil.getMonthDayYearDateFormattedAr(diabtec.weightDate) : DateUtil.getMonthDayYearDateFormatted(diabtec.weightDate)} ',
textAlign: TextAlign.center,
fontSize: 12,
),
@@ -166,12 +184,30 @@ class WeightWeeklyPage extends StatelessWidget {
),
),
),
- Container(
- height: 70,
- padding: EdgeInsets.all(10),
- color: Colors.white,
- child: Center(
- child: Icon(Icons.edit),
+ InkWell(
+ onTap: () {
+ Navigator.push(
+ context,
+ FadePage(
+ page: AddWeightPage(
+ isUpdate: true,
+ dayWeightDate: diabtec.weightDate,
+ measureTimeSelectedType: 'Kg',
+ weightValue: diabtec.weightMeasured.toString(),
+ lineItemNo: diabtec.lineItemNo,
+ weightUnit: int.parse(diabtec.unit),
+ model: model,
+ ),
+ ),
+ );
+ },
+ child: Container(
+ height: 70,
+ padding: EdgeInsets.all(10),
+ color: Colors.white,
+ child: Center(
+ child: Icon(Icons.edit),
+ ),
),
),
],
diff --git a/lib/pages/medical/my_trackers/Weight/WeightYeaPage.dart b/lib/pages/medical/my_trackers/Weight/WeightYeaPage.dart
index 587cc3f6..7fa03819 100644
--- a/lib/pages/medical/my_trackers/Weight/WeightYeaPage.dart
+++ b/lib/pages/medical/my_trackers/Weight/WeightYeaPage.dart
@@ -2,41 +2,48 @@ import 'package:diplomaticquarterapp/core/model/my_trakers/blood_pressur/BloodPr
import 'package:diplomaticquarterapp/core/model/my_trakers/blood_sugar/DiabtecPatientResult.dart';
import 'package:diplomaticquarterapp/core/model/my_trakers/chartData/WeekChartDate.dart';
import 'package:diplomaticquarterapp/core/model/my_trakers/weight/WeightMeasurementResult.dart';
+import 'package:diplomaticquarterapp/core/viewModels/medical/weight_pressure_view_model.dart';
+import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
+import 'package:diplomaticquarterapp/pages/medical/my_trackers/widget/LineChartCurved.dart';
import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
+import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:charts_flutter/flutter.dart' as charts;
import 'package:hexcolor/hexcolor.dart';
+import 'package:provider/provider.dart';
class WeightYearPage extends StatelessWidget {
- final List> data;
- final List diabtecPatientResult;
+ final WeightPressureViewModel model;
- const WeightYearPage({Key key, this.data, this.diabtecPatientResult})
+
+ const WeightYearPage({Key key, this.model, })
: super(key: key);
@override
Widget build(BuildContext context) {
+ ProjectViewModel projectViewModel = Provider.of(context);
return AppScaffold(
- body: ListView(
+ body: model.weightYearTimeSeriesData.isEmpty ? Container(child: Center(child: Texts(TranslationBase.of(context).noDataAvailable),),) : ListView(
children: [
Container(
- width: double.maxFinite,
- height: 180,
- color: Colors.white,
- child: charts.TimeSeriesChart(
- data,
- dateTimeFactory: const charts.LocalDateTimeFactory(),
- ),
+ width: double.maxFinite,
+ color: Colors.white,
+ child: LineChartCurved(
+ horizontalInterval: 2.0,
+ title: TranslationBase.of(context).weight,
+ timeSeries: model.weightYearTimeSeriesData,
+ indexes: model.weightYearTimeSeriesData.length ~/ 5.5,
+ )
),
SizedBox(
height: 12,
),
Padding(
padding: const EdgeInsets.all(8.0),
- child: Texts('Details'),
+ child: Texts(TranslationBase.of(context).details),
),
Container(
padding: EdgeInsets.all(10),
@@ -48,7 +55,7 @@ class WeightYearPage extends StatelessWidget {
border: TableBorder.symmetric(
inside: BorderSide(width: 2.0, color: Colors.grey[300]),
),
- children: fullData(),
+ children: fullData(context, projectViewModel, model),
),
],
),
@@ -58,21 +65,27 @@ class WeightYearPage extends StatelessWidget {
);
}
- List fullData() {
+ List fullData(BuildContext context,
+ ProjectViewModel projectViewModel, WeightPressureViewModel model) {
List tableRow = [];
tableRow.add(
TableRow(
children: [
Container(
decoration: BoxDecoration(
- color: HexColor('#515B5D'),
+ color: Theme.of(context).primaryColor,
borderRadius: BorderRadius.only(
- topLeft: Radius.circular(10.0),
+ topLeft: projectViewModel.isArabic
+ ? Radius.circular(0.0)
+ : Radius.circular(10.0),
+ topRight: projectViewModel.isArabic
+ ? Radius.circular(10.0)
+ : Radius.circular(0.0),
),
),
child: Center(
child: Texts(
- 'Date',
+ TranslationBase.of(context).date,
color: Colors.white,
fontSize: 15,
),
@@ -81,11 +94,11 @@ class WeightYearPage extends StatelessWidget {
),
Container(
decoration: BoxDecoration(
- color: HexColor('#515B5D'),
+ color: Theme.of(context).primaryColor,
),
child: Center(
child: Texts(
- 'Time',
+ TranslationBase.of(context).time,
color: Colors.white,
fontSize: 15,
),
@@ -93,11 +106,19 @@ class WeightYearPage extends StatelessWidget {
height: 40),
Container(
decoration: BoxDecoration(
- color: HexColor('#515B5D'),
+ color: Theme.of(context).primaryColor,
+ borderRadius: BorderRadius.only(
+ topLeft: projectViewModel.isArabic
+ ? Radius.circular(10.0)
+ : Radius.circular(0.0),
+ topRight: projectViewModel.isArabic
+ ? Radius.circular(0.0)
+ : Radius.circular(10.0),
+ ),
),
child: Center(
child: Texts(
- 'Value',
+ TranslationBase.of(context).value,
color: Colors.white,
fontSize: 15,
),
@@ -106,8 +127,8 @@ class WeightYearPage extends StatelessWidget {
],
),
);
- diabtecPatientResult.forEach(
- (diabtec) {
+ model.yearWeightMeasurementResult.forEach(
+ (diabtec) {
tableRow.add(
TableRow(
children: [
@@ -118,7 +139,7 @@ class WeightYearPage extends StatelessWidget {
color: Colors.white,
child: Center(
child: Texts(
- '${DateUtil.getMonthDayYearDateFormatted(diabtec.weightDate)} ',
+ '${projectViewModel.isArabic ? DateUtil.getMonthDayYearDateFormattedAr(diabtec.weightDate) : DateUtil.getMonthDayYearDateFormatted(diabtec.weightDate)} ',
textAlign: TextAlign.center,
fontSize: 12,
),
diff --git a/lib/pages/medical/my_trackers/blood_pressure/AddBloodPressurePage.dart b/lib/pages/medical/my_trackers/blood_pressure/AddBloodPressurePage.dart
index b8d9a557..678ef7dc 100644
--- a/lib/pages/medical/my_trackers/blood_pressure/AddBloodPressurePage.dart
+++ b/lib/pages/medical/my_trackers/blood_pressure/AddBloodPressurePage.dart
@@ -1,21 +1,41 @@
import 'package:diplomaticquarterapp/core/enum/viewstate.dart';
import 'package:diplomaticquarterapp/core/viewModels/medical/blood_pressure_view_model.dart';
-import 'package:diplomaticquarterapp/core/viewModels/medical/blood_sugar_view_model.dart';
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
-import 'package:diplomaticquarterapp/pages/base/base_view.dart';
import 'package:diplomaticquarterapp/pages/medical/balance/new_text_Field.dart';
+import 'package:diplomaticquarterapp/uitl/app_toast.dart';
import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
+import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
+import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/dialogs/RadioStringDialog.dart';
+import 'package:diplomaticquarterapp/widgets/dialogs/confirm_dialog.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
-import 'package:feather_icons_flutter/feather_icons_flutter.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_datetime_picker/flutter_datetime_picker.dart';
import 'package:provider/provider.dart';
class AddBloodPressurePage extends StatefulWidget {
+ final DateTime bloodSugarDate;
+ final String measureTimeSelectedType;
+ final bool isUpdate;
+ final int lineItemNo;
+ final String bloodSystolicValue;
+ final String bloodDiastolicValue;
+ final BloodPressureViewMode model;
+
+ const AddBloodPressurePage(
+ {Key key,
+ this.bloodSugarDate,
+ this.measureTimeSelectedType,
+ this.isUpdate=false,
+ this.lineItemNo,
+ this.model,
+ this.bloodSystolicValue,
+ this.bloodDiastolicValue})
+ : super(key: key);
+
@override
_AddBloodPressurePageState createState() => _AddBloodPressurePageState();
}
@@ -28,8 +48,8 @@ class _AddBloodPressurePageState extends State {
DateTime timeSugarDate = DateTime.now();
int measuredArm = 1;
final List measureTimeEnList = [
- 'Left Arm',
- 'Right Arm',
+ 'Left',
+ 'Right',
];
final List measureTimeArList = [
'الذراع الأيسر',
@@ -37,152 +57,220 @@ class _AddBloodPressurePageState extends State {
];
String measureTimeSelectedType = 'Left Arm';
+ @override
+ void initState() {
+ super.initState();
+ if (widget.isUpdate) {
+ bloodSugarDate = widget.bloodSugarDate;
+ bloodSugarDate = widget.bloodSugarDate;
+ measureTimeSelectedType = widget.measureTimeSelectedType;
+ if (measureTimeEnList.contains(widget.measureTimeSelectedType))
+ measuredArm = measureTimeEnList.indexOf(widget.measureTimeSelectedType);
+ else if (measureTimeArList.contains(widget.measureTimeSelectedType))
+ measuredArm = measureTimeArList.indexOf(widget.measureTimeSelectedType);
+ _bloodSystolicValueController.text = widget.bloodSystolicValue;
+ _bloodDiastolicValueController.text = widget.bloodDiastolicValue;
+ }
+ }
@override
Widget build(BuildContext context) {
ProjectViewModel projectViewModel = Provider.of(context);
- return BaseView(
- builder: (_, model, w) => AppScaffold(
- isShowAppBar: true,
- appBarTitle: 'Add',
- body: SingleChildScrollView(
- physics: BouncingScrollPhysics(),
- child: Container(
- margin: EdgeInsets.all(15),
- child: Column(
- children: [
- SizedBox(
- height: 15,
- ),
- NewTextFields(
- hintText: 'Enter Systolic Value',
- controller: _bloodSystolicValueController,
- keyboardType: TextInputType.number,
- ),
- SizedBox(
- height: 8,
- ),
- NewTextFields(
- hintText: 'Blood Diastolic Value',
- controller: _bloodDiastolicValueController,
- keyboardType: TextInputType.number,
- ),
- SizedBox(
- height: 8,
- ),
- InkWell(
- onTap: () {
- confirmSelectMeasureTimeDialog(projectViewModel.isArabic
- ? measureTimeEnList
- : measureTimeArList);
- },
- child: Container(
- padding: EdgeInsets.all(12),
- width: double.infinity,
- height: 65,
- decoration: BoxDecoration(
- borderRadius: BorderRadius.circular(12),
- color: Colors.white),
- child: Row(
- mainAxisAlignment: MainAxisAlignment.spaceBetween,
- children: [
- Texts(measureTimeSelectedType),
- Icon(
- Icons.arrow_drop_down,
- color: Colors.grey,
- )
- ],
- ),
+ return AppScaffold(
+ isShowAppBar: true,
+ appBarTitle: widget.isUpdate
+ ? TranslationBase.of(context).update
+ : TranslationBase.of(context).add,
+ appBarIcons: widget.isUpdate?[
+ IconButton(
+ icon: Icon(Icons.delete),
+ color: Colors.white,
+ onPressed: () {
+ ConfirmDialog dialog = new ConfirmDialog(
+ context: context,
+ confirmMessage: 'Remove this measure',
+ okText: TranslationBase.of(context).ok,
+ cancelText: TranslationBase.of(context).cancel,
+ okFunction: () async {
+ ConfirmDialog.closeAlertDialog(context);
+
+ GifLoaderDialogUtils.showMyDialog(context);
+ widget.model
+ .deactivateDiabeticStatus(lineItemNo: widget.lineItemNo)
+ .then((value) {
+ GifLoaderDialogUtils.hideDialog(context);
+ if (widget.model.state == ViewState.ErrorLocal)
+ AppToast.showErrorToast(message: widget.model.error);
+ else
+ Navigator.pop(context);
+ }).catchError((e) {
+ GifLoaderDialogUtils.hideDialog(context);
+ AppToast.showErrorToast(message: widget.model.error);
+ });
+ },
+ cancelFunction: () => {});
+ dialog.showAlertDialog(context);
+ },
+ )
+ ]:null,
+ body: SingleChildScrollView(
+ physics: BouncingScrollPhysics(),
+ child: Container(
+ margin: EdgeInsets.all(15),
+ child: Column(
+ children: [
+ SizedBox(
+ height: 15,
+ ),
+ NewTextFields(
+ hintText: TranslationBase.of(context).systolicAdd,
+ controller: _bloodSystolicValueController,
+ keyboardType: TextInputType.number,
+ ),
+ SizedBox(
+ height: 8,
+ ),
+ NewTextFields(
+ hintText: TranslationBase.of(context).diastolicAdd,
+ controller: _bloodDiastolicValueController,
+ keyboardType: TextInputType.number,
+ ),
+ SizedBox(
+ height: 8,
+ ),
+ InkWell(
+ onTap: () {
+ confirmSelectMeasureTimeDialog(projectViewModel.isArabic
+ ? measureTimeEnList
+ : measureTimeArList);
+ },
+ child: Container(
+ padding: EdgeInsets.all(12),
+ width: double.infinity,
+ height: 65,
+ decoration: BoxDecoration(
+ borderRadius: BorderRadius.circular(12),
+ color: Colors.white),
+ child: Row(
+ mainAxisAlignment: MainAxisAlignment.spaceBetween,
+ children: [
+ Texts(measureTimeSelectedType),
+ Icon(
+ Icons.arrow_drop_down,
+ color: Colors.grey,
+ )
+ ],
),
),
- SizedBox(
- height: 8,
- ),
- InkWell(
- onTap: () {
- DatePicker.showDatePicker(context,
- showTitleActions: true,
- minTime: DateTime(DateTime.now().year - 1, 1, 1),
- maxTime: DateTime.now(), onConfirm: (date) {
- print('confirm $date');
- setState(() {
+ ),
+ SizedBox(
+ height: 8,
+ ),
+ InkWell(
+ onTap: () {
+ DatePicker.showDatePicker(context,
+ showTitleActions: true,
+ minTime: DateTime(DateTime.now().year - 1, 1, 1),
+ maxTime: DateTime.now(), onConfirm: (date) {
+ setState(
+ () {
bloodSugarDate = date;
- });
- },
- currentTime: bloodSugarDate,
- locale: projectViewModel.localeType);
+ },
+ );
},
- child: Container(
- padding: EdgeInsets.all(12),
- width: double.infinity,
- height: 65,
- decoration: BoxDecoration(
- borderRadius: BorderRadius.circular(12),
- color: Colors.white),
- child: Row(
- mainAxisAlignment: MainAxisAlignment.spaceBetween,
- children: [
- Texts('Date'),
- Texts(getDate()),
- ],
- ),
+ currentTime: bloodSugarDate,
+ locale: projectViewModel.localeType);
+ },
+ child: Container(
+ padding: EdgeInsets.all(12),
+ width: double.infinity,
+ height: 65,
+ decoration: BoxDecoration(
+ borderRadius: BorderRadius.circular(12),
+ color: Colors.white),
+ child: Row(
+ mainAxisAlignment: MainAxisAlignment.spaceBetween,
+ children: [
+ Texts(TranslationBase.of(context).date),
+ Texts(getDate()),
+ ],
),
),
- SizedBox(
- height: 8,
- ),
- InkWell(
- onTap: () {
- DatePicker.showTimePicker(context, showTitleActions: true,
- onConfirm: (date) {
- print('confirm $date');
- setState(() {
+ ),
+ SizedBox(
+ height: 8,
+ ),
+ InkWell(
+ onTap: () {
+ DatePicker.showTimePicker(context, showTitleActions: true,
+ onConfirm: (date) {
+ setState(
+ () {
timeSugarDate = date;
- });
- },
- currentTime: timeSugarDate,
- locale: projectViewModel.localeType);
+ },
+ );
},
- child: Container(
- padding: EdgeInsets.all(12),
- width: double.infinity,
- height: 65,
- decoration: BoxDecoration(
- borderRadius: BorderRadius.circular(12),
- color: Colors.white),
- child: Row(
- mainAxisAlignment: MainAxisAlignment.spaceBetween,
- children: [Texts('Time'), Texts(getTime())],
- ),
+ currentTime: timeSugarDate,
+ locale: projectViewModel.localeType);
+ },
+ child: Container(
+ padding: EdgeInsets.all(12),
+ width: double.infinity,
+ height: 65,
+ decoration: BoxDecoration(
+ borderRadius: BorderRadius.circular(12),
+ color: Colors.white),
+ child: Row(
+ mainAxisAlignment: MainAxisAlignment.spaceBetween,
+ children: [
+ Texts(TranslationBase.of(context).time),
+ Texts(getTime())
+ ],
),
),
- ],
- ),
+ ),
+ ],
),
),
- bottomSheet: Container(
- color: Colors.transparent,
- width: double.infinity,
- height: MediaQuery.of(context).size.width * 0.2,
- child: Padding(
- padding: const EdgeInsets.all(15.0),
- child: SecondaryButton(
- loading: model.state == ViewState.BusyLocal,
- label: 'SAVE',
- textColor: Colors.white,
- onTap: () {
- if (_bloodSystolicValueController.text.isNotEmpty &&
- _bloodDiastolicValueController.text.isNotEmpty) {
- model.addDiabtecResult(
- bloodPressureDate: '${bloodSugarDate.year}-${bloodSugarDate.month}-${bloodSugarDate.day} ${timeSugarDate.hour}:${timeSugarDate.minute}:00',
- diastolicPressure: _bloodDiastolicValueController.text.toString(),
- systolicePressure: _bloodSystolicValueController.text.toString(),
- measuredArm: measuredArm,
- );
- }
- }),
- ),
+ ),
+ bottomSheet: Container(
+ color: Colors.transparent,
+ width: double.infinity,
+ height: MediaQuery.of(context).size.width * 0.2,
+ child: Padding(
+ padding: const EdgeInsets.all(15.0),
+ child: SecondaryButton(
+ loading: widget.model.state == ViewState.BusyLocal,
+ label: TranslationBase.of(context).save.toUpperCase(),
+ textColor: Colors.white,
+ onTap: () async {
+ if (_bloodSystolicValueController.text.isNotEmpty &&
+ _bloodDiastolicValueController.text.isNotEmpty) {
+ GifLoaderDialogUtils.showMyDialog(context);
+
+ widget.model.addORUpdateDiabtecResult(
+ isUpdate: widget.isUpdate,
+ bloodPressureDate:
+ '${bloodSugarDate.year}-${bloodSugarDate.month}-${bloodSugarDate.day} ${timeSugarDate.hour}:${timeSugarDate.minute}:00',
+ diastolicPressure:
+ _bloodDiastolicValueController.text.toString(),
+ systolicePressure:
+ _bloodSystolicValueController.text.toString(),
+ measuredArm: measuredArm,
+ ).then((value) {
+ GifLoaderDialogUtils.hideDialog(context);
+ if(widget.model.state == ViewState.BusyLocal)
+ AppToast.showErrorToast(message: widget.model.error);
+ else
+ Navigator.pop(context);
+;
+ }).catchError((e){
+ GifLoaderDialogUtils.hideDialog(context);
+ AppToast.showErrorToast(message: widget.model.error);
+ });
+ }
+ }),
),
),
);
diff --git a/lib/pages/medical/my_trackers/blood_pressure/BloodPressureHomePage.dart b/lib/pages/medical/my_trackers/blood_pressure/BloodPressureHomePage.dart
index de8bb509..723871cb 100644
--- a/lib/pages/medical/my_trackers/blood_pressure/BloodPressureHomePage.dart
+++ b/lib/pages/medical/my_trackers/blood_pressure/BloodPressureHomePage.dart
@@ -1,15 +1,15 @@
-import 'dart:ui';
-
+import 'package:diplomaticquarterapp/core/enum/viewstate.dart';
import 'package:diplomaticquarterapp/core/viewModels/medical/blood_pressure_view_model.dart';
-import 'package:diplomaticquarterapp/core/viewModels/medical/blood_sugar_view_model.dart';
import 'package:diplomaticquarterapp/pages/base/base_view.dart';
-import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
+import 'package:diplomaticquarterapp/pages/medical/my_trackers/widget/TabBarWidget.dart';
+import 'package:diplomaticquarterapp/uitl/app_toast.dart';
+import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
+import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
+import 'package:diplomaticquarterapp/widgets/dialogs/confirm_send_email_dialog.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
-import 'package:hexcolor/hexcolor.dart';
-
import 'AddBloodPressurePage.dart';
import 'BloodPressureMonthly.dart';
import 'BloodPressureYeaPage.dart';
@@ -42,69 +42,37 @@ class _BloodPressureHomePageState extends State
onModelReady: (model) => model.getBloodPressure(),
builder: (_, model, w) => AppScaffold(
isShowAppBar: true,
- appBarTitle: 'Blood Pressure',
+ appBarTitle: TranslationBase.of(context).bloodPressure,
baseViewModel: model,
+ appBarIcons: [IconButton(
+ icon: Icon(Icons.email),
+ color: Colors.white,
+ onPressed: () {
+ showDialog(
+ context: context,
+ child: ConfirmSendEmailDialog(
+ email: model.user.emailAddress,
+ onTapSendEmail: () async{
+ GifLoaderDialogUtils.showMyDialog(context);
+ model.sendReportByEmail().then((value) {
+ GifLoaderDialogUtils.hideDialog(context);
+ if(model.state == ViewState.ErrorLocal){
+ AppToast.showErrorToast(message: model.error);
+ }else{
+ AppToast.showSuccessToast(message:TranslationBase.of(context).emailSentSuccessfully, );
+ }
+ }).catchError((e){
+ GifLoaderDialogUtils.hideDialog(context);
+ AppToast.showErrorToast(message: model.error);
+ });
+ },
+ ),
+ );
+ },
+ ),],
body: Scaffold(
extendBodyBehindAppBar: true,
- appBar: PreferredSize(
- preferredSize: Size.fromHeight(60.0),
- child: Stack(
- children: [
- Positioned(
- bottom: 1,
- left: 0,
- right: 0,
- child: BackdropFilter(
- filter: ImageFilter.blur(sigmaX: 10, sigmaY: 10),
- child: Container(
- color: Theme.of(context)
- .scaffoldBackgroundColor
- .withOpacity(0.8),
- height: 70.0,
- ),
- ),
- ),
- Center(
- child: Container(
- height: 55.0,
- color: Colors.white,
- child: Center(
- child: TabBar(
- isScrollable: true,
- controller: _tabController,
- indicatorWeight: 5.0,
- indicatorSize: TabBarIndicatorSize.tab,
- labelColor: Theme.of(context).primaryColor,
- labelPadding:
- EdgeInsets.only(top: 4.0, left: 5.0, right: 5.0),
- unselectedLabelColor: Colors.grey[800],
- tabs: [
- Container(
- width: MediaQuery.of(context).size.width * 0.27,
- child: Center(
- child: Texts('Weekly'),
- ),
- ),
- Container(
- width: MediaQuery.of(context).size.width * 0.27,
- child: Center(
- child: Texts('Monthly'),
- ),
- ),
- Container(
- width: MediaQuery.of(context).size.width * 0.27,
- child: Center(
- child: Texts('Yearly'),
- ),
- ),
- ],
- ),
- ),
- ),
- ),
- ],
- ),
- ),
+ appBar: TabBarWidget(tabController: _tabController,),
body: Column(
children: [
Expanded(
@@ -113,16 +81,13 @@ class _BloodPressureHomePageState extends State
controller: _tabController,
children: [
BloodPressureWeeklyPage(
- data: model.getBloodWeeklySeries(),
- diabtecPatientResult: model.weekDiabtecPatientResult,
+ model: model,
),
BloodPressureMonthlyPage(
- data: model.getBloodMonthlyTimeSeriesSales(),
- diabtecPatientResult: model.monthDiabtecPatientResult,
+ model: model,
),
BloodPressureYearPage(
- data: model.getBloodYearTimeSeriesSales(),
- diabtecPatientResult: model.yearDiabtecPatientResult,
+ model: model,
)
],
),
@@ -131,13 +96,13 @@ class _BloodPressureHomePageState extends State
),
floatingActionButton: InkWell(
onTap: () {
- Navigator.push(context, FadePage(page: AddBloodPressurePage()));
+ Navigator.push(context, FadePage(page: AddBloodPressurePage(model: model,)));
},
child: Container(
width: 55,
height: 55,
decoration: BoxDecoration(
- shape: BoxShape.circle, color: HexColor('515B5D')),
+ shape: BoxShape.circle, color: Theme.of(context).primaryColor),
child: Center(
child: Icon(
Icons.add,
diff --git a/lib/pages/medical/my_trackers/blood_pressure/BloodPressureMonthly.dart b/lib/pages/medical/my_trackers/blood_pressure/BloodPressureMonthly.dart
index 8b9e504f..04853689 100644
--- a/lib/pages/medical/my_trackers/blood_pressure/BloodPressureMonthly.dart
+++ b/lib/pages/medical/my_trackers/blood_pressure/BloodPressureMonthly.dart
@@ -1,43 +1,45 @@
-import 'package:diplomaticquarterapp/core/model/my_trakers/blood_pressur/BloodPressureResult.dart';
-import 'package:diplomaticquarterapp/core/model/my_trakers/blood_sugar/DiabtecPatientResult.dart';
-import 'package:diplomaticquarterapp/core/model/my_trakers/chartData/WeekChartDate.dart';
-import 'package:diplomaticquarterapp/core/model/my_trakers/chartData/YearMonthlyChartDate.dart';
+import 'package:diplomaticquarterapp/core/viewModels/medical/blood_pressure_view_model.dart';
+import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
+import 'package:diplomaticquarterapp/pages/medical/my_trackers/widget/MonthCurvedChartBloodPressure.dart';
import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
+import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
-import 'package:charts_flutter/flutter.dart' as charts;
import 'package:hexcolor/hexcolor.dart';
+import 'package:provider/provider.dart';
class BloodPressureMonthlyPage extends StatelessWidget {
- final List> data;
- final List diabtecPatientResult;
+ final BloodPressureViewMode model;
+
+ const BloodPressureMonthlyPage({Key key, this.model}) : super(key: key);
- const BloodPressureMonthlyPage(
- {Key key, this.data, this.diabtecPatientResult})
- : super(key: key);
@override
Widget build(BuildContext context) {
+ ProjectViewModel projectViewModel = Provider.of(context);
+
return AppScaffold(
- body: ListView(
+ body: model.weighMonthTimeSeriesDataTop.isEmpty? Container(child: Center(child: Texts(TranslationBase.of(context).noDataAvailable),),):ListView(
children: [
- Container(
- width: double.maxFinite,
- height: 180,
- color: Colors.white,
- child: charts.LineChart(data,
- //animate: animate,
- defaultRenderer:
- new charts.LineRendererConfig(includePoints: true)),
- ),
+ Container(
+ margin: EdgeInsets.only(top: 12, left: 8, right: 8),
+ color: Colors.white,
+ child: MonthCurvedChartBloodPressure(
+ horizontalInterval: 20.0,
+ title: TranslationBase.of(context).bloodPressure,
+ timeSeries1: model.weighMonthTimeSeriesDataTop,
+ timeSeries2: model.weighMonthTimeSeriesDataLow,
+ indexes: model.weightWeekTimeSeriesDataLow.length ~/ 5.5,
+ ),
+ ),
SizedBox(
height: 12,
),
Padding(
padding: const EdgeInsets.all(8.0),
- child: Texts('Details'),
+ child: Texts(TranslationBase.of(context).details),
),
Container(
padding: EdgeInsets.all(10),
@@ -49,7 +51,7 @@ class BloodPressureMonthlyPage extends StatelessWidget {
border: TableBorder.symmetric(
inside: BorderSide(width: 2.0, color: Colors.grey[300]),
),
- children: fullData(),
+ children: fullData(context,projectViewModel,model),
),
],
),
@@ -59,7 +61,8 @@ class BloodPressureMonthlyPage extends StatelessWidget {
);
}
- List fullData() {
+ List fullData(BuildContext context,
+ ProjectViewModel projectViewModel, BloodPressureViewMode model) {
List tableRow = [];
tableRow.add(
TableRow(
@@ -67,7 +70,7 @@ class BloodPressureMonthlyPage extends StatelessWidget {
Container(
child: Container(
decoration: BoxDecoration(
- color: HexColor('#515B5D'),
+ color: Theme.of(context).primaryColor,
borderRadius: BorderRadius.only(
topLeft: Radius.circular(10.0),
),
@@ -85,7 +88,7 @@ class BloodPressureMonthlyPage extends StatelessWidget {
Container(
child: Container(
decoration: BoxDecoration(
- color: HexColor('#515B5D'),
+ color: Theme.of(context).primaryColor,
),
child: Center(
child: Texts(
@@ -99,11 +102,11 @@ class BloodPressureMonthlyPage extends StatelessWidget {
Container(
child: Container(
decoration: BoxDecoration(
- color: HexColor('#515B5D'),
+ color: Theme.of(context).primaryColor,
),
child: Center(
child: Texts(
- 'Measured',
+ 'Arm',
color: Colors.white,
fontSize: 15,
),
@@ -113,14 +116,14 @@ class BloodPressureMonthlyPage extends StatelessWidget {
Container(
child: Container(
decoration: BoxDecoration(
- color: HexColor('#515B5D'),
+ color: Theme.of(context).primaryColor,
borderRadius: BorderRadius.only(
topRight: Radius.circular(10.0),
),
),
child: Center(
child: Texts(
- 'Value',
+ 'SBP/DBP',
color: Colors.white,
fontSize: 15,
),
@@ -130,68 +133,50 @@ class BloodPressureMonthlyPage extends StatelessWidget {
],
),
);
- diabtecPatientResult.forEach(
+ model.monthDiabtecPatientResult.reversed.forEach(
(diabtec) {
tableRow.add(
TableRow(
children: [
Container(
- child: Container(
- height: 70,
- padding: EdgeInsets.all(10),
- color: Colors.white,
- child: Center(
- child: Texts(
- '${DateUtil.getMonthDayYearDateFormatted(diabtec.bloodPressureDate)} ',
- textAlign: TextAlign.center,
- fontSize: 12,
- ),
+ color: Colors.white,
+ child: Center(
+ child: Texts(
+ '${projectViewModel.isArabic? DateUtil.getMonthDayYearDateFormattedAr(diabtec.bloodPressureDate):DateUtil.getMonthDayYearDateFormatted(diabtec.bloodPressureDate)}',
+ fontSize: 15,
+ textAlign: TextAlign.center,
),
),
+ height: 40,
),
Container(
- child: Container(
- height: 70,
- padding: EdgeInsets.all(10),
color: Colors.white,
child: Center(
child: Texts(
'${diabtec.bloodPressureDate.hour}:${diabtec.bloodPressureDate.minute}',
- textAlign: TextAlign.center,
- fontSize: 12,
+ fontSize: 15,
),
),
- ),
- ),
+ height: 40),
Container(
- child: Container(
- height: 70,
- padding: EdgeInsets.all(10),
color: Colors.white,
child: Center(
child: Texts(
- '${diabtec.measuredArmDesc}',
- textAlign: TextAlign.center,
- fontSize: 12,
+ diabtec.measuredArmDesc,
+ fontSize: 15,
),
),
- ),
- ),
+ height: 40),
Container(
- child: Container(
- height: 70,
- padding: EdgeInsets.all(10),
color: Colors.white,
child: Center(
child: Texts(
'${diabtec.systolicePressure}/${diabtec.diastolicPressure}',
- textAlign: TextAlign.center,
- fontSize: 12,
color: Colors.red,
+ fontSize: 15,
),
),
- ),
- ),
+ height: 40),
],
),
);
diff --git a/lib/pages/medical/my_trackers/blood_pressure/BloodPressureYeaPage.dart b/lib/pages/medical/my_trackers/blood_pressure/BloodPressureYeaPage.dart
index 0c67be7c..b5b01f06 100644
--- a/lib/pages/medical/my_trackers/blood_pressure/BloodPressureYeaPage.dart
+++ b/lib/pages/medical/my_trackers/blood_pressure/BloodPressureYeaPage.dart
@@ -1,33 +1,34 @@
-import 'package:diplomaticquarterapp/core/model/my_trakers/blood_pressur/BloodPressureResult.dart';
-import 'package:diplomaticquarterapp/core/model/my_trakers/blood_sugar/DiabtecPatientResult.dart';
-import 'package:diplomaticquarterapp/core/model/my_trakers/chartData/WeekChartDate.dart';
+import 'package:diplomaticquarterapp/core/viewModels/medical/blood_pressure_view_model.dart';
+import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
+import 'package:diplomaticquarterapp/pages/medical/my_trackers/widget/CurvedChartBloodPressure.dart';
import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
+import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
-import 'package:charts_flutter/flutter.dart' as charts;
-import 'package:hexcolor/hexcolor.dart';
+import 'package:provider/provider.dart';
class BloodPressureYearPage extends StatelessWidget {
- final List> data;
- final List diabtecPatientResult;
+ final BloodPressureViewMode model;
- const BloodPressureYearPage({Key key, this.data, this.diabtecPatientResult})
- : super(key: key);
+ const BloodPressureYearPage({Key key, this.model}) : super(key: key);
@override
Widget build(BuildContext context) {
+ ProjectViewModel projectViewModel = Provider.of(context);
return AppScaffold(
- body: ListView(
+ body: model.weightYearTimeSeriesDataTop.isEmpty? Container(child: Center(child: Texts(TranslationBase.of(context).noDataAvailable),),):ListView(
children: [
Container(
- width: double.maxFinite,
- height: 180,
+ margin: EdgeInsets.only(top: 12, left: 8, right: 8),
color: Colors.white,
- child: charts.TimeSeriesChart(
- data,
- dateTimeFactory: const charts.LocalDateTimeFactory(),
+ child: CurvedChartBloodPressure(
+ horizontalInterval: 3.0,// model.weightWeekTimeSeriesDataLow.length==1 ?1 :20.0,
+ title: TranslationBase.of(context).bloodPressure,
+ timeSeries1: model.weightYearTimeSeriesDataTop,
+ timeSeries2: model.weightYearTimeSeriesDataLow,
+ indexes: model.weightWeekTimeSeriesDataLow.length ~/ 5.5,
),
),
SizedBox(
@@ -35,7 +36,7 @@ class BloodPressureYearPage extends StatelessWidget {
),
Padding(
padding: const EdgeInsets.all(8.0),
- child: Texts('Details'),
+ child: Texts(TranslationBase.of(context).details),
),
Container(
padding: EdgeInsets.all(10),
@@ -47,7 +48,7 @@ class BloodPressureYearPage extends StatelessWidget {
border: TableBorder.symmetric(
inside: BorderSide(width: 2.0, color: Colors.grey[300]),
),
- children: fullData(),
+ children: fullData(context, projectViewModel, model),
),
],
),
@@ -57,7 +58,10 @@ class BloodPressureYearPage extends StatelessWidget {
);
}
- List fullData() {
+ List fullData(
+ BuildContext context,
+ ProjectViewModel projectViewModel,
+ BloodPressureViewMode bloodSugarViewMode) {
List tableRow = [];
tableRow.add(
TableRow(
@@ -65,14 +69,19 @@ class BloodPressureYearPage extends StatelessWidget {
Container(
child: Container(
decoration: BoxDecoration(
- color: HexColor('#515B5D'),
+ color: Theme.of(context).primaryColor,
borderRadius: BorderRadius.only(
- topLeft: Radius.circular(10.0),
+ topLeft: projectViewModel.isArabic
+ ? Radius.circular(0.0)
+ : Radius.circular(10.0),
+ topRight: projectViewModel.isArabic
+ ? Radius.circular(10.0)
+ : Radius.circular(0.0),
),
),
child: Center(
child: Texts(
- 'Date',
+ TranslationBase.of(context).date,
color: Colors.white,
fontSize: 15,
),
@@ -83,11 +92,11 @@ class BloodPressureYearPage extends StatelessWidget {
Container(
child: Container(
decoration: BoxDecoration(
- color: HexColor('#515B5D'),
+ color: Theme.of(context).primaryColor,
),
child: Center(
child: Texts(
- 'Time',
+ TranslationBase.of(context).time,
color: Colors.white,
fontSize: 15,
),
@@ -97,11 +106,11 @@ class BloodPressureYearPage extends StatelessWidget {
Container(
child: Container(
decoration: BoxDecoration(
- color: HexColor('#515B5D'),
+ color: Theme.of(context).primaryColor,
),
child: Center(
child: Texts(
- 'Measured',
+ TranslationBase.of(context).measured,
color: Colors.white,
fontSize: 15,
),
@@ -111,14 +120,19 @@ class BloodPressureYearPage extends StatelessWidget {
Container(
child: Container(
decoration: BoxDecoration(
- color: HexColor('#515B5D'),
+ color: Theme.of(context).primaryColor,
borderRadius: BorderRadius.only(
- topRight: Radius.circular(10.0),
+ topLeft: projectViewModel.isArabic
+ ? Radius.circular(10.0)
+ : Radius.circular(0.0),
+ topRight: projectViewModel.isArabic
+ ? Radius.circular(0.0)
+ : Radius.circular(10.0),
),
),
child: Center(
child: Texts(
- 'Value',
+ TranslationBase.of(context).value,
color: Colors.white,
fontSize: 15,
),
@@ -128,7 +142,7 @@ class BloodPressureYearPage extends StatelessWidget {
],
),
);
- diabtecPatientResult.forEach(
+ model.yearDiabtecPatientResult.reversed.forEach(
(diabtec) {
tableRow.add(
TableRow(
diff --git a/lib/pages/medical/my_trackers/blood_pressure/bloodPressureWeeklyPage.dart b/lib/pages/medical/my_trackers/blood_pressure/bloodPressureWeeklyPage.dart
index 52313483..e4ff7332 100644
--- a/lib/pages/medical/my_trackers/blood_pressure/bloodPressureWeeklyPage.dart
+++ b/lib/pages/medical/my_trackers/blood_pressure/bloodPressureWeeklyPage.dart
@@ -1,33 +1,37 @@
-import 'package:diplomaticquarterapp/core/model/my_trakers/blood_pressur/BloodPressureResult.dart';
-import 'package:diplomaticquarterapp/core/model/my_trakers/blood_sugar/DiabtecPatientResult.dart';
-import 'package:diplomaticquarterapp/core/model/my_trakers/chartData/WeekChartDate.dart';
+import 'package:diplomaticquarterapp/core/viewModels/medical/blood_pressure_view_model.dart';
+import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
+import 'package:diplomaticquarterapp/pages/medical/my_trackers/widget/CurvedChartBloodPressure.dart';
import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
+import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
+import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
-import 'package:charts_flutter/flutter.dart' as charts;
-import 'package:hexcolor/hexcolor.dart';
+import 'package:provider/provider.dart';
+
+import 'AddBloodPressurePage.dart';
class BloodPressureWeeklyPage extends StatelessWidget {
- final List> data;
- final List diabtecPatientResult;
+ final BloodPressureViewMode model;
- const BloodPressureWeeklyPage({Key key, this.data, this.diabtecPatientResult})
- : super(key: key);
+ const BloodPressureWeeklyPage({Key key, this.model}) : super(key: key);
@override
Widget build(BuildContext context) {
+ ProjectViewModel projectViewModel = Provider.of(context);
return AppScaffold(
- body: ListView(
+ body: model.weightWeekTimeSeriesDataTop.isEmpty? Container(child: Center(child: Texts(TranslationBase.of(context).noDataAvailable),),): ListView(
children: [
Container(
- width: double.maxFinite,
- height: 180,
+ margin: EdgeInsets.only(top: 12, left: 8, right: 8),
color: Colors.white,
- child: charts.TimeSeriesChart(
- data,
- dateTimeFactory: const charts.LocalDateTimeFactory(),
+ child: CurvedChartBloodPressure(
+ horizontalInterval:3.0,
+ title: TranslationBase.of(context).bloodPressure,
+ timeSeries1: model.weightWeekTimeSeriesDataTop,
+ timeSeries2: model.weightWeekTimeSeriesDataLow,
+ indexes: model.weightWeekTimeSeriesDataLow.length ~/ 5.5,
),
),
SizedBox(
@@ -35,7 +39,7 @@ class BloodPressureWeeklyPage extends StatelessWidget {
),
Padding(
padding: const EdgeInsets.all(8.0),
- child: Texts('Details'),
+ child: Texts(TranslationBase.of(context).details),
),
Container(
padding: EdgeInsets.all(10),
@@ -47,7 +51,7 @@ class BloodPressureWeeklyPage extends StatelessWidget {
border: TableBorder.symmetric(
inside: BorderSide(width: 2.0, color: Colors.grey[300]),
),
- children: fullData(),
+ children: fullData(context, projectViewModel, model),
),
],
),
@@ -57,7 +61,10 @@ class BloodPressureWeeklyPage extends StatelessWidget {
);
}
- List fullData() {
+ List fullData(
+ BuildContext context,
+ ProjectViewModel projectViewModel,
+ BloodPressureViewMode bloodSugarViewMode) {
List tableRow = [];
tableRow.add(
TableRow(
@@ -65,14 +72,19 @@ class BloodPressureWeeklyPage extends StatelessWidget {
Container(
child: Container(
decoration: BoxDecoration(
- color: HexColor('#515B5D'),
+ color: Theme.of(context).primaryColor,
borderRadius: BorderRadius.only(
- topLeft: Radius.circular(10.0),
+ topLeft: projectViewModel.isArabic
+ ? Radius.circular(0.0)
+ : Radius.circular(10.0),
+ topRight: projectViewModel.isArabic
+ ? Radius.circular(10.0)
+ : Radius.circular(0.0),
),
),
child: Center(
child: Texts(
- 'Date',
+ TranslationBase.of(context).date,
color: Colors.white,
fontSize: 15,
),
@@ -83,11 +95,11 @@ class BloodPressureWeeklyPage extends StatelessWidget {
Container(
child: Container(
decoration: BoxDecoration(
- color: HexColor('#515B5D'),
+ color: Theme.of(context).primaryColor,
),
child: Center(
child: Texts(
- 'Time',
+ TranslationBase.of(context).time,
color: Colors.white,
fontSize: 15,
),
@@ -97,11 +109,11 @@ class BloodPressureWeeklyPage extends StatelessWidget {
Container(
child: Container(
decoration: BoxDecoration(
- color: HexColor('#515B5D'),
+ color: Theme.of(context).primaryColor,
),
child: Center(
child: Texts(
- 'Measured',
+ TranslationBase.of(context).measured,
color: Colors.white,
fontSize: 15,
),
@@ -111,11 +123,11 @@ class BloodPressureWeeklyPage extends StatelessWidget {
Container(
child: Container(
decoration: BoxDecoration(
- color: HexColor('#515B5D'),
+ color: Theme.of(context).primaryColor,
),
child: Center(
child: Texts(
- 'Value',
+ TranslationBase.of(context).value,
color: Colors.white,
fontSize: 15,
),
@@ -125,14 +137,19 @@ class BloodPressureWeeklyPage extends StatelessWidget {
Container(
child: Container(
decoration: BoxDecoration(
- color: HexColor('#515B5D'),
+ color: Theme.of(context).primaryColor,
borderRadius: BorderRadius.only(
- topRight: Radius.circular(10.0),
+ topLeft: projectViewModel.isArabic
+ ? Radius.circular(10.0)
+ : Radius.circular(0.0),
+ topRight: projectViewModel.isArabic
+ ? Radius.circular(0.0)
+ : Radius.circular(10.0),
),
),
child: Center(
child: Texts(
- 'Edit',
+ TranslationBase.of(context).edit,
color: Colors.white,
fontSize: 15,
),
@@ -142,7 +159,7 @@ class BloodPressureWeeklyPage extends StatelessWidget {
],
),
);
- diabtecPatientResult.forEach(
+ model.weekDiabtecPatientResult.reversed.forEach(
(diabtec) {
tableRow.add(
TableRow(
@@ -202,7 +219,23 @@ class BloodPressureWeeklyPage extends StatelessWidget {
),
),
),
- Container(
+ InkWell(
+ onTap: () {
+ Navigator.push(
+ context,
+ FadePage(
+ page: AddBloodPressurePage(
+ model: model,
+ isUpdate: true,
+ lineItemNo: diabtec.lineItemNo,
+ bloodSugarDate: diabtec.bloodPressureDate,
+ bloodDiastolicValue: diabtec.diastolicPressure.toString(),
+ bloodSystolicValue: diabtec.systolicePressure.toString(),
+ measureTimeSelectedType: diabtec.measuredArmDesc,
+ ),
+ ),
+ );
+ },
child: Container(
height: 70,
padding: EdgeInsets.all(10),
diff --git a/lib/pages/medical/my_trackers/blood_suger/AddBloodSugarPage.dart b/lib/pages/medical/my_trackers/blood_suger/AddBloodSugarPage.dart
index f39479ac..94e48b92 100644
--- a/lib/pages/medical/my_trackers/blood_suger/AddBloodSugarPage.dart
+++ b/lib/pages/medical/my_trackers/blood_suger/AddBloodSugarPage.dart
@@ -1,7 +1,6 @@
import 'package:diplomaticquarterapp/core/enum/viewstate.dart';
import 'package:diplomaticquarterapp/core/viewModels/medical/blood_sugar_view_model.dart';
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
-import 'package:diplomaticquarterapp/pages/base/base_view.dart';
import 'package:diplomaticquarterapp/pages/medical/balance/new_text_Field.dart';
import 'package:diplomaticquarterapp/uitl/app_toast.dart';
import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
@@ -10,6 +9,7 @@ import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/dialogs/RadioStringDialog.dart';
+import 'package:diplomaticquarterapp/widgets/dialogs/confirm_dialog.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
@@ -31,7 +31,9 @@ class AddBloodSugarPage extends StatefulWidget {
this.measureUnitSelectedType,
this.isUpdate = false,
this.measuredTime,
- this.bloodSugarValue, this.lineItemNo, this.bloodSugarViewMode})
+ this.bloodSugarValue,
+ this.lineItemNo,
+ this.bloodSugarViewMode})
: super(key: key);
@override
@@ -94,6 +96,40 @@ class _AddBloodSugarPageState extends State {
appBarTitle: widget.isUpdate
? TranslationBase.of(context).update
: TranslationBase.of(context).add,
+ appBarIcons: widget.isUpdate?[
+ IconButton(
+ icon: Icon(Icons.delete),
+ color: Colors.white,
+ onPressed: () {
+ ConfirmDialog dialog = new ConfirmDialog(
+ context: context,
+ confirmMessage: 'Remove this measure',
+ okText: TranslationBase.of(context).ok,
+ cancelText: TranslationBase.of(context).cancel,
+ okFunction: () async {
+ ConfirmDialog.closeAlertDialog(context);
+
+ GifLoaderDialogUtils.showMyDialog(context);
+ widget.bloodSugarViewMode
+ .deactivateDiabeticStatus(lineItemNo: widget.lineItemNo)
+ .then((value) {
+ GifLoaderDialogUtils.hideDialog(context);
+ if (widget.bloodSugarViewMode.state == ViewState.ErrorLocal)
+ AppToast.showErrorToast(
+ message: widget.bloodSugarViewMode.error);
+ else
+ Navigator.pop(context);
+ }).catchError((e) {
+ GifLoaderDialogUtils.hideDialog(context);
+ AppToast.showErrorToast(
+ message: widget.bloodSugarViewMode.error);
+ });
+ },
+ cancelFunction: () => {});
+ dialog.showAlertDialog(context);
+ },
+ )
+ ]:null,
body: SingleChildScrollView(
physics: BouncingScrollPhysics(),
child: Container(
@@ -143,10 +179,10 @@ class _AddBloodSugarPageState extends State {
showTitleActions: true,
minTime: DateTime(DateTime.now().year - 1, 1, 1),
maxTime: DateTime.now(), onConfirm: (date) {
- setState(() {
- bloodSugarDate = date;
- });
- },
+ setState(() {
+ bloodSugarDate = date;
+ });
+ },
currentTime: bloodSugarDate,
locale: projectViewModel.localeType);
},
@@ -173,10 +209,10 @@ class _AddBloodSugarPageState extends State {
onTap: () {
DatePicker.showTimePicker(context, showTitleActions: true,
onConfirm: (date) {
- setState(() {
- timeSugarDate = date;
- });
- },
+ setState(() {
+ timeSugarDate = date;
+ });
+ },
currentTime: timeSugarDate,
locale: projectViewModel.localeType);
},
@@ -236,39 +272,44 @@ class _AddBloodSugarPageState extends State {
child: Padding(
padding: const EdgeInsets.all(15.0),
child: SecondaryButton(
- label: TranslationBase.of(context).save,
+ label: TranslationBase.of(context).save.toUpperCase(),
textColor: Colors.white,
onTap: () {
if (_bloodSugarValueController.text.isNotEmpty) {
- GifLoaderDialogUtils.showMyDialog(context);
- if (widget.isUpdate)
- widget.bloodSugarViewMode.updateDiabtecResult(
- month: bloodSugarDate,
- hour: timeSugarDate,
- diabtecUnit: measureUnitSelectedType,
- measuredTime: measuredTime,
- lineItemNo: widget.lineItemNo,
- bloodSugerResult:
- _bloodSugarValueController.text.toString()).then((value) {
+ if (widget.isUpdate) {
+ GifLoaderDialogUtils.showMyDialog(context);
+ widget.bloodSugarViewMode
+ .updateDiabtecResult(
+ month: bloodSugarDate,
+ hour: timeSugarDate,
+ diabtecUnit: measureUnitSelectedType,
+ measuredTime: measuredTime,
+ lineItemNo: widget.lineItemNo,
+ bloodSugerResult:
+ _bloodSugarValueController.text.toString())
+ .then((value) {
GifLoaderDialogUtils.hideDialog(context);
- if(widget.bloodSugarViewMode.state == ViewState.Error)
- AppToast.showErrorToast(message: widget.bloodSugarViewMode.error);
+ if (widget.bloodSugarViewMode.state == ViewState.ErrorLocal)
+ AppToast.showErrorToast(
+ message: widget.bloodSugarViewMode.error);
else
Navigator.pop(context);
-
});
- else
- widget.bloodSugarViewMode.addDiabtecResult(
+ } else
+ widget.bloodSugarViewMode
+ .addDiabtecResult(
diabtecUnit: measureUnitSelectedType,
measuredTime: measuredTime,
bloodSugerResult:
- _bloodSugarValueController.text.toString(),
+ _bloodSugarValueController.text.toString(),
bloodSugerDateChart:
- '${bloodSugarDate.year}-${bloodSugarDate.month}-${bloodSugarDate.day} ${timeSugarDate.hour}:${timeSugarDate.minute}:00',
- ).then((value) {
+ '${bloodSugarDate.year}-${bloodSugarDate.month}-${bloodSugarDate.day} ${timeSugarDate.hour}:${timeSugarDate.minute}:00',
+ )
+ .then((value) {
GifLoaderDialogUtils.hideDialog(context);
- if(widget.bloodSugarViewMode.state == ViewState.Error)
- AppToast.showErrorToast(message: widget.bloodSugarViewMode.error);
+ if (widget.bloodSugarViewMode.state == ViewState.Error)
+ AppToast.showErrorToast(
+ message: widget.bloodSugarViewMode.error);
else
Navigator.pop(context);
});
diff --git a/lib/pages/medical/my_trackers/blood_suger/BloodMonthly.dart b/lib/pages/medical/my_trackers/blood_suger/BloodMonthly.dart
index fa49382f..1294c5dd 100644
--- a/lib/pages/medical/my_trackers/blood_suger/BloodMonthly.dart
+++ b/lib/pages/medical/my_trackers/blood_suger/BloodMonthly.dart
@@ -2,8 +2,11 @@ import 'package:diplomaticquarterapp/core/model/my_trakers/blood_sugar/DiabtecPa
import 'package:diplomaticquarterapp/core/model/my_trakers/chartData/WeekChartDate.dart';
import 'package:diplomaticquarterapp/core/model/my_trakers/chartData/YearMonthlyChartDate.dart';
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
+import 'package:diplomaticquarterapp/pages/medical/my_trackers/widget/LineChartCurved.dart';
+import 'package:diplomaticquarterapp/pages/medical/my_trackers/widget/MonthLineChartCurved.dart';
import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
+import 'package:diplomaticquarterapp/widgets/charts/app_time_series_chart.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:flutter/cupertino.dart';
@@ -13,25 +16,25 @@ import 'package:hexcolor/hexcolor.dart';
import 'package:provider/provider.dart';
class BloodMonthlyPage extends StatelessWidget {
- final List> data;
final List diabtecPatientResult;
+ final List timeSeriesData ;
- const BloodMonthlyPage({Key key, this.data, this.diabtecPatientResult})
+ const BloodMonthlyPage({Key key, this.diabtecPatientResult, this.timeSeriesData})
: super(key: key);
@override
Widget build(BuildContext context) {
ProjectViewModel projectViewModel = Provider.of(context);
return AppScaffold(
- body: ListView(
+ body: timeSeriesData.isEmpty?Container(child: Center(child: Texts(TranslationBase.of(context).noDataAvailable),),): ListView(
children: [
Container(
- width: double.maxFinite,
- height: 180,
- color: Colors.white,
- child: charts.LineChart(data,
- //animate: animate,
- defaultRenderer:
- new charts.LineRendererConfig(includePoints: true)),
+ width: double.maxFinite,
+ color: Colors.white,
+ child: MonthLineChartCurved(
+ title: 'Sugar',
+ timeSeries: timeSeriesData,
+ indexes: timeSeriesData.length ~/ 5.5,
+ )
),
SizedBox(
height: 12,
@@ -146,7 +149,7 @@ class BloodMonthlyPage extends StatelessWidget {
color: Colors.white,
child: Center(
child: Texts(
- '${DateUtil.getMonthDayYearDateFormatted(diabtec.dateChart)} ',
+ '${projectViewModel.isArabic ? DateUtil.getMonthDayYearDateFormattedAr(diabtec.dateChart):DateUtil.getMonthDayYearDateFormatted(diabtec.dateChart)} ',
textAlign: TextAlign.center,
fontSize: 12,
),
diff --git a/lib/pages/medical/my_trackers/blood_suger/BloodYeaPage.dart b/lib/pages/medical/my_trackers/blood_suger/BloodYeaPage.dart
index 69f00e61..842d55f1 100644
--- a/lib/pages/medical/my_trackers/blood_suger/BloodYeaPage.dart
+++ b/lib/pages/medical/my_trackers/blood_suger/BloodYeaPage.dart
@@ -1,8 +1,10 @@
import 'package:diplomaticquarterapp/core/model/my_trakers/blood_sugar/DiabtecPatientResult.dart';
import 'package:diplomaticquarterapp/core/model/my_trakers/chartData/WeekChartDate.dart';
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
+import 'package:diplomaticquarterapp/pages/medical/my_trackers/widget/LineChartCurved.dart';
import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
+import 'package:diplomaticquarterapp/widgets/charts/app_time_series_chart.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:flutter/cupertino.dart';
@@ -12,55 +14,62 @@ import 'package:hexcolor/hexcolor.dart';
import 'package:provider/provider.dart';
class BloodYearPage extends StatelessWidget {
- final List> data;
final List diabtecPatientResult;
+ final List timeSeriesData;
- const BloodYearPage({Key key, this.data, this.diabtecPatientResult})
+ const BloodYearPage({Key key, this.diabtecPatientResult, this.timeSeriesData})
: super(key: key);
@override
Widget build(BuildContext context) {
ProjectViewModel projectViewModel = Provider.of(context);
return AppScaffold(
- body: ListView(
- children: [
- Container(
- width: double.maxFinite,
- height: 180,
- color: Colors.white,
- child: charts.TimeSeriesChart(
- data,
- dateTimeFactory: const charts.LocalDateTimeFactory(),
- ),
- ),
- SizedBox(
- height: 12,
- ),
- Padding(
- padding: const EdgeInsets.all(8.0),
- child: Texts(TranslationBase.of(context).details),
- ),
- Container(
- padding: EdgeInsets.all(10),
- color: Colors.transparent,
- child: Column(
- crossAxisAlignment: CrossAxisAlignment.start,
- children: [
- Table(
- border: TableBorder.symmetric(
- inside: BorderSide(width: 2.0, color: Colors.grey[300]),
- ),
- children: fullData(context,projectViewModel),
+ body: timeSeriesData.isEmpty
+ ? Container(
+ child: Center(
+ child: Texts(TranslationBase.of(context).noDataAvailable),
+ ),
+ )
+ : ListView(
+ children: [
+ Container(
+ width: double.maxFinite,
+ color: Colors.white,
+ child: LineChartCurved(
+ title: 'Sugar',
+ timeSeries: timeSeriesData,
+ indexes: timeSeriesData.length ~/ 5.5,
+ )),
+ SizedBox(
+ height: 12,
),
+ Padding(
+ padding: const EdgeInsets.all(8.0),
+ child: Texts(TranslationBase.of(context).details),
+ ),
+ Container(
+ padding: EdgeInsets.all(10),
+ color: Colors.transparent,
+ child: Column(
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ Table(
+ border: TableBorder.symmetric(
+ inside:
+ BorderSide(width: 2.0, color: Colors.grey[300]),
+ ),
+ children: fullData(context, projectViewModel),
+ ),
+ ],
+ ),
+ )
],
),
- )
- ],
- ),
);
}
- List fullData(BuildContext context,ProjectViewModel projectViewModel) {
+ List fullData(
+ BuildContext context, ProjectViewModel projectViewModel) {
List tableRow = [];
tableRow.add(
TableRow(
@@ -70,8 +79,12 @@ class BloodYearPage extends StatelessWidget {
decoration: BoxDecoration(
color: Theme.of(context).primaryColor,
borderRadius: BorderRadius.only(
- topLeft: projectViewModel.isArabic? Radius.circular(0.0):Radius.circular(10.0),
- topRight: projectViewModel.isArabic? Radius.circular(10.0):Radius.circular(0.0),
+ topLeft: projectViewModel.isArabic
+ ? Radius.circular(0.0)
+ : Radius.circular(10.0),
+ topRight: projectViewModel.isArabic
+ ? Radius.circular(10.0)
+ : Radius.circular(0.0),
),
),
child: Center(
@@ -117,8 +130,12 @@ class BloodYearPage extends StatelessWidget {
decoration: BoxDecoration(
color: Theme.of(context).primaryColor,
borderRadius: BorderRadius.only(
- topLeft: projectViewModel.isArabic? Radius.circular(10.0):Radius.circular(0.0),
- topRight: projectViewModel.isArabic? Radius.circular(0.0):Radius.circular(10.0),
+ topLeft: projectViewModel.isArabic
+ ? Radius.circular(10.0)
+ : Radius.circular(0.0),
+ topRight: projectViewModel.isArabic
+ ? Radius.circular(0.0)
+ : Radius.circular(10.0),
),
),
child: Center(
@@ -130,7 +147,6 @@ class BloodYearPage extends StatelessWidget {
),
height: 40),
),
-
],
),
);
@@ -146,7 +162,7 @@ class BloodYearPage extends StatelessWidget {
color: Colors.white,
child: Center(
child: Texts(
- '${DateUtil.getMonthDayYearDateFormatted(diabtec.dateChart)} ',
+ '${projectViewModel.isArabic ? DateUtil.getMonthDayYearDateFormattedAr(diabtec.dateChart) : DateUtil.getMonthDayYearDateFormatted(diabtec.dateChart)} ',
textAlign: TextAlign.center,
fontSize: 12,
),
diff --git a/lib/pages/medical/my_trackers/blood_suger/blood_sugar_home_page.dart b/lib/pages/medical/my_trackers/blood_suger/blood_sugar_home_page.dart
index 70cdea0f..7abbcceb 100644
--- a/lib/pages/medical/my_trackers/blood_suger/blood_sugar_home_page.dart
+++ b/lib/pages/medical/my_trackers/blood_suger/blood_sugar_home_page.dart
@@ -1,9 +1,14 @@
import 'dart:ui';
+import 'package:diplomaticquarterapp/core/enum/viewstate.dart';
import 'package:diplomaticquarterapp/core/viewModels/medical/blood_sugar_view_model.dart';
import 'package:diplomaticquarterapp/pages/base/base_view.dart';
+import 'package:diplomaticquarterapp/pages/medical/my_trackers/widget/TabBarWidget.dart';
+import 'package:diplomaticquarterapp/uitl/app_toast.dart';
+import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
+import 'package:diplomaticquarterapp/widgets/dialogs/confirm_send_email_dialog.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
import 'package:flutter/cupertino.dart';
@@ -42,70 +47,38 @@ class _BloodSugarHomePageState extends State
return BaseView(
onModelReady: (model) => model.getBloodSugar(),
builder: (_, model, w) => AppScaffold(
+ appBarIcons: [IconButton(
+ icon: Icon(Icons.email),
+ color: Colors.white,
+ onPressed: () {
+ showDialog(
+ context: context,
+ child: ConfirmSendEmailDialog(
+ email: model.user.emailAddress,
+ onTapSendEmail: () async{
+ GifLoaderDialogUtils.showMyDialog(context);
+ model.sendReportByEmail().then((value) {
+ GifLoaderDialogUtils.hideDialog(context);
+ if(model.state == ViewState.ErrorLocal){
+ AppToast.showErrorToast(message: model.error);
+ }else{
+ AppToast.showSuccessToast(message:TranslationBase.of(context).emailSentSuccessfully, );
+ }
+ }).catchError((e){
+ GifLoaderDialogUtils.hideDialog(context);
+ AppToast.showErrorToast(message: model.error);
+ });
+ },
+ ),
+ );
+ },
+ ),],
isShowAppBar: true,
appBarTitle: TranslationBase.of(context).bloodSugar,
baseViewModel: model,
body: Scaffold(
extendBodyBehindAppBar: true,
- appBar: PreferredSize(
- preferredSize: Size.fromHeight(60.0),
- child: Stack(
- children: [
- Positioned(
- bottom: 1,
- left: 0,
- right: 0,
- child: BackdropFilter(
- filter: ImageFilter.blur(sigmaX: 10, sigmaY: 10),
- child: Container(
- color: Theme.of(context)
- .scaffoldBackgroundColor
- .withOpacity(0.8),
- height: 70.0,
- ),
- ),
- ),
- Center(
- child: Container(
- height: 55.0,
- color: Colors.white,
- child: Center(
- child: TabBar(
- isScrollable: true,
- controller: _tabController,
- indicatorWeight: 5.0,
- indicatorSize: TabBarIndicatorSize.tab,
- labelColor: Theme.of(context).primaryColor,
- labelPadding:
- EdgeInsets.only(top: 4.0, left: 5.0, right: 5.0),
- unselectedLabelColor: Colors.grey[800],
- tabs: [
- Container(
- width: MediaQuery.of(context).size.width * 0.33,
- child: Center(
- child: Texts(TranslationBase.of(context).weekly),
- ),
- ),
- Container(
- width: MediaQuery.of(context).size.width * 0.33,
- child: Center(
- child: Texts(TranslationBase.of(context).monthlyT),
- ),
- ),
- Container(
- width: MediaQuery.of(context).size.width * 0.34,
- child: Center(
- child: Texts(TranslationBase.of(context).yearly),
- ),
- ),
- ],
- ),
- ),
- ),
- ),
- ],
- ),
- ),
+ appBar: TabBarWidget(tabController: _tabController,),
body: Column(
children: [
Expanded(
@@ -114,16 +87,16 @@ class _BloodSugarHomePageState extends State
controller: _tabController,
children: [
BloodSugarWeeklyPage(
- data: model.getBloodWeeklySeries(),
+ timeSeriesData: model.bloodWeekTimeSeriesData,
diabtecPatientResult: model.weekDiabtecPatientResult,
bloodSugarViewMode: model,
),
BloodMonthlyPage(
- data: model.getBloodMonthlyTimeSeriesSales(),
+ timeSeriesData: model.monthTimeSeriesData,
diabtecPatientResult: model.monthDiabtecPatientResult,
),
BloodYearPage(
- data: model.getBloodYearTimeSeriesSales(),
+ timeSeriesData: model.yearTimeSeriesData,
diabtecPatientResult: model.yearDiabtecPatientResult,
)
],
diff --git a/lib/pages/medical/my_trackers/blood_suger/blood_sugar_weekly_page.dart b/lib/pages/medical/my_trackers/blood_suger/blood_sugar_weekly_page.dart
index 139548e1..60f3293d 100644
--- a/lib/pages/medical/my_trackers/blood_suger/blood_sugar_weekly_page.dart
+++ b/lib/pages/medical/my_trackers/blood_suger/blood_sugar_weekly_page.dart
@@ -2,40 +2,44 @@ import 'package:diplomaticquarterapp/core/model/my_trakers/blood_sugar/DiabtecPa
import 'package:diplomaticquarterapp/core/model/my_trakers/chartData/WeekChartDate.dart';
import 'package:diplomaticquarterapp/core/viewModels/medical/blood_sugar_view_model.dart';
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
+import 'package:diplomaticquarterapp/pages/medical/my_trackers/widget/LineChartCurved.dart';
import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
+import 'package:diplomaticquarterapp/widgets/charts/app_time_series_chart.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:charts_flutter/flutter.dart' as charts;
-import 'package:hexcolor/hexcolor.dart';
import 'package:provider/provider.dart';
-
import 'AddBloodSugarPage.dart';
class BloodSugarWeeklyPage extends StatelessWidget {
- final List> data;
final List diabtecPatientResult;
final BloodSugarViewMode bloodSugarViewMode;
+ final List timeSeriesData;
- const BloodSugarWeeklyPage({Key key, this.data, this.diabtecPatientResult, this.bloodSugarViewMode})
+ BloodSugarWeeklyPage(
+ {Key key,
+ this.diabtecPatientResult,
+ this.bloodSugarViewMode,
+ this.timeSeriesData})
: super(key: key);
@override
Widget build(BuildContext context) {
ProjectViewModel projectViewModel = Provider.of(context);
return AppScaffold(
- body: ListView(
+ body:timeSeriesData.isEmpty?Container(child: Center(child: Texts(TranslationBase.of(context).noDataAvailable),),): ListView(
children: [
Container(
- width: double.maxFinite,
- height: 180,
+ margin: EdgeInsets.only(top: 12, left: 8, right: 8),
color: Colors.white,
- child: charts.TimeSeriesChart(
- data,
- dateTimeFactory: const charts.LocalDateTimeFactory(),
+ child: LineChartCurved(
+ title: 'Sugar',
+ timeSeries: timeSeriesData,
+ indexes: timeSeriesData.length ~/ 5.5,
),
),
SizedBox(
@@ -55,7 +59,8 @@ class BloodSugarWeeklyPage extends StatelessWidget {
border: TableBorder.symmetric(
inside: BorderSide(width: 2.0, color: Colors.grey[300]),
),
- children: fullData(context, projectViewModel,bloodSugarViewMode),
+ children:
+ fullData(context, projectViewModel, bloodSugarViewMode),
),
],
),
@@ -66,7 +71,9 @@ class BloodSugarWeeklyPage extends StatelessWidget {
}
List fullData(
- BuildContext context, ProjectViewModel projectViewModel, BloodSugarViewMode bloodSugarViewMode) {
+ BuildContext context,
+ ProjectViewModel projectViewModel,
+ BloodSugarViewMode bloodSugarViewMode) {
List tableRow = [];
tableRow.add(
TableRow(
@@ -173,7 +180,7 @@ class BloodSugarWeeklyPage extends StatelessWidget {
color: Colors.white,
child: Center(
child: Texts(
- '${DateUtil.getMonthDayYearDateFormatted(diabtec.dateChart)}',
+ '${projectViewModel.isArabic ? DateUtil.getMonthDayYearDateFormattedAr(diabtec.dateChart):DateUtil.getMonthDayYearDateFormatted(diabtec.dateChart)} ',
textAlign: TextAlign.center,
fontSize: 12,
),
diff --git a/lib/pages/medical/my_trackers/widget/CurvedChartBloodPressure.dart b/lib/pages/medical/my_trackers/widget/CurvedChartBloodPressure.dart
new file mode 100644
index 00000000..ac2349bc
--- /dev/null
+++ b/lib/pages/medical/my_trackers/widget/CurvedChartBloodPressure.dart
@@ -0,0 +1,273 @@
+import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
+import 'package:diplomaticquarterapp/widgets/charts/app_time_series_chart.dart';
+import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
+import 'package:fl_chart/fl_chart.dart';
+import 'package:flutter/material.dart';
+
+import '../../../../Constants.dart';
+
+class CurvedChartBloodPressure extends StatelessWidget {
+ final String title;
+ final List timeSeries1;
+ final List