diff --git a/src/components/NetworkChart.tsx b/src/components/NetworkChart.tsx index 89092ba..a6afa5e 100644 --- a/src/components/NetworkChart.tsx +++ b/src/components/NetworkChart.tsx @@ -177,18 +177,23 @@ export function NetworkChart({ const formattedData = formatData(monitorData.data); - const monitorIdByName = new Map( - monitorData.data.map((item) => [item.monitor_name, item.monitor_id]), + const monitorInfoByName = new Map( + monitorData.data.map((item) => [ + item.monitor_name, + { id: item.monitor_id, displayIndex: item.display_index }, + ]), ); const chartDataKey = Object.keys(transformedData).sort((a, b) => { - const aId = monitorIdByName.get(a); - const bId = monitorIdByName.get(b); - if (aId === undefined && bId === undefined) { - return a.localeCompare(b); - } - if (aId === undefined) return 1; - if (bId === undefined) return -1; - return aId - bId; + const aInfo = monitorInfoByName.get(a); + const bInfo = monitorInfoByName.get(b); + if (!aInfo && !bInfo) return a.localeCompare(b); + if (!aInfo) return 1; + if (!bInfo) return -1; + + const indexDiff = (bInfo.displayIndex ?? 0) - (aInfo.displayIndex ?? 0); + if (indexDiff !== 0) return indexDiff; + + return aInfo.id - bInfo.id; }); const initChartConfig = { diff --git a/src/locales/gl/translation.json b/src/locales/gl/translation.json index 79dec92..3de11df 100644 --- a/src/locales/gl/translation.json +++ b/src/locales/gl/translation.json @@ -1,137 +1,137 @@ { - "nezha": "Monitoreo Nezha", - "theme": { - "light": "Claro", - "dark": "Escuro", - "system": "Sistema" - }, - "overview": "Visión xeral", - "dashboard": "Panel de control", - "login": "Inciar sesión", - "online": "Activo", - "offline": "Desconectado", - "whereTheTimeIs": "Onde está a hora", - "refreshing": "Recargando", - "info": { - "websocketConnecting": "Conectando o WebSocket", - "websocketConnected": "WebSocket conectado", - "websocketDisconnected": "WebSocket desconectado", - "processing": "Procesando..." - }, - "serverOverview": { - "totalServers": "Servidores totais", - "onlineServers": "Servidores en liña", - "offlineServers": "Servidores desconectados", - "totalBandwidth": "Ancho de banda total", - "speed": "Velocidade", - "network": "Rede" - }, - "map": { - "Distributions": "Os servidores están distribuidos en", - "Regions": "Rexións", - "Servers": "servidores" - }, - "serverCard": { - "mem": "MEM", - "stg": "STG", - "days": "Dias", - "hours": "Horas", - "upload": "Subir", - "download": "Descargar", - "system": "Sistema", - "uptime": "Tempo activo", - "totalUpload": "Subir", - "totalDownload": "Descargar" - }, - "cycleTransfer": { - "used": "empregado", - "total": "total", - "nextUpdate": "próxima actualización" - }, - "serviceTracker": { - "noService": "Non hai información do servizo", - "uptime": "Tempo de actividade", - "delay": "Atraso", - "daysAgo": "dias atrás", - "today": "Hoxe", - "loading": "Cargando..." - }, - "serverDetail": { - "status": "Estado", - "online": "Activo", - "days": "Días", - "hours": "Horas", - "offline": "Desconectado", - "unknown": "Descoñecido", - "uptime": "Tempo activo", - "version": "Versión", - "arch": "Arch", - "mem": "Mem", - "disk": "Disco", - "region": "Rexión", - "system": "Sistema", - "upload": "Subida", - "download": "Descarga", - "lastActive": "Última vez activo", - "temperature": "Temperatura", - "bootTime": "Tempo de reinicio" - }, - "serverDetailChart": { - "process": "Proceso", - "disk": "Disco", - "mem": "Mem", - "swap": "Swap", - "upload": "Subida", - "download": "Descarga" - }, - "footer": { - "themeBy": "Tema por " - }, - "language": { - "zh-CN": "简体中文 (Chinés simplificado)", - "zh-TW": "繁體中文 (Chinés tradicional)", - "en-US": "English (Inglés)", - "de-DE": "Deutsch (Alemán)", - "es-ES": "Español", - "ru-RU": "Русский (Ruso)", - "ta-IN": "தமிழ் (Tamil)" - }, - "error": { - "pageNotFound": "Páxina non atopada", - "backToHome": "Voltar áo inicio" - }, - "tabSwitch": { - "Detail": "Detalle", - "Network": "Rede" - }, - "monitor": { - "noData": "Non hai datos de monitor de servidor. Engada primeiro un monitor de servizo", - "avgDelay": "Latencia", - "monitorCount": "Servizos", - "packetLoss": "Pérdida de datos", - "clearSelections": "Limpar" - }, - "pwa": { - "offlineReady": "Aplicación lista para traballar desconectada (offline)", - "newContent": "Novo contido dispoñíble", - "reload": "Actualizar" - }, - "billingInfo": { - "remaining": "Restante", - "error": "erro", - "indefinite": "Indefinido", - "expired": "Expirado", - "days": "días", - "price": "Precio", - "free": "Gratis", - "usage-baseed": "Baseado no uso" - }, - "TypeCommand": "Escribe un comando ou procura...", - "NoResults": "Non se atoparon resultados.", - "Servers": "Servidores", - "Shortcuts": "Atallos", - "ToggleLightMode": "Cambiar ao modo claro", - "ToggleDarkMode": "Cambiar ao modo escuro", - "ToggleSystemMode": "Cambiar ao determinado polo sistema", - "Home": "Páxina principal" + "nezha": "Monitoreo Nezha", + "theme": { + "light": "Claro", + "dark": "Escuro", + "system": "Sistema" + }, + "overview": "Visión xeral", + "dashboard": "Panel de control", + "login": "Inciar sesión", + "online": "Activo", + "offline": "Desconectado", + "whereTheTimeIs": "Onde está a hora", + "refreshing": "Recargando", + "info": { + "websocketConnecting": "Conectando o WebSocket", + "websocketConnected": "WebSocket conectado", + "websocketDisconnected": "WebSocket desconectado", + "processing": "Procesando..." + }, + "serverOverview": { + "totalServers": "Servidores totais", + "onlineServers": "Servidores en liña", + "offlineServers": "Servidores desconectados", + "totalBandwidth": "Ancho de banda total", + "speed": "Velocidade", + "network": "Rede" + }, + "map": { + "Distributions": "Os servidores están distribuidos en", + "Regions": "Rexións", + "Servers": "servidores" + }, + "serverCard": { + "mem": "MEM", + "stg": "STG", + "days": "Dias", + "hours": "Horas", + "upload": "Subir", + "download": "Descargar", + "system": "Sistema", + "uptime": "Tempo activo", + "totalUpload": "Subir", + "totalDownload": "Descargar" + }, + "cycleTransfer": { + "used": "empregado", + "total": "total", + "nextUpdate": "próxima actualización" + }, + "serviceTracker": { + "noService": "Non hai información do servizo", + "uptime": "Tempo de actividade", + "delay": "Atraso", + "daysAgo": "dias atrás", + "today": "Hoxe", + "loading": "Cargando..." + }, + "serverDetail": { + "status": "Estado", + "online": "Activo", + "days": "Días", + "hours": "Horas", + "offline": "Desconectado", + "unknown": "Descoñecido", + "uptime": "Tempo activo", + "version": "Versión", + "arch": "Arch", + "mem": "Mem", + "disk": "Disco", + "region": "Rexión", + "system": "Sistema", + "upload": "Subida", + "download": "Descarga", + "lastActive": "Última vez activo", + "temperature": "Temperatura", + "bootTime": "Tempo de reinicio" + }, + "serverDetailChart": { + "process": "Proceso", + "disk": "Disco", + "mem": "Mem", + "swap": "Swap", + "upload": "Subida", + "download": "Descarga" + }, + "footer": { + "themeBy": "Tema por " + }, + "language": { + "zh-CN": "简体中文 (Chinés simplificado)", + "zh-TW": "繁體中文 (Chinés tradicional)", + "en-US": "English (Inglés)", + "de-DE": "Deutsch (Alemán)", + "es-ES": "Español", + "ru-RU": "Русский (Ruso)", + "ta-IN": "தமிழ் (Tamil)" + }, + "error": { + "pageNotFound": "Páxina non atopada", + "backToHome": "Voltar áo inicio" + }, + "tabSwitch": { + "Detail": "Detalle", + "Network": "Rede" + }, + "monitor": { + "noData": "Non hai datos de monitor de servidor. Engada primeiro un monitor de servizo", + "avgDelay": "Latencia", + "monitorCount": "Servizos", + "packetLoss": "Pérdida de datos", + "clearSelections": "Limpar" + }, + "pwa": { + "offlineReady": "Aplicación lista para traballar desconectada (offline)", + "newContent": "Novo contido dispoñíble", + "reload": "Actualizar" + }, + "billingInfo": { + "remaining": "Restante", + "error": "erro", + "indefinite": "Indefinido", + "expired": "Expirado", + "days": "días", + "price": "Precio", + "free": "Gratis", + "usage-baseed": "Baseado no uso" + }, + "TypeCommand": "Escribe un comando ou procura...", + "NoResults": "Non se atoparon resultados.", + "Servers": "Servidores", + "Shortcuts": "Atallos", + "ToggleLightMode": "Cambiar ao modo claro", + "ToggleDarkMode": "Cambiar ao modo escuro", + "ToggleSystemMode": "Cambiar ao determinado polo sistema", + "Home": "Páxina principal" } diff --git a/src/locales/uk/translation.json b/src/locales/uk/translation.json index b79fa7b..be0878f 100644 --- a/src/locales/uk/translation.json +++ b/src/locales/uk/translation.json @@ -1,73 +1,73 @@ { - "nezha": "Nezha Моніторинг", - "theme": { - "light": "Світло", - "dark": "Темний", - "system": "Як в Системі" - }, - "NoResults": "Немає результатів.", - "Servers": "Сервери", - "map": { - "Servers": "сервери", - "Distributions": "Сервери розподілені в", - "Regions": "Регіони" - }, - "serverCard": { - "mem": "МЕМ", - "stg": "STG", - "days": "Днів", - "hours": "Годин", - "upload": "Завантаження", - "download": "Завантажити", - "system": "Система", - "uptime": "Аптайм", - "totalUpload": "Завантажено", - "totalDownload": "Скачано" - }, - "serverDetail": { - "mem": "Мем", - "status": "Статус", - "online": "Online", - "days": "Днів", - "hours": "Годин", - "offline": "Offline", - "unknown": "Невідомо" - }, - "serverDetailChart": { - "mem": "Мем" - }, - "overview": "Огляд", - "dashboard": "Інформаційна панель", - "online": "Онлайн", - "offline": "Оффлайн", - "whereTheTimeIs": "Де час", - "refreshing": "Оновлення", - "info": { - "websocketConnecting": "WebSocket з'єднання", - "websocketConnected": "WebSocket з'єднано", - "websocketDisconnected": "WebSocket відключено", - "processing": "Обробка..." - }, - "serverOverview": { - "totalServers": "Всього Серверів", - "onlineServers": "Сервери в мережі", - "offlineServers": "Сервери не в мережі", - "totalBandwidth": "Загальна пропускна здатність", - "speed": "Швидкість", - "network": "Мережа" - }, - "cycleTransfer": { - "used": "використано", - "total": "всього", - "nextUpdate": "наступне оновлення" - }, - "serviceTracker": { - "noService": "Немає даних про сервіс", - "uptime": "Аптайм", - "delay": "Затримка", - "daysAgo": "Днів тому", - "today": "Сьогодні", - "loading": "Завантаження..." - }, - "login": "Логін" + "nezha": "Nezha Моніторинг", + "theme": { + "light": "Світло", + "dark": "Темний", + "system": "Як в Системі" + }, + "NoResults": "Немає результатів.", + "Servers": "Сервери", + "map": { + "Servers": "сервери", + "Distributions": "Сервери розподілені в", + "Regions": "Регіони" + }, + "serverCard": { + "mem": "МЕМ", + "stg": "STG", + "days": "Днів", + "hours": "Годин", + "upload": "Завантаження", + "download": "Завантажити", + "system": "Система", + "uptime": "Аптайм", + "totalUpload": "Завантажено", + "totalDownload": "Скачано" + }, + "serverDetail": { + "mem": "Мем", + "status": "Статус", + "online": "Online", + "days": "Днів", + "hours": "Годин", + "offline": "Offline", + "unknown": "Невідомо" + }, + "serverDetailChart": { + "mem": "Мем" + }, + "overview": "Огляд", + "dashboard": "Інформаційна панель", + "online": "Онлайн", + "offline": "Оффлайн", + "whereTheTimeIs": "Де час", + "refreshing": "Оновлення", + "info": { + "websocketConnecting": "WebSocket з'єднання", + "websocketConnected": "WebSocket з'єднано", + "websocketDisconnected": "WebSocket відключено", + "processing": "Обробка..." + }, + "serverOverview": { + "totalServers": "Всього Серверів", + "onlineServers": "Сервери в мережі", + "offlineServers": "Сервери не в мережі", + "totalBandwidth": "Загальна пропускна здатність", + "speed": "Швидкість", + "network": "Мережа" + }, + "cycleTransfer": { + "used": "використано", + "total": "всього", + "nextUpdate": "наступне оновлення" + }, + "serviceTracker": { + "noService": "Немає даних про сервіс", + "uptime": "Аптайм", + "delay": "Затримка", + "daysAgo": "Днів тому", + "today": "Сьогодні", + "loading": "Завантаження..." + }, + "login": "Логін" } diff --git a/src/types/nezha-api.ts b/src/types/nezha-api.ts index c49a203..44b27bc 100644 --- a/src/types/nezha-api.ts +++ b/src/types/nezha-api.ts @@ -93,6 +93,7 @@ export type ServerMonitorChart = { export interface NezhaMonitor { monitor_id: number; monitor_name: string; + display_index?: number; server_id: number; server_name: string; created_at: number[];