From 162e37f740b73a16b47c2422d3331a6920131a20 Mon Sep 17 00:00:00 2001 From: yaso-meth Date: Tue, 9 Jul 2024 16:51:00 +0200 Subject: [PATCH] UX update to add thene class and apply the theme to entire app --- .../lib/components/buildFilesList.dart | 38 ++- .../lib/components/buildMedList.dart | 23 +- .../lib/components/buildNotesList.dart | 33 ++- .../lib/components/buildPatientList.dart | 33 ++- .../lib/components/homeAppDrawer.dart | 24 +- .../lib/components/homeTile.dart | 34 ++- .../lib/components/medicineSearch.dart | 9 +- .../lib/components/myAppBar.dart | 10 +- .../lib/components/myDateInput.dart | 40 ++- .../lib/components/myDropdownInput.dart | 64 +++-- .../lib/components/myErrorMessage.dart | 94 +++---- .../lib/components/myMLTextInput.dart | 36 ++- .../lib/components/myPassInput.dart | 36 ++- .../lib/components/mySearchInput.dart | 45 +++- .../lib/components/mySuccessMessage.dart | 21 +- .../lib/components/myTextInput.dart | 37 ++- .../lib/components/mybutton.dart | 1 + .../lib/components/patManAppDrawer.dart | 231 ++++++++---------- .../lib/components/patientDetails.dart | 19 +- .../lib/components/patientFiles.dart | 87 +++---- .../lib/components/patientNotes.dart | 36 +-- .../lib/components/prescipInput.dart | 24 +- Frontend/patient_manager/lib/main.dart | 5 +- Frontend/patient_manager/lib/pages/home.dart | 29 +++ .../patient_manager/lib/pages/patientAdd.dart | 13 +- .../lib/pages/patientEdit.dart | 51 ++-- .../lib/pages/patientManager.dart | 26 +- .../lib/pages/patientView.dart | 2 +- .../patient_manager/lib/pages/register.dart | 81 +++--- .../patient_manager/lib/pages/signin.dart | 65 ++--- .../patient_manager/lib/theme/mihTheme.dart | 77 ++++++ database/#ib_16384_0.dblwr | Bin 6291456 -> 6291456 bytes database/#innodb_redo/#ib_redo18 | Bin 3276800 -> 3276800 bytes database/binlog.000056 | Bin 10138 -> 10476 bytes database/ibdata1 | Bin 12582912 -> 12582912 bytes database/mysql.ibd | Bin 46137344 -> 46137344 bytes database/patient_manager/patient_notes.ibd | Bin 147456 -> 147456 bytes database/undo_001 | Bin 16777216 -> 16777216 bytes 38 files changed, 823 insertions(+), 501 deletions(-) diff --git a/Frontend/patient_manager/lib/components/buildFilesList.dart b/Frontend/patient_manager/lib/components/buildFilesList.dart index d0602b63..6f7d9a8f 100644 --- a/Frontend/patient_manager/lib/components/buildFilesList.dart +++ b/Frontend/patient_manager/lib/components/buildFilesList.dart @@ -2,6 +2,7 @@ import 'package:flutter/material.dart'; import 'package:patient_manager/components/BuildFileView.dart'; import 'package:patient_manager/components/mybutton.dart'; import 'package:patient_manager/objects/files.dart'; +import 'package:patient_manager/theme/mihTheme.dart'; //import 'dart:js' as js; import "package:universal_html/html.dart" as html; @@ -22,6 +23,7 @@ class _BuildFilesListState extends State { void viewFilePopUp(String filename) { showDialog( context: context, + barrierDismissible: false, builder: (context) => Dialog( child: Stack( children: [ @@ -30,9 +32,10 @@ class _BuildFilesListState extends State { width: 800.0, //height: 475.0, decoration: BoxDecoration( - color: Colors.white, + color: MyTheme().primaryColor(), borderRadius: BorderRadius.circular(25.0), - border: Border.all(color: Colors.blueAccent, width: 5.0), + border: + Border.all(color: MyTheme().secondaryColor(), width: 5.0), ), child: Column( mainAxisSize: MainAxisSize.min, @@ -40,8 +43,8 @@ class _BuildFilesListState extends State { Text( filename, textAlign: TextAlign.center, - style: const TextStyle( - color: Colors.blueAccent, + style: TextStyle( + color: MyTheme().secondaryColor(), fontSize: 35.0, fontWeight: FontWeight.bold, ), @@ -59,8 +62,8 @@ class _BuildFilesListState extends State { 'http://localhost:9000/mih/$filename', 'download'); }, buttonText: "Dowload", - buttonColor: Colors.blueAccent, - textColor: Colors.white, + buttonColor: MyTheme().secondaryColor(), + textColor: MyTheme().primaryColor(), ), ) ], @@ -75,9 +78,9 @@ class _BuildFilesListState extends State { onPressed: () { Navigator.pop(context); }, - icon: const Icon( + icon: Icon( Icons.close, - color: Colors.red, + color: MyTheme().errorColor(), size: 35, ), ), @@ -96,16 +99,29 @@ class _BuildFilesListState extends State { child: ListView.separated( shrinkWrap: true, separatorBuilder: (BuildContext context, int index) { - return const Divider(); + return Divider( + color: MyTheme().secondaryColor(), + ); }, itemCount: widget.files.length, itemBuilder: (context, index) { return ListTile( title: Text( widget.files[index].file_name, + style: TextStyle( + color: MyTheme().secondaryColor(), + ), + ), + subtitle: Text( + widget.files[index].insert_date, + style: TextStyle( + color: MyTheme().secondaryColor(), + ), + ), + trailing: Icon( + Icons.arrow_forward, + color: MyTheme().secondaryColor(), ), - subtitle: Text(widget.files[index].insert_date), - trailing: const Icon(Icons.arrow_forward), onTap: () { viewFilePopUp(widget.files[index].file_name); }, diff --git a/Frontend/patient_manager/lib/components/buildMedList.dart b/Frontend/patient_manager/lib/components/buildMedList.dart index 0c6151ff..da733c80 100644 --- a/Frontend/patient_manager/lib/components/buildMedList.dart +++ b/Frontend/patient_manager/lib/components/buildMedList.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:patient_manager/objects/medicine.dart'; +import 'package:patient_manager/theme/mihTheme.dart'; class BuildMedicinesList extends StatefulWidget { final TextEditingController contoller; @@ -24,15 +25,26 @@ class _BuildMedicinesListState extends State { Widget build(BuildContext context) { return ListView.separated( separatorBuilder: (BuildContext context, int index) { - return const Divider(); + return Divider( + color: MyTheme().secondaryColor(), + ); }, itemCount: widget.medicines.length, itemBuilder: (context, index) { //final patient = widget.patients[index].id_no.contains(widget.searchString); return ListTile( - title: Text(widget.medicines[index].name), + title: Text( + widget.medicines[index].name, + style: TextStyle( + color: MyTheme().secondaryColor(), + ), + ), subtitle: Text( - "${widget.medicines[index].unit} - ${widget.medicines[index].form}"), + "${widget.medicines[index].unit} - ${widget.medicines[index].form}", + style: TextStyle( + color: MyTheme().secondaryColor(), + ), + ), onTap: () { setState(() { widget.contoller.text = @@ -40,7 +52,10 @@ class _BuildMedicinesListState extends State { Navigator.of(context).pop(); }); }, - trailing: const Icon(Icons.arrow_forward), + trailing: Icon( + Icons.arrow_forward, + color: MyTheme().secondaryColor(), + ), ); }, ); diff --git a/Frontend/patient_manager/lib/components/buildNotesList.dart b/Frontend/patient_manager/lib/components/buildNotesList.dart index 2910bef9..3eaea39d 100644 --- a/Frontend/patient_manager/lib/components/buildNotesList.dart +++ b/Frontend/patient_manager/lib/components/buildNotesList.dart @@ -2,6 +2,7 @@ import 'package:flutter/material.dart'; import 'package:patient_manager/components/myMLTextInput.dart'; //import 'package:patient_manager/components/mybutton.dart'; import 'package:patient_manager/objects/notes.dart'; +import 'package:patient_manager/theme/mihTheme.dart'; class BuildNotesList extends StatefulWidget { final List notes; @@ -24,6 +25,7 @@ class _BuildNotesListState extends State { }); showDialog( context: context, + barrierDismissible: false, builder: (context) => Dialog( child: Stack( children: [ @@ -32,9 +34,10 @@ class _BuildNotesListState extends State { width: 700.0, //height: 475.0, decoration: BoxDecoration( - color: Colors.white, + color: MyTheme().primaryColor(), borderRadius: BorderRadius.circular(25.0), - border: Border.all(color: Colors.blueAccent, width: 5.0), + border: + Border.all(color: MyTheme().secondaryColor(), width: 5.0), ), child: Column( //mainAxisSize: MainAxisSize.max, @@ -42,8 +45,8 @@ class _BuildNotesListState extends State { Text( title, textAlign: TextAlign.center, - style: const TextStyle( - color: Colors.blueAccent, + style: TextStyle( + color: MyTheme().secondaryColor(), fontSize: 35.0, fontWeight: FontWeight.bold, ), @@ -82,9 +85,9 @@ class _BuildNotesListState extends State { onPressed: () { Navigator.pop(context); }, - icon: const Icon( + icon: Icon( Icons.close, - color: Colors.red, + color: MyTheme().errorColor(), size: 35, ), ), @@ -103,17 +106,29 @@ class _BuildNotesListState extends State { child: ListView.separated( shrinkWrap: true, separatorBuilder: (BuildContext context, int index) { - return const Divider(); + return Divider( + color: MyTheme().secondaryColor(), + ); }, itemCount: widget.notes.length, itemBuilder: (context, index) { return ListTile( title: Text( widget.notes[index].note_name, + style: TextStyle( + color: MyTheme().secondaryColor(), + ), ), subtitle: Text( - "${widget.notes[index].insert_date}:\n${widget.notes[index].note_text}"), //Text(widget.notes[index].note_text), - trailing: const Icon(Icons.arrow_forward), + "${widget.notes[index].insert_date}:\n${widget.notes[index].note_text}", + style: TextStyle( + color: MyTheme().secondaryColor(), + ), + ), //Text(widget.notes[index].note_text), + trailing: Icon( + Icons.arrow_forward, + color: MyTheme().secondaryColor(), + ), onTap: () { viewNotePopUp(widget.notes[index].note_name, "${widget.notes[index].insert_date}:\n${widget.notes[index].note_text}"); diff --git a/Frontend/patient_manager/lib/components/buildPatientList.dart b/Frontend/patient_manager/lib/components/buildPatientList.dart index 60db4301..c4d7e732 100644 --- a/Frontend/patient_manager/lib/components/buildPatientList.dart +++ b/Frontend/patient_manager/lib/components/buildPatientList.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:patient_manager/objects/patients.dart'; +import 'package:patient_manager/theme/mihTheme.dart'; class BuildPatientsList extends StatefulWidget { final List patients; @@ -21,14 +22,25 @@ class _BuildPatientsListState extends State { return Row( mainAxisSize: MainAxisSize.max, children: [ - const Icon(Icons.star_border_rounded), + Icon( + Icons.star_border_rounded, + color: MyTheme().secondaryColor(), + ), Text( - "${widget.patients[index].first_name} ${widget.patients[index].last_name}"), + "${widget.patients[index].first_name} ${widget.patients[index].last_name}", + style: TextStyle( + color: MyTheme().secondaryColor(), + ), + ), ], ); } else { return Text( - "${widget.patients[index].first_name} ${widget.patients[index].last_name}"); + "${widget.patients[index].first_name} ${widget.patients[index].last_name}", + style: TextStyle( + color: MyTheme().secondaryColor(), + ), + ); } } @@ -36,7 +48,9 @@ class _BuildPatientsListState extends State { Widget build(BuildContext context) { return ListView.separated( separatorBuilder: (BuildContext context, index) { - return const Divider(); + return Divider( + color: MyTheme().secondaryColor(), + ); }, itemCount: widget.patients.length, itemBuilder: (context, index) { @@ -45,14 +59,21 @@ class _BuildPatientsListState extends State { return ListTile( title: isMainMember(index), subtitle: Text( - "ID No.: ${widget.patients[index].id_no}\nMedical Aid No.: ${widget.patients[index].medical_aid_no}"), + "ID No.: ${widget.patients[index].id_no}\nMedical Aid No.: ${widget.patients[index].medical_aid_no}", + style: TextStyle( + color: MyTheme().secondaryColor(), + ), + ), onTap: () { setState(() { Navigator.of(context).pushNamed('/patient-manager/patient', arguments: widget.patients[index]); }); }, - trailing: const Icon(Icons.arrow_forward), + trailing: Icon( + Icons.arrow_forward, + color: MyTheme().secondaryColor(), + ), ); }, ); diff --git a/Frontend/patient_manager/lib/components/homeAppDrawer.dart b/Frontend/patient_manager/lib/components/homeAppDrawer.dart index 8ec3ae66..35a8fd6c 100644 --- a/Frontend/patient_manager/lib/components/homeAppDrawer.dart +++ b/Frontend/patient_manager/lib/components/homeAppDrawer.dart @@ -1,5 +1,7 @@ import 'package:flutter/material.dart'; +import 'package:flutter/widgets.dart'; import 'package:patient_manager/main.dart'; +import 'package:patient_manager/theme/mihTheme.dart'; class HomeAppDrawer extends StatefulWidget { final String userEmail; @@ -14,21 +16,31 @@ class _HomeAppDrawerState extends State { @override Widget build(BuildContext context) { return Drawer( + backgroundColor: MyTheme().primaryColor(), child: ListView( padding: EdgeInsets.zero, children: [ DrawerHeader( - decoration: const BoxDecoration( - color: Colors.blueAccent, + decoration: BoxDecoration( + color: MyTheme().secondaryColor(), + ), + child: Text( + widget.userEmail, + style: TextStyle(color: MyTheme().primaryColor()), ), - child: Text(widget.userEmail), ), ListTile( - title: const Row( + title: Row( children: [ - Icon(Icons.logout), + Icon( + Icons.logout, + color: MyTheme().secondaryColor(), + ), SizedBox(width: 25.0), - Text("Sign Out"), + Text( + "Sign Out", + style: TextStyle(color: MyTheme().secondaryColor()), + ), ], ), onTap: () { diff --git a/Frontend/patient_manager/lib/components/homeTile.dart b/Frontend/patient_manager/lib/components/homeTile.dart index e7eb56d8..ebd989ae 100644 --- a/Frontend/patient_manager/lib/components/homeTile.dart +++ b/Frontend/patient_manager/lib/components/homeTile.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:patient_manager/theme/mihTheme.dart'; class HomeTile extends StatelessWidget { final String tileName; @@ -18,30 +19,39 @@ class HomeTile extends StatelessWidget { return GestureDetector( onTap: onTap, child: Card( - color: Colors.white, + color: MyTheme().secondaryColor(), elevation: 20, child: Column( //mainAxisSize: MainAxisSize.min, children: [ Expanded( child: ListTile( - leading: const Icon(Icons.abc), - title: Text( - tileName, - style: const TextStyle( - fontWeight: FontWeight.bold, + leading: Icon( + Icons.abc, + color: MyTheme().primaryColor(), ), - ), - subtitle: Text(tileDescription), - ), + title: Text( + tileName, + style: TextStyle( + fontWeight: FontWeight.bold, + color: MyTheme().primaryColor(), + ), + ), + subtitle: Text( + tileDescription, + style: TextStyle(color: MyTheme().primaryColor()), + )), ), - const Expanded( + Expanded( child: Row( mainAxisAlignment: MainAxisAlignment.end, children: [ Padding( - padding: EdgeInsets.symmetric(horizontal: 10), - child: Icon(Icons.arrow_forward), + padding: const EdgeInsets.symmetric(horizontal: 10), + child: Icon( + Icons.arrow_forward, + color: MyTheme().secondaryColor(), + ), ), ], ), diff --git a/Frontend/patient_manager/lib/components/medicineSearch.dart b/Frontend/patient_manager/lib/components/medicineSearch.dart index 16019287..a8be896e 100644 --- a/Frontend/patient_manager/lib/components/medicineSearch.dart +++ b/Frontend/patient_manager/lib/components/medicineSearch.dart @@ -5,6 +5,7 @@ import 'package:patient_manager/components/buildMedList.dart'; import 'package:patient_manager/components/myErrorMessage.dart'; import 'package:patient_manager/objects/medicine.dart'; import 'package:http/http.dart' as http; +import 'package:patient_manager/theme/mihTheme.dart'; class MedicineSearch extends StatefulWidget { final TextEditingController searchVlaue; @@ -65,20 +66,20 @@ class _MedicineSearchState extends State { width: 700.0, //height: 475.0, decoration: BoxDecoration( - color: Colors.white, + color: MyTheme().primaryColor(), borderRadius: BorderRadius.circular(25.0), - border: Border.all(color: Colors.blueAccent, width: 5.0), + border: Border.all(color: MyTheme().secondaryColor(), width: 5.0), ), child: Column( crossAxisAlignment: CrossAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center, mainAxisSize: MainAxisSize.min, children: [ - const Text( + Text( "Select Medicine", textAlign: TextAlign.center, style: TextStyle( - color: Colors.blueAccent, + color: MyTheme().secondaryColor(), fontSize: 35.0, fontWeight: FontWeight.bold, ), diff --git a/Frontend/patient_manager/lib/components/myAppBar.dart b/Frontend/patient_manager/lib/components/myAppBar.dart index bd3d6177..30779a9e 100644 --- a/Frontend/patient_manager/lib/components/myAppBar.dart +++ b/Frontend/patient_manager/lib/components/myAppBar.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:patient_manager/theme/mihTheme.dart'; class MyAppBar extends StatelessWidget implements PreferredSizeWidget { @override @@ -11,9 +12,10 @@ class MyAppBar extends StatelessWidget implements PreferredSizeWidget { @override Widget build(BuildContext context) { return AppBar( - backgroundColor: Colors.blueAccent, + //backgroundColor: Colors.blueAccent, elevation: 8, - shadowColor: Colors.black, + shadowColor: MyTheme().secondaryColor(), + iconTheme: IconThemeData(color: MyTheme().primaryColor()), // actions: [ // IconButton( // onPressed: () { @@ -27,9 +29,9 @@ class MyAppBar extends StatelessWidget implements PreferredSizeWidget { // ], title: Text( barTitle, - style: const TextStyle( + style: TextStyle( fontWeight: FontWeight.bold, - color: Colors.black, + color: MyTheme().primaryColor(), ), ), centerTitle: true, diff --git a/Frontend/patient_manager/lib/components/myDateInput.dart b/Frontend/patient_manager/lib/components/myDateInput.dart index 348726bd..3736d709 100644 --- a/Frontend/patient_manager/lib/components/myDateInput.dart +++ b/Frontend/patient_manager/lib/components/myDateInput.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:patient_manager/theme/mihTheme.dart'; class MyDateField extends StatefulWidget { final controller; @@ -40,20 +41,20 @@ class _MyDateFieldState extends State { return Row( mainAxisSize: MainAxisSize.min, children: [ - const Text( + Text( "*", - style: TextStyle(color: Colors.red), + style: TextStyle(color: MyTheme().errorColor()), ), const SizedBox( width: 8.0, ), Text(widget.LableText, - style: const TextStyle(color: Colors.blueAccent)), + style: TextStyle(color: MyTheme().secondaryColor())), ], ); } else { return Text(widget.LableText, - style: const TextStyle(color: Colors.blueAccent)); + style: TextStyle(color: MyTheme().secondaryColor())); } } @@ -88,6 +89,7 @@ class _MyDateFieldState extends State { return Padding( padding: const EdgeInsets.symmetric(horizontal: 25.0), child: TextField( + style: TextStyle(color: MyTheme().secondaryColor()), controller: widget.controller, readOnly: true, obscureText: false, @@ -97,25 +99,39 @@ class _MyDateFieldState extends State { }), decoration: InputDecoration( errorText: _errorText, + errorStyle: TextStyle( + color: MyTheme().errorColor(), fontWeight: FontWeight.bold), label: setRequiredText(), //labelText: widget.LableText, //labelStyle: const TextStyle(color: Colors.blueAccent), - prefixIcon: const Icon( + prefixIcon: Icon( Icons.calendar_today, - color: Colors.blueAccent, + color: MyTheme().secondaryColor(), ), - fillColor: Colors.white, + fillColor: MyTheme().primaryColor(), filled: true, //hintText: hintText, - hintStyle: TextStyle(color: Colors.blueGrey[400]), - enabledBorder: const OutlineInputBorder( + //hintStyle: TextStyle(color: Colors.blueGrey[400]), + enabledBorder: OutlineInputBorder( borderSide: BorderSide( - color: Colors.blueAccent, + color: MyTheme().secondaryColor(), width: 2.0, ), ), - focusedBorder: const OutlineInputBorder( - borderSide: BorderSide(color: Colors.blue), + focusedErrorBorder: OutlineInputBorder( + borderSide: BorderSide( + color: MyTheme().errorColor(), + width: 2.0, + ), + ), + errorBorder: OutlineInputBorder( + borderSide: BorderSide( + color: MyTheme().errorColor(), + width: 2.0, + ), + ), + focusedBorder: OutlineInputBorder( + borderSide: BorderSide(color: MyTheme().secondaryColor()), ), ), onTap: () { diff --git a/Frontend/patient_manager/lib/components/myDropdownInput.dart b/Frontend/patient_manager/lib/components/myDropdownInput.dart index 065aea86..0a76e769 100644 --- a/Frontend/patient_manager/lib/components/myDropdownInput.dart +++ b/Frontend/patient_manager/lib/components/myDropdownInput.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:patient_manager/theme/mihTheme.dart'; class MyDropdownField extends StatefulWidget { final TextEditingController controller; @@ -32,20 +33,20 @@ class _MyDropdownFieldState extends State { return Row( mainAxisSize: MainAxisSize.min, children: [ - const Text( + Text( "*", - style: TextStyle(color: Colors.red), + style: TextStyle(color: MyTheme().errorColor()), ), const SizedBox( width: 8.0, ), Text(widget.hintText, - style: const TextStyle(color: Colors.blueAccent)), + style: TextStyle(color: MyTheme().secondaryColor())), ], ); } else { return Text(widget.hintText, - style: const TextStyle(color: Colors.blueAccent)); + style: TextStyle(color: MyTheme().secondaryColor())); } } @@ -72,7 +73,12 @@ class _MyDropdownFieldState extends State { List> buidMenueOptions(List options) { List> menueList = []; for (final i in options) { - menueList.add(DropdownMenuEntry(value: i, label: i)); + menueList.add(DropdownMenuEntry( + value: i, + label: i, + style: ButtonStyle( + foregroundColor: + WidgetStatePropertyAll(MyTheme().secondaryColor())))); } return menueList; } @@ -90,12 +96,21 @@ class _MyDropdownFieldState extends State { return Padding( padding: const EdgeInsets.symmetric(horizontal: 25.0), child: DropdownMenu( - //onSelected: widget.onSelect, + trailingIcon: Icon( + Icons.arrow_drop_down, + color: MyTheme().secondaryColor(), + ), + selectedTrailingIcon: Icon( + Icons.arrow_drop_up, + color: MyTheme().secondaryColor(), + ), + textStyle: TextStyle(color: MyTheme().secondaryColor()), menuHeight: 300, controller: widget.controller, expandedInsets: EdgeInsets.zero, label: setRequiredText(), errorText: _errorText, + focusNode: _focus, onSelected: (_) => setState(() { startup = false; @@ -107,27 +122,44 @@ class _MyDropdownFieldState extends State { }); widget.controller.clear(); }, - icon: const Icon( + icon: Icon( Icons.delete_outline_rounded, - color: Colors.blueAccent, + color: MyTheme().secondaryColor(), ), ), - menuStyle: const MenuStyle( - backgroundColor: WidgetStatePropertyAll(Colors.white), + menuStyle: MenuStyle( + backgroundColor: WidgetStatePropertyAll(MyTheme().primaryColor()), side: WidgetStatePropertyAll( - BorderSide(color: Colors.blueAccent, width: 2.0), + BorderSide(color: MyTheme().secondaryColor(), width: 2.0), ), ), - inputDecorationTheme: const InputDecorationTheme( + + inputDecorationTheme: InputDecorationTheme( filled: true, - fillColor: Colors.white, - enabledBorder: OutlineInputBorder( + errorStyle: TextStyle( + color: MyTheme().errorColor(), fontWeight: FontWeight.bold), + fillColor: MyTheme().primaryColor(), + focusedBorder: OutlineInputBorder( + borderSide: BorderSide(color: MyTheme().secondaryColor())), + focusedErrorBorder: OutlineInputBorder( borderSide: BorderSide( - color: Colors.blueAccent, + color: MyTheme().errorColor(), width: 2.0, ), ), - outlineBorder: BorderSide(color: Colors.blue), + errorBorder: OutlineInputBorder( + borderSide: BorderSide( + color: MyTheme().errorColor(), + width: 2.0, + ), + ), + enabledBorder: OutlineInputBorder( + borderSide: BorderSide( + color: MyTheme().secondaryColor(), + width: 2.0, + ), + ), + outlineBorder: BorderSide(color: MyTheme().secondaryColor()), ), dropdownMenuEntries: menu, // const >[ diff --git a/Frontend/patient_manager/lib/components/myErrorMessage.dart b/Frontend/patient_manager/lib/components/myErrorMessage.dart index 6bdbff1f..3f2be2a7 100644 --- a/Frontend/patient_manager/lib/components/myErrorMessage.dart +++ b/Frontend/patient_manager/lib/components/myErrorMessage.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:patient_manager/theme/mihTheme.dart'; class MyErrorMessage extends StatefulWidget { final String errorType; @@ -22,35 +23,35 @@ class _MyErrorMessageState extends State { width: 500.0, height: 375.0, decoration: BoxDecoration( - color: Colors.white, + color: MyTheme().primaryColor(), borderRadius: BorderRadius.circular(25.0), - border: Border.all(color: Colors.red, width: 5.0), + border: Border.all(color: MyTheme().errorColor(), width: 5.0), ), child: Column( mainAxisSize: MainAxisSize.min, children: [ - const Icon( + Icon( Icons.warning_amber_rounded, size: 100, - color: Colors.red, + color: MyTheme().errorColor(), ), const SizedBox(height: 15), - const Text( + Text( "Oops! Looks like some fields are missing.", textAlign: TextAlign.center, style: TextStyle( - color: Colors.red, + color: MyTheme().errorColor(), fontSize: 25.0, fontWeight: FontWeight.bold, ), ), const SizedBox(height: 10), - const Padding( - padding: EdgeInsets.symmetric(horizontal: 25.0), + Padding( + padding: const EdgeInsets.symmetric(horizontal: 25.0), child: Text( "We noticed that some required fields are still empty. To ensure your request is processed smoothly, please fill out all the highlighted fields before submitting the form again.", style: TextStyle( - color: Colors.black, + color: MyTheme().secondaryColor(), fontSize: 15.0, fontWeight: FontWeight.bold, ), @@ -60,9 +61,9 @@ class _MyErrorMessageState extends State { Padding( padding: const EdgeInsets.symmetric(horizontal: 25.0), child: RichText( - text: const TextSpan( + text: TextSpan( style: TextStyle( - color: Colors.black, + color: MyTheme().secondaryColor(), fontSize: 15.0, fontWeight: FontWeight.bold, ), @@ -70,10 +71,15 @@ class _MyErrorMessageState extends State { TextSpan( text: "Here's a quick tip: ", style: TextStyle( - fontStyle: FontStyle.italic, color: Colors.red)), - TextSpan(text: "Look for fields with an asterisk ("), - TextSpan(text: "*", style: TextStyle(color: Colors.red)), - TextSpan(text: ") next to them, as these are mandatory."), + fontStyle: FontStyle.italic, + color: MyTheme().errorColor())), + const TextSpan( + text: "Look for fields with an asterisk ("), + TextSpan( + text: "*", + style: TextStyle(color: MyTheme().errorColor())), + const TextSpan( + text: ") next to them, as these are mandatory."), ], ), ), @@ -90,9 +96,9 @@ class _MyErrorMessageState extends State { onPressed: () { Navigator.pop(context); }, - icon: const Icon( + icon: Icon( Icons.close, - color: Colors.red, + color: MyTheme().errorColor(), size: 35, ), ), @@ -109,60 +115,60 @@ class _MyErrorMessageState extends State { width: 500.0, height: 450.0, decoration: BoxDecoration( - color: Colors.white, + color: MyTheme().primaryColor(), borderRadius: BorderRadius.circular(25.0), - border: Border.all(color: Colors.red, width: 5.0), + border: Border.all(color: MyTheme().errorColor(), width: 5.0), ), - child: const Column( + child: Column( mainAxisSize: MainAxisSize.min, children: [ Icon( Icons.warning_amber_rounded, size: 100, - color: Colors.red, + color: MyTheme().errorColor(), ), SizedBox(height: 15), Text( "Uh oh! Login attempt unsuccessful.", textAlign: TextAlign.center, style: TextStyle( - color: Colors.red, + color: MyTheme().errorColor(), fontSize: 25.0, fontWeight: FontWeight.bold, ), ), - SizedBox(height: 10), + const SizedBox(height: 10), Padding( padding: EdgeInsets.symmetric(horizontal: 25.0), child: Text( "The email address or password you entered doesn't seem to match our records. Please double-check your information and try again.", style: TextStyle( - color: Colors.black, + color: MyTheme().secondaryColor(), fontSize: 15.0, fontWeight: FontWeight.bold, ), ), ), - SizedBox(height: 15), + const SizedBox(height: 15), Padding( padding: EdgeInsets.symmetric(horizontal: 25.0), child: Text( "Here are some things to keep in mind:", style: TextStyle( - color: Colors.black, + color: MyTheme().secondaryColor(), fontSize: 20.0, fontWeight: FontWeight.bold, ), ), ), - SizedBox(height: 10), + const SizedBox(height: 10), Padding( padding: EdgeInsets.symmetric(horizontal: 25.0), child: Text( "1) Are you sure you're using the correct email address associated with your account?\n2) Is your caps lock key on? Passwords are case-sensitive.\n3) If you've forgotten your password, no worries! Click on \"Forgot Password?\" to reset it.", textAlign: TextAlign.left, style: TextStyle( - color: Colors.black, + color: MyTheme().secondaryColor(), fontSize: 15.0, fontWeight: FontWeight.bold, ), @@ -180,9 +186,9 @@ class _MyErrorMessageState extends State { onPressed: () { Navigator.pop(context); }, - icon: const Icon( + icon: Icon( Icons.close, - color: Colors.red, + color: MyTheme().errorColor(), size: 35, ), ), @@ -199,60 +205,60 @@ class _MyErrorMessageState extends State { width: 500.0, height: 450.0, decoration: BoxDecoration( - color: Colors.white, + color: MyTheme().primaryColor(), borderRadius: BorderRadius.circular(25.0), - border: Border.all(color: Colors.red, width: 5.0), + border: Border.all(color: MyTheme().errorColor(), width: 5.0), ), - child: const Column( + child: Column( mainAxisSize: MainAxisSize.min, children: [ Icon( Icons.warning_amber_rounded, size: 100, - color: Colors.red, + color: MyTheme().errorColor(), ), - SizedBox(height: 15), + const SizedBox(height: 15), Text( "Internet Connection Lost!", textAlign: TextAlign.center, style: TextStyle( - color: Colors.red, + color: MyTheme().errorColor(), fontSize: 25.0, fontWeight: FontWeight.bold, ), ), - SizedBox(height: 10), + const SizedBox(height: 10), Padding( padding: EdgeInsets.symmetric(horizontal: 25.0), child: Text( "We seem to be having some trouble connecting you to the internet. This could be due to a temporary outage or an issue with your device's connection.", style: TextStyle( - color: Colors.black, + color: MyTheme().secondaryColor(), fontSize: 15.0, fontWeight: FontWeight.bold, ), ), ), - SizedBox(height: 15), + const SizedBox(height: 15), Padding( padding: EdgeInsets.symmetric(horizontal: 25.0), child: Text( "Here are a few things you can try:", style: TextStyle( - color: Colors.black, + color: MyTheme().secondaryColor(), fontSize: 20.0, fontWeight: FontWeight.bold, ), ), ), - SizedBox(height: 10), + const SizedBox(height: 10), Padding( padding: EdgeInsets.symmetric(horizontal: 25.0), child: Text( "1) Check your Wi-Fi signal strength or try connecting to a different network.\n2) Restart your device (computer, phone, etc.) and your router/modem.\n3) If you're using cellular data, ensure you have a strong signal and haven't reached your data limit.", textAlign: TextAlign.left, style: TextStyle( - color: Colors.black, + color: MyTheme().secondaryColor(), fontSize: 15.0, fontWeight: FontWeight.bold, ), @@ -270,9 +276,9 @@ class _MyErrorMessageState extends State { onPressed: () { Navigator.pop(context); }, - icon: const Icon( + icon: Icon( Icons.close, - color: Colors.red, + color: MyTheme().errorColor(), size: 35, ), ), diff --git a/Frontend/patient_manager/lib/components/myMLTextInput.dart b/Frontend/patient_manager/lib/components/myMLTextInput.dart index fe961129..fac7c4d8 100644 --- a/Frontend/patient_manager/lib/components/myMLTextInput.dart +++ b/Frontend/patient_manager/lib/components/myMLTextInput.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:patient_manager/theme/mihTheme.dart'; class MyMLTextField extends StatefulWidget { final controller; @@ -55,20 +56,20 @@ class _MyMLTextFieldState extends State { return Row( mainAxisSize: MainAxisSize.min, children: [ - const Text( + Text( "*", - style: TextStyle(color: Colors.red), + style: TextStyle(color: MyTheme().errorColor()), ), const SizedBox( width: 8.0, ), Text(widget.hintText, - style: const TextStyle(color: Colors.blueAccent)), + style: TextStyle(color: MyTheme().secondaryColor())), ], ); } else { return Text(widget.hintText, - style: const TextStyle(color: Colors.blueAccent)); + style: TextStyle(color: MyTheme().secondaryColor())); } } @@ -83,6 +84,7 @@ class _MyMLTextFieldState extends State { return Padding( padding: const EdgeInsets.symmetric(horizontal: 25.0), child: TextField( + style: TextStyle(color: MyTheme().secondaryColor()), textAlign: TextAlign.start, textAlignVertical: TextAlignVertical.top, expands: true, @@ -97,20 +99,34 @@ class _MyMLTextFieldState extends State { decoration: InputDecoration( label: setRequiredText(), errorText: _errorText, - labelStyle: const TextStyle(color: Colors.blueAccent), + errorStyle: TextStyle( + color: MyTheme().errorColor(), fontWeight: FontWeight.bold), + labelStyle: TextStyle(color: MyTheme().secondaryColor()), alignLabelWithHint: true, - fillColor: Colors.white, + fillColor: MyTheme().primaryColor(), filled: true, //hintText: hintText, //hintStyle: TextStyle(color: Colors.blueGrey[400]), - enabledBorder: const OutlineInputBorder( + enabledBorder: OutlineInputBorder( borderSide: BorderSide( - color: Colors.blueAccent, + color: MyTheme().secondaryColor(), width: 2.0, ), ), - focusedBorder: const OutlineInputBorder( - borderSide: BorderSide(color: Colors.blue), + focusedErrorBorder: OutlineInputBorder( + borderSide: BorderSide( + color: MyTheme().errorColor(), + width: 2.0, + ), + ), + errorBorder: OutlineInputBorder( + borderSide: BorderSide( + color: MyTheme().errorColor(), + width: 2.0, + ), + ), + focusedBorder: OutlineInputBorder( + borderSide: BorderSide(color: MyTheme().secondaryColor()), ), ), ), diff --git a/Frontend/patient_manager/lib/components/myPassInput.dart b/Frontend/patient_manager/lib/components/myPassInput.dart index a35d24f8..c23a976d 100644 --- a/Frontend/patient_manager/lib/components/myPassInput.dart +++ b/Frontend/patient_manager/lib/components/myPassInput.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:patient_manager/theme/mihTheme.dart'; class MyPassField extends StatefulWidget { final controller; @@ -51,20 +52,20 @@ class _MyPassFieldState extends State { return Row( mainAxisSize: MainAxisSize.min, children: [ - const Text( + Text( "*", - style: TextStyle(color: Colors.red), + style: TextStyle(color: MyTheme().errorColor()), ), const SizedBox( width: 8.0, ), Text(widget.hintText, - style: const TextStyle(color: Colors.blueAccent)), + style: TextStyle(color: MyTheme().secondaryColor())), ], ); } else { return Text(widget.hintText, - style: const TextStyle(color: Colors.blueAccent)); + style: TextStyle(color: MyTheme().secondaryColor())); } } @@ -86,27 +87,42 @@ class _MyPassFieldState extends State { padding: const EdgeInsets.symmetric(horizontal: 25.0), child: TextField( controller: widget.controller, + style: TextStyle(color: MyTheme().secondaryColor()), obscureText: _obscured, focusNode: textFieldFocusNode, onChanged: (_) => setState(() { startup = false; }), decoration: InputDecoration( - fillColor: Colors.white, + fillColor: MyTheme().primaryColor(), filled: true, label: setRequiredText(), //labelStyle: const TextStyle(color: Colors.blueAccent), errorText: _errorText, + errorStyle: TextStyle( + color: MyTheme().errorColor(), fontWeight: FontWeight.bold), //hintText: widget.hintText, //hintStyle: TextStyle(color: Colors.blueGrey[400]), - enabledBorder: const OutlineInputBorder( + enabledBorder: OutlineInputBorder( borderSide: BorderSide( - color: Colors.blueAccent, + color: MyTheme().secondaryColor(), width: 2.0, ), ), - focusedBorder: const OutlineInputBorder( - borderSide: BorderSide(color: Colors.blue), + focusedErrorBorder: OutlineInputBorder( + borderSide: BorderSide( + color: MyTheme().errorColor(), + width: 2.0, + ), + ), + errorBorder: OutlineInputBorder( + borderSide: BorderSide( + color: MyTheme().errorColor(), + width: 2.0, + ), + ), + focusedBorder: OutlineInputBorder( + borderSide: BorderSide(color: MyTheme().secondaryColor()), ), suffixIcon: Padding( padding: const EdgeInsets.fromLTRB(0, 0, 4, 0), @@ -117,7 +133,7 @@ class _MyPassFieldState extends State { ? Icons.visibility_rounded : Icons.visibility_off_rounded, size: 24, - color: Colors.blue, + color: MyTheme().secondaryColor(), ), ), ), diff --git a/Frontend/patient_manager/lib/components/mySearchInput.dart b/Frontend/patient_manager/lib/components/mySearchInput.dart index 0f9c277d..98257500 100644 --- a/Frontend/patient_manager/lib/components/mySearchInput.dart +++ b/Frontend/patient_manager/lib/components/mySearchInput.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:patient_manager/theme/mihTheme.dart'; class MySearchField extends StatefulWidget { final TextEditingController controller; @@ -59,20 +60,24 @@ class _MySearchFieldState extends State { return Row( mainAxisSize: MainAxisSize.min, children: [ - const Text( + Text( "*", - style: TextStyle(color: Colors.red), + style: TextStyle(color: MyTheme().errorColor()), ), const SizedBox( width: 8.0, ), - Text(widget.hintText, - style: const TextStyle(color: Colors.blueAccent)), + Text( + widget.hintText, + style: TextStyle( + color: MyTheme().secondaryColor(), + ), + ), ], ); } else { return Text(widget.hintText, - style: const TextStyle(color: Colors.blueAccent)); + style: TextStyle(color: MyTheme().secondaryColor())); } } @@ -87,17 +92,19 @@ class _MySearchFieldState extends State { return Padding( padding: const EdgeInsets.symmetric(horizontal: 25.0), child: TextField( + style: TextStyle(color: MyTheme().secondaryColor()), onChanged: widget.onChanged, controller: widget.controller, + //style: TextStyle(color: MyTheme().secondaryColor()), readOnly: makeEditable(), focusNode: _focus, obscureText: false, decoration: InputDecoration( - fillColor: Colors.white, + fillColor: MyTheme().primaryColor(), prefixIcon: IconButton( - icon: const Icon( + icon: Icon( Icons.search, - color: Colors.blueAccent, + color: MyTheme().secondaryColor(), ), onPressed: () { setState(() { @@ -111,14 +118,28 @@ class _MySearchFieldState extends State { filled: true, label: setRequiredText(), errorText: _errorText, - enabledBorder: const OutlineInputBorder( + errorStyle: TextStyle( + color: MyTheme().errorColor(), fontWeight: FontWeight.bold), + enabledBorder: OutlineInputBorder( borderSide: BorderSide( - color: Colors.blueAccent, + color: MyTheme().secondaryColor(), width: 2.0, ), ), - focusedBorder: const OutlineInputBorder( - borderSide: BorderSide(color: Colors.blue), + focusedErrorBorder: OutlineInputBorder( + borderSide: BorderSide( + color: MyTheme().errorColor(), + width: 2.0, + ), + ), + errorBorder: OutlineInputBorder( + borderSide: BorderSide( + color: MyTheme().errorColor(), + width: 2.0, + ), + ), + focusedBorder: OutlineInputBorder( + borderSide: BorderSide(color: MyTheme().secondaryColor()), ), ), ), diff --git a/Frontend/patient_manager/lib/components/mySuccessMessage.dart b/Frontend/patient_manager/lib/components/mySuccessMessage.dart index d0488d6d..7176abef 100644 --- a/Frontend/patient_manager/lib/components/mySuccessMessage.dart +++ b/Frontend/patient_manager/lib/components/mySuccessMessage.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:patient_manager/components/mybutton.dart'; +import 'package:patient_manager/theme/mihTheme.dart'; class MySuccessMessage extends StatefulWidget { final String successType; @@ -26,24 +27,24 @@ class _MySuccessMessageState extends State { width: 500.0, // height: 375.0, decoration: BoxDecoration( - color: Colors.white, + color: MyTheme().primaryColor(), borderRadius: BorderRadius.circular(25.0), - border: Border.all(color: Colors.green, width: 5.0), + border: Border.all(color: MyTheme().successColor(), width: 5.0), ), child: Column( mainAxisSize: MainAxisSize.min, children: [ - const Icon( + Icon( Icons.check_circle_outline_rounded, size: 100, - color: Colors.green, + color: MyTheme().successColor(), ), const SizedBox(height: 15), - const Text( + Text( "Success!", textAlign: TextAlign.center, style: TextStyle( - color: Colors.green, + color: MyTheme().successColor(), fontSize: 25.0, fontWeight: FontWeight.bold, ), @@ -53,8 +54,8 @@ class _MySuccessMessageState extends State { padding: const EdgeInsets.symmetric(horizontal: 25.0), child: Text( message, - style: const TextStyle( - color: Colors.black, + style: TextStyle( + color: MyTheme().secondaryColor(), fontSize: 15.0, fontWeight: FontWeight.bold, ), @@ -69,8 +70,8 @@ class _MySuccessMessageState extends State { Navigator.pop(context); }, buttonText: "Dismiss", - buttonColor: Colors.green, - textColor: Colors.white, + buttonColor: MyTheme().successColor(), + textColor: MyTheme().primaryColor(), ), ), ], diff --git a/Frontend/patient_manager/lib/components/myTextInput.dart b/Frontend/patient_manager/lib/components/myTextInput.dart index e4efcce8..2cc38f5d 100644 --- a/Frontend/patient_manager/lib/components/myTextInput.dart +++ b/Frontend/patient_manager/lib/components/myTextInput.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:patient_manager/theme/mihTheme.dart'; class MyTextField extends StatefulWidget { final controller; @@ -55,20 +56,20 @@ class _MyTextFieldState extends State { return Row( mainAxisSize: MainAxisSize.min, children: [ - const Text( + Text( "*", - style: TextStyle(color: Colors.red), + style: TextStyle(color: MyTheme().errorColor()), ), const SizedBox( width: 8.0, ), Text(widget.hintText, - style: const TextStyle(color: Colors.blueAccent)), + style: TextStyle(color: MyTheme().secondaryColor())), ], ); } else { return Text(widget.hintText, - style: const TextStyle(color: Colors.blueAccent)); + style: TextStyle(color: MyTheme().secondaryColor())); } } @@ -83,6 +84,7 @@ class _MyTextFieldState extends State { return Padding( padding: const EdgeInsets.symmetric(horizontal: 25.0), child: TextField( + style: TextStyle(color: MyTheme().secondaryColor()), controller: widget.controller, focusNode: _focus, readOnly: makeEditable(), @@ -92,20 +94,35 @@ class _MyTextFieldState extends State { }), decoration: InputDecoration( label: setRequiredText(), - //labelStyle: const TextStyle(color: Colors.blueAccent), - fillColor: Colors.white, + //labelStyle: TextStyle(color: MyTheme().primaryColor()), + fillColor: MyTheme().primaryColor(), filled: true, errorText: _errorText, + errorStyle: TextStyle( + color: MyTheme().errorColor(), fontWeight: FontWeight.bold), + //errorBorder: const InputBorder(), //hintText: hintText, //hintStyle: TextStyle(color: Colors.blueGrey[400]), - enabledBorder: const OutlineInputBorder( + enabledBorder: OutlineInputBorder( borderSide: BorderSide( - color: Colors.blueAccent, + color: MyTheme().secondaryColor(), width: 2.0, ), ), - focusedBorder: const OutlineInputBorder( - borderSide: BorderSide(color: Colors.blue), + focusedErrorBorder: OutlineInputBorder( + borderSide: BorderSide( + color: MyTheme().errorColor(), + width: 2.0, + ), + ), + errorBorder: OutlineInputBorder( + borderSide: BorderSide( + color: MyTheme().errorColor(), + width: 2.0, + ), + ), + focusedBorder: OutlineInputBorder( + borderSide: BorderSide(color: MyTheme().secondaryColor()), ), ), ), diff --git a/Frontend/patient_manager/lib/components/mybutton.dart b/Frontend/patient_manager/lib/components/mybutton.dart index 7723e6e3..21c73840 100644 --- a/Frontend/patient_manager/lib/components/mybutton.dart +++ b/Frontend/patient_manager/lib/components/mybutton.dart @@ -32,6 +32,7 @@ class MyButton extends StatelessWidget { //fontWeight: FontWeight.bold, fontSize: 20, color: textColor, + fontWeight: FontWeight.bold, ), ), ), diff --git a/Frontend/patient_manager/lib/components/patManAppDrawer.dart b/Frontend/patient_manager/lib/components/patManAppDrawer.dart index fa54225b..2e03386a 100644 --- a/Frontend/patient_manager/lib/components/patManAppDrawer.dart +++ b/Frontend/patient_manager/lib/components/patManAppDrawer.dart @@ -4,6 +4,7 @@ import 'package:flutter/material.dart'; import 'package:patient_manager/main.dart'; import 'package:http/http.dart' as http; import 'package:patient_manager/objects/appUser.dart'; +import 'package:patient_manager/theme/mihTheme.dart'; class PatManAppDrawer extends StatefulWidget { final String userEmail; @@ -22,8 +23,8 @@ class _PatManAppDrawerState extends State { //print("pat man drawer: " + endpointUserData + widget.userEmail); var response = await http.get(Uri.parse(endpointUserData + widget.userEmail)); - print(response.statusCode); - print(response.body); + // print(response.statusCode); + // print(response.body); if (response.statusCode == 200) { return AppUser.fromJson( jsonDecode(response.body) as Map); @@ -44,87 +45,113 @@ class _PatManAppDrawerState extends State { future: signedInUser, builder: (BuildContext context, AsyncSnapshot snapshot) { return Drawer( + backgroundColor: MyTheme().primaryColor(), child: ListView( padding: EdgeInsets.zero, children: [ DrawerHeader( - decoration: const BoxDecoration( - color: Colors.blueAccent, + decoration: BoxDecoration( + color: MyTheme().secondaryColor(), ), child: SizedBox( height: 400, - child: Expanded( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisSize: MainAxisSize.min, - children: [ - const Text( - "Signed Is As:", - style: TextStyle( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: [ + Text( + "Signed Is As:", + style: TextStyle( fontWeight: FontWeight.bold, fontSize: 20.0, + color: MyTheme().primaryColor()), + ), + const SizedBox( + height: 50.0, + ), + Row( + mainAxisSize: MainAxisSize.max, + children: [ + Text( + "Name: ", + style: TextStyle( + fontWeight: FontWeight.bold, + color: MyTheme().primaryColor(), + ), ), - ), - const SizedBox( - height: 50.0, - ), - Expanded( - child: Row( - mainAxisSize: MainAxisSize.max, - children: [ - const Text( - "Name: ", - style: TextStyle(fontWeight: FontWeight.bold), - ), - const SizedBox(width: 15), - Text( - "${snapshot.data?.fname} ${snapshot.data?.lname}"), - ], + const SizedBox(width: 15), + Text( + "${snapshot.data?.fname} ${snapshot.data?.lname}", + style: TextStyle( + fontWeight: FontWeight.bold, + color: MyTheme().primaryColor(), + ), ), - ), - Expanded( - child: Row( - mainAxisSize: MainAxisSize.max, - children: [ - const Text( - "Email: ", - style: TextStyle(fontWeight: FontWeight.bold), - ), - const SizedBox(width: 16), - Text("${snapshot.data?.email}"), - ], + ], + ), + Row( + mainAxisSize: MainAxisSize.max, + children: [ + Text( + "Email: ", + style: TextStyle( + fontWeight: FontWeight.bold, + color: MyTheme().primaryColor(), + ), ), - ), - ], - ), + const SizedBox(width: 16), + Text( + "${snapshot.data?.email}", + style: TextStyle( + fontWeight: FontWeight.bold, + color: MyTheme().primaryColor(), + ), + ), + ], + ), + ], ), ), ), ListTile( - title: const Expanded( - child: Row( - mainAxisSize: MainAxisSize.max, - children: [ - Icon(Icons.home_outlined), - SizedBox(width: 25.0), - Text("Home"), - ], - ), + title: Row( + mainAxisSize: MainAxisSize.max, + children: [ + Icon( + Icons.home_outlined, + color: MyTheme().secondaryColor(), + ), + const SizedBox(width: 25.0), + Text( + "Home", + style: TextStyle( + //fontWeight: FontWeight.bold, + color: MyTheme().secondaryColor(), + ), + ), + ], ), onTap: () { Navigator.of(context).pushNamed('/home'); }, ), ListTile( - title: const Expanded( - child: Row( - mainAxisSize: MainAxisSize.max, - children: [ - Icon(Icons.perm_identity), - SizedBox(width: 25.0), - Text("Profile"), - ], - ), + title: Row( + mainAxisSize: MainAxisSize.max, + children: [ + Icon( + Icons.perm_identity, + color: MyTheme().secondaryColor(), + ), + const SizedBox(width: 25.0), + Text( + "Profile", + style: TextStyle( + //fontWeight: FontWeight.bold, + color: MyTheme().secondaryColor(), + ), + ), + ], ), onTap: () { //signedInUser = snapshot.data!; @@ -134,15 +161,22 @@ class _PatManAppDrawerState extends State { }, ), ListTile( - title: const Expanded( - child: Row( - mainAxisSize: MainAxisSize.max, - children: [ - Icon(Icons.logout), - SizedBox(width: 25.0), - Text("Sign Out"), - ], - ), + title: Row( + mainAxisSize: MainAxisSize.max, + children: [ + Icon( + Icons.logout, + color: MyTheme().secondaryColor(), + ), + const SizedBox(width: 25.0), + Text( + "Sign Out", + style: TextStyle( + //fontWeight: FontWeight.bold, + color: MyTheme().secondaryColor(), + ), + ), + ], ), onTap: () { client.auth.signOut(); @@ -155,61 +189,4 @@ class _PatManAppDrawerState extends State { }, ); } - - // Drawer( - // child: ListView( - // padding: EdgeInsets.zero, - // children: [ - // DrawerHeader( - // decoration: const BoxDecoration( - // color: Colors.blueAccent, - // ), - // child: Column( - // children: [ - // const Text("Signed Is As:"), - // Text("Name: ${signedInUser.fname} ${signedInUser.lname}"), - // Text("Email: ${signedInUser.email}"), - // ], - // ), - // ), - // ListTile( - // title: const Row( - // children: [ - // Icon(Icons.home_outlined), - // SizedBox(width: 25.0), - // Text("Home"), - // ], - // ), - // onTap: () { - // Navigator.of(context).pushNamed('/home'); - // }, - // ), - // ListTile( - // title: const Row( - // children: [ - // Icon(Icons.perm_identity), - // SizedBox(width: 25.0), - // Text("Profile"), - // ], - // ), - // onTap: () { - // //Navigator.of(context).pushNamed('/home'); - // }, - // ), - // ListTile( - // title: const Row( - // children: [ - // Icon(Icons.logout), - // SizedBox(width: 25.0), - // Text("Sign Out"), - // ], - // ), - // onTap: () { - // client.auth.signOut(); - // Navigator.of(context).pushNamed('/'); - // }, - // ) - // ], - // ), - // ); } diff --git a/Frontend/patient_manager/lib/components/patientDetails.dart b/Frontend/patient_manager/lib/components/patientDetails.dart index 2d86dd30..d2c5e71e 100644 --- a/Frontend/patient_manager/lib/components/patientDetails.dart +++ b/Frontend/patient_manager/lib/components/patientDetails.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import 'package:patient_manager/components/myTextInput.dart'; import 'package:patient_manager/objects/patients.dart'; +import 'package:patient_manager/theme/mihTheme.dart'; class PatientDetails extends StatefulWidget { final Patient selectedPatient; @@ -61,9 +62,9 @@ class _PatientDetailsState extends State { return Container( padding: const EdgeInsets.only(left: 20, right: 20, bottom: 10), decoration: BoxDecoration( - color: Colors.white, + color: MyTheme().primaryColor(), borderRadius: BorderRadius.circular(25.0), - border: Border.all(color: Colors.blueAccent, width: 3.0), + border: Border.all(color: MyTheme().secondaryColor(), width: 3.0), ), //constraints: const BoxConstraints.expand(height: 250.0), child: Column( @@ -72,19 +73,19 @@ class _PatientDetailsState extends State { mainAxisAlignment: MainAxisAlignment.center, //crossAxisAlignment: , children: [ - const Text( + Text( "Patient Details", textAlign: TextAlign.center, style: TextStyle( fontSize: 25, fontWeight: FontWeight.bold, - color: Colors.blueAccent, + color: MyTheme().secondaryColor(), ), ), IconButton( icon: const Icon(Icons.edit), alignment: Alignment.topRight, - color: Colors.blueAccent, + color: MyTheme().secondaryColor(), onPressed: () { Navigator.of(context).pushNamed( '/patient-manager/patient/edit', @@ -93,7 +94,7 @@ class _PatientDetailsState extends State { ) ], ), - const Divider(color: Colors.blueAccent), + Divider(color: MyTheme().secondaryColor()), const SizedBox(height: 10), Column( children: [ @@ -151,16 +152,16 @@ class _PatientDetailsState extends State { ], ), const SizedBox(height: 10), - const Text( + Text( "Medical Aid Details", textAlign: TextAlign.center, style: TextStyle( fontSize: 25, fontWeight: FontWeight.bold, - color: Colors.blueAccent, + color: MyTheme().secondaryColor(), ), ), - const Divider(color: Colors.blueAccent), + Divider(color: MyTheme().secondaryColor()), const SizedBox(height: 10), Column( children: [ diff --git a/Frontend/patient_manager/lib/components/patientFiles.dart b/Frontend/patient_manager/lib/components/patientFiles.dart index e9f7dfb5..d0efacc6 100644 --- a/Frontend/patient_manager/lib/components/patientFiles.dart +++ b/Frontend/patient_manager/lib/components/patientFiles.dart @@ -15,6 +15,7 @@ import 'package:patient_manager/objects/appUser.dart'; import 'package:patient_manager/objects/files.dart'; import 'package:http/http.dart' as http; +import 'package:patient_manager/theme/mihTheme.dart'; import '../objects/patients.dart'; @@ -240,18 +241,19 @@ class _PatientFilesState extends State { width: 700.0, //height: 475.0, decoration: BoxDecoration( - color: Colors.white, + color: MyTheme().primaryColor(), borderRadius: BorderRadius.circular(25.0), - border: Border.all(color: Colors.blueAccent, width: 5.0), + border: + Border.all(color: MyTheme().secondaryColor(), width: 5.0), ), child: Column( mainAxisSize: MainAxisSize.min, children: [ - const Text( + Text( "Create Medical Certificate", textAlign: TextAlign.center, style: TextStyle( - color: Colors.blueAccent, + color: MyTheme().secondaryColor(), fontSize: 35.0, fontWeight: FontWeight.bold, ), @@ -266,6 +268,9 @@ class _PatientFilesState extends State { width: 300, height: 100, child: MyButton( + buttonText: "Generate", + buttonColor: MyTheme().secondaryColor(), + textColor: MyTheme().primaryColor(), onTap: () { if (isMedCertFieldsFilled()) { generateMedCert(); @@ -280,9 +285,6 @@ class _PatientFilesState extends State { ); } }, - buttonText: "Generate", - buttonColor: Colors.blueAccent, - textColor: Colors.white, ), ) ], @@ -297,9 +299,9 @@ class _PatientFilesState extends State { onPressed: () { Navigator.pop(context); }, - icon: const Icon( + icon: Icon( Icons.close, - color: Colors.red, + color: MyTheme().errorColor(), size: 35, ), ), @@ -322,20 +324,21 @@ class _PatientFilesState extends State { width: 900.0, //height: 475.0, decoration: BoxDecoration( - color: Colors.white, + color: MyTheme().primaryColor(), borderRadius: BorderRadius.circular(25.0), - border: Border.all(color: Colors.blueAccent, width: 5.0), + border: + Border.all(color: MyTheme().secondaryColor(), width: 5.0), ), child: Column( crossAxisAlignment: CrossAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center, mainAxisSize: MainAxisSize.min, children: [ - const Text( + Text( "Create Precrition", textAlign: TextAlign.center, style: TextStyle( - color: Colors.blueAccent, + color: MyTheme().secondaryColor(), fontSize: 35.0, fontWeight: FontWeight.bold, ), @@ -368,9 +371,9 @@ class _PatientFilesState extends State { noRepeatsController.clear(); Navigator.pop(context); }, - icon: const Icon( + icon: Icon( Icons.close, - color: Colors.red, + color: MyTheme().errorColor(), size: 35, ), ), @@ -393,18 +396,19 @@ class _PatientFilesState extends State { width: 700.0, //height: 475.0, decoration: BoxDecoration( - color: Colors.white, + color: MyTheme().primaryColor(), borderRadius: BorderRadius.circular(25.0), - border: Border.all(color: Colors.blueAccent, width: 5.0), + border: + Border.all(color: MyTheme().secondaryColor(), width: 5.0), ), child: Column( mainAxisSize: MainAxisSize.min, children: [ - const Text( + Text( "Upload File", textAlign: TextAlign.center, style: TextStyle( - color: Colors.blueAccent, + color: MyTheme().secondaryColor(), fontSize: 35.0, fontWeight: FontWeight.bold, ), @@ -413,11 +417,14 @@ class _PatientFilesState extends State { SizedBox( width: 700, child: MyButton( + buttonText: "Select File", + buttonColor: MyTheme().secondaryColor(), + textColor: MyTheme().primaryColor(), onTap: () async { FilePickerResult? result = await FilePicker.platform.pickFiles( type: FileType.custom, - allowedExtensions: ['jpg', 'pdf'], + allowedExtensions: ['jpg', 'png', 'pdf'], ); if (result == null) return; final selectedFile = result.files.first; @@ -429,9 +436,6 @@ class _PatientFilesState extends State { selectedFileController.text = selectedFile.name; }); }, - buttonText: "Select File", - buttonColor: Colors.blueAccent, - textColor: Colors.white, ), ), MyTextField( @@ -444,6 +448,9 @@ class _PatientFilesState extends State { width: 300, height: 100, child: MyButton( + buttonText: "Add File", + buttonColor: MyTheme().secondaryColor(), + textColor: MyTheme().primaryColor(), onTap: () { if (isFileFieldsFilled()) { uploadSelectedFile(selected); @@ -458,9 +465,6 @@ class _PatientFilesState extends State { ); } }, - buttonText: "Add File", - buttonColor: Colors.blueAccent, - textColor: Colors.white, ), ) ], @@ -475,9 +479,9 @@ class _PatientFilesState extends State { onPressed: () { Navigator.pop(context); }, - icon: const Icon( + icon: Icon( Icons.close, - color: Colors.red, + color: MyTheme().errorColor(), size: 35, ), ), @@ -537,9 +541,10 @@ class _PatientFilesState extends State { child: Container( //height: 300.0, decoration: BoxDecoration( - color: Colors.white, + color: MyTheme().primaryColor(), borderRadius: BorderRadius.circular(25.0), - border: Border.all(color: Colors.blueAccent, width: 3.0), + border: + Border.all(color: MyTheme().secondaryColor(), width: 3.0), ), child: Padding( padding: const EdgeInsets.only(top: 5.0), @@ -547,47 +552,47 @@ class _PatientFilesState extends State { Row( mainAxisAlignment: MainAxisAlignment.center, children: [ - const Text( + Text( "Files", textAlign: TextAlign.center, style: TextStyle( fontSize: 25, fontWeight: FontWeight.bold, - color: Colors.blueAccent, + color: MyTheme().secondaryColor(), ), ), IconButton( onPressed: () { medCertPopUp(); }, - icon: const Icon( + icon: Icon( Icons.sick_outlined, - color: Colors.blueAccent, + color: MyTheme().secondaryColor(), ), ), IconButton( onPressed: () { prescritionPopUp(); }, - icon: const Icon( + icon: Icon( Icons.medication_outlined, - color: Colors.blueAccent, + color: MyTheme().secondaryColor(), ), ), IconButton( onPressed: () { uploudFilePopUp(); }, - icon: const Icon( + icon: Icon( Icons.add, - color: Colors.blueAccent, + color: MyTheme().secondaryColor(), ), ) ], ), - const Padding( - padding: EdgeInsets.symmetric(horizontal: 20.0), - child: Divider(color: Colors.blueAccent), + Padding( + padding: const EdgeInsets.symmetric(horizontal: 20.0), + child: Divider(color: MyTheme().secondaryColor()), ), const SizedBox(height: 10), BuildFilesList(files: filesList), diff --git a/Frontend/patient_manager/lib/components/patientNotes.dart b/Frontend/patient_manager/lib/components/patientNotes.dart index abdb0bd5..d9e348de 100644 --- a/Frontend/patient_manager/lib/components/patientNotes.dart +++ b/Frontend/patient_manager/lib/components/patientNotes.dart @@ -9,6 +9,7 @@ import 'package:patient_manager/components/myTextInput.dart'; import 'package:patient_manager/components/mybutton.dart'; import 'package:patient_manager/objects/notes.dart'; import 'package:http/http.dart' as http; +import 'package:patient_manager/theme/mihTheme.dart'; class PatientNotes extends StatefulWidget { final int patientIndex; @@ -109,18 +110,19 @@ class _PatientNotesState extends State { width: 700.0, //height: 500.0, decoration: BoxDecoration( - color: Colors.white, + color: MyTheme().primaryColor(), borderRadius: BorderRadius.circular(25.0), - border: Border.all(color: Colors.blueAccent, width: 5.0), + border: + Border.all(color: MyTheme().secondaryColor(), width: 5.0), ), child: Column( //mainAxisSize: MainAxisSize.max, children: [ - const Text( + Text( "Add Note", textAlign: TextAlign.center, style: TextStyle( - color: Colors.blueAccent, + color: MyTheme().secondaryColor(), fontSize: 35.0, fontWeight: FontWeight.bold, ), @@ -163,8 +165,8 @@ class _PatientNotesState extends State { } }, buttonText: "Add Note", - buttonColor: Colors.blueAccent, - textColor: Colors.white, + buttonColor: MyTheme().secondaryColor(), + textColor: MyTheme().primaryColor(), ), ) ], @@ -181,9 +183,9 @@ class _PatientNotesState extends State { titleController.clear(); noteTextController.clear(); }, - icon: const Icon( + icon: Icon( Icons.close, - color: Colors.red, + color: MyTheme().errorColor(), size: 35, ), ), @@ -222,9 +224,10 @@ class _PatientNotesState extends State { child: Container( //height: 300.0, decoration: BoxDecoration( - color: Colors.white, + color: MyTheme().primaryColor(), borderRadius: BorderRadius.circular(25.0), - border: Border.all(color: Colors.blueAccent, width: 3.0), + border: + Border.all(color: MyTheme().secondaryColor(), width: 3.0), ), child: Padding( padding: const EdgeInsets.only(top: 5.0), @@ -232,25 +235,26 @@ class _PatientNotesState extends State { Row( mainAxisAlignment: MainAxisAlignment.center, children: [ - const Text( + Text( "Notes", textAlign: TextAlign.center, style: TextStyle( fontSize: 25, fontWeight: FontWeight.bold, - color: Colors.blueAccent), + color: MyTheme().secondaryColor()), ), IconButton( onPressed: () { addNotePopUp(); }, - icon: const Icon(Icons.add, color: Colors.blueAccent), + icon: + Icon(Icons.add, color: MyTheme().secondaryColor()), ) ], ), - const Padding( - padding: EdgeInsets.symmetric(horizontal: 20.0), - child: Divider(color: Colors.blueAccent), + Padding( + padding: const EdgeInsets.symmetric(horizontal: 20.0), + child: Divider(color: MyTheme().secondaryColor()), ), const SizedBox(height: 10), BuildNotesList(notes: notesList), diff --git a/Frontend/patient_manager/lib/components/prescipInput.dart b/Frontend/patient_manager/lib/components/prescipInput.dart index 2f05c95c..6dfa08d2 100644 --- a/Frontend/patient_manager/lib/components/prescipInput.dart +++ b/Frontend/patient_manager/lib/components/prescipInput.dart @@ -4,6 +4,7 @@ import 'package:patient_manager/components/myDropdownInput.dart'; import 'package:patient_manager/components/myErrorMessage.dart'; import 'package:patient_manager/components/mySearchInput.dart'; import 'package:patient_manager/components/mybutton.dart'; +import 'package:patient_manager/theme/mihTheme.dart'; class PrescripInput extends StatefulWidget { final TextEditingController medicineController; @@ -187,6 +188,9 @@ class _PrescripInputState extends State { SizedBox( width: 300, child: MyButton( + buttonText: "Add", + buttonColor: MyTheme().secondaryColor(), + textColor: MyTheme().primaryColor(), onTap: () { if (isFieldsFilled()) { setState(() { @@ -209,9 +213,6 @@ class _PrescripInputState extends State { ); } }, - buttonText: "Add", - buttonColor: Colors.blueAccent, - textColor: Colors.white, ), ) ], @@ -225,9 +226,9 @@ class _PrescripInputState extends State { width: 550, height: 400, decoration: BoxDecoration( - color: Colors.white, + color: MyTheme().primaryColor(), borderRadius: BorderRadius.circular(25.0), - border: Border.all(color: Colors.blueAccent, width: 3.0), + border: Border.all(color: MyTheme().secondaryColor(), width: 3.0), ), child: ListView.separated( separatorBuilder: (BuildContext context, int index) { @@ -239,14 +240,21 @@ class _PrescripInputState extends State { return ListTile( title: Text( getPerscTitle(index), + style: TextStyle( + color: MyTheme().secondaryColor(), + ), ), subtitle: Text( getPerscSubtitle(index), + style: TextStyle( + color: MyTheme().secondaryColor(), + ), ), //onTap: () {}, trailing: IconButton( - icon: const Icon( + icon: Icon( Icons.delete_forever_outlined, + color: MyTheme().primaryColor(), ), onPressed: () { setState(() { @@ -277,8 +285,8 @@ class _PrescripInputState extends State { // } }, buttonText: "Generate", - buttonColor: Colors.green, - textColor: Colors.white, + buttonColor: MyTheme().successColor(), + textColor: MyTheme().primaryColor(), ), ) ], diff --git a/Frontend/patient_manager/lib/main.dart b/Frontend/patient_manager/lib/main.dart index fde87ca6..b4938253 100644 --- a/Frontend/patient_manager/lib/main.dart +++ b/Frontend/patient_manager/lib/main.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:patient_manager/router/routeGenerator.dart'; +import 'package:patient_manager/theme/mihTheme.dart'; import 'package:supabase_flutter/supabase_flutter.dart'; void main() async { @@ -19,9 +20,9 @@ class MzanziInnovationHub extends StatelessWidget { @override Widget build(BuildContext context) { - return const MaterialApp( + return MaterialApp( title: 'Mzansi Innovation Hub', - themeMode: ThemeMode.system, + theme: MyTheme().data, debugShowCheckedModeBanner: false, initialRoute: '/', onGenerateRoute: RouteGenerator.generateRoute, diff --git a/Frontend/patient_manager/lib/pages/home.dart b/Frontend/patient_manager/lib/pages/home.dart index 2605944a..b62ee723 100644 --- a/Frontend/patient_manager/lib/pages/home.dart +++ b/Frontend/patient_manager/lib/pages/home.dart @@ -2,7 +2,10 @@ import 'package:flutter/material.dart'; import 'package:patient_manager/components/homeTileGrid.dart'; import 'package:patient_manager/components/myAppBar.dart'; import 'package:patient_manager/components/homeAppDrawer.dart'; +//import 'package:patient_manager/components/myErrorMessage.dart'; +//import 'package:patient_manager/components/mySuccessMessage.dart'; import 'package:patient_manager/main.dart'; +//import 'package:patient_manager/theme/mihTheme.dart'; class Home extends StatefulWidget { //final String userEmail; @@ -42,6 +45,32 @@ class _HomeState extends State { body: HomeTileGrid( userEmail: useremail, ), + // floatingActionButtonLocation: FloatingActionButtonLocation.endTop, + // floatingActionButton: Padding( + // padding: const EdgeInsets.only(top: 65, right: 5), + // child: FloatingActionButton.extended( + // label: Text( + // "Add Patient", + // style: TextStyle( + // fontWeight: FontWeight.bold, + // color: MyTheme().primaryColor(), + // ), + // ), + // //backgroundColor: Colors.blueAccent, + // onPressed: () { + // showDatePicker( + // context: context, + // initialDate: DateTime.now(), + // firstDate: DateTime(2000), + // lastDate: DateTime(2100), + // ); + // }, + // icon: Icon( + // Icons.add, + // color: MyTheme().primaryColor(), + // ), + // ), + // ), ); } else { return const Center(child: CircularProgressIndicator()); diff --git a/Frontend/patient_manager/lib/pages/patientAdd.dart b/Frontend/patient_manager/lib/pages/patientAdd.dart index 404182fe..bf0964a6 100644 --- a/Frontend/patient_manager/lib/pages/patientAdd.dart +++ b/Frontend/patient_manager/lib/pages/patientAdd.dart @@ -7,6 +7,7 @@ import 'package:patient_manager/components/mySuccessMessage.dart'; import 'package:patient_manager/components/myTextInput.dart'; import 'package:patient_manager/components/mybutton.dart'; import 'package:patient_manager/objects/appUser.dart'; +import 'package:patient_manager/theme/mihTheme.dart'; import '../components/myAppBar.dart'; import 'package:http/http.dart' as http; @@ -176,13 +177,13 @@ class _AddPatientState extends State { child: SingleChildScrollView( child: Column( children: [ - const Text( + Text( "Personal Details", textAlign: TextAlign.center, style: TextStyle( fontWeight: FontWeight.bold, fontSize: 25.0, - //color: Colors.blueAccent, + color: MyTheme().secondaryColor(), ), ), Row( @@ -263,13 +264,13 @@ class _AddPatientState extends State { ], ), const SizedBox(height: 15.0), - const Text( + Text( "Medical Aid Details", textAlign: TextAlign.center, style: TextStyle( fontWeight: FontWeight.bold, fontSize: 25.0, - //color: Colors.blueAccent, + color: MyTheme().secondaryColor(), ), ), const SizedBox(height: 10.0), @@ -377,8 +378,8 @@ class _AddPatientState extends State { } }, buttonText: "Add", - buttonColor: Colors.blueAccent, - textColor: Colors.white, + buttonColor: MyTheme().secondaryColor(), + textColor: MyTheme().primaryColor(), ), ), ], diff --git a/Frontend/patient_manager/lib/pages/patientEdit.dart b/Frontend/patient_manager/lib/pages/patientEdit.dart index 4b91f428..aa82317c 100644 --- a/Frontend/patient_manager/lib/pages/patientEdit.dart +++ b/Frontend/patient_manager/lib/pages/patientEdit.dart @@ -7,6 +7,7 @@ import 'package:patient_manager/components/mySuccessMessage.dart'; import 'package:patient_manager/components/myTextInput.dart'; import 'package:patient_manager/components/mybutton.dart'; import 'package:patient_manager/objects/appUser.dart'; +import 'package:patient_manager/theme/mihTheme.dart'; import 'package:supabase_flutter/supabase_flutter.dart'; import '../components/myAppBar.dart'; import 'package:http/http.dart' as http; @@ -171,24 +172,25 @@ class _EditPatientState extends State { width: 500.0, height: 475.0, decoration: BoxDecoration( - color: Colors.white, + color: MyTheme().primaryColor(), borderRadius: BorderRadius.circular(25.0), - border: Border.all(color: Colors.blueAccent, width: 5.0), + border: + Border.all(color: MyTheme().secondaryColor(), width: 5.0), ), child: Column( //mainAxisSize: MainAxisSize.max, children: [ - const Icon( + Icon( Icons.warning_amber_rounded, size: 100, - color: Colors.blueAccent, + color: MyTheme().secondaryColor(), ), const SizedBox(height: 15), - const Text( + Text( "Are you sure you want to delete this?", textAlign: TextAlign.center, style: TextStyle( - color: Colors.blueAccent, + color: MyTheme().secondaryColor(), fontSize: 25.0, fontWeight: FontWeight.bold, ), @@ -198,35 +200,35 @@ class _EditPatientState extends State { padding: const EdgeInsets.symmetric(horizontal: 25.0), child: Text( "This action is permanent! Deleting ${fnameController.text} ${lnameController.text} will remove him\\her from your account. You won't be able to recover it once it's gone.", - style: const TextStyle( - color: Colors.black, + style: TextStyle( + color: MyTheme().secondaryColor(), fontSize: 15.0, fontWeight: FontWeight.bold, ), ), ), const SizedBox(height: 15), - const Padding( - padding: EdgeInsets.symmetric(horizontal: 25.0), + Padding( + padding: const EdgeInsets.symmetric(horizontal: 25.0), child: Text( "Here's what you'll be deleting:", style: TextStyle( - color: Colors.black, + color: MyTheme().secondaryColor(), fontSize: 20.0, fontWeight: FontWeight.bold, ), ), ), const SizedBox(height: 10), - const Padding( - padding: EdgeInsets.symmetric(horizontal: 25.0), + Padding( + padding: const EdgeInsets.symmetric(horizontal: 25.0), child: SizedBox( width: 450, child: Text( "1) Patient Profile Information.\n2) Patient Notes\n3) Patient Files.", textAlign: TextAlign.left, style: TextStyle( - color: Colors.black, + color: MyTheme().secondaryColor(), fontSize: 15.0, fontWeight: FontWeight.bold, ), @@ -239,8 +241,8 @@ class _EditPatientState extends State { child: MyButton( onTap: deletePatientApiCall, buttonText: "Delete", - buttonColor: Colors.blueAccent, - textColor: Colors.white, + buttonColor: MyTheme().secondaryColor(), + textColor: MyTheme().primaryColor(), )) ], ), @@ -254,9 +256,9 @@ class _EditPatientState extends State { onPressed: () { Navigator.pop(context); }, - icon: const Icon( + icon: Icon( Icons.close, - color: Colors.red, + color: MyTheme().errorColor(), size: 35, ), ), @@ -334,17 +336,18 @@ class _EditPatientState extends State { Row( mainAxisAlignment: MainAxisAlignment.center, children: [ - const Text( + Text( "Personal Details", textAlign: TextAlign.center, style: TextStyle( fontWeight: FontWeight.bold, fontSize: 25.0, - //color: Colors.blueAccent, + color: MyTheme().secondaryColor(), ), ), IconButton( icon: const Icon(Icons.delete), + color: MyTheme().secondaryColor(), alignment: Alignment.topRight, onPressed: () { deletePatientPopUp(); @@ -430,13 +433,13 @@ class _EditPatientState extends State { ], ), const SizedBox(height: 15.0), - const Text( + Text( "Medical Aid Details", textAlign: TextAlign.center, style: TextStyle( fontWeight: FontWeight.bold, fontSize: 25.0, - //color: Colors.blueAccent, + color: MyTheme().secondaryColor(), ), ), const SizedBox(height: 10.0), @@ -544,8 +547,8 @@ class _EditPatientState extends State { } }, buttonText: "Update", - buttonColor: Colors.blueAccent, - textColor: Colors.white, + buttonColor: MyTheme().secondaryColor(), + textColor: MyTheme().primaryColor(), ), ), ], diff --git a/Frontend/patient_manager/lib/pages/patientManager.dart b/Frontend/patient_manager/lib/pages/patientManager.dart index 5de422bf..c83e83bf 100644 --- a/Frontend/patient_manager/lib/pages/patientManager.dart +++ b/Frontend/patient_manager/lib/pages/patientManager.dart @@ -8,6 +8,7 @@ import 'package:http/http.dart' as http; import 'package:patient_manager/components/mySearchInput.dart'; import 'package:patient_manager/components/patManAppDrawer.dart'; import 'package:patient_manager/objects/patients.dart'; +import 'package:patient_manager/theme/mihTheme.dart'; class PatientManager extends StatefulWidget { final String userEmail; @@ -72,9 +73,12 @@ class _PatientManagerState extends State { child: Container( height: 500, decoration: BoxDecoration( - color: Colors.white, + color: MyTheme().primaryColor(), borderRadius: BorderRadius.circular(25.0), - border: Border.all(color: Colors.blueAccent, width: 3.0), + border: Border.all( + color: MyTheme().secondaryColor(), + width: 3.0, + ), ), child: BuildPatientsList( patients: patientsList, @@ -92,14 +96,14 @@ class _PatientManagerState extends State { child: Container( height: 500, decoration: BoxDecoration( - color: Colors.white, + color: MyTheme().primaryColor(), borderRadius: BorderRadius.circular(25.0), - border: Border.all(color: Colors.blueAccent, width: 3.0), + border: Border.all(color: MyTheme().secondaryColor(), width: 3.0), ), - child: const Center( + child: Center( child: Text( "Enter ID or Medical Aid No. of Patient", - style: TextStyle(fontSize: 25, color: Colors.grey), + style: TextStyle(fontSize: 25, color: MyTheme().messageTextColor()), textAlign: TextAlign.center, ), ), @@ -173,21 +177,21 @@ class _PatientManagerState extends State { floatingActionButton: Padding( padding: const EdgeInsets.only(top: 65, right: 5), child: FloatingActionButton.extended( - label: const Text( + label: Text( "Add Patient", style: TextStyle( fontWeight: FontWeight.bold, - color: Colors.white, + color: MyTheme().primaryColor(), ), ), - backgroundColor: Colors.blueAccent, + //backgroundColor: Colors.blueAccent, onPressed: () { Navigator.of(context) .pushNamed('/patient-manager/add', arguments: widget.userEmail); }, - icon: const Icon( + icon: Icon( Icons.add, - color: Colors.white, + color: MyTheme().primaryColor(), ), ), ), diff --git a/Frontend/patient_manager/lib/pages/patientView.dart b/Frontend/patient_manager/lib/pages/patientView.dart index 5e637bff..16be9e01 100644 --- a/Frontend/patient_manager/lib/pages/patientView.dart +++ b/Frontend/patient_manager/lib/pages/patientView.dart @@ -32,7 +32,7 @@ class _PatientViewState extends State { PatientNotes( patientIndex: widget.selectedPatient.idpatients, ), - SizedBox( + const SizedBox( width: 10, ), PatientFiles( diff --git a/Frontend/patient_manager/lib/pages/register.dart b/Frontend/patient_manager/lib/pages/register.dart index 5c30024e..70d9ae0b 100644 --- a/Frontend/patient_manager/lib/pages/register.dart +++ b/Frontend/patient_manager/lib/pages/register.dart @@ -3,6 +3,7 @@ import 'package:patient_manager/components/myPassInput.dart'; import 'package:patient_manager/components/myTextInput.dart'; import 'package:patient_manager/components/mybutton.dart'; import 'package:patient_manager/main.dart'; +import 'package:patient_manager/theme/mihTheme.dart'; import 'package:supabase_auth_ui/supabase_auth_ui.dart'; class Register extends StatefulWidget { @@ -62,7 +63,7 @@ class _RegisterState extends State { @override Widget build(BuildContext context) { return Scaffold( - backgroundColor: Colors.white, + //backgroundColor: Colors.white, body: SafeArea( child: Center( child: SingleChildScrollView( @@ -71,20 +72,20 @@ class _RegisterState extends State { mainAxisAlignment: MainAxisAlignment.center, children: [ //logo - const Icon( + Icon( Icons.lock, size: 100, - color: Colors.blueAccent, + color: MyTheme().secondaryColor(), ), //spacer const SizedBox(height: 10), //Heading - const Text( + Text( 'Register', style: TextStyle( fontSize: 25, fontWeight: FontWeight.bold, - color: Colors.blueAccent, + color: MyTheme().secondaryColor(), ), ), //spacer @@ -135,58 +136,44 @@ class _RegisterState extends State { ), //spacer const SizedBox(height: 10), - // forgot password - const Padding( - padding: EdgeInsets.symmetric(horizontal: 25.0), - child: Row( - mainAxisAlignment: MainAxisAlignment.end, - children: [ - Text( - 'Forgot Password?', - style: TextStyle( - color: Colors.white, - ), - ), - ], - ), - ), - //spacer - const SizedBox(height: 30), // sign up button SizedBox( width: 500.0, + height: 100.0, child: MyButton( onTap: () {}, buttonText: "Sign Up", - buttonColor: Colors.blueAccent, - textColor: Colors.white, + buttonColor: MyTheme().secondaryColor(), + textColor: MyTheme().primaryColor(), ), ), - //spacer - const SizedBox(height: 30), //register text - Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - const Text( - 'Already a User?', - style: TextStyle(fontSize: 18, color: Colors.grey), - ), - const SizedBox( - width: 6, - ), - GestureDetector( - onTap: widget.onTap, - child: const Text( - 'Sign In', - style: TextStyle( - fontSize: 18, - color: Colors.blueAccent, - fontWeight: FontWeight.bold, - ), + SizedBox( + width: 450.0, + height: 100.0, + child: Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + const Text( + 'Already a User?', + style: TextStyle(fontSize: 18, color: Colors.grey), ), - ) - ], + const SizedBox( + width: 6, + ), + GestureDetector( + onTap: widget.onTap, + child: Text( + 'Sign In', + style: TextStyle( + fontSize: 18, + color: MyTheme().secondaryColor(), + fontWeight: FontWeight.bold, + ), + ), + ) + ], + ), ) ], ), diff --git a/Frontend/patient_manager/lib/pages/signin.dart b/Frontend/patient_manager/lib/pages/signin.dart index 4b64d3d9..79f32fd4 100644 --- a/Frontend/patient_manager/lib/pages/signin.dart +++ b/Frontend/patient_manager/lib/pages/signin.dart @@ -4,6 +4,7 @@ import 'package:patient_manager/components/myPassInput.dart'; import 'package:patient_manager/components/myTextInput.dart'; import 'package:patient_manager/components/mybutton.dart'; import 'package:patient_manager/main.dart'; +import 'package:patient_manager/theme/mihTheme.dart'; import 'package:supabase_auth_ui/supabase_auth_ui.dart'; class SignIn extends StatefulWidget { @@ -52,7 +53,7 @@ class _SignInState extends State { @override Widget build(BuildContext context) { return Scaffold( - backgroundColor: Colors.white, + //backgroundColor: Colors.white, body: SafeArea( child: Center( child: SingleChildScrollView( @@ -61,20 +62,20 @@ class _SignInState extends State { mainAxisAlignment: MainAxisAlignment.center, children: [ //logo - const Icon( + Icon( Icons.lock, size: 100, - color: Colors.blueAccent, + color: MyTheme().secondaryColor(), ), //spacer const SizedBox(height: 10), //Heading - const Text( + Text( 'Sign In', style: TextStyle( fontSize: 25, fontWeight: FontWeight.bold, - color: Colors.blueAccent, + color: MyTheme().secondaryColor(), ), ), //spacer @@ -107,6 +108,9 @@ class _SignInState extends State { width: 500.0, height: 100.0, child: MyButton( + buttonText: "Sign In", + buttonColor: MyTheme().secondaryColor(), + textColor: MyTheme().primaryColor(), onTap: () { if (emailController.text.isEmpty || passwordController.text.isEmpty) { @@ -125,36 +129,39 @@ class _SignInState extends State { Navigator.of(context).pushNamed('/homme'); } }, - buttonText: "Sign In", - buttonColor: Colors.blueAccent, - textColor: Colors.white, ), ), //spacer - const SizedBox(height: 30), + //const SizedBox(height: 30), //register text - Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - const Text( - 'New User?', - style: TextStyle(fontSize: 18, color: Colors.grey), - ), - const SizedBox( - width: 6, - ), - GestureDetector( - onTap: widget.onTap, - child: const Text( - 'Register Now', + SizedBox( + width: 450.0, + height: 100.0, + child: Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + const Text( + 'New User?', style: TextStyle( - fontSize: 18, - color: Colors.blueAccent, - fontWeight: FontWeight.bold, - ), + fontSize: 18, + color: Color.fromARGB(255, 201, 200, 200)), ), - ) - ], + const SizedBox( + width: 6, + ), + GestureDetector( + onTap: widget.onTap, + child: Text( + 'Register Now', + style: TextStyle( + fontSize: 18, + color: MyTheme().secondaryColor(), + fontWeight: FontWeight.bold, + ), + ), + ) + ], + ), ) ], ), diff --git a/Frontend/patient_manager/lib/theme/mihTheme.dart b/Frontend/patient_manager/lib/theme/mihTheme.dart index e69de29b..7fc3d794 100644 --- a/Frontend/patient_manager/lib/theme/mihTheme.dart +++ b/Frontend/patient_manager/lib/theme/mihTheme.dart @@ -0,0 +1,77 @@ +import 'package:flutter/material.dart'; + +class MyTheme { + late int _mainColor; + late int _secondColor; + late int _errColor; + late int _succColor; + late int _mesColor; + late ThemeData data; + + // Options:- + // f3f9d2 = Cream + // f0f0c9 = cream2 + // caffd0 = light green + // B0F2B4 = light grean 2 * + // 85bda6 = light green 3 + // 70f8ba = green + // F7F3EA = white + // a63446 = red + + MyTheme() { + _mainColor = 0XFF3A4454; + _secondColor = 0XFFbedcfe; + _errColor = 0xffD87E8B; + _succColor = 0xffB0F2B4; + _mesColor = 0xffc8c8c8d9; + data = ThemeData( + scaffoldBackgroundColor: primaryColor(), + colorScheme: ColorScheme.dark( + primary: messageTextColor(), + onPrimary: primaryColor(), + onSurface: secondaryColor(), + ), + datePickerTheme: DatePickerThemeData( + backgroundColor: primaryColor(), + + //------------------------------ + cancelButtonStyle: ButtonStyle( + foregroundColor: WidgetStatePropertyAll(secondaryColor()), + overlayColor: WidgetStatePropertyAll(messageTextColor()), + ), + //------------------------------ + confirmButtonStyle: ButtonStyle( + foregroundColor: WidgetStatePropertyAll(secondaryColor()), + overlayColor: WidgetStatePropertyAll(messageTextColor()), + ), + headerBackgroundColor: secondaryColor(), + headerForegroundColor: primaryColor(), + ), + appBarTheme: AppBarTheme( + color: secondaryColor(), + ), + floatingActionButtonTheme: + FloatingActionButtonThemeData(backgroundColor: secondaryColor()), + ); + } + + Color messageTextColor() { + return Color(_mesColor); + } + + Color errorColor() { + return Color(_errColor); + } + + Color successColor() { + return Color(_succColor); + } + + Color primaryColor() { + return Color(_mainColor); + } + + Color secondaryColor() { + return Color(_secondColor); + } +} diff --git a/database/#ib_16384_0.dblwr b/database/#ib_16384_0.dblwr index 93fb184a76ec989b393ef8bc2e88e22cabd330f4..12d8f6b65d4c716d84817b760d63585cb1952820 100644 GIT binary patch delta 3039 zcmeHIT}%{L6u$S)E-nnh0-_+`j<)_)tt={{pd77Q(H8NiO8r6B-JwhhyAyU1ZQAZw zCs+HYRz>0)zW89<6g6p6+eBWBFHJN}?SrrNp=nZ0THj2%J!fWT1kyhAy*JG4`OZD( zn{&=R_h4C;V$oxBTiA*nu!DAiJ`Hs4JmhjS65->MaI}EeEg+c);gK+U@n(?!Z;7}I+SvZxo_Ox>+CSrIqwGA za(qs)rT!ZQt97^wHuCR>uRtc-5U?04<1yaNEp?WUuXB^1Q>%P@gIj!5t;PThyp$&6m?=P(;N6wPCWdKx`4Fx?-|&nm8aVb)}aOuNS5mR#*8(^+cED z!V=fi#>rYChQ%#)weK1g*Tg-w$v28RVTxPgk-BEGQiyxvsk*i_p8{(VkCZ~Sxx~k= z=Tl{_+JXs(oFI69m%pzRDpB=a@6g#=Wv;S8eb2|uO7!MuN_WeJQDvV_ElMrfbAJCx z%p^b!NDF1AT#mGCzD-hog;+2!ZdDKpjAE09S(&%x|9*}VMIyw2C-IR(Aqn`R`lX?@@yvUGBHvh0r~bZyAU^lIp^R5LQ#P%N#*`qC+_Kb0_g z3_YP88PsB?fnUJBMZ zREI29Wvk=iG-_lA1v}AW}+lhEOiY#)NNG>=eZX*(h){r*hZy)!1 zyeO&biL}F0m<;crxco@4sjYo}_C6%Of zoF}WJ9meypwj6CO){c-OV@GFT{yfCPd)y<|lKPNlrc77ih5(z!wGCm5>?K$`C zK0;@_Sglm9Q!XR1x^}1!kp)SuuZx?fv;6hglaAJN6=WF^i(u-w+~_BW}ydwo=l zj;4>O50CkXy2tVnHN|Nk(V?Ep(LkgGN3M)FjolnocDCT_L!LGH0`{1F&EiybtiC>f z_sKT&D40_HGyl2zUm}ZB{osHn1#bLb{fX6I>{p+vj@3V-^%QquwVeM3`0FhE?|$T) zs&QVio&#Q)3O>@B>#suV`0NuueD@KCG37RDmp0!X z*)hMe;JWss;AJ=e6v1^NGR254NdO5OBy5!MiiAxPHcQwd;Z+G+CA3M{CSkjT*Cf0y up8(nxLPAf<^!MX40>fF$nB-tFFw zrLJV}{dRue&+j+Cot@p8VzDR`*`ERxqzHuHp z6u%Nsf=aCtQtFg?WrotAgq236snFW;#32CSOkg^M=NdKuq+ghtn)(kwP2Ejf>8~jO zO8)_B?9o~P6#cuYFVraW_5Vz5iIo_Z4gjH>d6W*A&?!@Dp*a7=we6EE2RDq^${sZ! z2#nu?{>w%o+7ak1pBGZ_R0WI{sl!lsUY$A^a-;%vlLsl)Avkq?%tVbD)MiT1j;4>+6JpEdVG{=51Y~r5=QCu}FhK(XwgVo?V@S)(F6y z+02Qa=g>0Al|;QSqeZMz-nZ4iUKBnmh$AupTIbNiENk$(uu;!?M5HzZO-4aRpms$p zJBT-|uqevnWy zy~!BIt7gfdif6RwjPdDdj898LLrhlfkb#v)+@T}X3ZlTq2mmV2uvF1Bs%BNaA_JR` zwHssOtj;)U>cvrGL=TCg98V=`ZcSC~sQOF>c3$1Dt4Ba{X;3Yv@DY>Tn#m?p@$4o> zc*WW&0|!s|yG}R;7O3l=neP*ZM4$S`M}58mlYC}As5rev99LzID^0+CcJCjZK zCI$x9B?of({`5eOlB}K9w`AbtNWz0UX%x&gNTX#Et>lpCGNY1x4D^`IDT8VbBrexM zstKf;QgUSz1L+Of-b8*)HoYOkIB(gqGH`JmVN~agf!2bN(U=M3%=Kpz@xFX|Ag`rk zbJ`Bephhy^RHQ2{s5CIVl?$bDVawXi$-vF40_ET(6)J$~GGse!`%(rTUbak^3DbiK zhUnazP8L8X zBky8Wum~o!wVyt=>Fg$rSi=z|w{%tpGdLo=t`iYhY~+eeKxa}O$YnRA5^^rlr~bD; z=vyXja|UJ5z=6;|b&wrk17tUW0;%{$b=AjRwd%hESR@Wyon9ZXmbkvk7 zttk`AoK`+5uTHBS;tF5Ct5CB@26K4WDINAh<>?lGFu^?L>JQ}NxrFLD9QGAlpVSOE;;a%E#&KeP=>F__q#Um-~okxeVrU zFk{ss-T;e$UcVa^m^yFu?Tx+eFFf=ke?BKgd-aZ3Ow*vHA{DtW2X(#b_Z2+LJ)g_q zHXd|M2RTe22M3xydj<6(X!E{j#M>o<1soM(y*FR$b*3|z__YZu(wAC7?RY%w>-K!^ zeOU(4FdH%Ymnw9Z31A4M_1b_T10aajy+7W)ecOHN$u(j}ySIyp0hs$@`FtEe-#wLO zlW$ZQV9O@oAK0>K^e*2hT{c-X#Sv{CR&4}?;mTqUhK+zC#c4;Bg4hww0qB3a5+bnK z`?C7RyTT_0|A!PFU_QcU3=S?DcN+A87Na+P2E19+J~?XiK2Q0d4$$QgtmPm^Nt(e< z1JZ0jL@_k9C%#VR@#a9#AN(K%pb%m0oveLk z(9hbNtI31i7QGWTHGY0kc>FI>OCY$jHbWPPtdlyi;WqWt;rIiA;0Lu=Qa}*Run$<% zLiNPEF_96i6{4qS2_sgiu?x{)pf(e_moE6s*f3_=xvJ|zSF7eY@h9eZC3H1KzpqR| zYOjE@g@q^+0c|SYQ5%oOaiH#U{f!i`o6&WbOYKeX zM=e_FC*O{)^4D*hafq(B%%F%0*LT*d*b~nO>TfheQb00u>TfX4QV%L+XDTxVt_*h0 zIMnbOT|}9QGoNIVsOs{?9qLow_^LodBpgqHYBRSXVmOsbOL1N5gg5R8G`tq3pE@ox zviSw(JzxE;FTNrWjyLwCK#iFejvMV3d%2KcvD)!YG^S3dam(!RIX0{SC@v|Vmjck# zUD<`9&*J9NF3huTwhJ?}X{)vigPEr70v*1yo34mOdWJ4x)Al`0-EWQv&qpF`gNtow zg|=P&33b&TXnNKTc3lnO_yR}uX*T}pU(4C`7=B$db{ttzaVbUoE*fD{=6cVeo74r6 zvRX$Rcr#R-Toqxh)ayXwOOIgM6rAp*1vslG}Z| z22k60+ZlfMt@VYoD{$wL7P0k(&>8J z;CTekC-^pk7Z4mJI7V;>!JPyzBzO_QT?F4w@M40O5WJM&WdtuLcm=`T1h0G*ubRNu zyfd%Utf$qrkxZ)s-9v<7z6#(@YF`_}#RgPdd2DN>2i|||WMpq4%K8$9?z^ZYCP96X z44#D%h$W=&2sR{P3}z%_hp=HS#Bfj&edVbNo`xB?PqOG!HayLSJcNVrNvVpzh~Pf@ zZrlxv@PuS5=mETY;4nNT*$sOyJOL*phhgu7r{EB8+VIM?8Xjp1B>_e!CP86gzAc(1a8-?8nh5bV=$k zY=S1xq!c&oU!hCry3}LXhtZ?}q+Y{*0$mr}QlDWzDF7iKkrKv*rv$eUlU5t{uZ4(! zr8S2Av=9?AQomsz5wI{QB@O!-AtMY)YYlr?7^F|f;EJ&mLYs{ZUE#S#LNF#cPH+#w zy#)6WoFI5L!D|TaCpby)T7vH&cpbqhf@Ol!1ZN0dPjHst0fKV`Zy@+ig6|@DBf*;p U-c0b_1aBeu9)h>Nit`iy0}!(sQd*B(T( zP_y*rL63r^AU*g8c<@l~{sDpq|9~Po*;H@-0m7GMcHX{uJ3GwoezNS7%R+lU6GhF@ zL3;Sz#UhngKg%#*Zu!bybNwWLW8=z`Ej4wfk!i)$o5rS9(<#%CpEf;ZS~ERudd76d zbk;O6O-;|5&Y8}C(7Jz7i$tD^h?9G1-g;QPzMc4@KdN8tEFAyHw!=tvEh?kMeliIz z{R!^(lg4g2HeHj!iqAyS&R|8Nw5!FJ4Xr=(H+!PueVAr=d^8>pQJAqG&f6~8yz_W- z+`@o+dGxKJ8cVw@=xXeoMB(t6cWdWDa`ooj5BcekS*i8~iVHoIQ* zZs~>MkxeBo-EZA>esMkDEnm?=^YE+V#2)Y+@Ebq@5+WfIA|VnYArc}X5+WfIA|VnY zArc}X5+WfIA|VnYArc}X5+WfIA|VnYArc}X5+WfIA|VnYArc}X5+WfIA|VnYArc}X s5+WfIA|VnYArc}X5+WfIA|VnYArc}X5+WfIA|VnY;eRXP{_rymcIQD)RK z>KRqWR>pS5PR9Dao3WSC$k@*~$Y^F9X0$Te8AlnNjP85%s>epLD(;G+D2uE1YU@`y009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ efB*pk1PBlyK!5-N0t5&UAV7e?e-v1ZughNnSXUbW diff --git a/database/binlog.000056 b/database/binlog.000056 index a585d9aa45b677aee60992215801deac2d8d377a..2afe789f7eda6c5da99c38d71e48fcbbf25e0ffc 100644 GIT binary patch delta 280 zcmbQ`|0Zz5EOq|;r`>5vj0_A6{y_XveeyvGIY&+)69l**6a)Ld<*IvR*!~1D3Rp2R zmMh5FYoGZza369b1FBO?P7^Pm3= zeVqI3K}O1fjI;*gvnWO~F|ht;5CjUdFqEVk6_;wqYqsI=@kI+<$?GO PSnnQ?dLUpa?T-Th(5pTq delta 7 OcmaD8ILm*-EOh`73Imt` diff --git a/database/ibdata1 b/database/ibdata1 index 83c82d56c0e1eee85e73086869b32566370f3a4f..56a1be4e4fda11e3f77f275a4f84794b5992ab50 100644 GIT binary patch delta 638 zcmX|-=UdGI07mbxl#s$Tu6@m9@2#%vEeRQskv+3lCvmLoNcO1gStP{2ru)Ttp7ZIv zpI#uDxHUm65-mT&@NP;9vD@l@M zX)P(zM%qd{NtO1JCh5{aI!Y%AOK0gKU8S2uq`UNxp3+NtOCRYgQRyfBWq=HnK{8k} zWQb(SP#Gq}WrU2BQ8HS_$XFRC<7I+Olu0sKrpQ#8CevkxWJ$KfWTxcEESW8HWUkDU z`LaM3$|6}TOJu1mljV{tDCl~O^<<@= oTX`q%<%4{bPx4v5$XBVC2Kgr6rBQxJll+ul@>`naPaS{x2Q-iwRsaA1 delta 638 zcmX|%_g~Bb06_06CE3n6BU>qZ@9ylKnLR37_TKk|Cwn9fo0PJJWaMAte(^q^_tSeo z3JI%&SfnnqzAzLDCI9n3NtNlPjgeRo&IzIo1wl9{kH&+h)Wn)d5=aY4l9rMzDbh+( zrM09<8)+-;q`h>Ij?zgwOIW%{SLr6*B_chfr}UEEk}iFuuk@4tGC&5(AQ>zfk|{$Z zOR{CC43pt9LPp9c87*UEtc;WKGC?NFB$+HzWU5S)>5?N+iOCF^DYIm@%#pb=Pv*-4 zStyHSu`H2XSt`q9xvY?tvP$w~wXBh~vQE~^2H7Z^WV39Md?}DZ*(%#)yX=sivP*W$ z9x0N&vQPHQ0XZm#<&s<$<%*QZRk0g}jt%c_lScE3c(a>gA2R km3Q)9KFCM;B%h^0zQ|YkCXMo4n&gN4lwa~&nrryOUtFUbi2wiq diff --git a/database/mysql.ibd b/database/mysql.ibd index 058a85cf003860de4dd25d600712a5f20998e8b9..9ffc51395f61e7157879da1927a53ceae3dd3375 100644 GIT binary patch delta 2616 zcmXZbWo#A(6ouh_g+g(Pl;ZC04#nNw-Q67yc7OuK-Q8UZ6la48b7!#OY_P$GZLk4* zo9re}a&vP3om@%binBEk88P*0Y*bKCP{_Oghdn6Xs%*<+A|eCVf&*bO&#DJPDu>3M z#l=>@3bx`|@vRUmftAn-wGvs0tt3`bE18wtN@1n6!mLzQYAcPE)(W@MSrJxxD}$BM z%4B7>vRGNIY*uzFhn3UHW#zW=Sb42{R(`91RnRJA6}F04MXh31ajS$?(kf+@w#ry# zt#Vd*tAbV0s$^BRs#sO6NUNGv-Kt^Lv}#$ktvXg+tDaTgYG5_A8d;64CRS6cnbq8C zVYRecS*@)$R$Hr`)!yo0b+kHJovkibSF4-V-RfcWw0c>+tv*&?tDn{18ek2y23dox zA=Xf9m^IuQVU4s#S);8n)>vztHQt(FO|&LildUP1tf|&CYq~YVnrYdZWzDwcSW(to zYo0aVinbP53#~=gVrz-D)LLdOw^mpytyR`)YmK$mT4$}dHdq_2P1a^>i?!9-W^K22 zSUas<)^2N$wb$Bb?Y9nC2dzWaVe5!>)H-Gzw_>al)=BG>6>FWg&RA!ybJlt5f_2fl zWW8s-Z(X*oSRYs)S|3>-TUV`5tWT}atk114tS_yvtgo$atZ%LFtnaNKtZUYf)^+QK z^^^6pbxK2w`pf#; zdS$(~{;~eG-dJy~cToyND}Z3cLwtlF0TLn<3x zJu)C8G9fdvAS<#VJ8~c=av?YJATRPEKMJ5A3ZXEHpeTx=I7*--N})8$pe)LvJSw0f zDxor}peiC!4b@QtHBk$-Q3rKV5B1Ri4bcdV(F9G=49(F3Ezt_C(FSeN4(-ta9nlG$ z(FI-64c*ZLJ<$uj(Fc9e5B)I!12G7LF$6;~48t)3BQXl2F$QBX4&yNa6EO*sF$Hn` zPsKD$#|+GbF$=RX2T_=dd616w z{DNQc5RdR1e#c`x!5{b&Pw@=T@d7XL7yia8yv9HH7jN(u?*dT@=KT?jc!-Y>BtSxh zA`ucJ36dfik|PCDA`GdJ8flOg;Yf!Fq(=s1L?&cL7Gy;>WJeCY+XwpdlKe zF`A$$nxQ#bpe0(NHQJyp+Mzu6n3;FlJ#k<{%1lF%R<*jRjbUMOcg_ zSc+v>julvmRalKRSc`R7j}6#}P1uYr*otk~jvd&EUD%C1*o%GGj{`V}LpY2hIErI9 Wju@Q4Nt{9~PU8&D2JhFoVEqSzl0Xsw delta 2616 zcmXZbWo!@z6vS~_DDF~<6?dmN6pFh;ad&sO!wx9!?!}=vg`yL5gDEoRI1|`_32ear zP4<#s@^X3KE>BXh;zb8UghVtBi%gIpLD0MZhdn{UHKB2_ArS$00t3>IQHM5#qEv%MS zE338D#)`DsTJ5a%RtKx2)ye8?b+Niy-K_3b538ru%j#|QvHDv5tp3&jYoImA8f*=* zhFZg{;noOiq&3PKZH=+UTH~zo)&y&!HOZQ6O|hn0vZh(ntr^x#YnEkewl&9^YeiY} ztohagYoWEsT5K(`mRifK<<<&orM1dhZLP7^TI;O!)&^^%waMCSZLzjm+pK77yS2mG zY3;IhTYId%);?>$6=NN+4qAt-!`2b&sCCRbZpB(Btdmxpb;>$zow3eZ=dAPAd)E8b z2iAwy1?!@9$+~P^v94MlSsz>1tn1b%)~D8I*5}q2)|b`|>!x+fx@~=B-Lby5zOlZw zzO%l!ez1PD?ppV(`_=>Nq4mgmY(24lvVOLHv3|9lTFE5+ezcA{mk+1yUjvQX>u0A|28r12Q5Lf{_^^ z$bziMhV00JP~=1|5W8mNg{sEsNTts0W=3@aCVi6W&36^3RmSY80Vii_n4c1~E)?))UViPuF3$|h# zqOl!2uoJtm8+))9`>-D|IDmsVgu^(3qd11+h{Xwx}xG|u2G&fz@X!~6IEAL0To z;u0?73a;WKe2ibrDUcGWkQ!-_7U_^48ITc~5RA+SK^A01He^Q*gd!($Avf|MFY+Nj3ZNhgp)iV| zD2kytN}wc4p)|@M3}sOc)9 zhGPUqViZPW48~#{#$y5|ViG1}3Z^2y|7nx&Dwy#5LIVSXAV_V4eIt-;XA~$&EiM6Jpaf(8g%=wS zdTVUF@I+|(dwWJs50DE$HfjpRlmnHsqPZj$-6f1^5SK8<0bRliu?b|?bO#4UZAP}~ zIS!1EBpCQWb^);f(8vk@ZJ<0sh}Cvt)8E$vtp-^Mv^rHaxY-k^jt$M~KH{xzAkk_L Tkd;8I`ydXo0fq+%+p+@y{G)7h delta 339 zcmZo@;A{XQizDft3_!s09|}Mm=E=v+UH5}nP{6^!$}*!t2*hLYXJBIBXAqcb!D!6L zx;2OKAv4n-#p(VmjGh}0dTVUFz#}~Uy*(qR2gqQsK_aV7f%;g{EJ#4NfH4AM0b>Br z0v-kdh}C6k(;XZbwHaBb=QuDv;`;B^z`(!=!~zh@e8i@|uLoM@3bX`hSpu7t8XHg} d8=7UE#9P)t&@v8?B|ytMAx^LX`Wb|6*#V`6UUvWh diff --git a/database/undo_001 b/database/undo_001 index 3f239df9301878c54cc7bcf87747aaf81cf890b6..452e65e8d46a7a6983b7adcf5962908e68f42501 100644 GIT binary patch delta 596 zcmX}kd3X*40D$ptrkaMfkcG*Z`(6@?Ws~~|k#o6<$bD3S6_&NgN)%O0tl~;2sg%;nD65?EDyXQE%Hlk!ilgE-%>aK^^^wi7idh4UFe)=0=pg{&3;tg+l%TU7%H^NA73mRp#F&Jx{@!m1P zM3cO0vMJs()il%1kSxVasb)zt+Z=Pf?*kv2C*4Qp%do&gi!8Rp$Cg@VxfMR~sn4vm z%4%z@wa$7QY_!Q{TWs~YOxtX?!%n;Gw#Q!k?03LHU-;4?haGX$SHAX*Z++*O<4!o~ zl<)oEN2i@})=$nk?}Cdi`PnZnyW*;AuKU$*es{x7f4JpOx7~5qU;g%wd+z@WLEITS delta 602 zcmX}kXPgcM0LSs?9;&nIY#G&cwlks#ku3_@d(Vayvh$=bhq5vrW#{a@XE}Rhi{ezu zR-!@naWCrk`TSn|Ui|-|P$)8#tO!9Vr1XR*Jta~qsil!tI!}8>l=L#lD3i>x$SRv> zWtT%vxjg52FT_VD#I8v!F)t7Z#69+Zf(hZcK=8jzN=mvOh=_;^77xcJL>CJdj-S*j zrcyY|&MG~^Q59p-tow(+_qqxys-&_is;Z{CH`Gwmo8D4OZFRh@u6pWgprJ+@Yoe)Unroq@R$6PL zt#;b$prcMY>*5{nde8g1>ZZFMdip>wz4h^-zWV8JfPn@X>?1>jd~B#sFwAgqMi^<7 zPkm;zF~%Bayw6QA(Ik_FP4R^leQ|=e!Fpy5zDeuKLaIuKB}tH~i@@fBVNxxBTn2JMOyYz6TykdIYew9|iyb