Skip to content

Commit

Permalink
Unset pagination parameters for service grid when limit=0,0
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
raviks789 authored and nilmerg committed May 23, 2023
1 parent 76cd457 commit cd6f8e8
Show file tree
Hide file tree
Showing 5 changed files with 27 additions and 20 deletions.
4 changes: 3 additions & 1 deletion application/controllers/ServicesController.php
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
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;
Expand Down Expand Up @@ -222,6 +223,8 @@ public function searchEditorAction()

public function gridAction()
{
Environment::raiseExecutionTime();

$db = $this->getDb();
$this->addTitleTab(t('Service Grid'));

Expand Down Expand Up @@ -299,7 +302,6 @@ public function gridAction()
->setYAxisHeader('host_display_name');
}


$this->view->horizontalPaginator = $pivot->paginateXAxis();
$this->view->verticalPaginator = $pivot->paginateYAxis();
list($pivotData, $pivotHeader) = $pivot->toArray();
Expand Down
6 changes: 3 additions & 3 deletions application/views/scripts/joystickPagination-icingadb.phtml
Original file line number Diff line number Diff line change
Expand Up @@ -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;

?>

<table class="joystick-pagination">
Expand Down
11 changes: 6 additions & 5 deletions application/views/scripts/services/grid-flipped.phtml
Original file line number Diff line number Diff line change
Expand Up @@ -97,12 +97,13 @@ foreach ($pivotData as $serviceDescription => $_) {
</td>
<?php endforeach ?>
<?php
$horizontalItemsPerPage = $this->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): ?>
<td>
Expand Down
11 changes: 6 additions & 5 deletions application/views/scripts/services/grid.phtml
Original file line number Diff line number Diff line change
Expand Up @@ -99,12 +99,13 @@ foreach ($pivotData as $hostName => $_) {
</td>
<?php endforeach ?>
<?php
$horizontalItemsPerPage = $this->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): ?>
<td>
Expand Down
15 changes: 9 additions & 6 deletions library/Icingadb/Data/PivotTable.php
Original file line number Diff line number Diff line change
Expand Up @@ -342,9 +342,10 @@ public function paginateXAxis(int $limit = null, int $page = null): Paginatable

$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;
}
Expand All @@ -370,10 +371,12 @@ public function paginateYAxis(int $limit = null, int $page = null): Paginatable
$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;
}
Expand Down

0 comments on commit cd6f8e8

Please sign in to comment.