From 9edaa2ff277d6ae808675962b2aa10411c806d94 Mon Sep 17 00:00:00 2001
From: niku <nvdpoel01@gmail.com>
Date: Sat, 10 Jun 2023 21:55:55 +0200
Subject: [PATCH] Optimized resource filtering

---
 app/nodes/[node]/index.tsx | 34 ++++++++++++++++++----------------
 1 file changed, 18 insertions(+), 16 deletions(-)

diff --git a/app/nodes/[node]/index.tsx b/app/nodes/[node]/index.tsx
index 2f1c610..be2277e 100644
--- a/app/nodes/[node]/index.tsx
+++ b/app/nodes/[node]/index.tsx
@@ -50,28 +50,30 @@ export default function NodePage() {
   const node = useNode(nodeName);
   const [searchFilter, setSearchFilter] = useState("");
 
+  const filter = searchFilter.toLocaleLowerCase();
+  const filterResources = (resource) => {
+    return (
+      resource.name.toLowerCase().includes(filter) ||
+      resource.vmid.toString().includes(filter)
+    );
+  };
+
   const sortedLXCs = useMemo(() => {
     if (!node.lxc.isSuccess) return [];
-    const filter = searchFilter.toLocaleLowerCase();
-    return node.lxc.data
-      .filter(
-        (lxc) =>
-          lxc.name.toLowerCase().includes(filter) ||
-          lxc.vmid.toString().includes(filter)
-      )
-      .sort((a, b) => a.vmid - b.vmid);
+    let data = node.lxc.data;
+    if (searchFilter.length > 0) {
+      data = data.filter(filterResources);
+    }
+    return data.sort((a, b) => a.vmid - b.vmid);
   }, [node.lxc.data, searchFilter]);
 
   const sortedVMs = useMemo(() => {
     if (!node.qemu.isSuccess) return [];
-    const filter = searchFilter.toLocaleLowerCase();
-    return node.qemu.data
-      .filter(
-        (qemu) =>
-          qemu.name.toLowerCase().includes(filter) ||
-          qemu.vmid.toString().includes(filter)
-      )
-      .sort((a, b) => a.vmid - b.vmid);
+    let data = node.qemu.data;
+    if (searchFilter.length > 0) {
+      data = data.filter(filterResources);
+    }
+    return data.sort((a, b) => a.vmid - b.vmid);
   }, [node.qemu.data, searchFilter]);
 
   return (