diff --git a/lib/models/chart_axis_model.dart b/lib/models/chart_axis_model.dart new file mode 100644 index 00000000..781d0e71 --- /dev/null +++ b/lib/models/chart_axis_model.dart @@ -0,0 +1,7 @@ +/// Sample linear data type. +class ChartAxis { + final int xAxis; + final int yAxis; + + ChartAxis(this.xAxis, this.yAxis); +} diff --git a/lib/models/patient/vital_sign_res_model.dart b/lib/models/patient/vital_sign_res_model.dart index 6066e4b0..28b43cd7 100644 --- a/lib/models/patient/vital_sign_res_model.dart +++ b/lib/models/patient/vital_sign_res_model.dart @@ -5,6 +5,8 @@ *@return:VitalSignResModel *@desc: VitalSignResModel class */ +import 'package:doctor_app_flutter/util/helpers.dart'; + class VitalSignResModel { var transNo; var projectID; @@ -42,7 +44,7 @@ class VitalSignResModel { var triageCategory; var gCScore; var lineItemNo; - var vitalSignDate; + DateTime vitalSignDate; var actualTimeTaken; var sugarLevel; var fBS; @@ -168,7 +170,7 @@ class VitalSignResModel { triageCategory = json['TriageCategory']; gCScore = json['GCScore']; lineItemNo = json['LineItemNo']; - vitalSignDate = json['VitalSignDate']; + vitalSignDate = Helpers.convertStringToDate(json['VitalSignDate']); actualTimeTaken = json['ActualTimeTaken']; sugarLevel = json['SugarLevel']; fBS = json['FBS']; diff --git a/lib/screens/patients/profile/vital_sign/body_measurements_screen.dart b/lib/screens/patients/profile/vital_sign/body_measurements_screen.dart index 992a5780..9e0dc749 100644 --- a/lib/screens/patients/profile/vital_sign/body_measurements_screen.dart +++ b/lib/screens/patients/profile/vital_sign/body_measurements_screen.dart @@ -1,143 +1,183 @@ import 'package:charts_flutter/flutter.dart' as charts; import 'package:doctor_app_flutter/config/size_config.dart'; +import 'package:doctor_app_flutter/models/chart_axis_model.dart'; import 'package:doctor_app_flutter/models/patient/vital_sign_res_model.dart'; +import 'package:doctor_app_flutter/providers/patients_provider.dart'; import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart'; +import 'package:doctor_app_flutter/widgets/shared/charts/app_line_chart.dart'; import 'package:doctor_app_flutter/widgets/shared/rounded_container_widget.dart'; import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; class BodyMeasurementsScreen extends StatelessWidget { BodyMeasurementsScreen(); - List vitalList; + // ; + PatientsProvider patientsProv; + @override Widget build(BuildContext context) { - _seriesData = List>(); - _seriesPieData = List>(); - _seriesLineData = List>(); - _generateData(); + patientsProv = Provider.of(context); + List seriesList = generateData(); + + // generateData(); return AppScaffold( appBarTitle: 'Body Measurements', - body: RoundedContainer( - height: SizeConfig.realScreenHeight*0.4, - child: Padding( - padding: EdgeInsets.all(8.0), - child: Container( - child: Center( - child: Column( - children: [ - Text( - 'Body Mass Index', - style: TextStyle( - fontSize: 24.0, fontWeight: FontWeight.bold), - ), - Expanded( - child: charts.BarChart( - _seriesData, - animate: true, - barGroupingType: charts.BarGroupingType.grouped, - // behaviors: [new charts.SeriesLegend()], - // primaryMeasureAxis: , - animationDuration: Duration(seconds: 1), + body: ListView( + children: [ + Column( + children: [ + RoundedContainer( + height: SizeConfig.realScreenHeight * 0.4, + child: Padding( + padding: EdgeInsets.all(8.0), + child: Container( + child: Center( + child: Text('sss'), ), ), - ], + ), + ), + Container( + height: SizeConfig.realScreenHeight * 0.4, + child: Center( + child: Expanded( + child: charts.TimeSeriesChart(seriesList, + animate: true, + behaviors: [ + new charts.RangeAnnotation([ + new charts.RangeAnnotationSegment( + new DateTime(2017, 10, 4), + new DateTime(2017, 10, 15), + charts.RangeAnnotationAxisType.domain), + ]), + ]), + ), + ), ), - ), + ], ), - ), + ], ), ); } - List> _seriesData; - List> _seriesPieData; - List> _seriesLineData; - - _generateData() { - var data1 = [ - new Pollution(1980, 'USA', 40), + generateData() { + var myFakeMobileData3 = [ + new LinearSales(0, 15), + new LinearSales(1, 75), + new LinearSales(2, 300), + new LinearSales(3, 225), + ]; + final myFakeDesktopData = [ + new ChartAxis(10, 35), + new ChartAxis(1, 36), + new ChartAxis(5, 40), + new ChartAxis(17, 35), + new ChartAxis(4, 35), + new ChartAxis(5, 36), + new ChartAxis(15, 35), + new ChartAxis(7, 40), + new ChartAxis(11, 36), + new ChartAxis(2, 35), + new ChartAxis(10, 38), + new ChartAxis(1, 38), + ]; + final data = [ + new TimeSeriesSales(new DateTime(2017, 9, 19), 5), + new TimeSeriesSales(new DateTime(2017, 9, 26), 25), + new TimeSeriesSales(new DateTime(2017, 10, 3), 100), + new TimeSeriesSales(new DateTime(2017, 10, 10), 75), ]; - - _seriesData.add( - charts.Series( - domainFn: (Pollution pollution, _) => '', - measureFn: (Pollution pollution, _) => pollution.quantity, - id: '2017', - data: data1, - fillPatternFn: (_, __) => charts.FillPatternType.solid, - fillColorFn: (Pollution pollution, _) => - charts.ColorUtil.fromDartColor(Color(0xff990099)), - ), - ); - _seriesData.add( - charts.Series( - domainFn: (Pollution pollution, _) => '', - measureFn: (Pollution pollution, _) => pollution.quantity, - id: '2017', - data: data1, - fillPatternFn: (_, __) => charts.FillPatternType.solid, - fillColorFn: (Pollution pollution, _) => - charts.ColorUtil.fromDartColor(Color(0xff990099)), - ), - ); - _seriesData.add( - charts.Series( - domainFn: (Pollution pollution, _) => '', - measureFn: (Pollution pollution, _) => pollution.quantity, - id: '2017', - data: data1, - fillPatternFn: (_, __) => charts.FillPatternType.solid, - fillColorFn: (Pollution pollution, _) => - charts.ColorUtil.fromDartColor(Color(0xff990099)), - ), - ); - _seriesData.add( - charts.Series( - domainFn: (Pollution pollution, _) => '', - measureFn: (Pollution pollution, _) => pollution.quantity, - id: '2017', - data: data1, - fillPatternFn: (_, __) => charts.FillPatternType.solid, - fillColorFn: (Pollution pollution, _) => - charts.ColorUtil.fromDartColor(Color(0xff990099)), - ), - ); - _seriesData.add( - charts.Series( - domainFn: (Pollution pollution, _) => '', - measureFn: (Pollution pollution, _) => pollution.quantity, - id: '2017', - data: data1, - fillPatternFn: (_, __) => charts.FillPatternType.solid, - fillColorFn: (Pollution pollution, _) => - charts.ColorUtil.fromDartColor(Color(0xff990099)), - ), - ); - + final List data1 = []; - - } -} + final List myFakeDesktopData1 = []; + List vitalList = patientsProv.patientVitalSignList; + if (vitalList.length > 0) { + // vitalList.sort((VitalSignResModel a, VitalSignResModel b) { + // return a.bodyMassIndex.toInt() - b.bodyMassIndex.toInt(); + // }); + for (int x = vitalList.length - 1; x >= 0; x--) { + myFakeDesktopData1.add( + new ChartAxis( + // x, + vitalList[x].vitalSignDate.day, + // 20, + // vitalSign.bodyMassIndex.toInt(), + // vitalSign.vitalSignDate.toString(), + // vitalSign.pulseBeatPerMinute!=null?vitalSign.pulseBeatPerMinute.toInt():50, + vitalList[x].bodyMassIndex.toInt(), + ), + ); + data1.add(TimeSeriesSales(new DateTime(vitalList[x].vitalSignDate.year,vitalList[x].vitalSignDate.month,vitalList[x].vitalSignDate.day), + vitalList[x].bodyMassIndex.toInt())); + // data1.add(TimeSeriesSales(vitalList[x].vitalSignDate,vitalList[x].bodyMassIndex.toInt() + x * 15)); + } + // vitalList.forEach((VitalSignResModel vitalSign) { -class Pollution { - String place; - int year; - int quantity; + // // print(e);' + // // int x = int.parse(vitalSign.bodyMassIndex); + // myFakeDesktopData1.add( + // new ChartAxis( + // vitalSign.vitalSignDate.day, + // // 20, + // // vitalSign.bodyMassIndex.toInt(), + // // vitalSign.vitalSignDate.toString(), + // // vitalSign.pulseBeatPerMinute!=null?vitalSign.pulseBeatPerMinute.toInt():50, + // vitalSign.bodyMassIndex.toInt(), + // ), + // ); + // }); - Pollution(this.year, this.place, this.quantity); + // // map( + // // (VitalSignResModel vitalSign) { + // // print(vitalSign); + // // myFakeDesktopData1.add( + // // ChartAxis(vitalSign.transNo, vitalSign.bodyMassIndex), + // // ); + // // }, + // // ); + // } + } + return [ + new charts.Series( + id: 'Sales', + domainFn: (TimeSeriesSales sales, _) => sales.time, + measureFn: (TimeSeriesSales sales, _) => sales.sales, + data: data1, + ) + // charts.Series( + // id: 'ww', + // // Light shade for even xAxiss, dark shade for odd. + // colorFn: (_, __) => charts.MaterialPalette.red.shadeDefault, + // // dashPatternFn: (ChartAxis yAxis, _) => [2, 4], + // strokeWidthPxFn: (ChartAxis yAxis, _) => 2.5, + // domainFn: (ChartAxis xAxis, _) => xAxis.xAxis, + // measureFn: (ChartAxis yAxis, _) => yAxis.yAxis, + // data: myFakeDesktopData1, + // ), + // new charts.Series( + // id: 'Desktop', + // colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault, + // domainFn: (LinearSales sales, _) => sales.year, + // measureFn: (LinearSales sales, _) => sales.sales, + // data: myFakeDesktopData1, + // ) + ]; + } } -class Task { - String task; - double taskvalue; - Color colorval; +class LinearSales { + final int year; + final int sales; - Task(this.task, this.taskvalue, this.colorval); + LinearSales(this.year, this.sales); } -class Sales { - int yearval; - int salesval; +/// Sample time series data type. +class TimeSeriesSales { + final DateTime time; + final int sales; - Sales(this.yearval, this.salesval); + TimeSeriesSales(this.time, this.sales); } diff --git a/lib/screens/patients/profile/vital_sign/vital_sign_details_screen.dart b/lib/screens/patients/profile/vital_sign/vital_sign_details_screen.dart index d2cb5380..9547c1ce 100644 --- a/lib/screens/patients/profile/vital_sign/vital_sign_details_screen.dart +++ b/lib/screens/patients/profile/vital_sign/vital_sign_details_screen.dart @@ -73,6 +73,7 @@ class _VitalSignDetailsScreenState extends State { vitalSing = routeArgs['vitalSing']; return AppScaffold( appBarTitle: "vital Sing ", + isloading: patientsProv.isLoading, body: CustomScrollView( primary: false, slivers: [ diff --git a/lib/widgets/auth/verfiy_account.dart b/lib/widgets/auth/verfiy_account.dart index 465ce07e..963b26bf 100644 --- a/lib/widgets/auth/verfiy_account.dart +++ b/lib/widgets/auth/verfiy_account.dart @@ -402,6 +402,10 @@ class _VerifyAccountState extends State { } }).catchError((err) { print('$err'); + changeLoadingStata(false); + + print('$err'); + helpers.showErrorToast(); }); } } diff --git a/lib/widgets/shared/charts/app_line_chart.dart b/lib/widgets/shared/charts/app_line_chart.dart new file mode 100644 index 00000000..554eafa1 --- /dev/null +++ b/lib/widgets/shared/charts/app_line_chart.dart @@ -0,0 +1,34 @@ +import 'package:flutter/material.dart'; +import 'package:charts_flutter/flutter.dart' as charts; + +class AppLineChart extends StatelessWidget { + const AppLineChart({ + Key key, + @required this.seriesList, + this.chartTitle, + }) : super(key: key); + + final List seriesList; + + final String chartTitle; + + @override + Widget build(BuildContext context) { + return Container( + child: Column( + children: [ + Text( + 'Body Mass Index', + style: TextStyle(fontSize: 24.0, fontWeight: FontWeight.bold), + ), + Expanded( + child: charts.LineChart(seriesList, + defaultRenderer: new charts.LineRendererConfig( + includeArea: false, stacked: true), + animate: true), + ), + ], + ), + ); + } +}