Procházet zdrojové kódy

avalonia: Fixes to Scanner module

Kenric Nugteren před 3 měsíci
rodič
revize
d47f93cbb8

+ 1 - 0
PRS.Avalonia/PRS.Avalonia/Components/Scanner/ScannerView.axaml

@@ -10,6 +10,7 @@
 	<Border ClipToBounds="True">
 		<barcodes:CameraView Name="CameraView"
 							 CameraEnabled="{Binding CameraEnabled}"
+                             IsVisible="{Binding ScannerVisible}"
 							 OnDetectionFinishedCommand="{Binding DetectionFinishedCommand}"/>
 	</Border>
 </UserControl>

+ 12 - 7
PRS.Avalonia/PRS.Avalonia/Components/Scanner/ScannerViewModel.cs

@@ -22,12 +22,14 @@ public enum ScannerMode
     Delivery = 2,
     Setout = 4,
     ManufacturingPacket = 8,
-    Product = 16
+    Product = 16,
+
+    All = ScannerMode.Equipment | ScannerMode.Delivery | ScannerMode.Setout | ScannerMode.ManufacturingPacket | ScannerMode.Product
 }
 
 public partial class ScannerViewModel : ModuleViewModel
 {
-    public override string Title => "Equipment Scanner";
+    public override string Title => "Scanner";
 
     [ObservableProperty]
     private bool _cameraEnabled;
@@ -43,6 +45,9 @@ public partial class ScannerViewModel : ModuleViewModel
 
     private (ScannerMode Mode, Func<BarcodeResult, Task<IScanResult?>> Func)[] Modes;
 
+    [ObservableProperty]
+    private bool _scannerVisible = true;
+
     public ScannerViewModel()
     {
         Modes = [
@@ -110,7 +115,7 @@ public partial class ScannerViewModel : ModuleViewModel
             {
                 var results = new List<IScanResult>();
                 var modes = Modes.Where(x => Mode.HasFlag(x.Mode)).ToArray();
-                foreach(var barcode in result)
+                foreach(var barcode in result.ToArray())
                 {
                     var tasks = modes.ToArray(x => x.Func(barcode));
                     await Task.WhenAll(tasks);
@@ -118,11 +123,15 @@ public partial class ScannerViewModel : ModuleViewModel
                 }
                 if(results.Count == 1)
                 {
+                    Vibration.Vibrate();
                     await results[0].Continue();
                 }
                 else if(results.Count > 1)
                 {
+                    Vibration.Vibrate();
+                    ScannerVisible = false;
                     var choice = await OptionDialog.Execute("Choose Item:", results.ToArray(x => x.Name));
+                    ScannerVisible = true;
                     var selected = choice is not null ? results.FirstOrDefault(x => x.Name == choice) : null;
                     if(selected is not null)
                     {
@@ -177,7 +186,6 @@ public partial class ScannerViewModel : ModuleViewModel
 
     private Task OpenSetout(SetoutShell shell)
     {
-        Vibration.Vibrate();
         Navigation.Navigate<ManufacturingDesignDetailsViewModel>(model =>
         {
             model.Shell = shell;
@@ -206,7 +214,6 @@ public partial class ScannerViewModel : ModuleViewModel
 
     private Task OpenManufacturingPacket(ManufacturingPacketShell shell)
     {
-        Vibration.Vibrate();
         Navigation.Navigate<ManufacturingPacketDetailsViewModel>(model =>
         {
             model.Shell = shell;
@@ -242,7 +249,6 @@ public partial class ScannerViewModel : ModuleViewModel
 
     private Task OpenDelivery(DeliveryShell shell)
     {
-        Vibration.Vibrate();
         Navigation.Navigate<DeliveryViewModel>(model =>
         {
             model.Delivery = shell;
@@ -277,7 +283,6 @@ public partial class ScannerViewModel : ModuleViewModel
 
     private Task OpenEquipment(EquipmentShell shell)
     {
-        Vibration.Vibrate();
         Navigation.Navigate<EquipmentDetailsViewModel>(model =>
         {
             model.Shell = shell;

+ 8 - 1
PRS.Avalonia/PRS.Avalonia/HomePage/HomePageViewModel.cs

@@ -53,7 +53,6 @@ public partial class HomePageViewModel : ViewModelBase
         Modules.Add<ViewMobileAssignmentsModule, AssignmentsViewModel>("Assignments", "", Images.schedule, isVisible: false);
         Modules.Add<ViewMobileDeliveriesModule, DeliveryModuleViewModel>("Deliveries", "", Images.delivery);
         Modules.Add<ViewMobileEquipmentModule, EquipmentModuleViewModel>("Equipment", "", Images.drill);
-        Modules.Add<ViewMobileDocumentScannerModule, SubmitDocsViewModel>("Submit Docs", "", Images.camera);
         Modules.Add<ViewMobileFormsModule, FormsViewModel>("Forms", "", Images.digitalform);
         Modules.Add<ViewMobileInOutModule, InOutViewModel>("In/Out", "", Images.clock);
         Modules.Add<ViewMobileManufacturingModule, ManufacturingViewModel>("Factory", "", Images.factory, isVisible: true);
@@ -62,7 +61,15 @@ public partial class HomePageViewModel : ViewModelBase
         _notifications = Modules.Add<NotificationsViewModel>("Notifications", "", Images.notification, isVisible: false);
         Modules.Add<ViewMobileProductsModule, ProductsViewModel>("Products", "", Images.stock, isVisible: false);
         Modules.Add<ViewMobilePurchaseOrdersModule, PurchaseOrdersViewModel>("Orders", "", Images.shoppingcart, isVisible: false);
+        Modules.Add("Scanner", "", Images.barcode, () =>
+        {
+            Navigation.Navigate<ScannerViewModel>(x =>
+            {
+                x.Mode = ScannerMode.All;
+            });
+        });
         Modules.Add<ViewMobileSiteModule, SiteViewModel>("Site Module", "", Images.construction);
+        Modules.Add<ViewMobileDocumentScannerModule, SubmitDocsViewModel>("Submit Docs", "", Images.camera);
         Modules.Add<ViewMobileMyTasksModule, MyTasksViewModel>("My Tasks", "", Images.task, configure: model =>
         {
             model.Model = Repositories.TaskModel();

+ 2 - 2
PRS.Avalonia/PRS.Avalonia/Modules/DeliveryModule/DeliveryModuleViewModel.cs

@@ -12,7 +12,7 @@ public partial class DeliveryModuleViewModel : ModuleViewModel
     public DeliveryModuleViewModel()
     {
         Modules = new AvaloniaModuleCollection();
-        Modules.Add("Delivery Scanner", "Identify Delivery Items by barcode", Images.barcode, Scanner_Tapped);
+        Modules.Add("Delivery Scanner", "Identify Delivery by barcode", Images.barcode, Scanner_Tapped);
         Modules.Add<DeliveryListViewModel>("Delivery List", "View open or completed Deliveries", Images.delivery);
     }
 
@@ -22,7 +22,7 @@ public partial class DeliveryModuleViewModel : ModuleViewModel
     {
         Navigation.Navigate<ScannerViewModel>(model =>
         {
-            model.Mode = ScannerMode.Setout;
+            model.Mode = ScannerMode.Delivery;
         });
     }
 }

+ 1 - 1
PRS.Avalonia/PRS.Avalonia/Modules/Site/SiteViewModel.cs

@@ -98,7 +98,7 @@ public partial class SiteViewModel : ModuleViewModel
     {
         Navigation.Navigate<ScannerViewModel>(model =>
         {
-            model.Mode = ScannerMode.ManufacturingPacket;
+            model.Mode = ScannerMode.Setout;
         });
     }
 }