diff --git a/frontend/src/NetworkConfigManager.jsx b/frontend/src/NetworkConfigManager.jsx index c607e24..91886e7 100644 --- a/frontend/src/NetworkConfigManager.jsx +++ b/frontend/src/NetworkConfigManager.jsx @@ -552,7 +552,31 @@ function NetworkConfigManager() { // === Копирование кода MikroTik === const handleCopyMikrotikCode = async () => { - await copyToClipboard(generatedMikrotikCode); + try { + if (navigator.clipboard && navigator.clipboard.writeText) { + await navigator.clipboard.writeText(generatedMikrotikCode); + notify.success('Код скопирован в буфер обмена!'); + } else { + // Fallback для старых браузеров + const textArea = document.createElement('textarea'); + textArea.value = generatedMikrotikCode; + textArea.style.position = 'fixed'; + textArea.style.left = '-999999px'; + document.body.appendChild(textArea); + textArea.focus(); + textArea.select(); + try { + document.execCommand('copy'); + notify.success('Код скопирован в буфер обмена!'); + } catch (err) { + notify.error('Не удалось скопировать код'); + } + document.body.removeChild(textArea); + } + } catch (err) { + console.error('Error copying to clipboard:', err); + notify.error('Не удалось скопировать код'); + } }; // === Получение цвета провайдера === @@ -1621,6 +1645,8 @@ function NetworkConfigManager() { show={mikrotikCodeModalOpen} config={generatedMikrotikCode} mode="advanced" + title="Предварительный просмотр конфигурации" + description="Конфигурация MikroTik RouterOS для рекурсивных маршрутов" onClose={() => setMikrotikCodeModalOpen(false)} onCopy={handleCopyMikrotikCode} /> diff --git a/frontend/src/components/filter/PreviewConfigModal.jsx b/frontend/src/components/filter/PreviewConfigModal.jsx index e197463..379c03f 100644 --- a/frontend/src/components/filter/PreviewConfigModal.jsx +++ b/frontend/src/components/filter/PreviewConfigModal.jsx @@ -1,12 +1,13 @@ -import { IconFilter, IconCopy } from '@tabler/icons-react'; +import { IconFilter, IconCopy, IconEye } from '@tabler/icons-react'; /** * Модальное окно предварительного просмотра конфигурации */ -function PreviewConfigModal({ show, config, mode, onClose, onCopy }) { +function PreviewConfigModal({ show, config, mode, onClose, onCopy, title, description }) { if (!show) return null; const getModalTitle = () => { + if (title) return title; if (mode === 'simple') { return 'Предварительный просмотр конфигурации MikroTik (упрощённый режим)'; } else if (mode === 'advanced') { @@ -25,7 +26,16 @@ function PreviewConfigModal({ show, config, mode, onClose, onCopy }) { }; const getConfigInfo = () => { - if (config.includes('// Сначала выберите сервер') || config.includes('// Нет фильтров для генерации конфигурации')) { + if (description) { + return ( +
++ +{config}+Инструкция по применению:
++
+- Скопируйте конфигурацию в буфер обмена
+- Подключитесь к MikroTik через SSH или Winbox
+- Вставьте конфигурацию в терминал
+- Проверьте применение командой:
+/routing filter printили/ip route print