gonets/FRONT/DEV/src/store/settings/config/nodesSettings.ts
test ee350c1852
Some checks failed
ci/woodpecker/manual/woodpecker Pipeline failed
Добавление настроек и их функциональности
2025-07-04 15:07:41 +05:00

120 lines
3.9 KiB
TypeScript

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();