Merge branch 'mirza_home_page' into development_new_design_2.0

merge-requests/390/head
Mirza.Shafique 3 years ago
commit 24b7a8a4c4

@ -1,3 +1,4 @@
import 'package:diplomaticquarterapp/uitl/utils_new.dart';
import 'package:diplomaticquarterapp/widgets/charts/app_time_series_chart.dart';
import 'package:fl_chart/fl_chart.dart';
import 'package:flutter/material.dart';
@ -38,18 +39,20 @@ class LineChartCurved extends StatelessWidget {
Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: <Widget>[
const SizedBox(
height: 4,
),
Text(
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.all(16.0),
child: Text(
title,
style: TextStyle(
color: Colors.black,
fontSize: 15,
letterSpacing: 2),
style: TextStyle(color: Colors.black, fontSize: 16, letterSpacing: -0.64, fontWeight: FontWeight.w600),
textAlign: TextAlign.center,
),
SizedBox(height: 10,),
),
],
),
mHeight(10),
Expanded(
child: Padding(
padding: const EdgeInsets.only(right: 18.0, left: 16.0),
@ -93,13 +96,11 @@ class LineChartCurved extends StatelessWidget {
lineTouchData: LineTouchData(
touchTooltipData: LineTouchTooltipData(
tooltipBgColor: Colors.white,
),
touchCallback: (LineTouchResponse touchResponse) {},
handleBuiltInTouches: true,
),
gridData: FlGridData(
show: true, drawVerticalLine: true, drawHorizontalLine: true),
gridData: FlGridData(show: true, drawVerticalLine: true, drawHorizontalLine: true,horizontalInterval: 10,verticalInterval: 10),
titlesData: FlTitlesData(
bottomTitles: SideTitles(
showTitles: true,
@ -107,7 +108,7 @@ class LineChartCurved extends StatelessWidget {
color: Colors.black,
fontSize: 10,
),
rotateAngle:-65,
rotateAngle: -65,
margin: 22,
getTitles: (value) {
if (timeSeries.length < 15) {
@ -116,10 +117,8 @@ class LineChartCurved extends StatelessWidget {
} else
return '';
} else {
if (value.toInt() == 0)
return '${timeSeries[value.toInt()].time.month}/ ${timeSeries[value.toInt()].time.year}';
if (value.toInt() == timeSeries.length - 1)
return '${timeSeries[value.toInt()].time.month}/ ${timeSeries[value.toInt()].time.year}';
if (value.toInt() == 0) return '${timeSeries[value.toInt()].time.month}/ ${timeSeries[value.toInt()].time.year}';
if (value.toInt() == timeSeries.length - 1) return '${timeSeries[value.toInt()].time.month}/ ${timeSeries[value.toInt()].time.year}';
if (xAxixs.contains(value.toInt())) {
return '${timeSeries[value.toInt()].time.month}/ ${timeSeries[value.toInt()].time.year}';
}
@ -134,8 +133,15 @@ class LineChartCurved extends StatelessWidget {
fontWeight: FontWeight.bold,
fontSize: 10,
),
interval:getMaxY() - getMinY() <=500?getMaxY() - getMinY() <=50?10:50:getMaxY() - getMinY() <=1000?100:getMaxY() - getMinY()>=10000?5000:200,
interval: getMaxY() - getMinY() <= 500
? getMaxY() - getMinY() <= 50
? 10
: 50
: getMaxY() - getMinY() <= 1000
? 100
: getMaxY() - getMinY() >= 10000
? 5000
: 200,
margin: 12,
),
),
@ -165,12 +171,12 @@ class LineChartCurved extends StatelessWidget {
);
}
calculateMaxAndMin(){
calculateMaxAndMin() {
getMaxY();
getMaxX();
getMin();
getMinY();
increasingY = ((maxY-minY)/timeSeries.length - 1)*15;
increasingY = ((maxY - minY) / timeSeries.length - 1) * 15;
maxY += increasingY.abs();
minY -= increasingY.abs();
}
@ -182,21 +188,21 @@ class LineChartCurved extends StatelessWidget {
if (resultValueDouble > maxY) maxY = resultValueDouble;
});
return maxY.roundToDouble() ;
return maxY.roundToDouble();
}
getMaxX(){
getMaxX() {
maxX = (timeSeries.length - 1).toDouble();
}
double getMin(){
double getMin() {
minX = 0;
timeSeries.forEach((element) {
double resultValueDouble = element.sales;
if (resultValueDouble < minX) minX = resultValueDouble;
});
return minX.roundToDouble() ;
return minX.roundToDouble();
}
double getMinY() {
@ -220,7 +226,7 @@ class LineChartCurved extends StatelessWidget {
spots: spots,
isCurved: true,
colors: [secondaryColor],
barWidth: 3,
barWidth: 1.5,
isStrokeCapRound: true,
dotData: FlDotData(
show: false,

@ -116,6 +116,7 @@ class VitalSignDetailsScreen extends StatelessWidget {
itemBuilder: (BuildContext context, int index) {
return InkWell(
onTap: () {
if (index == 0) {
if (isNotOneAppointment) {
Navigator.push(
context,
@ -128,6 +129,77 @@ class VitalSignDetailsScreen extends StatelessWidget {
),
);
}
} else if (index == 1) {
if (isNotOneAppointment) {
Navigator.push(
context,
FadePage(
page: VitalSignItemDetailsScreen(
pageKey: VitalSignDetails.Weight,
pageTitle: TranslationBase.of(context).weight,
vitalList: mode.vitalSignResModelList,
),
),
);
}
} else if (index == 2) {
if (isNotOneAppointment) {
Navigator.push(
context,
FadePage(
page: VitalSignItemDetailsScreen(
pageKey: VitalSignDetails.Temperature,
pageTitle:
TranslationBase.of(context).temperature,
vitalList: mode.vitalSignResModelList,
),
),
);
}
} else if (index == 3) {
if (isNotOneAppointment) {
Navigator.push(
context,
FadePage(
page: VitalSignItemDetailsScreen(
pageKey: VitalSignDetails.heart,
pageTitle: TranslationBase.of(context).heart,
vitalList: mode.vitalSignResModelList,
),
),
);
}
} else if (index == 4) {
if (isNotOneAppointment) {
Navigator.push(
context,
FadePage(
page: VitalSignItemDetailsScreen(
pageKey: VitalSignDetails.Respiration,
pageTitle:
TranslationBase.of(context).respirationRate,
vitalList: mode.vitalSignResModelList,
),
),
);
}
} else if (index == 5) {
if (isNotOneAppointment) {
Navigator.push(
context,
FadePage(
page: VitalSignItemDetailsScreen(
pageKey: VitalSignDetails.BloodPressure,
pageTitle: TranslationBase.of(context).bloodPressure,
vitalList: mode.vitalSignResModelList,
),
),
);
}
}
},
child: VitalSignItem(
vitalSign: vitalSigns[index],

@ -159,6 +159,9 @@ class VitalSignItemDetailsScreen extends StatelessWidget {
return AppScaffold(
appBarTitle: pageTitle,
isShowAppBar: true,
showNewAppBarTitle: true,
showNewAppBar: true,
body: ListView(
children: VSchart.map((chartInfo) {
var vitalListTemp = vitalList.where(

@ -1,15 +1,20 @@
import 'package:diplomaticquarterapp/core/model/vital_sign/vital_sign_res_model.dart';
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
import 'package:diplomaticquarterapp/pages/medical/vital_sign/vital_sign_details_wideget.dart';
import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/uitl/utils.dart';
import 'package:diplomaticquarterapp/uitl/utils_new.dart';
import 'package:diplomaticquarterapp/widgets/charts/app_time_series_chart.dart';
import 'package:diplomaticquarterapp/widgets/others/app_expandable_notifier.dart';
import 'package:flutter/material.dart';
import 'package:charts_flutter/flutter.dart' as charts;
import 'package:provider/provider.dart';
import 'LineChartCurved.dart';
class VitalSingChartAndDetials extends StatelessWidget {
class VitalSingChartAndDetials extends StatefulWidget {
VitalSingChartAndDetials({
Key key,
@required this.vitalList,
@ -24,36 +29,111 @@ class VitalSingChartAndDetials extends StatelessWidget {
final String viewKey;
final String title1;
final String title2;
@override
_VitalSingChartAndDetialsState createState() => _VitalSingChartAndDetialsState();
}
class _VitalSingChartAndDetialsState extends State<VitalSingChartAndDetials> {
List<TimeSeriesSales2> timeSeriesData = [];
bool isExpended = true;
ProjectViewModel projectViewModel;
@override
Widget build(BuildContext context) {
void initState() {
// TODO: implement initState
super.initState();
generateData();
return Column(
}
@override
Widget build(BuildContext context) {
projectViewModel = Provider.of(context);
return SingleChildScrollView(
child: Column(
children: <Widget>[
AppExpandableNotifier(
isExpand: true,
headerWidget: LineChartCurved(title: name,timeSeries:timeSeriesData,indexes: timeSeriesData.length~/5.5,),
bodyWidget: VitalSignDetailsWidget(
vitalList: vitalList,
title1: title1,
title2: title2,
viewKey: viewKey,
Card(
shape: cardRadius(12),
elevation: 1,
margin: EdgeInsets.only(left: 16, top: 16, right: 16, bottom: 8),
child: LineChartCurved(
title: widget.name,
timeSeries: timeSeriesData,
indexes: timeSeriesData.length ~/ 5.5,
),
),
Card(
shape: cardRadius(12),
margin: EdgeInsets.only(left: 16, top: 8, right: 16, bottom: 16),
child: Padding(
padding: const EdgeInsets.all(12.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
TranslationBase.of(context).graphDetails,
style: TextStyle(
fontSize: 16,
letterSpacing: -0.64,
fontWeight: FontWeight.w600,
),
),
Table(
columnWidths: {
0: FlexColumnWidth(2),
1: FlexColumnWidth(1),
// 2: FlexColumnWidth(1),
},
children: fullData(widget.vitalList, context),
),
],
),
),
)
],
),
);
}
List<TableRow> fullData(List<VitalSignResModel> labResultList, context) {
List<TableRow> tableRow = [];
tableRow.add(
TableRow(
children: [
Utils.tableColumnTitle(widget.title1),
Utils.tableColumnTitle(widget.title2),
// Utils.tableColumnTitle(TranslationBase.of(context).range),
],
),
);
for (int i = 0; i < labResultList.length; i++) {
var data = labResultList[i].toJson()[widget.viewKey];
if (data != 0)
tableRow.add(
TableRow(
children: [
Utils.tableColumnValue(
"${projectViewModel.isArabic ? DateUtil.getWeekDayArabic(labResultList[i].vitalSignDate.weekday) : DateUtil.getWeekDay(labResultList[i].vitalSignDate.weekday)}, ${labResultList[i].vitalSignDate.day} ${projectViewModel.isArabic ? DateUtil.getMonthArabic(labResultList[i].vitalSignDate.month) : DateUtil.getMonth(labResultList[i].vitalSignDate.month)}, ${labResultList[i].vitalSignDate.year}",
isLast: i == (labResultList.length - 1)),
Utils.tableColumnValue('${labResultList[i].toJson()[widget.viewKey]}', isLast: i == (labResultList.length - 1)),
],
),
);
}
return tableRow;
}
generateData() {
if (vitalList.length > 0) {
vitalList.reversed.toList().forEach(
if (widget.vitalList.length > 0) {
widget.vitalList.reversed.toList().forEach(
(element) {
if( element.toJson()[viewKey]!=null && element.toJson()[viewKey]?.toInt()!=0)
if (element.toJson()[widget.viewKey] != null && element.toJson()[widget.viewKey]?.toInt() != 0)
timeSeriesData.add(
TimeSeriesSales2(
new DateTime(element.vitalSignDate.year, element.vitalSignDate.month, element.vitalSignDate.day),
element.toJson()[viewKey].toDouble(),
element.toJson()[widget.viewKey].toDouble(),
),
);
},

Loading…
Cancel
Save