From 0e30fef10cbd05f639971026e91bb78059174355 Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Thu, 19 Oct 2023 16:19:25 +0300 Subject: [PATCH] work order list ui changed. --- assets/images/edit.svg | 8 + lib/l10n/app_en.arb | 4 +- .../requests/service_request_details.dart | 2 +- .../work_order/work_orders_list_page.dart | 242 +++++++++--------- 4 files changed, 131 insertions(+), 125 deletions(-) create mode 100644 assets/images/edit.svg diff --git a/assets/images/edit.svg b/assets/images/edit.svg new file mode 100644 index 00000000..fdf28a6d --- /dev/null +++ b/assets/images/edit.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index ec5fbcf8..17a30b34 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -254,5 +254,7 @@ "pickAsset" : "Pick Asset", "firstAction" : "First Action", "workOrder" : "Work Orders", - "viewWorkOrder" : "View All Work Order" + "createWorkOrder" : "Create Work Order", + "viewWorkOrder" : "View All Work Order", + "serviceDetails": "Service Details" } \ No newline at end of file diff --git a/lib/views/pages/user/requests/service_request_details.dart b/lib/views/pages/user/requests/service_request_details.dart index 86f83c4f..71e896fd 100644 --- a/lib/views/pages/user/requests/service_request_details.dart +++ b/lib/views/pages/user/requests/service_request_details.dart @@ -185,7 +185,7 @@ class ServiceRequestDetailsPage extends StatelessWidget { } return Scaffold( - appBar: DefaultAppBar(title: context.translation.serviceRequest), + appBar: DefaultAppBar(title: context.translation.serviceDetails), backgroundColor: const Color(0xfff8f9fb), body: SafeArea( child: FutureBuilder( diff --git a/lib/views/pages/user/requests/work_order/work_orders_list_page.dart b/lib/views/pages/user/requests/work_order/work_orders_list_page.dart index a2dce886..a7b4ef7a 100644 --- a/lib/views/pages/user/requests/work_order/work_orders_list_page.dart +++ b/lib/views/pages/user/requests/work_order/work_orders_list_page.dart @@ -4,15 +4,21 @@ 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/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/enums/user_types.dart'; import 'package:test_sa/models/service_request/search_work_order.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/new_views/common_widgets/app_filled_button.dart'; import 'package:test_sa/new_views/common_widgets/default_app_bar.dart'; import 'package:test_sa/views/app_style/sizing.dart'; import 'package:test_sa/views/pages/user/requests/work_order/create_service_report.dart'; import 'package:test_sa/views/pages/user/requests/work_order/future_service_report.dart'; import 'package:test_sa/views/widgets/buttons/app_button.dart'; import 'package:test_sa/views/widgets/requests/info_row.dart'; +import 'package:test_sa/views/widgets/requests/request_status.dart'; import 'package:test_sa/views/widgets/titles/app_sub_title.dart'; class WorkOrderListPage extends StatelessWidget { @@ -32,7 +38,7 @@ class WorkOrderListPage extends StatelessWidget { serviceRequestsProvider = Provider.of(context); serviceRequest = ModalRoute.of(context).settings.arguments; } - + print("serviceRequest.statusValue:${serviceRequest.statusValue}"); return Scaffold( appBar: DefaultAppBar(title: context.translation.workOrder), backgroundColor: const Color(0xfff8f9fb), @@ -42,137 +48,127 @@ class WorkOrderListPage extends StatelessWidget { builder: (context, snap) { workOrders = snap.data as List; if (snap.connectionState == ConnectionState.waiting) return Center(child: CircularProgressIndicator()); - if (snap.connectionState == ConnectionState.done && (snap.data?.length ?? 0) != 0) { - return SingleChildScrollView( - child: Column( - children: [ - ListView.separated( - shrinkWrap: true, - physics: const NeverScrollableScrollPhysics(), - padding: EdgeInsets.all(21), - itemCount: workOrders.length, - separatorBuilder: (czt, index) => 21.height, - itemBuilder: (context, index) { - Color itemColor = index % 2 == 0 ? Theme.of(context).colorScheme.primary : Theme.of(context).colorScheme.onPrimary; - Color onItemColor = index % 2 != 0 ? Theme.of(context).colorScheme.primary : Theme.of(context).colorScheme.onPrimary; - return ElevatedButton( - style: ElevatedButton.styleFrom( - padding: EdgeInsets.symmetric(vertical: 8, horizontal: 8), - primary: itemColor.withOpacity(.7), - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(AppStyle.getBorderRadius(context)), - ), - ), - //padding: EdgeInsets.symmetric(vertical: 8,horizontal: 8), - onPressed: () { - // onPressed(request); - }, - child: Column( + return Column( + children: [ + ListView.separated( + padding: const EdgeInsets.all(16), + itemCount: workOrders?.length ?? 0, + separatorBuilder: (czt, index) => 8.height, + itemBuilder: (context, index) { + Color itemColor = index % 2 == 0 ? Theme.of(context).colorScheme.primary : Theme.of(context).colorScheme.onPrimary; + Color onItemColor = index % 2 != 0 ? Theme.of(context).colorScheme.primary : Theme.of(context).colorScheme.onPrimary; + + return Container( + decoration: ShapeDecoration( + color: Colors.white, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(20), + ), + shadows: const [BoxShadow(color: Color(0x07000000), blurRadius: 14, offset: Offset(0, 0), spreadRadius: 0)], + ), + child: Column( + children: [ + Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, children: [ - RequestInfoRow( - title: context.translation.callId, - content: serviceRequest.requestCode, - ), - RequestInfoRow( - title: context.translation.orderWorkNumber, - info: workOrders[index].workOrderNo.toString(), - ), - RequestInfoRow( - title: context.translation.visitDate, - info: workOrders[index].visitDate, - ), - RequestInfoRow(title: context.translation.assignedEmployee, info: workOrders[index].assignedEmployee?.name ?? ""), - RequestInfoRow( - title: context.translation.assetSN, - info: workOrders[index].callRequest.asset.assetSerialNo, + Row( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: [ + Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: [ + StatusLabel(label: workOrders[index].currentSituation.name, textColor: AppColor.orange60, backgroundColor: AppColor.orange40), + 8.height, + Text(serviceRequest.requestCode, style: AppTextStyles.heading5.copyWith(color: const Color(0xFF3B3D4A))), + ], + ).expanded, + if (serviceRequest.statusValue != 5 && serviceRequest.statusValue != 3) + "edit".toSvgAsset(height: 48, width: 48).onPress(() { + Navigator.of(context).push( + MaterialPageRoute( + builder: (_) => FutureServiceReport( + request: serviceRequest, + workOrder: workOrders[index], + )), + ); + }) + ], ), - RequestInfoRow( - title: context.translation.assetName, - info: workOrders[index].callRequest.asset.modelDefinition.assetName, - ), - RequestInfoRow( - title: context.translation.assetNumber, - info: workOrders[index].callRequest.asset.assetNumber, + 8.height, + Row( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: [ + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + '${context.translation.assetName}: ${workOrders[index].callRequest.asset.modelDefinition.assetName}', + style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)), + ), + Text( + '${context.translation.status}: ${workOrders[index].currentSituation.name}', + style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)), + ), + ], + ).expanded, + Text(workOrders[index].visitDate.toServiceRequestCardFormat, textAlign: TextAlign.end, style: AppTextStyles.tinyFont.copyWith(color: const Color(0xFF3B3D4A))), + ], ), - RequestInfoRow( - title: context.translation.model, - info: workOrders[index].callRequest.asset.modelDefinition.modelName, + Text( + '${context.translation.orderWorkNumber}: ${workOrders[index].workOrderNo}', + style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)), ), - RequestInfoRow( - title: context.translation.site, - info: workOrders[index].callRequest.asset.site.custName, + Text( + '${context.translation.assignedEmployee}: ${workOrders[index].assignedEmployee?.name ?? ""}', + style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)), ), - RequestInfoRow( - title: "Call last Situation", - info: workOrders[index].currentSituation.name ?? '', + Text('${context.translation.assetSN}: ${workOrders[index].callRequest.asset.assetSerialNo ?? ""}', style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575))), + Text('${context.translation.assetName}: ${workOrders[index].callRequest.asset.modelDefinition.assetName ?? ""}', + style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575))), + Text('${context.translation.assetNumber}: ${workOrders[index].callRequest.asset.assetNumber ?? ""}', style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575))), + Text('${context.translation.model}: ${workOrders[index].callRequest.asset.modelDefinition.modelName ?? ""}', + style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575))), + Text('${context.translation.site}: ${workOrders[index].callRequest.asset.site.custName ?? ""}', style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575))), + Text('${"Call last Situation"}: ${workOrders[index].calllastSituation.name ?? '' ?? ""}', style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575))), + 16.height, + Row( + mainAxisSize: MainAxisSize.min, + children: [ + Text( + 'View Details', + style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF4A8DB7)), + ), + 4.width, + const Icon( + Icons.arrow_forward, + color: Color(0xFF4A8DB7), + size: 14, + ) + ], ), - _userProvider.user.type == UsersTypes.engineer && workOrders[index].workOrderNo != null - ? Padding( - padding: EdgeInsets.all(32), - child: AButton( - text: context.translation.editServiceReport, - onPressed: serviceRequest.statusValue == 5 || serviceRequest.statusValue == 3 - ? null - : () { - Navigator.of(context).push( - MaterialPageRoute( - builder: (_) => FutureServiceReport( - request: serviceRequest, - workOrder: workOrders[index], - )), - ); - }, - ), - ) - : SizedBox.shrink(), ], - ), - ); - }, - ), - if (_userProvider.user.type == UsersTypes.engineer) - Center( - child: Padding( - padding: const EdgeInsets.all(32), - child: AButton( - text: "Create Work Order", - onPressed: serviceRequest.statusValue == 5 || serviceRequest.statusValue == 3 - ? null - : () { - Navigator.of(context).push(MaterialPageRoute(builder: (_) => CreateServiceReport(request: serviceRequest))); - }, - ), - ), - ), - ], - ), - ); - } else { - return Column( - children: [ - Expanded( - child: Center( - child: ASubTitle(context.translation.dataNotFound), - ), - ), - if (_userProvider.user.type == UsersTypes.engineer) - Center( - child: Padding( - padding: const EdgeInsets.all(32), - child: AButton( - text: "Create Work Order", - onPressed: serviceRequest.statusValue == 5 || serviceRequest.statusValue == 3 - ? null - : () { - Navigator.of(context).push(MaterialPageRoute(builder: (_) => CreateServiceReport(request: serviceRequest))); - }, - ), + ).paddingAll(16).onPress(() { + // onPressed(request); + }), + ], ), - ), - ], - ); - } + ); + }, + ).expanded, + if (_userProvider.user.type != UsersTypes.engineer && (serviceRequest.statusValue != 5 && serviceRequest.statusValue != 3)) + AppFilledButton( + label: context.translation.createWorkOrder, + maxWidth: true, + onPressed: () { + Navigator.of(context).push(MaterialPageRoute(builder: (_) => CreateServiceReport(request: serviceRequest))); + }).paddingOnly(start: 16, end: 16, bottom: 16) + ], + ); }, ))); }