From 9ce5ca2f09507d442f8ed9a88cc96425200549b1 Mon Sep 17 00:00:00 2001 From: zaid_daoud Date: Thu, 9 Nov 2023 09:49:55 +0300 Subject: [PATCH 1/3] Improvements --- .../device_transfer_details.dart | 186 +++++++++--------- lib/views/pages/user/land_page.dart | 17 +- .../device_trancfer/device_transfer_item.dart | 67 +++---- .../widgets/gas_refill/gas_refill_item.dart | 2 +- 4 files changed, 126 insertions(+), 146 deletions(-) diff --git a/lib/views/pages/device_transfer/device_transfer_details.dart b/lib/views/pages/device_transfer/device_transfer_details.dart index b378496..bc34887 100644 --- a/lib/views/pages/device_transfer/device_transfer_details.dart +++ b/lib/views/pages/device_transfer/device_transfer_details.dart @@ -1,7 +1,6 @@ import 'package:flutter/material.dart'; import 'package:flutter_svg/svg.dart'; import 'package:provider/provider.dart'; -import 'package:test_sa/controllers/localization/localization.dart'; import 'package:test_sa/controllers/providers/api/asset_transfer_provider.dart'; import 'package:test_sa/controllers/providers/api/user_provider.dart'; import 'package:test_sa/extensions/context_extension.dart'; @@ -12,11 +11,8 @@ import 'package:test_sa/models/device/asset_transfer.dart'; import 'package:test_sa/views/app_style/colors.dart'; import 'package:test_sa/views/app_style/sizing.dart'; import 'package:test_sa/views/pages/device_transfer/update_device_transfer.dart'; -import 'package:test_sa/views/widgets/buttons/app_back_button.dart'; -import 'package:test_sa/views/widgets/buttons/app_small_button.dart'; import 'package:test_sa/views/widgets/loaders/app_loading.dart'; import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; -import 'package:test_sa/views/widgets/requests/info_row.dart'; import '../../../extensions/text_extensions.dart'; import '../../../models/enums/user_types.dart'; @@ -73,73 +69,87 @@ class _DeviceTransferDetailsState extends State { child: Column( children: [ _buildDetailsCard( - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row( - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Row( - children: [ - /// TBD - // StatusLabel( - // label: "", - // id: 0, - // textColor: AColors.getPriorityStatusTextColor(0), - // backgroundColor: AColors.getPriorityStatusColor(0)), - 8.width, - /// TBD - //StatusLabel(label: '', textColor: AColors.getRequestStatusTextColor(0), backgroundColor: AColors.getRequestStatusColor(0)), - ], - ), - 1.width.expanded, - Text(widget.model.createdOn != null ?widget.model.createdOn.toServiceRequestCardFormat:"", textAlign: TextAlign.end, style: AppTextStyles.tinyFont.copyWith(color: const Color(0xFF3B3D4A))), - ], - ), - 8.height, - Text(context.translation.transferDetails, style: AppTextStyles.heading5.copyWith(color: const Color(0xFF3B3D4A))), - 8.height, - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - _buildTextWidget('${context.translation.assetName} : ${_model.assetName}'), - _buildTextWidget('${context.translation.assetNumber} : ${_model.assetNumber}'), - _buildTextWidget('${context.translation.model} : ${_model.modelName}'), - _buildTextWidget('${context.translation.sn} : ${_model.assetSerialNo}'), - ], - ), - 8.height, - ], - ).paddingAll(14) + Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + Text(context.translation.transferDetails, style: AppTextStyles.heading5.copyWith(color: const Color(0xFF3B3D4A))), + 8.height, + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + _buildTextWidget('${context.translation.assetName} : ${_model.assetName}'), + _buildTextWidget('${context.translation.assetNumber} : ${_model.assetNumber}'), + _buildTextWidget('${context.translation.model} : ${_model.modelName}'), + _buildTextWidget('${context.translation.sn} : ${_model.assetSerialNo}'), + ], + ), + 8.height, + ], + ).expanded, + Column( + crossAxisAlignment: CrossAxisAlignment.end, + children: [ + /// TBD + // Row( + // children: [ + // /// TBD + // // StatusLabel( + // // label: "", + // // id: 0, + // // textColor: AColors.getPriorityStatusTextColor(0), + // // backgroundColor: AColors.getPriorityStatusColor(0)), + // 8.width, + // + // /// TBD + // //StatusLabel(label: '', textColor: AColors.getRequestStatusTextColor(0), backgroundColor: AColors.getRequestStatusColor(0)), + // ], + // ), + 1.width, + Text(widget.model.createdOn != null ? widget.model.createdOn.toServiceRequestCardFormat : "", + textAlign: TextAlign.end, style: AppTextStyles.tinyFont.copyWith(color: const Color(0xFF3B3D4A))), + ], + ), + ], + ).paddingAll(14), ), // sender card _buildCard( isSender: true, - site: _model.senderSiteName??"", + site: _model.senderSiteName ?? "", + /// TBD - unit: _model.senderDepartmentName??"", - comment: _model.senderComment??"", + unit: _model.senderDepartmentName ?? "", + comment: _model.senderComment ?? "", + /// TBD - statusLabel: _model.senderMachineStatusName != null? StatusLabel( - label: _model.senderMachineStatusName, - id: _model.senderMachineStatusId, - textColor: AColors.getRequestStatusTextColor(getIdstatus(_model.senderMachineStatusName)), - backgroundColor: AColors.getRequestStatusColor(getIdstatus(_model.senderMachineStatusName))):null, + statusLabel: _model.senderMachineStatusName != null + ? StatusLabel( + label: _model.senderMachineStatusName, + id: _model.senderMachineStatusId, + textColor: AColors.getRequestStatusTextColor(getIdstatus(_model.senderMachineStatusName)), + backgroundColor: AColors.getRequestStatusColor(getIdstatus(_model.senderMachineStatusName))) + : null, ), // receiver card _buildCard( - isSender: false, - site: _model.destSiteName??"", + isSender: false, + site: _model.destSiteName ?? "", + /// TBD - unit: _model.destDepartmentName??"", - comment: _model.receiverComment??"", + unit: _model.destDepartmentName ?? "", + comment: _model.receiverComment ?? "", + /// TBD - statusLabel: _model.receiverMachineStatusName != null ? StatusLabel( - label: _model.receiverMachineStatusName??"", - id: _model.receiverMachineStatusId, - textColor: AColors.getRequestStatusTextColor(getIdstatus(_model.receiverMachineStatusName)), - backgroundColor: AColors.getRequestStatusColor(getIdstatus(_model.receiverMachineStatusName))):null, + statusLabel: _model.receiverMachineStatusName != null + ? StatusLabel( + label: _model.receiverMachineStatusName ?? "", + id: _model.receiverMachineStatusId, + textColor: AColors.getRequestStatusTextColor(getIdstatus(_model.receiverMachineStatusName)), + backgroundColor: AColors.getRequestStatusColor(getIdstatus(_model.receiverMachineStatusName))) + : null, ), ], ), @@ -152,7 +162,7 @@ class _DeviceTransferDetailsState extends State { ); } - _buildDetailsCard(Widget widget){ + _buildDetailsCard(Widget widget) { return Container( decoration: BoxDecoration( color: Colors.white, @@ -162,13 +172,14 @@ class _DeviceTransferDetailsState extends State { ).paddingOnly(top: 14, start: 14, end: 14); } - _buildTextWidget(String text){ + _buildTextWidget(String text) { return Text( - text, style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)), + text, + style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)), ); } - _buildCard({@required String site, @required String unit, @required String comment, @required bool isSender, StatusLabel statusLabel}){ + _buildCard({@required String site, @required String unit, @required String comment, @required bool isSender, StatusLabel statusLabel}) { return Container( decoration: BoxDecoration( color: Colors.white, @@ -183,13 +194,12 @@ class _DeviceTransferDetailsState extends State { Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - statusLabel??Container(), + statusLabel ?? Container(), 8.height, - Text(isSender?context.translation.senderDetails:context.translation.receiverDetails, - style: AppTextStyles.heading5.copyWith(color: const Color(0xFF3B3D4A))), + Text(isSender ? context.translation.senderDetails : context.translation.receiverDetails, style: AppTextStyles.heading5.copyWith(color: const Color(0xFF3B3D4A))), ], ), - if (_userProvider.user?.type == UsersTypes.engineer) + if ((_userProvider.user?.type == UsersTypes.engineer) && (isSender ? _model.senderMachineStatusName != "Closed" : _model.receiverMachineStatusName != "Closed")) CircleAvatar( radius: 25, backgroundColor: AppColor.neutral30, @@ -201,26 +211,13 @@ class _DeviceTransferDetailsState extends State { child: SvgPicture.asset('assets/images/update.svg'), ), ), - ).onPress( - isSender ? _model.senderMachineStatusName == "Closed" - ? null - : () { - Navigator.of(context).push(MaterialPageRoute( - builder: (_) => UpdateDeviceTransfer( - model: _model, - isSender: isSender, - ))); - } - : _model.receiverMachineStatusName == "Closed" - ? null - : () { - Navigator.of(context).push(MaterialPageRoute( - builder: (_) => UpdateDeviceTransfer( - model: _model, - isSender: isSender, - ))); - }), - + ).onPress(isSender + ? () { + Navigator.of(context).push(MaterialPageRoute(builder: (_) => UpdateDeviceTransfer(model: _model, isSender: isSender))); + } + : () { + Navigator.of(context).push(MaterialPageRoute(builder: (_) => UpdateDeviceTransfer(model: _model, isSender: isSender))); + }), ], ), Column( @@ -239,19 +236,18 @@ class _DeviceTransferDetailsState extends State { ).paddingAll(14), ).paddingOnly(top: 14, start: 14, end: 14); } - - int getIdstatus(String status){ - switch(status){ + + int getIdstatus(String status) { + switch (status) { case "Closed": - return 3 ; + return 3; break; case "Open": - return 1 ; + return 1; break; case "In Progress": return 2; break; } -} - + } } diff --git a/lib/views/pages/user/land_page.dart b/lib/views/pages/user/land_page.dart index 3afdd1a..d0fd278 100644 --- a/lib/views/pages/user/land_page.dart +++ b/lib/views/pages/user/land_page.dart @@ -15,7 +15,6 @@ import 'package:test_sa/new_views/pages/new_gas_refill_request_page.dart'; import 'package:test_sa/views/app_style/colors.dart'; import 'package:test_sa/views/app_style/sizing.dart'; import 'package:test_sa/views/pages/device_transfer/track_device_transfer.dart'; -import 'package:test_sa/views/pages/sub_workorder/search_sub_workorder_page.dart'; import 'package:test_sa/views/pages/user/gas_refill/track_gas_refill.dart'; import 'package:test_sa/views/pages/user/requests/create_service_request_page.dart'; import 'package:test_sa/views/pages/user/visits/regular_visits_page.dart'; @@ -212,14 +211,14 @@ class _LandPageState extends State { Navigator.of(context).pushNamed(TrackDeviceTransferPage.id); }, ), - if (_userProvider?.user != null && _userProvider?.user?.type != UsersTypes.normal_user) - LandPageItem( - text: "Create Sub Work Order", - svgPath: "assets/images/sub_workorder_icon.svg", - onPressed: () { - Navigator.of(context).pushNamed(SearchSubWorkOrderPage.id); - }, - ), + // if (_userProvider?.user != null && _userProvider?.user?.type != UsersTypes.normal_user) + // LandPageItem( + // text: "Create Sub Work Order", + // svgPath: "assets/images/sub_workorder_icon.svg", + // onPressed: () { + // Navigator.of(context).pushNamed(SearchSubWorkOrderPage.id); + // }, + // ), ], ), ], diff --git a/lib/views/widgets/device_trancfer/device_transfer_item.dart b/lib/views/widgets/device_trancfer/device_transfer_item.dart index e928adc..3fd7749 100644 --- a/lib/views/widgets/device_trancfer/device_transfer_item.dart +++ b/lib/views/widgets/device_trancfer/device_transfer_item.dart @@ -4,11 +4,8 @@ import 'package:test_sa/extensions/int_extensions.dart'; import 'package:test_sa/extensions/string_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/models/device/asset_transfer.dart'; -import 'package:test_sa/views/app_style/sizing.dart'; import '../../../extensions/text_extensions.dart'; -import '../../app_style/colors.dart'; -import '../requests/request_status.dart'; class DeviceTransferItem extends StatelessWidget { final int index; @@ -19,41 +16,12 @@ class DeviceTransferItem extends StatelessWidget { @override Widget build(BuildContext context) { - - return Padding( - padding: const EdgeInsets.symmetric(vertical: 4), - child: ElevatedButton( - style: ElevatedButton.styleFrom( - elevation: 0, - padding: const EdgeInsets.symmetric(vertical: 8, horizontal: 8), - backgroundColor: Colors.white, - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(AppStyle.getBorderRadius(context)), - ), - ), - onPressed: () { - onPressed(item); - }, - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, + return Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Column( + crossAxisAlignment: CrossAxisAlignment.stretch, children: [ - Row( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - /// TBD - // StatusLabel( - // label: '', - // id: 0, - // textColor: AColors.getPriorityStatusTextColor(0), - // backgroundColor: AColors.getPriorityStatusColor(0)), - 8.width, - /// TBD - //StatusLabel(label: '', textColor: AColors.getRequestStatusTextColor(0), backgroundColor: AColors.getRequestStatusColor(0)), - 1.width.expanded, - Text(item.createdOn != null ?item.createdOn.toServiceRequestCardFormat:"", textAlign: TextAlign.end, style: AppTextStyles.tinyFont.copyWith(color: const Color(0xFF3B3D4A))), - ], - ), - 8.height, Text(context.translation.deviceTransferRequest, style: AppTextStyles.heading5.copyWith(color: const Color(0xFF3B3D4A))), Text( '${context.translation.from} : ${item.senderAssignedEmployeeName}', @@ -78,10 +46,27 @@ class DeviceTransferItem extends StatelessWidget { size: 14, ) ], - ), + ).onPress(() => onPressed(item)), + ], + ).expanded, + Column( + crossAxisAlignment: CrossAxisAlignment.end, + children: [ + /// TBD + // StatusLabel( + // label: '', + // id: 0, + // textColor: AColors.getPriorityStatusTextColor(0), + // backgroundColor: AColors.getPriorityStatusColor(0)), + // 8.width, + + /// TBD + //StatusLabel(label: '', textColor: AColors.getRequestStatusTextColor(0), backgroundColor: AColors.getRequestStatusColor(0)), + 1.width, + Text(item.createdOn != null ? item.createdOn.toServiceRequestCardFormat : "", textAlign: TextAlign.end, style: AppTextStyles.tinyFont.copyWith(color: const Color(0xFF3B3D4A))), ], - ) - ), - ); + ), + ], + ).toShadowContainer(context).paddingOnly(bottom: 8); } } diff --git a/lib/views/widgets/gas_refill/gas_refill_item.dart b/lib/views/widgets/gas_refill/gas_refill_item.dart index 5ab6501..f4392fc 100644 --- a/lib/views/widgets/gas_refill/gas_refill_item.dart +++ b/lib/views/widgets/gas_refill/gas_refill_item.dart @@ -61,7 +61,7 @@ class GasRefillItem extends StatelessWidget { size: 14, ) ], - ), + ).onPress(() => onPressed(item)), // Row( // children: [ // Expanded( From 17e62a1671f20de5778900d395f9dc6a1c7bc0c9 Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Thu, 9 Nov 2023 10:33:24 +0300 Subject: [PATCH 2/3] dashboard progress view added. --- .../progress_fragment.dart | 120 ++++++++++++++---- .../pages/land_page/dashboard_page.dart | 2 +- .../land_page/requests/asset_item_view.dart | 58 +++++++++ .../requests/gas_refill_item_view.dart | 64 ++++++++++ .../land_page/requests/ppm_item_view.dart | 72 +++++++++++ .../requests/service_request_item_view.dart | 84 ++++++++++++ 6 files changed, 377 insertions(+), 23 deletions(-) create mode 100644 lib/new_views/pages/land_page/requests/asset_item_view.dart create mode 100644 lib/new_views/pages/land_page/requests/gas_refill_item_view.dart create mode 100644 lib/new_views/pages/land_page/requests/ppm_item_view.dart create mode 100644 lib/new_views/pages/land_page/requests/service_request_item_view.dart diff --git a/lib/new_views/pages/land_page/dashboard_fragments/progress_fragment.dart b/lib/new_views/pages/land_page/dashboard_fragments/progress_fragment.dart index 3414bb4..6eef18d 100644 --- a/lib/new_views/pages/land_page/dashboard_fragments/progress_fragment.dart +++ b/lib/new_views/pages/land_page/dashboard_fragments/progress_fragment.dart @@ -1,14 +1,21 @@ import 'package:flutter/material.dart'; import 'package:pie_chart/pie_chart.dart'; +import 'package:provider/provider.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/models/all_requests_and_count_model.dart'; import 'package:test_sa/new_views/app_style/app_color.dart'; +import 'package:test_sa/new_views/pages/land_page/requests/asset_item_view.dart'; +import 'package:test_sa/new_views/pages/land_page/requests/gas_refill_item_view.dart'; +import 'package:test_sa/new_views/pages/land_page/requests/ppm_item_view.dart'; +import 'package:test_sa/new_views/pages/land_page/requests/service_request_item_view.dart'; import 'package:test_sa/views/app_style/colors.dart'; class ProgressFragment extends StatelessWidget { - const ProgressFragment({Key key}) : super(key: key); + ProgressFragment({Key key}) : super(key: key); @override Widget build(BuildContext context) { @@ -17,26 +24,95 @@ class ProgressFragment extends StatelessWidget { "In Progress": 12, "Open": 12, }; - return Column( - children: [ - PieChart( - dataMap: statuses, - animationDuration: const Duration(milliseconds: 500), - chartRadius: 190.toScreenWidth, - colorList: [AColors.statusGreen, AColors.statusBlue, AColors.statusYellowLight], - initialAngleInDegree: 270, - chartType: ChartType.ring, - ringStrokeWidth: 40.toScreenWidth, - centerText: "Total\n20", - centerTextStyle: AppTextStyles.heading5.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50), - legendOptions: const LegendOptions(showLegends: false), - chartValuesOptions: ChartValuesOptions( - chartValueBackgroundColor: Colors.transparent, - chartValueStyle: AppTextStyles.heading6.copyWith(color: AppColor.neutral20), - showChartValuesOutside: false, - ), - ).paddingAll(8).toShadowContainer, - ], - ).paddingOnly(start: 16, end: 16); + return Consumer( + builder: (context, snapshot, _) => Column( + children: [ + AspectRatio( + aspectRatio: 398 / 237, + child: PieChart( + dataMap: statuses, + animationDuration: const Duration(milliseconds: 500), + chartRadius: 190.toScreenWidth, + colorList: [AColors.statusGreen, AColors.statusBlue, AColors.statusYellowLight], + initialAngleInDegree: 270, + chartType: ChartType.ring, + ringStrokeWidth: 40.toScreenWidth, + centerText: "Total\n20", + centerTextStyle: AppTextStyles.heading5.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50), + legendOptions: const LegendOptions(showLegends: false), + chartValuesOptions: ChartValuesOptions( + chartValueBackgroundColor: Colors.transparent, + chartValueStyle: AppTextStyles.heading6.copyWith(color: AppColor.neutral20), + showChartValuesOutside: true, + ), + ).toShimmer(isShow: snapshot.isOpenLoading || snapshot.isInProgressLoading || snapshot.isCloseLoading, radius: 300).paddingAll(12).toShadowContainer, + ).paddingOnly(start: 16, end: 16, bottom: 16), + DefaultTabController( + length: 3, + child: Column( + children: [ + Container( + margin: const EdgeInsets.only(left: 16, right: 16), + decoration: BoxDecoration(color: AppColor.neutral30, borderRadius: BorderRadius.circular(16)), + child: TabBar( + //controller: _tabController, + padding: EdgeInsets.zero, + labelColor: AppColor.neutral60, + unselectedLabelColor: AppColor.neutral20, + unselectedLabelStyle: AppTextStyles.bodyText.copyWith(color: const Color(0xFF757575)), + labelStyle: AppTextStyles.bodyText.copyWith(color: AppColor.neutral60), + indicatorPadding: const EdgeInsets.all(4), + indicator: BoxDecoration(color: Theme.of(context).cardColor, borderRadius: BorderRadius.circular(13)), + onTap: (index) { + // setState(() {}); + }, + tabs: [ + Tab(text: "Open", height: 57.toScreenHeight), + Tab(text: "In Progress", height: 57.toScreenHeight), + Tab(text: "Completed", height: 57.toScreenHeight), + ], + ), + ), + 8.height, + TabBarView( + children: [ + requestItemView(snapshot.openRequests?.requestsDetails ?? [], snapshot.isOpenLoading), + requestItemView(snapshot.inProgressRequests?.requestsDetails ?? [], snapshot.isInProgressLoading), + requestItemView(snapshot.closeRequests?.requestsDetails ?? [], snapshot.isCloseLoading), + ], + ).expanded, + ], + ), + ).expanded, + ], + ), + ); + } + + Widget requestItemView(List list, bool isLoading) { + return ListView.separated( + padding: const EdgeInsets.all(16), + itemBuilder: (cxt, index) { + bool isServiceRequest = list[index].nameOfType == "ServiceRequest"; + bool isGasRefill = list[index].nameOfType == "GasRefill"; + bool isAssetTransfer = list[index].nameOfType == "AssetTransfer"; + bool isPPMs = list[index].nameOfType == "PPMs"; + + return isServiceRequest + ? ServiceRequestItemView(list[index]) + : isGasRefill + ? GasRefillItemView(list[index]) + : isPPMs + ? PpmItemView(list[index]) + : isAssetTransfer + ? AssetItemView(list[index]) + : Container( + height: 100, + width: double.infinity, + color: Colors.grey, + ); + }, + separatorBuilder: (cxt, index) => 8.height, + itemCount: list.length); } } diff --git a/lib/new_views/pages/land_page/dashboard_page.dart b/lib/new_views/pages/land_page/dashboard_page.dart index 4bf1a97..722a6b6 100644 --- a/lib/new_views/pages/land_page/dashboard_page.dart +++ b/lib/new_views/pages/land_page/dashboard_page.dart @@ -122,7 +122,7 @@ class _DashboardPageState extends State { onPageChanged: (index) => setState(() => _currentPage = index), children: [ RequestsFragment(), - const ProgressFragment(), + ProgressFragment(), RecentActivitiesFragment(), ], ).expanded, diff --git a/lib/new_views/pages/land_page/requests/asset_item_view.dart b/lib/new_views/pages/land_page/requests/asset_item_view.dart new file mode 100644 index 0000000..da27046 --- /dev/null +++ b/lib/new_views/pages/land_page/requests/asset_item_view.dart @@ -0,0 +1,58 @@ +import 'package:flutter/material.dart'; +import 'package:test_sa/controllers/api_routes/urls.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/models/all_requests_and_count_model.dart'; +import 'package:test_sa/models/device/asset.dart'; + +class AssetItemView extends StatelessWidget { + final RequestsDetails request; + + const AssetItemView(this.request, {Key key}) : super(key: key); + + @override + Widget build(BuildContext context) { + return Column( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: [ + Text( + "Device Transfer Request", + maxLines: 2, + style: AppTextStyles.heading5.copyWith(color: Color(0xFF3B3D4A)), + ), + Text( + "${context.translation.from} : ${request.assetTransferFrom}", + style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)), + ), + Text( + "${context.translation.to} : ${request.assetTransferTo}", + style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)), + ), + ], + ), + Row( + mainAxisSize: MainAxisSize.min, + children: [ + Text( + context.translation.viewDetails, + style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF4A8DB7)), + ), + 4.width, + const Icon( + Icons.arrow_forward, + color: Color(0xFF4A8DB7), + size: 14, + ) + ], + ), + ], + ).toShadowContainer.onPress(() {}); + } +} diff --git a/lib/new_views/pages/land_page/requests/gas_refill_item_view.dart b/lib/new_views/pages/land_page/requests/gas_refill_item_view.dart new file mode 100644 index 0000000..9964f1c --- /dev/null +++ b/lib/new_views/pages/land_page/requests/gas_refill_item_view.dart @@ -0,0 +1,64 @@ +import 'package:flutter/material.dart'; +import 'package:test_sa/extensions/context_extension.dart'; +import 'package:test_sa/extensions/int_extensions.dart'; +import 'package:test_sa/extensions/string_extensions.dart'; +import 'package:test_sa/extensions/text_extensions.dart'; +import 'package:test_sa/extensions/widget_extensions.dart'; +import 'package:test_sa/models/all_requests_and_count_model.dart'; +import 'package:test_sa/views/app_style/sizing.dart'; + +class GasRefillItemView extends StatelessWidget { + final RequestsDetails request; + + const GasRefillItemView(this.request, {Key key}) : super(key: key); + + @override + Widget build(BuildContext context) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // Row( + // crossAxisAlignment: CrossAxisAlignment.start, + // children: [ + // /// TBD + // // StatusLabel( + // // label: , + // // id: , + // // textColor: AColors.getPriorityStatusTextColor(), + // // backgroundColor: AColors.getPriorityStatusColor()), + // 8.width, + // StatusLabel(label: item.status.name, textColor: AColors.getRequestStatusTextColor(item.status.value), backgroundColor: AColors.getRequestStatusColor(item.status.value)), + // 1.width.expanded, + // Text(item.startDate != null ? item.startDate.toServiceRequestCardFormat : "", textAlign: TextAlign.end, style: AppTextStyles.tinyFont.copyWith(color: const Color(0xFF3B3D4A))), + // ], + // ), + // 8.height, + Text(context.translation.gasRefillRequest, style: AppTextStyles.heading5.copyWith(color: const Color(0xFF3B3D4A))), + Text( + '${context.translation.gasType}: ${request.gasType}', + style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)), + ), + Text( + '${context.translation.site}: ${request.site}', + style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)), + ), + 8.height, + Row( + mainAxisSize: MainAxisSize.min, + children: [ + Text( + context.translation.viewDetails, + style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF4A8DB7)), + ), + 4.width, + const Icon( + Icons.arrow_forward, + color: Color(0xFF4A8DB7), + size: 14, + ) + ], + ), + ], + ).toShadowContainer.onPress(() {}); + } +} diff --git a/lib/new_views/pages/land_page/requests/ppm_item_view.dart b/lib/new_views/pages/land_page/requests/ppm_item_view.dart new file mode 100644 index 0000000..4cf449c --- /dev/null +++ b/lib/new_views/pages/land_page/requests/ppm_item_view.dart @@ -0,0 +1,72 @@ +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; +import 'package:test_sa/extensions/context_extension.dart'; +import 'package:test_sa/extensions/int_extensions.dart'; +import 'package:test_sa/extensions/string_extensions.dart'; +import 'package:test_sa/extensions/text_extensions.dart'; +import 'package:test_sa/extensions/widget_extensions.dart'; +import 'package:test_sa/models/all_requests_and_count_model.dart'; +import 'package:test_sa/models/enums/user_types.dart'; +import 'package:test_sa/models/visits/visit.dart'; +import 'package:test_sa/views/pages/user/visits/visit_details.dart'; + +class PpmItemView extends StatelessWidget { + final RequestsDetails request; + + const PpmItemView(this.request, {Key key}) : super(key: key); + + @override + Widget build(BuildContext context) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // Row( + // children: [ + // // StatusLabel( + // // label: visit.priority.name, + // // id: visit.priority.id, + // // textColor: AColors.getPriorityStatusTextColor(visit.priority.id), + // // backgroundColor: AColors.getPriorityStatusColor(visit.priority.id)), + // // 8.width, + // StatusLabel( + // label: visit.status.name, + // id: visit.status.id, + // textColor: AColors.getRequestStatusTextColorByName(visit.status.name), + // backgroundColor: AColors.getRequestStatusColorByName(visit.status.name), + // ), + // 1.width.expanded, + // ], + // ), + // 8.height, + Text(context.translation.preventiveMaintenance, style: AppTextStyles.heading5.copyWith(color: const Color(0xFF3B3D4A))), + 8.height, + Text( + '${context.translation.assetNumber}: ${request.assetName}', + style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF757575)), + ), + Text( + '${context.translation.assetSN}: ${request.assetNo}', + style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF757575)), + ), + Text( + '${context.translation.code}: ${request.code}', + style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF757575)), + ), + 16.height, + Row( + mainAxisSize: MainAxisSize.min, + children: [ + Text( + context.translation.viewDetails, + style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF4A8DB7)), + ), + 4.width, + const Icon(Icons.arrow_forward, color: Color(0xFF4A8DB7), size: 14) + ], + ), + ], + ).toShadowContainer.onPress(() { + + }); + } +} diff --git a/lib/new_views/pages/land_page/requests/service_request_item_view.dart b/lib/new_views/pages/land_page/requests/service_request_item_view.dart new file mode 100644 index 0000000..d6652a4 --- /dev/null +++ b/lib/new_views/pages/land_page/requests/service_request_item_view.dart @@ -0,0 +1,84 @@ +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; +import 'package:test_sa/controllers/localization/localization.dart'; +import 'package:test_sa/controllers/providers/api/service_requests_provider.dart'; +import 'package:test_sa/controllers/providers/api/user_provider.dart'; +import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; +import 'package:test_sa/extensions/context_extension.dart'; +import 'package:test_sa/extensions/int_extensions.dart'; +import 'package:test_sa/extensions/string_extensions.dart'; +import 'package:test_sa/extensions/text_extensions.dart'; +import 'package:test_sa/extensions/widget_extensions.dart'; +import 'package:test_sa/models/all_requests_and_count_model.dart'; +import 'package:test_sa/models/enums/translation_keys.dart'; +import 'package:test_sa/models/service_request/service_request.dart'; +import 'package:test_sa/models/subtitle.dart'; +import 'package:test_sa/models/user.dart'; +import 'package:test_sa/views/app_style/colors.dart'; +import 'package:test_sa/views/widgets/requests/request_status.dart'; + +class ServiceRequestItemView extends StatelessWidget { + final RequestsDetails request; + + const ServiceRequestItemView(this.request, {Key key}) : super(key: key); + + @override + Widget build(BuildContext context) { + return Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // Row( + // crossAxisAlignment: CrossAxisAlignment.start, + // children: [ + // StatusLabel( + // label: request.priority.name, + // id: request.priority.id, + // textColor: AColors.getPriorityStatusTextColor(request.priority.id), + // backgroundColor: AColors.getPriorityStatusColor(request.priority.id)), + // 8.width, + // StatusLabel(label: request.statusLabel, textColor: AColors.getRequestStatusTextColor(request.statusValue), backgroundColor: AColors.getRequestStatusColor(request.statusValue)), + // 1.width.expanded, + // Text(request.date.toServiceRequestCardFormat, textAlign: TextAlign.end, style: AppTextStyles.tinyFont.copyWith(color: const Color(0xFF3B3D4A))), + // ], + // ), + // 8.height, + Text(context.translation.serviceRequest, style: AppTextStyles.heading5.copyWith(color: const Color(0xFF3B3D4A))), + Text( + '${context.translation.assetName}: ${request.assetName}', + style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)), + ), + Text( + '${context.translation.assetNumber}: ${request.assetNo}', + style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)), + ), + Text( + '${context.translation.requestType}: ${request.requestType}', + style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)), + ), + Text( + '${context.translation.requestNo}: ${request.requestNo}', + style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)), + ), + 8.height, + Row( + mainAxisSize: MainAxisSize.min, + children: [ + Text( + context.translation.viewDetails, + style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF4A8DB7)), + ), + 4.width, + const Icon( + Icons.arrow_forward, + color: Color(0xFF4A8DB7), + size: 14, + ) + ], + ), + ], + ).toShadowContainer.onPress(() { + //onPressed(request); + }); + } +} From 2c8af8481494d374da00f04891fe784a86a0d480 Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Thu, 9 Nov 2023 11:03:13 +0300 Subject: [PATCH 3/3] dashboard progress view improvements --- lib/extensions/widget_extensions.dart | 13 +++++++++++++ .../dashboard_fragments/progress_fragment.dart | 6 ++++-- .../land_page/requests/asset_item_view.dart | 2 +- .../requests/gas_refill_item_view.dart | 2 +- .../pages/land_page/requests/ppm_item_view.dart | 6 ++---- .../requests/service_request_item_view.dart | 17 ++--------------- 6 files changed, 23 insertions(+), 23 deletions(-) diff --git a/lib/extensions/widget_extensions.dart b/lib/extensions/widget_extensions.dart index 941640d..cc74b21 100644 --- a/lib/extensions/widget_extensions.dart +++ b/lib/extensions/widget_extensions.dart @@ -35,6 +35,19 @@ extension WidgetExtensions on Widget { ) : this; + Widget toRequestShimmer(BuildContext context, bool isShow) => isShow + ? Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const SizedBox(width: 250, height: 24).toShimmer(isShow: isShow), + 8.height, + const SizedBox(width: 160, height: 16).toShimmer(isShow: isShow), + 8.height, + const SizedBox(width: 120, height: 18).toShimmer(isShow: isShow).toShimmer(isShow: isShow), + ], + ).toShadowContainer(context) + : this; + Widget toShadowContainer(BuildContext context) => Container( padding: const EdgeInsets.all(16), decoration: ShapeDecoration( diff --git a/lib/new_views/pages/land_page/dashboard_fragments/progress_fragment.dart b/lib/new_views/pages/land_page/dashboard_fragments/progress_fragment.dart index 6eef18d..f24ebff 100644 --- a/lib/new_views/pages/land_page/dashboard_fragments/progress_fragment.dart +++ b/lib/new_views/pages/land_page/dashboard_fragments/progress_fragment.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:pie_chart/pie_chart.dart'; + import 'package:provider/provider.dart'; import 'package:test_sa/controllers/providers/api/all_requests_provider.dart'; import 'package:test_sa/extensions/context_extension.dart'; @@ -45,7 +46,7 @@ class ProgressFragment extends StatelessWidget { chartValueStyle: AppTextStyles.heading6.copyWith(color: AppColor.neutral20), showChartValuesOutside: true, ), - ).toShimmer(isShow: snapshot.isOpenLoading || snapshot.isInProgressLoading || snapshot.isCloseLoading, radius: 300).paddingAll(12).toShadowContainer, + ).toShimmer(isShow: snapshot.isOpenLoading || snapshot.isInProgressLoading || snapshot.isCloseLoading, radius: 300).paddingAll(12).toShadowContainer(context), ).paddingOnly(start: 16, end: 16, bottom: 16), DefaultTabController( length: 3, @@ -93,6 +94,7 @@ class ProgressFragment extends StatelessWidget { return ListView.separated( padding: const EdgeInsets.all(16), itemBuilder: (cxt, index) { + if (isLoading) return SizedBox().toRequestShimmer(cxt, isLoading); bool isServiceRequest = list[index].nameOfType == "ServiceRequest"; bool isGasRefill = list[index].nameOfType == "GasRefill"; bool isAssetTransfer = list[index].nameOfType == "AssetTransfer"; @@ -113,6 +115,6 @@ class ProgressFragment extends StatelessWidget { ); }, separatorBuilder: (cxt, index) => 8.height, - itemCount: list.length); + itemCount: isLoading ? 6 : list.length); } } diff --git a/lib/new_views/pages/land_page/requests/asset_item_view.dart b/lib/new_views/pages/land_page/requests/asset_item_view.dart index da27046..836406c 100644 --- a/lib/new_views/pages/land_page/requests/asset_item_view.dart +++ b/lib/new_views/pages/land_page/requests/asset_item_view.dart @@ -53,6 +53,6 @@ class AssetItemView extends StatelessWidget { ], ), ], - ).toShadowContainer.onPress(() {}); + ).toShadowContainer(context).onPress(() {}); } } diff --git a/lib/new_views/pages/land_page/requests/gas_refill_item_view.dart b/lib/new_views/pages/land_page/requests/gas_refill_item_view.dart index 9964f1c..05dc164 100644 --- a/lib/new_views/pages/land_page/requests/gas_refill_item_view.dart +++ b/lib/new_views/pages/land_page/requests/gas_refill_item_view.dart @@ -59,6 +59,6 @@ class GasRefillItemView extends StatelessWidget { ], ), ], - ).toShadowContainer.onPress(() {}); + ).toShadowContainer(context).onPress(() {}); } } diff --git a/lib/new_views/pages/land_page/requests/ppm_item_view.dart b/lib/new_views/pages/land_page/requests/ppm_item_view.dart index 4cf449c..2d6054b 100644 --- a/lib/new_views/pages/land_page/requests/ppm_item_view.dart +++ b/lib/new_views/pages/land_page/requests/ppm_item_view.dart @@ -38,7 +38,7 @@ class PpmItemView extends StatelessWidget { // ], // ), // 8.height, - Text(context.translation.preventiveMaintenance, style: AppTextStyles.heading5.copyWith(color: const Color(0xFF3B3D4A))), + Text("PPMs Request", style: AppTextStyles.heading5.copyWith(color: const Color(0xFF3B3D4A))), 8.height, Text( '${context.translation.assetNumber}: ${request.assetName}', @@ -65,8 +65,6 @@ class PpmItemView extends StatelessWidget { ], ), ], - ).toShadowContainer.onPress(() { - - }); + ).toShadowContainer(context).onPress(() {}); } } diff --git a/lib/new_views/pages/land_page/requests/service_request_item_view.dart b/lib/new_views/pages/land_page/requests/service_request_item_view.dart index d6652a4..0c8bec4 100644 --- a/lib/new_views/pages/land_page/requests/service_request_item_view.dart +++ b/lib/new_views/pages/land_page/requests/service_request_item_view.dart @@ -1,21 +1,10 @@ import 'package:flutter/material.dart'; -import 'package:provider/provider.dart'; -import 'package:test_sa/controllers/localization/localization.dart'; -import 'package:test_sa/controllers/providers/api/service_requests_provider.dart'; -import 'package:test_sa/controllers/providers/api/user_provider.dart'; -import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/extensions/int_extensions.dart'; -import 'package:test_sa/extensions/string_extensions.dart'; import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/models/all_requests_and_count_model.dart'; -import 'package:test_sa/models/enums/translation_keys.dart'; -import 'package:test_sa/models/service_request/service_request.dart'; -import 'package:test_sa/models/subtitle.dart'; -import 'package:test_sa/models/user.dart'; -import 'package:test_sa/views/app_style/colors.dart'; -import 'package:test_sa/views/widgets/requests/request_status.dart'; + class ServiceRequestItemView extends StatelessWidget { final RequestsDetails request; @@ -77,8 +66,6 @@ class ServiceRequestItemView extends StatelessWidget { ], ), ], - ).toShadowContainer.onPress(() { - //onPressed(request); - }); + ).toShadowContainer(context).onPress(() { }); } }