fix: Update service to use display_index as the main sort order (#60)

* fix: Update service to use display_index as the main sort order

* chore: auto-fix linting and formatting issues

* Update src/types/nezha-api.ts

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

---------

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