diff --git a/src/Controller/MainController.php b/src/Controller/MainController.php index 951dbbf..f91a13d 100644 --- a/src/Controller/MainController.php +++ b/src/Controller/MainController.php @@ -27,6 +27,27 @@ class MainController extends AbstractController EntityManagerInterface $entityManagerInterface ): Response { + // Prepare request + if (in_array($request->get('field'), ['time','players','bots','total'])) + { + $field = $request->get('field'); + } + + else + { + $field = 'time'; + } + + if (in_array($request->get('order'), ['asc','desc'])) + { + $order = $request->get('order'); + } + + else + { + $order = 'desc'; + } + // Get HLServers config if ($hlservers = file_get_contents($this->getParameter('app.hlservers'))) { @@ -107,9 +128,7 @@ class MainController extends AbstractController [ 'crc32server' => $crc32server ], - [ - 'id' => 'DESC' // same as online.time but faster - ], + 'online' == $request->get('sort') && $crc32server == $request->get('crc32server') ? [$field => $order] : ['id' => 'DESC'], 10 ); } diff --git a/templates/default/main/index.html.twig b/templates/default/main/index.html.twig index 16f503a..68500b3 100644 --- a/templates/default/main/index.html.twig +++ b/templates/default/main/index.html.twig @@ -1,3 +1,45 @@ +{% macro sort(request, crc32server, sort, field) %} + {% if sort == request.get('sort') and crc32server == request.get('crc32server') %} + {% if field == request.get('field') %} + {% if 'asc' == request.get('order') %} + + + + + + + {% else %} + + + + + + + {% endif %} + {% else %} + + + + + + + {% endif %} + {% else %} + {% if 'time' == field %} + + + + {% else %} + + + + {% endif %} + + + + {% endif %} +{% endmacro %} +{% from _self import sort %} {% extends 'default/layout.html.twig' %} {% block main_content %} {% for server in servers %} @@ -12,13 +54,13 @@
{{ server.host }}:{{ server.port }} {% if server.status %} - + {% else %} - + @@ -31,13 +73,13 @@
{{ alias.host }}:{{ alias.port }} {% if alias.status %} - + {% else %} - + @@ -83,6 +125,7 @@ {% endif %} {% if server.online %} +

{{ 'Online' | trans }} @@ -91,10 +134,18 @@

- - - - + + + + {% for online in server.online %}
{{ 'Time' | trans }}{{ 'Players' | trans }}{{ 'Bots' | trans }}{{ 'Total' | trans }} + {{ 'Time' | trans }} {{ sort(request, server.crc32server, 'online', 'time') }} + + {{ 'Players' | trans }} {{ sort(request, server.crc32server, 'online', 'players') }} + + {{ 'Bots' | trans }} {{ sort(request, server.crc32server, 'online', 'bots') }} + + {{ 'Total' | trans }} {{ sort(request, server.crc32server, 'online', 'total') }} +