From 8a993097730753187c96cfc2132e1bceeaa218ec Mon Sep 17 00:00:00 2001 From: shats Date: Sat, 6 Dec 2025 23:15:12 +0700 Subject: [PATCH] feat: Add inventory server fetching and display logic in FilterManager to enhance server detail presentation and improve user experience. --- frontend/src/FilterManager.jsx | 42 ++++++++++++++++++++++++++++++---- 1 file changed, 37 insertions(+), 5 deletions(-) diff --git a/frontend/src/FilterManager.jsx b/frontend/src/FilterManager.jsx index 55fed28..6742a4a 100644 --- a/frontend/src/FilterManager.jsx +++ b/frontend/src/FilterManager.jsx @@ -70,6 +70,19 @@ function FilterManager() { const [sortBy, setSortBy] = useState('community'); // community | gateway | description const [sortDir, setSortDir] = useState('asc'); // asc | desc + // Инвентарный список servers (dns/ip) для сопоставления по имени + const [inventoryServers, setInventoryServers] = useState([]); + useEffect(() => { + (async () => { + try { + const res = await api.get('/servers'); + setInventoryServers(Array.isArray(res.data) ? res.data : []); + } catch (e) { + // не блокируем UI, если нет инвентаря + } + })(); + }, []); + // Префилл из query (?community=..., ?serverId=..., ?server=...) без автоселекта по умолчанию const queryParamsRef = useRef({ community: null, serverId: null, serverName: null }); const serverPrefillDoneRef = useRef(false); @@ -1002,11 +1015,30 @@ function FilterManager() {
{server.name}
Активен - {server.description && ( -
- {server.description} -
- )} + {(() => { + const meta = inventoryServers.find( + (s) => + String(s.dns || '').trim() === server.name || + String(s.hostName || '').trim() === server.name || + String(s.ip || '').trim() === server.name + ); + if (meta) { + const line = [meta.dns || meta.hostName, meta.ip].filter(Boolean).join(' · '); + return ( +
+ {line} +
+ ); + } + if (server.description) { + return ( +
+ {server.description} +
+ ); + } + return null; + })()}