From bf6735a4703a602da950ad0fbb34c5d00ceef96d Mon Sep 17 00:00:00 2001 From: shats Date: Thu, 13 Nov 2025 15:43:27 +0700 Subject: [PATCH] fix: Replace sidebar with dropdown for server selection in FilterManager --- frontend/src/FilterManager.jsx | 365 ++++++++++++++++++++------------- 1 file changed, 227 insertions(+), 138 deletions(-) diff --git a/frontend/src/FilterManager.jsx b/frontend/src/FilterManager.jsx index 66296bf..8fca7e5 100644 --- a/frontend/src/FilterManager.jsx +++ b/frontend/src/FilterManager.jsx @@ -70,8 +70,8 @@ function FilterManager() { const [sortBy, setSortBy] = useState('community'); // community | gateway | description const [sortDir, setSortDir] = useState('asc'); // asc | desc - // Состояние sidebar - const [sidebarCollapsed, setSidebarCollapsed] = useState(false); + // Состояние управления серверами + const [serverListModalOpen, setServerListModalOpen] = useState(false); const [serverSearch, setServerSearch] = useState(''); // Состояние для инлайн-редактирования и массовых действий @@ -718,140 +718,107 @@ function FilterManager() { return ( -
- {/* Боковая панель для выбора сервера */} - {!sidebarCollapsed && ( - - )} - - {/* Кнопка для разворачивания боковой панели */} - {sidebarCollapsed && ( -
- -
- )} - - {/* Основной контент */} -
-
-
-
-
-

- Управление фильтрами frouting -

-
- +
+
+ {/* Dropdown выбора сервера */} +
+ +
+
+ setServerSearch(e.target.value)} + onClick={(e) => e.stopPropagation()} + /> +
+
+ {activeServers.length > 0 && ( + <> +
Активные серверы
+ {activeServers.map(server => ( + { + e.preventDefault(); + setSelectedServer(server); + }} + > +
+ + {server.name} +
+
+ ))} + + )} + {inactiveServers.length > 0 && ( + <> +
+
Неактивные серверы
+ {inactiveServers.map(server => ( + { + e.preventDefault(); + setSelectedServer(server); + }} + > +
+ + {server.name} +
+
+ ))} + + )} +
+ +
-
- {selectedServer && ( -
-
+ + {selectedServer && ( + <> -
-
- )} + + )} +
+
-
-
+
+
{/* Уведомления */} {error && (
@@ -1136,7 +1104,6 @@ function FilterManager() { )}
-
{/* Модальные окна */} + {/* Модальное окно управления серверами */} + setServerListModalOpen(false)} + title="Управление серверами" + size="xl" + > +
+ +
+ + {servers.length === 0 ? ( +
+
+ +
+

Нет серверов

+

+ Создайте первый сервер для работы с фильтрами +

+
+ ) : ( +
+ + + + + + + + + + + {servers.map(server => ( + + + + + + + ))} + +
НазваниеОписаниеСтатус
+
+ + {server.name} +
+
{server.description || '—'} + + {server.enabled ? 'Активен' : 'Неактивен'} + + +
+
+ { + const updatedServers = servers.map(s => + s.id === server.id ? { ...s, enabled: !s.enabled } : s + ); + try { + await api.post(`/server-configs`, { servers: updatedServers }); + setServers(updatedServers); + } catch (error) { + setError('Не удалось обновить статус сервера'); + } + }} + title={server.enabled ? 'Деактивировать' : 'Активировать'} + /> +
+ + + + +
+
+
+ )} +
+