diff --git a/frontend/src/MikrotikBackupsManager.jsx b/frontend/src/MikrotikBackupsManager.jsx index d76ab56..fc1a66f 100644 --- a/frontend/src/MikrotikBackupsManager.jsx +++ b/frontend/src/MikrotikBackupsManager.jsx @@ -7,6 +7,7 @@ import TableSkeleton from './components/TableSkeleton.jsx'; import EmptyState from './components/EmptyState.jsx'; import Tooltip from './components/Tooltip.jsx'; import DataTable from './components/DataTable.jsx'; +import { FullscreenModal } from './components/Modal.jsx'; import { countryToFlag } from './utils/serverUtils.js'; import { IconRefresh, @@ -139,6 +140,7 @@ function MikrotikBackupsManager() { const [viewLoading, setViewLoading] = useState(false); const [diffResult, setDiffResult] = useState(null); const [diffLoading, setDiffLoading] = useState(false); + const [diffModalOpen, setDiffModalOpen] = useState(false); // UI-состояние выбора сервера для просмотра бэкапов (в стиле /filters) const [serverSearch, setServerSearch] = useState(''); @@ -364,6 +366,7 @@ function MikrotikBackupsManager() { return; } try { + setDiffModalOpen(true); setDiffLoading(true); setDiffResult(null); const res = await api.post('/mikrotik/backups/diff', { @@ -817,97 +820,113 @@ function MikrotikBackupsManager() { - {(viewConfigKey || diffResult) && ( + {viewConfigKey && (
- {viewConfigKey && ( -
-
-
-
-
Содержимое бэкапа
-
- {viewConfigKey} -
-
-
- +
+
+
+
+
Содержимое бэкапа
+
+ {viewConfigKey}
-
- {viewLoading ? ( - - ) : ( -
-                      {viewConfigText || '# Нет данных для отображения'}
-                    
- )} +
+
-
- )} - - {diffResult && ( -
-
-
-
-
Сравнение бэкапов
-
- {diffResult.same - ? 'Конфигурации идентичны' - : 'Конфигурации отличаются — проверьте различия перед откатом.'} - {!diffResult.same && ( - - удалено (A) - {' · '} - добавлено (B) - - )} -
-
-
-
- {diffLoading ? ( - - ) : ( -
-
-
- A: {diffResult.a?.key} -
- -
-
-
- B: {diffResult.b?.key} -
- -
-
- )} -
+
+ {viewLoading ? ( + + ) : ( +
+                    {viewConfigText || '# Нет данных для отображения'}
+                  
+ )}
- )} +
)} + + { + setDiffModalOpen(false); + }} + title="Сравнение бэкапов MikroTik" + footer={( +
+
+ {diffResult?.same + ? 'Конфигурации идентичны' + : 'Конфигурации отличаются — проверьте различия перед откатом.'} +
+ +
+ )} + > + {diffLoading ? ( + + ) : !diffResult ? ( +
+ Не удалось загрузить результат сравнения. Попробуйте ещё раз. +
+ ) : ( + <> + {!diffResult.same && ( +
+ + Конфигурации отличаются — слева A, справа B. Проверьте различия перед откатом. +
+ )} +
+
+
+ A: {diffResult.a?.key} +
+ +
+
+
+ B: {diffResult.b?.key} +
+ +
+
+ {!diffResult.same && ( +
+ удалено (A) + {' · '} + добавлено (B) +
+ )} + + )} +
); }