You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
cloudsolutions-atoms/lib/dashboard_latest/widgets/progress_fragment.dart

269 lines
13 KiB
Dart

// import 'package:flutter/material.dart';
// // import 'package:test_sa/pie_chart/pie_chart.dart';
// import 'package:provider/provider.dart';
// import 'package:syncfusion_flutter_charts/charts.dart';
// import 'package:test_sa/controllers/providers/api/all_requests_provider.dart';
// import 'package:test_sa/extensions/context_extension.dart';
// import 'package:test_sa/extensions/int_extensions.dart';
// import 'package:test_sa/extensions/text_extensions.dart';
// import 'package:test_sa/extensions/widget_extensions.dart';
// import 'package:test_sa/new_views/app_style/app_color.dart';
// import 'package:test_sa/new_views/pages/land_page/widgets/request_item_view_list.dart';
//
// import '../../../../controllers/providers/api/user_provider.dart';
// import '../../../../models/enums/user_types.dart';
//
// class ProgressFragment extends StatelessWidget {
// ProgressFragment({Key key}) : super(key: key);
//
// UserProvider _userProvider;
//
// AllRequestsProvider _provider;
//
// @override
// Widget build(BuildContext context) {
// _userProvider = Provider.of<UserProvider>(context);
// bool isCurrentUserNotEngineer = (_userProvider.user.type != UsersTypes.engineer);
// return Consumer<AllRequestsProvider>(
// builder: (context, snapshot, _) {
// if (_provider == null) {
// _provider = snapshot;
// if (isCurrentUserNotEngineer) {
// _provider.getOpenRequests(reset: true);
// }
// _provider.getInProgressRequests(reset:true);
// _provider.getCompletedRequests(reset:true);
// }
//
// int total = (snapshot.completedRequests?.total?.count ?? 0) + (snapshot.inProgressRequests?.total?.count ?? 0) + (isCurrentUserNotEngineer ? (snapshot.openRequests?.total?.count ?? 0) : 0);
//
// final List<ChartData> chartData = [
// ChartData('Completed', snapshot.completedRequests?.total?.count?.toDouble() ?? 0.0, AppColor.greenStatus(context)),
// ChartData('In Progress', snapshot.inProgressRequests?.total?.count?.toDouble() ?? 0.0, AppColor.yellowStatus(context)),
// ];
//
// if (isCurrentUserNotEngineer) {
// chartData.insert(1, ChartData('Open', snapshot.openRequests?.total?.count?.toDouble() ?? 0.0, AppColor.blueStatus(context)));
// }
//
// return Column(
// children: [
// AspectRatio(
// aspectRatio: 398 / 237,
// child: Stack(
// alignment: Alignment.center,
// children: [
// SfCircularChart(
// tooltipBehavior: TooltipBehavior(
// enable: true,
// // elevation: 2,
// color: context.isDark ? Color(0xFF111427) : Color(0xffF7F9FB),
// textStyle: context.isDark ? null : TextStyle(color: Colors.black87, fontSize: 12),
// ),
// legend: Legend(
// //isVisible: true,
// ),
// series: <CircularSeries>[
// DoughnutSeries<ChartData, String>(
// dataSource: chartData,
// radius: "110%",
// innerRadius: "60%",
// pointColorMapper: (ChartData data, _) => data.color,
// xValueMapper: (ChartData data, _) => data.x,
// yValueMapper: (ChartData data, _) => data.y,
// dataLabelMapper: (ChartData data, _) => data.x,
// dataLabelSettings: DataLabelSettings(
// isVisible: true,
// textStyle: TextStyle(color: context.isDark ? Colors.white : Colors.black87, fontSize: 12),
// labelPosition: ChartDataLabelPosition.outside,
// //useSeriesColor: true,
// ),
// )
// ]).toShimmer(isShow: snapshot.isOpenLoading || snapshot.isInProgressLoading || snapshot.isCompleteLoading, radius: 300).paddingAll(12).toShadowContainer(context),
// Column(
// mainAxisSize: MainAxisSize.min,
// children: [
// Text(
// context.translation.total,
// style: AppTextStyles.heading5.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50),
// ),
// Text(
// "$total",
// style: AppTextStyles.heading6.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20),
// ),
// ],
// ),
// ],
// ),
// ).paddingOnly(start: 16, end: 16, bottom: 16),
// DefaultTabController(
// length: isCurrentUserNotEngineer ? 3 : 2,
// child: Column(
// children: <Widget>[
// Container(
// margin: const EdgeInsets.only(left: 16, right: 16),
// decoration: BoxDecoration(color: context.isDark ? AppColor.neutral50 : AppColor.neutral30, borderRadius: BorderRadius.circular(16)),
// child: TabBar(
// //controller: _tabController,
// padding: EdgeInsets.zero,
// labelColor: context.isDark ? AppColor.neutral30 : AppColor.neutral60,
// unselectedLabelColor: context.isDark ? AppColor.neutral10 : AppColor.neutral20,
// unselectedLabelStyle: AppTextStyles.bodyText,
// labelStyle: AppTextStyles.bodyText,
// indicatorPadding: const EdgeInsets.all(4),
// indicator: BoxDecoration(color: context.isDark ? AppColor.neutral60 : Theme.of(context).cardColor, borderRadius: BorderRadius.circular(13)),
// onTap: (index) {
// // setState(() {});
// },
// tabs: [
// if (isCurrentUserNotEngineer) Tab(text: context.translation.open, height: 57.toScreenHeight),
// Tab(text: context.translation.inProgress, height: 57.toScreenHeight),
// Tab(text: context.translation.completed, height: 57.toScreenHeight),
// ],
// ),
// ),
// 8.height,
// TabBarView(
// children: [
// if (isCurrentUserNotEngineer) RequestItemViewList(snapshot.openRequests?.requestsDetails ?? [], snapshot.isOpenLoading),
// RequestItemViewList(snapshot.inProgressRequests?.requestsDetails ?? [], snapshot.isInProgressLoading),
// RequestItemViewList(snapshot.completedRequests?.requestsDetails ?? [], snapshot.isCompleteLoading),
// ],
// ).expanded,
// ],
// ),
// ).expanded,
// ],
// );
// },
// );
// }
// }
//
// class ChartData {
// ChartData(this.x, this.y, this.color);
//
// final String x;
// final double y;
// final Color color;
// }
//
//
import 'package:flutter/material.dart';
import 'package:pie_chart/pie_chart.dart';
import 'package:provider/provider.dart';
import 'package:test_sa/dashboard_latest/dashboard_provider.dart';
import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/extensions/text_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart';
import 'package:test_sa/new_views/app_style/app_color.dart';
import '../../controllers/providers/api/user_provider.dart';
import '../../models/enums/user_types.dart';
class ProgressFragment extends StatelessWidget {
ProgressFragment({Key? key}) : super(key: key);
late UserProvider _userProvider;
@override
Widget build(BuildContext context) {
_userProvider = Provider.of<UserProvider>(context);
bool isCurrentUserIsNurse = (_userProvider.user?.type == UsersTypes.normal_user);
return Consumer<DashBoardProvider>(
builder: (context, snapshot, _) {
int total = 0;
List<ChartData> chartData = [];
if (isCurrentUserIsNurse) {
total = (snapshot.dashboardCount?.data?.countComplete ?? 0) + (snapshot.dashboardCount?.data?.countInprogress ?? 0) + (snapshot.dashboardCount?.data?.countOpen ?? 0);
chartData = [
ChartData('Acknowledged', snapshot.dashboardCount?.data?.countComplete?.toDouble() ?? 0.0, AppColor.green70),
ChartData('Open', snapshot.dashboardCount?.data?.countOpen?.toDouble() ?? 0.0, AppColor.blueStatus(context)),
ChartData('In Progress', snapshot.dashboardCount?.data?.countInprogress?.toDouble() ?? 0.0, AppColor.orange70),
];
} else {
total = (snapshot.dashboardCount?.data?.countComplete ?? 0) + (snapshot.dashboardCount?.data?.countInprogress ?? 0) + (snapshot.dashboardCount?.data?.countOpen ?? 0);
chartData = [
ChartData('Completed', snapshot.dashboardCount?.data?.countComplete?.toDouble() ?? 0.0, AppColor.green70),
ChartData('Open', snapshot.dashboardCount?.data?.countOpen?.toDouble() ?? 0.0, AppColor.blueStatus(context)),
ChartData('In Progress', snapshot.dashboardCount?.data?.countInprogress?.toDouble() ?? 0.0, AppColor.orange70),
];
}
//
// int total =
// (snapshot.dashboardCount?.data?.countComplete ?? 0) + (snapshot.inProgressRequests?.total?.count ?? 0) + (isCurrentUserNotEngineer ? (snapshot.openRequests?.total?.count ?? 0) : 0);
//
// final List<ChartData> chartData = [
// ChartData('Completed', snapshot.completedRequests?.total?.count?.toDouble() ?? 0.0, AppColor.green70),
// // snapshot.openRequests?.total?.count!=0? ChartData('Open', snapshot.openRequests?.total?.count?.toDouble() ?? 0.0, AppColor.blueStatus(context)),
// ChartData('In Progress', snapshot.inProgressRequests?.total?.count?.toDouble() ?? 0.0, AppColor.orange70),
// ];
//
// if (isCurrentUserIsNurse) {
// chartData.insert(1, ChartData('Open', snapshot.openRequests?.total?.count?.toDouble() ?? 0.0, AppColor.blueStatus(context)));
// }
return Column(
children: [
AspectRatio(
aspectRatio: 398 / 237,
child: Stack(
alignment: Alignment.center,
children: [
PieChart(
dataMap: {for (var v in chartData) v.x: v.y},
animationDuration: const Duration(milliseconds: 750),
chartLegendSpacing: 32,
chartRadius: MediaQuery.of(context).size.width / 3.2,
colorList: chartData.map((element) => element.color).toList(),
initialAngleInDegree: 270,
chartType: ChartType.ring,
ringStrokeWidth: 32,
centerWidget: Column(
mainAxisSize: MainAxisSize.min,
children: [
Text(
context.translation.total,
style: AppTextStyles.heading5.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50),
),
Text(
"$total",
style: AppTextStyles.heading6.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20),
),
],
),
legendOptions: const LegendOptions(
showLegendsInRow: false,
legendPosition: LegendPosition.right,
showLegends: true,
legendTextStyle: TextStyle(
fontWeight: FontWeight.w500,
),
),
chartValuesOptions: const ChartValuesOptions(
showChartValueBackground: false,
showChartValues: false,
showChartValuesInPercentage: false,
showChartValuesOutside: false,
decimalPlaces: 1,
),
).toShimmer(isShow: snapshot.isAllCountLoading, radius: 250,context: context).paddingAll(0).toShadowContainer(context),
],
),
),
],
).paddingOnly(start: 16, end: 16);
},
);
}
}
class ChartData {
ChartData(this.x, this.y, this.color);
final String x;
final double y;
final Color color;
}