diff --git a/app/classes/controllers/servers_controller.py b/app/classes/controllers/servers_controller.py index 650a16b0..593e24d4 100644 --- a/app/classes/controllers/servers_controller.py +++ b/app/classes/controllers/servers_controller.py @@ -4,6 +4,7 @@ import time import json import pathlib import typing as t +import datetime from app.classes.controllers.roles_controller import RolesController from app.classes.shared.file_helpers import FileHelpers @@ -102,6 +103,13 @@ class ServersController(metaclass=Singleton): server_instance.update_server_instance() return ret + def get_history_stats(self, server_id): + max_age = self.helper.get_setting("history_max_age") + now = datetime.datetime.now() + minimum_to_exist = now - datetime.timedelta(days=max_age) + srv = ServersController().get_server_instance_by_id(server_id) + return srv.stats_helper.get_history_stats(server_id, minimum_to_exist) + @staticmethod def update_unloaded_server(server_obj): ret = HelperServers.update_server(server_obj) diff --git a/app/classes/models/server_stats.py b/app/classes/models/server_stats.py index e3c943e3..4c7091aa 100644 --- a/app/classes/models/server_stats.py +++ b/app/classes/models/server_stats.py @@ -137,6 +137,14 @@ class HelperServerStats: ) return server_data + def get_history_stats(self, server_id, max_age): + return ( + ServerStats.select() + .where(ServerStats.created > max_age) + .where(ServerStats.server_id == server_id) + .execute(self.database) + ) + def insert_server_stats(self, server_stats): server_id = server_stats.get("id", 0) diff --git a/app/classes/web/panel_handler.py b/app/classes/web/panel_handler.py index a5e56029..e8592cdd 100644 --- a/app/classes/web/panel_handler.py +++ b/app/classes/web/panel_handler.py @@ -524,6 +524,7 @@ class PanelHandler(BaseHandler): "files", "admin_controls", "schedules", + "metrics", ] if not self.failed_server: server = self.controller.servers.get_server_instance_by_id(server_id) @@ -754,6 +755,11 @@ class PanelHandler(BaseHandler): page_data["backup_list"] = [] page_data["backup_path"] = Helpers.wtol_path(server_info["backup_path"]) + if subpage == "metrics": + page_data["history_stats"] = self.controller.servers.get_history_stats( + server_id + ) + def get_banned_players_html(): banned_players = self.controller.servers.get_banned_players(server_id) if banned_players is None: diff --git a/app/frontend/templates/base.html b/app/frontend/templates/base.html index 46b6e622..1d69675f 100755 --- a/app/frontend/templates/base.html +++ b/app/frontend/templates/base.html @@ -40,6 +40,8 @@ + + diff --git a/app/frontend/templates/panel/parts/m_server_controls_list.html b/app/frontend/templates/panel/parts/m_server_controls_list.html index 4a114b52..371dca05 100644 --- a/app/frontend/templates/panel/parts/m_server_controls_list.html +++ b/app/frontend/templates/panel/parts/m_server_controls_list.html @@ -30,6 +30,7 @@ {% if data['permissions']['Players'] in data['user_permissions'] and data['server_data']['type'] != 'minecraft-bedrock' %} {{ translate('serverDetails', 'playerControls', data['lang']) }} {% end %} + Metrics \ No newline at end of file diff --git a/app/frontend/templates/panel/parts/server_controls_list.html b/app/frontend/templates/panel/parts/server_controls_list.html index 8e40e7ec..c0398d41 100644 --- a/app/frontend/templates/panel/parts/server_controls_list.html +++ b/app/frontend/templates/panel/parts/server_controls_list.html @@ -49,4 +49,8 @@ {{ translate('serverDetails', 'playerControls', data['lang']) }} {% end %} +