From eadec50e30dfff77ac7c59db133a9f6db4e5bad6 Mon Sep 17 00:00:00 2001 From: "Torsten Schulz (local)" Date: Thu, 20 Nov 2025 15:49:08 +0100 Subject: [PATCH] Feature: Add Services Status page and update navigation - Introduced a new Services Status page to monitor the status of Backend, Chat, and Daemon services. - Updated navigation structure to include the new Services Status link for main admin users. - Added German and English localization for the Services Status page, including titles, descriptions, and status messages. --- backend/controllers/navigationController.js | 4 + frontend/src/i18n/locales/de/admin.json | 38 ++ frontend/src/i18n/locales/de/navigation.json | 3 +- frontend/src/i18n/locales/en/admin.json | 38 ++ frontend/src/i18n/locales/en/navigation.json | 3 +- frontend/src/router/adminRoutes.js | 7 + .../src/views/admin/ServicesStatusView.vue | 419 ++++++++++++++++++ 7 files changed, 510 insertions(+), 2 deletions(-) create mode 100644 frontend/src/views/admin/ServicesStatusView.vue diff --git a/backend/controllers/navigationController.js b/backend/controllers/navigationController.js index cdc8379..fc1d774 100644 --- a/backend/controllers/navigationController.js +++ b/backend/controllers/navigationController.js @@ -251,6 +251,10 @@ const menuStructure = { visible: ["mainadmin", "chatrooms"], path: "/admin/chatrooms" }, + servicesStatus: { + visible: ["mainadmin"], + path: "/admin/services/status" + }, interests: { visible: ["mainadmin", "interests"], path: "/admin/interests" diff --git a/frontend/src/i18n/locales/de/admin.json b/frontend/src/i18n/locales/de/admin.json index 8d250ad..a44a439 100644 --- a/frontend/src/i18n/locales/de/admin.json +++ b/frontend/src/i18n/locales/de/admin.json @@ -230,6 +230,44 @@ "updateSuccess": "Map wurde erfolgreich aktualisiert!", "deleteSuccess": "Map wurde erfolgreich gelöscht!" } + }, + "servicesStatus": { + "title": "Service-Status", + "description": "Überwache den Status von Backend, Chat und Daemon", + "status": { + "connected": "Verbunden", + "connecting": "Verbinde...", + "disconnected": "Nicht verbunden", + "error": "Fehler", + "unknown": "Unbekannt" + }, + "backend": { + "title": "Backend", + "connected": "Backend-Service ist erreichbar und verbunden" + }, + "chat": { + "title": "Chat", + "connected": "Chat-Service ist erreichbar und verbunden" + }, + "daemon": { + "title": "Daemon", + "connected": "Daemon-Service ist erreichbar und verbunden", + "connections": { + "title": "Aktive Verbindungen", + "none": "Keine aktiven Verbindungen", + "userId": "Benutzer-ID", + "connections": "Verbindungen", + "duration": "Verbindungsdauer", + "lastPong": "Zeit seit letztem Pong", + "pingTimeouts": "Ping-Timeouts", + "pongReceived": "Pong empfangen", + "yes": "Ja", + "no": "Nein", + "notConnected": "Daemon nicht verbunden", + "sendError": "Fehler beim Senden der Anfrage", + "error": "Fehler beim Abrufen der Verbindungen" + } + } } } } \ No newline at end of file diff --git a/frontend/src/i18n/locales/de/navigation.json b/frontend/src/i18n/locales/de/navigation.json index 30cfc1d..a9b91f6 100644 --- a/frontend/src/i18n/locales/de/navigation.json +++ b/frontend/src/i18n/locales/de/navigation.json @@ -64,7 +64,8 @@ "match3": "Match3 Level", "taxiTools": "Taxi-Tools" }, - "chatrooms": "Chaträume" + "chatrooms": "Chaträume", + "servicesStatus": "Service-Status" }, "m-friends": { "manageFriends": "Freunde verwalten", diff --git a/frontend/src/i18n/locales/en/admin.json b/frontend/src/i18n/locales/en/admin.json index 0caf239..3391ff0 100644 --- a/frontend/src/i18n/locales/en/admin.json +++ b/frontend/src/i18n/locales/en/admin.json @@ -230,6 +230,44 @@ "updateSuccess": "Map updated successfully!", "deleteSuccess": "Map deleted successfully!" } + }, + "servicesStatus": { + "title": "Service Status", + "description": "Monitor the status of Backend, Chat and Daemon", + "status": { + "connected": "Connected", + "connecting": "Connecting...", + "disconnected": "Disconnected", + "error": "Error", + "unknown": "Unknown" + }, + "backend": { + "title": "Backend", + "connected": "Backend service is reachable and connected" + }, + "chat": { + "title": "Chat", + "connected": "Chat service is reachable and connected" + }, + "daemon": { + "title": "Daemon", + "connected": "Daemon service is reachable and connected", + "connections": { + "title": "Active Connections", + "none": "No active connections", + "userId": "User ID", + "connections": "connections", + "duration": "Connection Duration", + "lastPong": "Time Since Last Pong", + "pingTimeouts": "Ping Timeouts", + "pongReceived": "Pong Received", + "yes": "Yes", + "no": "No", + "notConnected": "Daemon not connected", + "sendError": "Error sending request", + "error": "Error fetching connections" + } + } } } } \ No newline at end of file diff --git a/frontend/src/i18n/locales/en/navigation.json b/frontend/src/i18n/locales/en/navigation.json index 43d7c24..7c0d47f 100644 --- a/frontend/src/i18n/locales/en/navigation.json +++ b/frontend/src/i18n/locales/en/navigation.json @@ -64,7 +64,8 @@ "match3": "Match3 Levels", "taxiTools": "Taxi Tools" }, - "chatrooms": "Chat rooms" + "chatrooms": "Chat rooms", + "servicesStatus": "Service Status" }, "m-friends": { "manageFriends": "Manage friends", diff --git a/frontend/src/router/adminRoutes.js b/frontend/src/router/adminRoutes.js index bd2547e..c7e701d 100644 --- a/frontend/src/router/adminRoutes.js +++ b/frontend/src/router/adminRoutes.js @@ -8,6 +8,7 @@ import AdminMinigamesView from '../views/admin/MinigamesView.vue'; import AdminTaxiToolsView from '../views/admin/TaxiToolsView.vue'; import AdminUsersView from '../views/admin/UsersView.vue'; import UserStatisticsView from '../views/admin/UserStatisticsView.vue'; +import ServicesStatusView from '../views/admin/ServicesStatusView.vue'; const adminRoutes = [ { @@ -69,6 +70,12 @@ const adminRoutes = [ name: 'AdminTaxiTools', component: AdminTaxiToolsView, meta: { requiresAuth: true } + }, + { + path: '/admin/services/status', + name: 'AdminServicesStatus', + component: ServicesStatusView, + meta: { requiresAuth: true } } ]; diff --git a/frontend/src/views/admin/ServicesStatusView.vue b/frontend/src/views/admin/ServicesStatusView.vue new file mode 100644 index 0000000..33c5a5b --- /dev/null +++ b/frontend/src/views/admin/ServicesStatusView.vue @@ -0,0 +1,419 @@ + + + + + +