import {useIpStore} from "../../ipStore"; import {NetworkService} from "../../../api/request"; const createNodesSettings = () => { const { ipAddress } = useIpStore.getState(); return [ { id: 'rescan-nodes', sectionId: 'Узлы подсети', label: 'Интервальное сканирование', type: 'boolean', defaultValue: false, }, { id: 'interval-nodes', sectionId: 'Узлы подсети', label: 'Интервал сканирования узлов (мин)', type: 'number', defaultValue: 60, min: 1, max: 2880 }, { id: 'netnames-nodes', sectionId: 'Узлы подсети', label: 'Отображаемые имена при отсутствии', type: 'select', defaultValue: 'ip', options: [ { value: 'ip', label: 'IP адрес' }, { value: 'unknown', label: 'Неизвестно' }, ], }, { id: 'paginate-nodes', type: 'number', label: 'Количество строк в таблице', sectionId: 'Узлы подсети', defaultValue: 20, min: 1, }, { id: 'customize-nodes', type: 'button', label: 'Отображение узлов', sectionId: 'Узлы подсети', defaultValue: 'Настроить', }, { id: 'clean-nodes', type: 'button', label: 'Очистить данные сессии', sectionId: 'Узлы подсети', defaultValue: 'Очистить', action: async ()=>{ try { const res = await NetworkService.clearSubnet(ipAddress); console.log(res) }catch (e){ console.error(e); alert('Данные не были удалены: '+ e) } }, }, { id: "export-nodes", type: "button", label: "Экспорт данных узлов", sectionId: "Узлы подсети", defaultValue: "Экспортировать", action: async () => { try { const response = await NetworkService.exportDevices(ipAddress); const { filePath } = await window.electronAPI.showSaveDialog({ title: "Сохранить данные узлов", defaultPath: "nodes_export.json", filters: [{ name: "JSON", extensions: ["json"] }], }); if (filePath) { await window.electronAPI.writeFile( filePath, JSON.stringify(response.data, null, 2) ); alert("Данные успешно экспортированы!"); } } catch (e: any) { alert("Ошибка экспорта: " + e.message); } }, }, { id: 'table-columns-order', type: 'hidden', label: '', sectionId: 'Узлы подсети', defaultValue: [ 'Онлайн', 'Имя', 'Производитель', 'IP адрес', 'Открытые порты', 'Последняя активность', 'Заметка', 'Действие' ] }, { id: 'table-columns-disabled', label: '', sectionId: 'Узлы подсети', type: 'hidden', defaultValue: [] } ] as const; }; export const nodesSettings = createNodesSettings();