Enhancements

design_3.0_demo_module
zaid_daoud 2 years ago
parent 03926a1fd1
commit af17525c3c

@ -1,14 +1,17 @@
import 'package:test_sa/models/base.dart';
import 'package:test_sa/models/new_models/assigned_employee.dart'; import 'package:test_sa/models/new_models/assigned_employee.dart';
class AssistantEmployees { class AssistantEmployees extends Base {
AssistantEmployees({ AssistantEmployees({
this.id, this.id,
this.user, this.user,
}); }) : super(name: user?.name, identifier: user?.id);
AssistantEmployees.fromJson(dynamic json) { AssistantEmployees.fromJson(dynamic json) {
id = json['id']; id = json['id'];
user = json['user'] != null ? AssignedEmployee.fromJson(json['user']) : null; user = json['user'] != null ? AssignedEmployee.fromJson(json['user']) : null;
name = user?.name;
identifier = user?.id;
} }
num id; num id;

@ -101,11 +101,12 @@ class _AppTextFormFieldState extends State<AppTextFormField> {
constraints: const BoxConstraints(), constraints: const BoxConstraints(),
suffixIconConstraints: const BoxConstraints(minWidth: 0), suffixIconConstraints: const BoxConstraints(minWidth: 0),
filled: true, filled: true,
fillColor: widget.backgroundColor ?? context.isDark && (widget.enable == false) fillColor: widget.backgroundColor ??
? AppColor.neutral60 (context.isDark && (widget.enable == false)
: (widget.enable == false) ? AppColor.neutral60
? AppColor.neutral40 : (widget.enable == false)
: Theme.of(context).cardColor, ? AppColor.neutral40
: Theme.of(context).cardColor),
errorStyle: AppTextStyle.tiny.copyWith(color: context.isDark ? AppColor.red50 : AppColor.red60), errorStyle: AppTextStyle.tiny.copyWith(color: context.isDark ? AppColor.red50 : AppColor.red60),
floatingLabelStyle: AppTextStyle.body1?.copyWith(fontWeight: FontWeight.w500, color: context.isDark ? null : AppColor.neutral20), floatingLabelStyle: AppTextStyle.body1?.copyWith(fontWeight: FontWeight.w500, color: context.isDark ? null : AppColor.neutral20),
hintText: widget.hintText ?? "", hintText: widget.hintText ?? "",

@ -15,6 +15,7 @@ class SingleItemDropDownMenu<T extends Base, X extends LoadingListNotifier> exte
final bool enabled; final bool enabled;
final List<T> staticData; final List<T> staticData;
final String title; final String title;
final Color backgroundColor;
/// To use a static data (without calling API) /// To use a static data (without calling API)
/// just send [NullableLoadingProvider] as generic data type and fill the [staticData] /// just send [NullableLoadingProvider] as generic data type and fill the [staticData]
@ -26,6 +27,7 @@ class SingleItemDropDownMenu<T extends Base, X extends LoadingListNotifier> exte
this.initialValue, this.initialValue,
this.enabled = true, this.enabled = true,
this.staticData, this.staticData,
this.backgroundColor,
}) : super(key: key); }) : super(key: key);
@override @override
@ -99,7 +101,7 @@ class _SingleItemDropDownMenuState<T extends Base, X extends LoadingListNotifier
? AppColor.neutral60 ? AppColor.neutral60
: (widget.enabled == false || isEmpty) : (widget.enabled == false || isEmpty)
? AppColor.neutral40 ? AppColor.neutral40
: Theme.of(context).cardColor, : widget.backgroundColor ?? 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)],
), ),

@ -113,7 +113,7 @@ class _CreateSubWorkOrderPageState extends State<CreateSubWorkOrderPage> {
} }
_subWorkOrders.supplier ??= SupplierDetails(id: _subWorkOrders?.supplier?.id); _subWorkOrders.supplier ??= SupplierDetails(id: _subWorkOrders?.supplier?.id);
} }
_spareParts = _serviceReport.sparePartsWorkOrders.map((e) => e.sparePart).toList(); _spareParts = _serviceReport?.sparePartsWorkOrders?.map((e) => e.sparePart)?.toList();
setState(() { setState(() {
_isLoading = false; _isLoading = false;
}); });
@ -303,7 +303,7 @@ class _CreateSubWorkOrderPageState extends State<CreateSubWorkOrderPage> {
assetId: widget.workOrder?.callRequest?.asset?.id, assetId: widget.workOrder?.callRequest?.asset?.id,
initialValue: (_subWorkOrders.assistantEmployees?.isNotEmpty ?? false) ? _subWorkOrders.assistantEmployees?.first : null, initialValue: (_subWorkOrders.assistantEmployees?.isNotEmpty ?? false) ? _subWorkOrders.assistantEmployees?.first : null,
onSelect: (employee) { onSelect: (employee) {
_subWorkOrders.assistantEmployees = [employee.copyWith(id: 0)]; _subWorkOrders.assistantEmployees = [employee?.copyWith(id: 0)];
}, },
), ),
8.height, 8.height,

@ -237,7 +237,7 @@ class _CreateServiceReportState extends State<CreateServiceReport> with TickerPr
assetId: _serviceReport.callRequest?.asset?.id, assetId: _serviceReport.callRequest?.asset?.id,
initialValue: (_serviceReport.assistantEmployees?.isNotEmpty ?? false) ? _serviceReport.assistantEmployees?.first : null, initialValue: (_serviceReport.assistantEmployees?.isNotEmpty ?? false) ? _serviceReport.assistantEmployees?.first : null,
onSelect: (employee) { onSelect: (employee) {
_serviceReport.assistantEmployees = [employee.copyWith(id: 0)]; _serviceReport.assistantEmployees = [employee?.copyWith(id: 0)];
}, },
), ),
8.height, 8.height,

@ -1,5 +1,4 @@
import 'dart:convert'; import 'dart:convert';
import 'dart:developer';
import 'dart:io'; import 'dart:io';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@ -75,7 +74,6 @@ class _EditServiceReportState extends State<EditServiceReport> with TickerProvid
_isLoading = true; _isLoading = true;
setState(() {}); setState(() {});
_callRequestForWorkOrder = await _serviceRequestsProvider?.getCallRequestForWorkOrder(callId: widget.request.id); _callRequestForWorkOrder = await _serviceRequestsProvider?.getCallRequestForWorkOrder(callId: widget.request.id);
log(_serviceReport.faultDescription?.toJson()?.toString());
_serviceReport.assignedEmployee = _callRequestForWorkOrder?.assignedEmployee; _serviceReport.assignedEmployee = _callRequestForWorkOrder?.assignedEmployee;
await _assetTypeProvider?.getTypes(user: _userProvider.user, host: _settingProvider.host); await _assetTypeProvider?.getTypes(user: _userProvider.user, host: _settingProvider.host);
_isLoading = false; _isLoading = false;
@ -224,7 +222,7 @@ class _EditServiceReportState extends State<EditServiceReport> with TickerProvid
assetId: _serviceReport.callRequest?.asset?.id, assetId: _serviceReport.callRequest?.asset?.id,
initialValue: (_serviceReport.assistantEmployees?.isNotEmpty ?? false) ? _serviceReport.assistantEmployees?.first : null, initialValue: (_serviceReport.assistantEmployees?.isNotEmpty ?? false) ? _serviceReport.assistantEmployees?.first : null,
onSelect: (employee) { onSelect: (employee) {
_serviceReport.assistantEmployees = [employee.copyWith(id: 0)]; _serviceReport.assistantEmployees = [employee?.copyWith(id: 0)];
}, },
), ),
8.height, 8.height,

@ -62,6 +62,7 @@ class _PartNoButtonState extends State<PartNoButton> {
title: context.translation.partNo, title: context.translation.partNo,
staticData: widget.spareParts, staticData: widget.spareParts,
initialValue: current?.sparePart, initialValue: current?.sparePart,
backgroundColor: context.isDark ? AppColor.neutral20 : AppColor.neutral30,
// initialValue: (_serviceReport.sparePartsWorkOrders?.isNotEmpty ?? false) ? _serviceReport.sparePartsWorkOrders.first.sparePart : null, // initialValue: (_serviceReport.sparePartsWorkOrders?.isNotEmpty ?? false) ? _serviceReport.sparePartsWorkOrders.first.sparePart : null,
onSelect: (part) { onSelect: (part) {
current = SparePartsWorkOrders(id: 0, sparePart: part, qty: 0); current = SparePartsWorkOrders(id: 0, sparePart: part, qty: 0);
@ -73,6 +74,7 @@ class _PartNoButtonState extends State<PartNoButton> {
controller: widget.controller, controller: widget.controller,
labelText: context.translation.quantity, labelText: context.translation.quantity,
textInputType: TextInputType.number, textInputType: TextInputType.number,
backgroundColor: context.isDark ? AppColor.neutral20 : AppColor.neutral30,
enable: current != null, enable: current != null,
validator: (value) => value == null || value.isEmpty validator: (value) => value == null || value.isEmpty
? context.translation.requiredField ? context.translation.requiredField
@ -117,6 +119,7 @@ class _PartNoButtonState extends State<PartNoButton> {
32.width, 32.width,
"trash".toSvgAsset().onPress(() { "trash".toSvgAsset().onPress(() {
list.remove(list[index]); list.remove(list[index]);
if (widget.onAdd != null) widget.onAdd(list);
setState(() {}); setState(() {});
}), }),
], ],

@ -1,7 +1,8 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:test_sa/new_views/common_widgets/single_item_drop_down_menu.dart';
import 'package:test_sa/providers/loading_list_notifier.dart';
import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; import 'package:test_sa/views/widgets/loaders/loading_manager.dart';
import 'package:test_sa/views/widgets/status/assistant_employee_menu.dart';
import '../../../../controllers/providers/api/status_drop_down/report/service_report_assistants_employee_provider.dart'; import '../../../../controllers/providers/api/status_drop_down/report/service_report_assistants_employee_provider.dart';
import '../../../../models/new_models/assistant_employee.dart'; import '../../../../models/new_models/assistant_employee.dart';
@ -24,12 +25,19 @@ class ServiceReportAssistantEmployeeMenu extends StatelessWidget {
onRefresh: () async { onRefresh: () async {
await menuProvider.getAssistantEmployees(assetId); await menuProvider.getAssistantEmployees(assetId);
}, },
child: AssistantEmployeeMenu( child: SingleItemDropDownMenu<AssistantEmployees, NullableLoadingProvider>(
title: title, title: title,
initialStatus: initialValue, context: context,
statuses: menuProvider.assistantEmployees, initialValue: initialValue,
staticData: menuProvider.assistantEmployees,
onSelect: onSelect, onSelect: onSelect,
), ),
// child: AssistantEmployeeMenu(
// title: title,
// initialStatus: initialValue,
// statuses: menuProvider.assistantEmployees,
// onSelect: onSelect,
// ),
); );
} }
} }

@ -1,10 +1,13 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:test_sa/controllers/providers/api/status_drop_down/report/service_report_last_calls_provider.dart'; import 'package:test_sa/controllers/providers/api/status_drop_down/report/service_report_last_calls_provider.dart';
import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/lookup.dart';
import 'package:test_sa/models/service_request/service_report.dart'; import 'package:test_sa/models/service_request/service_report.dart';
import 'package:test_sa/new_views/common_widgets/single_item_drop_down_menu.dart';
import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; import 'package:test_sa/views/widgets/loaders/loading_manager.dart';
import 'package:test_sa/views/widgets/status/single_status_menu.dart';
import '../../../../providers/loading_list_notifier.dart';
class ServiceReportLastCallsMenu extends StatelessWidget { class ServiceReportLastCallsMenu extends StatelessWidget {
final Function(Lookup) onSelect; final Function(Lookup) onSelect;
@ -28,12 +31,19 @@ class ServiceReportLastCallsMenu extends StatelessWidget {
parentId: parentId, parentId: parentId,
); );
}, },
child: SingleStatusMenu( child: SingleItemDropDownMenu<Lookup, NullableLoadingProvider>(
title: title, context: context,
initialStatus: report?.calllastSituation, title: context.translation.callLastSituation,
statuses: menuProvider.calls, staticData: menuProvider.calls,
initialValue: report?.calllastSituation,
onSelect: onSelect, onSelect: onSelect,
), ),
// child: SingleStatusMenu(
// title: title,
// initialStatus: report?.calllastSituation,
// statuses: menuProvider.calls,
// onSelect: onSelect,
// ),
); );
} }
} }

Loading…
Cancel
Save