Add max player/total player to stats keeping on dashboard

This commit is contained in:
Andrew 2022-01-27 18:16:27 -05:00
parent 32852c00b9
commit 85eef71b9e
3 changed files with 24 additions and 11 deletions

View File

@ -260,6 +260,8 @@ class Stats:
server_stats = {}
server = self.controller.get_server_obj(server_id)
server_dt = servers_helper.get_server_data_by_id(server_id)
logger.debug(f'Getting stats for server: {server_id}')
@ -279,8 +281,8 @@ class Stats:
# TODO: search server properties file for possible override of 127.0.0.1
#internal_ip = server['server_ip']
#server_port = server['server_port']
internal_ip = server_data.get('server_ip', "127.0.0.1")
server_port = server_settings.get('server-port', "25565")
internal_ip = server_dt['server_ip']
server_port = server_dt['server_port']
logger.debug(f"Pinging server '{server.name}' on {internal_ip}:{server_port}")

View File

@ -425,7 +425,10 @@ class TasksManager:
})
for user in Users_Controller.get_all_users():
total_players = 0
max_players = 0
servers_ping = []
players_ping = {}
if user.superuser:
servers = Servers_Controller.get_all_servers_stats()
else:
@ -434,8 +437,6 @@ class TasksManager:
if srv:
server_id = srv['server_data']['server_id']
srv['raw_ping_result'] = self.controller.stats.get_raw_server_stats(server_id)
if f"{srv['raw_ping_result'].get('icon')}" == "b''":
srv['raw_ping_result']['icon'] = False
servers_ping.append({
'id': srv['raw_ping_result'].get('id'),
@ -453,7 +454,6 @@ class TasksManager:
'players': srv['raw_ping_result'].get('players'),
'desc': srv['raw_ping_result'].get('desc'),
'version': srv['raw_ping_result'].get('version'),
'icon': None
})
if len(websocket_helper.clients) > 0:
websocket_helper.broadcast_user_page_params(
@ -478,9 +478,15 @@ class TasksManager:
'players': srv['raw_ping_result'].get('players'),
'desc': srv['raw_ping_result'].get('desc'),
'version': srv['raw_ping_result'].get('version'),
'icon': None
}
)
total_players += int(srv['raw_ping_result'].get('online'))
max_players += int(srv['raw_ping_result'].get('max'))
players_ping = {
'total_players': total_players,
'max_players': max_players
}
websocket_helper.broadcast_user_page('/panel/dashboard', user.user_id, 'update_player_status', players_ping)
if (len(servers_ping) > 0) & (len(websocket_helper.clients) > 0):
try:

View File

@ -68,12 +68,11 @@
<div class="wrapper">
<h5 class="mb-1 font-weight-medium text-primary">{{ translate('dashboard', 'players', data['lang']) }}
</h5>
<h3 class="mb-0 font-weight-semibold">{{ data['num_players'] }}</h3>
<h3 class="mb-0 font-weight-semibold" id="total_players">{{ data['num_players'] }}</h3>
</div>
<div class="wrapper my-auto ml-auto ml-lg-4">
<p class="mb-0 text-success">35 {{ translate('dashboard', 'max', data['lang']) }}</p>
<p class="mb-0 text-warning">10 {{ translate('dashboard', 'avg', data['lang']) }}</p>
<p class="mb-0 text-warning"><span id="max_players">0</span> {{ translate('dashboard', 'max', data['lang']) }}</p>
</div>
</div>
</div>
@ -224,7 +223,7 @@
<span class="text-success"><i class="fas fa-signal"></i> {{ translate('dashboard', 'online',
data['lang']) }}</span>
{% else %}
<span class="text-danger"><i class="fas fa-ban"></i> {{ translate('dashboard', 'offline',
<span class="text-warning"><i class="fas fa-ban"></i> {{ translate('dashboard', 'offline',
data['lang']) }}</span>
{% end %}
</td>
@ -412,7 +411,7 @@
online_status = `<span class="text-success"><i class="fas fa-signal"></i> {{ translate('dashboard', 'online', data['lang'])}}</span>`;
}
else {
online_status = `<span class="text-danger"><i class="fas fa-ban"></i> {{ translate('dashboard', 'offline', data['lang'])}}</span>`;
online_status = `<span class="text-warning"><i class="fas fa-ban"></i> {{ translate('dashboard', 'offline', data['lang'])}}</span>`;
}
server_online_status.innerHTML = online_status;
}
@ -494,6 +493,8 @@
cpu_usage = document.getElementById('cpu_usage');
mem_usage = document.getElementById('mem_usage');
mem_percent = document.getElementById('mem_percent');
total_players = document.getElementById('total_players');
max_players = document.getElementById('max_players');
webSocket.on('update_host_stats', function (hostStats) {
var cpuDataTitle = `{% raw translate('dashboard', 'cpuCores', data['lang']) %}: ${hostStats.cpu_cores} <br /> {% raw translate("dashboard", "cpuCurFreq", data['lang']) %}: ${hostStats.cpu_cur_freq} <br /> {% raw translate("dashboard", "cpuMaxFreq", data['lang']) %}: ${hostStats.cpu_max_freq}`;
@ -502,6 +503,10 @@
mem_usage.setAttribute('data-original-title', `{% raw translate("dashboard", "memUsage", data['lang']) %}: ${hostStats.mem_usage}`);
mem_percent.textContent = hostStats.mem_percent + '%';
});
webSocket.on('update_player_status', function (playerStats) {
total_players.innerHTML = playerStats.total_players;
max_players.innerHTML = playerStats.max_players;
});
}
if (webSocket) {