2025-07-04 15:07:41 +05:00
|
|
|
import {useIpStore} from "../../ipStore";
|
|
|
|
|
import {NetworkService} from "../../../api/request";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const createNodesSettings = () => {
|
|
|
|
|
const { ipAddress } = useIpStore.getState();
|
|
|
|
|
|
|
|
|
|
return [
|
2025-07-02 17:38:09 +05:00
|
|
|
{
|
|
|
|
|
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: 'Очистить',
|
2025-07-04 15:07:41 +05:00
|
|
|
action: async ()=>{
|
|
|
|
|
try {
|
|
|
|
|
const res = await NetworkService.clearSubnet(ipAddress);
|
|
|
|
|
console.log(res)
|
|
|
|
|
}catch (e){
|
|
|
|
|
console.error(e);
|
|
|
|
|
alert('Данные не были удалены: '+ e)
|
|
|
|
|
}
|
|
|
|
|
},
|
2025-07-02 17:38:09 +05:00
|
|
|
},
|
2025-07-04 15:07:41 +05:00
|
|
|
{
|
|
|
|
|
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;
|
|
|
|
|
};
|
2025-07-02 17:38:09 +05:00
|
|
|
|
2025-07-04 15:07:41 +05:00
|
|
|
export const nodesSettings = createNodesSettings();
|