Add ability to change metrics scale

This commit is contained in:
amcmanu3 2022-09-04 16:21:33 -04:00
parent 7f412954d7
commit e9c74be057
4 changed files with 33 additions and 6 deletions

View File

@ -105,10 +105,9 @@ class ServersController(metaclass=Singleton):
server_instance.update_server_instance()
return ret
def get_history_stats(self, server_id):
now = datetime.datetime.now()
def get_history_stats(self, server_id, days):
srv = ServersController().get_server_instance_by_id(server_id)
return srv.stats_helper.get_history_stats(server_id)
return srv.stats_helper.get_history_stats(server_id, days)
@staticmethod
def update_unloaded_server(server_obj):

View File

@ -138,8 +138,8 @@ class HelperServerStats:
)
return server_data
def get_history_stats(self, server_id):
max_age = datetime.datetime.now() - timedelta(days=1)
def get_history_stats(self, server_id, num_days):
max_age = datetime.datetime.now() - timedelta(days=num_days)
return (
ServerStats.select()
.where(ServerStats.created > max_age)

View File

@ -756,8 +756,21 @@ class PanelHandler(BaseHandler):
page_data["backup_path"] = Helpers.wtol_path(server_info["backup_path"])
if subpage == "metrics":
try:
days = int(self.get_argument("days", "1"))
except ValueError as e:
self.redirect(
f"/panel/error?error=Type error: Argument must be an int {e}"
)
page_data["options"] = [1, 2, 3]
if not days in page_data["options"]:
page_data["options"].insert(0, days)
else:
page_data["options"].insert(
0, page_data["options"].pop(page_data["options"].index(days))
)
page_data["history_stats"] = self.controller.servers.get_history_stats(
server_id
server_id, days
)
def get_banned_players_html():

View File

@ -38,6 +38,16 @@
<span class="d-block d-sm-none">
{% include "parts/m_server_controls_list.html %}
</span>
<div class="col-2">
<div class="form-group">
<label for="days">Metric Period</label>
<select required class="form-control form-control-lg select-css" id="days" name="days">
{% for value in data['options'] %}
<option value="{{value}}">{{value}} Day(s)</option>
{% end %}
</select>
</div>
</div>
<button style="float: right; visibility: hidden;" class="btn btn-outline-success reset-button"
id="reset-button"><i class="fas fa-undo"></i>&nbsp;{{ translate('serverMetrics', 'resetZoom', data['lang'])
}}</button>
@ -69,6 +79,7 @@
}
</style>
<script type="text/javascript">
const serverId = new URLSearchParams(document.location.search).get('id')
var zoomed = false;
//line
var ctxL = document.getElementById("lineChart").getContext('2d');
@ -162,6 +173,10 @@
}
});
$(window).ready(function () {
$('#days').on("change", function () {
let days = $('#days').find(":selected").val();
window.location.href = "/panel/server_detail?id=" + serverId + "&days=" + days + "&subpage=metrics"
});
$('body').click(function () {
$('.hints').popover("hide");
});