mirror of
https://github.com/YGGverse/HLState.git
synced 2025-02-11 06:24:33 +00:00
implement pagination
This commit is contained in:
parent
79d70e4a9d
commit
bb5eec002d
@ -45,30 +45,15 @@ class ServerController extends AbstractController
|
|||||||
throw $this->createNotFoundException();
|
throw $this->createNotFoundException();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Prepare request
|
// Prepare page request
|
||||||
if ('online' == $request->get('sort') && in_array($request->get('field'), ['time','players','bots','total']))
|
if ($request->get('page') && (int) $request->get('page') > 1)
|
||||||
{
|
{
|
||||||
$field = $request->get('field');
|
$page = (int) $request->get('page');
|
||||||
}
|
|
||||||
|
|
||||||
else if ('players' == $request->get('sort') && in_array($request->get('field'), ['name','frags','joined','online']))
|
|
||||||
{
|
|
||||||
$field = $request->get('field');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$field = 'time';
|
$page = 1;
|
||||||
}
|
|
||||||
|
|
||||||
if (in_array($request->get('order'), ['asc','desc']))
|
|
||||||
{
|
|
||||||
$order = $request->get('order');
|
|
||||||
}
|
|
||||||
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$order = 'desc';
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Init defaults
|
// Init defaults
|
||||||
@ -80,8 +65,12 @@ class ServerController extends AbstractController
|
|||||||
[
|
[
|
||||||
'crc32server' => $server->getCrc32server()
|
'crc32server' => $server->getCrc32server()
|
||||||
],
|
],
|
||||||
'online' == $request->get('sort') ? [$field => $order] : ['time' => 'DESC'],
|
[
|
||||||
$this->getParameter('app.server.online.limit')
|
'online' == $request->get('sort') && in_array($request->get('field'), ['time','players','bots','total'])
|
||||||
|
? $request->get('field') : 'time' => in_array($request->get('order'), ['asc','desc']) ? $request->get('order') : 'desc',
|
||||||
|
],
|
||||||
|
$this->getParameter('app.server.online.limit'),
|
||||||
|
'online' == $request->get('sort') ? ($page - 1) * $this->getParameter('app.server.online.limit') : 0
|
||||||
);
|
);
|
||||||
|
|
||||||
// Get players
|
// Get players
|
||||||
@ -89,8 +78,12 @@ class ServerController extends AbstractController
|
|||||||
[
|
[
|
||||||
'crc32server' => $server->getCrc32server()
|
'crc32server' => $server->getCrc32server()
|
||||||
],
|
],
|
||||||
'players' == $request->get('sort') ? [$field => $order] : ['frags' => 'DESC'],
|
[
|
||||||
$this->getParameter('app.server.players.limit')
|
'players' == $request->get('sort') && in_array($request->get('field'), ['name','frags','joined','online'])
|
||||||
|
? $request->get('field') : 'frags' => in_array($request->get('order'), ['asc','desc']) ? $request->get('order') : 'desc',
|
||||||
|
],
|
||||||
|
$this->getParameter('app.server.players.limit'),
|
||||||
|
'players' == $request->get('sort') ? ($page - 1) * $this->getParameter('app.server.players.limit') : 0
|
||||||
);
|
);
|
||||||
|
|
||||||
// Format address
|
// Format address
|
||||||
@ -175,6 +168,19 @@ class ServerController extends AbstractController
|
|||||||
'online' => $online,
|
'online' => $online,
|
||||||
'players' => $players,
|
'players' => $players,
|
||||||
'status' => $status,
|
'status' => $status,
|
||||||
|
'pagination' =>
|
||||||
|
[
|
||||||
|
'players' => ceil(
|
||||||
|
$entityManagerInterface->getRepository(Player::class)->getTotalByCrc32server(
|
||||||
|
$server->getCrc32server()
|
||||||
|
) / $this->getParameter('app.server.players.limit')
|
||||||
|
),
|
||||||
|
'online' => ceil(
|
||||||
|
$entityManagerInterface->getRepository(Online::class)->getTotalByCrc32server(
|
||||||
|
$server->getCrc32server()
|
||||||
|
) / $this->getParameter('app.server.online.limit')
|
||||||
|
)
|
||||||
|
],
|
||||||
'connections' => empty($info['Players']) || $info['Players'] < 0 || empty($info['Bots']) || $info['Bots'] < 0
|
'connections' => empty($info['Players']) || $info['Players'] < 0 || empty($info['Bots']) || $info['Bots'] < 0
|
||||||
? 0
|
? 0
|
||||||
: (int) $info['Players'] - (int) $info['Bots']
|
: (int) $info['Players'] - (int) $info['Bots']
|
||||||
|
@ -20,4 +20,17 @@ class OnlineRepository extends ServiceEntityRepository
|
|||||||
{
|
{
|
||||||
parent::__construct($registry, Online::class);
|
parent::__construct($registry, Online::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getTotalByCrc32server(
|
||||||
|
int $crc32server
|
||||||
|
): int
|
||||||
|
{
|
||||||
|
return $this->createQueryBuilder('o')
|
||||||
|
->select('count(o.id)')
|
||||||
|
->where('o.crc32server = :crc32server')
|
||||||
|
->setParameter('crc32server', $crc32server)
|
||||||
|
->getQuery()
|
||||||
|
->getSingleScalarResult()
|
||||||
|
;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -20,4 +20,17 @@ class PlayerRepository extends ServiceEntityRepository
|
|||||||
{
|
{
|
||||||
parent::__construct($registry, Player::class);
|
parent::__construct($registry, Player::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getTotalByCrc32server(
|
||||||
|
int $crc32server
|
||||||
|
): int
|
||||||
|
{
|
||||||
|
return $this->createQueryBuilder('p')
|
||||||
|
->select('count(p.id)')
|
||||||
|
->where('p.crc32server = :crc32server')
|
||||||
|
->setParameter('crc32server', $crc32server)
|
||||||
|
->getQuery()
|
||||||
|
->getSingleScalarResult()
|
||||||
|
;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -146,6 +146,49 @@
|
|||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</table>
|
</table>
|
||||||
|
<div class="padding-y-8-px">
|
||||||
|
{% if request.get('sort') == 'online' and request.get('page') > 1 %}
|
||||||
|
<a rel="nofollow" href="{{
|
||||||
|
path(
|
||||||
|
'server_index',
|
||||||
|
{
|
||||||
|
sort : 'online',
|
||||||
|
field : request.get('field') ? request.get('field') : 'frags',
|
||||||
|
order : request.get('order') ? request.get('order') : 'desc',
|
||||||
|
page : request.get('page') ? request.get('page') - 1 : 1,
|
||||||
|
crc32server : server.crc32server,
|
||||||
|
'_fragment' : 'online'
|
||||||
|
}
|
||||||
|
) }}"><svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-caret-left-square-fill" viewBox="0 0 16 16">
|
||||||
|
<path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm10.5 10V4a.5.5 0 0 0-.832-.374l-4.5 4a.5.5 0 0 0 0 .748l4.5 4A.5.5 0 0 0 10.5 12"/>
|
||||||
|
</svg></a>
|
||||||
|
{% else %}
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-caret-left-square-fill" viewBox="0 0 16 16">
|
||||||
|
<path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm10.5 10V4a.5.5 0 0 0-.832-.374l-4.5 4a.5.5 0 0 0 0 .748l4.5 4A.5.5 0 0 0 10.5 12"/>
|
||||||
|
</svg>
|
||||||
|
{% endif %}
|
||||||
|
{% if request.get('sort') != 'online' or request.get('page') < server.pagination.online %}
|
||||||
|
<a rel="nofollow" href="{{
|
||||||
|
path(
|
||||||
|
'server_index',
|
||||||
|
{
|
||||||
|
sort : 'online',
|
||||||
|
field : request.get('sort') == 'online' and request.get('field') ? request.get('field') : 'time',
|
||||||
|
order : request.get('sort') == 'online' and request.get('order') ? request.get('order') : 'desc',
|
||||||
|
page : (request.get('sort') == 'online' and request.get('page') ? request.get('page') : 1) + 1,
|
||||||
|
crc32server : server.crc32server,
|
||||||
|
'_fragment' : 'online'
|
||||||
|
}
|
||||||
|
) }}"><svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" viewBox="0 0 16 16">
|
||||||
|
<path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm5.5 10a.5.5 0 0 0 .832.374l4.5-4a.5.5 0 0 0 0-.748l-4.5-4A.5.5 0 0 0 5.5 4z"/>
|
||||||
|
</svg></a>
|
||||||
|
{% else %}
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" viewBox="0 0 16 16">
|
||||||
|
<path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm5.5 10a.5.5 0 0 0 .832.374l4.5-4a.5.5 0 0 0 0-.748l-4.5-4A.5.5 0 0 0 5.5 4z"/>
|
||||||
|
</svg>
|
||||||
|
{% endif %}
|
||||||
|
{{ 'page' | trans }} {{ request.get('sort') == 'online' and request.get('page') ? request.get('page') : 1 }}/{{ server.pagination.online }}
|
||||||
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if server.players %}
|
{% if server.players %}
|
||||||
<a name="players"></a>
|
<a name="players"></a>
|
||||||
@ -187,6 +230,49 @@
|
|||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</table>
|
</table>
|
||||||
|
<div class="padding-y-8-px">
|
||||||
|
{% if request.get('sort') == 'players' and request.get('page') > 1 %}
|
||||||
|
<a rel="nofollow" href="{{
|
||||||
|
path(
|
||||||
|
'server_index',
|
||||||
|
{
|
||||||
|
sort : 'players',
|
||||||
|
field : request.get('field') ? request.get('field') : 'frags',
|
||||||
|
order : request.get('order') ? request.get('order') : 'desc',
|
||||||
|
page : request.get('page') ? request.get('page') - 1 : 1,
|
||||||
|
crc32server : server.crc32server,
|
||||||
|
'_fragment' : 'players'
|
||||||
|
}
|
||||||
|
) }}"><svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-caret-left-square-fill" viewBox="0 0 16 16">
|
||||||
|
<path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm10.5 10V4a.5.5 0 0 0-.832-.374l-4.5 4a.5.5 0 0 0 0 .748l4.5 4A.5.5 0 0 0 10.5 12"/>
|
||||||
|
</svg></a>
|
||||||
|
{% else %}
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-caret-left-square-fill" viewBox="0 0 16 16">
|
||||||
|
<path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm10.5 10V4a.5.5 0 0 0-.832-.374l-4.5 4a.5.5 0 0 0 0 .748l4.5 4A.5.5 0 0 0 10.5 12"/>
|
||||||
|
</svg>
|
||||||
|
{% endif %}
|
||||||
|
{% if request.get('sort') != 'players' or request.get('page') < server.pagination.players %}
|
||||||
|
<a rel="nofollow" href="{{
|
||||||
|
path(
|
||||||
|
'server_index',
|
||||||
|
{
|
||||||
|
sort : 'players',
|
||||||
|
field : request.get('sort') == 'players' and request.get('field') ? request.get('field') : 'time',
|
||||||
|
order : request.get('sort') == 'players' and request.get('order') ? request.get('order') : 'desc',
|
||||||
|
page : (request.get('sort') == 'players' and request.get('page') ? request.get('page') : 1) + 1,
|
||||||
|
crc32server : server.crc32server,
|
||||||
|
'_fragment' : 'players'
|
||||||
|
}
|
||||||
|
) }}"><svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" viewBox="0 0 16 16">
|
||||||
|
<path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm5.5 10a.5.5 0 0 0 .832.374l4.5-4a.5.5 0 0 0 0-.748l-4.5-4A.5.5 0 0 0 5.5 4z"/>
|
||||||
|
</svg></a>
|
||||||
|
{% else %}
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" viewBox="0 0 16 16">
|
||||||
|
<path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm5.5 10a.5.5 0 0 0 .832.374l4.5-4a.5.5 0 0 0 0-.748l-4.5-4A.5.5 0 0 0 5.5 4z"/>
|
||||||
|
</svg>
|
||||||
|
{% endif %}
|
||||||
|
{{ 'page' | trans }} {{ request.get('sort') == 'players' and request.get('page') ? request.get('page') : 1 }}/{{ server.pagination.online }}
|
||||||
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
Loading…
x
Reference in New Issue
Block a user