mirror of
https://github.com/Icinga/icingadb-web.git
synced 2026-04-15 21:59:47 -04:00
The pagination parameters must be unset when the limit parameter is `0,0` and the service grid for all the hosts and services must be displayed.
162 lines
5.2 KiB
PHTML
162 lines
5.2 KiB
PHTML
<?php
|
|
|
|
use Icinga\Web\Url;
|
|
|
|
$showText = $this->translate('%s: Show %s %u to %u out of %u', 'pagination.joystick');
|
|
$flipUrl = clone $baseUrl;
|
|
if ($flipUrl->getParam('flipped')) {
|
|
$flipUrl->remove('flipped');
|
|
} else {
|
|
$flipUrl->setParam('flipped');
|
|
}
|
|
if ($flipUrl->hasParam('page')) {
|
|
$flipUrl->setParam('page', implode(',', array_reverse(explode(',', $flipUrl->getParam('page')))));
|
|
}
|
|
if ($flipUrl->hasParam('limit')) {
|
|
$flipUrl->setParam('limit', implode(',', array_reverse(explode(',', $flipUrl->getParam('limit')))));
|
|
}
|
|
|
|
$yAxisTotalItem = $yAxisPaginator->count();
|
|
$yAxisItemCountPerPage = $yAxisPaginator->getLimit() ?? $yAxisTotalItem;
|
|
$totalYAxisPages = ceil($yAxisTotalItem / $yAxisItemCountPerPage);
|
|
$currentYAxisPage = round($yAxisPaginator->getOffset() / $yAxisItemCountPerPage) + 1;
|
|
$prevYAxisPage = $currentYAxisPage > 1 ? $currentYAxisPage - 1 : null;
|
|
$nextYAxisPage = $currentYAxisPage < $totalYAxisPages ? $currentYAxisPage + 1 : null;
|
|
|
|
$xAxisTotalItem = $xAxisPaginator->count();
|
|
$xAxisItemCountPerPage = $xAxisPaginator->getLimit() ?? $xAxisTotalItem;
|
|
$totalXAxisPages = ceil($xAxisTotalItem / $xAxisItemCountPerPage);
|
|
$currentXAxisPage = round($xAxisPaginator->getOffset() / $xAxisItemCountPerPage) + 1;
|
|
$prevXAxisPage = $currentXAxisPage > 1 ? $currentXAxisPage - 1 : null;
|
|
$nextXAxisPage = $currentXAxisPage < $totalXAxisPages ? $currentXAxisPage + 1 : null;
|
|
?>
|
|
|
|
<table class="joystick-pagination">
|
|
<tbody>
|
|
<tr>
|
|
<td> </td>
|
|
<td>
|
|
<?php if ($prevYAxisPage): ?>
|
|
<?= $this->qlink(
|
|
'',
|
|
$baseUrl,
|
|
array(
|
|
'page' => $currentXAxisPage . ',' . $prevYAxisPage
|
|
),
|
|
array(
|
|
'icon' => 'up-open',
|
|
'data-base-target' => '_self',
|
|
'title' => sprintf(
|
|
$showText,
|
|
$this->translate('Y-Axis', 'pagination.joystick'),
|
|
$this->translate('hosts', 'pagination.joystick'),
|
|
($prevYAxisPage - 1) * $xAxisItemCountPerPage + 1,
|
|
$prevYAxisPage * $xAxisItemCountPerPage,
|
|
$yAxisTotalItem
|
|
)
|
|
)
|
|
); ?>
|
|
<?php else: ?>
|
|
<?= $this->icon('up-open'); ?>
|
|
<?php endif ?>
|
|
</td>
|
|
<td> </td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<?php if ($prevXAxisPage): ?>
|
|
<?= $this->qlink(
|
|
'',
|
|
$baseUrl,
|
|
array(
|
|
'page' => $prevXAxisPage . ',' . $currentYAxisPage
|
|
),
|
|
array(
|
|
'icon' => 'left-open',
|
|
'data-base-target' => '_self',
|
|
'title' => sprintf(
|
|
$showText,
|
|
$this->translate('X-Axis', 'pagination.joystick'),
|
|
$this->translate('services', 'pagination.joystick'),
|
|
($prevXAxisPage - 1) * $xAxisItemCountPerPage + 1,
|
|
$prevXAxisPage * $xAxisItemCountPerPage,
|
|
$xAxisTotalItem
|
|
)
|
|
)
|
|
); ?>
|
|
<?php else: ?>
|
|
<?= $this->icon('left-open'); ?>
|
|
<?php endif ?>
|
|
</td>
|
|
<?php if ($this->flippable): ?>
|
|
<td><?= $this->qlink(
|
|
'',
|
|
$flipUrl,
|
|
null,
|
|
array(
|
|
'icon' => 'arrows-cw',
|
|
'data-base-target' => '_self',
|
|
'title' => $this->translate('Flip grid axes')
|
|
)
|
|
) ?></td>
|
|
<?php else: ?>
|
|
<td> </td>
|
|
<?php endif ?>
|
|
<td>
|
|
<?php if ($nextXAxisPage): ?>
|
|
<?= $this->qlink(
|
|
'',
|
|
$baseUrl,
|
|
array(
|
|
'page' => $nextXAxisPage . ',' . $currentYAxisPage
|
|
),
|
|
array(
|
|
'icon' => 'right-open',
|
|
'data-base-target' => '_self',
|
|
'title' => sprintf(
|
|
$showText,
|
|
$this->translate('X-Axis', 'pagination.joystick'),
|
|
$this->translate('services', 'pagination.joystick'),
|
|
$currentXAxisPage * $xAxisItemCountPerPage + 1,
|
|
$nextXAxisPage === $totalXAxisPages ? $xAxisItemCountPerPage : $nextXAxisPage * $xAxisItemCountPerPage,
|
|
$xAxisTotalItem
|
|
)
|
|
),
|
|
false
|
|
); ?>
|
|
<?php else: ?>
|
|
<?= $this->icon('right-open'); ?>
|
|
<?php endif ?>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td> </td>
|
|
<td>
|
|
<?php if ($nextYAxisPage): ?>
|
|
<?= $this->qlink(
|
|
'',
|
|
$baseUrl,
|
|
array(
|
|
'page' => $currentXAxisPage . ',' . $nextYAxisPage
|
|
),
|
|
array(
|
|
'icon' => 'down-open',
|
|
'data-base-target' => '_self',
|
|
'title' => sprintf(
|
|
$showText,
|
|
$this->translate('Y-Axis', 'pagination.joystick'),
|
|
$this->translate('hosts', 'pagination.joystick'),
|
|
$currentYAxisPage * $yAxisItemCountPerPage + 1,
|
|
$nextYAxisPage === $totalYAxisPages ? $yAxisItemCountPerPage : $nextYAxisPage * $yAxisItemCountPerPage,
|
|
$yAxisTotalItem
|
|
)
|
|
)
|
|
); ?>
|
|
<?php else: ?>
|
|
<?= $this->icon('down-open'); ?>
|
|
<?php endif ?>
|
|
</td>
|
|
<td> </td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|