Merge remote-tracking branch 'origin/main_design2.0' into main_design2.0

design_3.0_demo_module
zaid_daoud 2 years ago
commit 6289a72e01

@ -64,53 +64,52 @@ class _DeviceTransferDetailsState extends State<DeviceTransferDetails> {
onRefresh: () async {}, onRefresh: () async {},
child: Column( child: Column(
children: [ children: [
_buildDetailsCard( Row(
Row( crossAxisAlignment: CrossAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start, children: [
children: [ Column(
Column( crossAxisAlignment: CrossAxisAlignment.stretch,
crossAxisAlignment: CrossAxisAlignment.stretch, children: [
children: [ context.translation.transferDetails.heading5(context),
context.translation.transferDetails.heading5(context), 8.height,
8.height, Column(
Column( crossAxisAlignment: CrossAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start, children: [
children: [ _buildTextWidget('${context.translation.assetName} : ${_model?.assetName ?? ""}'),
_buildTextWidget('${context.translation.assetName} : ${_model?.assetName ??""}'), _buildTextWidget('${context.translation.assetNumber} : ${_model?.assetNumber ?? ""}'),
_buildTextWidget('${context.translation.assetNumber} : ${_model?.assetNumber??""}'), _buildTextWidget('${context.translation.model} : ${_model?.modelName ?? ""}'),
_buildTextWidget('${context.translation.model} : ${_model?.modelName??""}'), _buildTextWidget('${context.translation.sn} : ${_model?.assetSerialNo ?? ""}'),
_buildTextWidget('${context.translation.sn} : ${_model?.assetSerialNo??""}'), ],
], ),
), 8.height,
8.height, ],
], ).expanded,
).expanded, Column(
Column( crossAxisAlignment: CrossAxisAlignment.end,
crossAxisAlignment: CrossAxisAlignment.end, children: [
children: [ /// TBD
/// TBD // Row(
// Row( // children: [
// children: [ // /// TBD
// /// TBD // // StatusLabel(
// // StatusLabel( // // label: "",
// // label: "", // // id: 0,
// // id: 0, // // textColor: AColors.getPriorityStatusTextColor(0),
// // textColor: AColors.getPriorityStatusTextColor(0), // // backgroundColor: AColors.getPriorityStatusColor(0)),
// // backgroundColor: AColors.getPriorityStatusColor(0)), // 8.width,
// 8.width, //
// // /// TBD
// /// TBD // //StatusLabel(label: '', textColor: AColors.getRequestStatusTextColor(0), backgroundColor: AColors.getRequestStatusColor(0)),
// //StatusLabel(label: '', textColor: AColors.getRequestStatusTextColor(0), backgroundColor: AColors.getRequestStatusColor(0)), // ],
// ], // ),
// ), 1.width,
1.width, Text(_model?.createdOn != null ? _model.createdOn.toServiceRequestCardFormat : "",
Text(_model?.createdOn != null ? _model.createdOn.toServiceRequestCardFormat : "", textAlign: TextAlign.end, style: AppTextStyles.tinyFont.copyWith(color: context.isDark ? AppColor.neutral10 : Color(0xFF3B3D4A))),
textAlign: TextAlign.end, style: AppTextStyles.tinyFont.copyWith(color: context.isDark ? AppColor.neutral10 : Color(0xFF3B3D4A))), ],
], ),
), ],
], ).toShadowContainer(context),
).paddingAll(14), 8.height,
),
// sender card // sender card
_buildCard( _buildCard(
isSender: true, isSender: true,
@ -129,6 +128,7 @@ class _DeviceTransferDetailsState extends State<DeviceTransferDetails> {
backgroundColor: AColors.getRequestStatusColor(getIdstatus(_model.senderMachineStatusName))) backgroundColor: AColors.getRequestStatusColor(getIdstatus(_model.senderMachineStatusName)))
: null, : null,
), ),
8.height,
// receiver card // receiver card
_buildCard( _buildCard(
isSender: false, isSender: false,
@ -148,7 +148,7 @@ class _DeviceTransferDetailsState extends State<DeviceTransferDetails> {
: null, : null,
), ),
], ],
), ).paddingAll(16),
), ),
); );
} }
@ -182,42 +182,39 @@ class _DeviceTransferDetailsState extends State<DeviceTransferDetails> {
], ],
), ),
if ((_userProvider.user?.type == UsersTypes.engineer)) if ((_userProvider.user?.type == UsersTypes.engineer))
if(isSender ? (_model?.senderMachineStatusName?.toLowerCase() != "closed" && _model?.senderMachineStatusName?.toLowerCase() != "completed") if (isSender
: (_model?.receiverMachineStatusName?.toLowerCase() != "closed" && _model?.receiverMachineStatusName?.toLowerCase() != "completed")) ? (_model?.senderMachineStatusName?.toLowerCase() != "closed" && _model?.senderMachineStatusName?.toLowerCase() != "completed")
CircleAvatar( : (_model?.receiverMachineStatusName?.toLowerCase() != "closed" && _model?.receiverMachineStatusName?.toLowerCase() != "completed"))
radius: 25, CircleAvatar(
backgroundColor: AppColor.neutral30, radius: 25,
child: CircleAvatar( backgroundColor: AppColor.neutral30,
radius: 24, child: CircleAvatar(
backgroundColor: Colors.white, radius: 24,
child: Padding( backgroundColor: Colors.white,
padding: const EdgeInsets.only(left: 3.0), child: Padding(
child: SvgPicture.asset('assets/images/update.svg'), padding: const EdgeInsets.only(left: 3.0),
child: SvgPicture.asset('assets/images/update.svg'),
),
), ),
), ).onPress(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))); }
} : () {
: () { Navigator.of(context).push(MaterialPageRoute(builder: (_) => UpdateDeviceTransfer(model: _model, isSender: isSender)));
Navigator.of(context).push(MaterialPageRoute(builder: (_) => UpdateDeviceTransfer(model: _model, isSender: isSender))); }),
}),
],
),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
_buildTextWidget('${context.translation.site} : $site'),
_buildTextWidget('${context.translation.unite} : $unit'),
8.height,
const Divider(color: Color(0xFFEAF1F4), height: 1, thickness: 1),
8.height,
_buildTextWidget(comment),
], ],
), ),
8.height, _buildTextWidget('${context.translation.site} : $site'),
_buildTextWidget('${context.translation.unite} : $unit'),
if (comment != null && comment.isNotEmpty) ...[
8.height,
const Divider(color: Color(0xFFEAF1F4), height: 1, thickness: 1),
8.height,
_buildTextWidget(comment),
]
], ],
).toShadowContainer(context).paddingOnly(top: 14, start: 14, end: 14); ).toShadowContainer(context);
} }
int getIdstatus(String status) { int getIdstatus(String status) {

@ -174,7 +174,6 @@ class _UpdateDeviceTransferState extends State<UpdateDeviceTransfer> {
), ),
8.height, 8.height,
ESignature( ESignature(
title: "Signature", title: "Signature",
oldSignature: widget.isSender ? widget.model.senderEngSignature : widget.model.receiverEngSignature, oldSignature: widget.isSender ? widget.model.senderEngSignature : widget.model.receiverEngSignature,
newSignature: _signature, newSignature: _signature,
@ -184,8 +183,6 @@ class _UpdateDeviceTransferState extends State<UpdateDeviceTransfer> {
widget.isSender widget.isSender
? _formModel.senderEngSignature = "${DateTime.now().toIso8601String()}.png|${base64Encode(signature)}" ? _formModel.senderEngSignature = "${DateTime.now().toIso8601String()}.png|${base64Encode(signature)}"
: _formModel.receiverEngSignature = "${DateTime.now().toIso8601String()}.png|${base64Encode(signature)}"; : _formModel.receiverEngSignature = "${DateTime.now().toIso8601String()}.png|${base64Encode(signature)}";
base64Encode(signature);
}, },
), ),
], ],

@ -181,6 +181,7 @@ class _RequestGasRefillState extends State<RequestGasRefill> {
crossAxisAlignment: CrossAxisAlignment.stretch, crossAxisAlignment: CrossAxisAlignment.stretch,
children: [ children: [
SingleChildScrollView( SingleChildScrollView(
padding: const EdgeInsets.all(16),
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch, crossAxisAlignment: CrossAxisAlignment.stretch,
children: [ children: [
@ -196,8 +197,8 @@ class _RequestGasRefillState extends State<RequestGasRefill> {
'${context.translation.quantity}: ${widget.gasRefillModel.gazRefillDetails[0].requestedQty}'.bodyText(context), '${context.translation.quantity}: ${widget.gasRefillModel.gazRefillDetails[0].requestedQty}'.bodyText(context),
'${context.translation.site}: ${widget.gasRefillModel.site.name}'.bodyText(context), '${context.translation.site}: ${widget.gasRefillModel.site.name}'.bodyText(context),
], ],
).paddingAll(16), ).toShadowContainer(context),
12.height, 8.height,
AppTimer( AppTimer(
label: context.translation.workingHours, label: context.translation.workingHours,
timer: _formModel.timer, timer: _formModel.timer,
@ -207,7 +208,7 @@ class _RequestGasRefillState extends State<RequestGasRefill> {
return true; return true;
}, },
), ),
12.height, 8.height,
SingleItemDropDownMenu<Lookup, GasStatusProvider>( SingleItemDropDownMenu<Lookup, GasStatusProvider>(
context: context, context: context,
title: context.translation.reportStatus, title: context.translation.reportStatus,
@ -216,7 +217,7 @@ class _RequestGasRefillState extends State<RequestGasRefill> {
_formModel.status = value; _formModel.status = value;
}, },
), ),
12.height, 8.height,
AppTextFormField( AppTextFormField(
labelText: context.translation.deliveredQuantity, labelText: context.translation.deliveredQuantity,
onSaved: (value) { onSaved: (value) {
@ -226,7 +227,7 @@ class _RequestGasRefillState extends State<RequestGasRefill> {
controller: _deliveredQuantityController, controller: _deliveredQuantityController,
validator: (value) => Validator.isNumeric(value) ? null : "allow numbers only", validator: (value) => Validator.isNumeric(value) ? null : "allow numbers only",
), ),
12.height, 8.height,
/// TBD /// TBD
AppTextFormField( AppTextFormField(
@ -237,7 +238,7 @@ class _RequestGasRefillState extends State<RequestGasRefill> {
onSaved: (value) {}, onSaved: (value) {},
), ),
], ],
).toShadowContainer(context).paddingAll(16), ),
).expanded, ).expanded,
AppFilledButton( AppFilledButton(
label: widget.gasRefillModel == null ? context.translation.submit : context.translation.update, label: widget.gasRefillModel == null ? context.translation.submit : context.translation.update,

@ -16,6 +16,7 @@ import 'package:test_sa/new_views/common_widgets/default_app_bar.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/create_service_report.dart';
import 'package:test_sa/views/pages/user/requests/work_order/update_service_report.dart'; import 'package:test_sa/views/pages/user/requests/work_order/update_service_report.dart';
import 'package:test_sa/views/pages/user/requests/work_order/work_order_details_page.dart'; import 'package:test_sa/views/pages/user/requests/work_order/work_order_details_page.dart';
import 'package:test_sa/views/widgets/loaders/no_item_found.dart';
import 'package:test_sa/views/widgets/requests/request_status.dart'; import 'package:test_sa/views/widgets/requests/request_status.dart';
class WorkOrderListPage extends StatelessWidget { class WorkOrderListPage extends StatelessWidget {
@ -43,91 +44,92 @@ class WorkOrderListPage extends StatelessWidget {
child: FutureBuilder( child: FutureBuilder(
future: serviceRequestsProvider.searchWorkOrders(callId: serviceRequest.requestCode), future: serviceRequestsProvider.searchWorkOrders(callId: serviceRequest.requestCode),
builder: (context, snap) { builder: (context, snap) {
workOrders = snap.data as List<SearchWorkOrder>;
if (snap.connectionState == ConnectionState.waiting) return const Center(child: CircularProgressIndicator()); if (snap.connectionState == ConnectionState.waiting) return const Center(child: CircularProgressIndicator());
workOrders = snap.data as List<SearchWorkOrder>;
return Column( return Column(
children: [ children: [
ListView.separated( (workOrders.isEmpty)
padding: const EdgeInsets.all(16), ? NoItemFound(message: context.translation.noDataFound).expanded
itemCount: workOrders?.length ?? 0, : ListView.separated(
separatorBuilder: (czt, index) => 8.height, padding: const EdgeInsets.all(16),
itemBuilder: (context, index) { itemCount: workOrders.length,
Color itemColor = index % 2 == 0 ? Theme.of(context).colorScheme.primary : Theme.of(context).colorScheme.onPrimary; separatorBuilder: (czt, index) => 8.height,
Color onItemColor = index % 2 != 0 ? Theme.of(context).colorScheme.primary : Theme.of(context).colorScheme.onPrimary; 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 Column( return Column(
children: [ children: [
Column( Column(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Row( Row(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
children: [ children: [
Column( Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
children: [ children: [
StatusLabel(label: workOrders[index].currentSituation.name, textColor: AppColor.orange60, backgroundColor: AppColor.orange40), StatusLabel(label: workOrders[index].currentSituation.name, textColor: AppColor.orange60, backgroundColor: AppColor.orange40),
8.height, 8.height,
Text(serviceRequest.requestCode, style: AppTextStyles.heading5.copyWith(color: context.isDark ? AppColor.neutral30 : const Color(0xFF3B3D4A))), Text(serviceRequest.requestCode, style: AppTextStyles.heading5.copyWith(color: context.isDark ? AppColor.neutral30 : const Color(0xFF3B3D4A))),
], ],
).expanded, ).expanded,
if (_userProvider.user.type == UsersTypes.engineer && serviceRequest.statusValue != 5 && serviceRequest.statusValue != 3) if (_userProvider.user.type == UsersTypes.engineer && serviceRequest.statusValue != 5 && serviceRequest.statusValue != 3)
context.translation.edit.toSvgAsset(height: 48, width: 48).onPress(() { context.translation.edit.toSvgAsset(height: 48, width: 48).onPress(() {
Navigator.of(context).push( Navigator.of(context).push(
MaterialPageRoute(builder: (_) => UpdateServiceReport(request: serviceRequest, workOrder: workOrders[index])), MaterialPageRoute(builder: (_) => UpdateServiceReport(request: serviceRequest, workOrder: workOrders[index])),
); );
}) })
], ],
), ),
8.height, 8.height,
Row( Row(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
children: [ children: [
Column( Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Text( Text(
'${context.translation.assetName}: ${workOrders[index].callRequest.asset.modelDefinition.assetName}', '${context.translation.assetName}: ${workOrders[index].callRequest.asset.modelDefinition.assetName}',
style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : const Color(0xFF757575)), style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : const Color(0xFF757575)),
), ),
Text( Text(
'${context.translation.status}: ${workOrders[index].currentSituation.name}', '${context.translation.status}: ${workOrders[index].currentSituation.name}',
style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : const Color(0xFF757575)), style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : const Color(0xFF757575)),
), ),
], ],
).expanded, ).expanded,
Text(workOrders[index].visitDate?.toServiceRequestCardFormat ?? "", Text(workOrders[index].visitDate?.toServiceRequestCardFormat ?? "",
textAlign: TextAlign.end, style: AppTextStyles.tinyFont.copyWith(color: context.isDark ? AppColor.neutral30 : const Color(0xFF3B3D4A))), textAlign: TextAlign.end, style: AppTextStyles.tinyFont.copyWith(color: context.isDark ? AppColor.neutral30 : const Color(0xFF3B3D4A))),
], ],
), ),
16.height, 16.height,
Row( Row(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
children: [ children: [
Text( Text(
context.translation.viewDetails, context.translation.viewDetails,
style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF4A8DB7)), style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF4A8DB7)),
), ),
4.width, 4.width,
const Icon(Icons.arrow_forward, color: Color(0xFF4A8DB7), size: 14) const Icon(Icons.arrow_forward, color: Color(0xFF4A8DB7), size: 14)
], ],
), ),
], ],
).onPress(() { ).onPress(() {
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute(builder: (context) => WorkOrderDetailsPage(workOrder: workOrders[index], serviceRequest: serviceRequest)), MaterialPageRoute(builder: (context) => WorkOrderDetailsPage(workOrder: workOrders[index], serviceRequest: serviceRequest)),
); );
}), }),
], ],
).toShadowContainer(context); ).toShadowContainer(context);
}, },
).expanded, ).expanded,
if (_userProvider.user.type == UsersTypes.engineer && (serviceRequest.statusValue != 5 && serviceRequest.statusValue != 3)) if (_userProvider.user.type == UsersTypes.engineer && (serviceRequest.statusValue != 5 && serviceRequest.statusValue != 3))
AppFilledButton( AppFilledButton(
label: context.translation.createWorkOrder, label: context.translation.createWorkOrder,

@ -1,6 +1,7 @@
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:signature/signature.dart'; import 'package:signature/signature.dart';
import 'package:test_sa/controllers/api_routes/urls.dart';
import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/extensions/int_extensions.dart'; import 'package:test_sa/extensions/int_extensions.dart';
import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/text_extensions.dart';
@ -15,6 +16,7 @@ class ESignature extends StatefulWidget {
final Function(Uint8List) onSaved; final Function(Uint8List) onSaved;
final Function(Uint8List) onChange; final Function(Uint8List) onChange;
final String title; final String title;
const ESignature({Key key, this.title, this.oldSignature, this.onSaved, this.onChange, this.newSignature}) : super(key: key); const ESignature({Key key, this.title, this.oldSignature, this.onSaved, this.onChange, this.newSignature}) : super(key: key);
@override @override
@ -50,6 +52,7 @@ class _ESignatureState extends State<ESignature> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
print(widget.oldSignature);
return FormField<String>(onSaved: (_) async { return FormField<String>(onSaved: (_) async {
widget.onSaved(signature); widget.onSaved(signature);
}, builder: (FormFieldState<String> state) { }, builder: (FormFieldState<String> state) {
@ -59,7 +62,7 @@ class _ESignatureState extends State<ESignature> {
width: MediaQuery.of(context).size.width, width: MediaQuery.of(context).size.width,
padding: EdgeInsets.symmetric(horizontal: 16.toScreenWidth, vertical: 8.toScreenHeight), padding: EdgeInsets.symmetric(horizontal: 16.toScreenWidth, vertical: 8.toScreenHeight),
decoration: BoxDecoration( decoration: BoxDecoration(
color: context.isDark?Theme.of(context).cardColor:Colors.white, color: context.isDark ? Theme.of(context).cardColor : Colors.white,
borderRadius: _editable ? const BorderRadius.only(topLeft: Radius.circular(10), topRight: Radius.circular(10)) : BorderRadius.circular(10), borderRadius: _editable ? const BorderRadius.only(topLeft: Radius.circular(10), topRight: Radius.circular(10)) : BorderRadius.circular(10),
boxShadow: [BoxShadow(color: Colors.black.withOpacity(0.05), blurRadius: 10)], boxShadow: [BoxShadow(color: Colors.black.withOpacity(0.05), blurRadius: 10)],
), ),
@ -98,7 +101,7 @@ class _ESignatureState extends State<ESignature> {
height: 135.toScreenHeight, height: 135.toScreenHeight,
width: MediaQuery.of(context).size.width, width: MediaQuery.of(context).size.width,
padding: const EdgeInsets.only(bottom: 8), padding: const EdgeInsets.only(bottom: 8),
child: signature != null ? Image.memory(signature) : ImageLoader(boxFit: BoxFit.contain, url: widget.oldSignature), child: signature != null ? Image.memory(signature) : ImageLoader(boxFit: BoxFit.contain, url: URLs.getFileUrl(widget.oldSignature)),
) )
: AbsorbPointer( : AbsorbPointer(
absorbing: !_editable, absorbing: !_editable,

@ -108,7 +108,7 @@ class _AppTimerState extends State<AppTimer> {
height: 56.toScreenHeight, height: 56.toScreenHeight,
padding: EdgeInsets.symmetric(horizontal: 16.toScreenWidth), padding: EdgeInsets.symmetric(horizontal: 16.toScreenWidth),
decoration: BoxDecoration( decoration: BoxDecoration(
color: context.isDark?AppColor.neutral50:Theme.of(context).cardColor, color: context.isDark ? AppColor.neutral50 : Theme.of(context).cardColor,
borderRadius: BorderRadius.circular(10), borderRadius: BorderRadius.circular(10),
boxShadow: [BoxShadow(color: Colors.black.withOpacity(0.05), blurRadius: 10)], boxShadow: [BoxShadow(color: Colors.black.withOpacity(0.05), blurRadius: 10)],
), ),
@ -125,7 +125,7 @@ class _AppTimerState extends State<AppTimer> {
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: [ children: [
(widget.label ?? "Timer").tinyFont(context), (widget.label ?? "Timer").tinyFont(context),
value.bodyText(context).custom(color: AppColor.neutral50), value.bodyText(context).custom(color: widget.enabled ? AppColor.neutral50 : AppColor.neutral20),
], ],
); );
}, },

Loading…
Cancel
Save