Răsfoiți Sursa

Added ability to clear ram

Tim Jones 1 lună în urmă
părinte
comite
437b36a78b

+ 18 - 0
RackPeek.Domain/Resources/Desktops/UpdateDesktopUseCase.cs

@@ -39,6 +39,24 @@ public class UpdateDesktopUseCase(IResourceCollection repository) : IUseCase
             desktop.Ram ??= new Ram();
             desktop.Ram.Mts = ramMts.Value;
         }
+        
+        if (desktop.Ram != null)
+        {
+            if (desktop.Ram.Size == 0)
+            {
+                desktop.Ram.Size = null;
+            }
+            
+            if (desktop.Ram.Mts == 0)
+            {
+                desktop.Ram.Mts = null;
+            }
+
+            if (desktop.Ram.Size == null && desktop.Ram.Mts == null)
+            {
+                desktop.Ram = null;
+            }
+        }
 
         if (notes != null) desktop.Notes = notes;
         await repository.UpdateAsync(desktop);

+ 19 - 0
RackPeek.Domain/Resources/Laptops/UpdateLaptopUseCase.cs

@@ -39,6 +39,25 @@ public class UpdateLaptopUseCase(IResourceCollection repository) : IUseCase
             laptop.Ram ??= new Ram();
             laptop.Ram.Mts = ramMts.Value;
         }
+        
+        if (laptop.Ram != null)
+        {
+            if (laptop.Ram.Size == 0)
+            {
+                laptop.Ram.Size = null;
+            }
+            
+            if (laptop.Ram.Mts == 0)
+            {
+                laptop.Ram.Mts = null;
+            }
+
+            if (laptop.Ram.Size == null && laptop.Ram.Mts == null)
+            {
+                laptop.Ram = null;
+            }
+        }
+
 
         if (notes != null) laptop.Notes = notes;
         await repository.UpdateAsync(laptop);

+ 18 - 0
RackPeek.Domain/Resources/Servers/UpdateServerUseCase.cs

@@ -38,6 +38,24 @@ public class UpdateServerUseCase(IResourceCollection repository) : IUseCase
             server.Ram.Mts = ramMts.Value;
         }
 
+        if (server.Ram != null)
+        {
+            if (server.Ram.Size == 0)
+            {
+                server.Ram.Size = null;
+            }
+            
+            if (server.Ram.Mts == 0)
+            {
+                server.Ram.Mts = null;
+            }
+
+            if (server.Ram.Size == null && server.Ram.Mts == null)
+            {
+                server.Ram = null;
+            }
+        }
+
         // ---- IPMI ----
         if (ipmi.HasValue) server.Ipmi = ipmi.Value;
         if (notes != null) server.Notes = notes;

+ 42 - 2
Shared.Rcl/Desktops/DesktopCardComponent.razor

@@ -259,6 +259,46 @@
                   OnSubmit="HandleCloneSubmit"
                   TestIdPrefix="desktop-clone"/>
 
+
+<CpuModal IsOpen="@_cpuModalOpen"
+          IsOpenChanged="v => _cpuModalOpen = v"
+          Value="@_editingCpu"
+          OnSubmit="HandleCpuSubmit"
+          OnDelete="HandleCpuDelete" 
+          TestIdPrefix="desktop"/>
+
+
+<RamModal IsOpen="@_isRamModalOpen"
+          IsOpenChanged="v => _isRamModalOpen = v"
+          Value="@Desktop.Ram"
+          OnSubmit="HandleRamSubmit" 
+          TestIdPrefix="desktop"/>
+
+
+<DriveModal IsOpen="@_driveModalOpen"
+            IsOpenChanged="v => _driveModalOpen = v"
+            Value="@_editingDrive"
+            OnSubmit="HandleDriveSubmit"
+            OnDelete="HandleDriveDelete" 
+            TestIdPrefix="desktop"/>
+
+
+<GpuModal IsOpen="@_gpuModalOpen"
+          IsOpenChanged="v => _gpuModalOpen = v"
+          Value="@_editingGpu"
+          OnSubmit="HandleGpuSubmit"
+          OnDelete="HandleGpuDelete" 
+          TestIdPrefix="desktop"/>
+
+
+<NicModal
+    IsOpen="@_nicModalOpen"
+    IsOpenChanged="v => _nicModalOpen = v"
+    Value="@_editingNic"
+    OnSubmit="HandleNicSubmit"
+    OnDelete="HandleNicDelete"
+    TestIdPrefix="desktop-nic"/>
+
 @code {
     [Parameter] [EditorRequired] public Desktop Desktop { get; set; } = default!;
 
@@ -271,10 +311,10 @@
         _isRamModalOpen = true;
     }
 
-    private async Task HandleRamSubmit(Ram value)
+    private async Task HandleRamSubmit(Ram? value)
     {
         _isRamModalOpen = false;
-        await UpdateUseCase.ExecuteAsync(Desktop.Name, Desktop.Model, value.Size, value.Mts);
+        await UpdateUseCase.ExecuteAsync(Desktop.Name, Desktop.Model, value?.Size ?? 0, value?.Mts ?? 0);
         Desktop = await GetByNameUseCase.ExecuteAsync(Desktop.Name);
     }
 

+ 14 - 6
Shared.Rcl/Laptops/LaptopCardComponent.razor

@@ -207,24 +207,32 @@
           IsOpenChanged="v => _cpuModalOpen = v"
           Value="@_editingCpu"
           OnSubmit="HandleCpuSubmit"
-          OnDelete="HandleCpuDelete" />
+          OnDelete="HandleCpuDelete" 
+          TestIdPrefix="laptop"/>
+
 
 <RamModal IsOpen="@_isRamModalOpen"
           IsOpenChanged="v => _isRamModalOpen = v"
           Value="@Laptop.Ram"
-          OnSubmit="HandleRamSubmit" />
+          OnSubmit="HandleRamSubmit" 
+          TestIdPrefix="laptop"/>
+
 
 <DriveModal IsOpen="@_driveModalOpen"
             IsOpenChanged="v => _driveModalOpen = v"
             Value="@_editingDrive"
             OnSubmit="HandleDriveSubmit"
-            OnDelete="HandleDriveDelete" />
+            OnDelete="HandleDriveDelete" 
+            TestIdPrefix="laptop"/>
+
 
 <GpuModal IsOpen="@_gpuModalOpen"
           IsOpenChanged="v => _gpuModalOpen = v"
           Value="@_editingGpu"
           OnSubmit="HandleGpuSubmit"
-          OnDelete="HandleGpuDelete" />
+          OnDelete="HandleGpuDelete" 
+          TestIdPrefix="laptop"/>
+
 
 <ConfirmModal IsOpen="_confirmDeleteOpen"
               IsOpenChanged="v => _confirmDeleteOpen = v"
@@ -266,10 +274,10 @@
         _isRamModalOpen = true;
     }
 
-    private async Task HandleRamSubmit(Ram value)
+    private async Task HandleRamSubmit(Ram? value)
     {
         _isRamModalOpen = false;
-        await UpdateUseCase.ExecuteAsync(Laptop.Name, Laptop.Model, value.Size, value.Mts, Laptop.Notes);
+        await UpdateUseCase.ExecuteAsync(Laptop.Name, Laptop.Model, value?.Size ?? 0, value?.Mts ?? 0, Laptop.Notes);
         Laptop = await GetByNameUseCase.ExecuteAsync(Laptop.Name);
     }
 

+ 23 - 2
Shared.Rcl/Modals/RamModal.razor

@@ -70,7 +70,19 @@
                 <div class="flex justify-between items-center mt-5"
                      data-testid="@($"{BaseTestId}-actions")">
 
-                    <span></span>
+                    @if (IsEdit)
+                    {
+                        <button type="button"
+                                class="text-red-400 hover:text-red-300 text-sm"
+                                data-testid="@($"{BaseTestId}-clear")"
+                                @onclick="HandleClear">
+                            Clear RAM
+                        </button>
+                    }
+                    else
+                    {
+                        <span></span>
+                    }
 
                     <div class="flex gap-2">
 
@@ -90,6 +102,7 @@
                     </div>
                 </div>
 
+
             </EditForm>
         </div>
     </div>
@@ -101,7 +114,7 @@
 
     [Parameter] public Ram? Value { get; set; }
 
-    [Parameter] public EventCallback<Ram> OnSubmit { get; set; }
+    [Parameter] public EventCallback<Ram?> OnSubmit { get; set; }
 
     [Parameter] public string? TestIdPrefix { get; set; }
 
@@ -127,6 +140,14 @@
                 };
         }
     }
+    
+    private async Task HandleClear()
+    {
+        await OnSubmit.InvokeAsync(null);
+        await Close();
+    }
+
+    
 
     private async Task HandleValidSubmit()
     {

+ 2 - 2
Shared.Rcl/Servers/ServerCardComponent.razor

@@ -348,10 +348,10 @@
         _isRamModalOpen = true;
     }
 
-    private async Task HandleRamSubmit(Ram value)
+    private async Task HandleRamSubmit(Ram? value)
     {
         _isRamModalOpen = false;
-        await UpdateUseCase.ExecuteAsync(Server.Name, value.Size, value.Mts, Server.Ipmi);
+        await UpdateUseCase.ExecuteAsync(Server.Name, value?.Size ?? 0, value?.Mts ?? 0, Server.Ipmi);
         Server = await GetByNameUseCase.ExecuteAsync(Server.Name);
     }