From f14b7989b536aa4b445e1ecfa78dacab284e1313 Mon Sep 17 00:00:00 2001 From: shats Date: Sun, 7 Dec 2025 02:57:50 +0700 Subject: [PATCH] feat: Enhance community filtering logic in CommunityAutocomplete to support partial matches and improved search capabilities, including handling values with colons. --- frontend/src/FilterManager.jsx | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/frontend/src/FilterManager.jsx b/frontend/src/FilterManager.jsx index 1f14936..a91bc60 100644 --- a/frontend/src/FilterManager.jsx +++ b/frontend/src/FilterManager.jsx @@ -84,12 +84,24 @@ function CommunityAutocomplete({ label, value, onChange, communities = [], requi // Фильтруем communities по введённому тексту const filteredCommunities = communities.filter(c => { - const search = inputValue.toLowerCase(); - return ( - (c.value && c.value.toLowerCase().includes(search)) || - (c.name && c.name.toLowerCase().includes(search)) || - (c.description && c.description.toLowerCase().includes(search)) - ); + const search = inputValue.toLowerCase().trim(); + if (!search) return true; + + // Поиск по полному значению + if (c.value && c.value.toLowerCase().includes(search)) return true; + + // Поиск по части после двоеточия (например, "120" найдёт "65001:120") + if (c.value && c.value.includes(':')) { + const parts = c.value.split(':'); + if (parts[1] && parts[1].toLowerCase().includes(search)) return true; + if (parts[0] && parts[0].toLowerCase().includes(search)) return true; + } + + // Поиск по названию и описанию + if (c.name && c.name.toLowerCase().includes(search)) return true; + if (c.description && c.description.toLowerCase().includes(search)) return true; + + return false; }); useEffect(() => {