From cd6f8e87ff5a860d3d5e854301190aba3288c175 Mon Sep 17 00:00:00 2001 From: raviks789 <33730024+raviks789@users.noreply.github.com> Date: Mon, 22 May 2023 15:09:21 +0200 Subject: [PATCH] Unset pagination parameters for service grid when `limit=0,0` 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. --- application/controllers/ServicesController.php | 4 +++- .../scripts/joystickPagination-icingadb.phtml | 6 +++--- .../views/scripts/services/grid-flipped.phtml | 11 ++++++----- application/views/scripts/services/grid.phtml | 11 ++++++----- library/Icingadb/Data/PivotTable.php | 15 +++++++++------ 5 files changed, 27 insertions(+), 20 deletions(-) diff --git a/application/controllers/ServicesController.php b/application/controllers/ServicesController.php index 842638bc..c2c5651e 100644 --- a/application/controllers/ServicesController.php +++ b/application/controllers/ServicesController.php @@ -22,6 +22,7 @@ use Icinga\Module\Icingadb\Widget\ItemTable\ServiceItemTable; use Icinga\Module\Icingadb\Widget\ServiceStatusBar; use Icinga\Module\Icingadb\Widget\ShowMore; use Icinga\Module\Icingadb\Web\Control\ViewModeSwitcher; +use Icinga\Util\Environment; use ipl\Html\HtmlString; use ipl\Orm\Query; use ipl\Stdlib\Filter; @@ -222,6 +223,8 @@ class ServicesController extends Controller public function gridAction() { + Environment::raiseExecutionTime(); + $db = $this->getDb(); $this->addTitleTab(t('Service Grid')); @@ -299,7 +302,6 @@ class ServicesController extends Controller ->setYAxisHeader('host_display_name'); } - $this->view->horizontalPaginator = $pivot->paginateXAxis(); $this->view->verticalPaginator = $pivot->paginateYAxis(); list($pivotData, $pivotHeader) = $pivot->toArray(); diff --git a/application/views/scripts/joystickPagination-icingadb.phtml b/application/views/scripts/joystickPagination-icingadb.phtml index e5d2ac40..122d72a8 100644 --- a/application/views/scripts/joystickPagination-icingadb.phtml +++ b/application/views/scripts/joystickPagination-icingadb.phtml @@ -15,20 +15,20 @@ if ($flipUrl->hasParam('page')) { if ($flipUrl->hasParam('limit')) { $flipUrl->setParam('limit', implode(',', array_reverse(explode(',', $flipUrl->getParam('limit'))))); } -$yAxisItemCountPerPage = $yAxisPaginator->getLimit(); + $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; -$xAxisItemCountPerPage = $xAxisPaginator->getLimit(); $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; - ?> diff --git a/application/views/scripts/services/grid-flipped.phtml b/application/views/scripts/services/grid-flipped.phtml index f186fda4..d3050aab 100644 --- a/application/views/scripts/services/grid-flipped.phtml +++ b/application/views/scripts/services/grid-flipped.phtml @@ -97,12 +97,13 @@ foreach ($pivotData as $serviceDescription => $_) { horizontalPaginator->getLimit(); - $horizontalTotalPages = ceil($this->horizontalPaginator->count() / $horizontalItemsPerPage); + $horizontalTotalItems = $this->horizontalPaginator->count(); + $horizontalItemsPerPage = $this->horizontalPaginator->getLimit() ?? $horizontalTotalItems; + $horizontalTotalPages = ceil($horizontalTotalItems / $horizontalItemsPerPage); - - $verticalItemsPerPage = $this->verticalPaginator->getLimit(); - $verticalTotalPages = ceil($this->verticalPaginator->count() / $verticalItemsPerPage); + $verticalTotalItems = $this->verticalPaginator->count(); + $verticalItemsPerPage = $this->verticalPaginator->getLimit() ?? $verticalTotalItems; + $verticalTotalPages = ceil($verticalTotalItems / $verticalItemsPerPage); if (! $this->compact && $horizontalTotalPages > 1): ?> horizontalPaginator->getLimit(); - $horizontalTotalPages = ceil($this->horizontalPaginator->count() / $horizontalItemsPerPage); + $horizontalTotalItems = $this->horizontalPaginator->count(); + $horizontalItemsPerPage = $this->horizontalPaginator->getLimit() ?? $horizontalTotalItems; + $horizontalTotalPages = ceil($horizontalTotalItems / $horizontalItemsPerPage); - - $verticalItemsPerPage = $this->verticalPaginator->getLimit(); - $verticalTotalPages = ceil($this->verticalPaginator->count() / $verticalItemsPerPage); + $verticalTotalItems = $this->verticalPaginator->count(); + $verticalItemsPerPage = $this->verticalPaginator->getLimit() ?? $verticalTotalItems; + $verticalTotalPages = ceil($verticalTotalItems / $verticalItemsPerPage); if (! $this->compact && $horizontalTotalPages > 1): ?>
diff --git a/application/views/scripts/services/grid.phtml b/application/views/scripts/services/grid.phtml index 560f7c01..c1479f68 100644 --- a/application/views/scripts/services/grid.phtml +++ b/application/views/scripts/services/grid.phtml @@ -99,12 +99,13 @@ foreach ($pivotData as $hostName => $_) { diff --git a/library/Icingadb/Data/PivotTable.php b/library/Icingadb/Data/PivotTable.php index 2819e11b..9733381c 100644 --- a/library/Icingadb/Data/PivotTable.php +++ b/library/Icingadb/Data/PivotTable.php @@ -342,9 +342,10 @@ class PivotTable $query = $this->queryXAxis(); - $query->limit($limit); - - $query->offset($page > 0 ? ($page - 1) * $limit : 0); + if ($limit !== 0) { + $query->limit($limit); + $query->offset($page > 0 ? ($page - 1) * $limit : 0); + } return $query; } @@ -370,10 +371,12 @@ class PivotTable $page = $this->getPaginationParameter('y', 'page', 1); } } - $query = $this->queryYAxis(); - $query->limit($limit); - $query->offset($page > 0 ? ($page - 1) * $limit : 0); + + if ($limit !== 0) { + $query->limit($limit); + $query->offset($page > 0 ? ($page - 1) * $limit : 0); + } return $query; }