diff --git a/Frontend/patient_manager/lib/components/homeTile.dart b/Frontend/patient_manager/lib/components/homeTile.dart index b8f54c1c..47f471c8 100644 --- a/Frontend/patient_manager/lib/components/homeTile.dart +++ b/Frontend/patient_manager/lib/components/homeTile.dart @@ -38,7 +38,7 @@ class _HomeTileState extends State { Widget displayTile() { return FittedBox( child: Column( - mainAxisSize: MainAxisSize.max, + mainAxisSize: MainAxisSize.min, mainAxisAlignment: MainAxisAlignment.end, children: [ GestureDetector( @@ -70,14 +70,22 @@ class _HomeTileState extends State { ), ), const SizedBox(height: 1), - Text( - widget.tileName, - textAlign: TextAlign.center, - style: TextStyle( - color: mainC, - fontSize: 5.0, - fontWeight: FontWeight.bold, - ), + Row( + children: [ + Flexible( + child: Text( + widget.tileName, + textAlign: TextAlign.center, + softWrap: true, + overflow: TextOverflow.visible, + style: TextStyle( + color: mainC, + fontSize: 5.0, + fontWeight: FontWeight.bold, + ), + ), + ), + ], ) ], ), diff --git a/Frontend/patient_manager/lib/components/homeTileGrid.dart b/Frontend/patient_manager/lib/components/homeTileGrid.dart index e09775d3..bc8dd55d 100644 --- a/Frontend/patient_manager/lib/components/homeTileGrid.dart +++ b/Frontend/patient_manager/lib/components/homeTileGrid.dart @@ -1,6 +1,11 @@ import 'package:flutter/material.dart'; +import 'package:google_nav_bar/google_nav_bar.dart'; import 'package:patient_manager/components/homeTile.dart'; +import 'package:patient_manager/components/mihAppBar.dart'; +import 'package:patient_manager/components/mihAppDrawer.dart'; +import 'package:patient_manager/components/mihDeleteMessage.dart'; import 'package:patient_manager/components/myErrorMessage.dart'; +import 'package:patient_manager/components/mySuccessMessage.dart'; import 'package:patient_manager/env/env.dart'; import 'package:patient_manager/main.dart'; import 'package:patient_manager/objects/appUser.dart'; @@ -17,9 +22,13 @@ class HomeTileGrid extends StatefulWidget { } class _HomeTileGridState extends State { - late List> tileList = []; + late List> personalTileList = []; + late List> businessTileList = []; + late List> devTileList = []; + List>> pbswitch = []; + int _selectedIndex = 0; - void setApps(List> tileList) { + void setAppsNewPersonal(List> tileList) { if (widget.signedInUser.fname == "") { tileList.add( [ @@ -33,68 +42,122 @@ class _HomeTileGridState extends State { } ], ); - } else if (widget.signedInUser.type == "personal") { - tileList.add( - [ - Icons.medication, - "Patient Profile", - () { - Navigator.of(context) - .pushNamed('/patient-profile', arguments: widget.signedInUser); - // Navigator.popAndPushNamed(context, '/patient-manager', - // arguments: widget.userEmail); - } - ], - ); - } else { - //business - tileList.add( - [ - Icons.medication, - "Patient Manager", - () { - Navigator.of(context).pushNamed('/patient-manager', - arguments: widget.signedInUser.email); - // Navigator.popAndPushNamed(context, '/patient-manager', - // arguments: widget.userEmail); - } - ], - ); } + } + void setAppsPersonal(List> tileList) { + tileList.add( + [ + Icons.medication, + "Patient Profile", + () { + Navigator.of(context) + .pushNamed('/patient-profile', arguments: widget.signedInUser); + // Navigator.popAndPushNamed(context, '/patient-manager', + // arguments: widget.userEmail); + } + ], + ); + } + + void setAppsBusiness(List> tileList) { + tileList.add( + [ + Icons.medication, + "Manage Patient", + () { + Navigator.of(context).pushNamed('/patient-manager', + arguments: widget.signedInUser.email); + // Navigator.popAndPushNamed(context, '/patient-manager', + // arguments: widget.userEmail); + } + ], + ); + } + + void setAppsDev(List> tileList) { if (AppEnviroment.getEnv() == "Dev") { tileList.add([ - Icons.add, + Icons.add_circle_outline, "Add Pat - Dev", () { Navigator.of(context).pushNamed('/patient-manager/add', arguments: widget.signedInUser); } ]); + tileList.add( + [ + Icons.perm_identity, + "Upd Prof - Dev", + () { + Navigator.of(context) + .pushNamed('/profile', arguments: widget.signedInUser); + // Navigator.popAndPushNamed(context, '/patient-manager', + // arguments: widget.userEmail); + } + ], + ); tileList.add([ - Icons.password, - "Pass Req - Dev", + Icons.error_outline_outlined, + "Error - Dev", () { showDialog( context: context, builder: (context) { - return const MyErrorMessage(errorType: "Password Requirements"); + return const MyErrorMessage(errorType: "Invalid Email"); + }, + ); + } + ]); + tileList.add([ + Icons.check_circle_outline_outlined, + "Success - Dev", + () { + showDialog( + context: context, + builder: (context) { + return const MySuccessMessage( + successType: "Success", + successMessage: + "Congratulations! Your account has been created successfully. You are log in and can start exploring.\n\nPlease note: more apps will appear once you update your profile."); + }, + ); + } + ]); + tileList.add([ + Icons.delete_forever_outlined, + "Delete - Dev", + () { + showDialog( + context: context, + builder: (context) { + return MIHDeleteMessage(deleteType: "File", onTap: () {}); }, ); } ]); - tileList.add([Icons.abc, "Test 3", () {}]); - tileList.add([Icons.abc, "Test 4", () {}]); tileList.add([Icons.abc, "Test 5", () {}]); tileList.add([Icons.abc, "Test 6", () {}]); } } - @override - void initState() { - //print("Home tile gird widget: ${widget.userEmail}"); - setApps(tileList); - super.initState(); + void setApps(List> personalTileList, + List> businessTileList) { + if (widget.signedInUser.fname == "") { + setAppsNewPersonal(personalTileList); + } else if (widget.signedInUser.type == "personal") { + setAppsPersonal(personalTileList); + } else { + //business + setAppsPersonal(personalTileList); + setAppsBusiness(businessTileList); + } + if (AppEnviroment.getEnv() == "Dev") { + setAppsDev(personalTileList); + setAppsDev(businessTileList); + } + pbswitch.add(personalTileList); + pbswitch.add(businessTileList); } Color getPrim() { @@ -119,27 +182,85 @@ class _HomeTileGridState extends State { ); } + bool isBusinessUser(AppUser signedInUser) { + if (signedInUser.type == "personal") { + return false; + } else { + return true; + } + } + + @override + void initState() { + setApps(personalTileList, businessTileList); + super.initState(); + } + @override Widget build(BuildContext context) { var size = MediaQuery.of(context).size; double width = size.width; double height = size.height; - return Container( - width: width, - height: height, - child: GridView.builder( - padding: EdgeInsets.fromLTRB(width / 6, height / 16, width / 6, - 0), //EdgeInsets.symmetric(horizontal: width / 6), - itemCount: tileList.length, - gridDelegate: const SliverGridDelegateWithMaxCrossAxisExtent( - maxCrossAxisExtent: 200), - //const SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 3), - itemBuilder: (context, index) { - var tile = tileList[index]; - //setState(() {}); - return buildtile(tile); - }, + return Scaffold( + appBar: const MIHAppBar(barTitle: "Mzansi Innovation Hub"), + drawer: MIHAppDrawer( + signedInUser: widget.signedInUser, + logo: MzanziInnovationHub.of(context)!.theme.logoImage(), //logo, + ), + body: Container( + width: width, + height: height, + child: GridView.builder( + padding: EdgeInsets.fromLTRB(width / 6, height / 16, width / 6, + 0), //EdgeInsets.symmetric(horizontal: width / 6), + itemCount: pbswitch[_selectedIndex].length, + gridDelegate: const SliverGridDelegateWithMaxCrossAxisExtent( + maxCrossAxisExtent: 200), + //const SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 3), + itemBuilder: (context, index) { + var tile = pbswitch[_selectedIndex][index]; + //setState(() {}); + return buildtile(tile); + }, + ), + ), + bottomNavigationBar: Visibility( + visible: isBusinessUser(widget.signedInUser), + child: Padding( + padding: const EdgeInsets.all(15.0), + child: GNav( + //hoverColor: Colors.lightBlueAccent, + color: MzanziInnovationHub.of(context)!.theme.secondaryColor(), + iconSize: 35.0, + activeColor: MzanziInnovationHub.of(context)!.theme.primaryColor(), + tabBackgroundColor: + MzanziInnovationHub.of(context)!.theme.secondaryColor(), + //gap: 20, + //padding: EdgeInsets.all(15), + tabs: [ + GButton( + icon: Icons.perm_identity, + text: "Personal", + onPressed: () { + setState(() { + _selectedIndex = 0; + }); + }, + ), + GButton( + icon: Icons.business, + text: "Business", + onPressed: () { + setState(() { + _selectedIndex = 1; + }); + }, + ), + ], + selectedIndex: _selectedIndex, + ), + ), ), ); } diff --git a/Frontend/patient_manager/lib/pages/home.dart b/Frontend/patient_manager/lib/pages/home.dart index dee182e3..ee9e5a6c 100644 --- a/Frontend/patient_manager/lib/pages/home.dart +++ b/Frontend/patient_manager/lib/pages/home.dart @@ -1,11 +1,8 @@ import 'dart:convert'; import 'package:flutter/material.dart'; -import 'package:patient_manager/components/mihAppDrawer.dart'; import 'package:patient_manager/env/env.dart'; import 'package:patient_manager/components/homeTileGrid.dart'; -import 'package:patient_manager/components/mihAppBar.dart'; -import 'package:patient_manager/main.dart'; import 'package:patient_manager/objects/appUser.dart'; import 'package:supertokens_flutter/supertokens.dart'; import 'package:supertokens_flutter/http.dart' as http; @@ -20,19 +17,9 @@ class Home extends StatefulWidget { } class _HomeState extends State { - //late Future signedInUser; String useremail = ""; final baseAPI = AppEnviroment.baseApiUrl; - // Future loadImage() async { - // try { - // var t = MzanziInnovationHub.of(context)!.theme.logoImage(); - // await precacheImage(t.image, context); - // } catch (e) { - // print('Failed to load and cache the image: $e'); - // } - // } - Future getUserDetails() async { //print("pat man drawer: " + endpointUserData + widget.userEmail); var uid = await SuperTokens.getUserId(); @@ -46,6 +33,9 @@ class _HomeState extends State { var decodedData = jsonDecode(body); AppUser u = AppUser.fromJson(decodedData); // print(u.email); + //setState(() { + //_widgetOptions = setLayout(u); + //}); return u; } else { throw Exception("Error: GetUserData status code ${response.statusCode}"); @@ -54,66 +44,18 @@ class _HomeState extends State { @override void initState() { - //signedInUser = getUserDetails(); super.initState(); - - //precacheImage(logo, context); } - // @override - // void didChangeDependencies() { - // super.didChangeDependencies(); - // precacheImage(logo, context); - // } - @override Widget build(BuildContext context) { - //loadImage(); - return FutureBuilder( future: getUserDetails(), builder: (BuildContext context, AsyncSnapshot snapshot) { if (snapshot.connectionState == ConnectionState.done) { if (snapshot.hasData) { - return Scaffold( - appBar: const MIHAppBar(barTitle: "Mzansi Innovation Hub"), - drawer: MIHAppDrawer( - signedInUser: snapshot.data!, - logo: - MzanziInnovationHub.of(context)!.theme.logoImage(), //logo, - ), //HomeAppDrawer(userEmail: useremail), - body: HomeTileGrid( - signedInUser: snapshot.data!, - ), - // floatingActionButtonLocation: FloatingActionButtonLocation.endTop, - // floatingActionButton: Padding( - // padding: const EdgeInsets.only(top: 65, right: 5), - // child: FloatingActionButton.extended( - // label: const Text( - // "Test Pop Up", - // style: TextStyle( - // fontWeight: FontWeight.bold, - // ), - // ), - // //backgroundColor: Colors.blueAccent, - // onPressed: () { - // showDatePicker( - // context: context, - // initialDate: DateTime.now(), - // firstDate: DateTime(2000), - // lastDate: DateTime(2100), - // ); - // // showDialog( - // // context: context, - // // builder: (context) => - // // const MyErrorMessage(errorType: "Input Error"), - // // ); - // }, - // icon: const Icon( - // Icons.warning, - // //color: MzanziInnovationHub.of(context)!.theme.primaryColor(), - // ), - // ), + return HomeTileGrid( + signedInUser: snapshot.data!, ); } else { return Center( @@ -129,7 +71,5 @@ class _HomeState extends State { ); }, ); - - //); } }