import $ from 'jquery';
import { JSONRPC } from '@/json-rpc.js';
let resourcesData = {
domains: [],
subnets: [],
ASN: []
};
function escapeHtml(value) {
return String(value)
.replace(/&/g, '&')
.replace(//g, '>')
.replace(/"/g, '"')
.replace(/'/g, ''');
}
function buildAsnLink(asn) {
const numericPart = String(asn).match(/\d+/);
const asnId = numericPart ? numericPart[0] : String(asn).replace(/[^a-zA-Z0-9]/g, '');
const safeId = asnId.length ? asnId : '0';
return `https://bgp.he.net/AS${encodeURIComponent(safeId)}`;
}
function normalizeArray(values) {
if (!Array.isArray(values)) {
return [];
}
return values
.map(item => (item === null || item === undefined) ? '' : String(item))
.filter(item => item.length > 0)
.sort((a, b) => a.localeCompare(b, 'ru', { numeric: true, sensitivity: 'base' }));
}
async function fetchResources() {
try {
const result = await JSONRPC.NetworkManager.getOutputResources();
resourcesData = {
domains: normalizeArray(result?.domains),
subnets: normalizeArray(result?.subnets),
ASN: normalizeArray(result?.ASN)
};
return true;
} catch (error) {
console.error('Ошибка при загрузке сетевых ресурсов:', error);
resourcesData = {
domains: [],
subnets: [],
ASN: []
};
return false;
}
}
function renderAsnSection(items) {
const content = items.length
? items.map(item => `${escapeHtml(item)}`).join(', ')
: 'Данные отсутствуют';
return `
${content}Автономные системы (ASN)
Загрузка сетевых ресурсов...
Загрузка сетевых ресурсов...
'); const success = await fetchResources(); if (success) { renderResources($container); } else { $container.html(''); } }, unmount: () => { resourcesData = { domains: [], subnets: [], ASN: [] }; } };