From ce13ca78453b1cd14a268371d03c516ea435ed06 Mon Sep 17 00:00:00 2001 From: shats Date: Tue, 10 Feb 2026 15:52:05 +0700 Subject: [PATCH] feat(MikrotikBackupsManager): add server search functionality to enhance server selection UI --- frontend/src/MikrotikBackupsManager.jsx | 124 +++++++++++++++++++++--- 1 file changed, 113 insertions(+), 11 deletions(-) diff --git a/frontend/src/MikrotikBackupsManager.jsx b/frontend/src/MikrotikBackupsManager.jsx index 4240cfa..b665f7c 100644 --- a/frontend/src/MikrotikBackupsManager.jsx +++ b/frontend/src/MikrotikBackupsManager.jsx @@ -5,8 +5,8 @@ import PageHeader from './components/PageHeader.jsx'; import TableSkeleton from './components/TableSkeleton.jsx'; import EmptyState from './components/EmptyState.jsx'; import Tooltip from './components/Tooltip.jsx'; -import ServerAutocompleteInput from './components/ServerAutocompleteInput.jsx'; import DataTable from './components/DataTable.jsx'; +import { countryToFlag } from './utils/serverUtils.js'; import { IconRefresh, IconAlertTriangle, @@ -14,6 +14,7 @@ import { IconArrowsLeftRight, IconDownload, IconCopy, + IconSearch, } from '@tabler/icons-react'; function formatDateTime(value) { @@ -59,6 +60,9 @@ function MikrotikBackupsManager() { const [diffResult, setDiffResult] = useState(null); const [diffLoading, setDiffLoading] = useState(false); + // UI-состояние выбора сервера для просмотра бэкапов (в стиле /filters) + const [serverSearch, setServerSearch] = useState(''); + // UI-состояние для таблицы выбора серверов автобэкапов const [backupSearch, setBackupSearch] = useState(''); const [backupSortField, setBackupSortField] = useState('ip'); @@ -92,6 +96,27 @@ function MikrotikBackupsManager() { [jumphostServers], ); + // Список серверов для выбора "текущего сервера" бэкапов с поиском (как в /filters) + const visibleJumphostServers = useMemo(() => { + if (!serverSearch.trim()) return jumphostInputServers; + const q = serverSearch.trim().toLowerCase(); + return jumphostInputServers.filter((s) => { + const fields = [ + s.id, + s.ip, + s.dns, + s.extIp, + s.internalIp, + s.country, + s.provider, + ] + .filter(Boolean) + .join(' ') + .toLowerCase(); + return fields.includes(q); + }); + }, [jumphostInputServers, serverSearch]); + const currentServer = useMemo( () => jumphostServers.find((s) => makeServerId(s) === selectedServerId) || null, [jumphostServers, selectedServerId], @@ -337,16 +362,6 @@ function MikrotikBackupsManager() { const actions = (
-
- -