This commit is contained in:
parent b77725b9f9
commit 8b936603cc
3 changed files with 86 additions and 19 deletions

View file

@ -96,24 +96,86 @@ export const TableScanner = ({ devices }: TableScannerProps) => {
}); });
}; };
const defaultOrder = useMemo(() => ([
t('settings-status'),
t('settings-name'),
t('settings-vendor'),
t('settings-ipAddress'),
t('settings-openPorts'),
t('settings-lastActivity'),
t('settings-note'),
t('settings-action'),
]), [t]);
const normalizedOrders = useMemo(
() => (Array.isArray(ordersColumns) && ordersColumns.length ? ordersColumns : defaultOrder),
[ordersColumns, defaultOrder]
);
const normalizedDisabled = useMemo(
() => (Array.isArray(disabledColumns) ? disabledColumns : []),
[disabledColumns]
);
const visibleColumns = useMemo(() => { const visibleColumns = useMemo(() => {
return ordersColumns const normalizeColumnName = (column: string) => column?.toLowerCase();
.filter(column => !disabledColumns.includes(ordersColumns.indexOf(column)))
.map(column => { const columnToKey = (column: string) => {
switch(column) { const col = normalizeColumnName(column);
case 'Онлайн': return 'status'; switch (col) {
case 'Имя': return 'name'; case 'settings-status':
case 'Производитель': return 'vendor'; case normalizeColumnName(t('settings-status')):
case 'IP адрес': return 'ip'; case 'онлайн':
case 'Открытые порты': return 'ports'; case 'status':
case 'Последняя активность': return 'activity'; return 'status';
case 'Заметка': return 'note'; case 'settings-name':
case 'Действие': return 'action'; case normalizeColumnName(t('settings-name')):
default: return ''; case 'имя':
case 'name':
return 'name';
case 'settings-vendor':
case normalizeColumnName(t('settings-vendor')):
case 'производитель':
case 'vendor':
return 'vendor';
case 'settings-ipaddress':
case normalizeColumnName(t('settings-ipAddress')):
case 'ip адрес':
case 'ip address':
case 'ip':
return 'ip';
case 'settings-openports':
case normalizeColumnName(t('settings-openPorts')):
case 'открытые порты':
case 'open ports':
case 'ports':
return 'ports';
case 'settings-lastactivity':
case normalizeColumnName(t('settings-lastActivity')):
case 'последняя активность':
case 'last activity':
case 'activity':
return 'activity';
case 'settings-note':
case normalizeColumnName(t('settings-note')):
case 'заметка':
case 'note':
return 'note';
case 'settings-action':
case normalizeColumnName(t('settings-action')):
case 'действие':
case 'action':
return 'action';
default:
return '';
} }
}) };
return normalizedOrders
.map((column, index) => ({ column, index }))
.filter(({ index }) => !normalizedDisabled.includes(index))
.map(({ column }) => columnToKey(column))
.filter(Boolean); .filter(Boolean);
}, [ordersColumns, disabledColumns]); }, [normalizedOrders, normalizedDisabled, t]);
// Пагинация // Пагинация
const indexOfLastDevice = currentPage * devicesPerPage; const indexOfLastDevice = currentPage * devicesPerPage;

View file

@ -169,6 +169,7 @@ export default function UserScanner() {
} }
setScanInitiated(true); setScanInitiated(true);
const res = await NetworkService.scanUser(ipAddress, ipScanning); const res = await NetworkService.scanUser(ipAddress, ipScanning);
console.log(res)
setDevices(res.data.devices || []); setDevices(res.data.devices || []);
} catch (err) { } catch (err) {
console.error("Ошибка сканирования сети:", err); console.error("Ошибка сканирования сети:", err);

View file

@ -37,8 +37,12 @@ export const I18nProvider = ({ children, initialLanguage }: I18nProviderProps) =
await Promise.all( await Promise.all(
namespaces.map(async (ns) => { namespaces.map(async (ns) => {
try { try {
const data = await import(`../../../public/locales/${lang}/${ns}.json`); const res = await fetch(`/locales/${lang}/${ns}.json`);
newTranslations[lang][ns] = data.default || data; if (!res.ok) {
throw new Error(`HTTP ${res.status}`);
}
const data = await res.json();
newTranslations[lang][ns] = data;
} catch (e) { } catch (e) {
console.error(`Failed to load ${lang}/${ns} translations`, e); console.error(`Failed to load ${lang}/${ns} translations`, e);
newTranslations[lang][ns] = {}; newTranslations[lang][ns] = {};