From 701455d93947566a12f97be4462166f52bc758e1 Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Wed, 2 Oct 2024 11:01:05 +0300 Subject: [PATCH] ui and spare part improvement. --- lib/new_views/app_style/app_color.dart | 14 +- .../single_item_drop_down_menu.dart | 6 +- .../requests/service_request_item_view.dart | 4 +- .../service_request_bottomsheet.dart | 4 +- .../views/components/initial_visit_card.dart | 10 +- .../views/components/request_detail_view.dart | 4 +- .../asset_retired/verify_asset_detail.dart | 26 +- .../forms/spare_part/spare_part_request.dart | 257 +++++++++--------- 8 files changed, 161 insertions(+), 164 deletions(-) diff --git a/lib/new_views/app_style/app_color.dart b/lib/new_views/app_style/app_color.dart index 1cd1ef6c..66a1d70d 100644 --- a/lib/new_views/app_style/app_color.dart +++ b/lib/new_views/app_style/app_color.dart @@ -75,7 +75,7 @@ class AppColor { static const Color orange70 = Color(0xffFFC945); // static Color greenStatus(BuildContext context) => context.isDark ? const Color(0xff1FA269) : green50; - static Color greenStatus(BuildContext context) => context.isDark ? const Color(0xff54C166) : green70; + static Color greenStatus(BuildContext context) => context.isDark ? const Color(0xff54C166) : green70.withOpacity(.5); // static Color blueStatus(BuildContext context) => context.isDark ? primary40 : primary50; static Color blueStatus(BuildContext context) => context.isDark ? primary40 : primary90; @@ -101,6 +101,12 @@ class AppColor { return orange60; case "high priority": return white10; + case "yes": + return white10; + case "low priority": + return green15; + case "low": + return green15; default: return Colors.white; } @@ -152,6 +158,8 @@ class AppColor { return greenStatus(context); case "high priority": return redStatus(context); + case "yes": + return redStatus(context); case "low priority": return greenStatus(context); case "open": @@ -202,6 +210,8 @@ class AppColor { //low priority case 81: return Colors.white; + case 370: + return green15; case 82: //high priority return white10; @@ -215,6 +225,8 @@ class AppColor { //low priority case 81: return greenStatus(context); + case 370: + return greenStatus(context); //high priority case 82: return redStatus(context); diff --git a/lib/new_views/common_widgets/single_item_drop_down_menu.dart b/lib/new_views/common_widgets/single_item_drop_down_menu.dart index 8673277c..05ffb2a9 100644 --- a/lib/new_views/common_widgets/single_item_drop_down_menu.dart +++ b/lib/new_views/common_widgets/single_item_drop_down_menu.dart @@ -56,7 +56,6 @@ class _SingleItemDropDownMenuState element.identifier == widget.initialValue?.identifier); - print('result value i got is ${result?.length}'); if (result?.isNotEmpty ?? false) _selectedItem = result!.first as T?; if (widget.onSelect != null && (widget.initialValue?.identifier ?? "") != (_selectedItem?.identifier ?? "")) { widget.onSelect!(_selectedItem); // Non-null assertion after null check @@ -72,7 +71,6 @@ class _SingleItemDropDownMenuState oldWidget) { - if (widget.initialValue != null) { final result = (X == NullableLoadingProvider ? widget.staticData : provider?.items)?.where((element) => element.identifier == widget.initialValue?.identifier); if (result?.isNotEmpty ?? false) { @@ -140,7 +138,7 @@ class _SingleItemDropDownMenuState( context: context, title: context.translation.reason, diff --git a/lib/service_request_latest/views/components/initial_visit_card.dart b/lib/service_request_latest/views/components/initial_visit_card.dart index 265d79b7..defc6e2f 100644 --- a/lib/service_request_latest/views/components/initial_visit_card.dart +++ b/lib/service_request_latest/views/components/initial_visit_card.dart @@ -5,8 +5,6 @@ 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/helper_data_models/workorder/work_order_helper_models.dart'; -import 'package:test_sa/models/service_request/service_request.dart'; import 'package:test_sa/new_views/app_style/app_color.dart'; import 'package:test_sa/service_request_latest/request_detail_provider.dart'; import 'package:test_sa/service_request_latest/views/components/bottom_sheets/service_request_bottomsheet.dart'; @@ -17,7 +15,6 @@ class InitialVisitCard extends StatelessWidget { @override Widget build(BuildContext context) { return Consumer(builder: (context, RequestDetailProvider requestDetailProvider, snapshot) { - return Container( decoration: BoxDecoration( borderRadius: BorderRadius.circular(14), @@ -35,17 +32,14 @@ class InitialVisitCard extends StatelessWidget { style: AppTextStyles.heading6.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.black10), ), "edit_icon".toSvgAsset(height: 21, width: 21).onPress(() { - ServiceRequestBottomSheet.initialVisitBottomSheet(context: context); }), ]), 2.height, context.translation.visitDateAndTime.bodyText2(context).custom(color: AppColor.neutral120), - 8.height, + 12.height, if (requestDetailProvider.needVisitHelperModel?.comment != null) ...[ - requestDetailProvider.needVisitHelperModel!.comment!.bodyText2(context).custom( - color: AppColor.neutral120, - ), + requestDetailProvider.needVisitHelperModel!.comment!.bodyText2(context).custom(color: AppColor.neutral120), ] ], ), diff --git a/lib/service_request_latest/views/components/request_detail_view.dart b/lib/service_request_latest/views/components/request_detail_view.dart index 0b56dec7..e28d784d 100644 --- a/lib/service_request_latest/views/components/request_detail_view.dart +++ b/lib/service_request_latest/views/components/request_detail_view.dart @@ -89,8 +89,8 @@ class WorkOrderDetailView extends StatelessWidget { StatusLabel( radius: 4, label: workOrder.status!.name, - textColor: AppColor.getRequestStatusTextColor(context, workOrder.status!.id!), - backgroundColor: AppColor.getRequestStatusColor(context, workOrder.status!.id!), + textColor: AppColor.getHistoryLogStatusTextColorByName(workOrder.status!.name!), + backgroundColor: AppColor.getHistoryLogStatusColorByName(workOrder.status!.name!), ), 1.width.expanded, Column( diff --git a/lib/service_request_latest/views/forms/asset_retired/verify_asset_detail.dart b/lib/service_request_latest/views/forms/asset_retired/verify_asset_detail.dart index b77bae96..870726ea 100644 --- a/lib/service_request_latest/views/forms/asset_retired/verify_asset_detail.dart +++ b/lib/service_request_latest/views/forms/asset_retired/verify_asset_detail.dart @@ -4,11 +4,11 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:test_sa/controllers/providers/api/status_drop_down/report/service_report_fault_description_provider.dart'; import 'package:test_sa/extensions/context_extension.dart'; -import 'package:test_sa/models/device/asset.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/device/asset.dart'; import 'package:test_sa/models/fault_description.dart'; import 'package:test_sa/models/helper_data_models/workorder/work_order_helper_models.dart'; import 'package:test_sa/models/new_models/work_order_detail_model.dart'; @@ -24,6 +24,7 @@ import 'package:test_sa/service_request_latest/request_detail_provider.dart'; import 'package:test_sa/views/widgets/date_and_time/date_picker.dart'; import 'package:test_sa/views/widgets/equipment/pick_asset.dart'; import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; + import '../../../../../../models/lookup.dart'; import '../../../../../../new_views/common_widgets/default_app_bar.dart'; @@ -69,7 +70,7 @@ class _VerifyAssetDetailsState extends State with TickerProv _loanAvailabilityProvider = Provider.of(context, listen: false); _equipmentStatusProvider = Provider.of(context, listen: false); _reasonProvider?.serviceRequestId = _requestDetailProvider?.currentWorkOrder!.data!.requestId.toString(); - _faults = await Provider.of(context,listen: false).getFaultDescriptionList(assetId: _requestDetailProvider?.currentWorkOrder?.data?.asset?.id); + _faults = await Provider.of(context, listen: false).getFaultDescriptionList(assetId: _requestDetailProvider?.currentWorkOrder?.data?.asset?.id); _reasonProvider?.getDate(); _equipmentStatusProvider?.getDate(); _loanAvailabilityProvider?.getDate(); @@ -144,12 +145,13 @@ class _VerifyAssetDetailsState extends State with TickerProv }); }, ), - 8.height, + 12.height, SingleItemDropDownMenu( context: context, title: context.translation.loanAvailability, backgroundColor: AppColor.neutral100, height: 56.toScreenHeight, + showShadow: false, initialValue: requestDetailProvider.engineerUpdateWorkOrderHelperModel?.loanAvailability, onSelect: (status) { if (status != null) { @@ -174,7 +176,7 @@ class _VerifyAssetDetailsState extends State with TickerProv }); }, ), - 8.height, + 12.height, SingleItemDropDownMenu( context: context, title: context.translation.failureReason, @@ -188,27 +190,27 @@ class _VerifyAssetDetailsState extends State with TickerProv } }, ), - 8.height, + 12.height, SingleItemDropDownMenu( context: context, title: context.translation.faultDescription, backgroundColor: AppColor.neutral100, staticData: _faults, - showShadow: true, - initialValue: requestDetailProvider.engineerUpdateWorkOrderHelperModel?.faultDescription, + showShadow: false, + initialValue: requestDetailProvider.engineerUpdateWorkOrderHelperModel?.faultDescription, onSelect: (fault) { requestDetailProvider.engineerUpdateWorkOrderHelperModel?.faultDescription = fault; requestDetailProvider.engineerUpdateWorkOrderHelperModel?.solution = fault?.workPerformed; - if(mounted){ - requestDetailProvider.updateEngineerUpdateWorkOrderHelperModel(requestDetailProvider.engineerUpdateWorkOrderHelperModel); + if (mounted) { + requestDetailProvider.updateEngineerUpdateWorkOrderHelperModel(requestDetailProvider.engineerUpdateWorkOrderHelperModel); } }, ), - 11.height, + 12.height, context.translation.solutions.heading6(context).custom(color: AppColor.neutral50), - 11.height, + 8.height, requestDetailProvider.engineerUpdateWorkOrderHelperModel?.solution != null - ? requestDetailProvider.engineerUpdateWorkOrderHelperModel!.solution!.heading6(context).custom(color: AppColor.neutral50) + ? requestDetailProvider.engineerUpdateWorkOrderHelperModel!.solution!.bodyText2(context).custom(color: AppColor.neutral120) : const SizedBox(), ], ).paddingOnly(start: 13, end: 13, top: 16, bottom: 16), diff --git a/lib/service_request_latest/views/forms/spare_part/spare_part_request.dart b/lib/service_request_latest/views/forms/spare_part/spare_part_request.dart index c9b2d338..5e2ca52e 100644 --- a/lib/service_request_latest/views/forms/spare_part/spare_part_request.dart +++ b/lib/service_request_latest/views/forms/spare_part/spare_part_request.dart @@ -17,7 +17,6 @@ import 'package:test_sa/providers/loading_list_notifier.dart'; import 'package:test_sa/service_request_latest/request_detail_provider.dart'; import 'package:test_sa/service_request_latest/views/components/action_button/footer_action_button.dart'; import 'package:test_sa/views/widgets/images/new_multi_image_picker.dart'; -import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; import '../../../../../../models/service_request/spare_parts.dart'; import '../../../../../../new_views/common_widgets/app_text_form_field.dart'; @@ -104,142 +103,134 @@ class _SparePartRequestState extends State with TickerProvider appBar: DefaultAppBar(title: context.translation.sparePartRequest), body: Consumer(builder: (context, RequestDetailProvider requestDetailProvider, child) { return SafeArea( - child: LoadingManager( - isLoading: _isLoading, - isFailedLoading: false, - stateCode: 200, - onRefresh: () async {}, child: Form( - key: _formKey, - child: Column( - children: [ - SingleChildScrollView( - child: Column( - crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ - Card( - child: Column( - crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ - context.translation.sparePartDetails.heading5(context), - 12.height, - SingleItemDropDownMenu( - context: context, - title: context.translation.partNo, - staticData: _spareParts, - showShadow: false, - initialValue: requestDetailProvider.sparePartHelperModel?.sparePart, - backgroundColor: context.isDark ? AppColor.neutral20 : AppColor.neutral90, - onSelect: (part) { - if (part != null) { - requestDetailProvider.sparePartHelperModel?.sparePart = part; - _oracleNoController.text = part.oracleCode ?? ''; - requestDetailProvider.updateSparePartHelperModel(_requestDetailProvider?.sparePartHelperModel); - } - }, - ), - 12.height, - AppTextFormField( - controller: _partQtyController, - labelText: context.translation.quantity, - textInputType: TextInputType.number, - labelStyle: AppTextStyles.textFieldLabelStyle, - showWithoutDecoration: true, - backgroundColor: context.isDark ? AppColor.neutral20 : AppColor.neutral90, - enable: requestDetailProvider.sparePartHelperModel?.sparePart?.id != null, - validator: (value) => value == null || value.isEmpty - ? context.translation.requiredField - : Validator.isNumeric(value) - ? null - : context.translation.onlyNumbers, - onChange: (value) { - requestDetailProvider.sparePartHelperModel?.quantity = num.tryParse(value ?? ""); - }, - onSaved: (text) { - requestDetailProvider.sparePartHelperModel?.quantity = num.tryParse(text ?? ""); - }, - ), - 12.height, - AppTextFormField( - labelStyle: AppTextStyles.textFieldLabelStyle, - controller: _oracleNoController, - labelText: context.translation.oracleNo, - textInputType: TextInputType.number, - showWithoutDecoration: true, - backgroundColor: context.isDark ? AppColor.neutral20 : AppColor.neutral90, - enable: false, - ), - 12.height, - AppTextFormField( - initialValue: requestDetailProvider.sparePartHelperModel?.comment, - labelStyle: AppTextStyles.textFieldLabelStyle, - controller: _descriptionController, - backgroundColor: context.isDark ? AppColor.neutral20 : AppColor.neutral90, - labelText: context.translation.description, - alignLabelWithHint: true, - showWithoutDecoration: true, - textInputType: TextInputType.multiline, - onChange: (value) { - requestDetailProvider.sparePartHelperModel?.comment = value; - }, - onSaved: (value) { - requestDetailProvider.sparePartHelperModel?.comment = value; - }, - ), - 12.height, - NewMultiFilesPicker( - label: context.translation.attachQuotation, - files: _files, - buttonIcon: 'quotation_icon'.toSvgAsset(), - buttonColor: AppColor.primary10, - onChange: (List list) { - for (var element in list) { - print('path is ${element.file.path}'); - } - }, - ), - ], - ).paddingAll(16), - ), - 8.height, - ], + key: _formKey, + child: Column( + children: [ + SingleChildScrollView( + child: Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + Card( + child: Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + context.translation.sparePartDetails.heading5(context), + 12.height, + SingleItemDropDownMenu( + context: context, + title: context.translation.partNo, + staticData: _spareParts, + showShadow: false,loading: _isLoading, + initialValue: requestDetailProvider.sparePartHelperModel?.sparePart, + backgroundColor: context.isDark ? AppColor.neutral20 : AppColor.neutral90, + onSelect: (part) { + if (part != null) { + requestDetailProvider.sparePartHelperModel?.sparePart = part; + _oracleNoController.text = part.oracleCode ?? ''; + requestDetailProvider.updateSparePartHelperModel(_requestDetailProvider?.sparePartHelperModel); + } + }, + ), + 12.height, + AppTextFormField( + controller: _partQtyController, + labelText: context.translation.quantity, + textInputType: TextInputType.number, + labelStyle: AppTextStyles.textFieldLabelStyle, + showWithoutDecoration: true, + backgroundColor: context.isDark ? AppColor.neutral20 : AppColor.neutral90, + enable: requestDetailProvider.sparePartHelperModel?.sparePart?.id != null, + validator: (value) => value == null || value.isEmpty + ? context.translation.requiredField + : Validator.isNumeric(value) + ? null + : context.translation.onlyNumbers, + onChange: (value) { + requestDetailProvider.sparePartHelperModel?.quantity = num.tryParse(value ?? ""); + }, + onSaved: (text) { + requestDetailProvider.sparePartHelperModel?.quantity = num.tryParse(text ?? ""); + }, + ), + 12.height, + AppTextFormField( + labelStyle: AppTextStyles.textFieldLabelStyle, + controller: _oracleNoController, + labelText: context.translation.oracleNo, + textInputType: TextInputType.number, + showWithoutDecoration: true, + backgroundColor: context.isDark ? AppColor.neutral20 : AppColor.neutral90, + enable: false, + ), + 12.height, + AppTextFormField( + initialValue: requestDetailProvider.sparePartHelperModel?.comment, + labelStyle: AppTextStyles.textFieldLabelStyle, + controller: _descriptionController, + backgroundColor: context.isDark ? AppColor.neutral20 : AppColor.neutral90, + labelText: context.translation.description, + alignLabelWithHint: true, + showWithoutDecoration: true, + textInputType: TextInputType.multiline, + onChange: (value) { + requestDetailProvider.sparePartHelperModel?.comment = value; + }, + onSaved: (value) { + requestDetailProvider.sparePartHelperModel?.comment = value; + }, + ), + 12.height, + NewMultiFilesPicker( + label: context.translation.attachQuotation, + files: _files, + buttonIcon: 'quotation_icon'.toSvgAsset(), + buttonColor: AppColor.primary10, + onChange: (List list) { + for (var element in list) { + print('path is ${element.file.path}'); + } + }, + ), + ], + ).paddingAll(16), ), - ).paddingAll(12).expanded, - FooterActionButton.footerContainer( - child: AppFilledButton( - label: _requestDetailProvider?.sparePartHelperModel?.id == 0 ? context.translation.addSparePartActivity : context.translation.updateSparePartActivity, - buttonColor: AppColor.green70, - onPressed: () async { - requestDetailProvider.sparePartHelperModel?.sparePartAttachments?.clear(); - for (var pickerObject in _files) { - String fileData = _isLocalUrl(pickerObject.file.path) - ? ("${pickerObject.file.path.split("/").last}|${base64Encode(File(pickerObject.file.path).readAsBytesSync())}") - : pickerObject.file.path; - requestDetailProvider.sparePartHelperModel?.sparePartAttachments?.add(SparePartAttachments(id: pickerObject.id, name: fileData)); - } + 8.height, + ], + ), + ).paddingAll(12).expanded, + FooterActionButton.footerContainer( + child: AppFilledButton( + label: _requestDetailProvider?.sparePartHelperModel?.id == 0 ? context.translation.addSparePartActivity : context.translation.updateSparePartActivity, + buttonColor: AppColor.green70, + onPressed: () async { + requestDetailProvider.sparePartHelperModel?.sparePartAttachments?.clear(); + for (var pickerObject in _files) { + String fileData = + _isLocalUrl(pickerObject.file.path) ? ("${pickerObject.file.path.split("/").last}|${base64Encode(File(pickerObject.file.path).readAsBytesSync())}") : pickerObject.file.path; + requestDetailProvider.sparePartHelperModel?.sparePartAttachments?.add(SparePartAttachments(id: pickerObject.id, name: fileData)); + } - showDialog(context: context, barrierDismissible: false, builder: (context) => const AppLazyLoading()); - int status = -1; - if (_requestDetailProvider?.sparePartHelperModel?.id == 0) { - status = await requestDetailProvider.createActivitySparePart(); - } else { - status = await requestDetailProvider.updateActivitySparePart(); - } - if (status == 200) { - await requestDetailProvider.getWorkOrderById(id: requestDetailProvider.currentWorkOrder!.data!.requestId!); - //this is for hide the dialoge... - Navigator.pop(context); - Navigator.pop(context); - } else { - Navigator.pop(context); - } - }, - )), - ], - ), - ), + showDialog(context: context, barrierDismissible: false, builder: (context) => const AppLazyLoading()); + int status = -1; + if (_requestDetailProvider?.sparePartHelperModel?.id == 0) { + status = await requestDetailProvider.createActivitySparePart(); + } else { + status = await requestDetailProvider.updateActivitySparePart(); + } + if (status == 200) { + await requestDetailProvider.getWorkOrderById(id: requestDetailProvider.currentWorkOrder!.data!.requestId!); + //this is for hide the dialoge... + Navigator.pop(context); + Navigator.pop(context); + } else { + Navigator.pop(context); + } + }, + )), + ], ), - ); + )); }), ); }