Просмотр исходного кода

Added resource kind to breadcrumbs

Tim Jones 1 месяц назад
Родитель
Сommit
84bb18dbda

+ 6 - 2
RackPeek.Domain/Resources/Resource.cs

@@ -15,8 +15,12 @@ public abstract class Resource
 {
     private static readonly string[] HardwareTypes =
         ["server", "switch", "firewall", "router", "accesspoint", "desktop", "laptop", "ups"];
-    
-    public static bool IsHardware(string kind) => HardwareTypes.Contains(kind.Trim().ToLower());
+
+    public static bool IsHardware(string kind)
+    {
+        kind = kind.Trim().ToLower();
+        return kind == "hardware" || HardwareTypes.Contains(kind);
+    } 
         
     public static string GetResourceUrl(string kind, string name)
     {

+ 12 - 7
Shared.Rcl/Components/CrumbLevel.razor

@@ -1,20 +1,21 @@
 <div class="flex flex-col justify-center">
     @if (Items is null || Items.Count == 0)
     {
-        
     }
     else if (Items.Count == 1)
     {
         <div class="flex items-center h-full">
-            <a class="hover:text-white transition-colors"
+            <a class="hover:text-white transition-colors flex items-center gap-1"
                href="@Items[0].Href">
-                @Items[0].Label
+                <span>@Items[0].Label</span>
+                <span class="text-xxs text-zinc-400">
+                    (@Items[0].Kind.ToLower())
+                </span>
             </a>
         </div>
     }
     else
     {
-        <!-- Multi-parent stack -->
         <div class="flex flex-col gap-0.5">
             @for (var i = 0; i < Items.Count; i++)
             {
@@ -26,9 +27,12 @@
                         @(isLast ? "└─" : "├─")
                     </span>
 
-                    <a class="hover:text-white transition-colors"
+                    <a class="hover:text-white transition-colors flex items-center gap-1"
                        href="@crumb.Href">
-                        @crumb.Label
+                        <span>@crumb.Label</span>
+                        <span class="text-xs text-zinc-400">
+                            (@crumb.Kind)
+                        </span>
                     </a>
                 </div>
             }
@@ -37,5 +41,6 @@
 </div>
 
 @code {
-    [Parameter, EditorRequired] public List<ResourceBreadCrumbComponent.Breadcrumb> Items { get; set; } = new();
+    [Parameter, EditorRequired] 
+    public List<ResourceBreadCrumbComponent.Breadcrumb> Items { get; set; } = new();
 }

+ 8 - 1
Shared.Rcl/Components/ResourceBreadCrumbComponent.razor

@@ -19,6 +19,8 @@
 @code {
     [Parameter, EditorRequired] 
     public ResourceType ResourceType { get; set; }
+    
+    public string Kind { get; set; }
 
     [Parameter, EditorRequired] 
     public string ResourceName { get; set; } = default!;
@@ -27,6 +29,7 @@
 
     protected override async Task OnParametersSetAsync()
     {
+        Kind = await Repo.GetKind(ResourceName) ?? "";
         Levels.Clear();
 
         switch (ResourceType)
@@ -34,6 +37,7 @@
             case ResourceType.Hardware:
                 AddLevel(new Breadcrumb(
                     ResourceName,
+                    Kind,
                     Resource.GetResourceUrl("hardware", ResourceName)));
                 break;
 
@@ -58,6 +62,7 @@
 
         AddLevel(new Breadcrumb(
             name,
+            kind,
             Resource.GetResourceUrl(kind, name)));
     }
 
@@ -72,6 +77,7 @@
                 .OrderBy(x => x.Name, StringComparer.OrdinalIgnoreCase)
                 .Select(x => new Breadcrumb(
                     x.Name,
+                    x.Kind,
                     Resource.GetResourceUrl(x.Kind, x.Name)));
 
             var systems = items
@@ -79,6 +85,7 @@
                 .OrderBy(x => x.Name, StringComparer.OrdinalIgnoreCase)
                 .Select(x => new Breadcrumb(
                     x.Name,
+                    x.Kind,
                     Resource.GetResourceUrl(x.Kind, x.Name)));
 
             AddLevel(hardware);
@@ -145,5 +152,5 @@
             Levels.Add(list);
     }
 
-    public record Breadcrumb(string Label, string Href);
+    public record Breadcrumb(string Label, string Kind, string Href);
 }

+ 2 - 1
Shared.Rcl/Hardware/HardwareDetailsPage.razor

@@ -27,7 +27,8 @@
 
 <ResourceBreadCrumbComponent
     ResourceType="ResourceType.Hardware"
-    ResourceName="@HardwareName"/>
+    ResourceName="@HardwareName"
+    />
 
 <div class="min-h-screen bg-zinc-950 text-zinc-200 font-mono p-6">
     @if (_hardware is null && !_loading)